summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 21:38:38 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 21:38:38 +0000
commit2e2851dc13d73352530dd4495c7e05603b2e520d (patch)
tree622b9cd8e5d32091c9aa9e4937b533975a40356c
parentInitial commit. (diff)
downloaddeluge-upstream.tar.xz
deluge-upstream.zip
Adding upstream version 2.1.2~dev0+20240219.upstream/2.1.2_dev0+20240219upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r--.gitattributes6
-rw-r--r--.github/workflows/cd.yml104
-rw-r--r--.github/workflows/ci.yml101
-rw-r--r--.github/workflows/docs.yml38
-rw-r--r--.github/workflows/lint.yml17
-rw-r--r--.gitignore26
-rw-r--r--.pre-commit-config.yaml51
-rw-r--r--.prettierignore6
-rw-r--r--.prettierrc.yaml13
-rw-r--r--.pylintrc420
-rw-r--r--.readthedocs.yml29
-rw-r--r--AUTHORS790
-rw-r--r--CHANGELOG.md265
-rw-r--r--DEPENDS.md100
-rw-r--r--LICENSE634
-rw-r--r--MANIFEST.in36
-rw-r--r--README.md71
-rw-r--r--deluge/__init__.py1
-rw-r--r--deluge/_libtorrent.py35
-rw-r--r--deluge/argparserbase.py384
-rw-r--r--deluge/bencode.py147
-rw-r--r--deluge/common.py1408
-rw-r--r--deluge/component.py488
-rw-r--r--deluge/config.py568
-rw-r--r--deluge/configmanager.py127
-rw-r--r--deluge/conftest.py214
-rw-r--r--deluge/core/__init__.py0
-rw-r--r--deluge/core/alertmanager.py193
-rw-r--r--deluge/core/authmanager.py285
-rw-r--r--deluge/core/core.py1302
-rw-r--r--deluge/core/daemon.py203
-rw-r--r--deluge/core/daemon_entry.py140
-rw-r--r--deluge/core/eventmanager.py66
-rw-r--r--deluge/core/filtermanager.py274
-rw-r--r--deluge/core/pluginmanager.py105
-rw-r--r--deluge/core/preferencesmanager.py476
-rw-r--r--deluge/core/rpcserver.py598
-rw-r--r--deluge/core/torrent.py1563
-rw-r--r--deluge/core/torrentmanager.py1700
-rw-r--r--deluge/crypto_utils.py136
-rw-r--r--deluge/decorators.py219
-rw-r--r--deluge/error.py96
-rw-r--r--deluge/event.py319
-rw-r--r--deluge/httpdownloader.py333
-rw-r--r--deluge/i18n/__init__.py15
-rw-r--r--deluge/i18n/af.po6178
-rw-r--r--deluge/i18n/ar.po6191
-rw-r--r--deluge/i18n/ast.po6179
-rw-r--r--deluge/i18n/be.po6314
-rw-r--r--deluge/i18n/bg.po6186
-rw-r--r--deluge/i18n/bn.po6164
-rw-r--r--deluge/i18n/bs.po6166
-rw-r--r--deluge/i18n/ca.po6360
-rw-r--r--deluge/i18n/cs.po6220
-rw-r--r--deluge/i18n/cy.po6164
-rw-r--r--deluge/i18n/da.po6239
-rw-r--r--deluge/i18n/de.po6268
-rw-r--r--deluge/i18n/el.po6253
-rw-r--r--deluge/i18n/en_AU.po6224
-rw-r--r--deluge/i18n/en_CA.po6224
-rw-r--r--deluge/i18n/en_GB.po6287
-rw-r--r--deluge/i18n/eo.po6164
-rw-r--r--deluge/i18n/es.po6240
-rw-r--r--deluge/i18n/et.po6187
-rw-r--r--deluge/i18n/eu.po6220
-rw-r--r--deluge/i18n/fa.po6172
-rw-r--r--deluge/i18n/fi.po6204
-rw-r--r--deluge/i18n/fo.po6164
-rw-r--r--deluge/i18n/fr.po6311
-rw-r--r--deluge/i18n/fy.po6166
-rw-r--r--deluge/i18n/ga.po6164
-rw-r--r--deluge/i18n/gl.po6240
-rw-r--r--deluge/i18n/he.po6168
-rw-r--r--deluge/i18n/hi.po6173
-rw-r--r--deluge/i18n/hr.po6249
-rw-r--r--deluge/i18n/hu.po6173
-rw-r--r--deluge/i18n/id.po6164
-rw-r--r--deluge/i18n/is.po6176
-rw-r--r--deluge/i18n/it.po6216
-rw-r--r--deluge/i18n/iu.po6164
-rw-r--r--deluge/i18n/ja.po6171
-rw-r--r--deluge/i18n/ka.po6229
-rw-r--r--deluge/i18n/kk.po6200
-rw-r--r--deluge/i18n/km.po6172
-rw-r--r--deluge/i18n/kn.po6164
-rw-r--r--deluge/i18n/ko.po6168
-rw-r--r--deluge/i18n/ku.po6164
-rw-r--r--deluge/i18n/ky.po6164
-rw-r--r--deluge/i18n/la.po6164
-rw-r--r--deluge/i18n/languages.py114
-rw-r--r--deluge/i18n/lb.po6164
-rw-r--r--deluge/i18n/lt.po6224
-rw-r--r--deluge/i18n/lv.po6207
-rw-r--r--deluge/i18n/mk.po6205
-rw-r--r--deluge/i18n/ml.po6164
-rw-r--r--deluge/i18n/mo.po6164
-rw-r--r--deluge/i18n/ms.po6227
-rw-r--r--deluge/i18n/nap.po6172
-rw-r--r--deluge/i18n/nb.po6186
-rw-r--r--deluge/i18n/nds.po6164
-rw-r--r--deluge/i18n/nl.po6199
-rw-r--r--deluge/i18n/nn.po6180
-rw-r--r--deluge/i18n/oc.po6171
-rw-r--r--deluge/i18n/pl.po6197
-rw-r--r--deluge/i18n/pms.po6164
-rw-r--r--deluge/i18n/pt.po6219
-rw-r--r--deluge/i18n/pt_BR.po6234
-rw-r--r--deluge/i18n/ro.po6208
-rw-r--r--deluge/i18n/ru.po6357
-rw-r--r--deluge/i18n/si.po6209
-rw-r--r--deluge/i18n/sk.po6197
-rw-r--r--deluge/i18n/sl.po6201
-rw-r--r--deluge/i18n/sr.po6227
-rw-r--r--deluge/i18n/sv.po6329
-rw-r--r--deluge/i18n/ta.po6164
-rw-r--r--deluge/i18n/te.po6164
-rw-r--r--deluge/i18n/th.po6164
-rw-r--r--deluge/i18n/tl.po6164
-rw-r--r--deluge/i18n/tlh.po6164
-rw-r--r--deluge/i18n/tr.po6349
-rw-r--r--deluge/i18n/uk.po6352
-rw-r--r--deluge/i18n/ur.po6164
-rw-r--r--deluge/i18n/util.py153
-rw-r--r--deluge/i18n/vi.po6219
-rw-r--r--deluge/i18n/zh_CN.po6207
-rw-r--r--deluge/i18n/zh_HK.po6169
-rw-r--r--deluge/i18n/zh_TW.po6175
-rw-r--r--deluge/log.py345
-rw-r--r--deluge/maketorrent.py376
-rw-r--r--deluge/metafile.py460
-rw-r--r--deluge/path_chooser_common.py84
-rw-r--r--deluge/pluginmanagerbase.py279
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/__init__.py38
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/common.py21
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/core.py528
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd.js226
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.js470
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui1322
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options/main_tab.js304
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options/options_tab.js302
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui134
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py576
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/webui.py35
-rw-r--r--deluge/plugins/AutoAdd/setup.py47
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/__init__.py33
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/common.py172
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/core.py549
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/data/blocklist.js429
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/data/blocklist16.pngbin0 -> 586 bytes
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_download24.pngbin0 -> 764 bytes
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.pngbin0 -> 1091 bytes
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui603
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/decompressers.py44
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/detect.py48
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/gtkui.py254
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py66
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/readers.py99
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/webui.py27
-rw-r--r--deluge/plugins/Blocklist/setup.py42
-rw-r--r--deluge/plugins/Execute/deluge_execute/__init__.py33
-rw-r--r--deluge/plugins/Execute/deluge_execute/common.py20
-rw-r--r--deluge/plugins/Execute/deluge_execute/core.py182
-rw-r--r--deluge/plugins/Execute/deluge_execute/data/execute.js300
-rw-r--r--deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui195
-rw-r--r--deluge/plugins/Execute/deluge_execute/gtkui.py162
-rw-r--r--deluge/plugins/Execute/deluge_execute/webui.py20
-rw-r--r--deluge/plugins/Execute/setup.py41
-rw-r--r--deluge/plugins/Extractor/deluge_extractor/__init__.py37
-rw-r--r--deluge/plugins/Extractor/deluge_extractor/common.py20
-rw-r--r--deluge/plugins/Extractor/deluge_extractor/core.py186
-rw-r--r--deluge/plugins/Extractor/deluge_extractor/data/extractor.js100
-rw-r--r--deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui121
-rw-r--r--deluge/plugins/Extractor/deluge_extractor/gtkui.py93
-rw-r--r--deluge/plugins/Extractor/deluge_extractor/webui.py24
-rw-r--r--deluge/plugins/Extractor/setup.py54
-rw-r--r--deluge/plugins/Label/TODO11
-rw-r--r--deluge/plugins/Label/deluge_label/__init__.py37
-rw-r--r--deluge/plugins/Label/deluge_label/common.py20
-rw-r--r--deluge/plugins/Label/deluge_label/core.py348
-rw-r--r--deluge/plugins/Label/deluge_label/data/label.js635
-rw-r--r--deluge/plugins/Label/deluge_label/data/label_add.ui172
-rw-r--r--deluge/plugins/Label/deluge_label/data/label_options.ui723
-rw-r--r--deluge/plugins/Label/deluge_label/data/label_pref.ui56
-rw-r--r--deluge/plugins/Label/deluge_label/gtkui/__init__.py74
-rw-r--r--deluge/plugins/Label/deluge_label/gtkui/label_config.py58
-rw-r--r--deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py259
-rw-r--r--deluge/plugins/Label/deluge_label/gtkui/submenu.py62
-rw-r--r--deluge/plugins/Label/deluge_label/test.py47
-rw-r--r--deluge/plugins/Label/deluge_label/webui.py24
-rw-r--r--deluge/plugins/Label/setup.py45
-rwxr-xr-xdeluge/plugins/Notifications/create_dev_link.sh11
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/__init__.py38
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/common.py114
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/core.py228
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/data/config.ui641
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/data/notifications.js522
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/gtkui.py741
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/test.py86
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/webui.py31
-rwxr-xr-xdeluge/plugins/Notifications/setup.py53
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/__init__.py37
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/common.py20
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/core.py167
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/data/green.svg1
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/data/red.svg1
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/data/scheduler.js621
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/data/yellow.svg1
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/gtkui.py356
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/webui.py23
-rw-r--r--deluge/plugins/Scheduler/setup.py45
-rwxr-xr-xdeluge/plugins/Stats/create_dev_link.sh11
-rw-r--r--deluge/plugins/Stats/deluge_stats/__init__.py37
-rw-r--r--deluge/plugins/Stats/deluge_stats/common.py20
-rw-r--r--deluge/plugins/Stats/deluge_stats/core.py218
-rw-r--r--deluge/plugins/Stats/deluge_stats/data/config.ui284
-rw-r--r--deluge/plugins/Stats/deluge_stats/data/stats.js27
-rw-r--r--deluge/plugins/Stats/deluge_stats/data/tabs.ui169
-rw-r--r--deluge/plugins/Stats/deluge_stats/graph.py343
-rw-r--r--deluge/plugins/Stats/deluge_stats/gtkui.py296
-rw-r--r--deluge/plugins/Stats/deluge_stats/template/graph.html12
-rw-r--r--deluge/plugins/Stats/deluge_stats/tests/__init__.py0
-rw-r--r--deluge/plugins/Stats/deluge_stats/tests/test.html9
-rw-r--r--deluge/plugins/Stats/deluge_stats/tests/test_stats.py106
-rw-r--r--deluge/plugins/Stats/deluge_stats/webui.py32
-rw-r--r--deluge/plugins/Stats/setup.py49
-rw-r--r--deluge/plugins/Toggle/deluge_toggle/__init__.py38
-rw-r--r--deluge/plugins/Toggle/deluge_toggle/common.py20
-rw-r--r--deluge/plugins/Toggle/deluge_toggle/core.py47
-rw-r--r--deluge/plugins/Toggle/deluge_toggle/data/toggle.js27
-rw-r--r--deluge/plugins/Toggle/deluge_toggle/gtkui.py53
-rw-r--r--deluge/plugins/Toggle/deluge_toggle/webui.py30
-rw-r--r--deluge/plugins/Toggle/setup.py46
-rwxr-xr-xdeluge/plugins/WebUi/create_dev_link.sh11
-rw-r--r--deluge/plugins/WebUi/deluge_webui/__init__.py37
-rw-r--r--deluge/plugins/WebUi/deluge_webui/common.py20
-rw-r--r--deluge/plugins/WebUi/deluge_webui/core.py117
-rw-r--r--deluge/plugins/WebUi/deluge_webui/data/config.ui127
-rw-r--r--deluge/plugins/WebUi/deluge_webui/gtkui.py97
-rw-r--r--deluge/plugins/WebUi/deluge_webui/tests/__init__.py0
-rw-r--r--deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py44
-rw-r--r--deluge/plugins/WebUi/setup.py43
-rw-r--r--deluge/plugins/__init__.py0
-rw-r--r--deluge/plugins/init.py27
-rw-r--r--deluge/plugins/pluginbase.py82
-rwxr-xr-xdeluge/scripts/create_icons.py201
-rw-r--r--deluge/scripts/create_plugin.py415
-rw-r--r--deluge/scripts/deluge_remote.py138
-rw-r--r--deluge/tests/__init__.py17
-rw-r--r--deluge/tests/common.py363
-rw-r--r--deluge/tests/common_web.py57
-rw-r--r--deluge/tests/daemon_base.py67
-rw-r--r--deluge/tests/data/deluge.pngbin0 -> 1126 bytes
-rw-r--r--deluge/tests/data/dir_with_6_files.torrentbin0 -> 9630 bytes
-rw-r--r--deluge/tests/data/dir_with_single_file.torrent1
-rw-r--r--deluge/tests/data/filehash_field.torrent2
-rw-r--r--deluge/tests/data/google.icobin0 -> 5430 bytes
-rw-r--r--deluge/tests/data/md5sum.torrent1
-rw-r--r--deluge/tests/data/seo.svg1
-rw-r--r--deluge/tests/data/test.torrent2
-rw-r--r--deluge/tests/data/test_torrent.file.torrent2
-rw-r--r--deluge/tests/data/ubuntu-9.04-desktop-i386.iso.torrentbin0 -> 28184 bytes
-rw-r--r--deluge/tests/data/unicode_file.torrent1
-rw-r--r--deluge/tests/data/unicode_filenames.torrentbin0 -> 34298 bytes
-rw-r--r--deluge/tests/data/utf8_filename_torrents.state85
-rw-r--r--deluge/tests/data/v2_hybrid.torrentbin0 -> 613 bytes
-rw-r--r--deluge/tests/data/v2_test.torrentbin0 -> 345 bytes
-rw-r--r--deluge/tests/test_alertmanager.py102
-rw-r--r--deluge/tests/test_authmanager.py23
-rw-r--r--deluge/tests/test_bencode.py32
-rw-r--r--deluge/tests/test_client.py192
-rw-r--r--deluge/tests/test_common.py227
-rw-r--r--deluge/tests/test_component.py192
-rw-r--r--deluge/tests/test_config.py274
-rw-r--r--deluge/tests/test_core.py511
-rw-r--r--deluge/tests/test_decorators.py48
-rw-r--r--deluge/tests/test_error.py39
-rw-r--r--deluge/tests/test_files_tab.py163
-rw-r--r--deluge/tests/test_httpdownloader.py275
-rw-r--r--deluge/tests/test_json_api.py267
-rw-r--r--deluge/tests/test_log.py47
-rw-r--r--deluge/tests/test_maketorrent.py85
-rw-r--r--deluge/tests/test_maybe_coroutine.py207
-rw-r--r--deluge/tests/test_metafile.py112
-rw-r--r--deluge/tests/test_plugin_metadata.py43
-rw-r--r--deluge/tests/test_rpcserver.py108
-rw-r--r--deluge/tests/test_security.py158
-rw-r--r--deluge/tests/test_sessionproxy.py154
-rw-r--r--deluge/tests/test_torrent.py388
-rw-r--r--deluge/tests/test_torrentmanager.py146
-rw-r--r--deluge/tests/test_torrentview.py224
-rw-r--r--deluge/tests/test_tracker_icons.py71
-rw-r--r--deluge/tests/test_transfer.py398
-rw-r--r--deluge/tests/test_ui_common.py290
-rw-r--r--deluge/tests/test_ui_console.py80
-rw-r--r--deluge/tests/test_ui_entry.py440
-rw-r--r--deluge/tests/test_ui_gtk3.py30
-rw-r--r--deluge/tests/test_web_api.py202
-rw-r--r--deluge/tests/test_web_auth.py33
-rw-r--r--deluge/tests/test_webserver.py108
-rw-r--r--deluge/transfer.py158
-rw-r--r--deluge/ui/__init__.py0
-rw-r--r--deluge/ui/client.py857
-rw-r--r--deluge/ui/common.py727
-rw-r--r--deluge/ui/console/__init__.py24
-rw-r--r--deluge/ui/console/cmdline/__init__.py0
-rw-r--r--deluge/ui/console/cmdline/command.py211
-rw-r--r--deluge/ui/console/cmdline/commands/__init__.py3
-rw-r--r--deluge/ui/console/cmdline/commands/add.py117
-rw-r--r--deluge/ui/console/cmdline/commands/cache.py28
-rw-r--r--deluge/ui/console/cmdline/commands/config.py136
-rw-r--r--deluge/ui/console/cmdline/commands/connect.py78
-rw-r--r--deluge/ui/console/cmdline/commands/debug.py37
-rw-r--r--deluge/ui/console/cmdline/commands/gui.py27
-rw-r--r--deluge/ui/console/cmdline/commands/halt.py32
-rw-r--r--deluge/ui/console/cmdline/commands/help.py71
-rw-r--r--deluge/ui/console/cmdline/commands/info.py488
-rw-r--r--deluge/ui/console/cmdline/commands/manage.py114
-rw-r--r--deluge/ui/console/cmdline/commands/move.py94
-rw-r--r--deluge/ui/console/cmdline/commands/pause.py45
-rw-r--r--deluge/ui/console/cmdline/commands/plugin.py140
-rw-r--r--deluge/ui/console/cmdline/commands/quit.py22
-rw-r--r--deluge/ui/console/cmdline/commands/recheck.py44
-rw-r--r--deluge/ui/console/cmdline/commands/resume.py45
-rw-r--r--deluge/ui/console/cmdline/commands/rm.py82
-rw-r--r--deluge/ui/console/cmdline/commands/status.py116
-rw-r--r--deluge/ui/console/cmdline/commands/update_tracker.py44
-rw-r--r--deluge/ui/console/console.py163
-rw-r--r--deluge/ui/console/eventlog.py125
-rw-r--r--deluge/ui/console/main.py470
-rw-r--r--deluge/ui/console/modes/__init__.py0
-rw-r--r--deluge/ui/console/modes/add_util.py92
-rw-r--r--deluge/ui/console/modes/addtorrents.py536
-rw-r--r--deluge/ui/console/modes/basemode.py360
-rw-r--r--deluge/ui/console/modes/cmdline.py845
-rw-r--r--deluge/ui/console/modes/connectionmanager.py211
-rw-r--r--deluge/ui/console/modes/eventview.py112
-rw-r--r--deluge/ui/console/modes/preferences/__init__.py3
-rw-r--r--deluge/ui/console/modes/preferences/preference_panes.py757
-rw-r--r--deluge/ui/console/modes/preferences/preferences.py376
-rw-r--r--deluge/ui/console/modes/torrentdetail.py1021
-rw-r--r--deluge/ui/console/modes/torrentlist/__init__.py17
-rw-r--r--deluge/ui/console/modes/torrentlist/add_torrents_popup.py110
-rw-r--r--deluge/ui/console/modes/torrentlist/filtersidebar.py131
-rw-r--r--deluge/ui/console/modes/torrentlist/queue_mode.py154
-rw-r--r--deluge/ui/console/modes/torrentlist/search_mode.py206
-rw-r--r--deluge/ui/console/modes/torrentlist/torrentactions.py272
-rw-r--r--deluge/ui/console/modes/torrentlist/torrentlist.py347
-rw-r--r--deluge/ui/console/modes/torrentlist/torrentview.py514
-rw-r--r--deluge/ui/console/modes/torrentlist/torrentviewcolumns.py159
-rw-r--r--deluge/ui/console/parser.py140
-rw-r--r--deluge/ui/console/utils/__init__.py0
-rw-r--r--deluge/ui/console/utils/colors.py323
-rw-r--r--deluge/ui/console/utils/column.py74
-rw-r--r--deluge/ui/console/utils/common.py20
-rw-r--r--deluge/ui/console/utils/config.py118
-rw-r--r--deluge/ui/console/utils/curses_util.py62
-rw-r--r--deluge/ui/console/utils/format_utils.py350
-rw-r--r--deluge/ui/console/widgets/__init__.py5
-rw-r--r--deluge/ui/console/widgets/fields.py1202
-rw-r--r--deluge/ui/console/widgets/inputpane.py394
-rw-r--r--deluge/ui/console/widgets/popup.py398
-rw-r--r--deluge/ui/console/widgets/sidebar.py79
-rw-r--r--deluge/ui/console/widgets/statusbars.py124
-rw-r--r--deluge/ui/console/widgets/window.py182
-rw-r--r--deluge/ui/coreconfig.py51
-rw-r--r--deluge/ui/countries.py253
-rw-r--r--deluge/ui/data/icons/hicolor/128x128/apps/deluge.pngbin0 -> 1536 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.pngbin0 -> 418 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/16x16/apps/deluge.pngbin0 -> 418 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/192x192/apps/deluge.pngbin0 -> 2191 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.pngbin0 -> 492 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/22x22/apps/deluge.pngbin0 -> 492 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.pngbin0 -> 529 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/24x24/apps/deluge.pngbin0 -> 529 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/256x256/apps/deluge.pngbin0 -> 2738 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/32x32/apps/deluge.pngbin0 -> 597 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/36x36/apps/deluge.pngbin0 -> 656 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/48x48/apps/deluge.pngbin0 -> 797 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/512x512/apps/deluge.pngbin0 -> 5090 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/64x64/apps/deluge.pngbin0 -> 1021 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/72x72/apps/deluge.pngbin0 -> 1016 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/96x96/apps/deluge.pngbin0 -> 1268 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/scalable/apps/deluge.svg610
-rw-r--r--deluge/ui/data/pixmaps/active.svg612
-rw-r--r--deluge/ui/data/pixmaps/active16.pngbin0 -> 411 bytes
-rw-r--r--deluge/ui/data/pixmaps/alert.svg512
-rw-r--r--deluge/ui/data/pixmaps/alert16.pngbin0 -> 331 bytes
-rw-r--r--deluge/ui/data/pixmaps/all.svg826
-rw-r--r--deluge/ui/data/pixmaps/all16.pngbin0 -> 533 bytes
-rw-r--r--deluge/ui/data/pixmaps/checking.svg504
-rw-r--r--deluge/ui/data/pixmaps/checking16.pngbin0 -> 323 bytes
-rw-r--r--deluge/ui/data/pixmaps/deluge-about.pngbin0 -> 4693 bytes
-rw-r--r--deluge/ui/data/pixmaps/deluge.icobin0 -> 108469 bytes
-rw-r--r--deluge/ui/data/pixmaps/deluge.pngbin0 -> 797 bytes
-rw-r--r--deluge/ui/data/pixmaps/deluge.svg610
-rw-r--r--deluge/ui/data/pixmaps/deluge16.pngbin0 -> 418 bytes
-rw-r--r--deluge/ui/data/pixmaps/dht.svg163
-rw-r--r--deluge/ui/data/pixmaps/dht16.pngbin0 -> 515 bytes
-rw-r--r--deluge/ui/data/pixmaps/downloading.svg515
-rw-r--r--deluge/ui/data/pixmaps/downloading16.pngbin0 -> 356 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ad.pngbin0 -> 439 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ae.pngbin0 -> 273 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/af.pngbin0 -> 412 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ag.pngbin0 -> 430 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ai.pngbin0 -> 492 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/al.pngbin0 -> 422 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/am.pngbin0 -> 319 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/an.pngbin0 -> 353 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ao.pngbin0 -> 377 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/aq.pngbin0 -> 580 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ar.pngbin0 -> 352 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/as.pngbin0 -> 511 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/at.pngbin0 -> 284 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/au.pngbin0 -> 552 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/aw.pngbin0 -> 375 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ax.pngbin0 -> 463 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/az.pngbin0 -> 410 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ba.pngbin0 -> 447 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bb.pngbin0 -> 392 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bd.pngbin0 -> 349 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/be.pngbin0 -> 286 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bf.pngbin0 -> 332 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bg.pngbin0 -> 306 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bh.pngbin0 -> 329 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bi.pngbin0 -> 529 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bj.pngbin0 -> 304 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bm.pngbin0 -> 472 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bn.pngbin0 -> 472 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bo.pngbin0 -> 332 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/br.pngbin0 -> 458 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bs.pngbin0 -> 380 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bt.pngbin0 -> 452 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bv.pngbin0 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bw.pngbin0 -> 311 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/by.pngbin0 -> 361 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bz.pngbin0 -> 455 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ca.pngbin0 -> 455 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cc.pngbin0 -> 472 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cd.pngbin0 -> 448 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cf.pngbin0 -> 437 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cg.pngbin0 -> 363 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ch.pngbin0 -> 231 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ci.pngbin0 -> 296 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ck.pngbin0 -> 463 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cl.pngbin0 -> 313 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cm.pngbin0 -> 333 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cn.pngbin0 -> 338 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/co.pngbin0 -> 321 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cr.pngbin0 -> 336 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cs.pngbin0 -> 305 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cu.pngbin0 -> 415 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cv.pngbin0 -> 401 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cx.pngbin0 -> 456 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cy.pngbin0 -> 312 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cz.pngbin0 -> 349 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/de.pngbin0 -> 351 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/dj.pngbin0 -> 410 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/dk.pngbin0 -> 340 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/dm.pngbin0 -> 483 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/do.pngbin0 -> 360 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/dz.pngbin0 -> 437 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ec.pngbin0 -> 340 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ee.pngbin0 -> 285 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/eg.pngbin0 -> 334 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/eh.pngbin0 -> 375 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/er.pngbin0 -> 473 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/es.pngbin0 -> 333 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/et.pngbin0 -> 421 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fi.pngbin0 -> 352 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fj.pngbin0 -> 484 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fk.pngbin0 -> 498 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fm.pngbin0 -> 394 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fo.pngbin0 -> 362 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fr.pngbin0 -> 362 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fx.pngbin0 -> 460 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ga.pngbin0 -> 330 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gb.pngbin0 -> 525 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gd.pngbin0 -> 441 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ge.pngbin0 -> 460 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gf.pngbin0 -> 362 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gg.pngbin0 -> 442 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gh.pngbin0 -> 318 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gi.pngbin0 -> 352 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gl.pngbin0 -> 335 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gm.pngbin0 -> 349 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gn.pngbin0 -> 305 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gp.pngbin0 -> 339 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gq.pngbin0 -> 387 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gr.pngbin0 -> 373 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gs.pngbin0 -> 499 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gt.pngbin0 -> 320 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gu.pngbin0 -> 363 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gw.pngbin0 -> 337 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gy.pngbin0 -> 495 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hk.pngbin0 -> 375 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hm.pngbin0 -> 552 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hn.pngbin0 -> 391 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hr.pngbin0 -> 363 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ht.pngbin0 -> 316 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hu.pngbin0 -> 284 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/id.pngbin0 -> 286 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ie.pngbin0 -> 325 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/il.pngbin0 -> 310 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/in.pngbin0 -> 357 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/io.pngbin0 -> 556 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/iq.pngbin0 -> 382 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ir.pngbin0 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/is.pngbin0 -> 393 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/it.pngbin0 -> 276 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/je.pngbin0 -> 630 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/jm.pngbin0 -> 478 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/jo.pngbin0 -> 344 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/jp.pngbin0 -> 296 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ke.pngbin0 -> 416 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kg.pngbin0 -> 339 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kh.pngbin0 -> 404 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ki.pngbin0 -> 520 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/km.pngbin0 -> 427 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kn.pngbin0 -> 455 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kp.pngbin0 -> 408 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kr.pngbin0 -> 476 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kw.pngbin0 -> 339 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ky.pngbin0 -> 501 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kz.pngbin0 -> 438 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/la.pngbin0 -> 391 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lb.pngbin0 -> 370 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lc.pngbin0 -> 450 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/li.pngbin0 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lk.pngbin0 -> 451 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lr.pngbin0 -> 353 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ls.pngbin0 -> 477 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lt.pngbin0 -> 331 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lu.pngbin0 -> 318 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lv.pngbin0 -> 326 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ly.pngbin0 -> 268 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ma.pngbin0 -> 285 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mc.pngbin0 -> 247 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/md.pngbin0 -> 392 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/me.pngbin0 -> 369 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mg.pngbin0 -> 301 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mh.pngbin0 -> 492 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mk.pngbin0 -> 430 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ml.pngbin0 -> 309 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mm.pngbin0 -> 330 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mn.pngbin0 -> 326 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mo.pngbin0 -> 431 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mp.pngbin0 -> 457 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mq.pngbin0 -> 522 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mr.pngbin0 -> 393 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ms.pngbin0 -> 467 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mt.pngbin0 -> 290 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mu.pngbin0 -> 347 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mv.pngbin0 -> 381 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mw.pngbin0 -> 353 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mx.pngbin0 -> 406 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/my.pngbin0 -> 451 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mz.pngbin0 -> 413 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/na.pngbin0 -> 526 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nc.pngbin0 -> 444 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ne.pngbin0 -> 365 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nf.pngbin0 -> 457 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ng.pngbin0 -> 332 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ni.pngbin0 -> 355 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nl.pngbin0 -> 297 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/no.pngbin0 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/np.pngbin0 -> 322 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nr.pngbin0 -> 373 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nu.pngbin0 -> 443 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nz.pngbin0 -> 495 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/om.pngbin0 -> 331 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pa.pngbin0 -> 375 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pe.pngbin0 -> 251 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pf.pngbin0 -> 367 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pg.pngbin0 -> 409 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ph.pngbin0 -> 398 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pk.pngbin0 -> 434 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pl.pngbin0 -> 235 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pm.pngbin0 -> 543 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pn.pngbin0 -> 523 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pr.pngbin0 -> 418 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ps.pngbin0 -> 333 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pt.pngbin0 -> 387 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pw.pngbin0 -> 398 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/py.pngbin0 -> 333 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/qa.pngbin0 -> 320 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/re.pngbin0 -> 362 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ro.pngbin0 -> 315 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/rs.pngbin0 -> 357 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ru.pngbin0 -> 281 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/rw.pngbin0 -> 361 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sa.pngbin0 -> 415 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sb.pngbin0 -> 489 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sc.pngbin0 -> 457 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sd.pngbin0 -> 343 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/se.pngbin0 -> 373 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sg.pngbin0 -> 330 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sh.pngbin0 -> 495 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/si.pngbin0 -> 367 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sj.pngbin0 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sk.pngbin0 -> 417 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sl.pngbin0 -> 308 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sm.pngbin0 -> 367 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sn.pngbin0 -> 347 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/so.pngbin0 -> 361 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sr.pngbin0 -> 359 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/st.pngbin0 -> 409 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sv.pngbin0 -> 356 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sy.pngbin0 -> 311 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sz.pngbin0 -> 481 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tc.pngbin0 -> 484 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/td.pngbin0 -> 369 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tf.pngbin0 -> 379 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tg.pngbin0 -> 397 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/th.pngbin0 -> 317 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tj.pngbin0 -> 351 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tk.pngbin0 -> 499 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tl.pngbin0 -> 373 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tm.pngbin0 -> 431 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tn.pngbin0 -> 352 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/to.pngbin0 -> 290 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tp.pngbin0 -> 443 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tr.pngbin0 -> 356 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tt.pngbin0 -> 456 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tv.pngbin0 -> 416 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tw.pngbin0 -> 320 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tz.pngbin0 -> 485 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ua.pngbin0 -> 294 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ug.pngbin0 -> 372 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/um.pngbin0 -> 442 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/us.pngbin0 -> 452 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/uy.pngbin0 -> 394 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/uz.pngbin0 -> 386 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/va.pngbin0 -> 396 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vc.pngbin0 -> 397 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ve.pngbin0 -> 383 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vg.pngbin0 -> 482 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vi.pngbin0 -> 498 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vn.pngbin0 -> 307 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vu.pngbin0 -> 420 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/wf.pngbin0 -> 422 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ws.pngbin0 -> 342 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ye.pngbin0 -> 287 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/yt.pngbin0 -> 439 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/yu.pngbin0 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/za.pngbin0 -> 493 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/zm.pngbin0 -> 348 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/zw.pngbin0 -> 435 bytes
-rw-r--r--deluge/ui/data/pixmaps/inactive.svg492
-rw-r--r--deluge/ui/data/pixmaps/inactive16.pngbin0 -> 283 bytes
-rw-r--r--deluge/ui/data/pixmaps/loading.gifbin0 -> 723 bytes
-rw-r--r--deluge/ui/data/pixmaps/magnet.svg166
-rw-r--r--deluge/ui/data/pixmaps/magnet16.pngbin0 -> 345 bytes
-rw-r--r--deluge/ui/data/pixmaps/magnet_add.svg175
-rw-r--r--deluge/ui/data/pixmaps/magnet_add16.pngbin0 -> 414 bytes
-rw-r--r--deluge/ui/data/pixmaps/magnet_copy.svg163
-rw-r--r--deluge/ui/data/pixmaps/magnet_copy16.pngbin0 -> 469 bytes
-rw-r--r--deluge/ui/data/pixmaps/queued.svg532
-rw-r--r--deluge/ui/data/pixmaps/queued16.pngbin0 -> 341 bytes
-rw-r--r--deluge/ui/data/pixmaps/seeding.svg509
-rw-r--r--deluge/ui/data/pixmaps/seeding16.pngbin0 -> 332 bytes
-rw-r--r--deluge/ui/data/pixmaps/tracker_all16.pngbin0 -> 1022 bytes
-rw-r--r--deluge/ui/data/pixmaps/tracker_warning16.pngbin0 -> 626 bytes
-rw-r--r--deluge/ui/data/pixmaps/traffic.svg94
-rw-r--r--deluge/ui/data/pixmaps/traffic16.pngbin0 -> 359 bytes
-rw-r--r--deluge/ui/data/share/applications/deluge.desktop.in17
-rw-r--r--deluge/ui/data/share/metainfo/deluge.metainfo.xml.in30
-rw-r--r--deluge/ui/gtk3/__init__.py63
-rw-r--r--deluge/ui/gtk3/aboutdialog.py854
-rw-r--r--deluge/ui/gtk3/addtorrentdialog.py1103
-rw-r--r--deluge/ui/gtk3/common.py435
-rw-r--r--deluge/ui/gtk3/connectionmanager.py560
-rw-r--r--deluge/ui/gtk3/createtorrentdialog.py517
-rw-r--r--deluge/ui/gtk3/details_tab.py71
-rw-r--r--deluge/ui/gtk3/dialogs.py498
-rw-r--r--deluge/ui/gtk3/edittrackersdialog.py348
-rw-r--r--deluge/ui/gtk3/files_tab.py863
-rw-r--r--deluge/ui/gtk3/filtertreeview.py370
-rw-r--r--deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui217
-rw-r--r--deluge/ui/gtk3/glade/add_torrent_dialog.ui1031
-rw-r--r--deluge/ui/gtk3/glade/add_torrent_dialog.url.ui174
-rw-r--r--deluge/ui/gtk3/glade/connect_peer_dialog.ui152
-rw-r--r--deluge/ui/gtk3/glade/connection_manager.addhost.ui204
-rw-r--r--deluge/ui/gtk3/glade/connection_manager.ui394
-rw-r--r--deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui57
-rw-r--r--deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui174
-rw-r--r--deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui174
-rw-r--r--deluge/ui/gtk3/glade/create_torrent_dialog.ui844
-rw-r--r--deluge/ui/gtk3/glade/edit_trackers.add.ui183
-rw-r--r--deluge/ui/gtk3/glade/edit_trackers.edit.ui175
-rw-r--r--deluge/ui/gtk3/glade/edit_trackers.ui247
-rw-r--r--deluge/ui/gtk3/glade/filtertree_menu.ui60
-rw-r--r--deluge/ui/gtk3/glade/main_window.new_release.ui249
-rw-r--r--deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui138
-rw-r--r--deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui27
-rw-r--r--deluge/ui/gtk3/glade/main_window.tabs.ui1657
-rw-r--r--deluge/ui/gtk3/glade/main_window.ui797
-rw-r--r--deluge/ui/gtk3/glade/move_storage_dialog.ui163
-rw-r--r--deluge/ui/gtk3/glade/other_dialog.ui188
-rw-r--r--deluge/ui/gtk3/glade/path_combo_chooser.ui1001
-rw-r--r--deluge/ui/gtk3/glade/preferences_dialog.ui5014
-rw-r--r--deluge/ui/gtk3/glade/queuedtorrents.ui211
-rw-r--r--deluge/ui/gtk3/glade/remove_torrent_dialog.ui187
-rw-r--r--deluge/ui/gtk3/glade/torrent_menu.options.ui104
-rw-r--r--deluge/ui/gtk3/glade/torrent_menu.queue.ui69
-rw-r--r--deluge/ui/gtk3/glade/torrent_menu.ui241
-rw-r--r--deluge/ui/gtk3/glade/tray_menu.ui167
-rw-r--r--deluge/ui/gtk3/gtkui.py399
-rw-r--r--deluge/ui/gtk3/ipcinterface.py221
-rw-r--r--deluge/ui/gtk3/listview.py831
-rw-r--r--deluge/ui/gtk3/mainwindow.py405
-rw-r--r--deluge/ui/gtk3/menubar.py640
-rw-r--r--deluge/ui/gtk3/menubar_osx.py68
-rw-r--r--deluge/ui/gtk3/new_release_dialog.py70
-rw-r--r--deluge/ui/gtk3/options_tab.py220
-rw-r--r--deluge/ui/gtk3/path_chooser.py198
-rwxr-xr-xdeluge/ui/gtk3/path_combo_chooser.py1730
-rw-r--r--deluge/ui/gtk3/peers_tab.py382
-rw-r--r--deluge/ui/gtk3/piecesbar.py225
-rw-r--r--deluge/ui/gtk3/pluginmanager.py134
-rw-r--r--deluge/ui/gtk3/preferences.py1537
-rw-r--r--deluge/ui/gtk3/queuedtorrents.py165
-rw-r--r--deluge/ui/gtk3/removetorrentdialog.py90
-rw-r--r--deluge/ui/gtk3/sidebar.py70
-rw-r--r--deluge/ui/gtk3/status_tab.py159
-rw-r--r--deluge/ui/gtk3/statusbar.py578
-rw-r--r--deluge/ui/gtk3/systemtray.py445
-rw-r--r--deluge/ui/gtk3/tab_data_funcs.py93
-rw-r--r--deluge/ui/gtk3/toolbar.py131
-rw-r--r--deluge/ui/gtk3/torrentdetails.py487
-rw-r--r--deluge/ui/gtk3/torrentview.py938
-rw-r--r--deluge/ui/gtk3/torrentview_data_funcs.py277
-rw-r--r--deluge/ui/gtk3/trackers_tab.py69
-rw-r--r--deluge/ui/hostlist.py305
-rw-r--r--deluge/ui/sessionproxy.py282
-rw-r--r--deluge/ui/tracker_icons.py651
-rw-r--r--deluge/ui/ui.py70
-rw-r--r--deluge/ui/ui_entry.py140
-rw-r--r--deluge/ui/web/__init__.py6
-rw-r--r--deluge/ui/web/auth.py254
-rw-r--r--deluge/ui/web/common.py43
-rw-r--r--deluge/ui/web/css/deluge.css578
-rw-r--r--deluge/ui/web/css/ext-all-notheme.css5349
-rw-r--r--deluge/ui/web/css/ext-extensions-debug.css261
-rw-r--r--deluge/ui/web/css/ext-extensions.css1
-rwxr-xr-xdeluge/ui/web/docs/build.sh3
-rw-r--r--deluge/ui/web/docs/deluge-docs.xml15
-rw-r--r--deluge/ui/web/docs/template/index.html44
-rw-r--r--deluge/ui/web/docs/template/license.txt42
-rw-r--r--deluge/ui/web/docs/template/resources/TabCloseMenu.js42
-rw-r--r--deluge/ui/web/docs/template/resources/accordian.gifbin0 -> 943 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/block-bg.gifbin0 -> 834 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/block-bottom.gifbin0 -> 3133 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/block-top.gifbin0 -> 915 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/class.gifbin0 -> 925 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/cmp.gifbin0 -> 988 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/collapse-all.gifbin0 -> 983 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/collapse-bg.gifbin0 -> 1623 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/collapser.css34
-rw-r--r--deluge/ui/web/docs/template/resources/config.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/css/ext-all.css925
-rw-r--r--deluge/ui/web/docs/template/resources/deluge.pngbin0 -> 641 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/docs.css346
-rw-r--r--deluge/ui/web/docs/template/resources/docs.gifbin0 -> 1016 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/docs.js632
-rw-r--r--deluge/ui/web/docs/template/resources/elbow-end.gifbin0 -> 844 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/event.gifbin0 -> 919 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/example.gifbin0 -> 1008 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/expand-all.gifbin0 -> 1009 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/expand-bg-over.gifbin0 -> 820 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/expand-bg.gifbin0 -> 827 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/expand-members.gifbin0 -> 981 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/ext-all.js162
-rw-r--r--deluge/ui/web/docs/template/resources/ext-base.js10
-rw-r--r--deluge/ui/web/docs/template/resources/extanim32.gifbin0 -> 3424 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/extanim64.gifbin0 -> 6562 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/extjs.gifbin0 -> 2093 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/fav.gifbin0 -> 954 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/folder.gifbin0 -> 1003 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/folder_open.gifbin0 -> 997 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/form.pngbin0 -> 444 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/forum.gifbin0 -> 1031 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/hd-bg.gifbin0 -> 889 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/hide-inherited.gifbin0 -> 919 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/icon-grid.gifbin0 -> 917 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/box/corners-blue.gifbin0 -> 1010 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/box/corners.gifbin0 -> 1005 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/box/l-blue.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/box/l.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/box/r-blue.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/box/r.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/box/tb-blue.gifbin0 -> 851 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/box/tb.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/button/btn-arrow.gifbin0 -> 870 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/button/btn-sprite.gifbin0 -> 1341 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/dd/drop-add.gifbin0 -> 1001 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/dd/drop-no.gifbin0 -> 949 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/dd/drop-yes.gifbin0 -> 1016 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/editor/tb-sprite.gifbin0 -> 2072 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/checkbox.gifbin0 -> 2061 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/clear-trigger.gifbin0 -> 1988 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/clear-trigger.psdbin0 -> 11804 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/date-trigger.gifbin0 -> 1603 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/date-trigger.psdbin0 -> 12377 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/error-tip-corners.gifbin0 -> 4183 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/exclamation.gifbin0 -> 996 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/radio.gifbin0 -> 1746 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/search-trigger.gifbin0 -> 2182 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/search-trigger.psdbin0 -> 15601 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/text-bg.gifbin0 -> 819 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/trigger-tpl.gifbin0 -> 1487 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/trigger.gifbin0 -> 1816 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/form/trigger.psdbin0 -> 10829 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/gradient-bg.gifbin0 -> 1472 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/arrow-left-white.gifbin0 -> 825 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/arrow-right-white.gifbin0 -> 825 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/col-move-bottom.gifbin0 -> 868 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/col-move-top.gifbin0 -> 869 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/columns.gifbin0 -> 962 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/dirty.gifbin0 -> 832 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/done.gifbin0 -> 133 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/drop-no.gifbin0 -> 947 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/drop-yes.gifbin0 -> 860 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/footer-bg.gifbin0 -> 834 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid-blue-hd.gifbin0 -> 829 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid-blue-split.gifbin0 -> 817 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid-hrow.gifbin0 -> 855 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid-loading.gifbin0 -> 701 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid-split.gifbin0 -> 817 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid-vista-hd.gifbin0 -> 829 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid3-hd-btn.gifbin0 -> 1229 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid3-hrow-over.gifbin0 -> 823 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid3-hrow.gifbin0 -> 836 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid3-special-col-bg.gifbin0 -> 837 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/grid3-special-col-sel-bg.gifbin0 -> 843 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/group-by.gifbin0 -> 917 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/group-expand-sprite.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hd-pop.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hmenu-asc.gifbin0 -> 931 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hmenu-desc.gifbin0 -> 930 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.pngbin0 -> 588 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.gifbin0 -> 971 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.pngbin0 -> 650 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/invalid_line.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/loading.gifbin0 -> 771 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/mso-hd.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/nowait.gifbin0 -> 884 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/page-first-disabled.gifbin0 -> 925 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/page-first.gifbin0 -> 925 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/page-last-disabled.gifbin0 -> 923 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/page-last.gifbin0 -> 923 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/page-next-disabled.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/page-next.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/page-prev-disabled.gifbin0 -> 879 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/page-prev.gifbin0 -> 879 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/pick-button.gifbin0 -> 1036 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/refresh.gifbin0 -> 977 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/row-check-sprite.gifbin0 -> 1083 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/row-expand-sprite.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/row-over.gifbin0 -> 823 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/row-sel.gifbin0 -> 823 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/sort_asc.gifbin0 -> 830 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/sort_desc.gifbin0 -> 833 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/wait.gifbin0 -> 1100 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/collapse.gifbin0 -> 842 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/expand.gifbin0 -> 842 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/gradient-bg.gifbin0 -> 1472 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/mini-bottom.gifbin0 -> 856 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/mini-left.gifbin0 -> 871 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/mini-right.gifbin0 -> 872 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/mini-top.gifbin0 -> 856 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/ns-collapse.gifbin0 -> 842 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/ns-expand.gifbin0 -> 843 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/panel-close.gifbin0 -> 829 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/panel-title-bg.gifbin0 -> 838 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/panel-title-light-bg.gifbin0 -> 835 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/stick.gifbin0 -> 874 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/stuck.gifbin0 -> 92 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/tab-close-on.gifbin0 -> 880 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/layout/tab-close.gifbin0 -> 859 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/menu/checked.gifbin0 -> 959 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/menu/group-checked.gifbin0 -> 891 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/menu/item-over.gifbin0 -> 820 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/menu/menu-parent.gifbin0 -> 854 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/menu/menu.gifbin0 -> 834 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/menu/unchecked.gifbin0 -> 941 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/corners-sprite.gifbin0 -> 1418 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/left-right.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/light-hd.gifbin0 -> 827 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/tool-sprite-tpl.gifbin0 -> 971 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/tool-sprites.gifbin0 -> 4158 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/tools-sprites-trans.gifbin0 -> 2640 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.pngbin0 -> 216 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/white-corners-sprite.gifbin0 -> 1366 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/white-left-right.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/white-top-bottom.gifbin0 -> 872 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/progress/progress-bg.gifbin0 -> 834 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/qtip/bg.gifbin0 -> 1091 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/qtip/close.gifbin0 -> 972 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/qtip/tip-sprite.gifbin0 -> 4271 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/s.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shadow-c.pngbin0 -> 108 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shadow-c.psdbin0 -> 23266 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shadow-lr.pngbin0 -> 125 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shadow.pngbin0 -> 260 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/blue-loading.gifbin0 -> 3236 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/calendar.gifbin0 -> 979 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/glass-bg.gifbin0 -> 873 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/hd-sprite.gifbin0 -> 1099 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/large-loading.gifbin0 -> 3236 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/left-btn.gifbin0 -> 870 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/loading-balls.gifbin0 -> 2118 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/right-btn.gifbin0 -> 871 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shared/warning.gifbin0 -> 960 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/e-handle-dark.gifbin0 -> 1062 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/e-handle.gifbin0 -> 1586 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/ne-handle-dark.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/ne-handle.gifbin0 -> 854 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/nw-handle-dark.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/nw-handle.gifbin0 -> 853 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/s-handle-dark.gifbin0 -> 1060 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/s-handle.gifbin0 -> 1318 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/se-handle-dark.gifbin0 -> 838 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/se-handle.gifbin0 -> 853 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/square.gifbin0 -> 864 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/sw-handle-dark.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/sizer/sw-handle.gifbin0 -> 855 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.pngbin0 -> 288 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.pngbin0 -> 731 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.pngbin0 -> 273 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.pngbin0 -> 688 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/scroll-left.gifbin0 -> 1295 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/scroll-right.gifbin0 -> 1300 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/scroller-bg.gifbin0 -> 1100 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-inactive-left-bg.gifbin0 -> 886 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-inactive-right-bg.gifbin0 -> 1386 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-left-bg.gifbin0 -> 863 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-right-bg.gifbin0 -> 1402 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-close.gifbin0 -> 896 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.gifbin0 -> 835 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.pngbin0 -> 207 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-btm-bg.gifbin0 -> 826 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tabs-sprite.gifbin0 -> 2120 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/toolbar/bg.gifbin0 -> 904 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/toolbar/btn-arrow-light.gifbin0 -> 916 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/toolbar/btn-arrow.gifbin0 -> 919 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/toolbar/btn-over-bg.gifbin0 -> 837 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/toolbar/gray-bg.gifbin0 -> 832 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/toolbar/tb-bg.gifbin0 -> 862 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/toolbar/tb-btn-sprite.gifbin0 -> 1127 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/arrows.gifbin0 -> 1024 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/drop-add.gifbin0 -> 1001 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/drop-between.gifbin0 -> 907 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/drop-no.gifbin0 -> 949 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/drop-over.gifbin0 -> 911 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/drop-under.gifbin0 -> 911 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/drop-yes.gifbin0 -> 1016 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-minus-nl.gifbin0 -> 898 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-minus.gifbin0 -> 905 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-plus-nl.gifbin0 -> 900 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-plus.gifbin0 -> 907 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-end.gifbin0 -> 844 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-line.gifbin0 -> 846 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-minus-nl.gifbin0 -> 898 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-minus.gifbin0 -> 908 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-plus-nl.gifbin0 -> 900 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow-plus.gifbin0 -> 910 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/elbow.gifbin0 -> 850 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/folder-open.gifbin0 -> 956 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/folder.gifbin0 -> 952 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/leaf.gifbin0 -> 945 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/loading.gifbin0 -> 771 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tree/s.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/icon-error.gifbin0 -> 1669 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/icon-info.gifbin0 -> 1586 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/icon-question.gifbin0 -> 1607 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/icon-warning.gifbin0 -> 1483 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/left-corners.pngbin0 -> 247 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/left-corners.psdbin0 -> 15576 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/left-right.pngbin0 -> 123 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/left-right.psdbin0 -> 25060 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/right-corners.pngbin0 -> 300 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/right-corners.psdbin0 -> 15530 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/top-bottom.pngbin0 -> 199 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/top-bottom.psdbin0 -> 32214 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/inherited.gifbin0 -> 881 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/member-collapsed.gifbin0 -> 856 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/member-expanded.gifbin0 -> 845 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/member-hover.gifbin0 -> 861 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/method.gifbin0 -> 931 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/minus.gifbin0 -> 904 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/pkg-closed.gifbin0 -> 1037 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/pkg-open.gifbin0 -> 1040 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/pkg.gifbin0 -> 936 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/plus.gifbin0 -> 912 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/prettify/prettify.css1
-rw-r--r--deluge/ui/web/docs/template/resources/prettify/prettify.js25
-rw-r--r--deluge/ui/web/docs/template/resources/print.css206
-rw-r--r--deluge/ui/web/docs/template/resources/print.gifbin0 -> 1032 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/prop.gifbin0 -> 923 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/reset.css7
-rw-r--r--deluge/ui/web/docs/template/resources/s.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/static.gifbin0 -> 962 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/style.css360
-rw-r--r--deluge/ui/web/docs/template/resources/tabs.gifbin0 -> 917 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/tree-bg.gifbin0 -> 1925 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/wel-bg.gifbin0 -> 991 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/welcome-bg.gifbin0 -> 1925 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/welcome.css25
-rw-r--r--deluge/ui/web/docs/template/source-wrap.html10
-rw-r--r--deluge/ui/web/docs/template/template.xml11
-rw-r--r--deluge/ui/web/docs/template/tpl/class.xsl405
-rw-r--r--deluge/ui/web/docs/template/tpl/tree.xsl45
-rw-r--r--deluge/ui/web/docs/template/welcome.html47
-rw-r--r--deluge/ui/web/icons/active.pngbin0 -> 411 bytes
-rw-r--r--deluge/ui/web/icons/add.pngbin0 -> 337 bytes
-rw-r--r--deluge/ui/web/icons/add_file.pngbin0 -> 506 bytes
-rw-r--r--deluge/ui/web/icons/add_url.pngbin0 -> 806 bytes
-rw-r--r--deluge/ui/web/icons/alert.pngbin0 -> 331 bytes
-rw-r--r--deluge/ui/web/icons/all.pngbin0 -> 533 bytes
-rw-r--r--deluge/ui/web/icons/back.pngbin0 -> 420 bytes
-rw-r--r--deluge/ui/web/icons/bottom.pngbin0 -> 332 bytes
-rw-r--r--deluge/ui/web/icons/checking.pngbin0 -> 323 bytes
-rw-r--r--deluge/ui/web/icons/connection_manager.pngbin0 -> 463 bytes
-rw-r--r--deluge/ui/web/icons/connections.pngbin0 -> 543 bytes
-rw-r--r--deluge/ui/web/icons/create.pngbin0 -> 528 bytes
-rw-r--r--deluge/ui/web/icons/deluge-192.pngbin0 -> 2191 bytes
-rw-r--r--deluge/ui/web/icons/deluge-32.pngbin0 -> 597 bytes
-rw-r--r--deluge/ui/web/icons/deluge-512.pngbin0 -> 5090 bytes
-rw-r--r--deluge/ui/web/icons/deluge-apple-180.pngbin0 -> 1984 bytes
-rw-r--r--deluge/ui/web/icons/deluge.pngbin0 -> 418 bytes
-rw-r--r--deluge/ui/web/icons/dht.pngbin0 -> 515 bytes
-rw-r--r--deluge/ui/web/icons/document.pngbin0 -> 381 bytes
-rw-r--r--deluge/ui/web/icons/down.pngbin0 -> 408 bytes
-rw-r--r--deluge/ui/web/icons/downloading.pngbin0 -> 356 bytes
-rw-r--r--deluge/ui/web/icons/drive.pngbin0 -> 356 bytes
-rw-r--r--deluge/ui/web/icons/edit_trackers.pngbin0 -> 578 bytes
-rw-r--r--deluge/ui/web/icons/error.pngbin0 -> 727 bytes
-rw-r--r--deluge/ui/web/icons/expand_all.pngbin0 -> 582 bytes
-rw-r--r--deluge/ui/web/icons/favicon.icobin0 -> 15086 bytes
-rw-r--r--deluge/ui/web/icons/find_more.pngbin0 -> 532 bytes
-rw-r--r--deluge/ui/web/icons/forward.pngbin0 -> 419 bytes
-rw-r--r--deluge/ui/web/icons/help.pngbin0 -> 767 bytes
-rw-r--r--deluge/ui/web/icons/high.pngbin0 -> 495 bytes
-rw-r--r--deluge/ui/web/icons/home.pngbin0 -> 533 bytes
-rw-r--r--deluge/ui/web/icons/inactive.pngbin0 -> 283 bytes
-rw-r--r--deluge/ui/web/icons/install_plugin.pngbin0 -> 671 bytes
-rw-r--r--deluge/ui/web/icons/login.pngbin0 -> 460 bytes
-rw-r--r--deluge/ui/web/icons/logout.pngbin0 -> 588 bytes
-rw-r--r--deluge/ui/web/icons/low.pngbin0 -> 344 bytes
-rw-r--r--deluge/ui/web/icons/magnet.pngbin0 -> 345 bytes
-rw-r--r--deluge/ui/web/icons/magnet_add.pngbin0 -> 414 bytes
-rw-r--r--deluge/ui/web/icons/magnet_copy.pngbin0 -> 469 bytes
-rw-r--r--deluge/ui/web/icons/move.pngbin0 -> 511 bytes
-rw-r--r--deluge/ui/web/icons/no_download.pngbin0 -> 569 bytes
-rw-r--r--deluge/ui/web/icons/normal.pngbin0 -> 419 bytes
-rw-r--r--deluge/ui/web/icons/ok.pngbin0 -> 760 bytes
-rw-r--r--deluge/ui/web/icons/pause.pngbin0 -> 301 bytes
-rw-r--r--deluge/ui/web/icons/preferences.pngbin0 -> 676 bytes
-rw-r--r--deluge/ui/web/icons/queue.pngbin0 -> 413 bytes
-rw-r--r--deluge/ui/web/icons/queued.pngbin0 -> 341 bytes
-rw-r--r--deluge/ui/web/icons/recheck.pngbin0 -> 532 bytes
-rw-r--r--deluge/ui/web/icons/remove.pngbin0 -> 189 bytes
-rw-r--r--deluge/ui/web/icons/seeding.pngbin0 -> 332 bytes
-rw-r--r--deluge/ui/web/icons/start.pngbin0 -> 344 bytes
-rw-r--r--deluge/ui/web/icons/top.pngbin0 -> 303 bytes
-rw-r--r--deluge/ui/web/icons/traffic.pngbin0 -> 359 bytes
-rw-r--r--deluge/ui/web/icons/up.pngbin0 -> 407 bytes
-rw-r--r--deluge/ui/web/icons/update.pngbin0 -> 663 bytes
-rw-r--r--deluge/ui/web/icons/upload_slots.pngbin0 -> 409 bytes
-rw-r--r--deluge/ui/web/icons/warning.pngbin0 -> 510 bytes
-rw-r--r--deluge/ui/web/images/s.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/images/spinner-split.gifbin0 -> 49 bytes
-rw-r--r--deluge/ui/web/images/spinner.gifbin0 -> 3186 bytes
-rw-r--r--deluge/ui/web/index.html48
-rw-r--r--deluge/ui/web/js/deluge-all/.order2
-rw-r--r--deluge/ui/web/js/deluge-all/AboutWindow.js128
-rw-r--r--deluge/ui/web/js/deluge-all/AddConnectionWindow.js117
-rw-r--r--deluge/ui/web/js/deluge-all/AddTrackerWindow.js86
-rw-r--r--deluge/ui/web/js/deluge-all/Client.js199
-rw-r--r--deluge/ui/web/js/deluge-all/ConnectionManager.js442
-rw-r--r--deluge/ui/web/js/deluge-all/CopyMagnetWindow.js73
-rw-r--r--deluge/ui/web/js/deluge-all/Deluge.js179
-rw-r--r--deluge/ui/web/js/deluge-all/EditConnectionWindow.js128
-rw-r--r--deluge/ui/web/js/deluge-all/EditTrackerWindow.js74
-rw-r--r--deluge/ui/web/js/deluge-all/EditTrackersWindow.js234
-rw-r--r--deluge/ui/web/js/deluge-all/EventsManager.js118
-rw-r--r--deluge/ui/web/js/deluge-all/FileBrowser.js43
-rw-r--r--deluge/ui/web/js/deluge-all/FilterPanel.js175
-rw-r--r--deluge/ui/web/js/deluge-all/Formatters.js206
-rw-r--r--deluge/ui/web/js/deluge-all/Keys.js138
-rw-r--r--deluge/ui/web/js/deluge-all/LoginWindow.js134
-rw-r--r--deluge/ui/web/js/deluge-all/Menus.js398
-rw-r--r--deluge/ui/web/js/deluge-all/MoveStorage.js85
-rw-r--r--deluge/ui/web/js/deluge-all/MultiOptionsManager.js218
-rw-r--r--deluge/ui/web/js/deluge-all/OptionsManager.js279
-rw-r--r--deluge/ui/web/js/deluge-all/OtherLimitWindow.js79
-rw-r--r--deluge/ui/web/js/deluge-all/Plugin.js106
-rw-r--r--deluge/ui/web/js/deluge-all/RemoveWindow.js77
-rw-r--r--deluge/ui/web/js/deluge-all/Sidebar.js146
-rw-r--r--deluge/ui/web/js/deluge-all/Statusbar.js362
-rw-r--r--deluge/ui/web/js/deluge-all/StatusbarMenu.js79
-rw-r--r--deluge/ui/web/js/deluge-all/Toolbar.js206
-rw-r--r--deluge/ui/web/js/deluge-all/TorrentGrid.js516
-rw-r--r--deluge/ui/web/js/deluge-all/UI.js311
-rw-r--r--deluge/ui/web/js/deluge-all/add/.order1
-rw-r--r--deluge/ui/web/js/deluge-all/add/AddWindow.js332
-rw-r--r--deluge/ui/web/js/deluge-all/add/FilesTab.js100
-rw-r--r--deluge/ui/web/js/deluge-all/add/Infohash.js10
-rw-r--r--deluge/ui/web/js/deluge-all/add/OptionsPanel.js145
-rw-r--r--deluge/ui/web/js/deluge-all/add/OptionsTab.js217
-rw-r--r--deluge/ui/web/js/deluge-all/add/UrlWindow.js112
-rw-r--r--deluge/ui/web/js/deluge-all/add/Window.js29
-rw-r--r--deluge/ui/web/js/deluge-all/data/.order1
-rw-r--r--deluge/ui/web/js/deluge-all/data/PeerRecord.js53
-rw-r--r--deluge/ui/web/js/deluge-all/data/SortTypes.js37
-rw-r--r--deluge/ui/web/js/deluge-all/data/TorrentRecord.js121
-rw-r--r--deluge/ui/web/js/deluge-all/details/DetailsPanel.js81
-rw-r--r--deluge/ui/web/js/deluge-all/details/DetailsTab.js100
-rw-r--r--deluge/ui/web/js/deluge-all/details/FilesTab.js236
-rw-r--r--deluge/ui/web/js/deluge-all/details/OptionsTab.js417
-rw-r--r--deluge/ui/web/js/deluge-all/details/PeersTab.js166
-rw-r--r--deluge/ui/web/js/deluge-all/details/StatusTab.js155
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js202
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/CachePage.js61
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/DaemonPage.js85
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js124
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js99
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js83
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/InterfacePage.js358
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/NetworkPage.js257
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/OtherPage.js100
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/PluginsPage.js277
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js245
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/ProxyField.js225
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/ProxyPage.js62
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/QueuePage.js234
-rw-r--r--deluge/ui/web/js/extjs/ext-all-debug.js52270
-rw-r--r--deluge/ui/web/js/extjs/ext-all.js21
-rw-r--r--deluge/ui/web/js/extjs/ext-base-debug.js3352
-rw-r--r--deluge/ui/web/js/extjs/ext-base.js21
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/JSLoader.js40
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/Spinner.js474
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/StatusBar.js422
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/form/FileUploadField.js208
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/form/RadioGroupFix.js50
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/form/SpinnerField.js68
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/form/SpinnerFieldFix.js13
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/form/SpinnerGroup.js205
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/form/ToggleField.js72
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/grid/BufferView.js270
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/layout/FormLayoutFix.js39
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/MultiSelectionModelFix.js68
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/TreeGrid.js468
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridColumnResizer.js123
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridColumns.js40
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridLoader.js18
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridNodeUI.js149
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridNodeUIFix.js33
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridRenderColumn.js9
-rw-r--r--deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridSorter.js158
-rw-r--r--deluge/ui/web/json_api.py1022
-rw-r--r--deluge/ui/web/pluginmanager.py153
-rw-r--r--deluge/ui/web/render/404.html10
-rw-r--r--deluge/ui/web/render/tab_status.html29
-rw-r--r--deluge/ui/web/server.py823
-rw-r--r--deluge/ui/web/themes/css/xtheme-access.css1933
-rw-r--r--deluge/ui/web/themes/css/xtheme-blue.css1793
-rw-r--r--deluge/ui/web/themes/css/xtheme-gray.css1791
-rw-r--r--deluge/ui/web/themes/images/access/box/corners-blue.gifbin0 -> 1010 bytes
-rw-r--r--deluge/ui/web/themes/images/access/box/corners.gifbin0 -> 1005 bytes
-rw-r--r--deluge/ui/web/themes/images/access/box/l-blue.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/access/box/l.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/access/box/r-blue.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/access/box/r.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/access/box/tb-blue.gifbin0 -> 843 bytes
-rw-r--r--deluge/ui/web/themes/images/access/box/tb.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/arrow.gifbin0 -> 833 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/btn.gifbin0 -> 2871 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/group-cs.gifbin0 -> 2459 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/group-lr.gifbin0 -> 861 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/group-tb.gifbin0 -> 70 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/s-arrow-b-noline.gifbin0 -> 904 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/s-arrow-b.gifbin0 -> 943 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/s-arrow-bo.gifbin0 -> 961 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/s-arrow-noline.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/s-arrow-o.gifbin0 -> 155 bytes
-rw-r--r--deluge/ui/web/themes/images/access/button/s-arrow.gifbin0 -> 956 bytes
-rw-r--r--deluge/ui/web/themes/images/access/editor/tb-sprite.gifbin0 -> 1994 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/checkbox.gifbin0 -> 2061 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/clear-trigger.gifbin0 -> 2027 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/clear-trigger.psdbin0 -> 41047 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/date-trigger.gifbin0 -> 1620 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/date-trigger.psdbin0 -> 46095 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/error-tip-corners.gifbin0 -> 4183 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/exclamation.gifbin0 -> 614 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/radio.gifbin0 -> 1746 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/search-trigger.gifbin0 -> 1534 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/search-trigger.psdbin0 -> 49761 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/text-bg.gifbin0 -> 66 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/trigger-tpl.gifbin0 -> 908 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/trigger.gifbin0 -> 1451 bytes
-rw-r--r--deluge/ui/web/themes/images/access/form/trigger.psdbin0 -> 44793 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/arrow-left-white.gifbin0 -> 825 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/arrow-right-white.gifbin0 -> 825 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/col-move-bottom.gifbin0 -> 868 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/col-move-top.gifbin0 -> 869 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/columns.gifbin0 -> 962 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/dirty.gifbin0 -> 68 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/done.gifbin0 -> 133 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/drop-no.gifbin0 -> 947 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/drop-yes.gifbin0 -> 860 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/footer-bg.gifbin0 -> 834 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid-blue-hd.gifbin0 -> 829 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid-blue-split.gifbin0 -> 47 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid-hrow.gifbin0 -> 855 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid-loading.gifbin0 -> 701 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid-split.gifbin0 -> 817 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid-vista-hd.gifbin0 -> 829 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid3-hd-btn.gifbin0 -> 419 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid3-hrow-over.gifbin0 -> 268 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid3-hrow.gifbin0 -> 164 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid3-special-col-bg.gifbin0 -> 162 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/grid3-special-col-sel-bg.gifbin0 -> 162 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/group-by.gifbin0 -> 917 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/group-collapse.gifbin0 -> 77 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/group-expand-sprite.gifbin0 -> 131 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/group-expand.gifbin0 -> 82 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/hd-pop.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/hmenu-asc.gifbin0 -> 931 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/hmenu-desc.gifbin0 -> 930 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/hmenu-lock.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/hmenu-lock.pngbin0 -> 477 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/hmenu-unlock.gifbin0 -> 971 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/hmenu-unlock.pngbin0 -> 539 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/invalid_line.gifbin0 -> 46 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/loading.gifbin0 -> 771 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/mso-hd.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/nowait.gifbin0 -> 884 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/page-first-disabled.gifbin0 -> 340 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/page-first.gifbin0 -> 96 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/page-last-disabled.gifbin0 -> 340 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/page-last.gifbin0 -> 96 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/page-next-disabled.gifbin0 -> 195 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/page-next.gifbin0 -> 82 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/page-prev-disabled.gifbin0 -> 197 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/page-prev.gifbin0 -> 82 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/pick-button.gifbin0 -> 1036 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/refresh.gifbin0 -> 91 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/row-check-sprite.gifbin0 -> 1083 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/row-expand-sprite.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/row-over.gifbin0 -> 823 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/row-sel.gifbin0 -> 823 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/sort-hd.gifbin0 -> 2075 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/sort_asc.gifbin0 -> 74 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/sort_desc.gifbin0 -> 73 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/wait.gifbin0 -> 1100 bytes
-rw-r--r--deluge/ui/web/themes/images/access/menu/checked.gifbin0 -> 959 bytes
-rw-r--r--deluge/ui/web/themes/images/access/menu/group-checked.gifbin0 -> 856 bytes
-rw-r--r--deluge/ui/web/themes/images/access/menu/item-over.gifbin0 -> 820 bytes
-rw-r--r--deluge/ui/web/themes/images/access/menu/menu-parent.gifbin0 -> 73 bytes
-rw-r--r--deluge/ui/web/themes/images/access/menu/menu.gifbin0 -> 826 bytes
-rw-r--r--deluge/ui/web/themes/images/access/menu/unchecked.gifbin0 -> 941 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/corners-sprite.gifbin0 -> 577 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/left-right.gifbin0 -> 52 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/light-hd.gifbin0 -> 161 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/tool-sprite-tpl.gifbin0 -> 971 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/tool-sprites.gifbin0 -> 1981 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/tools-sprites-trans.gifbin0 -> 2843 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/top-bottom.gifbin0 -> 116 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/white-corners-sprite.gifbin0 -> 1366 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/white-left-right.gifbin0 -> 52 bytes
-rw-r--r--deluge/ui/web/themes/images/access/panel/white-top-bottom.gifbin0 -> 115 bytes
-rw-r--r--deluge/ui/web/themes/images/access/progress/progress-bg.gifbin0 -> 151 bytes
-rw-r--r--deluge/ui/web/themes/images/access/qtip/close.gifbin0 -> 972 bytes
-rw-r--r--deluge/ui/web/themes/images/access/qtip/tip-anchor-sprite.gifbin0 -> 951 bytes
-rw-r--r--deluge/ui/web/themes/images/access/qtip/tip-sprite.gifbin0 -> 3376 bytes
-rw-r--r--deluge/ui/web/themes/images/access/shared/glass-bg.gifbin0 -> 103 bytes
-rw-r--r--deluge/ui/web/themes/images/access/shared/hd-sprite.gifbin0 -> 673 bytes
-rw-r--r--deluge/ui/web/themes/images/access/shared/left-btn.gifbin0 -> 77 bytes
-rw-r--r--deluge/ui/web/themes/images/access/shared/right-btn.gifbin0 -> 79 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/e-handle-dark.gifbin0 -> 248 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/e-handle.gifbin0 -> 753 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/ne-handle-dark.gifbin0 -> 66 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/ne-handle.gifbin0 -> 115 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/nw-handle-dark.gifbin0 -> 66 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/nw-handle.gifbin0 -> 114 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/s-handle-dark.gifbin0 -> 246 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/s-handle.gifbin0 -> 494 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/se-handle-dark.gifbin0 -> 65 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/se-handle.gifbin0 -> 114 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/square.gifbin0 -> 123 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/sw-handle-dark.gifbin0 -> 66 bytes
-rw-r--r--deluge/ui/web/themes/images/access/sizer/sw-handle.gifbin0 -> 116 bytes
-rw-r--r--deluge/ui/web/themes/images/access/slider/slider-bg.pngbin0 -> 169 bytes
-rw-r--r--deluge/ui/web/themes/images/access/slider/slider-thumb.pngbin0 -> 500 bytes
-rw-r--r--deluge/ui/web/themes/images/access/slider/slider-v-bg.pngbin0 -> 154 bytes
-rw-r--r--deluge/ui/web/themes/images/access/slider/slider-v-thumb.pngbin0 -> 478 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/scroll-left.gifbin0 -> 996 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/scroll-right.gifbin0 -> 999 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/tab-btm-inactive-left-bg.gifbin0 -> 130 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/tab-btm-inactive-right-bg.gifbin0 -> 513 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/tab-btm-left-bg.gifbin0 -> 512 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/tab-btm-right-bg.gifbin0 -> 117 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/tab-close.gifbin0 -> 76 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/tab-strip-bg.gifbin0 -> 827 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/tab-strip-btm-bg.gifbin0 -> 70 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tabs/tabs-sprite.gifbin0 -> 1221 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/bg.gifbin0 -> 82 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/btn-arrow-light.gifbin0 -> 916 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/btn-arrow.gifbin0 -> 919 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/btn-over-bg.gifbin0 -> 837 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/gray-bg.gifbin0 -> 832 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/more.gifbin0 -> 67 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/s-arrow-bo.gifbin0 -> 186 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/tb-btn-sprite.gifbin0 -> 1127 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/tb-xl-btn-sprite.gifbin0 -> 1663 bytes
-rw-r--r--deluge/ui/web/themes/images/access/toolbar/tb-xl-sep.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/arrows.gifbin0 -> 183 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/drop-add.gifbin0 -> 1001 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/drop-between.gifbin0 -> 907 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/drop-no.gifbin0 -> 949 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/drop-over.gifbin0 -> 911 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/drop-under.gifbin0 -> 911 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/drop-yes.gifbin0 -> 1016 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-end-minus-nl.gifbin0 -> 86 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-end-minus.gifbin0 -> 104 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-end-plus-nl.gifbin0 -> 89 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-end-plus.gifbin0 -> 108 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-end.gifbin0 -> 844 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-line.gifbin0 -> 846 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-minus-nl.gifbin0 -> 86 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-minus.gifbin0 -> 106 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-plus-nl.gifbin0 -> 89 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow-plus.gifbin0 -> 111 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/elbow.gifbin0 -> 850 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/folder-open.gifbin0 -> 342 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/folder.gifbin0 -> 340 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/leaf.gifbin0 -> 945 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/loading.gifbin0 -> 771 bytes
-rw-r--r--deluge/ui/web/themes/images/access/tree/s.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/icon-error.gifbin0 -> 256 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/icon-info.gifbin0 -> 172 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/icon-question.gifbin0 -> 217 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/icon-warning.gifbin0 -> 173 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/left-corners.pngbin0 -> 137 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/left-right.pngbin0 -> 83 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/right-corners.pngbin0 -> 137 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/top-bottom.pngbin0 -> 104 bytes
-rw-r--r--deluge/ui/web/themes/images/default/box/corners-blue.gifbin0 -> 1010 bytes
-rw-r--r--deluge/ui/web/themes/images/default/box/corners.gifbin0 -> 1005 bytes
-rw-r--r--deluge/ui/web/themes/images/default/box/l-blue.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/default/box/l.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/default/box/r-blue.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/default/box/r.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/default/box/tb-blue.gifbin0 -> 851 bytes
-rw-r--r--deluge/ui/web/themes/images/default/box/tb.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/arrow.gifbin0 -> 828 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/btn.gifbin0 -> 4298 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/group-cs.gifbin0 -> 2459 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/group-lr.gifbin0 -> 861 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/group-tb.gifbin0 -> 846 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/s-arrow-b-noline.gifbin0 -> 898 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/s-arrow-b.gifbin0 -> 937 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/s-arrow-bo.gifbin0 -> 139 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/s-arrow-noline.gifbin0 -> 863 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/s-arrow-o.gifbin0 -> 937 bytes
-rw-r--r--deluge/ui/web/themes/images/default/button/s-arrow.gifbin0 -> 937 bytes
-rw-r--r--deluge/ui/web/themes/images/default/dd/drop-add.gifbin0 -> 1001 bytes
-rw-r--r--deluge/ui/web/themes/images/default/dd/drop-no.gifbin0 -> 949 bytes
-rw-r--r--deluge/ui/web/themes/images/default/dd/drop-yes.gifbin0 -> 1016 bytes
-rw-r--r--deluge/ui/web/themes/images/default/editor/tb-sprite.gifbin0 -> 2072 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/checkbox.gifbin0 -> 2061 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/clear-trigger.gifbin0 -> 1988 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/clear-trigger.psdbin0 -> 11804 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/date-trigger.gifbin0 -> 1603 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/date-trigger.psdbin0 -> 12377 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/error-tip-corners.gifbin0 -> 4183 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/exclamation.gifbin0 -> 996 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/radio.gifbin0 -> 1746 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/search-trigger.gifbin0 -> 2182 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/search-trigger.psdbin0 -> 15601 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/text-bg.gifbin0 -> 819 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/trigger-square.gifbin0 -> 1810 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/trigger-square.psdbin0 -> 36542 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/trigger-tpl.gifbin0 -> 1487 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/trigger.gifbin0 -> 1816 bytes
-rw-r--r--deluge/ui/web/themes/images/default/form/trigger.psdbin0 -> 37599 bytes
-rw-r--r--deluge/ui/web/themes/images/default/gradient-bg.gifbin0 -> 1472 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/arrow-left-white.gifbin0 -> 825 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/arrow-right-white.gifbin0 -> 825 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/col-move-bottom.gifbin0 -> 868 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/col-move-top.gifbin0 -> 869 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/columns.gifbin0 -> 962 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/dirty.gifbin0 -> 832 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/done.gifbin0 -> 133 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/drop-no.gifbin0 -> 947 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/drop-yes.gifbin0 -> 860 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/footer-bg.gifbin0 -> 834 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid-blue-hd.gifbin0 -> 829 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid-blue-split.gifbin0 -> 817 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid-hrow.gifbin0 -> 855 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid-loading.gifbin0 -> 701 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid-split.gifbin0 -> 817 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid-vista-hd.gifbin0 -> 829 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid3-hd-btn.gifbin0 -> 1229 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid3-hrow-over.gifbin0 -> 823 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid3-hrow.gifbin0 -> 836 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid3-rowheader.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid3-special-col-bg.gifbin0 -> 837 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/grid3-special-col-sel-bg.gifbin0 -> 843 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/group-by.gifbin0 -> 917 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/group-collapse.gifbin0 -> 881 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/group-expand-sprite.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/group-expand.gifbin0 -> 884 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hd-pop.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hmenu-asc.gifbin0 -> 931 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hmenu-desc.gifbin0 -> 930 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hmenu-lock.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hmenu-lock.pngbin0 -> 477 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hmenu-unlock.gifbin0 -> 971 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hmenu-unlock.pngbin0 -> 539 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/invalid_line.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/loading.gifbin0 -> 771 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/mso-hd.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/nowait.gifbin0 -> 884 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/page-first-disabled.gifbin0 -> 925 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/page-first.gifbin0 -> 925 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/page-last-disabled.gifbin0 -> 923 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/page-last.gifbin0 -> 923 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/page-next-disabled.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/page-next.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/page-prev-disabled.gifbin0 -> 879 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/page-prev.gifbin0 -> 879 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/pick-button.gifbin0 -> 1036 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/refresh-disabled.gifbin0 -> 577 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/refresh.gifbin0 -> 977 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/row-check-sprite.gifbin0 -> 1083 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/row-expand-sprite.gifbin0 -> 955 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/row-over.gifbin0 -> 823 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/row-sel.gifbin0 -> 823 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/sort-hd.gifbin0 -> 1473 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/sort_asc.gifbin0 -> 830 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/sort_desc.gifbin0 -> 833 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/wait.gifbin0 -> 1100 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/collapse.gifbin0 -> 842 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/expand.gifbin0 -> 842 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/gradient-bg.gifbin0 -> 1472 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/mini-bottom.gifbin0 -> 856 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/mini-left.gifbin0 -> 871 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/mini-right.gifbin0 -> 872 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/mini-top.gifbin0 -> 856 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/ns-collapse.gifbin0 -> 842 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/ns-expand.gifbin0 -> 843 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/panel-close.gifbin0 -> 829 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/panel-title-bg.gifbin0 -> 838 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/panel-title-light-bg.gifbin0 -> 835 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/stick.gifbin0 -> 874 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/stuck.gifbin0 -> 92 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/tab-close-on.gifbin0 -> 880 bytes
-rw-r--r--deluge/ui/web/themes/images/default/layout/tab-close.gifbin0 -> 859 bytes
-rw-r--r--deluge/ui/web/themes/images/default/menu/checked.gifbin0 -> 959 bytes
-rw-r--r--deluge/ui/web/themes/images/default/menu/group-checked.gifbin0 -> 891 bytes
-rw-r--r--deluge/ui/web/themes/images/default/menu/item-over.gifbin0 -> 820 bytes
-rw-r--r--deluge/ui/web/themes/images/default/menu/menu-parent.gifbin0 -> 854 bytes
-rw-r--r--deluge/ui/web/themes/images/default/menu/menu.gifbin0 -> 834 bytes
-rw-r--r--deluge/ui/web/themes/images/default/menu/unchecked.gifbin0 -> 941 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/corners-sprite.gifbin0 -> 1418 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/left-right.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/light-hd.gifbin0 -> 827 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/tool-sprite-tpl.gifbin0 -> 971 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/tool-sprites.gifbin0 -> 5421 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/tools-sprites-trans.gifbin0 -> 2843 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/top-bottom.gifbin0 -> 875 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/top-bottom.pngbin0 -> 160 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/white-corners-sprite.gifbin0 -> 1366 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/white-left-right.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/themes/images/default/panel/white-top-bottom.gifbin0 -> 872 bytes
-rw-r--r--deluge/ui/web/themes/images/default/progress/progress-bg.gifbin0 -> 834 bytes
-rw-r--r--deluge/ui/web/themes/images/default/qtip/bg.gifbin0 -> 1091 bytes
-rw-r--r--deluge/ui/web/themes/images/default/qtip/close.gifbin0 -> 972 bytes
-rw-r--r--deluge/ui/web/themes/images/default/qtip/tip-anchor-sprite.gifbin0 -> 951 bytes
-rw-r--r--deluge/ui/web/themes/images/default/qtip/tip-sprite.gifbin0 -> 4271 bytes
-rw-r--r--deluge/ui/web/themes/images/default/s.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shadow-c.pngbin0 -> 71 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shadow-lr.pngbin0 -> 88 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shadow.pngbin0 -> 223 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/blue-loading.gifbin0 -> 3236 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/calendar.gifbin0 -> 979 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/glass-bg.gifbin0 -> 873 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/hd-sprite.gifbin0 -> 1099 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/large-loading.gifbin0 -> 3236 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/left-btn.gifbin0 -> 870 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/loading-balls.gifbin0 -> 2118 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/right-btn.gifbin0 -> 871 bytes
-rw-r--r--deluge/ui/web/themes/images/default/shared/warning.gifbin0 -> 960 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/e-handle-dark.gifbin0 -> 1062 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/e-handle.gifbin0 -> 1586 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/ne-handle-dark.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/ne-handle.gifbin0 -> 854 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/nw-handle-dark.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/nw-handle.gifbin0 -> 853 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/s-handle-dark.gifbin0 -> 1060 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/s-handle.gifbin0 -> 1318 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/se-handle-dark.gifbin0 -> 838 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/se-handle.gifbin0 -> 853 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/square.gifbin0 -> 864 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/sw-handle-dark.gifbin0 -> 839 bytes
-rw-r--r--deluge/ui/web/themes/images/default/sizer/sw-handle.gifbin0 -> 855 bytes
-rw-r--r--deluge/ui/web/themes/images/default/slider/slider-bg.pngbin0 -> 176 bytes
-rw-r--r--deluge/ui/web/themes/images/default/slider/slider-thumb.pngbin0 -> 619 bytes
-rw-r--r--deluge/ui/web/themes/images/default/slider/slider-v-bg.pngbin0 -> 161 bytes
-rw-r--r--deluge/ui/web/themes/images/default/slider/slider-v-thumb.pngbin0 -> 576 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/scroll-left.gifbin0 -> 1295 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/scroll-right.gifbin0 -> 1300 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/scroller-bg.gifbin0 -> 1100 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-btm-inactive-left-bg.gifbin0 -> 886 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-btm-inactive-right-bg.gifbin0 -> 1386 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-btm-left-bg.gifbin0 -> 1402 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-btm-over-left-bg.gifbin0 -> 191 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-btm-over-right-bg.gifbin0 -> 638 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-btm-right-bg.gifbin0 -> 863 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-close.gifbin0 -> 896 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-strip-bg.gifbin0 -> 835 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-strip-bg.pngbin0 -> 95 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tab-strip-btm-bg.gifbin0 -> 826 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tabs/tabs-sprite.gifbin0 -> 2120 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/bg.gifbin0 -> 904 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/btn-arrow-light.gifbin0 -> 916 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/btn-arrow.gifbin0 -> 919 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/btn-over-bg.gifbin0 -> 837 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/gray-bg.gifbin0 -> 832 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/more.gifbin0 -> 845 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/tb-bg.gifbin0 -> 862 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/tb-btn-sprite.gifbin0 -> 1127 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/tb-xl-btn-sprite.gifbin0 -> 1663 bytes
-rw-r--r--deluge/ui/web/themes/images/default/toolbar/tb-xl-sep.gifbin0 -> 810 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/arrows.gifbin0 -> 617 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/drop-add.gifbin0 -> 1001 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/drop-between.gifbin0 -> 907 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/drop-no.gifbin0 -> 949 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/drop-over.gifbin0 -> 911 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/drop-under.gifbin0 -> 911 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/drop-yes.gifbin0 -> 1016 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-end-minus-nl.gifbin0 -> 898 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-end-minus.gifbin0 -> 905 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-end-plus-nl.gifbin0 -> 900 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-end-plus.gifbin0 -> 907 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-end.gifbin0 -> 844 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-line.gifbin0 -> 846 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-minus-nl.gifbin0 -> 898 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-minus.gifbin0 -> 908 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-plus-nl.gifbin0 -> 900 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow-plus.gifbin0 -> 910 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/elbow.gifbin0 -> 850 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/folder-open.gifbin0 -> 956 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/folder.gifbin0 -> 952 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/leaf.gifbin0 -> 945 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/loading.gifbin0 -> 771 bytes
-rw-r--r--deluge/ui/web/themes/images/default/tree/s.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/icon-error.gifbin0 -> 1669 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/icon-info.gifbin0 -> 1586 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/icon-question.gifbin0 -> 1607 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/icon-warning.gifbin0 -> 1483 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/left-corners.pngbin0 -> 137 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/left-corners.psdbin0 -> 15576 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/left-right.pngbin0 -> 84 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/left-right.psdbin0 -> 24046 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/right-corners.pngbin0 -> 137 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/right-corners.psdbin0 -> 15530 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/top-bottom.pngbin0 -> 116 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/top-bottom.psdbin0 -> 32128 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/button/btn-arrow.gifbin0 -> 870 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/button/btn-sprite.gifbin0 -> 1222 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/button/btn.gifbin0 -> 3319 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/button/group-cs.gifbin0 -> 2459 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/button/group-lr.gifbin0 -> 861 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/button/group-tb.gifbin0 -> 846 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/button/s-arrow-bo.gifbin0 -> 123 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/button/s-arrow-o.gifbin0 -> 139 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/form/clear-trigger.gifbin0 -> 1425 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/form/date-trigger.gifbin0 -> 929 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/form/search-trigger.gifbin0 -> 2220 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/form/trigger-square.gifbin0 -> 1071 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/form/trigger.gifbin0 -> 1080 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/gradient-bg.gifbin0 -> 1472 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/col-move-bottom.gifbin0 -> 177 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/col-move-top.gifbin0 -> 178 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/grid3-hd-btn.gifbin0 -> 482 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/grid3-hrow-over.gifbin0 -> 56 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/grid3-hrow-over2.gifbin0 -> 107 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/grid3-hrow.gifbin0 -> 836 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/grid3-hrow2.gifbin0 -> 107 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/grid3-special-col-bg.gifbin0 -> 158 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/grid3-special-col-bg2.gifbin0 -> 158 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/grid3-special-col-sel-bg.gifbin0 -> 158 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/group-collapse.gifbin0 -> 136 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/group-expand-sprite.gifbin0 -> 196 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/group-expand.gifbin0 -> 138 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/page-first.gifbin0 -> 327 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/page-last.gifbin0 -> 325 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/page-next.gifbin0 -> 183 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/page-prev.gifbin0 -> 186 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/refresh.gifbin0 -> 570 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/row-expand-sprite.gifbin0 -> 196 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/sort-hd.gifbin0 -> 2731 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/sort_asc.gifbin0 -> 59 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/grid/sort_desc.gifbin0 -> 59 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/menu/group-checked.gifbin0 -> 295 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/menu/item-over-disabled.gifbin0 -> 49 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/menu/item-over.gifbin0 -> 850 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/menu/menu-parent.gifbin0 -> 165 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/corners-sprite.gifbin0 -> 1402 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/left-right.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/light-hd.gifbin0 -> 827 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/tool-sprite-tpl.gifbin0 -> 971 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/tool-sprites.gifbin0 -> 5835 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/tools-sprites-trans.gifbin0 -> 1981 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/top-bottom.gifbin0 -> 871 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/top-bottom.pngbin0 -> 160 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/white-corners-sprite.gifbin0 -> 1365 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/white-left-right.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/panel/white-top-bottom.gifbin0 -> 860 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/progress/progress-bg.gifbin0 -> 107 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/qtip/bg.gifbin0 -> 1024 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/qtip/close.gifbin0 -> 972 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/qtip/tip-anchor-sprite.gifbin0 -> 164 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/qtip/tip-sprite.gifbin0 -> 3241 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/s.gifbin0 -> 43 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/shared/hd-sprite.gifbin0 -> 305 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/shared/left-btn.gifbin0 -> 106 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/shared/right-btn.gifbin0 -> 107 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/sizer/e-handle.gifbin0 -> 753 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/sizer/ne-handle.gifbin0 -> 128 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/sizer/nw-handle.gifbin0 -> 114 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/sizer/s-handle.gifbin0 -> 494 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/sizer/se-handle.gifbin0 -> 114 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/sizer/square.gifbin0 -> 123 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/sizer/sw-handle.gifbin0 -> 116 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/slider/slider-thumb.pngbin0 -> 348 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/slider/slider-v-thumb.pngbin0 -> 333 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/scroll-left.gifbin0 -> 1260 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/scroll-right.gifbin0 -> 1269 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/scroller-bg.gifbin0 -> 1090 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-btm-inactive-left-bg.gifbin0 -> 881 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-btm-inactive-right-bg.gifbin0 -> 1383 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-btm-left-bg.gifbin0 -> 1402 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-btm-over-left-bg.gifbin0 -> 189 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-btm-over-right-bg.gifbin0 -> 635 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-btm-right-bg.gifbin0 -> 863 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-close.gifbin0 -> 896 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.gifbin0 -> 835 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.pngbin0 -> 95 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tab-strip-btm-bg.gifbin0 -> 826 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tabs/tabs-sprite.gifbin0 -> 2109 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/toolbar/bg.gifbin0 -> 854 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/toolbar/btn-arrow-light.gifbin0 -> 916 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/toolbar/btn-arrow.gifbin0 -> 919 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/toolbar/btn-over-bg.gifbin0 -> 837 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/toolbar/gray-bg.gifbin0 -> 815 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/toolbar/more.gifbin0 -> 67 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/toolbar/tb-bg.gifbin0 -> 862 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/toolbar/tb-btn-sprite.gifbin0 -> 1021 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tree/arrows.gifbin0 -> 407 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tree/elbow-end-minus-nl.gifbin0 -> 149 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tree/elbow-end-minus.gifbin0 -> 154 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tree/elbow-end-plus-nl.gifbin0 -> 151 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/tree/elbow-end-plus.gifbin0 -> 156 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/icon-error.gifbin0 -> 1669 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/icon-info.gifbin0 -> 1586 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/icon-question.gifbin0 -> 1607 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/icon-warning.gifbin0 -> 1483 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/left-corners.pngbin0 -> 201 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/left-right.pngbin0 -> 75 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/right-corners.pngbin0 -> 202 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/top-bottom.pngbin0 -> 108 bytes
-rw-r--r--deluge/ui/web/web.py87
-rw-r--r--docs/man/deluge-console.1100
-rw-r--r--docs/man/deluge-gtk.155
-rw-r--r--docs/man/deluge-web.186
-rw-r--r--docs/man/deluge.163
-rw-r--r--docs/man/deluged.178
-rw-r--r--docs/requirements.txt5
l---------docs/source/changelog.md1
-rw-r--r--docs/source/conf.py284
-rw-r--r--docs/source/contributing/code.md124
-rw-r--r--docs/source/contributing/documentation.md14
-rw-r--r--docs/source/contributing/index.md13
-rw-r--r--docs/source/contributing/testing.md50
-rw-r--r--docs/source/contributing/translations.md66
l---------docs/source/depends.md1
-rw-r--r--docs/source/devguide/how-to/curl-jsonrpc.md162
-rw-r--r--docs/source/devguide/how-to/index.md23
-rw-r--r--docs/source/devguide/how-to/update-1.3-plugin.md160
-rw-r--r--docs/source/devguide/index.md13
-rw-r--r--docs/source/devguide/packaging/index.md9
-rw-r--r--docs/source/devguide/packaging/launchpad-recipe.md43
-rw-r--r--docs/source/devguide/packaging/release.md54
-rw-r--r--docs/source/devguide/packaging/windows.md10
-rw-r--r--docs/source/devguide/tutorials/01-setup.md85
-rw-r--r--docs/source/devguide/tutorials/index.md10
-rw-r--r--docs/source/how-to/index.md27
-rw-r--r--docs/source/how-to/launchd-service.md50
-rw-r--r--docs/source/how-to/nssm-service.md38
-rw-r--r--docs/source/how-to/set-mime-type.md24
-rw-r--r--docs/source/how-to/systemd-service.md205
-rw-r--r--docs/source/index.rst18
-rw-r--r--docs/source/intro/01-install.md133
-rw-r--r--docs/source/intro/index.md16
-rw-r--r--docs/source/modules/modules.rst10
-rw-r--r--docs/source/reference/api.rst14
-rw-r--r--docs/source/reference/index.rst11
-rw-r--r--docs/source/reference/rpc.rst98
-rw-r--r--docs/source/reference/web.md38
-rw-r--r--docs/source/reference/webapi.rst17
-rw-r--r--docs/source/releases/2.0.md56
-rw-r--r--docs/source/releases/index.md13
-rw-r--r--docs/spelling_wordlist.txt42
-rwxr-xr-xgen_web_gettext.py119
-rwxr-xr-xgenerate_pot.py107
-rwxr-xr-xminify_web_js.py133
-rwxr-xr-xmsgfmt.py227
-rw-r--r--packaging/osx/Info.plist.in59
-rw-r--r--packaging/osx/Instructions.md48
-rw-r--r--packaging/osx/README.rst127
-rwxr-xr-xpackaging/osx/deluge79
-rwxr-xr-xpackaging/osx/deluge-console69
-rwxr-xr-xpackaging/osx/deluge-web69
-rw-r--r--packaging/osx/deluge.bundle43
-rw-r--r--packaging/osx/deluge.icnsbin0 -> 201047 bytes
-rw-r--r--packaging/osx/deluge.modules62
-rwxr-xr-xpackaging/osx/deluged69
-rw-r--r--packaging/osx/gtkrc10
-rw-r--r--packaging/osx/jhbuildrc-custom32
-rw-r--r--packaging/osx/launchd/org.deluge-torrent.deluge-web.plist29
-rw-r--r--packaging/osx/launchd/org.deluge-torrent.deluged.plist29
-rw-r--r--packaging/osx/libtorrent.modules45
-rw-r--r--packaging/osx/make-app49
-rw-r--r--packaging/osx/torrent.icnsbin0 -> 199899 bytes
-rwxr-xr-xpackaging/source/make_release.py55
-rw-r--r--packaging/systemd/deluge-web.service16
-rw-r--r--packaging/systemd/deluged.service18
-rw-r--r--packaging/systemd/user.conf4
-rw-r--r--packaging/systemd/user/deluge-web.service16
-rw-r--r--packaging/systemd/user/deluged.service13
-rw-r--r--packaging/win/README.md34
-rw-r--r--packaging/win/deluge-win-installer.nsi234
-rw-r--r--packaging/win/delugewin.spec183
-rw-r--r--packaging/win/installer-side.bmpbin0 -> 206038 bytes
-rw-r--r--packaging/win/installer-top.bmpbin0 -> 34254 bytes
-rw-r--r--packaging/win/pyi_rth_gtk_csd.py3
-rw-r--r--packaging/win/setup_nsis.py49
-rw-r--r--pyproject.toml29
-rw-r--r--requirements-ci.txt4
-rw-r--r--requirements-dev.txt14
-rw-r--r--requirements-tests.txt13
-rw-r--r--requirements.txt18
-rw-r--r--setup.cfg45
-rwxr-xr-xsetup.py611
-rw-r--r--tox.ini165
-rwxr-xr-xversion.py78
1762 files changed, 680606 insertions, 0 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..d3e9400
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,6 @@
+.gitattributes export-ignore
+.gitmodules export-ignore
+.gitignore export-ignore
+*.py diff=python
+ext-all.js diff=minjs
+*.state -merge -text
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
new file mode 100644
index 0000000..8ef9010
--- /dev/null
+++ b/.github/workflows/cd.yml
@@ -0,0 +1,104 @@
+name: Package
+
+on:
+ push:
+ tags:
+ - "deluge-*"
+ - "!deluge*-dev*"
+ branches:
+ - develop
+ pull_request:
+ types: [labeled, opened, synchronize, reopened]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+ inputs:
+ ref:
+ description: "Enter a tag or commit to package"
+ default: ""
+
+jobs:
+ windows_package:
+ runs-on: windows-2022
+ if: (github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'package'))
+ strategy:
+ matrix:
+ arch: [x64, x86]
+ python: ["3.9"]
+ libtorrent: [2.0.7, 1.2.19]
+
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ # Checkout Deluge source to subdir to enable packaging any tag/commit
+ - name: Checkout Deluge source
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.inputs.ref }}
+ fetch-depth: 0
+ path: deluge_src
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.python}}
+ architecture: ${{ matrix.arch }}
+ cache: pip
+
+ - name: Prepare pip
+ run: python -m pip install wheel setuptools==68.*
+
+ - name: Install GTK
+ run: |
+ $WebClient = New-Object System.Net.WebClient
+ $WebClient.DownloadFile("https://github.com/deluge-torrent/gvsbuild-release/releases/download/latest/gvsbuild-py${{ matrix.python }}-vs16-${{ matrix.arch }}.zip","C:\GTK.zip")
+ 7z x C:\GTK.zip -oc:\GTK
+ echo "C:\GTK\release\lib" | Out-File -FilePath $env:GITHUB_PATH -Append
+ echo "C:\GTK\release\bin" | Out-File -FilePath $env:GITHUB_PATH -Append
+ echo "C:\GTK\release" | Out-File -FilePath $env:GITHUB_PATH -Append
+ python -m pip install --no-index --find-links="C:\GTK\release\python" pycairo PyGObject
+
+ - name: Install Python dependencies
+ # Pillow no longer provides 32-bit wheels for Windows
+ # so specify only-binary to install old version.
+ run: >
+ python -m pip install
+ --only-binary=pillow
+ twisted[tls]==22.8.0
+ libtorrent==${{ matrix.libtorrent }}
+ pyinstaller
+ pygame
+ -r requirements.txt
+
+ - name: Install Deluge
+ working-directory: deluge_src
+ run: |
+ python -m pip install .
+ python setup.py install_scripts
+
+ - name: Freeze Deluge
+ working-directory: packaging/win
+ run: |
+ pyinstaller --clean delugewin.spec --distpath freeze
+
+ - name: Verify Deluge exes
+ working-directory: packaging/win/freeze/Deluge/
+ run: |
+ deluge-debug.exe -v
+ deluged-debug.exe -v
+ deluge-web-debug.exe -v
+ deluge-console -v
+
+ - name: Make Deluge Installer
+ working-directory: ./packaging/win
+ run: |
+ python setup_nsis.py
+ makensis /Darch=${{ matrix.arch }} deluge-win-installer.nsi
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: deluge-py${{ matrix.python }}-lt${{ matrix.libtorrent }}-${{ matrix.arch }}
+ path: packaging/win/*.exe
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..1f0675c
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,101 @@
+name: CI
+
+on:
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+ inputs:
+ core-dump:
+ description: "Set to 1 to enable retrieving core dump from crashes"
+ default: "0"
+jobs:
+ test-linux:
+ runs-on: ubuntu-22.04
+ strategy:
+ matrix:
+ python-version: ["3.7", "3.10"]
+
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.python-version }}
+ cache: "pip"
+ cache-dependency-path: "requirements*.txt"
+
+ - name: Sets env var for security
+ if: (github.event_name == 'pull_request' && contains(github.event.pull_request.body, 'security_test')) || (github.event_name == 'push' && contains(github.event.head_commit.message, 'security_test'))
+ run: echo "SECURITY_TESTS=True" >> $GITHUB_ENV
+
+ - name: Install dependencies
+ run: |
+ pip install --upgrade pip wheel setuptools
+ pip install -r requirements-ci.txt
+ pip install -e .
+
+ - name: Install security dependencies
+ if: contains(env.SECURITY_TESTS, 'True')
+ run: |
+ wget -O- $TESTSSL_URL$TESTSSL_VER | tar xz
+ mv -t deluge/tests/data testssl.sh-$TESTSSL_VER/testssl.sh testssl.sh-$TESTSSL_VER/etc/;
+ env:
+ TESTSSL_VER: 3.0.6
+ TESTSSL_URL: https://codeload.github.com/drwetter/testssl.sh/tar.gz/refs/tags/v
+
+ - name: Setup core dump catch and store
+ if: github.event.inputs.core-dump == '1'
+ run: |
+ sudo mkdir /cores/ && sudo chmod 777 /cores/
+ echo "/cores/%E.%p" | sudo tee /proc/sys/kernel/core_pattern
+ ulimit -c unlimited
+ sudo apt install glibc-tools
+ echo "DEBUG_PREFIX=catchsegv python -X dev -m" >> $GITHUB_ENV
+
+ - name: Test with pytest
+ run: |
+ python -c 'from deluge._libtorrent import lt; print(lt.__version__)';
+ $DEBUG_PREFIX pytest -v -m "not (todo or gtkui)" deluge
+
+ - uses: actions/upload-artifact@v3
+ # capture all crashes as build artifacts
+ if: failure()
+ with:
+ name: crashes
+ path: /cores
+
+ test-windows:
+ runs-on: windows-2022
+ strategy:
+ matrix:
+ python-version: ["3.7", "3.10"]
+
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.python-version }}
+ cache: "pip"
+ cache-dependency-path: "requirements*.txt"
+
+ - name: Install dependencies
+ run: |
+ pip install --upgrade pip wheel setuptools
+ pip install -r requirements-ci.txt
+ pip install -e .
+
+ - name: Test with pytest
+ run: |
+ python -c 'import libtorrent as lt; print(lt.__version__)';
+ pytest -v -m "not (todo or gtkui or security)" deluge
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 0000000..9afa069
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,38 @@
+name: Docs
+
+# Controls when the action will run.
+on:
+ # Triggers the workflow on push or pull request events but only for the main branch
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - uses: actions/setup-python@v4
+ with:
+ python-version: "3.10"
+ cache: "pip"
+ cache-dependency-path: "requirements*.txt"
+
+ - name: Install dependencies
+ run: |
+ pip install --upgrade pip wheel
+ pip install tox
+ sudo apt-get install enchant-2
+
+ - name: Build docs with tox
+ env:
+ TOX_ENV: docs
+ run: |
+ tox -e $TOX_ENV
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000..6c55c6b
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,17 @@
+name: Linting
+
+on:
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v4
+ - name: Run pre-commit linting
+ uses: pre-commit/action@v3.0.0
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5a5989b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,26 @@
+*~
+build
+.cache
+dist
+docs/source/modules/deluge*.rst
+*.egg-info/
+*.dist-info/
+*.egg
+*.log
+__pycache__/
+*.py[cod]
+*.tar.*
+.tox/
+deluge/i18n/*/
+deluge.pot
+deluge/ui/web/js/*.js
+deluge/ui/web/js/extjs/ext-extensions*.js
+*.desktop
+*.metainfo.xml
+.build_data*
+osx/app
+RELEASE-VERSION
+.venv*
+# used by setuptools to cache downloaded eggs
+/.eggs
+_pytest_temp/
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..4d0d922
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,51 @@
+default_language_version:
+ python: python3
+exclude: >
+ (?x)^(
+ deluge/ui/web/docs/template/.*|
+ deluge/tests/data/.*svg|
+ )$
+repos:
+ - repo: https://github.com/psf/black
+ rev: 23.1.0
+ hooks:
+ - id: black
+ name: Fmt Black
+ - repo: https://github.com/pre-commit/mirrors-prettier
+ rev: v2.7.1
+ hooks:
+ - id: prettier
+ name: Fmt Prettier
+ # Workaround to list modified files only.
+ args: [--list-different]
+ - repo: https://github.com/pycqa/isort
+ rev: 5.12.0
+ hooks:
+ - id: isort
+ name: Fmt isort
+ - repo: https://github.com/pycqa/flake8
+ rev: 6.0.0
+ hooks:
+ - id: flake8
+ name: Chk Flake8
+ additional_dependencies:
+ - pep8-naming==0.12.1
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.4.0
+ hooks:
+ - id: double-quote-string-fixer
+ name: Fix Double-quotes
+ - id: end-of-file-fixer
+ name: Fix End-of-files
+ exclude_types: [javascript, css]
+ - id: mixed-line-ending
+ name: Fix Line endings
+ args: [--fix=auto]
+ - id: trailing-whitespace
+ name: Fix Trailing whitespace
+ - repo: https://github.com/asottile/pyupgrade
+ rev: v3.3.1
+ hooks:
+ - id: pyupgrade
+ args: [--py36-plus]
+ stages: [manual]
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..44cf215
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,6 @@
+deluge/ui/web/css/ext-*.css
+deluge/ui/web/js/extjs/ext-*.js
+deluge/ui/web/docs/
+deluge/ui/web/themes/images/
+*.py*
+*.html
diff --git a/.prettierrc.yaml b/.prettierrc.yaml
new file mode 100644
index 0000000..724d4b9
--- /dev/null
+++ b/.prettierrc.yaml
@@ -0,0 +1,13 @@
+trailingComma: "es5"
+tabWidth: 4
+singleQuote: true
+overrides:
+ - files:
+ - "*.yaml"
+ - ".*.yaml"
+ - "*.yml"
+ - ".*.yml"
+ - "*.md"
+ options:
+ tabWidth: 2
+ singleQuote: false
diff --git a/.pylintrc b/.pylintrc
new file mode 100644
index 0000000..75fa0e6
--- /dev/null
+++ b/.pylintrc
@@ -0,0 +1,420 @@
+[MASTER]
+
+# Specify a configuration file.
+#rcfile=
+
+# Python code to execute, usually for sys.path manipulation such as
+# pygtk.require().
+#init-hook=
+
+# Add files or directories to the blacklist. They should be base names, not
+# paths.
+ignore=CVS
+
+# Add files or directories matching the regex patterns to the blacklist. The
+# regex matches against base names, not paths.
+ignore-patterns=
+
+# Pickle collected data for later comparisons.
+persistent=yes
+
+# List of plugins (as comma separated values of python modules names) to load,
+# usually to register additional checkers.
+load-plugins=
+
+# Use multiple processes to speed up Pylint.
+jobs=2
+
+# Allow loading of arbitrary C extensions. Extensions are imported into the
+# active Python interpreter and may run arbitrary code.
+unsafe-load-any-extension=no
+
+# A comma-separated list of package or module names from where C extensions may
+# be loaded. Extensions are loading into the active Python interpreter and may
+# run arbitrary code
+extension-pkg-whitelist=
+
+# Allow optimization of some AST trees. This will activate a peephole AST
+# optimizer, which will apply various small optimizations. For instance, it can
+# be used to obtain the result of joining multiple strings with the addition
+# operator. Joining a lot of strings can lead to a maximum recursion error in
+# Pylint and this flag can prevent that. It has one side effect, the resulting
+# AST will be different than the one from reality. This option is deprecated
+# and it will be removed in Pylint 2.0.
+optimize-ast=no
+
+
+[MESSAGES CONTROL]
+
+# Only show warnings with the listed confidence levels. Leave empty to show
+# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
+confidence=
+
+# Enable the message, report, category or checker with the given id(s). You can
+# either give multiple identifier separated by comma (,) or put this option
+# multiple time (only on the command line, not in the configuration file where
+# it should appear only once). See also the "--disable" option for examples.
+#enable=
+
+# Disable the message, report, category or checker with the given id(s). You
+# can either give multiple identifiers separated by comma (,) or put this
+# option multiple times (only on the command line, not in the configuration
+# file where it should appear only once).You can also use "--disable=all" to
+# disable everything first and then reenable specific checks. For example, if
+# you want to run only the similarities checker, you can use "--disable=all
+# --enable=similarities". If you want to run only the classes checker, but have
+# no Warning level messages displayed, use"--disable=all --enable=classes
+# --disable=W"
+#
+# Arranged by category and use symbolic names instead of ids.
+disable=
+# Convention
+ missing-docstring, invalid-name, bad-continuation,
+# Error
+ no-member, no-name-in-module,
+# Information
+ locally-disabled,
+# Refactor
+ no-self-use, too-many-arguments, too-many-branches, too-many-instance-attributes,
+ too-many-locals, too-few-public-methods, too-many-public-methods, too-many-statements,
+# Refactor msgs that should eventually be enabled:
+ redefined-variable-type, too-many-ancestors,
+ too-many-nested-blocks, too-many-return-statements,
+# Warning
+ unused-argument, protected-access, import-error, unused-variable,
+ attribute-defined-outside-init,
+# Warning msgs that should eventually be enabled:
+ arguments-differ, global-statement, fixme, broad-except
+
+[REPORTS]
+
+# Set the output format. Available formats are text, parseable, colorized, msvs
+# (visual studio) and html. You can also give a reporter class, eg
+# mypackage.mymodule.MyReporterClass.
+output-format=parseable
+
+# Put messages in a separate file for each module / package specified on the
+# command line instead of printing them on stdout. Reports (if any) will be
+# written in a file name "pylint_global.[txt|html]". This option is deprecated
+# and it will be removed in Pylint 2.0.
+files-output=no
+
+# Tells whether to display a full report or only the messages
+reports=no
+
+# Python expression which should return a note less than 10 (10 is the highest
+# note). You have access to the variables errors warning, statement which
+# respectively contain the number of errors / warnings messages and the total
+# number of statements analyzed. This is used by the global evaluation report
+# (RP0004).
+evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
+
+# Template used to display messages. This is a python new-style format string
+# used to format the message information. See doc for all details
+#msg-template=
+
+
+[SPELLING]
+
+# Spelling dictionary name. Available dictionaries: none. To make it working
+# install python-enchant package.
+spelling-dict=
+
+# List of comma separated words that should not be checked.
+spelling-ignore-words=
+
+# A path to a file that contains private dictionary; one word per line.
+spelling-private-dict-file=
+
+# Tells whether to store unknown words to indicated private dictionary in
+# --spelling-private-dict-file option instead of raising a message.
+spelling-store-unknown-words=no
+
+
+[BASIC]
+
+# Good variable names which should always be accepted, separated by a comma
+good-names=d,i,j,k,ex,Run,_,log
+
+# Bad variable names which should always be refused, separated by a comma
+bad-names=foo,bar,baz,toto,tutu,tata
+
+# Colon-delimited sets of names that determine each other's naming style when
+# the name regexes allow several styles.
+name-group=
+
+# Include a hint for the correct naming format with invalid-name
+include-naming-hint=no
+
+# List of decorators that produce properties, such as abc.abstractproperty. Add
+# to this list to register other decorators that produce valid properties.
+property-classes=abc.abstractproperty
+
+# Regular expression matching correct function names
+function-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for function names
+function-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct variable names
+variable-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for variable names
+variable-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct constant names
+const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
+
+# Naming hint for constant names
+const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
+
+# Regular expression matching correct attribute names
+attr-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for attribute names
+attr-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct argument names
+argument-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for argument names
+argument-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct class attribute names
+class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
+
+# Naming hint for class attribute names
+class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
+
+# Regular expression matching correct inline iteration names
+inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
+
+# Naming hint for inline iteration names
+inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
+
+# Regular expression matching correct class names
+class-rgx=[A-Z_][a-zA-Z0-9]+$
+
+# Naming hint for class names
+class-name-hint=[A-Z_][a-zA-Z0-9]+$
+
+# Regular expression matching correct module names
+module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Naming hint for module names
+module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Regular expression matching correct method names
+method-rgx=[a-z_][a-z0-9_]{2,40}$
+
+# Naming hint for method names
+method-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression which should only match function or class names that do
+# not require a docstring.
+no-docstring-rgx=__.*__
+
+# Minimum line length for functions/classes that require docstrings, shorter
+# ones are exempt.
+docstring-min-length=-1
+
+
+[ELIF]
+
+# Maximum number of nested blocks for function / method body
+max-nested-blocks=5
+
+
+[LOGGING]
+
+# Logging modules to check that the string format arguments are in logging
+# function parameter format
+logging-modules=logging
+
+
+[FORMAT]
+
+# Maximum number of characters on a single line.
+max-line-length=120
+
+# Regexp for a line that is allowed to be longer than the limit.
+ignore-long-lines=^\s*(# )?<?https?://\S+>?$
+
+# Allow the body of an if to be on the same line as the test if there is no
+# else.
+single-line-if-stmt=no
+
+# List of optional constructs for which whitespace checking is disabled. `dict-
+# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
+# `trailing-comma` allows a space between comma and closing bracket: (a, ).
+# `empty-line` allows space-only lines.
+no-space-check=trailing-comma,dict-separator
+
+# Maximum number of lines in a module
+max-module-lines=1550
+
+# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
+# tab).
+indent-string=' '
+
+# Number of spaces of indent required inside a hanging or continued line.
+indent-after-paren=4
+
+# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
+expected-line-ending-format=LF
+
+
+[MISCELLANEOUS]
+
+# List of note tags to take in consideration, separated by a comma.
+notes=FIXME,XXX,TODO
+
+
+[VARIABLES]
+
+# Tells whether we should check for unused import in __init__ files.
+init-import=no
+
+# A regular expression matching the name of dummy variables (i.e. expectedly
+# not used).
+dummy-variables-rgx=_$|dummy
+
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid to define new builtins when possible.
+additional-builtins=_,_n,__request__,WindowsError
+
+# List of strings which can identify a callback function by name. A callback
+# name must start or end with one of those strings.
+callbacks=cb_,_cb
+
+# List of qualified module names which can have objects that can redefine
+# builtins.
+redefining-builtins-modules=
+
+
+[TYPECHECK]
+
+# Tells whether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=yes
+
+# List of module names for which member attributes should not be checked
+# (useful for modules/projects where namespaces are manipulated during runtime
+# and thus existing member attributes cannot be deduced by static analysis. It
+# supports qualified module names, as well as Unix pattern matching.
+ignored-modules=
+
+# List of class names for which member attributes should not be checked (useful
+# for classes with dynamically set attributes). This supports the use of
+# qualified names.
+ignored-classes=SQLObject,twisted.internet.reactor
+
+# List of members which are set dynamically and missed by pylint inference
+# system, and so shouldn't trigger E1101 when accessed. Python regular
+# expressions are accepted.
+generated-members=REQUEST,acl_users,aq_parent
+
+# List of decorators that produce context managers, such as
+# contextlib.contextmanager. Add to this list to register other decorators that
+# produce valid context managers.
+contextmanager-decorators=contextlib.contextmanager
+
+
+[SIMILARITIES]
+
+# Minimum lines number of a similarity.
+min-similarity-lines=4
+
+# Ignore comments when computing similarities.
+ignore-comments=yes
+
+# Ignore docstrings when computing similarities.
+ignore-docstrings=yes
+
+# Ignore imports when computing similarities.
+ignore-imports=no
+
+
+[IMPORTS]
+
+# Deprecated modules which should not be used, separated by a comma
+deprecated-modules=regsub,TERMIOS,Bastion,rexec
+
+# Create a graph of every (i.e. internal and external) dependencies in the
+# given file (report RP0402 must not be disabled)
+import-graph=
+
+# Create a graph of external dependencies in the given file (report RP0402 must
+# not be disabled)
+ext-import-graph=
+
+# Create a graph of internal dependencies in the given file (report RP0402 must
+# not be disabled)
+int-import-graph=
+
+# Force import order to recognize a module as part of the standard
+# compatibility libraries.
+known-standard-library=
+
+# Force import order to recognize a module as part of a third party library.
+known-third-party=enchant
+
+
+[DESIGN]
+
+# Maximum number of arguments for function / method
+max-args=7
+
+# Argument names that match this expression will be ignored. Default to name
+# with leading underscore
+ignored-argument-names=_.*
+
+# Maximum number of locals for function / method body
+max-locals=15
+
+# Maximum number of return / yield for function / method body
+max-returns=6
+
+# Maximum number of branch for function / method body
+max-branches=12
+
+# Maximum number of statements in function / method body
+max-statements=50
+
+# Maximum number of parents for a class (see R0901).
+max-parents=7
+
+# Maximum number of attributes for a class (see R0902).
+max-attributes=7
+
+# Minimum number of public methods for a class (see R0903).
+min-public-methods=2
+
+# Maximum number of public methods for a class (see R0904).
+max-public-methods=20
+
+# Maximum number of boolean expressions in a if statement
+max-bool-expr=5
+
+
+[CLASSES]
+
+# List of method names used to declare (i.e. assign) instance attributes.
+defining-attr-methods=__init__,__new__,setUp
+
+# List of valid names for the first argument in a class method.
+valid-classmethod-first-arg=cls
+
+# List of valid names for the first argument in a metaclass class method.
+valid-metaclass-classmethod-first-arg=mcs
+
+# List of member names, which should be excluded from the protected access
+# warning.
+exclude-protected=_asdict,_fields,_replace,_source,_make
+
+
+[EXCEPTIONS]
+
+# Exceptions that will emit a warning when being caught. Defaults to
+# "Exception"
+overgeneral-exceptions=Exception
diff --git a/.readthedocs.yml b/.readthedocs.yml
new file mode 100644
index 0000000..90b567f
--- /dev/null
+++ b/.readthedocs.yml
@@ -0,0 +1,29 @@
+# .readthedocs.yml
+# Read the Docs configuration file
+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
+
+# Required
+version: 2
+
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3.10"
+ jobs:
+ post_checkout:
+ - git fetch --unshallow || true
+
+# Build documentation in the docs/ directory with Sphinx
+sphinx:
+ configuration: docs/source/conf.py
+
+# Optionally build your docs in additional formats such as PDF and ePub
+formats: all
+
+# Optionally set the version of Python and requirements required to build your docs
+python:
+ install:
+ - requirements: requirements.txt
+ - requirements: docs/requirements.txt
+ - method: pip
+ path: .
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..42d2476
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,790 @@
+Authors:
+ * Andrew Resch ('andar') <andrewresch@gmail.com>
+ * Damien Churchill ('damoxc') <damoxc@gmail.com>
+
+Main Developers:
+ * Andrew Resch
+ * Damien Churchill
+ * John Garland ('johnnyg') <johnnybg+deluge@gmail.com>
+ * Calum Lind ('cas') <calumlind+deluge@gmail.com>
+
+libtorrent (http://www.libtorrent.org):
+ * Arvid Norberg
+
+Contributors (and Past Developers):
+ * Zach Tibbitts <zach@collegegeek.org>
+ * Alon Zakai ('Kripken') <kripkensteiner@gmail.com>
+ * Marcos Mobley ('markybob') <markybob@gmail.com>
+ * Alex Dedul
+ * Sadrul Habib Chowdhury
+ * Ido Abramovich <ido.deluge@gmail.com>
+ * Martijn Voncken <mvoncken@gmail.com>
+ * Mark Stahler ('kramed') <markstahler@gmail.com>
+ * Pedro Algarvio ('s0undt3ch') <ufs@ufsoft.org>
+ * Cristian Greco ('cgreco') <cristian@regolo.cc>
+ * Chase Sterling ('gazpachoKing') <chase.sterling@gmail.com>
+
+Plugin Developers:
+ * Autoadd : Chase Sterling
+ * Blocklist : John Garland
+ * Execute : Damien Churchill
+ * Extractor : Andrew Resch
+ * Label : Martijn Voncken
+ * Notifications : Pedro Algarvio
+ * Scheduler : Andrew Resch
+ * Webui : Damien Churchill
+
+Images Authors:
+
+ * files: deluge/ui/data/pixmaps/*.svg, *.png
+ deluge/ui/web/icons/active.png, alert.png, all.png, checking.png, dht.png,
+ downloading.png, inactive.png, queued.png, seeding.png, traffic.png
+ deluge/ui/web/images/deluge*.png
+ deluge/ui/web/icons/apple-pre-*.png, deluge*.png
+ copyright: Calum Lind
+ license: GPLv3
+
+ * files: deluge/plugins/blocklist/blocklist/data/*.png
+ deluge/ui/data/pixmaps/tracker_warning16.png, tracker_all16.png, lock48.png
+ copyright: Gnome Icon Theme
+ license: GPLv2
+ url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
+
+ * files: deluge/ui/data/pixmaps/magnet*.svg, *.png
+ copyright: Matias Wilkman
+ license:
+
+ * files: deluge/ui/data/pixmaps/flags/*.png
+ copyright: Mark James <mjames@gmail.com>
+ license: Public Domain
+ url: http://famfamfam.com/lab/icons/flags/
+
+ * files: deluge/ui/web/icons/*.png
+ exceptions: apple-pre-*.png, active.png, alert.png, all.png, deluge.png, dht.png,
+ downloading.png, inactive.png, queued.png, seeding.png, traffic.png
+ copyright: Yusuke Kamiyamane <p@yusukekamiyamane.com>
+ license: Creative Commons Attribution 3.0 License
+ url: http://p.yusukekamiyamane.com/
+
+ * files: deluge/ui/web/images/spinner.gif, spinner-split.gif
+ copyright: Steven Chim
+ license: BSD license
+ url: http://members.upc.nl/j.chim/ext/spinner2/ext-spinner.html
+
+Translation Contributors:
+ * files: deluge/i18n/*.po
+
+ Aaron Wang Shi
+ abbigss
+ ABCdatos
+ Abcx
+ Actam
+ Adam
+ adaminikisi
+ adi_oporanu
+ Adrian Goll
+ afby
+ Ahmades
+ Ahmad Farghal
+ Ahmad Gharbeia أحمد غربية
+ akira
+ Aki Sivula
+ Alan Pepelko
+ Alberto
+ Alberto Ferrer
+ alcatr4z
+ AlckO
+ Aleksej Korgenkov
+ Alessio Treglia
+ Alexander Ilyashov
+ Alexander Matveev
+ Alexander Saltykov
+ Alexander Taubenkorb
+ Alexander Telenga
+ Alexander Yurtsev
+ Alexandre Martani
+ Alexandre Rosenfeld
+ Alexandre Sapata Carbonell
+ Alexey Osipov
+ Alin Claudiu Radut
+ allah
+ AlSim
+ Alvaro Carrillanca P.
+ A.Matveev
+ Andras Hipsag
+ András Kárász
+ Andrea Ratto
+ Andreas Johansson
+ Andreas Str
+ André F. Oliveira
+ AndreiF
+ andrewh
+ Angel Guzman Maeso
+ Aníbal Deboni Neto
+ animarval
+ Antonio Cono
+ antoniojreyes
+ Anton Shestakov
+ Anton Yakutovich
+ antou
+ Arkadiusz Kalinowski
+ Artin
+ artir
+ Astur
+ Athanasios Lefteris
+ Athmane MOKRAOUI (ButterflyOfFire)
+ Augusta Carla Klug
+ Avoledo Marco
+ axaard
+ AxelRafn
+ Axezium
+ Ayont
+ b3rx
+ Bae Taegil
+ Bajusz Tamás
+ Balaam's Miracle
+ Ballestein
+ Bent Ole Fosse
+ berto89
+ bigx
+ Bjorn Inge Berg
+ blackbird
+ Blackeyed
+ blackmx
+ BlueSky
+ Blutheo
+ bmhm
+ bob00work
+ boenki
+ Bogdan Bădic-Spătariu
+ bonpu
+ Boone
+ boss01
+ Branislav Jovanović
+ bronze
+ brownie
+ Brus46
+ bumper
+ butely
+ BXCracer
+ c0nfidencal
+ Can Kaya
+ Carlos Alexandro Becker
+ cassianoleal
+ Cédric.h
+ César Rubén
+ chaoswizard
+ Chen Tao
+ chicha
+ Chien Cheng Wei
+ Christian Kopac
+ Christian Widell
+ Christoffer Brodd-Reijer
+ christooss
+ CityAceE
+ Clopy
+ Clusty
+ cnu
+ Commandant
+ Constantinos Koniaris
+ Coolmax
+ cosmix
+ Costin Chirvasuta
+ CoVaLiDiTy
+ cow_2001
+ Crispin Kirchner
+ crom
+ Cruster
+ Cybolic
+ Dan Bishop
+ Danek
+ Dani
+ Daniel Demarco
+ Daniel Ferreira
+ Daniel Frank
+ Daniel Holm
+ Daniel Høyer Iversen
+ Daniel Marynicz
+ Daniel Nylander
+ Daniel Patriche
+ Daniel Schildt
+ Daniil Sorokin
+ Dante Díaz
+ Daria Michalska
+ DarkenCZ
+ Darren
+ Daspah
+ David Eurenius
+ davidhjelm
+ David Machakhelidze
+ Dawid Dziurdzia
+ Daya Adianto
+ dcruz
+ Deady
+ Dereck Wonnacott
+ Devgru
+ Devid Antonio FiloniDevilDogTG
+ di0rz`
+ Dialecti Valsamou
+ Diego Medeiros
+ Dkzoffy
+ Dmitrij D. Czarkoff
+ Dmitriy Geels
+ Dmitry Olyenyov
+ Dominik Kozaczko
+ Dominik Lübben
+ doomster
+ Dorota Król
+ Doyen Philippe
+ Dread Knight
+ DreamSonic
+ duan
+ Duong Thanh An
+ DvoglavaZver
+ dwori
+ dylansmrjones
+ Ebuntor
+ Edgar Alejandro Jarquin Flores
+ Eetu
+ ekerazha
+ Elias Julkunen
+ elparia
+ Emberke
+ Emiliano Goday Caneda
+ EndelWar
+ eng.essam
+ enubuntu
+ ercangun
+ Erdal Ronahi
+ ergin üresin
+ Eric
+ Éric Lassauge
+ Erlend Finvåg
+ Errdil
+ ethan shalev
+ Evgeni Spasov
+ ezekielnin
+ Fabian Ordelmans
+ Fabio Mazanatti
+ Fábio Nogueira
+ FaCuZ
+ Felipe Lerena
+ Fernando Pereira
+ fjetland
+ Florian Schäfer
+ FoBoS
+ Folke
+ Force
+ fosk
+ fragarray
+ freddeg
+ Frédéric Perrin
+ Fredrik Kilegran
+ FreeAtMind
+ Fulvio Ciucci
+ Gabor Kelemen
+ Galatsanos Panagiotis
+ Gaussian
+ gdevitis
+ Georg Brzyk
+ George Dumitrescu
+ Georgi Arabadjiev
+ Georg Sieber
+ Gerd Radecke
+ Germán Heusdens
+ Gianni Vialetto
+ Gigih Aji Ibrahim
+ Giorgio Wicklein
+ Giovanni Rapagnani
+ Giuseppe
+ gl
+ glen
+ granjerox
+ Green Fish
+ greentea
+ Greyhound
+ G. U.
+ Guillaume BENOIT
+ Guillaume Pelletier
+ Gustavo Henrique Klug
+ gutocarvalho
+ Guybrush88
+ Hans Rødtang
+ HardDisk
+ Hargas Gábor
+ Heitor Thury Barreiros Barbosa
+ helios91940
+ helix84
+ Helton Rodrigues
+ Hendrik Luup
+ Henrique Ferreiro
+ Henry Goury-Laffont
+ Hezy Amiel
+ hidro
+ hoball
+ hokten
+ Holmsss
+ hristo.num
+ Hubert Życiński
+ Hyo
+ Iarwain
+ ibe
+ ibear
+ Id2ndR
+ Igor Zubarev
+ IKON (Ion)
+ imen
+ Ionuț Jula
+ Isabelle STEVANT
+ István Nyitrai
+ Ivan Petrovic
+ Ivan Prignano
+ IvaSerge
+ jackmc
+ Jacks0nxD
+ Jack Shen
+ Jacky Yeung
+ Jacques Stadler
+ Janek Thomaschewski
+ Jan Kaláb
+ Jan Niklas Hasse
+ Jasper Groenewegen
+ Javi Rodríguez
+ Jayasimha (ಜಯಸಿಂಹ)
+ jeannich
+ Jeff Bailes
+ Jesse Zilstorff
+ Joan Duran
+ João Santos
+ Joar Bagge
+ Joe Anderson
+ Joel Calado
+ Johan Linde
+ John Garland
+ Jojan
+ jollyr0ger
+ Jonas Bo Grimsgaard
+ Jonas Granqvist
+ Jonas Slivka
+ Jonathan Zeppettini
+ Jørgen
+ Jørgen Tellnes
+ josé
+ José Geraldo Gouvêa
+ José Iván León Islas
+ José Lou C.
+ Jose Sun
+ Jr.
+ Jukka Kauppinen
+ Julián Alarcón
+ julietgolf
+ Jusic
+ Justzupi
+ Kaarel
+ Kai Thomsen
+ Kalman Tarnay
+ Kamil Páral
+ Kane_F
+ kaotiks@gmail.com
+ Kateikyoushii
+ kaxhinaz
+ Kazuhiro NISHIYAMA
+ Kerberos
+ Keresztes Ákos
+ kevintyk
+ kiersie
+ Kimbo^
+ Kim Lübbe
+ kitzOgen
+ Kjetil Rydland
+ kluon
+ kmikz
+ Knedlyk
+ koleoptero
+ Kőrösi Krisztián
+ Kouta
+ Krakatos
+ Krešo Kunjas
+ kripken
+ Kristaps
+ Kristian Øllegaard
+ Kristoffer Egil Bonarjee
+ Krzysztof Janowski
+ Krzysztof Zawada
+ Larry Wei Liu
+ laughterwym
+ Laur Mõtus
+ lazka
+ leandrud
+ lê bình
+ Le Coz Florent
+ Leo
+ liorda
+ LKRaider
+ LoLo_SaG
+ Long Tran
+ Lorenz
+ Low Kian Seong
+ Luca Andrea Rossi
+ Luca Ferretti
+ Lucky LIX
+ Luis Gomes
+ Luis Reis
+ Łukasz Wyszyński
+ luojie-dune
+ maaark
+ Maciej Chojnacki
+ Maciej Meller
+ Mads Peter Rommedahl
+ Major Kong
+ Malaki
+ malde
+ Malte Lenz
+ Mantas Kriaučiūnas
+ Mara Sorella
+ Marcin
+ Marcin Falkiewicz
+ marcobra
+ Marco da Silva
+ Marco de Moulin
+ Marco Rodrigues
+ Marcos
+ Marcos Escalier
+ Marcos Mobley
+ Marcus Ekstrom
+ Marek Dębowski
+ Mário Buči
+ Mario Munda
+ Marius Andersen
+ Marius Hudea
+ Marius Mihai
+ Mariusz Cielecki
+ Mark Krapivner
+ marko-markovic
+ Markus Brummer
+ Markus Sutter
+ Martin
+ Martin Dybdal
+ Martin Iglesias
+ Martin Lettner
+ Martin Pihl
+ Masoud Kalali
+ mat02
+ Matej Urbančič
+ Mathias-K
+ Mathieu Arès
+ Mathieu D. (MatToufoutu)
+ Mathijs
+ Matrik
+ Matteo Renzulli
+ Matteo Settenvini
+ Matthew Gadd
+ Matthias Benkard
+ Matthias Mailänder
+ Mattias Ohlsson
+ Mauro de Carvalho
+ Max Molchanov
+ Me
+ MercuryCC
+ Mert Bozkurt
+ Mert Dirik
+ MFX
+ mhietar
+ mibtha
+ Michael Budde
+ Michael Kaliszka
+ Michalis Makaronides
+ Michał Tokarczyk
+ Miguel Pires da Rosa
+ Mihai Capotă
+ Miika Metsälä
+ Mikael Fernblad
+ Mike Sierra
+ mikhalek
+ Milan Prvulović
+ Milo Casagrande
+ Mindaugas
+ Miroslav Matejaš
+ misel
+ mithras
+ Mitja Pagon
+ M.Kitchen
+ Mohamed Magdy
+ moonkey
+ MrBlonde
+ muczy
+ Münir Ekinci
+ Mustafa Temizel
+ mvoncken
+ Mytonn
+ NagyMarton
+ neaion
+ Neil Lin
+ Nemo
+ Nerijus Arlauskas
+ Nicklas Larsson
+ Nicolaj Wyke
+ Nicola Piovesan
+ Nicolas Sabatier
+ Nicolas Velin
+ Nightfall
+ NiKoB
+ Nikolai M. Riabov
+ Niko_Thien
+ niska
+ Nithir
+ noisemonkey
+ nomemohes
+ nosense
+ null
+ Nuno Estêvão
+ Nuno Santos
+ nxxs
+ nyo
+ obo
+ Ojan
+ Olav Andreas Lindekleiv
+ oldbeggar
+ Olivier FAURAX
+ orphe
+ osantana
+ Osman Tosun
+ OssiR
+ otypoks
+ ounn
+ Oz123
+ Özgür BASKIN
+ Pablo Carmona A.
+ Pablo Ledesma
+ Pablo Navarro Castillo
+ Paco Molinero
+ Pål-Eivind Johnsen
+ pano
+ Paolo Naldini
+ Paracelsus
+ Patryk13_03
+ Patryk Skorupa
+ PattogoTehen
+ Paul Lange
+ Pavcio
+ Paweł Wysocki
+ Pedro Brites Moita
+ Pedro Clemente Pereira Neto
+ Pekka "PEXI" Niemistö
+ Penegal
+ Penzo
+ perdido
+ Peter Kotrcka
+ Peter Skov
+ Peter Van den Bosch
+ Petter Eklund
+ Petter Viklund
+ phatsphere
+ Phenomen
+ Philipi
+ Philippides Homer
+ phoenix
+ pidi
+ Pierre Quillery
+ Pierre Rudloff
+ Pierre Slamich
+ Pietrao
+ Piotr Strębski
+ Piotr Wicijowski
+ Pittmann Tamás
+ Playmolas
+ Prescott
+ Prescott_SK
+ pronull
+ Przemysław Kulczycki
+ Pumy
+ pushpika
+ PY
+ qubicllj
+ r21vo
+ Rafał Barański
+ rainofchaos
+ Rajbir
+ ras0ir
+ Rat
+ rd1381
+ Renato
+ Rene Hennig
+ Rene Pärts
+ Ricardo Duarte
+ Richard
+ Robert Hrovat
+ Roberth Sjonøy
+ Robert Lundmark
+ Robin Jakobsson
+ Robin Kåveland
+ Rodrigo Donado
+ Roel Groeneveld
+ rohmaru
+ Rolf Christensen
+ Rolf Leggewie
+ Roni Kantis
+ Ronmi
+ Rostislav Raykov
+ royto
+ RuiAmaro
+ Rui Araújo
+ Rui Moura
+ Rune Svendsen
+ Rusna
+ Rytis
+ Sabirov Mikhail
+ salseeg
+ Sami Koskinen
+ Samir van de Sand
+ Samuel Arroyo Acuña
+ Samuel R. C. Vale
+ Sanel
+ Santi
+ Santi Martínez Cantelli
+ Sardan
+ Sargate Kanogan
+ Sarmad Jari
+ Saša Bodiroža
+ sat0shi
+ Saulius Pranckevičius
+ Savvas Radevic
+ Sebastian Krauß
+ Sebastián Porta
+ Sedir
+ Sefa Denizoğlu
+ sekolands
+ Selim Suerkan
+ semsomi
+ Sergii Golovatiuk
+ setarcos
+ Sheki
+ Shironeko
+ Shlomil
+ silfiriel
+ Simone Tolotti
+ Simone Vendemia
+ sirkubador
+ Sławomir Więch
+ slip
+ slyon
+ smoke
+ Sonja
+ spectral
+ spin_555
+ spitf1r3
+ Spiziuz
+ Spyros Theodoritsis
+ SqUe
+ Squigly
+ srtck
+ Stefan Horning
+ Stefano Maggiolo
+ Stefano Roberto Soleti
+ steinberger
+ Stéphane Travostino
+ Stephan Klein
+ Steven De Winter
+ Stevie
+ Stian24
+ stylius
+ Sukarn Maini
+ Sunjae Park
+ Susana Pereira
+ szymon siglowy
+ takercena
+ TAS
+ Taygeto
+ temy4
+ texxxxxx
+ thamood
+ Thanos Chatziathanassiou
+ Tharawut Paripaiboon
+ Theodoor
+ Théophane Anestis
+ Thor Marius K. Høgås
+ Tiago Silva
+ Tiago Sousa
+ Tikkel
+ tim__b
+ Tim Bordemann
+ Tim Fuchs
+ Tim Kornhammar
+ Timo
+ Timo Jyrinki
+ Timothy Babych
+ TitkosRejtozo
+ Tom
+ Tomas Gustavsson
+ Tomas Valentukevičius
+ Tomasz Dominikowski
+ Tomislav Plavčić
+ Tom Mannerhagen
+ Tommy Mikkelsen
+ Tom Verdaat
+ Tony Manco
+ Tor Erling H. Opsahl
+ Toudi
+ tqm_z
+ Trapanator
+ Tribaal
+ Triton
+ TuniX12
+ Tuomo Sipola
+ turbojugend_gr
+ Turtle.net
+ twilight
+ tymmej
+ Ulrik
+ Umarzuki Mochlis
+ unikob
+ Vadim Gusev
+ Vagi
+ Valentin Bora
+ Valmantas Palikša
+ VASKITTU
+ Vassilis Skoullis
+ vetal17
+ vicedo
+ viki
+ villads hamann
+ Vincent Garibal
+ Vincent Ortalda
+ vinchi007
+ Vinícius de Figueiredo Silva
+ Vinzenz Vietzke
+ virtoo
+ virtual_spirit
+ Vitor Caike
+ Vitor Lamas Gatti
+ Vladimir Lazic
+ Vladimir Sharshov
+ Wanderlust
+ Wander Nauta
+ Ward De Ridder
+ WebCrusader
+ webdr
+ Wentao Tang
+ wilana
+ Wilfredo Ernesto Guerrero Campos
+ Wim Champagne
+ World Sucks
+ Xabi Ezpeleta
+ Xavi de Moner
+ XavierToo
+ XChesser
+ Xiaodong Xu
+ xyb
+ Yaron
+ Yasen Pramatarov
+ YesPoX
+ Yuren Ju
+ Yves MATHIEU
+ zekopeko
+ zhuqin
+ Zissan
+ Γιάννης Κατσαμπίρης
+ Артём Попов
+ Миша
+ Шаймарданов Максим
+ 蔡查理
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..d878a48
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,265 @@
+# Changelog
+
+## 2.2.x (TBA)
+
+### Breaking changes
+
+- Python 3.6 support removed (Python >= 3.7)
+
+## 2.1.1 (2022-07-10)
+
+### Core
+
+- Fix missing trackers added via magnet
+- Fix handling magnets with tracker tiers
+
+## 2.1.0 (2022-06-28)
+
+### Breaking changes
+
+- Python 2 support removed (Python >= 3.6)
+- libtorrent minimum requirement increased (>= 1.2).
+
+### Core
+
+- Add support for SVG tracker icons.
+- Fix tracker icon error handling.
+- Fix cleaning-up tracker icon temp files.
+- Fix Plugin manager to handle new metadata 2.1.
+- Hide passwords in config logs.
+- Fix cleaning-up temp files in add_torrent_url.
+- Fix KeyError in sessionproxy after torrent delete.
+- Remove libtorrent deprecated functions.
+- Fix file_completed_alert handling.
+- Add plugin keys to get_torrents_status.
+- Add support for pygeoip dependency.
+- Fix crash logging to Windows protected folder.
+- Add is_interface and is_interface_name to validate network interfaces.
+- Fix is_url and is_infohash error with None value.
+- Fix load_libintl error.
+- Add support for IPv6 in host lists.
+- Add systemd user services.
+- Fix refresh and expire the torrent status cache.
+- Fix crash when logging errors initializing gettext.
+
+### Web UI
+
+- Fix ETA column sorting in correct order (#3413).
+- Fix defining foreground and background colors.
+- Accept charset in content-type for json messages.
+- Fix 'Complete Seen' and 'Completed' sorting.
+- Fix encoding HTML entities for torrent attributes to prevent XSS.
+
+### Gtk UI
+
+- Fix download location textbox width.
+- Fix obscured port number in Connection Manager.
+- Increase connection manager default height.
+- Fix bug with setting move completed in Options tab.
+- Fix adding daemon accounts.
+- Add workaround for crash on Windows with ico or gif icons.
+- Hide account password length in log.
+- Added a torrent menu option for magnet copy.
+- Fix unable to prefetch magnet in thinclient mode.
+- Use GtkSpinner when testing open port.
+- Update About Dialog year.
+- Fix Edit Torrents dialogs close issues.
+- Fix ETA being copied to neighboring empty cells.
+- Disable GTK CSD by default on Windows.
+
+### Console UI
+
+- Fix curses.init_pair raise ValueError on Py3.10.
+- Swap j and k key's behavior to fit vim mode.
+- Fix torrent details status error.
+- Fix incorrect test for when a host is online.
+- Add the torrent label to info command.
+
+### AutoAdd
+
+- Fix handling torrent decode errors.
+- Fix error dialog not being shown on error.
+
+### Blocklist
+
+- Add frequency unit to interval label.
+
+### Notifications
+
+- Fix UnicodeEncodeError upon non-ascii torrent name.
+
+## 2.0.5 (2021-12-15)
+
+### WebUI
+
+- Fix js minifying error resulting in WebUI blank screen.
+- Silence erronous missing translations warning.
+
+## 2.0.4 (2021-12-12)
+
+### Packaging
+
+- Fix python optional setup.py requirements
+
+### Gtk UI
+
+- Add detection of torrent URL on GTK UI focus
+- Fix piecesbar crashing when enabled
+- Remove num_blocks_cache_hits in stats
+- Fix unhandled error with empty clipboard
+- Add torrentdetails tabs position menu (#3441)
+- Hide pygame community banner in console
+- Fix cmp function for None types (#3309)
+- Fix loading config with double-quotes in string
+- Fix Status tab download speed and uploaded
+
+### Web UI
+
+- Handle torrent add failures
+- Add menu option to copy magnet URI
+- Fix md5sums in torrent files breaking file listing (#3388)
+- Add country flag alt/title for accessibility
+
+### Console UI
+
+- Fix allowing use of windows-curses on Windows
+- Fix hostlist status lookup errors
+- Fix AttributeError setting config values
+- Fix setting 'Skip' priority
+
+### Core
+
+- Add workaround libtorrent 2.0 file_progress error
+- Fix allow enabling any plugin Python version
+- Export torrent get_magnet_uri method
+- Fix loading magnet with resume_data and no metadata (#3478)
+- Fix httpdownloader reencoding torrent file downloads (#3440)
+- Fix lt listen_interfaces not comma-separated (#3337)
+- Fix unable to remove magnet with delete_copies enabled (#3325)
+- Fix Python 3.8 compatibility
+- Fix loading config with double-quotes in string
+- Fix pickle loading non-ascii state error (#3298)
+- Fix creation of pidfile via command option
+- Fix for peer.client UnicodeDecodeError
+- Fix show_file unhandled dbus error
+
+### Documentation
+
+- Add How-to guides about services.
+
+### Stats plugin
+
+- Fix constant session status key warnings
+- Fix cairo error
+
+### Notifications plugin
+
+- Fix email KeyError with status name
+- Fix unhandled TypeErrors on Python 3
+
+### Autoadd plugin
+
+- Fix magnet missing applied labels
+
+### Execute plugin
+
+- Fix failing to run on Windows (#3439)
+
+## 2.0.3 (2019-06-12)
+
+### Gtk UI
+
+- Fix errors running on Wayland (#3265).
+- Fix Peers Tab tooltip and context menu errors (#3266).
+
+### Web UI
+
+- Fix TypeError in Peers Tab setting country flag.
+- Fix reverse proxy header TypeError (#3260).
+- Fix request.base 'idna' codec error (#3261).
+- Fix unable to change password (#3262).
+
+### Extractor plugin
+
+- Fix potential error starting plugin.
+
+### Documentation
+
+- Fix macOS install typo.
+- Fix Windows install instructions.
+
+## 2.0.2 (2019-06-08)
+
+### Packaging
+
+- Add systemd deluged and deluge-web service files to package tarball (#2034)
+
+### Core
+
+- Fix Python 2 compatibility issue with SimpleNamespace.
+
+## 2.0.1 (2019-06-07)
+
+### Packaging
+
+- Fix `setup.py` build error without git installed.
+
+## 2.0.0 (2019-06-06)
+
+### Codebase
+
+- Ported to Python 3
+
+### Core
+
+- Improved Logging
+- Removed the AutoAdd feature on the core. It's now handled with the AutoAdd
+ plugin, which is also shipped with Deluge, and it does a better job and
+ now, it even supports multiple users perfectly.
+- Authentication/Permission exceptions are now sent to clients and recreated
+ there to allow acting upon them.
+- Updated SSL/TLS Protocol parameters for better security.
+- Make the distinction between adding to the session new unmanaged torrents
+ and torrents loaded from state. This will break backwards compatibility.
+- Pass a copy of an event instead of passing the event arguments to the
+ event handlers. This will break backwards compatibility.
+- Allow changing ownership of torrents.
+- File modifications on the auth file are now detected and when they happen,
+ the file is reloaded. Upon finding an old auth file with an old format, an
+ upgrade to the new format is made, file saved, and reloaded.
+- Authentication no longer requires a username/password. If one or both of
+ these is missing, an authentication error will be sent to the client
+ which should then ask the username/password to the user.
+- Implemented sequential downloads.
+- Provide information about a torrent's pieces states
+- Add Option To Specify Outgoing Connection Interface.
+- Fix potential for host_id collision when creating hostlist entries.
+
+### Gtk UI
+
+- Ported to GTK3 (3rd-party plugins will need updated).
+- Allow changing ownership of torrents.
+- Host entries in the Connection Manager UI are now editable.
+- Implemented sequential downloads UI handling.
+- Add optional pieces bar instead of a regular progress bar in torrent status tab.
+- Make torrent opening compatible with all Unicode paths.
+- Fix magnet association button on Windows.
+- Add keyboard shortcuts for changing queue position:
+ - Up: `Ctrl+Alt+Up`
+ - Down: `Ctrl+Alt+Down`
+ - Top: `Ctrl+Alt+Shift+Up`
+ - Bottom: `Ctrl+Alt+Shift+Down`
+
+### Web UI
+
+- Server (deluge-web) now daemonizes by default, use '-d' or '--do-not-daemonize' to disable.
+- Fixed the '--base' option to work for regular use, not just with reverse proxies.
+
+### Blocklist Plugin
+
+- Implemented whitelist support to both core and GTK UI.
+- Implemented IP filter cleaning before each update. Restarting the deluge
+ daemon is no longer needed.
+- If "check_after_days" is 0(zero), the timer is not started anymore. It
+ would keep updating one call after the other. If the value changed, the
+ timer is now stopped and restarted using the new value.
diff --git a/DEPENDS.md b/DEPENDS.md
new file mode 100644
index 0000000..41a7ec0
--- /dev/null
+++ b/DEPENDS.md
@@ -0,0 +1,100 @@
+# Deluge dependencies
+
+The following are required to install and run Deluge. They are separated into
+sections to distinguish the precise requirements for each module.
+
+All modules will require the [common](#common) section dependencies.
+
+## Prerequisite
+
+- [Python] _>= 3.6_
+
+## Build
+
+- [setuptools]
+- [intltool] - Optional: Desktop file translation for \*nix.
+- [closure-compiler] - Minify javascript (alternative is [rjsmin])
+
+## Common
+
+- [Twisted] _>= 17.1_ - Use `TLS` extras for `service_identity` and `idna`.
+- [OpenSSL] _>= 1.0.1_
+- [pyOpenSSL]
+- [rencode] _>= 1.0.2_ - Encoding library.
+- [PyXDG] - Access freedesktop.org standards for \*nix.
+- [xdg-utils] - Provides xdg-open for \*nix.
+- [zope.interface]
+- [chardet] - Optional: Encoding detection.
+- [setproctitle] - Optional: Renaming processes.
+- [Pillow] - Optional: Support for resizing tracker icons.
+- [dbus-python] - Optional: Show item location in filemanager.
+- [ifaddr] - Optional: Verify network interfaces.
+
+### Linux and BSD
+
+- [distro] - Optional: OS platform information.
+
+### Windows OS
+
+- [pywin32]
+- [certifi]
+
+## Core (deluged daemon)
+
+- [libtorrent] _>= 1.2.0_
+- [GeoIP] or [pygeoip] - Optional: IP address country lookup. (_Debian: `python-geoip`_)
+
+## GTK UI
+
+- [GTK+] >= 3.10
+- [PyGObject]
+- [Pycairo]
+- [librsvg] _>= 2_
+- [libappindicator3] w/GIR - Optional: Ubuntu system tray icon.
+
+### MacOS
+
+- [GtkOSXApplication]
+
+## Web UI
+
+- [mako]
+
+## Plugins
+
+### Notifications
+
+- [pygame] - Optional: Play sounds
+- [libnotify] w/GIR - Optional: Desktop popups.
+
+[python]: https://www.python.org/
+[setuptools]: https://setuptools.readthedocs.io/en/latest/
+[intltool]: https://freedesktop.org/wiki/Software/intltool/
+[closure-compiler]: https://developers.google.com/closure/compiler/
+[rjsmin]: https://pypi.org/project/rjsmin/
+[openssl]: https://www.openssl.org/
+[pyopenssl]: https://pyopenssl.org
+[twisted]: https://twistedmatrix.com
+[pillow]: https://pypi.org/project/Pillow/
+[libtorrent]: https://libtorrent.org/
+[zope.interface]: https://pypi.org/project/zope.interface/
+[distro]: https://github.com/nir0s/distro
+[pywin32]: https://github.com/mhammond/pywin32
+[certifi]: https://pypi.org/project/certifi/
+[dbus-python]: https://pypi.org/project/dbus-python/
+[setproctitle]: https://pypi.org/project/setproctitle/
+[gtkosxapplication]: https://github.com/jralls/gtk-mac-integration
+[chardet]: https://chardet.github.io/
+[rencode]: https://github.com/aresch/rencode
+[pyxdg]: https://www.freedesktop.org/wiki/Software/pyxdg/
+[xdg-utils]: https://www.freedesktop.org/wiki/Software/xdg-utils/
+[gtk+]: https://www.gtk.org/
+[pycairo]: https://cairographics.org/pycairo/
+[pygobject]: https://pygobject.readthedocs.io/en/latest/
+[geoip]: https://pypi.org/project/GeoIP/
+[mako]: https://www.makotemplates.org/
+[pygame]: https://www.pygame.org/
+[libnotify]: https://developer.gnome.org/libnotify/
+[python-appindicator]: https://packages.ubuntu.com/xenial/python-appindicator
+[librsvg]: https://wiki.gnome.org/action/show/Projects/LibRsvg
+[ifaddr]: https://pypi.org/project/ifaddr/
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..2fdf924
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,634 @@
+Deluge is licensed under the GNU General Public License version 3 with the
+addition of the following special exception:
+
+In addition, as a special exception, the copyright holders give
+permission to link the code of portions of this program with the OpenSSL
+library.
+You must obey the GNU General Public License in all respects for all of
+the code used other than OpenSSL. If you modify file(s) with this
+exception, you may extend this exception to your version of the file(s),
+but you are not obligated to do so. If you do not wish to do so, delete
+this exception statement from your version. If you delete this exception
+statement from all source files in the program, then also delete it here.
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..11a920d
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,36 @@
+include *.md
+include AUTHORS
+include LICENSE
+include RELEASE-VERSION
+include msgfmt.py
+include minify_web_js.py
+include version.py
+include gen_web_gettext.py
+
+graft docs/man
+graft packaging/systemd
+
+include deluge/i18n/*.po
+recursive-exclude deluge/i18n *.mo
+
+graft deluge/plugins
+recursive-exclude deluge/plugins create_dev_link.sh *.pyc *.egg
+prune deluge/plugins/*/build
+prune deluge/plugins/*/*.egg-info
+
+graft deluge/tests/
+recursive-exclude deluge/tests *.pyc
+
+graft deluge/ui/data
+recursive-exclude deluge/ui/data *.desktop *.xml
+graft deluge/ui/gtk3/glade
+
+include deluge/ui/web/index.html
+include deluge/ui/web/css/*.css
+include deluge/ui/web/js/*.js
+graft deluge/ui/web/js/deluge-all/
+graft deluge/ui/web/js/extjs/
+graft deluge/ui/web/themes
+graft deluge/ui/web/render
+graft deluge/ui/web/icons
+graft deluge/ui/web/images
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a153d21
--- /dev/null
+++ b/README.md
@@ -0,0 +1,71 @@
+# Deluge BitTorrent Client
+
+[![build-status]][github-ci] [![docs-status]][rtd-deluge]
+
+Deluge is a BitTorrent client that utilizes a daemon/client model.
+It has various user interfaces available such as the GTK-UI, Web-UI and
+Console-UI. It uses [libtorrent][lt] at its core to handle the BitTorrent
+protocol.
+
+## Install
+
+From [PyPi](https://pypi.org/project/deluge):
+
+ pip install deluge
+
+with all optional dependencies:
+
+ pip install deluge[all]
+
+From source code:
+
+ pip install .
+
+with all optional dependencies:
+
+ pip install .[all]
+
+See [DEPENDS](DEPENDS.md) and [Installing/Source] for dependency details.
+
+## Usage
+
+The various user-interfaces and Deluge daemon can be started with the following commands.
+
+Use the `--help` option for further command options.
+
+### Gtk UI
+
+`deluge` or `deluge-gtk`
+
+### Console UI
+
+`deluge-console`
+
+### Web UI
+
+`deluge-web`
+
+Open http://localhost:8112 with default password `deluge`.
+
+### Daemon
+
+`deluged`
+
+See the [Thinclient guide] to connect to the daemon from another computer.
+
+## Contact
+
+- [Homepage](https://deluge-torrent.org)
+- [User guide][user guide]
+- [Forum](https://forum.deluge-torrent.org)
+- [IRC Libera.Chat #deluge](irc://irc.libera.chat/deluge)
+- [Discord](https://discord.gg/nwaHSE6tqn)
+
+[user guide]: https://dev.deluge-torrent.org/wiki/UserGuide
+[thinclient guide]: https://dev.deluge-torrent.org/wiki/UserGuide/ThinClient
+[installing/source]: https://dev.deluge-torrent.org/wiki/Installing/Source
+[build-status]: https://github.com/deluge-torrent/deluge/actions/workflows/ci.yml/badge.svg?branch=develop "CI"
+[github-ci]: https://github.com/deluge-torrent/deluge/actions/workflows/ci.yml
+[docs-status]: https://readthedocs.org/projects/deluge/badge/?version=latest
+[rtd-deluge]: https://deluge.readthedocs.io/en/latest/?badge=latest "Documentation Status"
+[lt]: https://libtorrent.org
diff --git a/deluge/__init__.py b/deluge/__init__.py
new file mode 100644
index 0000000..1836ded
--- /dev/null
+++ b/deluge/__init__.py
@@ -0,0 +1 @@
+"""Deluge"""
diff --git a/deluge/_libtorrent.py b/deluge/_libtorrent.py
new file mode 100644
index 0000000..642855c
--- /dev/null
+++ b/deluge/_libtorrent.py
@@ -0,0 +1,35 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""
+This module is used to handle the importing of libtorrent and also controls
+the minimum versions of libtorrent that this version of Deluge supports.
+
+Example:
+ >>> from deluge._libtorrent import lt
+
+"""
+from deluge.common import VersionSplit, get_version
+from deluge.error import LibtorrentImportError
+
+try:
+ import deluge.libtorrent as lt
+except ImportError:
+ try:
+ import libtorrent as lt
+ except ImportError as ex:
+ raise LibtorrentImportError('No libtorrent library found: %s' % (ex))
+
+
+REQUIRED_VERSION = '1.2.0.0'
+LT_VERSION = lt.__version__
+
+if VersionSplit(LT_VERSION) < VersionSplit(REQUIRED_VERSION):
+ raise LibtorrentImportError(
+ f'Deluge {get_version()} requires libtorrent >= {REQUIRED_VERSION}'
+ )
diff --git a/deluge/argparserbase.py b/deluge/argparserbase.py
new file mode 100644
index 0000000..5dc4330
--- /dev/null
+++ b/deluge/argparserbase.py
@@ -0,0 +1,384 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import argparse
+import logging
+import os
+import platform
+import sys
+import textwrap
+
+import deluge.log
+from deluge import common
+from deluge.configmanager import get_config_dir, set_config_dir
+
+
+def find_subcommand(self, args=None, sys_argv=True):
+ """Find if a subcommand has been supplied.
+
+ Args:
+ args (list, optional): The argument list to search through.
+ sys_argv (bool): Use sys.argv[1:] if args is None.
+
+ Returns:
+ int: Index of the subcommand or '-1' if none found.
+
+ """
+ subcommand_found = -1
+ if args is None:
+ args = sys.argv[1:] if sys_argv is None else []
+
+ for x in self._subparsers._actions:
+ if not isinstance(x, argparse._SubParsersAction):
+ continue
+ for sp_name in x._name_parser_map:
+ if sp_name in args:
+ subcommand_found = args.index(sp_name)
+
+ return subcommand_found
+
+
+def set_default_subparser(self, name, abort_opts=None):
+ """Sets the default argparse subparser.
+
+ Args:
+ name (str): The name of the default subparser.
+ abort_opts (list): The arguments to test for in case no subcommand is found.
+ If any of the values are found, the default subparser will
+ not be inserted into sys.argv.
+
+ Returns:
+ list: The arguments found in sys.argv if no subcommand found, else None
+
+ """
+ found_abort_opts = []
+ abort_opts = [] if abort_opts is None else abort_opts
+ test_args = sys.argv[1:]
+ subparser_found = self.find_subcommand(args=test_args)
+
+ for i, arg in enumerate(test_args):
+ if subparser_found == i:
+ break
+ if arg in abort_opts:
+ found_abort_opts.append(arg)
+
+ if subparser_found == -1:
+ if found_abort_opts:
+ # Found one or more of arguments in abort_opts
+ return found_abort_opts
+
+ # insert default in first position, this implies no
+ # global options without a sub_parsers specified
+ sys.argv.insert(1, name)
+
+ return None
+
+
+argparse.ArgumentParser.find_subcommand = find_subcommand
+argparse.ArgumentParser.set_default_subparser = set_default_subparser
+
+
+def _get_version_detail():
+ version_str = '%s\n' % (common.get_version())
+ try:
+ from deluge._libtorrent import LT_VERSION
+
+ version_str += 'libtorrent: %s\n' % LT_VERSION
+ except ImportError:
+ pass
+ version_str += 'Python: %s\n' % platform.python_version()
+ version_str += f'OS: {platform.system()} {common.get_os_version()}\n'
+ return version_str
+
+
+class DelugeTextHelpFormatter(argparse.RawDescriptionHelpFormatter):
+ """Help message formatter which retains formatting of all help text."""
+
+ def _split_lines(self, text, width):
+ """
+ Do not remove whitespaces in string but still wrap text to max width.
+ Instead of passing the entire text to textwrap.wrap, split and pass each
+ line instead. This way list formatting is not mangled by textwrap.wrap.
+ """
+ wrapped_lines = []
+ for line in text.splitlines():
+ wrapped_lines.extend(textwrap.wrap(line, width, subsequent_indent=' '))
+ return wrapped_lines
+
+ def _format_action_invocation(self, action):
+ """
+ Combines the options with comma and displays the argument
+ value only once instead of after both options.
+ Instead of: -s <arg>, --long-opt <arg>
+ Show : -s, --long-opt <arg>
+
+ """
+ if not action.option_strings:
+ (metavar,) = self._metavar_formatter(action, action.dest)(1)
+ return metavar
+ else:
+ parts = []
+ # if the Optional doesn't take a value, format is:
+ # -s, --long
+ if action.nargs == 0:
+ parts.extend(action.option_strings)
+
+ # if the Optional takes a value, format is:
+ # -s, --long ARGS
+ else:
+ default = action.dest.upper()
+ args_string = self._format_args(action, default)
+ opt = ', '.join(action.option_strings)
+ parts.append(f'{opt} {args_string}')
+ return ', '.join(parts)
+
+
+class HelpAction(argparse._HelpAction):
+ def __call__(self, parser, namespace, values, option_string=None):
+ if hasattr(parser, 'subparser'):
+ subparser = getattr(parser, 'subparser')
+ subparser.print_help()
+ else:
+ parser.print_help()
+ parser.exit()
+
+
+class ArgParserBase(argparse.ArgumentParser):
+ def __init__(self, *args, **kwargs):
+ if 'formatter_class' not in kwargs:
+ kwargs['formatter_class'] = lambda prog: DelugeTextHelpFormatter(
+ prog, max_help_position=33, width=90
+ )
+
+ kwargs['add_help'] = kwargs.get('add_help', False)
+ common_help = kwargs.pop('common_help', True)
+ self.log_stream = sys.stdout
+ if 'log_stream' in kwargs:
+ self.log_stream = kwargs['log_stream']
+ del kwargs['log_stream']
+
+ super().__init__(*args, **kwargs)
+
+ self.common_setup = False
+ self.process_arg_group = False
+ self.group = self.add_argument_group(_('Common Options'))
+ if common_help:
+ self.group.add_argument(
+ '-h', '--help', action=HelpAction, help=_('Print this help message')
+ )
+ self.group.add_argument(
+ '-V',
+ '--version',
+ action='version',
+ version='%(prog)s ' + _get_version_detail(),
+ help=_('Print version information'),
+ )
+ self.group.add_argument(
+ '-v',
+ action='version',
+ version='%(prog)s ' + _get_version_detail(),
+ help=argparse.SUPPRESS,
+ ) # Deprecated arg
+ self.group.add_argument(
+ '-c',
+ '--config',
+ metavar='<config>',
+ help=_('Set the config directory path'),
+ )
+ self.group.add_argument(
+ '-l',
+ '--logfile',
+ metavar='<logfile>',
+ help=_('Output to specified logfile instead of stdout'),
+ )
+ self.group.add_argument(
+ '-L',
+ '--loglevel',
+ choices=[level for k in deluge.log.levels for level in (k, k.upper())],
+ help=_('Set the log level (none, error, warning, info, debug)'),
+ metavar='<level>',
+ )
+ self.group.add_argument(
+ '--logrotate',
+ nargs='?',
+ const='2M',
+ metavar='<max-size>',
+ help=_(
+ 'Enable logfile rotation, with optional maximum logfile size, '
+ 'default: %(const)s (Logfile rotation count is 5)'
+ ),
+ )
+ self.group.add_argument(
+ '-q',
+ '--quiet',
+ action='store_true',
+ help=_('Quieten logging output (Same as `--loglevel none`)'),
+ )
+ self.group.add_argument(
+ '--profile',
+ metavar='<profile-file>',
+ nargs='?',
+ default=False,
+ help=_(
+ 'Profile %(prog)s with cProfile. Outputs to stdout '
+ 'unless a filename is specified'
+ ),
+ )
+
+ def parse_args(self, args=None):
+ """Parse UI arguments and handle common and process group options.
+
+ Notes:
+ Unknown arguments results in usage text printed and system exit.
+
+ Args:
+ args (list, optional): The arguments to parse.
+
+ Returns:
+ argparse.Namespace: The parsed arguments.
+
+ """
+ options = super().parse_args(args=args)
+ return self._handle_ui_options(options)
+
+ def parse_known_ui_args(self, args, withhold=None):
+ """Parse UI arguments and handle common and process group options without error.
+
+ Args:
+ args (list): The arguments to parse.
+ withhold (list): Values to ignore in the args list.
+
+ Returns:
+ argparse.Namespace: The parsed arguments.
+
+ """
+ if withhold:
+ args = [a for a in args if a not in withhold]
+ options, remaining = super().parse_known_args(args=args)
+ options.remaining = remaining
+ # Handle common and process group options
+ return self._handle_ui_options(options)
+
+ def _handle_ui_options(self, options):
+ """Handle UI common and process group options.
+
+ Args:
+ options (argparse.Namespace): The parsed options.
+
+ Returns:
+ argparse.Namespace: The parsed options.
+
+ """
+ if not self.common_setup:
+ self.common_setup = True
+
+ # Setup the logger
+ if options.quiet:
+ options.loglevel = 'none'
+ if options.loglevel:
+ options.loglevel = options.loglevel.lower()
+
+ logfile_mode = 'w'
+ logrotate = options.logrotate
+ if options.logrotate:
+ logfile_mode = 'a'
+ logrotate = common.parse_human_size(options.logrotate)
+
+ # Setup the logger
+ deluge.log.setup_logger(
+ level=options.loglevel,
+ filename=options.logfile,
+ filemode=logfile_mode,
+ logrotate=logrotate,
+ output_stream=self.log_stream,
+ )
+
+ if options.config:
+ if not set_config_dir(options.config):
+ log = logging.getLogger(__name__)
+ log.error('There was an error setting the config dir! Exiting..')
+ sys.exit(1)
+ else:
+ if not os.path.exists(common.get_default_config_dir()):
+ os.makedirs(common.get_default_config_dir())
+
+ if self.process_arg_group:
+ self.process_arg_group = False
+ # If donotdaemonize is set, skip process forking.
+ if not (common.windows_check() or options.donotdaemonize):
+ if os.fork():
+ os._exit(0)
+ os.setsid()
+ # Do second fork
+ if os.fork():
+ os._exit(0)
+ # Ensure process doesn't keep any directory in use that may prevent a filesystem unmount.
+ os.chdir(get_config_dir())
+
+ # Write pid file before chuid
+ if options.pidfile:
+ with open(options.pidfile, 'w') as _file:
+ _file.write('%d\n' % os.getpid())
+
+ if not common.windows_check():
+ if options.group:
+ if not options.group.isdigit():
+ import grp
+
+ options.group = grp.getgrnam(options.group)[2]
+ os.setgid(options.group)
+ if options.user:
+ if not options.user.isdigit():
+ import pwd
+
+ options.user = pwd.getpwnam(options.user)[2]
+ os.setuid(options.user)
+
+ return options
+
+ def add_process_arg_group(self):
+ """Adds a grouping of common process args to control a daemon to the parser"""
+
+ self.process_arg_group = True
+ self.group = self.add_argument_group(_('Process Control Options'))
+ self.group.add_argument(
+ '-P',
+ '--pidfile',
+ metavar='<pidfile>',
+ action='store',
+ help=_('Pidfile to store the process id'),
+ )
+ if not common.windows_check():
+ self.group.add_argument(
+ '-d',
+ '--do-not-daemonize',
+ dest='donotdaemonize',
+ action='store_true',
+ help=_('Do not daemonize (fork) this process'),
+ )
+ self.group.add_argument(
+ '-f',
+ '--fork',
+ dest='donotdaemonize',
+ action='store_false',
+ help=argparse.SUPPRESS,
+ ) # Deprecated arg
+ self.group.add_argument(
+ '-U',
+ '--user',
+ metavar='<user>',
+ action='store',
+ help=_('Change to this user on startup (Requires root)'),
+ )
+ self.group.add_argument(
+ '-g',
+ '--group',
+ metavar='<group>',
+ action='store',
+ help=_('Change to this group on startup (Requires root)'),
+ )
diff --git a/deluge/bencode.py b/deluge/bencode.py
new file mode 100644
index 0000000..df8cc85
--- /dev/null
+++ b/deluge/bencode.py
@@ -0,0 +1,147 @@
+# The contents of this file are subject to the Python Software Foundation
+# License Version 2.3 (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.python.org/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
+# Updated by Calum Lind to support Python 3.
+
+
+class BTFailure(Exception):
+ pass
+
+
+DICT_DELIM = b'd'
+END_DELIM = b'e'
+INT_DELIM = b'i'
+LIST_DELIM = b'l'
+BYTE_SEP = b':'
+
+
+def decode_int(x, f):
+ f += 1
+ newf = x.index(END_DELIM, f)
+ n = int(x[f:newf])
+ if x[f : f + 1] == b'-' and x[f + 1 : f + 2] == b'0':
+ raise ValueError
+ elif x[f : f + 1] == b'0' and newf != f + 1:
+ raise ValueError
+ return (n, newf + 1)
+
+
+def decode_string(x, f):
+ colon = x.index(BYTE_SEP, f)
+ n = int(x[f:colon])
+ if x[f : f + 1] == b'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 : f + 1] != END_DELIM:
+ v, f = decode_func[x[f : f + 1]](x, f)
+ r.append(v)
+ return (r, f + 1)
+
+
+def decode_dict(x, f):
+ r, f = {}, f + 1
+ while x[f : f + 1] != END_DELIM:
+ k, f = decode_string(x, f)
+ r[k], f = decode_func[x[f : f + 1]](x, f)
+ return (r, f + 1)
+
+
+decode_func = {}
+decode_func[LIST_DELIM] = decode_list
+decode_func[DICT_DELIM] = decode_dict
+decode_func[INT_DELIM] = decode_int
+decode_func[b'0'] = decode_string
+decode_func[b'1'] = decode_string
+decode_func[b'2'] = decode_string
+decode_func[b'3'] = decode_string
+decode_func[b'4'] = decode_string
+decode_func[b'5'] = decode_string
+decode_func[b'6'] = decode_string
+decode_func[b'7'] = decode_string
+decode_func[b'8'] = decode_string
+decode_func[b'9'] = decode_string
+
+
+def bdecode(x):
+ try:
+ r, __ = decode_func[x[0:1]](x, 0)
+ except (LookupError, TypeError, ValueError):
+ raise BTFailure('Not a valid bencoded string')
+ else:
+ return r
+
+
+class Bencached:
+ __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((INT_DELIM, str(x).encode('utf8'), END_DELIM))
+
+
+def encode_bool(x, r):
+ encode_int(1 if x else 0, r)
+
+
+def encode_string(x, r):
+ encode_bytes(x.encode('utf8'), r)
+
+
+def encode_bytes(x, r):
+ r.extend((str(len(x)).encode('utf8'), BYTE_SEP, x))
+
+
+def encode_list(x, r):
+ r.append(LIST_DELIM)
+ for i in x:
+ encode_func[type(i)](i, r)
+ r.append(END_DELIM)
+
+
+def encode_dict(x, r):
+ r.append(DICT_DELIM)
+ for k, v in sorted(x.items()):
+ try:
+ k = k.encode('utf8')
+ except AttributeError:
+ pass
+ r.extend((str(len(k)).encode('utf8'), BYTE_SEP, k))
+ encode_func[type(v)](v, r)
+ r.append(END_DELIM)
+
+
+encode_func = {}
+encode_func[Bencached] = encode_bencached
+encode_func[int] = encode_int
+encode_func[list] = encode_list
+encode_func[tuple] = encode_list
+encode_func[dict] = encode_dict
+encode_func[bool] = encode_bool
+encode_func[str] = encode_string
+encode_func[bytes] = encode_bytes
+
+
+def bencode(x):
+ r = []
+ encode_func[type(x)](x, r)
+ return b''.join(r)
diff --git a/deluge/common.py b/deluge/common.py
new file mode 100644
index 0000000..be65544
--- /dev/null
+++ b/deluge/common.py
@@ -0,0 +1,1408 @@
+#
+# Copyright (C) 2007,2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""Common functions for various parts of Deluge to use."""
+import base64
+import binascii
+import functools
+import glob
+import logging
+import numbers
+import os
+import platform
+import re
+import socket
+import subprocess
+import sys
+import tarfile
+import time
+from contextlib import closing
+from datetime import datetime
+from importlib import resources
+from io import BytesIO
+from pathlib import Path
+from urllib.parse import unquote_plus, urljoin
+from urllib.request import pathname2url
+
+from deluge.decorators import deprecated
+from deluge.error import InvalidPathError
+
+try:
+ from importlib.metadata import distribution
+except ImportError:
+ from pkg_resources import get_distribution as distribution
+
+
+try:
+ import chardet
+except ImportError:
+ chardet = None
+
+# Windows workaround for HTTPS requests requiring certificate authority bundle.
+# see: https://twistedmatrix.com/trac/ticket/9209
+if platform.system() in ('Windows', 'Microsoft'):
+ from certifi import where
+
+ os.environ['SSL_CERT_FILE'] = where()
+
+try:
+ import ifaddr
+except ImportError:
+ ifaddr = None
+
+
+if platform.system() not in ('Windows', 'Microsoft', 'Darwin'):
+ # gi makes dbus available on Window but don't import it as unused.
+ try:
+ import dbus
+ except ImportError:
+ dbus = None
+ try:
+ import distro
+ except ImportError:
+ distro = None
+
+log = logging.getLogger(__name__)
+
+TORRENT_STATE = [
+ 'Allocating',
+ 'Checking',
+ 'Downloading',
+ 'Seeding',
+ 'Paused',
+ 'Error',
+ 'Queued',
+ 'Moving',
+]
+
+# The output formatting for json.dump
+JSON_FORMAT = {'indent': 4, 'sort_keys': True, 'ensure_ascii': False}
+
+DBUS_FM_ID = 'org.freedesktop.FileManager1'
+DBUS_FM_PATH = '/org/freedesktop/FileManager1'
+
+# Retained for plugin backward compatibility
+PY2 = False
+
+
+def get_version():
+ """The program version from the egg metadata.
+
+ Returns:
+ str: The version of Deluge.
+ """
+ return distribution('Deluge').version
+
+
+def get_default_config_dir(filename=None):
+ """
+ :param filename: if None, only the config path is returned, if provided,
+ a path including the filename will be returned
+ :type filename: string
+ :returns: a file path to the config directory and optional filename
+ :rtype: string
+
+ """
+
+ if windows_check():
+
+ def save_config_path(resource):
+ app_data_path = os.environ.get('APPDATA')
+ if not app_data_path:
+ import winreg
+
+ hkey = winreg.OpenKey(
+ winreg.HKEY_CURRENT_USER,
+ 'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders',
+ )
+ app_data_reg = winreg.QueryValueEx(hkey, 'AppData')
+ app_data_path = app_data_reg[0]
+ winreg.CloseKey(hkey)
+ return os.path.join(app_data_path, resource)
+
+ else:
+ from xdg.BaseDirectory import save_config_path
+ if not filename:
+ filename = ''
+ try:
+ return decode_bytes(os.path.join(save_config_path('deluge'), filename))
+ except OSError as ex:
+ log.error('Unable to use default config directory, exiting... (%s)', ex)
+ sys.exit(1)
+
+
+def get_default_download_dir():
+ """
+ :returns: the default download directory
+ :rtype: string
+
+ """
+ download_dir = ''
+ if not windows_check():
+ from xdg.BaseDirectory import xdg_config_home
+
+ try:
+ user_dirs_path = os.path.join(xdg_config_home, 'user-dirs.dirs')
+ with open(user_dirs_path, encoding='utf8') as _file:
+ for line in _file:
+ if not line.startswith('#') and line.startswith('XDG_DOWNLOAD_DIR'):
+ download_dir = os.path.expandvars(
+ line.partition('=')[2].rstrip().strip('"')
+ )
+ break
+ except OSError:
+ pass
+
+ if not download_dir:
+ download_dir = os.path.join(os.path.expanduser('~'), 'Downloads')
+ return download_dir
+
+
+def archive_files(arc_name, filepaths, message=None, rotate=10):
+ """Compress a list of filepaths into timestamped tarball in config dir.
+
+ The archiving config directory is 'archive'.
+
+ Args:
+ arc_name (str): The archive output filename (appended with timestamp).
+ filepaths (list): A list of the files to be archived into tarball.
+
+ Returns:
+ str: The full archive filepath.
+
+ """
+
+ from deluge.configmanager import get_config_dir
+
+ # Set archive compression to lzma
+ arc_comp = 'xz'
+
+ archive_dir = os.path.join(get_config_dir(), 'archive')
+ timestamp = datetime.now().replace(microsecond=0).isoformat().replace(':', '-')
+ arc_filepath = os.path.join(
+ archive_dir, arc_name + '-' + timestamp + '.tar.' + arc_comp
+ )
+
+ if not os.path.exists(archive_dir):
+ os.makedirs(archive_dir)
+ else:
+ all_arcs = glob.glob(os.path.join(archive_dir, arc_name) + '*')
+ if len(all_arcs) >= rotate:
+ log.warning(
+ 'Too many existing archives for %s. Deleting oldest archive.', arc_name
+ )
+ os.remove(sorted(all_arcs)[0])
+
+ try:
+ with tarfile.open(arc_filepath, 'w:' + arc_comp) as tar:
+ for filepath in filepaths:
+ if not os.path.isfile(filepath):
+ continue
+ tar.add(filepath, arcname=os.path.basename(filepath))
+ if message:
+ with closing(BytesIO(message.encode('utf8'))) as fobj:
+ tarinfo = tarfile.TarInfo('archive_message.txt')
+ tarinfo.size = len(fobj.getvalue())
+ tarinfo.mtime = time.time()
+ tar.addfile(tarinfo, fileobj=fobj)
+ except OSError:
+ log.error('Problem occurred archiving filepaths: %s', filepaths)
+ return False
+ else:
+ return arc_filepath
+
+
+def windows_check():
+ """
+ Checks if the current platform is Windows
+
+ :returns: True or False
+ :rtype: bool
+
+ """
+ return platform.system() in ('Windows', 'Microsoft')
+
+
+def vista_check():
+ """
+ Checks if the current platform is Windows Vista
+
+ :returns: True or False
+ :rtype: bool
+
+ """
+ return platform.release() == 'Vista'
+
+
+def osx_check():
+ """
+ Checks if the current platform is Mac OS X
+
+ :returns: True or False
+ :rtype: bool
+
+ """
+ return platform.system() == 'Darwin'
+
+
+def linux_check():
+ """
+ Checks if the current platform is Linux
+
+ :returns: True or False
+ :rtype: bool
+
+ """
+ return platform.system() == 'Linux'
+
+
+def get_os_version():
+ """Parse and return the os version information.
+
+ Converts the platform ver tuple to a string.
+
+ Returns:
+ str: The os version info.
+
+ """
+ if windows_check():
+ os_version = platform.win32_ver()
+ elif osx_check():
+ os_version = list(platform.mac_ver())
+ os_version[1] = '' # versioninfo always empty.
+ elif distro:
+ os_version = (distro.name(), distro.version(), distro.codename())
+ else:
+ os_version = (platform.release(),)
+
+ return ' '.join(filter(None, os_version))
+
+
+def get_pixmap(fname):
+ """
+ Provides easy access to files in the deluge/ui/data/pixmaps folder within the Deluge egg
+
+ :param fname: the filename to look for
+ :type fname: string
+ :returns: a path to a pixmap file included with Deluge
+ :rtype: string
+
+ """
+ return resource_filename('deluge', os.path.join('ui', 'data', 'pixmaps', fname))
+
+
+def resource_filename(module: str, path: str) -> str:
+ """Get filesystem path for a non-python resource.
+
+ Abstracts getting module resource files. Originally created to
+ workaround pkg_resources.resource_filename limitations with
+ multiple Deluge packages installed.
+ """
+ path = Path(path)
+
+ try:
+ with resources.as_file(resources.files(module) / path) as resource_file:
+ return str(resource_file)
+ except AttributeError:
+ # Python <= 3.8
+ with resources.path(module, path.parts[0]) as resource_file:
+ return str(resource_file.joinpath(*path.parts[1:]))
+
+
+def open_file(path, timestamp=None):
+ """Opens a file or folder using the system configured program.
+
+ Args:
+ path (str): The path to the file or folder to open.
+ timestamp (int, optional): An event request timestamp.
+
+ """
+ if windows_check():
+ os.startfile(path)
+ elif osx_check():
+ subprocess.Popen(['open', path])
+ else:
+ if timestamp is None:
+ timestamp = int(time.time())
+ env = os.environ.copy()
+ env['DESKTOP_STARTUP_ID'] = '%s-%u-%s-xdg_open_TIME%d' % (
+ os.path.basename(sys.argv[0]),
+ os.getpid(),
+ os.uname()[1],
+ timestamp,
+ )
+ subprocess.Popen(['xdg-open', '%s' % path], env=env)
+
+
+def show_file(path, timestamp=None):
+ """Shows (highlights) a file or folder using the system configured file manager.
+
+ Args:
+ path (str): The path to the file or folder to show.
+ timestamp (int, optional): An event request timestamp.
+
+ """
+ if windows_check():
+ subprocess.Popen(['explorer', '/select,', path])
+ elif osx_check():
+ subprocess.Popen(['open', '-R', path])
+ else:
+ if timestamp is None:
+ timestamp = int(time.time())
+ startup_id = '%s_%u_%s-dbus_TIME%d TIMESTAMP=%d' % (
+ os.path.basename(sys.argv[0]),
+ os.getpid(),
+ os.uname()[1],
+ timestamp,
+ timestamp,
+ )
+
+ if dbus:
+ bus = dbus.SessionBus()
+ try:
+ filemanager1 = bus.get_object(DBUS_FM_ID, DBUS_FM_PATH)
+ except dbus.exceptions.DBusException as ex:
+ log.debug('Unable to get dbus file manager: %s', ex)
+ # Fallback to xdg-open
+ else:
+ paths = [urljoin('file:', pathname2url(path))]
+ filemanager1.ShowItems(paths, startup_id, dbus_interface=DBUS_FM_ID)
+ return
+
+ env = os.environ.copy()
+ env['DESKTOP_STARTUP_ID'] = startup_id.replace('dbus', 'xdg-open')
+ # No option in xdg to highlight a file so just open parent folder.
+ subprocess.Popen(['xdg-open', os.path.dirname(path.rstrip('/'))], env=env)
+
+
+def open_url_in_browser(url):
+ """
+ Opens a URL in the desktop's default browser
+
+ :param url: the URL to open
+ :type url: string
+
+ """
+ import webbrowser
+
+ webbrowser.open(url)
+
+
+# Formatting text functions
+byte_txt = 'B'
+kib_txt = 'KiB'
+mib_txt = 'MiB'
+gib_txt = 'GiB'
+tib_txt = 'TiB'
+kib_txt_short = 'K'
+mib_txt_short = 'M'
+gib_txt_short = 'G'
+tib_txt_short = 'T'
+
+
+def translate_size_units():
+ """For performance reasons these units are translated outside the function"""
+
+ global byte_txt, kib_txt, mib_txt, gib_txt, tib_txt
+ global kib_txt_short, mib_txt_short, gib_txt_short, tib_txt_short
+
+ byte_txt = _('B')
+ kib_txt = _('KiB')
+ mib_txt = _('MiB')
+ gib_txt = _('GiB')
+ tib_txt = _('TiB')
+ kib_txt_short = _('K')
+ mib_txt_short = _('M')
+ gib_txt_short = _('G')
+ tib_txt_short = _('T')
+
+
+def fsize(fsize_b, precision=1, shortform=False):
+ """Formats the bytes value into a string with KiB, MiB, GiB or TiB units.
+
+ Args:
+ fsize_b (int): The filesize in bytes.
+ precision (int): The output float precision, 1 by default.
+ shortform (bool): The output short|long form, False (long form) by default.
+
+ Returns:
+ str: A formatted string in KiB, MiB, GiB or TiB units.
+
+ Examples:
+ >>> fsize(112245)
+ '109.6 KiB'
+ >>> fsize(112245, precision=0)
+ '110 KiB'
+ >>> fsize(112245, shortform=True)
+ '109.6 K'
+
+ Note:
+ This function has been refactored for performance with the
+ fsize units being translated outside the function.
+
+ Notice that short forms K|M|G|T are synonymous here with
+ KiB|MiB|GiB|TiB. They are powers of 1024, not 1000.
+
+ """
+
+ if fsize_b >= 1024**4:
+ return '%.*f %s' % (
+ precision,
+ fsize_b / 1024**4,
+ tib_txt_short if shortform else tib_txt,
+ )
+ elif fsize_b >= 1024**3:
+ return '%.*f %s' % (
+ precision,
+ fsize_b / 1024**3,
+ gib_txt_short if shortform else gib_txt,
+ )
+ elif fsize_b >= 1024**2:
+ return '%.*f %s' % (
+ precision,
+ fsize_b / 1024**2,
+ mib_txt_short if shortform else mib_txt,
+ )
+ elif fsize_b >= 1024:
+ return '%.*f %s' % (
+ precision,
+ fsize_b / 1024,
+ kib_txt_short if shortform else kib_txt,
+ )
+ else:
+ return '%d %s' % (fsize_b, byte_txt)
+
+
+def fpcnt(dec, precision=2):
+ """Formats a string to display a percentage with <precision> places.
+
+ Args:
+ dec (float): The ratio in the range [0.0, 1.0].
+ precision (int): The output float precision, 2 by default.
+
+ Returns:
+ str: A formatted string representing a percentage.
+
+ Examples:
+ >>> fpcnt(0.9311)
+ '93.11%'
+ >>> fpcnt(0.9311, precision=0)
+ '93%'
+
+ """
+
+ pcnt = dec * 100
+ if pcnt == 0 or pcnt == 100:
+ precision = 0
+ return '%.*f%%' % (precision, pcnt)
+
+
+def fspeed(bps, precision=1, shortform=False):
+ """Formats a string to display a transfer speed.
+
+ Args:
+ bps (int): The speed in bytes per second.
+ precision (int): The output float precision, 1 by default.
+ shortform (bool): The output short|long form, False (long form) by default.
+
+ Returns:
+ str: A formatted string representing transfer speed.
+
+ Examples:
+ >>> fspeed(43134)
+ '42.1 KiB/s'
+
+ Note:
+ Notice that short forms K|M|G|T are synonymous here with
+ KiB|MiB|GiB|TiB. They are powers of 1024, not 1000.
+
+ """
+
+ if bps < 1024**2:
+ return '%.*f %s' % (
+ precision,
+ bps / 1024,
+ _('K/s') if shortform else _('KiB/s'),
+ )
+ elif bps < 1024**3:
+ return '%.*f %s' % (
+ precision,
+ bps / 1024**2,
+ _('M/s') if shortform else _('MiB/s'),
+ )
+ elif bps < 1024**4:
+ return '%.*f %s' % (
+ precision,
+ bps / 1024**3,
+ _('G/s') if shortform else _('GiB/s'),
+ )
+ else:
+ return '%.*f %s' % (
+ precision,
+ bps / 1024**4,
+ _('T/s') if shortform else _('TiB/s'),
+ )
+
+
+def fpeer(num_peers, total_peers):
+ """Formats a string to show 'num_peers' ('total_peers').
+
+ Args:
+ num_peers (int): The number of connected peers.
+ total_peers (int): The total number of peers.
+
+ Returns:
+ str: A formatted string 'num_peers (total_peers)' or if total_peers < 0, just 'num_peers'.
+
+ Examples:
+ >>> fpeer(10, 20)
+ '10 (20)'
+ >>> fpeer(10, -1)
+ '10'
+
+ """
+ if total_peers > -1:
+ return f'{num_peers:d} ({total_peers:d})'
+ else:
+ return f'{num_peers:d}'
+
+
+def ftime(secs):
+ """Formats a string to show time in a human readable form.
+
+ Args:
+ secs (int or float): The number of seconds.
+
+ Returns:
+ str: A formatted time string or empty string if value is 0.
+
+ Examples:
+ >>> ftime(23011)
+ '6h 23m'
+
+ Note:
+ This function has been refactored for performance.
+
+ """
+
+ # Handle floats by truncating to an int
+ secs = int(secs)
+ if secs <= 0:
+ time_str = ''
+ elif secs < 60:
+ time_str = f'{secs}s'
+ elif secs < 3600:
+ time_str = f'{secs // 60}m {secs % 60}s'
+ elif secs < 86400:
+ time_str = f'{secs // 3600}h {secs // 60 % 60}m'
+ elif secs < 604800:
+ time_str = f'{secs // 86400}d {secs // 3600 % 24}h'
+ elif secs < 31449600:
+ time_str = f'{secs // 604800}w {secs // 86400 % 7}d'
+ else:
+ time_str = f'{secs // 31449600}y {secs // 604800 % 52}w'
+ return time_str
+
+
+def fdate(seconds, date_only=False, precision_secs=False):
+ """Formats a date time string in the locale's date representation based on the system's timezone.
+
+ Args:
+ seconds (float): Time in seconds since the Epoch.
+ date_only (bool): Whether to include only the date, False by default.
+ precision_secs (bool): Include seconds in time format, False by default.
+
+ Returns:
+ str: A string in the locale's datetime representation or "" if seconds < 0
+
+ """
+
+ if seconds < 0:
+ return ''
+ time_format = '%x %X' if precision_secs else '%x %H:%M'
+ if date_only:
+ time_format = time_format.split()[0]
+ return time.strftime(time_format, time.localtime(seconds))
+
+
+def tokenize(text):
+ """
+ Tokenize a text into numbers and strings.
+
+ Args:
+ text (str): The text to tokenize (a string).
+
+ Returns:
+ list: A list of strings and/or numbers.
+
+ Note:
+ This function is used to implement robust tokenization of user input
+ It automatically coerces integer and floating point numbers, ignores
+ whitespace and knows how to separate numbers from strings even without
+ whitespace.
+
+ Possible optimization: move the 2 regexes outside of function.
+
+ """
+ tokenized_input = []
+ for token in re.split(r'(\d+(?:\.\d+)?)', text):
+ token = token.strip()
+ if re.match(r'\d+\.\d+', token):
+ tokenized_input.append(float(token))
+ elif token.isdigit():
+ tokenized_input.append(int(token))
+ elif token:
+ tokenized_input.append(token)
+ return tokenized_input
+
+
+size_units = [
+ {'prefix': 'b', 'divider': 1, 'singular': 'byte', 'plural': 'bytes'},
+ {'prefix': 'KiB', 'divider': 1024**1},
+ {'prefix': 'MiB', 'divider': 1024**2},
+ {'prefix': 'GiB', 'divider': 1024**3},
+ {'prefix': 'TiB', 'divider': 1024**4},
+ {'prefix': 'PiB', 'divider': 1024**5},
+ {'prefix': 'k', 'divider': 1000**1},
+ {'prefix': 'm', 'divider': 1000**2},
+ {'prefix': 'g', 'divider': 1000**3},
+ {'prefix': 't', 'divider': 1000**4},
+ {'prefix': 'p', 'divider': 1000**5},
+ {'prefix': 'KB', 'divider': 1000**1},
+ {'prefix': 'MB', 'divider': 1000**2},
+ {'prefix': 'GB', 'divider': 1000**3},
+ {'prefix': 'TB', 'divider': 1000**4},
+ {'prefix': 'PB', 'divider': 1000**5},
+]
+
+
+class InvalidSize(Exception):
+ pass
+
+
+def parse_human_size(size):
+ """
+ Parse a human readable data size and return the number of bytes.
+
+ Args:
+ size (str): The human readable file size to parse (a string).
+
+ Returns:
+ int: The corresponding size in bytes.
+
+ Raises:
+ InvalidSize: when the input can't be parsed.
+
+ """
+ tokens = tokenize(size)
+ if tokens and isinstance(tokens[0], numbers.Number):
+ # If the input contains only a number, it's assumed to be the number of bytes.
+ if len(tokens) == 1:
+ return int(tokens[0])
+ # Otherwise we expect to find two tokens: A number and a unit.
+ if len(tokens) == 2:
+ try:
+ normalized_unit = tokens[1].lower()
+ except AttributeError:
+ pass
+ else:
+ # Try to match the first letter of the unit.
+ for unit in size_units:
+ if normalized_unit.startswith(unit['prefix'].lower()):
+ return int(tokens[0] * unit['divider'])
+ # We failed to parse the size specification.
+ msg = 'Failed to parse size! (input %r was tokenized as %r)'
+ raise InvalidSize(msg % (size, tokens))
+
+
+def is_url(url):
+ """
+ A simple test to check if the URL is valid
+
+ :param url: the URL to test
+ :type url: string
+ :returns: True or False
+ :rtype: bool
+
+ :Example:
+
+ >>> is_url('http://deluge-torrent.org')
+ True
+
+ """
+ if not url:
+ return False
+
+ return url.partition('://')[0] in ('http', 'https', 'ftp', 'udp')
+
+
+def is_infohash(infohash):
+ """
+ A check to determine if a string is a valid infohash.
+
+ Args:
+ infohash (str): The string to check.
+
+ Returns:
+ bool: True if valid infohash, False otherwise.
+
+ """
+ if not infohash:
+ return False
+
+ return len(infohash) == 40 and infohash.isalnum()
+
+
+MAGNET_SCHEME = 'magnet:?'
+XT_BTIH_PARAM = 'xt=urn:btih:'
+DN_PARAM = 'dn='
+TR_PARAM = 'tr='
+TR_TIER_PARAM = 'tr.'
+TR_TIER_REGEX = re.compile(r'^tr.(\d+)=(\S+)')
+
+
+def is_magnet(uri):
+ """
+ A check to determine if a URI is a valid bittorrent magnet URI
+
+ :param uri: the URI to check
+ :type uri: string
+ :returns: True or False
+ :rtype: bool
+
+ :Example:
+
+ >>> is_magnet('magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN')
+ True
+
+ """
+ if not uri:
+ return False
+
+ return uri.startswith(MAGNET_SCHEME) and XT_BTIH_PARAM in uri
+
+
+def get_magnet_info(uri):
+ """Parse torrent information from magnet link.
+
+ Args:
+ uri (str): The magnet link.
+
+ Returns:
+ dict: Information about the magnet link.
+
+ Format of the magnet dict::
+
+ {
+ "name": the torrent name,
+ "info_hash": the torrents info_hash,
+ "files_tree": empty value for magnet links
+ }
+
+ """
+
+ if not uri.startswith(MAGNET_SCHEME):
+ return {}
+
+ name = None
+ info_hash = None
+ trackers = {}
+ tier = 0
+ for param in uri[len(MAGNET_SCHEME) :].split('&'):
+ if param.startswith(XT_BTIH_PARAM):
+ xt_hash = param[len(XT_BTIH_PARAM) :]
+ if len(xt_hash) == 32:
+ try:
+ infohash_str = base64.b32decode(xt_hash.upper())
+ except TypeError as ex:
+ log.debug('Invalid base32 magnet hash: %s, %s', xt_hash, ex)
+ break
+ info_hash = binascii.hexlify(infohash_str).decode()
+ elif is_infohash(xt_hash):
+ info_hash = xt_hash.lower()
+ else:
+ break
+ elif param.startswith(DN_PARAM):
+ name = unquote_plus(param[len(DN_PARAM) :])
+ elif param.startswith(TR_PARAM):
+ tracker = unquote_plus(param[len(TR_PARAM) :])
+ trackers[tracker] = tier
+ tier += 1
+ elif param.startswith(TR_TIER_PARAM):
+ tracker_match = re.match(TR_TIER_REGEX, param)
+ if not tracker_match:
+ continue
+
+ tier, tracker = tracker_match.groups()
+ tracker = unquote_plus(tracker)
+ trackers[tracker] = int(tier)
+
+ if info_hash:
+ if not name:
+ name = info_hash
+ return {
+ 'name': name,
+ 'info_hash': info_hash,
+ 'files_tree': '',
+ 'trackers': trackers,
+ }
+ else:
+ return {}
+
+
+def create_magnet_uri(infohash, name=None, trackers=None):
+ """Creates a magnet URI
+
+ Args:
+ infohash (str): The info-hash of the torrent.
+ name (str, optional): The name of the torrent.
+ trackers (list or dict, optional): A list of trackers or a dict or some {tracker: tier} pairs.
+
+ Returns:
+ str: A magnet URI string.
+
+ """
+ try:
+ infohash = binascii.unhexlify(infohash)
+ except TypeError:
+ infohash.encode('utf-8')
+
+ uri = [MAGNET_SCHEME, XT_BTIH_PARAM, base64.b32encode(infohash).decode('utf-8')]
+ if name:
+ uri.extend(['&', DN_PARAM, name])
+ if trackers:
+ try:
+ for tracker in sorted(trackers, key=trackers.__getitem__):
+ uri.extend(['&', 'tr.%d=' % trackers[tracker], tracker])
+ except TypeError:
+ for tracker in trackers:
+ uri.extend(['&', TR_PARAM, tracker])
+
+ return ''.join(uri)
+
+
+def get_path_size(path):
+ """
+ Gets the size in bytes of 'path'
+
+ :param path: the path to check for size
+ :type path: string
+ :returns: the size in bytes of the path or -1 if the path does not exist
+ :rtype: int
+
+ """
+ if not os.path.exists(path):
+ return -1
+
+ if os.path.isfile(path):
+ return os.path.getsize(path)
+
+ dir_size = 0
+ for p, dummy_dirs, files in os.walk(path):
+ for _file in files:
+ filename = os.path.join(p, _file)
+ dir_size += os.path.getsize(filename)
+ return dir_size
+
+
+def free_space(path):
+ """
+ Gets the free space available at 'path'
+
+ :param path: the path to check
+ :type path: string
+ :returns: the free space at path in bytes
+ :rtype: int
+
+ :raises InvalidPathError: if the path is not valid
+
+ """
+ if not path or not os.path.exists(path):
+ raise InvalidPathError('%s is not a valid path' % path)
+
+ if windows_check():
+ from win32file import GetDiskFreeSpaceEx
+
+ return GetDiskFreeSpaceEx(path)[0]
+ else:
+ disk_data = os.statvfs(path.encode('utf8'))
+ block_size = disk_data.f_frsize
+ return disk_data.f_bavail * block_size
+
+
+def is_interface(interface):
+ """Check if interface is a valid IP or network adapter.
+
+ Args:
+ interface (str): The IP or interface name to test.
+
+ Returns:
+ bool: Whether interface is valid is not.
+
+ Examples:
+ Windows:
+ >>> is_interface('{7A30AE62-23ZA-3744-Z844-A5B042524871}')
+ >>> is_interface('127.0.0.1')
+ True
+ Linux:
+ >>> is_interface('lo')
+ >>> is_interface('127.0.0.1')
+ True
+
+ """
+ return is_ip(interface) or is_interface_name(interface)
+
+
+def is_ip(ip):
+ """A test to see if 'ip' is a valid IPv4 or IPv6 address.
+
+ Args:
+ ip (str): The IP to test.
+
+ Returns:
+ bool: Whether IP is valid is not.
+
+ Examples:
+ >>> is_ip("192.0.2.0")
+ True
+ >>> is_ip("2001:db8::")
+ True
+
+ """
+
+ return is_ipv4(ip) or is_ipv6(ip)
+
+
+def is_ipv4(ip):
+ """A test to see if 'ip' is a valid IPv4 address.
+
+ Args:
+ ip (str): The IP to test.
+
+ Returns:
+ bool: Whether IP is valid is not.
+
+ Examples:
+ >>> is_ipv4("192.0.2.0")
+ True
+
+ """
+
+ try:
+ socket.inet_pton(socket.AF_INET, ip)
+ except OSError:
+ return False
+ else:
+ return True
+
+
+def is_ipv6(ip):
+ """A test to see if 'ip' is a valid IPv6 address.
+
+ Args:
+ ip (str): The IP to test.
+
+ Returns:
+ bool: Whether IP is valid is not.
+
+ Examples:
+ >>> is_ipv6("2001:db8::")
+ True
+
+ """
+
+ try:
+ socket.inet_pton(socket.AF_INET6, ip)
+ except OSError:
+ return False
+ else:
+ return True
+
+
+def is_interface_name(name):
+ """Returns True if an interface name exists.
+
+ Args:
+ name (str): The Interface to test. eg. eth0 linux. GUID on Windows.
+
+ Returns:
+ bool: Whether name is valid or not.
+
+ Examples:
+ >>> is_interface_name("eth0")
+ True
+ >>> is_interface_name("{7A30AE62-23ZA-3744-Z844-A5B042524871}")
+ True
+
+ """
+
+ if not windows_check():
+ try:
+ socket.if_nametoindex(name)
+ except OSError:
+ pass
+ else:
+ return True
+
+ if ifaddr:
+ try:
+ adapters = ifaddr.get_adapters()
+ except OSError:
+ return True
+ else:
+ return any([name == a.name for a in adapters])
+
+ if windows_check():
+ regex = '^{[0-9A-Z]{8}-([0-9A-Z]{4}-){3}[0-9A-Z]{12}}$'
+ return bool(re.search(regex, str(name)))
+
+ return True
+
+
+def decode_bytes(byte_str, encoding='utf8'):
+ """Decodes a byte string and return unicode.
+
+ If it cannot decode using `encoding` then it will try latin1,
+ and if that fails, try to detect the string encoding. If that fails,
+ decode with ignore.
+
+ Args:
+ byte_str (bytes): The byte string to decode.
+ encoding (str): The encoding to try first when decoding.
+
+ Returns:
+ str: A unicode string.
+
+ """
+ if not byte_str:
+ return ''
+ elif not isinstance(byte_str, bytes):
+ return byte_str
+
+ encodings = [lambda: ('utf8', 'strict'), lambda: ('iso-8859-1', 'strict')]
+ if chardet:
+ encodings.append(lambda: (chardet.detect(byte_str)['encoding'], 'strict'))
+ encodings.append(lambda: (encoding, 'ignore'))
+
+ if encoding.lower() not in ['utf8', 'utf-8']:
+ encodings.insert(0, lambda: (encoding, 'strict'))
+
+ for enc in encodings:
+ try:
+ return byte_str.decode(*enc())
+ except UnicodeDecodeError:
+ pass
+ return ''
+
+
+@deprecated
+def decode_string(byte_str, encoding='utf8'):
+ """Deprecated: Use decode_bytes"""
+ return decode_bytes(byte_str, encoding)
+
+
+@deprecated
+def utf8_encoded(str_, encoding='utf8'):
+ """Deprecated: Use encode or decode_bytes if needed"""
+ return decode_bytes(str_, encoding).encode('utf8')
+
+
+def utf8_encode_structure(data):
+ """Recursively convert all unicode keys and values in a data structure to utf8.
+
+ e.g. converting keys and values for a dict with nested dicts and lists etc.
+
+ Args:
+ data (any): This can be any structure, dict, list or tuple.
+
+ Returns:
+ input type: The data with unicode keys and values converted to utf8.
+
+ """
+ if isinstance(data, (list, tuple)):
+ return type(data)([utf8_encode_structure(d) for d in data])
+ elif isinstance(data, dict):
+ return {
+ utf8_encode_structure(k): utf8_encode_structure(v) for k, v in data.items()
+ }
+ elif not isinstance(data, bytes):
+ try:
+ return data.encode('utf8')
+ except AttributeError:
+ pass
+ return data
+
+
+@functools.total_ordering
+class VersionSplit:
+ """
+ Used for comparing version numbers.
+
+ :param ver: the version
+ :type ver: string
+
+ """
+
+ def __init__(self, ver):
+ version_re = re.compile(
+ r"""
+ ^
+ (?P<version>\d+\.\d+) # minimum 'N.N'
+ (?P<extraversion>(?:\.\d+)*) # any number of extra '.N' segments
+ (?:
+ (?P<prerel>[abc]|rc) # 'a'=alpha, 'b'=beta, 'c'=release candidate
+ # 'rc'= alias for release candidate
+ (?P<prerelversion>\d+(?:\.\d+)*)
+ )?
+ (?P<postdev>(\.post(?P<post>\d+))?(\.dev(?P<dev>\d+))?)?
+ $""",
+ re.VERBOSE,
+ )
+
+ # Check for PEP 386 compliant version
+ match = re.search(version_re, ver)
+ if match:
+ group = [(x if x is not None else '') for x in match.group(1, 2, 3, 4, 8)]
+ vs = [''.join(group[0:2]), ''.join(group[2:4]), group[4].lstrip('.')]
+ else:
+ ver = ver.lower()
+ vs = ver.replace('_', '-').split('-')
+
+ self.version = [int(x) for x in vs[0].split('.') if x.isdigit()]
+ self.version_string = ''.join(str(x) for x in vs[0].split('.') if x.isdigit())
+ self.suffix = None
+ self.dev = None
+ if len(vs) > 1:
+ if vs[1].startswith(('rc', 'a', 'b', 'c')):
+ self.suffix = vs[1]
+ if vs[-1].startswith('dev'):
+ try:
+ # Store only the dev numeral.
+ self.dev = int(vs[-1].rsplit('dev')[1])
+ except ValueError:
+ # Implicit dev numeral is 0.
+ self.dev = 0
+
+ def get_comparable_versions(self, other):
+ """
+ Returns a 2-tuple of lists for use in the comparison
+ methods.
+ """
+ # PEP 386 versions with .devN precede release version so default
+ # non-dev versions to infinity while dev versions are ints.
+ self.dev = float('inf') if self.dev is None else self.dev
+ other.dev = float('inf') if other.dev is None else other.dev
+ # If there is no suffix we use z because we want final
+ # to appear after alpha, beta, and rc alphabetically.
+ v1 = [self.version, self.suffix or 'z', self.dev]
+ v2 = [other.version, other.suffix or 'z', other.dev]
+
+ return (v1, v2)
+
+ def __eq__(self, other):
+ v1, v2 = self.get_comparable_versions(other)
+ return v1 == v2
+
+ def __lt__(self, other):
+ v1, v2 = self.get_comparable_versions(other)
+ return v1 < v2
+
+
+# Common AUTH stuff
+AUTH_LEVEL_NONE = 0
+AUTH_LEVEL_READONLY = 1
+AUTH_LEVEL_NORMAL = 5
+AUTH_LEVEL_ADMIN = 10
+AUTH_LEVEL_DEFAULT = AUTH_LEVEL_NORMAL
+
+
+def create_auth_file():
+ import stat
+
+ import deluge.configmanager
+
+ auth_file = deluge.configmanager.get_config_dir('auth')
+ # Check for auth file and create if necessary
+ if not os.path.exists(auth_file):
+ with open(auth_file, 'w', encoding='utf8') as _file:
+ _file.flush()
+ os.fsync(_file.fileno())
+ # Change the permissions on the file so only this user can read/write it
+ os.chmod(auth_file, stat.S_IREAD | stat.S_IWRITE)
+
+
+def create_localclient_account(append=False):
+ import random
+ from hashlib import sha1 as sha
+
+ import deluge.configmanager
+
+ auth_file = deluge.configmanager.get_config_dir('auth')
+ if not os.path.exists(auth_file):
+ create_auth_file()
+
+ with open(auth_file, 'a' if append else 'w', encoding='utf8') as _file:
+ _file.write(
+ ':'.join(
+ [
+ 'localclient',
+ sha(str(random.random()).encode('utf8')).hexdigest(),
+ str(AUTH_LEVEL_ADMIN),
+ ]
+ )
+ + '\n'
+ )
+ _file.flush()
+ os.fsync(_file.fileno())
+
+
+def get_localhost_auth():
+ """Grabs the localclient auth line from the 'auth' file and creates a localhost URI.
+
+ Returns:
+ tuple: With the username and password to login as.
+ """
+ from deluge.configmanager import get_config_dir
+
+ auth_file = get_config_dir('auth')
+ if not os.path.exists(auth_file):
+ from deluge.common import create_localclient_account
+
+ create_localclient_account()
+
+ with open(auth_file, encoding='utf8') as auth:
+ for line in auth:
+ line = line.strip()
+ if line.startswith('#') or not line:
+ # This is a comment or blank line
+ continue
+
+ lsplit = line.split(':')
+
+ if len(lsplit) == 2:
+ username, password = lsplit
+ elif len(lsplit) == 3:
+ username, password, level = lsplit
+ else:
+ log.error('Your auth file is malformed: Incorrect number of fields!')
+ continue
+
+ if username == 'localclient':
+ return (username, password)
+
+
+def set_env_variable(name, value):
+ """
+ :param name: environment variable name
+ :param value: environment variable value
+
+ This function ensures that changes to an environment variable are applied
+ to each copy of the environment variables used by a process. Starting from
+ Python 2.4, os.environ changes only apply to the copy Python keeps (os.environ)
+ and are no longer automatically applied to the other copies for the process.
+
+ On Microsoft Windows, each process has multiple copies of the environment
+ variables, one managed by the OS and one managed by the C library. We also
+ need to take care of the fact that the C library used by Python is not
+ necessarily the same as the C library used by pygtk and friends. This because
+ the latest releases of pygtk and friends are built with mingw32 and are thus
+ linked against msvcrt.dll. The official gtk+ binaries have always been built
+ in this way.
+
+ Basen on _putenv in TransUtils.py from sourceforge project gramps
+ http://sourceforge.net/p/gramps/code/HEAD/tree/branches/maintenance/gramps32/src/TransUtils.py
+ """
+ # Update Python's copy of the environment variables
+ os.environ[name] = value
+
+ if windows_check():
+ from ctypes import cdll, windll
+
+ # Update the copy maintained by Windows (so SysInternals Process Explorer sees it)
+ result = windll.kernel32.SetEnvironmentVariableW(name, value)
+ if result == 0:
+ log.info(
+ "Failed to set Env Var '%s' (kernel32.SetEnvironmentVariableW)", name
+ )
+ else:
+ log.debug(
+ "Set Env Var '%s' to '%s' (kernel32.SetEnvironmentVariableW)",
+ name,
+ value,
+ )
+
+ # Update the copy maintained by msvcrt (used by gtk+ runtime)
+ result = cdll.msvcrt._wputenv(f'{name}={value}')
+ if result != 0:
+ log.info("Failed to set Env Var '%s' (msvcrt._putenv)", name)
+ else:
+ log.debug("Set Env Var '%s' to '%s' (msvcrt._putenv)", name, value)
+
+
+def run_profiled(func, *args, **kwargs):
+ """
+ Profile a function with cProfile
+
+ Args:
+ func (func): The function to profile
+ *args (tuple): The arguments to pass to the function
+ do_profile (bool, optional): If profiling should be performed. Defaults to True.
+ output_file (str, optional): Filename to save profile results. If None, print to stdout.
+ Defaults to None.
+ """
+ if kwargs.get('do_profile', True) is not False:
+ import cProfile
+
+ profiler = cProfile.Profile()
+
+ def on_shutdown():
+ output_file = kwargs.get('output_file', None)
+ if output_file:
+ profiler.dump_stats(output_file)
+ log.info('Profile stats saved to %s', output_file)
+ print('Profile stats saved to %s' % output_file)
+ else:
+ import pstats
+ from io import StringIO
+
+ strio = StringIO()
+ ps = pstats.Stats(profiler, stream=strio).sort_stats('cumulative')
+ ps.print_stats()
+ print(strio.getvalue())
+
+ try:
+ return profiler.runcall(func, *args)
+ finally:
+ on_shutdown()
+ else:
+ return func(*args)
+
+
+def is_process_running(pid):
+ """
+ Verify if the supplied pid is a running process.
+
+ Args:
+ pid (int): The pid to check.
+
+ Returns:
+ bool: True if pid is a running process, False otherwise.
+
+ """
+
+ if windows_check():
+ from win32process import EnumProcesses
+
+ return pid in EnumProcesses()
+ else:
+ try:
+ os.kill(pid, 0)
+ except OSError:
+ return False
+ else:
+ return True
diff --git a/deluge/component.py b/deluge/component.py
new file mode 100644
index 0000000..421f49a
--- /dev/null
+++ b/deluge/component.py
@@ -0,0 +1,488 @@
+#
+# Copyright (C) 2007-2010 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import traceback
+from collections import defaultdict
+
+from twisted.internet import reactor
+from twisted.internet.defer import DeferredList, fail, maybeDeferred, succeed
+from twisted.internet.task import LoopingCall, deferLater
+
+log = logging.getLogger(__name__)
+
+
+class ComponentAlreadyRegistered(Exception):
+ pass
+
+
+class ComponentException(Exception):
+ def __init__(self, message, tb):
+ super().__init__(message)
+ self.message = message
+ self.tb = tb
+
+ def __str__(self):
+ s = super().__str__()
+ return '{}\n{}'.format(s, ''.join(self.tb))
+
+ def __eq__(self, other):
+ if isinstance(other, self.__class__):
+ return self.message == other.message
+ else:
+ return False
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+
+
+class Component:
+ """Component objects are singletons managed by the :class:`ComponentRegistry`.
+
+ When a new Component object is instantiated, it will be automatically
+ registered with the :class:`ComponentRegistry`.
+
+ The ComponentRegistry has the ability to start, stop, pause and shutdown the
+ components registered with it.
+
+ **Events:**
+
+ **start()** - This method is called when the client has connected to a
+ Deluge core.
+
+ **stop()** - This method is called when the client has disconnected from a
+ Deluge core.
+
+ **update()** - This method is called every 1 second by default while the
+ Component is in a *Started* state. The interval can be
+ specified during instantiation. The update() timer can be
+ paused by instructing the :class:`ComponentRegistry` to pause
+ this Component.
+
+ **pause()** - This method is called when the component is being paused.
+
+ **resume()** - This method is called when the component resumes from a Paused
+ state.
+
+ **shutdown()** - This method is called when the client is exiting. If the
+ Component is in a "Started" state when this is called, a
+ call to stop() will be issued prior to shutdown().
+
+ **States:**
+
+ A Component can be in one of these 5 states.
+
+ **Started** - The Component has been started by the :class:`ComponentRegistry`
+ and will have it's update timer started.
+
+ **Starting** - The Component has had it's start method called, but it hasn't
+ fully started yet.
+
+ **Stopped** - The Component has either been stopped or has yet to be started.
+
+ **Stopping** - The Component has had its stop method called, but it hasn't
+ fully stopped yet.
+
+ **Paused** - The Component has had its update timer stopped, but will
+ still be considered in a Started state.
+
+ """
+
+ def __init__(self, name, interval=1, depend=None):
+ """Initialize component.
+
+ Args:
+ name (str): Name of component.
+ interval (int, optional): The interval in seconds to call the update function.
+ depend (list, optional): The names of components this component depends on.
+
+ """
+ self._component_name = name
+ self._component_interval = interval
+ self._component_depend = depend
+ self._component_state = 'Stopped'
+ self._component_timer = None
+ self._component_starting_deferred = None
+ self._component_stopping_deferred = None
+ _ComponentRegistry.register(self)
+
+ def __del__(self):
+ if _ComponentRegistry:
+ _ComponentRegistry.deregister(self)
+
+ def _component_start_timer(self):
+ self._component_timer = LoopingCall(self.update)
+ self._component_timer.start(self._component_interval)
+
+ def _component_start(self):
+ def on_start(result):
+ self._component_state = 'Started'
+ self._component_starting_deferred = None
+ self._component_start_timer()
+ return True
+
+ def on_start_fail(result):
+ self._component_state = 'Stopped'
+ self._component_starting_deferred = None
+ log.error(result)
+ return fail(result)
+
+ if self._component_state == 'Stopped':
+ self._component_state = 'Starting'
+ d = deferLater(reactor, 0, self.start)
+ d.addCallbacks(on_start, on_start_fail)
+ self._component_starting_deferred = d
+ elif self._component_state == 'Starting':
+ return self._component_starting_deferred
+ elif self._component_state == 'Started':
+ d = succeed(True)
+ else:
+ d = fail(
+ ComponentException(
+ 'Trying to start component "%s" but it is '
+ 'not in a stopped state. Current state: %s'
+ % (self._component_name, self._component_state),
+ traceback.format_stack(limit=4),
+ )
+ )
+ return d
+
+ def _component_stop(self):
+ def on_stop(result):
+ self._component_state = 'Stopped'
+ if self._component_timer and self._component_timer.running:
+ self._component_timer.stop()
+ return True
+
+ def on_stop_fail(result):
+ self._component_state = 'Started'
+ self._component_stopping_deferred = None
+ log.error(result)
+ return result
+
+ if self._component_state != 'Stopped' and self._component_state != 'Stopping':
+ self._component_state = 'Stopping'
+ d = maybeDeferred(self.stop)
+ d.addCallback(on_stop)
+ d.addErrback(on_stop_fail)
+ self._component_stopping_deferred = d
+
+ if self._component_state == 'Stopping':
+ return self._component_stopping_deferred
+
+ return succeed(None)
+
+ def _component_pause(self):
+ def on_pause(result):
+ self._component_state = 'Paused'
+ if self._component_timer and self._component_timer.running:
+ self._component_timer.stop()
+
+ if self._component_state == 'Started':
+ d = maybeDeferred(self.pause)
+ d.addCallback(on_pause)
+ elif self._component_state == 'Paused':
+ d = succeed(None)
+ else:
+ d = fail(
+ ComponentException(
+ 'Trying to pause component "%s" but it is '
+ 'not in a started state. Current state: %s'
+ % (self._component_name, self._component_state),
+ traceback.format_stack(limit=4),
+ )
+ )
+ return d
+
+ def _component_resume(self):
+ def on_resume(result):
+ self._component_state = 'Started'
+ self._component_start_timer()
+
+ if self._component_state == 'Paused':
+ d = maybeDeferred(self.resume)
+ d.addCallback(on_resume)
+ else:
+ d = fail(
+ ComponentException(
+ 'Trying to resume component "%s" but it is '
+ 'not in a paused state. Current state: %s'
+ % (self._component_name, self._component_state),
+ traceback.format_stack(limit=4),
+ )
+ )
+ return d
+
+ def _component_shutdown(self):
+ def on_stop(result):
+ return maybeDeferred(self.shutdown)
+
+ d = self._component_stop()
+ d.addCallback(on_stop)
+ return d
+
+ def get_state(self):
+ return self._component_state
+
+ def start(self):
+ pass
+
+ def stop(self):
+ pass
+
+ def update(self):
+ pass
+
+ def shutdown(self):
+ pass
+
+ def pause(self):
+ pass
+
+ def resume(self):
+ pass
+
+
+class ComponentRegistry:
+ """The ComponentRegistry holds a list of currently registered :class:`Component` objects.
+
+ It is used to manage the Components by starting, stopping, pausing and shutting them down.
+ """
+
+ def __init__(self):
+ self.components = {}
+ # Stores all of the components that are dependent on a particular component
+ self.dependents = defaultdict(list)
+
+ def register(self, obj):
+ """Register a component object with the registry.
+
+ Note:
+ This is done automatically when a Component object is instantiated.
+
+ Args:
+ obj (Component): A component object to register.
+
+ Raises:
+ ComponentAlreadyRegistered: If a component with the same name is already registered.
+
+ """
+ name = obj._component_name
+ if name in self.components:
+ raise ComponentAlreadyRegistered(
+ 'Component already registered with name %s' % name
+ )
+
+ self.components[obj._component_name] = obj
+ if obj._component_depend:
+ for depend in obj._component_depend:
+ self.dependents[depend].append(name)
+
+ def deregister(self, obj):
+ """Deregister a component from the registry. A stop will be
+ issued to the component prior to deregistering it.
+
+ Args:
+ obj (Component): a component object to deregister
+
+ Returns:
+ Deferred: a deferred object that will fire once the Component has been
+ successfully deregistered
+
+ """
+ if obj in self.components.values():
+ log.debug('Deregistering Component: %s', obj._component_name)
+ d = self.stop([obj._component_name])
+
+ def on_stop(result, name):
+ # Component may have been removed, so pop to ensure it doesn't fail
+ self.components.pop(name, None)
+
+ return d.addCallback(on_stop, obj._component_name)
+ else:
+ return succeed(None)
+
+ def start(self, names=None):
+ """Start Components, and their dependencies, that are currently in a Stopped state.
+
+ Note:
+ If no names are specified then all registered components will be started.
+
+ Args:
+ names (list): A list of Components to start and their dependencies.
+
+ Returns:
+ Deferred: Fired once all Components have been successfully started.
+
+ """
+ # Start all the components if names is empty
+ if not names:
+ names = list(self.components)
+ elif isinstance(names, str):
+ names = [names]
+
+ def on_depends_started(result, name):
+ return self.components[name]._component_start()
+
+ deferreds = []
+
+ for name in names:
+ if self.components[name]._component_depend:
+ # This component has depends, so we need to start them first.
+ d = self.start(self.components[name]._component_depend)
+ d.addCallback(on_depends_started, name)
+ deferreds.append(d)
+ else:
+ deferreds.append(self.components[name]._component_start())
+
+ return DeferredList(deferreds)
+
+ def stop(self, names=None):
+ """Stop Components that are currently not in a Stopped state.
+
+ Note:
+ If no names are specified then all registered components will be stopped.
+
+ Args:
+ names (list): A list of Components to stop.
+
+ Returns:
+ Deferred: Fired once all Components have been successfully stopped.
+
+ """
+ if not names:
+ names = list(self.components)
+ elif isinstance(names, str):
+ names = [names]
+
+ def on_dependents_stopped(result, name):
+ return self.components[name]._component_stop()
+
+ stopped_in_deferred = set()
+ deferreds = []
+
+ for name in names:
+ if name in stopped_in_deferred:
+ continue
+ if name in self.components:
+ if name in self.dependents:
+ # If other components depend on this component, stop them first
+ d = self.stop(self.dependents[name]).addCallback(
+ on_dependents_stopped, name
+ )
+ deferreds.append(d)
+ stopped_in_deferred.update(self.dependents[name])
+ else:
+ deferreds.append(self.components[name]._component_stop())
+
+ return DeferredList(deferreds)
+
+ def pause(self, names=None):
+ """Pause Components that are currently in a Started state.
+
+ Note:
+ If no names are specified then all registered components will be paused.
+
+ Args:
+ names (list): A list of Components to pause.
+
+ Returns:
+ Deferred: Fired once all Components have been successfully paused.
+
+ """
+ if not names:
+ names = list(self.components)
+ elif isinstance(names, str):
+ names = [names]
+
+ deferreds = []
+
+ for name in names:
+ if self.components[name]._component_state == 'Started':
+ deferreds.append(self.components[name]._component_pause())
+
+ return DeferredList(deferreds)
+
+ def resume(self, names=None):
+ """Resume Components that are currently in a Paused state.
+
+ Note:
+ If no names are specified then all registered components will be resumed.
+
+ Args:
+ names (list): A list of Components to to resume.
+
+ Returns:
+ Deferred: Fired once all Components have been successfully resumed.
+
+ """
+ if not names:
+ names = list(self.components)
+ elif isinstance(names, str):
+ names = [names]
+
+ deferreds = []
+
+ for name in names:
+ if self.components[name]._component_state == 'Paused':
+ deferreds.append(self.components[name]._component_resume())
+
+ return DeferredList(deferreds)
+
+ def shutdown(self):
+ """Shutdown all Components regardless of state.
+
+ This will call stop() on all the components prior to shutting down. This should be called
+ when the program is exiting to ensure all Components have a chance to properly shutdown.
+
+ Returns:
+ Deferred: Fired once all Components have been successfully shut down.
+
+ """
+
+ def on_stopped(result):
+ return DeferredList(
+ [comp._component_shutdown() for comp in list(self.components.values())]
+ )
+
+ return self.stop(list(self.components)).addCallback(on_stopped)
+
+ def update(self):
+ """Update all Components that are in a Started state."""
+ for component in self.components.items():
+ try:
+ component.update()
+ except BaseException as ex:
+ log.exception(ex)
+
+
+_ComponentRegistry = ComponentRegistry()
+
+deregister = _ComponentRegistry.deregister
+start = _ComponentRegistry.start
+stop = _ComponentRegistry.stop
+pause = _ComponentRegistry.pause
+resume = _ComponentRegistry.resume
+update = _ComponentRegistry.update
+shutdown = _ComponentRegistry.shutdown
+
+
+def get(name):
+ """Return a reference to a component.
+
+ Args:
+ name (str): The Component name to get.
+
+ Returns:
+ Component: The Component object.
+
+ Raises:
+ KeyError: If the Component does not exist.
+
+ """
+ return _ComponentRegistry.components[name]
diff --git a/deluge/config.py b/deluge/config.py
new file mode 100644
index 0000000..c5cb312
--- /dev/null
+++ b/deluge/config.py
@@ -0,0 +1,568 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""
+Deluge Config Module
+
+This module is used for loading and saving of configuration files.. or anything
+really.
+
+The format of the config file is two json encoded dicts:
+
+<version dict>
+<content dict>
+
+The version dict contains two keys: file and format. The format version is
+controlled by the Config class. It should only be changed when anything below
+it is changed directly by the Config class. An example of this would be if we
+changed the serializer for the content to something different.
+
+The config file version is changed by the 'owner' of the config file. This is
+to signify that there is a change in the naming of some config keys or something
+similar along those lines.
+
+The content is simply the dict to be saved and will be serialized before being
+written.
+
+Converting
+
+Since the format of the config could change, there needs to be a way to have
+the Config object convert to newer formats. To do this, you will need to
+register conversion functions for various versions of the config file. Note that
+this can only be done for the 'config file version' and not for the 'format'
+version as this will be done internally.
+
+"""
+import json
+import logging
+import os
+import pickle
+import shutil
+from codecs import getwriter
+from tempfile import NamedTemporaryFile
+
+from deluge.common import JSON_FORMAT, get_default_config_dir
+
+log = logging.getLogger(__name__)
+
+
+def find_json_objects(text, decoder=json.JSONDecoder()):
+ """Find json objects in text.
+
+ Args:
+ text (str): The text to find json objects within.
+
+ Returns:
+ list: A list of tuples containing start and end locations of json
+ objects in the text. e.g. [(start, end), ...]
+
+
+ """
+ objects = []
+ offset = 0
+ while True:
+ try:
+ start = text.index('{', offset)
+ except ValueError:
+ break
+
+ try:
+ __, index = decoder.raw_decode(text[start:])
+ except json.decoder.JSONDecodeError:
+ offset = start + 1
+ else:
+ offset = start + index
+ objects.append((start, offset))
+
+ return objects
+
+
+def cast_to_existing_type(value, old_value):
+ """Attempt to convert new value type to match old value type"""
+ types_match = isinstance(old_value, (type(None), type(value)))
+ if value is not None and not types_match:
+ old_type = type(old_value)
+ # Skip convert to bytes since requires knowledge of encoding and value should
+ # be unicode anyway.
+ if old_type is bytes:
+ return value
+
+ return old_type(value)
+
+ return value
+
+
+class Config:
+ """This class is used to access/create/modify config files.
+
+ Args:
+ filename (str): The config filename.
+ defaults (dict): The default config values to insert before loading the config file.
+ config_dir (str): the path to the config directory.
+ file_version (int): The file format for the default config values when creating
+ a fresh config. This value should be increased whenever a new migration function is
+ setup to convert old config files. (default: 1)
+ log_mask_funcs (dict): A dict of key:function, used to mask sensitive
+ key values (e.g. passwords) when logging is enabled.
+
+ """
+
+ def __init__(
+ self,
+ filename,
+ defaults=None,
+ config_dir=None,
+ file_version=1,
+ log_mask_funcs=None,
+ ):
+ self.__config = {}
+ self.__set_functions = {}
+ self.__change_callbacks = []
+ self.__log_mask_funcs = log_mask_funcs if log_mask_funcs else {}
+
+ # These hold the version numbers and they will be set when loaded
+ self.__version = {'format': 1, 'file': file_version}
+
+ # This will get set with a reactor.callLater whenever a config option
+ # is set.
+ self._save_timer = None
+
+ if defaults:
+ for key, value in defaults.items():
+ self.set_item(key, value, default=True)
+
+ # Load the config from file in the config_dir
+ if config_dir:
+ self.__config_file = os.path.join(config_dir, filename)
+ else:
+ self.__config_file = get_default_config_dir(filename)
+
+ self.load()
+
+ def callLater(self, period, func, *args, **kwargs): # noqa: N802 ignore camelCase
+ """Wrapper around reactor.callLater for test purpose."""
+ from twisted.internet import reactor
+
+ return reactor.callLater(period, func, *args, **kwargs)
+
+ def __contains__(self, item):
+ return item in self.__config
+
+ def __setitem__(self, key, value):
+ """See set_item"""
+
+ return self.set_item(key, value)
+
+ def set_item(self, key, value, default=False):
+ """Sets item 'key' to 'value' in the config dictionary.
+
+ Does not allow changing the item's type unless it is None.
+
+ If the types do not match, it will attempt to convert it to the
+ set type before raising a ValueError.
+
+ Args:
+ key (str): Item to change to change.
+ value (any): The value to change item to, must be same type as what is
+ currently in the config.
+ default (optional, bool): When setting a default value skip func or save
+ callbacks.
+
+ Raises:
+ ValueError: Raised when the type of value is not the same as what is
+ currently in the config and it could not convert the value.
+
+ Examples:
+ >>> config = Config('test.conf')
+ >>> config['test'] = 5
+ >>> config['test']
+ 5
+
+ """
+ if isinstance(value, bytes):
+ value = value.decode()
+
+ if key in self.__config:
+ try:
+ value = cast_to_existing_type(value, self.__config[key])
+ except ValueError:
+ log.warning('Value Type "%s" invalid for key: %s', type(value), key)
+ raise
+ else:
+ if self.__config[key] == value:
+ return
+
+ if log.isEnabledFor(logging.DEBUG):
+ if key in self.__log_mask_funcs:
+ value = self.__log_mask_funcs[key](value)
+ log.debug(
+ 'Setting key "%s" to: %s (of type: %s)',
+ key,
+ value,
+ type(value),
+ )
+ self.__config[key] = value
+
+ # Skip save or func callbacks if setting default value for keys
+ if default:
+ return
+
+ # Run the set_function for this key if any
+ for func in self.__set_functions.get(key, []):
+ self.callLater(0, func, key, value)
+
+ try:
+
+ def do_change_callbacks(key, value):
+ for func in self.__change_callbacks:
+ func(key, value)
+
+ self.callLater(0, do_change_callbacks, key, value)
+ except Exception:
+ pass
+
+ # We set the save_timer for 5 seconds if not already set
+ if not self._save_timer or not self._save_timer.active():
+ self._save_timer = self.callLater(5, self.save)
+
+ def __getitem__(self, key):
+ """See get_item"""
+ return self.get_item(key)
+
+ def get_item(self, key):
+ """Gets the value of item 'key'.
+
+ Args:
+ key (str): The item for which you want it's value.
+
+ Returns:
+ any: The value of item 'key'.
+
+ Raises:
+ ValueError: If 'key' is not in the config dictionary.
+
+ Examples:
+ >>> config = Config('test.conf', defaults={'test': 5})
+ >>> config['test']
+ 5
+
+ """
+ return self.__config[key]
+
+ def get(self, key, default=None):
+ """Gets the value of item 'key' if key is in the config, else default.
+
+ If default is not given, it defaults to None, so that this method
+ never raises a KeyError.
+
+ Args:
+ key (str): the item for which you want it's value
+ default (any): the default value if key is missing
+
+ Returns:
+ any: The value of item 'key' or default.
+
+ Examples:
+ >>> config = Config('test.conf', defaults={'test': 5})
+ >>> config.get('test', 10)
+ 5
+ >>> config.get('bad_key', 10)
+ 10
+
+ """
+ try:
+ return self.get_item(key)
+ except KeyError:
+ return default
+
+ def __delitem__(self, key):
+ """
+ See
+ :meth:`del_item`
+ """
+ self.del_item(key)
+
+ def del_item(self, key):
+ """Deletes item with a specific key from the configuration.
+
+ Args:
+ key (str): The item which you wish to delete.
+
+ Raises:
+ ValueError: If 'key' is not in the config dictionary.
+
+ Examples:
+ >>> config = Config('test.conf', defaults={'test': 5})
+ >>> del config['test']
+
+ """
+
+ del self.__config[key]
+
+ # We set the save_timer for 5 seconds if not already set
+ if not self._save_timer or not self._save_timer.active():
+ self._save_timer = self.callLater(5, self.save)
+
+ def register_change_callback(self, callback):
+ """Registers a callback function for any changed value.
+
+ Will be called when any value is changed in the config dictionary.
+
+ Args:
+ callback (func): The function to call with parameters: f(key, value).
+
+ Examples:
+ >>> config = Config('test.conf', defaults={'test': 5})
+ >>> def cb(key, value):
+ ... print key, value
+ ...
+ >>> config.register_change_callback(cb)
+
+ """
+ self.__change_callbacks.append(callback)
+
+ def register_set_function(self, key, function, apply_now=True):
+ """Register a function to be called when a config value changes.
+
+ Args:
+ key (str): The item to monitor for change.
+ function (func): The function to call when the value changes, f(key, value).
+ apply_now (bool): If True, the function will be called immediately after it's registered.
+
+ Examples:
+ >>> config = Config('test.conf', defaults={'test': 5})
+ >>> def cb(key, value):
+ ... print key, value
+ ...
+ >>> config.register_set_function('test', cb, apply_now=True)
+ test 5
+
+ """
+ log.debug('Registering function for %s key..', key)
+ if key not in self.__set_functions:
+ self.__set_functions[key] = []
+
+ self.__set_functions[key].append(function)
+
+ # Run the function now if apply_now is set
+ if apply_now:
+ function(key, self.__config[key])
+
+ def apply_all(self):
+ """Calls all set functions.
+
+ Examples:
+ >>> config = Config('test.conf', defaults={'test': 5})
+ >>> def cb(key, value):
+ ... print key, value
+ ...
+ >>> config.register_set_function('test', cb, apply_now=False)
+ >>> config.apply_all()
+ test 5
+
+ """
+ log.debug('Calling all set functions..')
+ for key, value in self.__set_functions.items():
+ for func in value:
+ func(key, self.__config[key])
+
+ def apply_set_functions(self, key):
+ """Calls set functions for `:param:key`.
+
+ Args:
+ key (str): the config key
+
+ """
+ log.debug('Calling set functions for key %s..', key)
+ if key in self.__set_functions:
+ for func in self.__set_functions[key]:
+ func(key, self.__config[key])
+
+ def load(self, filename=None):
+ """Load a config file.
+
+ Args:
+ filename (str): If None, uses filename set in object initialization
+
+ """
+ if not filename:
+ filename = self.__config_file
+
+ try:
+ with open(filename, encoding='utf8') as _file:
+ data = _file.read()
+ except OSError as ex:
+ log.warning('Unable to open config file %s: %s', filename, ex)
+ return
+
+ objects = find_json_objects(data)
+
+ if not len(objects):
+ # No json objects found, try depickling it
+ try:
+ self.__config.update(pickle.loads(data))
+ except Exception as ex:
+ log.exception(ex)
+ log.warning('Unable to load config file: %s', filename)
+ elif len(objects) == 1:
+ start, end = objects[0]
+ try:
+ self.__config.update(json.loads(data[start:end]))
+ except Exception as ex:
+ log.exception(ex)
+ log.warning('Unable to load config file: %s', filename)
+ elif len(objects) == 2:
+ try:
+ start, end = objects[0]
+ self.__version.update(json.loads(data[start:end]))
+ start, end = objects[1]
+ self.__config.update(json.loads(data[start:end]))
+ except Exception as ex:
+ log.exception(ex)
+ log.warning('Unable to load config file: %s', filename)
+
+ if not log.isEnabledFor(logging.DEBUG):
+ return
+
+ config = self.__config
+ if self.__log_mask_funcs:
+ config = {
+ key: self.__log_mask_funcs[key](config[key])
+ if key in self.__log_mask_funcs
+ else config[key]
+ for key in config
+ }
+
+ log.debug(
+ 'Config %s version: %s.%s loaded: %s',
+ filename,
+ self.__version['format'],
+ self.__version['file'],
+ config,
+ )
+
+ def save(self, filename=None):
+ """Save configuration to disk.
+
+ Args:
+ filename (str): If None, uses filename set in object initialization
+
+ Returns:
+ bool: Whether or not the save succeeded.
+
+ """
+ if not filename:
+ filename = self.__config_file
+ # Check to see if the current config differs from the one on disk
+ # We will only write a new config file if there is a difference
+ try:
+ with open(filename, encoding='utf8') as _file:
+ data = _file.read()
+ objects = find_json_objects(data)
+ start, end = objects[0]
+ version = json.loads(data[start:end])
+ start, end = objects[1]
+ loaded_data = json.loads(data[start:end])
+ if self.__config == loaded_data and self.__version == version:
+ # The config has not changed so lets just return
+ if self._save_timer and self._save_timer.active():
+ self._save_timer.cancel()
+ return True
+ except (OSError, IndexError) as ex:
+ log.warning('Unable to open config file: %s because: %s', filename, ex)
+
+ # Save the new config and make sure it's written to disk
+ try:
+ with NamedTemporaryFile(
+ prefix=os.path.basename(filename) + '.', delete=False
+ ) as _file:
+ filename_tmp = _file.name
+ log.debug('Saving new config file %s', filename_tmp)
+ json.dump(self.__version, getwriter('utf8')(_file), **JSON_FORMAT)
+ json.dump(self.__config, getwriter('utf8')(_file), **JSON_FORMAT)
+ _file.flush()
+ os.fsync(_file.fileno())
+ except OSError as ex:
+ log.error('Error writing new config file: %s', ex)
+ return False
+
+ # Resolve symlinked config files before backing up and saving.
+ filename = os.path.realpath(filename)
+
+ # Make a backup of the old config
+ try:
+ log.debug('Backing up old config file to %s.bak', filename)
+ shutil.move(filename, filename + '.bak')
+ except OSError as ex:
+ log.warning('Unable to backup old config: %s', ex)
+
+ # The new config file has been written successfully, so let's move it over
+ # the existing one.
+ try:
+ log.debug('Moving new config file %s to %s', filename_tmp, filename)
+ shutil.move(filename_tmp, filename)
+ except OSError as ex:
+ log.error('Error moving new config file: %s', ex)
+ return False
+ else:
+ return True
+ finally:
+ if self._save_timer and self._save_timer.active():
+ self._save_timer.cancel()
+
+ def run_converter(self, input_range, output_version, func):
+ """Runs a function that will convert file versions.
+
+ Args:
+ input_range (tuple): (int, int) The range of input versions this function will accept.
+ output_version (int): The version this function will convert to.
+ func (func): The function that will do the conversion, it will take the config
+ dict as an argument and return the augmented dict.
+
+ Raises:
+ ValueError: If output_version is less than the input_range.
+
+ """
+ if output_version in input_range or output_version <= max(input_range):
+ raise ValueError('output_version needs to be greater than input_range')
+
+ if self.__version['file'] not in input_range:
+ log.debug(
+ 'File version %s is not in input_range %s, ignoring converter function..',
+ self.__version['file'],
+ input_range,
+ )
+ return
+
+ try:
+ self.__config = func(self.__config)
+ except Exception as ex:
+ log.exception(ex)
+ log.error(
+ 'There was an exception try to convert config file %s %s to %s',
+ self.__config_file,
+ self.__version['file'],
+ output_version,
+ )
+ raise ex
+ else:
+ self.__version['file'] = output_version
+ self.save()
+
+ @property
+ def config_file(self):
+ return self.__config_file
+
+ @property
+ def config(self):
+ """The config dictionary"""
+ return self.__config
+
+ @config.deleter
+ def config(self):
+ return self.save()
diff --git a/deluge/configmanager.py b/deluge/configmanager.py
new file mode 100644
index 0000000..6e965b8
--- /dev/null
+++ b/deluge/configmanager.py
@@ -0,0 +1,127 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+
+import deluge.common
+import deluge.log
+from deluge.config import Config
+
+log = logging.getLogger(__name__)
+
+
+class _ConfigManager:
+ def __init__(self):
+ log.debug('ConfigManager started..')
+ self.config_files = {}
+ self.__config_directory = None
+
+ @property
+ def config_directory(self):
+ if self.__config_directory is None:
+ self.__config_directory = deluge.common.get_default_config_dir()
+ return self.__config_directory
+
+ def __del__(self):
+ del self.config_files
+
+ def set_config_dir(self, directory):
+ """
+ Sets the config directory.
+
+ :param directory: str, the directory where the config info should be
+
+ :returns bool: True if successfully changed directory, False if not
+ """
+
+ if not directory:
+ return False
+
+ # Ensure absolute dirpath
+ directory = os.path.abspath(directory)
+
+ log.info('Setting config directory to: %s', directory)
+ if not os.path.exists(directory):
+ # Try to create the config folder if it doesn't exist
+ try:
+ os.makedirs(directory)
+ except OSError as ex:
+ log.error('Unable to make config directory: %s', ex)
+ return False
+ elif not os.path.isdir(directory):
+ log.error('Config directory needs to be a directory!')
+ return False
+
+ self.__config_directory = directory
+
+ # Reset the config_files so we don't get config from old config folder
+ # XXX: Probably should have it go through the config_files dict and try
+ # to reload based on the new config directory
+ self.save()
+ self.config_files = {}
+ deluge.log.tweak_logging_levels()
+
+ return True
+
+ def get_config_dir(self):
+ return self.config_directory
+
+ def close(self, config):
+ """Closes a config file."""
+ try:
+ del self.config_files[config]
+ except KeyError:
+ pass
+
+ def save(self):
+ """Saves all the configs to disk."""
+ for value in self.config_files.values():
+ value.save()
+ # We need to return True to keep the timer active
+ return True
+
+ def get_config(self, config_file, defaults=None, file_version=1):
+ """Get a reference to the Config object for this filename"""
+ log.debug('Getting config: %s', config_file)
+ # Create the config object if not already created
+ if config_file not in self.config_files:
+ self.config_files[config_file] = Config(
+ config_file,
+ defaults,
+ config_dir=self.config_directory,
+ file_version=file_version,
+ )
+
+ return self.config_files[config_file]
+
+
+# Singleton functions
+_configmanager = _ConfigManager()
+
+
+def ConfigManager(config, defaults=None, file_version=1): # NOQA: N802
+ return _configmanager.get_config(
+ config, defaults=defaults, file_version=file_version
+ )
+
+
+def set_config_dir(directory):
+ """Sets the config directory, else just uses default"""
+ return _configmanager.set_config_dir(deluge.common.decode_bytes(directory))
+
+
+def get_config_dir(filename=None):
+ if filename is not None:
+ return os.path.join(_configmanager.get_config_dir(), filename)
+ else:
+ return _configmanager.get_config_dir()
+
+
+def close(config):
+ return _configmanager.close(config)
diff --git a/deluge/conftest.py b/deluge/conftest.py
new file mode 100644
index 0000000..c307014
--- /dev/null
+++ b/deluge/conftest.py
@@ -0,0 +1,214 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import asyncio
+import tempfile
+import warnings
+from unittest.mock import Mock, patch
+
+import pytest
+import pytest_twisted
+from twisted.internet import reactor
+from twisted.internet.defer import Deferred, maybeDeferred
+from twisted.internet.error import CannotListenError, ProcessTerminated
+from twisted.python.failure import Failure
+
+import deluge.component as _component
+import deluge.configmanager
+from deluge.common import get_localhost_auth
+from deluge.tests import common
+from deluge.ui.client import client as _client
+
+DEFAULT_LISTEN_PORT = 58900
+
+
+@pytest.fixture
+def listen_port(request):
+ if request and 'daemon' in request.fixturenames:
+ try:
+ return request.getfixturevalue('daemon').listen_port
+ except Exception:
+ pass
+ return DEFAULT_LISTEN_PORT
+
+
+@pytest.fixture
+def mock_callback():
+ """Returns a `Mock` object which can be registered as a callback to test against.
+
+ If callback was not called within `timeout` seconds, it will raise a TimeoutError.
+ The returned Mock instance will have a `deferred` attribute which will complete when the callback has been called.
+ """
+
+ def reset(timeout=0.5, *args, **kwargs):
+ if mock.called:
+ original_reset_mock(*args, **kwargs)
+ if mock.deferred:
+ mock.deferred.cancel()
+ deferred = Deferred(canceller=lambda x: deferred.callback(None))
+ deferred.addTimeout(timeout, reactor)
+ mock.side_effect = lambda *args, **kw: deferred.callback((args, kw))
+ mock.deferred = deferred
+
+ mock = Mock()
+ original_reset_mock = mock.reset_mock
+ mock.reset_mock = reset
+ mock.reset_mock()
+ return mock
+
+
+@pytest.fixture
+def config_dir(tmp_path):
+ config_dir = tmp_path / 'config'
+ deluge.configmanager.set_config_dir(config_dir)
+ yield config_dir
+
+
+@pytest_twisted.async_yield_fixture()
+async def client(request, config_dir, monkeypatch, listen_port):
+ # monkeypatch.setattr(
+ # _client, 'connect', functools.partial(_client.connect, port=listen_port)
+ # )
+ try:
+ username, password = get_localhost_auth()
+ except Exception:
+ username, password = '', ''
+ await _client.connect(
+ 'localhost',
+ port=listen_port,
+ username=username,
+ password=password,
+ )
+ yield _client
+ if _client.connected():
+ await _client.disconnect()
+
+
+@pytest_twisted.async_yield_fixture
+async def daemon(request, config_dir, tmp_path):
+ listen_port = DEFAULT_LISTEN_PORT
+ logfile = tmp_path / 'daemon.log'
+
+ if hasattr(request.cls, 'daemon_custom_script'):
+ custom_script = request.cls.daemon_custom_script
+ else:
+ custom_script = ''
+
+ for dummy in range(10):
+ try:
+ d, daemon = common.start_core(
+ listen_port=listen_port,
+ logfile=logfile,
+ timeout=5,
+ timeout_msg='Timeout!',
+ custom_script=custom_script,
+ print_stdout=True,
+ print_stderr=True,
+ config_directory=config_dir,
+ )
+ await d
+ except CannotListenError as ex:
+ exception_error = ex
+ listen_port += 1
+ except (KeyboardInterrupt, SystemExit):
+ raise
+ else:
+ break
+ else:
+ raise exception_error
+ daemon.listen_port = listen_port
+ yield daemon
+ try:
+ await daemon.kill()
+ except ProcessTerminated:
+ pass
+
+
+@pytest.fixture(autouse=True)
+def common_fixture(config_dir, request, monkeypatch, listen_port):
+ """Adds some instance attributes to test classes for backwards compatibility with old testing."""
+
+ def fail(self, reason):
+ if isinstance(reason, Failure):
+ reason = reason.value
+ return pytest.fail(str(reason))
+
+ if request.instance:
+ request.instance.patch = monkeypatch.setattr
+ request.instance.config_dir = config_dir
+ request.instance.listen_port = listen_port
+ request.instance.id = lambda: request.node.name
+ request.cls.fail = fail
+
+
+@pytest_twisted.async_yield_fixture(scope='function')
+async def component():
+ """Verify component registry is clean, and clean up after test."""
+ if len(_component._ComponentRegistry.components) != 0:
+ warnings.warn(
+ 'The component._ComponentRegistry.components is not empty on test setup.\n'
+ 'This is probably caused by another test that did not clean up after finishing!: %s'
+ % _component._ComponentRegistry.components
+ )
+
+ yield _component
+
+ await _component.shutdown()
+ _component._ComponentRegistry.components.clear()
+ _component._ComponentRegistry.dependents.clear()
+
+
+@pytest_twisted.async_yield_fixture(scope='function')
+async def base_fixture(common_fixture, component, request):
+ """This fixture is autoused on all tests that subclass BaseTestCase"""
+ self = request.instance
+
+ if hasattr(self, 'set_up'):
+ try:
+ await maybeDeferred(self.set_up)
+ except Exception as exc:
+ warnings.warn('Error caught in test setup!\n%s' % exc)
+ pytest.fail('Error caught in test setup!\n%s' % exc)
+
+ yield
+
+ if hasattr(self, 'tear_down'):
+ try:
+ await maybeDeferred(self.tear_down)
+ except Exception as exc:
+ pytest.fail('Error caught in test teardown!\n%s' % exc)
+
+
+@pytest.mark.usefixtures('base_fixture')
+class BaseTestCase:
+ """This is the base class that should be used for all test classes
+ that create classes that inherit from deluge.component.Component. It
+ ensures that the component registry has been cleaned up when tests
+ have finished.
+
+ """
+
+
+@pytest.fixture
+def mock_mkstemp(tmp_path):
+ """Return known tempfile location to verify file deleted"""
+ tmp_file = tempfile.mkstemp(dir=tmp_path)
+ with patch('tempfile.mkstemp', return_value=tmp_file):
+ yield tmp_file
+
+
+def pytest_collection_modifyitems(session, config, items) -> None:
+ """
+ Automatically runs async tests with pytest_twisted.ensureDeferred
+ """
+ function_items = (item for item in items if isinstance(item, pytest.Function))
+ for function_item in function_items:
+ function = function_item.obj
+ if hasattr(function, '__func__'):
+ # methods need to be unwrapped.
+ function = function.__func__
+ if asyncio.iscoroutinefunction(function):
+ # This is how pytest_twisted marks ensureDeferred tests
+ setattr(function, '_pytest_twisted_mark', 'async_test')
diff --git a/deluge/core/__init__.py b/deluge/core/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/deluge/core/__init__.py
diff --git a/deluge/core/alertmanager.py b/deluge/core/alertmanager.py
new file mode 100644
index 0000000..cf541f0
--- /dev/null
+++ b/deluge/core/alertmanager.py
@@ -0,0 +1,193 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""
+
+The AlertManager handles all the libtorrent alerts.
+
+This should typically only be used by the Core. Plugins should utilize the
+`:mod:EventManager` for similar functionality.
+
+"""
+import contextlib
+import logging
+import threading
+import time
+from collections import defaultdict
+from functools import partial
+from typing import Any, Callable
+
+from twisted.internet import reactor, task, threads
+
+import deluge.component as component
+from deluge._libtorrent import lt
+from deluge.common import decode_bytes
+
+log = logging.getLogger(__name__)
+
+
+class AlertManager(component.Component):
+ """AlertManager fetches and processes libtorrent alerts"""
+
+ def __init__(self):
+ log.debug('AlertManager init...')
+ component.Component.__init__(self, 'AlertManager')
+ self.session = component.get('Core').session
+
+ # Increase the alert queue size so that alerts don't get lost.
+ self.alert_queue_size = 10000
+ self.set_alert_queue_size(self.alert_queue_size)
+
+ alert_mask = (
+ lt.alert.category_t.error_notification
+ | lt.alert.category_t.port_mapping_notification
+ | lt.alert.category_t.storage_notification
+ | lt.alert.category_t.tracker_notification
+ | lt.alert.category_t.status_notification
+ | lt.alert.category_t.ip_block_notification
+ | lt.alert.category_t.performance_warning
+ | lt.alert.category_t.file_progress_notification
+ )
+
+ self.session.apply_settings({'alert_mask': alert_mask})
+
+ # handlers is a dictionary of lists {"alert_type": [handler1,h2,..]}
+ self.handlers = defaultdict(list)
+ self.handlers_timeout_secs = 2
+ self.delayed_calls = []
+ self._event = threading.Event()
+
+ def update(self):
+ pass
+
+ def start(self):
+ thread = threading.Thread(
+ target=self.wait_for_alert_in_thread, name='alert-poller', daemon=True
+ )
+ thread.start()
+ self._event.set()
+
+ def stop(self):
+ self.cancel_delayed_calls()
+
+ def pause(self):
+ self._event.clear()
+
+ def resume(self):
+ self._event.set()
+
+ def wait_for_alert_in_thread(self):
+ while self._component_state not in ('Stopping', 'Stopped'):
+ if self.check_delayed_calls():
+ time.sleep(0.05)
+ continue
+
+ if self.session.wait_for_alert(1000) is None:
+ continue
+ if self._event.wait():
+ threads.blockingCallFromThread(reactor, self.maybe_handle_alerts)
+
+ def on_delayed_call_timeout(self, result, timeout, **kwargs):
+ log.warning('Alert handler was timed-out before being called %s', kwargs)
+
+ def cancel_delayed_calls(self):
+ """Cancel all delayed handlers."""
+ for delayed_call in self.delayed_calls:
+ delayed_call.cancel()
+ self.delayed_calls = []
+
+ def check_delayed_calls(self) -> bool:
+ """Returns True if any handler calls are delayed."""
+ self.delayed_calls = [dc for dc in self.delayed_calls if not dc.called]
+ return len(self.delayed_calls) > 0
+
+ def maybe_handle_alerts(self) -> None:
+ if self._component_state != 'Started':
+ return
+
+ self.handle_alerts()
+
+ def register_handler(self, alert_type: str, handler: Callable[[Any], None]) -> None:
+ """
+ Registers a function that will be called when 'alert_type' is pop'd
+ in handle_alerts. The handler function should look like: handler(alert)
+ Where 'alert' is the actual alert object from libtorrent.
+
+ Args:
+ alert_type: String representation of the libtorrent alert name.
+ Can be supplied with or without `_alert` suffix.
+ handler: Callback function when the alert is raised.
+ """
+ if alert_type and alert_type.endswith('_alert'):
+ alert_type = alert_type[: -len('_alert')]
+
+ self.handlers[alert_type].append(handler)
+ log.debug('Registered handler for alert %s', alert_type)
+
+ def deregister_handler(self, handler: Callable[[Any], None]):
+ """
+ De-registers the `handler` function from all alert types.
+
+ Args:
+ handler: The handler function to deregister.
+ """
+ for alert_type_handlers in self.handlers.values():
+ with contextlib.suppress(ValueError):
+ alert_type_handlers.remove(handler)
+
+ def handle_alerts(self):
+ """
+ Pops all libtorrent alerts in the session queue and handles them appropriately.
+ """
+ alerts = self.session.pop_alerts()
+ if not alerts:
+ return
+
+ num_alerts = len(alerts)
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Alerts queued: %s', num_alerts)
+ if num_alerts > 0.9 * self.alert_queue_size:
+ log.warning(
+ 'Warning total alerts queued, %s, passes 90%% of queue size.',
+ num_alerts,
+ )
+
+ for alert in alerts:
+ alert_type = alert.what()
+
+ # Display the alert message
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('%s: %s', alert_type, decode_bytes(alert.message()))
+
+ if alert_type not in self.handlers:
+ continue
+
+ # Call any handlers for this alert type
+ for handler in self.handlers[alert_type]:
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Handling alert: %s', alert_type)
+ d = task.deferLater(reactor, 0, handler, alert)
+ on_handler_timeout = partial(
+ self.on_delayed_call_timeout,
+ handler=handler.__qualname__,
+ alert_type=alert_type,
+ )
+ d.addTimeout(
+ self.handlers_timeout_secs,
+ reactor,
+ onTimeoutCancel=on_handler_timeout,
+ )
+ self.delayed_calls.append(d)
+
+ def set_alert_queue_size(self, queue_size):
+ """Sets the maximum size of the libtorrent alert queue"""
+ log.info('Alert Queue Size set to %s', queue_size)
+ self.alert_queue_size = queue_size
+ component.get('Core').apply_session_setting(
+ 'alert_queue_size', self.alert_queue_size
+ )
diff --git a/deluge/core/authmanager.py b/deluge/core/authmanager.py
new file mode 100644
index 0000000..3ff8a3a
--- /dev/null
+++ b/deluge/core/authmanager.py
@@ -0,0 +1,285 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+import shutil
+
+import deluge.component as component
+import deluge.configmanager as configmanager
+from deluge.common import (
+ AUTH_LEVEL_ADMIN,
+ AUTH_LEVEL_DEFAULT,
+ AUTH_LEVEL_NONE,
+ AUTH_LEVEL_NORMAL,
+ AUTH_LEVEL_READONLY,
+ create_localclient_account,
+)
+from deluge.error import AuthenticationRequired, AuthManagerError, BadLoginError
+
+log = logging.getLogger(__name__)
+
+AUTH_LEVELS_MAPPING = {
+ 'NONE': AUTH_LEVEL_NONE,
+ 'READONLY': AUTH_LEVEL_READONLY,
+ 'DEFAULT': AUTH_LEVEL_DEFAULT,
+ 'NORMAL': AUTH_LEVEL_NORMAL,
+ 'ADMIN': AUTH_LEVEL_ADMIN,
+}
+AUTH_LEVELS_MAPPING_REVERSE = {v: k for k, v in AUTH_LEVELS_MAPPING.items()}
+
+
+class Account:
+ __slots__ = ('username', 'password', 'authlevel')
+
+ def __init__(self, username, password, authlevel):
+ self.username = username
+ self.password = password
+ self.authlevel = authlevel
+
+ def data(self):
+ return {
+ 'username': self.username,
+ 'password': self.password,
+ 'authlevel': AUTH_LEVELS_MAPPING_REVERSE[self.authlevel],
+ 'authlevel_int': self.authlevel,
+ }
+
+ def __repr__(self):
+ return '<Account username="{username}" authlevel={authlevel}>'.format(
+ username=self.username,
+ authlevel=self.authlevel,
+ )
+
+
+class AuthManager(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'AuthManager', interval=10)
+ self.__auth = {}
+ self.__auth_modification_time = None
+
+ def start(self):
+ self.__load_auth_file()
+
+ def stop(self):
+ self.__auth = {}
+
+ def shutdown(self):
+ pass
+
+ def update(self):
+ auth_file = configmanager.get_config_dir('auth')
+ # Check for auth file and create if necessary
+ if not os.path.isfile(auth_file):
+ log.info('Authfile not found, recreating it.')
+ self.__load_auth_file()
+ return
+
+ auth_file_modification_time = os.stat(auth_file).st_mtime
+ if self.__auth_modification_time != auth_file_modification_time:
+ log.info('Auth file changed, reloading it!')
+ self.__load_auth_file()
+
+ def authorize(self, username, password):
+ """Authorizes users based on username and password.
+
+ Args:
+ username (str): Username
+ password (str): Password
+
+ Returns:
+ int: The auth level for this user.
+
+ Raises:
+ AuthenticationRequired: If additional details are required to authenticate.
+ BadLoginError: If the username does not exist or password does not match.
+
+ """
+ if not username:
+ raise AuthenticationRequired(
+ 'Username and Password are required.', username
+ )
+
+ if username not in self.__auth:
+ # Let's try to re-load the file.. Maybe it's been updated
+ self.__load_auth_file()
+ if username not in self.__auth:
+ raise BadLoginError('Username does not exist', username)
+
+ if self.__auth[username].password == password:
+ # Return the users auth level
+ return self.__auth[username].authlevel
+ elif not password and self.__auth[username].password:
+ raise AuthenticationRequired('Password is required', username)
+ else:
+ raise BadLoginError('Password does not match', username)
+
+ def has_account(self, username):
+ return username in self.__auth
+
+ def get_known_accounts(self):
+ """Returns a list of known deluge usernames."""
+ self.__load_auth_file()
+ return [account.data() for account in self.__auth.values()]
+
+ def create_account(self, username, password, authlevel):
+ if username in self.__auth:
+ raise AuthManagerError('Username in use.', username)
+ if authlevel not in AUTH_LEVELS_MAPPING:
+ raise AuthManagerError('Invalid auth level: %s' % authlevel)
+ try:
+ self.__auth[username] = Account(
+ username, password, AUTH_LEVELS_MAPPING[authlevel]
+ )
+ self.write_auth_file()
+ return True
+ except Exception as ex:
+ log.exception(ex)
+ raise ex
+
+ def update_account(self, username, password, authlevel):
+ if username not in self.__auth:
+ raise AuthManagerError('Username not known', username)
+ if authlevel not in AUTH_LEVELS_MAPPING:
+ raise AuthManagerError('Invalid auth level: %s' % authlevel)
+ try:
+ self.__auth[username].username = username
+ self.__auth[username].password = password
+ self.__auth[username].authlevel = AUTH_LEVELS_MAPPING[authlevel]
+ self.write_auth_file()
+ return True
+ except Exception as ex:
+ log.exception(ex)
+ raise ex
+
+ def remove_account(self, username):
+ if username not in self.__auth:
+ raise AuthManagerError('Username not known', username)
+ elif username == component.get('RPCServer').get_session_user():
+ raise AuthManagerError(
+ 'You cannot delete your own account while logged in!', username
+ )
+
+ del self.__auth[username]
+ self.write_auth_file()
+ return True
+
+ def write_auth_file(self):
+ filename = 'auth'
+ filepath = os.path.join(configmanager.get_config_dir(), filename)
+ filepath_bak = filepath + '.bak'
+ filepath_tmp = filepath + '.tmp'
+
+ try:
+ if os.path.isfile(filepath):
+ log.debug('Creating backup of %s at: %s', filename, filepath_bak)
+ shutil.copy2(filepath, filepath_bak)
+ except OSError as ex:
+ log.error('Unable to backup %s to %s: %s', filepath, filepath_bak, ex)
+ else:
+ log.info('Saving the %s at: %s', filename, filepath)
+ try:
+ with open(filepath_tmp, 'w', encoding='utf8') as _file:
+ for account in self.__auth.values():
+ _file.write(
+ '%(username)s:%(password)s:%(authlevel_int)s\n'
+ % account.data()
+ )
+ _file.flush()
+ os.fsync(_file.fileno())
+ shutil.move(filepath_tmp, filepath)
+ except OSError as ex:
+ log.error('Unable to save %s: %s', filename, ex)
+ if os.path.isfile(filepath_bak):
+ log.info('Restoring backup of %s from: %s', filename, filepath_bak)
+ shutil.move(filepath_bak, filepath)
+
+ self.__load_auth_file()
+
+ def __load_auth_file(self):
+ save_and_reload = False
+ filename = 'auth'
+ auth_file = configmanager.get_config_dir(filename)
+ auth_file_bak = auth_file + '.bak'
+
+ # Check for auth file and create if necessary
+ if not os.path.isfile(auth_file):
+ create_localclient_account()
+ return self.__load_auth_file()
+
+ auth_file_modification_time = os.stat(auth_file).st_mtime
+ if self.__auth_modification_time is None:
+ self.__auth_modification_time = auth_file_modification_time
+ elif self.__auth_modification_time == auth_file_modification_time:
+ # File didn't change, no need for re-parsing's
+ return
+
+ for _filepath in (auth_file, auth_file_bak):
+ log.info('Opening %s for load: %s', filename, _filepath)
+ try:
+ with open(_filepath, encoding='utf8') as _file:
+ file_data = _file.readlines()
+ except OSError as ex:
+ log.warning('Unable to load %s: %s', _filepath, ex)
+ file_data = []
+ else:
+ log.info('Successfully loaded %s: %s', filename, _filepath)
+ break
+
+ # Load the auth file into a dictionary: {username: Account(...)}
+ for line in file_data:
+ line = line.strip()
+ if line.startswith('#') or not line:
+ # This line is a comment or empty
+ continue
+ lsplit = line.split(':')
+ if len(lsplit) == 2:
+ username, password = lsplit
+ log.warning(
+ 'Your auth entry for %s contains no auth level, '
+ 'using AUTH_LEVEL_DEFAULT(%s)..',
+ username,
+ AUTH_LEVEL_DEFAULT,
+ )
+ if username == 'localclient':
+ authlevel = AUTH_LEVEL_ADMIN
+ else:
+ authlevel = AUTH_LEVEL_DEFAULT
+ # This is probably an old auth file
+ save_and_reload = True
+ elif len(lsplit) == 3:
+ username, password, authlevel = lsplit
+ else:
+ log.error('Your auth file is malformed: Incorrect number of fields!')
+ continue
+
+ username = username.strip()
+ password = password.strip()
+ try:
+ authlevel = int(authlevel)
+ except ValueError:
+ try:
+ authlevel = AUTH_LEVELS_MAPPING[authlevel]
+ except KeyError:
+ log.error(
+ 'Your auth file is malformed: %r is not a valid auth level',
+ authlevel,
+ )
+ continue
+
+ self.__auth[username] = Account(username, password, authlevel)
+
+ if 'localclient' not in self.__auth:
+ create_localclient_account(True)
+ return self.__load_auth_file()
+
+ if save_and_reload:
+ log.info('Re-writing auth file (upgrade)')
+ self.write_auth_file()
+ self.__auth_modification_time = auth_file_modification_time
diff --git a/deluge/core/core.py b/deluge/core/core.py
new file mode 100644
index 0000000..e2130f5
--- /dev/null
+++ b/deluge/core/core.py
@@ -0,0 +1,1302 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import glob
+import logging
+import os
+import shutil
+import tempfile
+from base64 import b64decode, b64encode
+from typing import Any, Dict, List, Optional, Tuple, Union
+from urllib.request import URLError, urlopen
+
+from twisted.internet import defer, reactor, task, threads
+from twisted.web.client import Agent, readBody
+
+import deluge.common
+import deluge.component as component
+from deluge import metafile, path_chooser_common
+from deluge._libtorrent import LT_VERSION, lt
+from deluge.configmanager import ConfigManager, get_config_dir
+from deluge.core.alertmanager import AlertManager
+from deluge.core.authmanager import (
+ AUTH_LEVEL_ADMIN,
+ AUTH_LEVEL_NONE,
+ AUTH_LEVELS_MAPPING,
+ AUTH_LEVELS_MAPPING_REVERSE,
+ AuthManager,
+)
+from deluge.core.eventmanager import EventManager
+from deluge.core.filtermanager import FilterManager
+from deluge.core.pluginmanager import PluginManager
+from deluge.core.preferencesmanager import PreferencesManager
+from deluge.core.rpcserver import export
+from deluge.core.torrentmanager import TorrentManager
+from deluge.decorators import deprecated, maybe_coroutine
+from deluge.error import (
+ AddTorrentError,
+ DelugeError,
+ InvalidPathError,
+ InvalidTorrentError,
+)
+from deluge.event import (
+ NewVersionAvailableEvent,
+ SessionPausedEvent,
+ SessionResumedEvent,
+ TorrentQueueChangedEvent,
+)
+from deluge.httpdownloader import download_file
+
+log = logging.getLogger(__name__)
+
+DEPR_SESSION_STATUS_KEYS = {
+ # 'active_requests': None, # In dht_stats_alert, if required.
+ 'allowed_upload_slots': 'ses.num_unchoke_slots',
+ # 'dht_global_nodes': None,
+ 'dht_node_cache': 'dht.dht_node_cache',
+ 'dht_nodes': 'dht.dht_nodes',
+ 'dht_torrents': 'dht.dht_torrents',
+ # 'dht_total_allocations': None,
+ 'down_bandwidth_bytes_queue': 'net.limiter_down_bytes',
+ 'down_bandwidth_queue': 'net.limiter_down_queue',
+ 'has_incoming_connections': 'net.has_incoming_connections',
+ 'num_peers': 'peer.num_peers_connected',
+ 'num_unchoked': 'peer.num_peers_up_unchoked',
+ # 'optimistic_unchoke_counter': None, # lt.settings_pack
+ 'total_dht_download': 'dht.dht_bytes_in',
+ 'total_dht_upload': 'dht.dht_bytes_out',
+ 'total_download': 'net.recv_bytes',
+ 'total_failed_bytes': 'net.recv_failed_bytes',
+ 'total_ip_overhead_download': 'net.recv_ip_overhead_bytes',
+ 'total_ip_overhead_upload': 'net.sent_ip_overhead_bytes',
+ 'total_payload_download': 'net.recv_payload_bytes',
+ 'total_payload_upload': 'net.sent_payload_bytes',
+ 'total_redundant_bytes': 'net.recv_redundant_bytes',
+ 'total_tracker_download': 'net.recv_tracker_bytes',
+ 'total_tracker_upload': 'net.sent_tracker_bytes',
+ 'total_upload': 'net.sent_bytes',
+ # 'unchoke_counter': None, # lt.settings_pack
+ 'up_bandwidth_bytes_queue': 'net.limiter_up_bytes',
+ 'up_bandwidth_queue': 'net.limiter_up_queue',
+ # 'utp_stats': None
+}
+
+# Session status rate keys associated with session status counters.
+SESSION_RATES_MAPPING = {
+ 'dht_download_rate': 'dht.dht_bytes_in',
+ 'dht_upload_rate': 'dht.dht_bytes_out',
+ 'ip_overhead_download_rate': 'net.recv_ip_overhead_bytes',
+ 'ip_overhead_upload_rate': 'net.sent_ip_overhead_bytes',
+ 'payload_download_rate': 'net.recv_payload_bytes',
+ 'payload_upload_rate': 'net.sent_payload_bytes',
+ 'tracker_download_rate': 'net.recv_tracker_bytes',
+ 'tracker_upload_rate': 'net.sent_tracker_bytes',
+ 'download_rate': 'net.recv_bytes',
+ 'upload_rate': 'net.sent_bytes',
+}
+
+DELUGE_VER = deluge.common.get_version()
+
+
+class Core(component.Component):
+ def __init__(
+ self, listen_interface=None, outgoing_interface=None, read_only_config_keys=None
+ ):
+ component.Component.__init__(self, 'Core')
+
+ # Start the libtorrent session.
+ user_agent = f'Deluge/{DELUGE_VER} libtorrent/{LT_VERSION}'
+ peer_id = self._create_peer_id(DELUGE_VER)
+ log.debug('Starting session (peer_id: %s, user_agent: %s)', peer_id, user_agent)
+ settings_pack = {
+ 'peer_fingerprint': peer_id,
+ 'user_agent': user_agent,
+ 'ignore_resume_timestamps': True,
+ }
+ self.session = lt.session(settings_pack, flags=0)
+
+ # Load the settings, if available.
+ self._load_session_state()
+
+ # Enable libtorrent extensions
+ # Allows peers to download the metadata from the swarm directly
+ self.session.add_extension('ut_metadata')
+ # Ban peers that sends bad data
+ self.session.add_extension('smart_ban')
+
+ # Create the components
+ self.eventmanager = EventManager()
+ self.preferencesmanager = PreferencesManager()
+ self.alertmanager = AlertManager()
+ self.pluginmanager = PluginManager(self)
+ self.torrentmanager = TorrentManager()
+ self.filtermanager = FilterManager(self)
+ self.authmanager = AuthManager()
+
+ # New release check information
+ self.new_release = None
+
+ # External IP Address from libtorrent
+ self.external_ip = None
+ self.eventmanager.register_event_handler(
+ 'ExternalIPEvent', self._on_external_ip_event
+ )
+
+ # GeoIP instance with db loaded
+ self.geoip_instance = None
+
+ # These keys will be dropped from the set_config() RPC and are
+ # configurable from the command-line.
+ self.read_only_config_keys = read_only_config_keys
+ log.debug('read_only_config_keys: %s', read_only_config_keys)
+
+ # Get the core config
+ self.config = ConfigManager('core.conf')
+ self.config.save()
+
+ # If there was an interface value from the command line, use it, but
+ # store the one in the config so we can restore it on shutdown
+ self._old_listen_interface = None
+ if listen_interface:
+ if deluge.common.is_interface(listen_interface):
+ self._old_listen_interface = self.config['listen_interface']
+ self.config['listen_interface'] = listen_interface
+ else:
+ log.error(
+ 'Invalid listen interface (must be IP Address or Interface Name): %s',
+ listen_interface,
+ )
+
+ self._old_outgoing_interface = None
+ if outgoing_interface:
+ if deluge.common.is_interface(outgoing_interface):
+ self._old_outgoing_interface = self.config['outgoing_interface']
+ self.config['outgoing_interface'] = outgoing_interface
+ else:
+ log.error(
+ 'Invalid outgoing interface (must be IP Address or Interface Name): %s',
+ outgoing_interface,
+ )
+
+ # New release check information
+ self.__new_release = None
+
+ # Session status timer
+ self.session_status = {k.name: 0 for k in lt.session_stats_metrics()}
+ self._session_prev_bytes = {k: 0 for k in SESSION_RATES_MAPPING}
+ # Initiate other session status keys.
+ self.session_status.update(self._session_prev_bytes)
+ hit_ratio_keys = ['write_hit_ratio', 'read_hit_ratio']
+ self.session_status.update({k: 0.0 for k in hit_ratio_keys})
+
+ self.session_status_timer_interval = 0.5
+ self.session_status_timer = task.LoopingCall(self.session.post_session_stats)
+ self.alertmanager.register_handler(
+ 'session_stats', self._on_alert_session_stats
+ )
+ self.session_rates_timer_interval = 2
+ self.session_rates_timer = task.LoopingCall(self._update_session_rates)
+
+ def start(self):
+ """Starts the core"""
+ self.session_status_timer.start(self.session_status_timer_interval)
+ self.session_rates_timer.start(self.session_rates_timer_interval, now=False)
+
+ def stop(self):
+ log.debug('Core stopping...')
+
+ if self.session_status_timer.running:
+ self.session_status_timer.stop()
+
+ if self.session_rates_timer.running:
+ self.session_rates_timer.stop()
+
+ # Save the libtorrent session state
+ self._save_session_state()
+
+ # We stored a copy of the old interface value
+ if self._old_listen_interface is not None:
+ self.config['listen_interface'] = self._old_listen_interface
+
+ if self._old_outgoing_interface is not None:
+ self.config['outgoing_interface'] = self._old_outgoing_interface
+
+ # Make sure the config file has been saved
+ self.config.save()
+
+ def shutdown(self):
+ pass
+
+ def apply_session_setting(self, key, value):
+ self.apply_session_settings({key: value})
+
+ def apply_session_settings(self, settings):
+ """Apply libtorrent session settings.
+
+ Args:
+ settings: A dict of lt session settings to apply.
+ """
+ self.session.apply_settings(settings)
+
+ @staticmethod
+ def _create_peer_id(version: str) -> str:
+ """Create a peer_id fingerprint.
+
+ This creates the peer_id and modifies the release char to identify
+ pre-release and development version. Using ``D`` for dev, daily or
+ nightly builds, ``a, b, r`` for pre-releases and ``s`` for
+ stable releases.
+
+ Examples:
+ ``--<client><client><major><minor><micro><release>--``
+ ``--DE200D--`` (development version of 2.0.0)
+ ``--DE200s--`` (stable release of v2.0.0)
+ ``--DE201b--`` (beta pre-release of v2.0.1)
+
+ Args:
+ version: The version string in PEP440 dotted notation.
+
+ Returns:
+ The formatted peer_id with Deluge prefix e.g. '--DE200s--'
+ """
+ split = deluge.common.VersionSplit(version)
+ # Fill list with zeros to length of 4 and use lt to create fingerprint.
+ version_list = split.version + [0] * (4 - len(split.version))
+ peer_id = lt.generate_fingerprint('DE', *version_list)
+
+ def substitute_chr(string, idx, char):
+ """Fast substitute single char in string."""
+ return string[:idx] + char + string[idx + 1 :]
+
+ if split.dev:
+ release_chr = 'D'
+ elif split.suffix:
+ # a (alpha), b (beta) or r (release candidate).
+ release_chr = split.suffix[0].lower()
+ else:
+ release_chr = 's'
+ peer_id = substitute_chr(peer_id, 6, release_chr)
+
+ return peer_id
+
+ def _save_session_state(self):
+ """Saves the libtorrent session state"""
+ filename = 'session.state'
+ filepath = get_config_dir(filename)
+ filepath_bak = filepath + '.bak'
+ filepath_tmp = filepath + '.tmp'
+
+ try:
+ if os.path.isfile(filepath):
+ log.debug('Creating backup of %s at: %s', filename, filepath_bak)
+ shutil.copy2(filepath, filepath_bak)
+ except OSError as ex:
+ log.error('Unable to backup %s to %s: %s', filepath, filepath_bak, ex)
+ else:
+ log.info('Saving the %s at: %s', filename, filepath)
+ try:
+ with open(filepath_tmp, 'wb') as _file:
+ _file.write(lt.bencode(self.session.save_state()))
+ _file.flush()
+ os.fsync(_file.fileno())
+ shutil.move(filepath_tmp, filepath)
+ except (OSError, EOFError) as ex:
+ log.error('Unable to save %s: %s', filename, ex)
+ if os.path.isfile(filepath_bak):
+ log.info('Restoring backup of %s from: %s', filename, filepath_bak)
+ shutil.move(filepath_bak, filepath)
+
+ def _load_session_state(self) -> dict:
+ """Loads the libtorrent session state
+
+ Returns:
+ A libtorrent sesion state, empty dict if unable to load it.
+ """
+ filename = 'session.state'
+ filepath = get_config_dir(filename)
+ filepath_bak = filepath + '.bak'
+
+ for _filepath in (filepath, filepath_bak):
+ log.debug('Opening %s for load: %s', filename, _filepath)
+ try:
+ with open(_filepath, 'rb') as _file:
+ state = lt.bdecode(_file.read())
+ except (OSError, EOFError, RuntimeError) as ex:
+ log.warning('Unable to load %s: %s', _filepath, ex)
+ else:
+ log.info('Successfully loaded %s: %s', filename, _filepath)
+ self.session.load_state(state)
+
+ def _on_alert_session_stats(self, alert):
+ """The handler for libtorrent session stats alert"""
+ self.session_status.update(alert.values)
+ self._update_session_cache_hit_ratio()
+
+ def _update_session_cache_hit_ratio(self):
+ """Calculates the cache read/write hit ratios for session_status."""
+ blocks_written = self.session_status['disk.num_blocks_written']
+ blocks_read = self.session_status['disk.num_blocks_read']
+
+ if blocks_written:
+ self.session_status['write_hit_ratio'] = (
+ blocks_written - self.session_status['disk.num_write_ops']
+ ) / blocks_written
+ else:
+ self.session_status['write_hit_ratio'] = 0.0
+
+ if blocks_read:
+ self.session_status['read_hit_ratio'] = (
+ blocks_read - self.session_status['disk.num_read_ops']
+ ) / blocks_read
+ else:
+ self.session_status['read_hit_ratio'] = 0.0
+
+ def _update_session_rates(self):
+ """Calculate session status rates.
+
+ Uses polling interval and counter difference for session_status rates.
+ """
+ for rate_key, prev_bytes in list(self._session_prev_bytes.items()):
+ new_bytes = self.session_status[SESSION_RATES_MAPPING[rate_key]]
+ self.session_status[rate_key] = (
+ new_bytes - prev_bytes
+ ) / self.session_rates_timer_interval
+ # Store current value for next update.
+ self._session_prev_bytes[rate_key] = new_bytes
+
+ def get_new_release(self):
+ log.debug('get_new_release')
+ try:
+ self.new_release = (
+ urlopen('http://download.deluge-torrent.org/version-2.0')
+ .read()
+ .decode()
+ .strip()
+ )
+ except URLError as ex:
+ log.debug('Unable to get release info from website: %s', ex)
+ else:
+ self.check_new_release()
+
+ def check_new_release(self):
+ if self.new_release:
+ log.debug('new_release: %s', self.new_release)
+ if deluge.common.VersionSplit(
+ self.new_release
+ ) > deluge.common.VersionSplit(deluge.common.get_version()):
+ component.get('EventManager').emit(
+ NewVersionAvailableEvent(self.new_release)
+ )
+ return self.new_release
+ return False
+
+ # Exported Methods
+ @export
+ def add_torrent_file_async(
+ self, filename: str, filedump: str, options: dict, save_state: bool = True
+ ) -> 'defer.Deferred[Optional[str]]':
+ """Adds a torrent file to the session asynchronously.
+
+ Args:
+ filename: The filename of the torrent.
+ filedump: A base64 encoded string of torrent file contents.
+ options: The options to apply to the torrent upon adding.
+ save_state: If the state should be saved after adding the file.
+
+ Returns:
+ The torrent ID or None.
+ """
+ try:
+ filedump = b64decode(filedump)
+ except TypeError as ex:
+ log.error('There was an error decoding the filedump string: %s', ex)
+
+ try:
+ d = self.torrentmanager.add_async(
+ filedump=filedump,
+ options=options,
+ filename=filename,
+ save_state=save_state,
+ )
+ except RuntimeError as ex:
+ log.error('There was an error adding the torrent file %s: %s', filename, ex)
+ raise
+ else:
+ return d
+
+ @export
+ @maybe_coroutine
+ async def prefetch_magnet_metadata(
+ self, magnet: str, timeout: int = 30
+ ) -> Tuple[str, bytes]:
+ """Download magnet metadata without adding to Deluge session.
+
+ Used by UIs to get magnet files for selection before adding to session.
+
+ The metadata is bencoded and for transfer base64 encoded.
+
+ Args:
+ magnet: The magnet URI.
+ timeout: Number of seconds to wait before canceling request.
+
+ Returns:
+ A tuple of (torrent_id, metadata) for the magnet.
+
+ """
+ return await self.torrentmanager.prefetch_metadata(magnet, timeout)
+
+ @export
+ def add_torrent_file(
+ self, filename: str, filedump: Union[str, bytes], options: dict
+ ) -> Optional[str]:
+ """Adds a torrent file to the session.
+
+ Args:
+ filename: The filename of the torrent.
+ filedump: A base64 encoded string of the torrent file contents.
+ options: The options to apply to the torrent upon adding.
+
+ Returns:
+ The torrent_id or None.
+ """
+ try:
+ filedump = b64decode(filedump)
+ except Exception as ex:
+ log.error('There was an error decoding the filedump string: %s', ex)
+
+ try:
+ return self.torrentmanager.add(
+ filedump=filedump, options=options, filename=filename
+ )
+ except RuntimeError as ex:
+ log.error('There was an error adding the torrent file %s: %s', filename, ex)
+ raise
+
+ @export
+ def add_torrent_files(
+ self, torrent_files: List[Tuple[str, Union[str, bytes], dict]]
+ ) -> 'defer.Deferred[List[AddTorrentError]]':
+ """Adds multiple torrent files to the session asynchronously.
+
+ Args:
+ torrent_files: Torrent files as tuple of
+ ``(filename, filedump, options)``.
+
+ Returns:
+ A list of errors (if there were any)
+ """
+
+ @maybe_coroutine
+ async def add_torrents():
+ errors = []
+ last_index = len(torrent_files) - 1
+ for idx, torrent in enumerate(torrent_files):
+ try:
+ await self.add_torrent_file_async(
+ torrent[0], torrent[1], torrent[2], save_state=idx == last_index
+ )
+ except AddTorrentError as ex:
+ log.warning('Error when adding torrent: %s', ex)
+ errors.append(ex)
+ defer.returnValue(errors)
+
+ return task.deferLater(reactor, 0, add_torrents)
+
+ @export
+ @maybe_coroutine
+ async def add_torrent_url(
+ self, url: str, options: dict, headers: dict = None
+ ) -> 'defer.Deferred[Optional[str]]':
+ """Adds a torrent from a URL. Deluge will attempt to fetch the torrent
+ from the URL prior to adding it to the session.
+
+ Args:
+ url: the URL pointing to the torrent file
+ options: the options to apply to the torrent on add
+ headers: any optional headers to send
+
+ Returns:
+ a Deferred which returns the torrent_id as a str or None
+ """
+ log.info('Attempting to add URL %s', url)
+
+ tmp_fd, tmp_file = tempfile.mkstemp(prefix='deluge_url.', suffix='.torrent')
+ try:
+ filename = await download_file(
+ url, tmp_file, headers=headers, force_filename=True
+ )
+ except Exception:
+ log.error('Failed to add torrent from URL %s', url)
+ raise
+ else:
+ with open(filename, 'rb') as _file:
+ data = _file.read()
+ return self.add_torrent_file(filename, b64encode(data), options)
+ finally:
+ try:
+ os.close(tmp_fd)
+ os.remove(tmp_file)
+ except OSError as ex:
+ log.warning(f'Unable to delete temp file {tmp_file}: , {ex}')
+
+ @export
+ def add_torrent_magnet(self, uri: str, options: dict) -> str:
+ """Adds a torrent from a magnet link.
+
+ Args:
+ uri: the magnet link
+ options: the options to apply to the torrent on add
+
+ Returns:
+ the torrent_id
+ """
+ log.debug('Attempting to add by magnet URI: %s', uri)
+
+ return self.torrentmanager.add(magnet=uri, options=options)
+
+ @export
+ def remove_torrent(self, torrent_id: str, remove_data: bool) -> bool:
+ """Removes a single torrent from the session.
+
+ Args:
+ torrent_id: The torrent ID to remove.
+ remove_data: If True, also remove the downloaded data.
+
+ Returns:
+ True if removed successfully.
+
+ Raises:
+ InvalidTorrentError: If the torrent ID does not exist in the session.
+ """
+ log.debug('Removing torrent %s from the core.', torrent_id)
+ return self.torrentmanager.remove(torrent_id, remove_data)
+
+ @export
+ def remove_torrents(
+ self, torrent_ids: List[str], remove_data: bool
+ ) -> 'defer.Deferred[List[Tuple[str, str]]]':
+ """Remove multiple torrents from the session.
+
+ Args:
+ torrent_ids: The torrent IDs to remove.
+ remove_data: If True, also remove the downloaded data.
+
+ Returns:
+ An empty list if no errors occurred otherwise the list contains
+ tuples of strings, a torrent ID and an error message. For example:
+
+ [('<torrent_id>', 'Error removing torrent')]
+ """
+ log.info('Removing %d torrents from core.', len(torrent_ids))
+
+ def do_remove_torrents():
+ errors = []
+ for torrent_id in torrent_ids:
+ try:
+ self.torrentmanager.remove(
+ torrent_id, remove_data=remove_data, save_state=False
+ )
+ except InvalidTorrentError as ex:
+ errors.append((torrent_id, str(ex)))
+ # Save the session state
+ self.torrentmanager.save_state()
+ if errors:
+ log.warning(
+ 'Failed to remove %d of %d torrents.', len(errors), len(torrent_ids)
+ )
+ return errors
+
+ return task.deferLater(reactor, 0, do_remove_torrents)
+
+ @export
+ def get_session_status(self, keys: List[str]) -> Dict[str, Union[int, float]]:
+ """Gets the session status values for 'keys', these keys are taking
+ from libtorrent's session status.
+
+ See: http://www.rasterbar.com/products/libtorrent/manual.html#status
+
+ Args:
+ keys: the keys for which we want values
+
+ Returns:
+ a dictionary of {key: value, ...}
+ """
+ if not keys:
+ return self.session_status
+
+ status = {}
+ for key in keys:
+ try:
+ status[key] = self.session_status[key]
+ except KeyError:
+ if key in DEPR_SESSION_STATUS_KEYS:
+ new_key = DEPR_SESSION_STATUS_KEYS[key]
+ log.debug(
+ 'Deprecated session status key %s, please use %s', key, new_key
+ )
+ status[key] = self.session_status[new_key]
+ else:
+ log.debug('Session status key not valid: %s', key)
+ return status
+
+ @export
+ def force_reannounce(self, torrent_ids: List[str]) -> None:
+ log.debug('Forcing reannouncment to: %s', torrent_ids)
+ for torrent_id in torrent_ids:
+ self.torrentmanager[torrent_id].force_reannounce()
+
+ @export
+ def pause_torrent(self, torrent_id: str) -> None:
+ """Pauses a torrent"""
+ log.debug('Pausing: %s', torrent_id)
+ if not isinstance(torrent_id, str):
+ self.pause_torrents(torrent_id)
+ else:
+ self.torrentmanager[torrent_id].pause()
+
+ @export
+ def pause_torrents(self, torrent_ids: List[str] = None) -> None:
+ """Pauses a list of torrents"""
+ if not torrent_ids:
+ torrent_ids = self.torrentmanager.get_torrent_list()
+ for torrent_id in torrent_ids:
+ self.pause_torrent(torrent_id)
+
+ @export
+ def connect_peer(self, torrent_id: str, ip: str, port: int):
+ log.debug('adding peer %s to %s', ip, torrent_id)
+ if not self.torrentmanager[torrent_id].connect_peer(ip, port):
+ log.warning('Error adding peer %s:%s to %s', ip, port, torrent_id)
+
+ @export
+ def move_storage(self, torrent_ids: List[str], dest: str):
+ log.debug('Moving storage %s to %s', torrent_ids, dest)
+ for torrent_id in torrent_ids:
+ if not self.torrentmanager[torrent_id].move_storage(dest):
+ log.warning('Error moving torrent %s to %s', torrent_id, dest)
+
+ @export
+ def pause_session(self) -> None:
+ """Pause the entire session"""
+ if not self.session.is_paused():
+ self.session.pause()
+ component.get('EventManager').emit(SessionPausedEvent())
+
+ @export
+ def resume_session(self) -> None:
+ """Resume the entire session"""
+ if self.session.is_paused():
+ self.session.resume()
+ for torrent_id in self.torrentmanager.torrents:
+ self.torrentmanager[torrent_id].update_state()
+ component.get('EventManager').emit(SessionResumedEvent())
+
+ @export
+ def is_session_paused(self) -> bool:
+ """Returns the activity of the session"""
+ return self.session.is_paused()
+
+ @export
+ def resume_torrent(self, torrent_id: str) -> None:
+ """Resumes a torrent"""
+ log.debug('Resuming: %s', torrent_id)
+ if not isinstance(torrent_id, str):
+ self.resume_torrents(torrent_id)
+ else:
+ self.torrentmanager[torrent_id].resume()
+
+ @export
+ def resume_torrents(self, torrent_ids: List[str] = None) -> None:
+ """Resumes a list of torrents"""
+ if not torrent_ids:
+ torrent_ids = self.torrentmanager.get_torrent_list()
+ for torrent_id in torrent_ids:
+ self.resume_torrent(torrent_id)
+
+ def create_torrent_status(
+ self,
+ torrent_id,
+ torrent_keys,
+ plugin_keys,
+ diff=False,
+ update=False,
+ all_keys=False,
+ ):
+ try:
+ status = self.torrentmanager[torrent_id].get_status(
+ torrent_keys, diff, update=update, all_keys=all_keys
+ )
+ except KeyError:
+ import traceback
+
+ traceback.print_exc()
+ # Torrent was probably removed meanwhile
+ return {}
+
+ # Ask the plugin manager to fill in the plugin keys
+ if len(plugin_keys) > 0 or all_keys:
+ status.update(self.pluginmanager.get_status(torrent_id, plugin_keys))
+ return status
+
+ @export
+ def get_torrent_status(
+ self, torrent_id: str, keys: List[str], diff: bool = False
+ ) -> dict:
+ torrent_keys, plugin_keys = self.torrentmanager.separate_keys(
+ keys, [torrent_id]
+ )
+ return self.create_torrent_status(
+ torrent_id,
+ torrent_keys,
+ plugin_keys,
+ diff=diff,
+ update=True,
+ all_keys=not keys,
+ )
+
+ @export
+ @maybe_coroutine
+ async def get_torrents_status(
+ self, filter_dict: dict, keys: List[str], diff: bool = False
+ ) -> dict:
+ """returns all torrents , optionally filtered by filter_dict."""
+ all_keys = not keys
+ torrent_ids = self.filtermanager.filter_torrent_ids(filter_dict)
+ status_dict, plugin_keys = await self.torrentmanager.torrents_status_update(
+ torrent_ids, keys, diff=diff
+ )
+ # Ask the plugin manager to fill in the plugin keys
+ if len(plugin_keys) > 0 or all_keys:
+ for key in status_dict:
+ status_dict[key].update(self.pluginmanager.get_status(key, plugin_keys))
+ return status_dict
+
+ @export
+ def get_filter_tree(
+ self, show_zero_hits: bool = True, hide_cat: List[str] = None
+ ) -> Dict:
+ """returns {field: [(value,count)] }
+ for use in sidebar(s)
+ """
+ return self.filtermanager.get_filter_tree(show_zero_hits, hide_cat)
+
+ @export
+ def get_session_state(self) -> List[str]:
+ """Returns a list of torrent_ids in the session."""
+ # Get the torrent list from the TorrentManager
+ return self.torrentmanager.get_torrent_list()
+
+ @export
+ def get_config(self) -> dict:
+ """Get all the preferences as a dictionary"""
+ return self.config.config
+
+ @export
+ def get_config_value(self, key: str) -> Any:
+ """Get the config value for key"""
+ return self.config.get(key)
+
+ @export
+ def get_config_values(self, keys: List[str]) -> Dict[str, Any]:
+ """Get the config values for the entered keys"""
+ return {key: self.config.get(key) for key in keys}
+
+ @export
+ def set_config(self, config: Dict[str, Any]):
+ """Set the config with values from dictionary"""
+ # Load all the values into the configuration
+ for key in config:
+ if self.read_only_config_keys and key in self.read_only_config_keys:
+ continue
+ self.config[key] = config[key]
+
+ @export
+ def get_listen_port(self) -> int:
+ """Returns the active listen port"""
+ return self.session.listen_port()
+
+ @export
+ def get_proxy(self) -> Dict[str, Any]:
+ """Returns the proxy settings
+
+ Returns:
+ Proxy settings.
+
+ Notes:
+ Proxy type names:
+ 0: None, 1: Socks4, 2: Socks5, 3: Socks5 w Auth, 4: HTTP, 5: HTTP w Auth, 6: I2P
+ """
+
+ settings = self.session.get_settings()
+ proxy_type = settings['proxy_type']
+ proxy_hostname = (
+ settings['i2p_hostname'] if proxy_type == 6 else settings['proxy_hostname']
+ )
+ proxy_port = settings['i2p_port'] if proxy_type == 6 else settings['proxy_port']
+ proxy_dict = {
+ 'type': proxy_type,
+ 'hostname': proxy_hostname,
+ 'username': settings['proxy_username'],
+ 'password': settings['proxy_password'],
+ 'port': proxy_port,
+ 'proxy_hostnames': settings['proxy_hostnames'],
+ 'proxy_peer_connections': settings['proxy_peer_connections'],
+ 'proxy_tracker_connections': settings['proxy_tracker_connections'],
+ }
+
+ return proxy_dict
+
+ @export
+ def get_available_plugins(self) -> List[str]:
+ """Returns a list of plugins available in the core"""
+ return self.pluginmanager.get_available_plugins()
+
+ @export
+ def get_enabled_plugins(self) -> List[str]:
+ """Returns a list of enabled plugins in the core"""
+ return self.pluginmanager.get_enabled_plugins()
+
+ @export
+ def enable_plugin(self, plugin: str) -> 'defer.Deferred[bool]':
+ return self.pluginmanager.enable_plugin(plugin)
+
+ @export
+ def disable_plugin(self, plugin: str) -> 'defer.Deferred[bool]':
+ return self.pluginmanager.disable_plugin(plugin)
+
+ @export
+ def force_recheck(self, torrent_ids: List[str]) -> None:
+ """Forces a data recheck on torrent_ids"""
+ for torrent_id in torrent_ids:
+ self.torrentmanager[torrent_id].force_recheck()
+
+ @export
+ def set_torrent_options(
+ self, torrent_ids: List[str], options: Dict[str, Any]
+ ) -> None:
+ """Sets the torrent options for torrent_ids
+
+ Args:
+ torrent_ids: A list of torrent_ids to set the options for.
+ options: A dict of torrent options to set. See
+ ``torrent.TorrentOptions`` class for valid keys.
+ """
+ if 'owner' in options and not self.authmanager.has_account(options['owner']):
+ raise DelugeError('Username "%s" is not known.' % options['owner'])
+
+ if isinstance(torrent_ids, str):
+ torrent_ids = [torrent_ids]
+
+ for torrent_id in torrent_ids:
+ self.torrentmanager[torrent_id].set_options(options)
+
+ @export
+ def set_torrent_trackers(
+ self, torrent_id: str, trackers: List[Dict[str, Any]]
+ ) -> None:
+ """Sets a torrents tracker list. trackers will be ``[{"url", "tier"}]``"""
+ return self.torrentmanager[torrent_id].set_trackers(trackers)
+
+ @export
+ def get_magnet_uri(self, torrent_id: str) -> str:
+ return self.torrentmanager[torrent_id].get_magnet_uri()
+
+ @deprecated
+ @export
+ def set_torrent_max_connections(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'max_connections'"""
+ self.set_torrent_options([torrent_id], {'max_connections': value})
+
+ @deprecated
+ @export
+ def set_torrent_max_upload_slots(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'max_upload_slots'"""
+ self.set_torrent_options([torrent_id], {'max_upload_slots': value})
+
+ @deprecated
+ @export
+ def set_torrent_max_upload_speed(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'max_upload_speed'"""
+ self.set_torrent_options([torrent_id], {'max_upload_speed': value})
+
+ @deprecated
+ @export
+ def set_torrent_max_download_speed(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'max_download_speed'"""
+ self.set_torrent_options([torrent_id], {'max_download_speed': value})
+
+ @deprecated
+ @export
+ def set_torrent_file_priorities(self, torrent_id, priorities):
+ """Deprecated: Use set_torrent_options with 'file_priorities'"""
+ self.set_torrent_options([torrent_id], {'file_priorities': priorities})
+
+ @deprecated
+ @export
+ def set_torrent_prioritize_first_last(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'prioritize_first_last'"""
+ self.set_torrent_options([torrent_id], {'prioritize_first_last_pieces': value})
+
+ @deprecated
+ @export
+ def set_torrent_auto_managed(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'auto_managed'"""
+ self.set_torrent_options([torrent_id], {'auto_managed': value})
+
+ @deprecated
+ @export
+ def set_torrent_stop_at_ratio(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'stop_at_ratio'"""
+ self.set_torrent_options([torrent_id], {'stop_at_ratio': value})
+
+ @deprecated
+ @export
+ def set_torrent_stop_ratio(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'stop_ratio'"""
+ self.set_torrent_options([torrent_id], {'stop_ratio': value})
+
+ @deprecated
+ @export
+ def set_torrent_remove_at_ratio(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'remove_at_ratio'"""
+ self.set_torrent_options([torrent_id], {'remove_at_ratio': value})
+
+ @deprecated
+ @export
+ def set_torrent_move_completed(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'move_completed'"""
+ self.set_torrent_options([torrent_id], {'move_completed': value})
+
+ @deprecated
+ @export
+ def set_torrent_move_completed_path(self, torrent_id, value):
+ """Deprecated: Use set_torrent_options with 'move_completed_path'"""
+ self.set_torrent_options([torrent_id], {'move_completed_path': value})
+
+ @export
+ def get_path_size(self, path):
+ """Returns the size of the file or folder 'path' and -1 if the path is
+ inaccessible (non-existent or insufficient privileges)"""
+ return deluge.common.get_path_size(path)
+
+ @export
+ def create_torrent(
+ self,
+ path,
+ tracker,
+ piece_length,
+ comment=None,
+ target=None,
+ webseeds=None,
+ private=False,
+ created_by=None,
+ trackers=None,
+ add_to_session=False,
+ torrent_format=metafile.TorrentFormat.V1,
+ ):
+ if isinstance(torrent_format, str):
+ torrent_format = metafile.TorrentFormat(torrent_format)
+
+ log.debug('creating torrent..')
+ return threads.deferToThread(
+ self._create_torrent_thread,
+ path,
+ tracker,
+ piece_length,
+ comment=comment,
+ target=target,
+ webseeds=webseeds,
+ private=private,
+ created_by=created_by,
+ trackers=trackers,
+ add_to_session=add_to_session,
+ torrent_format=torrent_format,
+ )
+
+ def _create_torrent_thread(
+ self,
+ path,
+ tracker,
+ piece_length,
+ comment,
+ target,
+ webseeds,
+ private,
+ created_by,
+ trackers,
+ add_to_session,
+ torrent_format,
+ ):
+ from deluge import metafile
+
+ filecontent = metafile.make_meta_file_content(
+ path,
+ tracker,
+ piece_length,
+ comment=comment,
+ webseeds=webseeds,
+ private=private,
+ created_by=created_by,
+ trackers=trackers,
+ torrent_format=torrent_format,
+ )
+
+ write_file = False
+ if target or not add_to_session:
+ write_file = True
+
+ if not target:
+ target = metafile.default_meta_file_path(path)
+ filename = os.path.split(target)[-1]
+
+ if write_file:
+ with open(target, 'wb') as _file:
+ _file.write(filecontent)
+
+ filedump = b64encode(filecontent)
+ log.debug('torrent created!')
+ if add_to_session:
+ options = {}
+ options['download_location'] = os.path.split(path)[0]
+ self.add_torrent_file(filename, filedump, options)
+ return filename, filedump
+
+ @export
+ def upload_plugin(self, filename: str, filedump: Union[str, bytes]) -> None:
+ """This method is used to upload new plugins to the daemon. It is used
+ when connecting to the daemon remotely and installing a new plugin on
+ the client side. ``plugin_data`` is a ``xmlrpc.Binary`` object of the file data,
+ i.e. ``plugin_file.read()``"""
+
+ try:
+ filedump = b64decode(filedump)
+ except TypeError as ex:
+ log.error('There was an error decoding the filedump string!')
+ log.exception(ex)
+ return
+
+ with open(os.path.join(get_config_dir(), 'plugins', filename), 'wb') as _file:
+ _file.write(filedump)
+ component.get('CorePluginManager').scan_for_plugins()
+
+ @export
+ def rescan_plugins(self) -> None:
+ """Re-scans the plugin folders for new plugins"""
+ component.get('CorePluginManager').scan_for_plugins()
+
+ @export
+ def rename_files(
+ self, torrent_id: str, filenames: List[Tuple[int, str]]
+ ) -> defer.Deferred:
+ """Rename files in ``torrent_id``. Since this is an asynchronous operation by
+ libtorrent, watch for the TorrentFileRenamedEvent to know when the
+ files have been renamed.
+
+ Args:
+ torrent_id: the torrent_id to rename files
+ filenames: a list of index, filename pairs
+
+ Raises:
+ InvalidTorrentError: if torrent_id is invalid
+ """
+ if torrent_id not in self.torrentmanager.torrents:
+ raise InvalidTorrentError('torrent_id is not in session')
+
+ def rename():
+ self.torrentmanager[torrent_id].rename_files(filenames)
+
+ return task.deferLater(reactor, 0, rename)
+
+ @export
+ def rename_folder(
+ self, torrent_id: str, folder: str, new_folder: str
+ ) -> defer.Deferred:
+ """Renames the 'folder' to 'new_folder' in 'torrent_id'. Watch for the
+ TorrentFolderRenamedEvent which is emitted when the folder has been
+ renamed successfully.
+
+ Args:
+ torrent_id: the torrent to rename folder in
+ folder: the folder to rename
+ new_folder: the new folder name
+
+ Raises:
+ InvalidTorrentError: if the torrent_id is invalid
+ """
+ if torrent_id not in self.torrentmanager.torrents:
+ raise InvalidTorrentError('torrent_id is not in session')
+
+ return self.torrentmanager[torrent_id].rename_folder(folder, new_folder)
+
+ @export
+ def queue_top(self, torrent_ids: List[str]) -> None:
+ log.debug('Attempting to queue %s to top', torrent_ids)
+ # torrent_ids must be sorted in reverse before moving to preserve order
+ for torrent_id in sorted(
+ torrent_ids, key=self.torrentmanager.get_queue_position, reverse=True
+ ):
+ try:
+ # If the queue method returns True, then we should emit a signal
+ if self.torrentmanager.queue_top(torrent_id):
+ component.get('EventManager').emit(TorrentQueueChangedEvent())
+ except KeyError:
+ log.warning('torrent_id: %s does not exist in the queue', torrent_id)
+
+ @export
+ def queue_up(self, torrent_ids: List[str]) -> None:
+ log.debug('Attempting to queue %s to up', torrent_ids)
+ torrents = (
+ (self.torrentmanager.get_queue_position(torrent_id), torrent_id)
+ for torrent_id in torrent_ids
+ )
+ torrent_moved = True
+ prev_queue_position = None
+ # torrent_ids must be sorted before moving.
+ for queue_position, torrent_id in sorted(torrents):
+ # Move the torrent if and only if there is space (by not moving it we preserve the order)
+ if torrent_moved or queue_position - prev_queue_position > 1:
+ try:
+ torrent_moved = self.torrentmanager.queue_up(torrent_id)
+ except KeyError:
+ log.warning(
+ 'torrent_id: %s does not exist in the queue', torrent_id
+ )
+ # If the torrent moved, then we should emit a signal
+ if torrent_moved:
+ component.get('EventManager').emit(TorrentQueueChangedEvent())
+ else:
+ prev_queue_position = queue_position
+
+ @export
+ def queue_down(self, torrent_ids: List[str]) -> None:
+ log.debug('Attempting to queue %s to down', torrent_ids)
+ torrents = (
+ (self.torrentmanager.get_queue_position(torrent_id), torrent_id)
+ for torrent_id in torrent_ids
+ )
+ torrent_moved = True
+ prev_queue_position = None
+ # torrent_ids must be sorted before moving.
+ for queue_position, torrent_id in sorted(torrents, reverse=True):
+ # Move the torrent if and only if there is space (by not moving it we preserve the order)
+ if torrent_moved or prev_queue_position - queue_position > 1:
+ try:
+ torrent_moved = self.torrentmanager.queue_down(torrent_id)
+ except KeyError:
+ log.warning(
+ 'torrent_id: %s does not exist in the queue', torrent_id
+ )
+ # If the torrent moved, then we should emit a signal
+ if torrent_moved:
+ component.get('EventManager').emit(TorrentQueueChangedEvent())
+ else:
+ prev_queue_position = queue_position
+
+ @export
+ def queue_bottom(self, torrent_ids: List[str]) -> None:
+ log.debug('Attempting to queue %s to bottom', torrent_ids)
+ # torrent_ids must be sorted before moving to preserve order
+ for torrent_id in sorted(
+ torrent_ids, key=self.torrentmanager.get_queue_position
+ ):
+ try:
+ # If the queue method returns True, then we should emit a signal
+ if self.torrentmanager.queue_bottom(torrent_id):
+ component.get('EventManager').emit(TorrentQueueChangedEvent())
+ except KeyError:
+ log.warning('torrent_id: %s does not exist in the queue', torrent_id)
+
+ @export
+ def glob(self, path: str) -> List[str]:
+ return glob.glob(path)
+
+ @export
+ def test_listen_port(self) -> 'defer.Deferred[Optional[bool]]':
+ """Checks if the active port is open
+
+ Returns:
+ True if the port is open, False if not
+ """
+ port = self.get_listen_port()
+ url = 'https://deluge-torrent.org/test_port.php?port=%s' % port
+ agent = Agent(reactor, connectTimeout=30)
+ d = agent.request(b'GET', url.encode())
+
+ def on_get_page(body):
+ return bool(int(body))
+
+ def on_error(failure):
+ log.warning('Error testing listen port: %s', failure)
+
+ d.addCallback(readBody).addCallback(on_get_page)
+ d.addErrback(on_error)
+
+ return d
+
+ @export
+ def get_free_space(self, path: str = None) -> int:
+ """Returns the number of free bytes at path
+
+ Args:
+ path: the path to check free space at, if None, use the default download location
+
+ Returns:
+ the number of free bytes at path
+
+ Raises:
+ InvalidPathError: if the path is invalid
+ """
+ if not path:
+ path = self.config['download_location']
+ try:
+ return deluge.common.free_space(path)
+ except InvalidPathError:
+ return -1
+
+ def _on_external_ip_event(self, external_ip):
+ self.external_ip = external_ip
+
+ @export
+ def get_external_ip(self) -> str:
+ """Returns the external IP address received from libtorrent."""
+ return self.external_ip
+
+ @export
+ def get_libtorrent_version(self) -> str:
+ """Returns the libtorrent version.
+
+ Returns:
+ the version
+ """
+ return LT_VERSION
+
+ @export
+ def get_completion_paths(self, args: Dict[str, Any]) -> Dict[str, Any]:
+ """Returns the available path completions for the input value."""
+ return path_chooser_common.get_completion_paths(args)
+
+ @export(AUTH_LEVEL_ADMIN)
+ def get_known_accounts(self) -> List[Dict[str, Any]]:
+ return self.authmanager.get_known_accounts()
+
+ @export(AUTH_LEVEL_NONE)
+ def get_auth_levels_mappings(self) -> Tuple[Dict[str, int], Dict[int, str]]:
+ return (AUTH_LEVELS_MAPPING, AUTH_LEVELS_MAPPING_REVERSE)
+
+ @export(AUTH_LEVEL_ADMIN)
+ def create_account(self, username: str, password: str, authlevel: str) -> bool:
+ return self.authmanager.create_account(username, password, authlevel)
+
+ @export(AUTH_LEVEL_ADMIN)
+ def update_account(self, username: str, password: str, authlevel: str) -> bool:
+ return self.authmanager.update_account(username, password, authlevel)
+
+ @export(AUTH_LEVEL_ADMIN)
+ def remove_account(self, username: str) -> bool:
+ return self.authmanager.remove_account(username)
diff --git a/deluge/core/daemon.py b/deluge/core/daemon.py
new file mode 100644
index 0000000..0185dd8
--- /dev/null
+++ b/deluge/core/daemon.py
@@ -0,0 +1,203 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""The Deluge daemon"""
+import logging
+import os
+import socket
+
+from twisted.internet import reactor
+
+import deluge.component as component
+from deluge.common import get_version, is_ip, is_process_running, windows_check
+from deluge.configmanager import get_config_dir
+from deluge.core.core import Core
+from deluge.core.rpcserver import RPCServer, export
+from deluge.error import DaemonRunningError
+
+if windows_check():
+ from win32api import SetConsoleCtrlHandler
+ from win32con import CTRL_CLOSE_EVENT, CTRL_SHUTDOWN_EVENT
+
+log = logging.getLogger(__name__)
+
+
+def is_daemon_running(pid_file):
+ """
+ Check for another running instance of the daemon using the same pid file.
+
+ Args:
+ pid_file: The location of the file with pid, port values.
+
+ Returns:
+ bool: True is daemon is running, False otherwise.
+
+ """
+
+ try:
+ with open(pid_file) as _file:
+ pid, port = (int(x) for x in _file.readline().strip().split(';'))
+ except (OSError, ValueError):
+ return False
+
+ if is_process_running(pid):
+ # Ensure it's a deluged process by trying to open a socket to it's port.
+ _socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ try:
+ _socket.connect(('127.0.0.1', port))
+ except OSError:
+ # Can't connect, so pid is not a deluged process.
+ return False
+ else:
+ # This is a deluged process!
+ _socket.close()
+ return True
+
+
+class Daemon:
+ """The Deluge Daemon class"""
+
+ def __init__(
+ self,
+ listen_interface=None,
+ outgoing_interface=None,
+ interface=None,
+ port=None,
+ standalone=False,
+ read_only_config_keys=None,
+ ):
+ """
+ Args:
+ listen_interface (str, optional): The IP address to listen to
+ BitTorrent connections on.
+ outgoing_interface (str, optional): The network interface name or
+ IP address to open outgoing BitTorrent connections on.
+ interface (str, optional): The IP address the daemon will
+ listen for UI connections on.
+ port (int, optional): The port the daemon will listen for UI
+ connections on.
+ standalone (bool, optional): If True the client is in Standalone
+ mode otherwise, if False, start the daemon as separate process.
+ read_only_config_keys (list of str, optional): A list of config
+ keys that will not be altered by core.set_config() RPC method.
+ """
+ self.standalone = standalone
+ self.pid_file = get_config_dir('deluged.pid')
+ log.info('Deluge daemon %s', get_version())
+ if is_daemon_running(self.pid_file):
+ raise DaemonRunningError(
+ 'Deluge daemon already running with this config directory!'
+ )
+
+ # Twisted catches signals to terminate, so just have it call the shutdown method.
+ reactor.addSystemEventTrigger('before', 'shutdown', self._shutdown)
+
+ # Catch some Windows specific signals
+ if windows_check():
+
+ def win_handler(ctrl_type):
+ """Handle the Windows shutdown or close events."""
+ log.debug('windows handler ctrl_type: %s', ctrl_type)
+ if ctrl_type == CTRL_CLOSE_EVENT or ctrl_type == CTRL_SHUTDOWN_EVENT:
+ self._shutdown()
+ return 1
+
+ SetConsoleCtrlHandler(win_handler)
+
+ # Start the core as a thread and join it until it's done
+ self.core = Core(
+ listen_interface=listen_interface,
+ outgoing_interface=outgoing_interface,
+ read_only_config_keys=read_only_config_keys,
+ )
+
+ if port is None:
+ port = self.core.config['daemon_port']
+ self.port = port
+
+ if interface and not is_ip(interface):
+ log.error('Invalid UI interface (must be IP Address): %s', interface)
+ interface = None
+
+ self.rpcserver = RPCServer(
+ port=port,
+ allow_remote=self.core.config['allow_remote'],
+ listen=not standalone,
+ interface=interface,
+ )
+
+ log.debug(
+ 'Listening to UI on: %s:%s and bittorrent on: %s Making connections out on: %s',
+ interface,
+ port,
+ listen_interface,
+ outgoing_interface,
+ )
+
+ def start(self):
+ # Register the daemon and the core RPCs
+ self.rpcserver.register_object(self.core)
+ self.rpcserver.register_object(self)
+
+ # Make sure we start the PreferencesManager first
+ component.start('PreferencesManager')
+
+ if not self.standalone:
+ log.info('Deluge daemon starting...')
+ # Create pid file to track if deluged is running, also includes the port number.
+ pid = os.getpid()
+ log.debug('Storing pid %s & port %s in: %s', pid, self.port, self.pid_file)
+ with open(self.pid_file, 'w') as _file:
+ _file.write(f'{pid};{self.port}\n')
+
+ component.start()
+
+ try:
+ reactor.run()
+ finally:
+ log.debug('Remove pid file: %s', self.pid_file)
+ os.remove(self.pid_file)
+ log.info('Deluge daemon shutdown successfully')
+
+ @export()
+ def shutdown(self, *args, **kwargs):
+ log.debug('Deluge daemon shutdown requested...')
+ reactor.callLater(0, reactor.stop)
+
+ def _shutdown(self, *args, **kwargs):
+ log.info('Deluge daemon shutting down, waiting for components to shutdown...')
+ if not self.standalone:
+ return component.shutdown()
+
+ @export()
+ def get_method_list(self):
+ """Returns a list of the exported methods."""
+ return self.rpcserver.get_method_list()
+
+ @export()
+ def get_version(self):
+ """Returns the daemon version"""
+ return get_version()
+
+ @export(1)
+ def authorized_call(self, rpc):
+ """Determines if session auth_level is authorized to call RPC.
+
+ Args:
+ rpc (str): A RPC, e.g. core.get_torrents_status
+
+ Returns:
+ bool: True if authorized to call RPC, otherwise False.
+ """
+ if rpc not in self.get_method_list():
+ return False
+
+ return (
+ self.rpcserver.get_session_auth_level()
+ >= self.rpcserver.get_rpc_auth_level(rpc)
+ )
diff --git a/deluge/core/daemon_entry.py b/deluge/core/daemon_entry.py
new file mode 100644
index 0000000..c49fd2a
--- /dev/null
+++ b/deluge/core/daemon_entry.py
@@ -0,0 +1,140 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import os
+import sys
+from logging import DEBUG, FileHandler, getLogger
+
+from twisted.internet.error import CannotListenError
+
+from deluge.argparserbase import ArgParserBase
+from deluge.common import run_profiled
+from deluge.configmanager import get_config_dir
+from deluge.i18n import setup_mock_translation
+
+
+def add_daemon_options(parser):
+ group = parser.add_argument_group(_('Daemon Options'))
+ group.add_argument(
+ '-u',
+ '--ui-interface',
+ metavar='<ip-addr>',
+ action='store',
+ help=_('IP address to listen for UI connections'),
+ )
+ group.add_argument(
+ '-p',
+ '--port',
+ metavar='<port>',
+ action='store',
+ type=int,
+ help=_('Port to listen for UI connections on'),
+ )
+ group.add_argument(
+ '-i',
+ '--interface',
+ metavar='<ip-addr>',
+ dest='listen_interface',
+ action='store',
+ help=_('IP address to listen for BitTorrent connections'),
+ )
+ group.add_argument(
+ '-o',
+ '--outgoing-interface',
+ metavar='<interface>',
+ dest='outgoing_interface',
+ action='store',
+ help=_(
+ 'The network interface name or IP address for outgoing BitTorrent connections.'
+ ),
+ )
+ group.add_argument(
+ '--read-only-config-keys',
+ metavar='<comma-separated-keys>',
+ action='store',
+ help=_('Config keys to be unmodified by `set_config` RPC'),
+ type=str,
+ default='',
+ )
+ parser.add_process_arg_group()
+
+
+def start_daemon(skip_start=False):
+ """
+ Entry point for daemon script
+
+ Args:
+ skip_start (bool): If starting daemon should be skipped.
+
+ Returns:
+ deluge.core.daemon.Daemon: A new daemon object
+
+ """
+ setup_mock_translation()
+
+ # Setup the argument parser
+ parser = ArgParserBase()
+ add_daemon_options(parser)
+
+ options = parser.parse_args()
+
+ # Check for any daemons running with this same config
+ from deluge.core.daemon import is_daemon_running
+
+ pid_file = get_config_dir('deluged.pid')
+ if is_daemon_running(pid_file):
+ print(
+ 'Cannot run multiple daemons with same config directory.\n'
+ 'If you believe this is an error, force starting by deleting: %s' % pid_file
+ )
+ sys.exit(1)
+
+ log = getLogger(__name__)
+
+ # If no logfile specified add logging to default location (as well as stdout)
+ if not options.logfile:
+ options.logfile = get_config_dir('deluged.log')
+ file_handler = FileHandler(options.logfile)
+ log.addHandler(file_handler)
+
+ def run_daemon(options):
+ try:
+ from deluge.core.daemon import Daemon
+
+ daemon = Daemon(
+ listen_interface=options.listen_interface,
+ outgoing_interface=options.outgoing_interface,
+ interface=options.ui_interface,
+ port=options.port,
+ read_only_config_keys=options.read_only_config_keys.split(','),
+ )
+ if skip_start:
+ return daemon
+ else:
+ daemon.start()
+ except CannotListenError as ex:
+ log.error(
+ 'Cannot start deluged, listen port in use.\n'
+ ' Check for other running daemons or services using this port: %s:%s',
+ ex.interface,
+ ex.port,
+ )
+ sys.exit(1)
+ except Exception as ex:
+ log.error('Unable to start deluged: %s', ex)
+ if log.isEnabledFor(DEBUG):
+ log.exception(ex)
+ sys.exit(1)
+ finally:
+ log.info('Exiting...')
+ if options.pidfile:
+ os.remove(options.pidfile)
+
+ return run_profiled(
+ run_daemon, options, output_file=options.profile, do_profile=options.profile
+ )
diff --git a/deluge/core/eventmanager.py b/deluge/core/eventmanager.py
new file mode 100644
index 0000000..d43847a
--- /dev/null
+++ b/deluge/core/eventmanager.py
@@ -0,0 +1,66 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+
+log = logging.getLogger(__name__)
+
+
+class EventManager(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'EventManager')
+ self.handlers = {}
+
+ def emit(self, event):
+ """
+ Emits the event to interested clients.
+
+ :param event: DelugeEvent
+ """
+ # Emit the event to the interested clients
+ component.get('RPCServer').emit_event(event)
+ # Call any handlers for the event
+ if event.name in self.handlers:
+ for handler in self.handlers[event.name]:
+ # log.debug('Running handler %s for event %s with args: %s', event.name, handler, event.args)
+ try:
+ handler(*event.args)
+ except Exception as ex:
+ log.error(
+ 'Event handler %s failed in %s with exception %s',
+ event.name,
+ handler,
+ ex,
+ )
+
+ def register_event_handler(self, event, handler):
+ """
+ Registers a function to be called when a `:param:event` is emitted.
+
+ :param event: str, the event name
+ :param handler: function, to be called when `:param:event` is emitted
+
+ """
+ if event not in self.handlers:
+ self.handlers[event] = []
+
+ if handler not in self.handlers[event]:
+ self.handlers[event].append(handler)
+
+ def deregister_event_handler(self, event, handler):
+ """
+ Deregisters an event handler function.
+
+ :param event: str, the event name
+ :param handler: function, currently registered to handle `:param:event`
+
+ """
+ if event in self.handlers and handler in self.handlers[event]:
+ self.handlers[event].remove(handler)
diff --git a/deluge/core/filtermanager.py b/deluge/core/filtermanager.py
new file mode 100644
index 0000000..a60cc5b
--- /dev/null
+++ b/deluge/core/filtermanager.py
@@ -0,0 +1,274 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.common import TORRENT_STATE
+
+log = logging.getLogger(__name__)
+
+STATE_SORT = ['All', 'Active'] + TORRENT_STATE
+
+
+# Special purpose filters:
+def filter_keywords(torrent_ids, values):
+ # Cleanup
+ keywords = ','.join([v.lower() for v in values])
+ keywords = keywords.split(',')
+
+ for keyword in keywords:
+ torrent_ids = filter_one_keyword(torrent_ids, keyword)
+ return torrent_ids
+
+
+def filter_one_keyword(torrent_ids, keyword):
+ """
+ search torrent on keyword.
+ searches title,state,tracker-status,tracker,files
+ """
+ all_torrents = component.get('TorrentManager').torrents
+
+ for torrent_id in torrent_ids:
+ torrent = all_torrents[torrent_id]
+ if keyword in torrent.filename.lower():
+ yield torrent_id
+ elif keyword in torrent.state.lower():
+ yield torrent_id
+ elif torrent.trackers and keyword in torrent.trackers[0]['url']:
+ yield torrent_id
+ elif keyword in torrent_id:
+ yield torrent_id
+ # Want to find broken torrents (search on "error", or "unregistered")
+ elif keyword in torrent.tracker_status.lower():
+ yield torrent_id
+ else:
+ for t_file in torrent.get_files():
+ if keyword in t_file['path'].lower():
+ yield torrent_id
+ break
+
+
+def filter_by_name(torrent_ids, search_string):
+ all_torrents = component.get('TorrentManager').torrents
+ try:
+ search_string, match_case = search_string[0].split('::match')
+ except ValueError:
+ search_string = search_string[0]
+ match_case = False
+
+ if match_case is False:
+ search_string = search_string.lower()
+
+ for torrent_id in torrent_ids:
+ torrent_name = all_torrents[torrent_id].get_name()
+ if match_case is False:
+ torrent_name = all_torrents[torrent_id].get_name().lower()
+ else:
+ torrent_name = all_torrents[torrent_id].get_name()
+
+ if search_string in torrent_name:
+ yield torrent_id
+
+
+def tracker_error_filter(torrent_ids, values):
+ filtered_torrent_ids = []
+ tm = component.get('TorrentManager')
+
+ # If this is a tracker_host, then we need to filter on it
+ if values[0] != 'Error':
+ for torrent_id in torrent_ids:
+ if values[0] == tm[torrent_id].get_status(['tracker_host'])['tracker_host']:
+ filtered_torrent_ids.append(torrent_id)
+ return filtered_torrent_ids
+
+ # Check torrent's tracker_status for 'Error:' and return those torrent_ids
+ for torrent_id in torrent_ids:
+ if 'Error:' in tm[torrent_id].get_status(['tracker_status'])['tracker_status']:
+ filtered_torrent_ids.append(torrent_id)
+ return filtered_torrent_ids
+
+
+class FilterManager(component.Component):
+ """FilterManager"""
+
+ def __init__(self, core):
+ component.Component.__init__(self, 'FilterManager')
+ log.debug('FilterManager init..')
+ self.core = core
+ self.torrents = core.torrentmanager
+ self.registered_filters = {}
+ self.register_filter('keyword', filter_keywords)
+ self.register_filter('name', filter_by_name)
+ self.tree_fields = {}
+
+ self.register_tree_field('state', self._init_state_tree)
+
+ def _init_tracker_tree():
+ return {'Error': 0}
+
+ self.register_tree_field('tracker_host', _init_tracker_tree)
+
+ self.register_filter('tracker_host', tracker_error_filter)
+
+ def _init_users_tree():
+ return {'': 0}
+
+ self.register_tree_field('owner', _init_users_tree)
+
+ def filter_torrent_ids(self, filter_dict):
+ """
+ returns a list of torrent_id's matching filter_dict.
+ core filter method
+ """
+ if not filter_dict:
+ return self.torrents.get_torrent_list()
+
+ # Sanitize input: filter-value must be a list of strings
+ for key, value in filter_dict.items():
+ if isinstance(value, str):
+ filter_dict[key] = [value]
+
+ # Optimized filter for id
+ if 'id' in filter_dict:
+ torrent_ids = list(filter_dict['id'])
+ del filter_dict['id']
+ else:
+ torrent_ids = self.torrents.get_torrent_list()
+
+ # Return if there's nothing more to filter
+ if not filter_dict:
+ return torrent_ids
+
+ # Special purpose, state=Active.
+ if 'state' in filter_dict:
+ # We need to make sure this is a list for the logic below
+ filter_dict['state'] = list(filter_dict['state'])
+
+ if 'state' in filter_dict and 'Active' in filter_dict['state']:
+ filter_dict['state'].remove('Active')
+ if not filter_dict['state']:
+ del filter_dict['state']
+ torrent_ids = self.filter_state_active(torrent_ids)
+
+ if not filter_dict:
+ return torrent_ids
+
+ # Registered filters
+ for field, values in list(filter_dict.items()):
+ if field in self.registered_filters:
+ # Filters out doubles
+ torrent_ids = list(
+ set(self.registered_filters[field](torrent_ids, values))
+ )
+ del filter_dict[field]
+
+ if not filter_dict:
+ return torrent_ids
+
+ torrent_keys, plugin_keys = self.torrents.separate_keys(
+ list(filter_dict), torrent_ids
+ )
+ # Leftover filter arguments, default filter on status fields.
+ for torrent_id in list(torrent_ids):
+ status = self.core.create_torrent_status(
+ torrent_id, torrent_keys, plugin_keys
+ )
+ for field, values in filter_dict.items():
+ if field in status and status[field] in values:
+ continue
+ elif torrent_id in torrent_ids:
+ torrent_ids.remove(torrent_id)
+ return torrent_ids
+
+ def get_filter_tree(self, show_zero_hits=True, hide_cat=None):
+ """
+ returns {field: [(value,count)] }
+ for use in sidebar.
+ """
+ torrent_ids = self.torrents.get_torrent_list()
+ tree_keys = list(self.tree_fields)
+ if hide_cat:
+ for cat in hide_cat:
+ tree_keys.remove(cat)
+
+ torrent_keys, plugin_keys = self.torrents.separate_keys(tree_keys, torrent_ids)
+ items = {field: self.tree_fields[field]() for field in tree_keys}
+
+ for torrent_id in list(torrent_ids):
+ status = self.core.create_torrent_status(
+ torrent_id, torrent_keys, plugin_keys
+ ) # status={key:value}
+ for field in tree_keys:
+ value = status[field]
+ items[field][value] = items[field].get(value, 0) + 1
+
+ if 'tracker_host' in items:
+ items['tracker_host']['All'] = len(torrent_ids)
+ items['tracker_host']['Error'] = len(
+ tracker_error_filter(torrent_ids, ('Error',))
+ )
+
+ if not show_zero_hits:
+ for cat in ['state', 'owner', 'tracker_host']:
+ if cat in tree_keys:
+ self._hide_state_items(items[cat])
+
+ # Return a dict of tuples:
+ sorted_items = {field: sorted(items[field].items()) for field in tree_keys}
+
+ if 'state' in tree_keys:
+ sorted_items['state'].sort(key=self._sort_state_item)
+
+ return sorted_items
+
+ def _init_state_tree(self):
+ init_state = {}
+ init_state['All'] = len(self.torrents.get_torrent_list())
+ for state in TORRENT_STATE:
+ init_state[state] = 0
+ init_state['Active'] = len(
+ self.filter_state_active(self.torrents.get_torrent_list())
+ )
+ return init_state
+
+ def register_filter(self, filter_id, filter_func, filter_value=None):
+ self.registered_filters[filter_id] = filter_func
+
+ def deregister_filter(self, filter_id):
+ del self.registered_filters[filter_id]
+
+ def register_tree_field(self, field, init_func=lambda: {}):
+ self.tree_fields[field] = init_func
+
+ def deregister_tree_field(self, field):
+ if field in self.tree_fields:
+ del self.tree_fields[field]
+
+ def filter_state_active(self, torrent_ids):
+ for torrent_id in list(torrent_ids):
+ status = self.torrents[torrent_id].get_status(
+ ['download_payload_rate', 'upload_payload_rate']
+ )
+ if status['download_payload_rate'] or status['upload_payload_rate']:
+ pass
+ else:
+ torrent_ids.remove(torrent_id)
+ return torrent_ids
+
+ def _hide_state_items(self, state_items):
+ """For hide(show)-zero hits"""
+ for value, count in list(state_items.items()):
+ if value != 'All' and count == 0:
+ del state_items[value]
+
+ def _sort_state_item(self, item):
+ try:
+ return STATE_SORT.index(item[0])
+ except ValueError:
+ return 99
diff --git a/deluge/core/pluginmanager.py b/deluge/core/pluginmanager.py
new file mode 100644
index 0000000..0482b16
--- /dev/null
+++ b/deluge/core/pluginmanager.py
@@ -0,0 +1,105 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+"""PluginManager for Core"""
+import logging
+
+from twisted.internet import defer
+
+import deluge.component as component
+import deluge.pluginmanagerbase
+from deluge.event import PluginDisabledEvent, PluginEnabledEvent
+
+log = logging.getLogger(__name__)
+
+
+class PluginManager(deluge.pluginmanagerbase.PluginManagerBase, component.Component):
+ """PluginManager handles the loading of plugins and provides plugins with
+ functions to access parts of the core."""
+
+ def __init__(self, core):
+ component.Component.__init__(self, 'CorePluginManager')
+
+ self.status_fields = {}
+
+ # Call the PluginManagerBase constructor
+ deluge.pluginmanagerbase.PluginManagerBase.__init__(
+ self, 'core.conf', 'deluge.plugin.core'
+ )
+
+ def start(self):
+ # Enable plugins that are enabled in the config
+ self.enable_plugins()
+
+ def stop(self):
+ # Disable all enabled plugins
+ self.disable_plugins()
+
+ def shutdown(self):
+ self.stop()
+
+ def update_plugins(self):
+ for plugin in self.plugins:
+ if hasattr(self.plugins[plugin], 'update'):
+ try:
+ self.plugins[plugin].update()
+ except Exception as ex:
+ log.exception(ex)
+
+ def enable_plugin(self, name):
+ d = defer.succeed(True)
+ if name not in self.plugins:
+ d = deluge.pluginmanagerbase.PluginManagerBase.enable_plugin(self, name)
+
+ def on_enable_plugin(result):
+ if result is True and name in self.plugins:
+ component.get('EventManager').emit(PluginEnabledEvent(name))
+ return result
+
+ d.addBoth(on_enable_plugin)
+ return d
+
+ def disable_plugin(self, name):
+ d = defer.succeed(True)
+ if name in self.plugins:
+ d = deluge.pluginmanagerbase.PluginManagerBase.disable_plugin(self, name)
+
+ def on_disable_plugin(result):
+ if name not in self.plugins:
+ component.get('EventManager').emit(PluginDisabledEvent(name))
+ return result
+
+ d.addBoth(on_disable_plugin)
+ return d
+
+ def get_status(self, torrent_id, fields):
+ """Return the value of status fields for the selected torrent_id."""
+ status = {}
+ if len(fields) == 0:
+ fields = list(self.status_fields)
+ for field in fields:
+ try:
+ status[field] = self.status_fields[field](torrent_id)
+ except KeyError:
+ pass
+ return status
+
+ def register_status_field(self, field, function):
+ """Register a new status field. This can be used in the same way the
+ client requests other status information from core."""
+ log.debug('Registering status field %s with PluginManager', field)
+ self.status_fields[field] = function
+
+ def deregister_status_field(self, field):
+ """Deregisters a status field"""
+ log.debug('Deregistering status field %s with PluginManager', field)
+ try:
+ del self.status_fields[field]
+ except Exception:
+ log.warning('Unable to deregister status field %s', field)
diff --git a/deluge/core/preferencesmanager.py b/deluge/core/preferencesmanager.py
new file mode 100644
index 0000000..7e5c207
--- /dev/null
+++ b/deluge/core/preferencesmanager.py
@@ -0,0 +1,476 @@
+#
+# Copyright (C) 2008-2010 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+import logging
+import os
+import platform
+import random
+import threading
+from urllib.parse import quote_plus
+from urllib.request import urlopen
+
+from twisted.internet.task import LoopingCall
+
+import deluge.common
+import deluge.component as component
+import deluge.configmanager
+from deluge._libtorrent import lt
+from deluge.event import ConfigValueChangedEvent
+
+GeoIP = None
+try:
+ from GeoIP import GeoIP
+except ImportError:
+ try:
+ from pygeoip import GeoIP
+ except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+DEFAULT_PREFS = {
+ 'send_info': False,
+ 'info_sent': 0.0,
+ 'daemon_port': 58846,
+ 'allow_remote': False,
+ 'pre_allocate_storage': False,
+ 'download_location': deluge.common.get_default_download_dir(),
+ 'listen_ports': [6881, 6891],
+ 'listen_interface': '',
+ 'outgoing_interface': '',
+ 'random_port': True,
+ 'listen_random_port': None,
+ 'listen_use_sys_port': False,
+ 'listen_reuse_port': True,
+ 'outgoing_ports': [0, 0],
+ 'random_outgoing_ports': True,
+ 'copy_torrent_file': False,
+ 'del_copy_torrent_file': False,
+ 'torrentfiles_location': deluge.common.get_default_download_dir(),
+ 'plugins_location': os.path.join(deluge.configmanager.get_config_dir(), 'plugins'),
+ 'prioritize_first_last_pieces': False,
+ 'sequential_download': False,
+ 'dht': True,
+ 'upnp': True,
+ 'natpmp': True,
+ 'utpex': True,
+ 'lsd': True,
+ 'enc_in_policy': 1,
+ 'enc_out_policy': 1,
+ 'enc_level': 2,
+ 'max_connections_global': 200,
+ 'max_upload_speed': -1.0,
+ 'max_download_speed': -1.0,
+ 'max_upload_slots_global': 4,
+ 'max_half_open_connections': (
+ lambda: deluge.common.windows_check()
+ and (lambda: deluge.common.vista_check() and 4 or 8)()
+ or 50
+ )(),
+ 'max_connections_per_second': 20,
+ 'ignore_limits_on_local_network': True,
+ 'max_connections_per_torrent': -1,
+ 'max_upload_slots_per_torrent': -1,
+ 'max_upload_speed_per_torrent': -1,
+ 'max_download_speed_per_torrent': -1,
+ 'enabled_plugins': [],
+ 'add_paused': False,
+ 'max_active_seeding': 5,
+ 'max_active_downloading': 3,
+ 'max_active_limit': 8,
+ 'dont_count_slow_torrents': False,
+ 'queue_new_to_top': False,
+ 'stop_seed_at_ratio': False,
+ 'remove_seed_at_ratio': False,
+ 'stop_seed_ratio': 2.00,
+ 'share_ratio_limit': 2.00,
+ 'seed_time_ratio_limit': 7.00,
+ 'seed_time_limit': 180,
+ 'auto_managed': True,
+ 'move_completed': False,
+ 'move_completed_path': deluge.common.get_default_download_dir(),
+ 'move_completed_paths_list': [],
+ 'download_location_paths_list': [],
+ 'path_chooser_show_chooser_button_on_localhost': True,
+ 'path_chooser_auto_complete_enabled': True,
+ 'path_chooser_accelerator_string': 'Tab',
+ 'path_chooser_max_popup_rows': 20,
+ 'path_chooser_show_hidden_files': False,
+ 'new_release_check': True,
+ 'proxy': {
+ 'type': 0,
+ 'hostname': '',
+ 'username': '',
+ 'password': '',
+ 'port': 8080,
+ 'proxy_hostnames': True,
+ 'proxy_peer_connections': True,
+ 'proxy_tracker_connections': True,
+ 'force_proxy': False,
+ 'anonymous_mode': False,
+ },
+ 'peer_tos': '0x00',
+ 'rate_limit_ip_overhead': True,
+ 'geoip_db_location': '/usr/share/GeoIP/GeoIP.dat',
+ 'cache_size': 512,
+ 'cache_expiry': 60,
+ 'auto_manage_prefer_seeds': False,
+ 'shared': False,
+ 'super_seeding': False,
+}
+
+
+class PreferencesManager(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'PreferencesManager')
+ self.config = deluge.configmanager.ConfigManager('core.conf', DEFAULT_PREFS)
+ if 'proxies' in self.config:
+ log.warning(
+ 'Updating config file for proxy, using "peer" values to fill new "proxy" setting'
+ )
+ self.config['proxy'].update(self.config['proxies']['peer'])
+ log.warning('New proxy config is: %s', self.config['proxy'])
+ del self.config['proxies']
+ if 'i2p_proxy' in self.config and self.config['i2p_proxy']['hostname']:
+ self.config['proxy'].update(self.config['i2p_proxy'])
+ self.config['proxy']['type'] = 6
+ del self.config['i2p_proxy']
+ if 'anonymous_mode' in self.config:
+ self.config['proxy']['anonymous_mode'] = self.config['anonymous_mode']
+ del self.config['anonymous_mode']
+ if 'proxy' in self.config:
+ for key in DEFAULT_PREFS['proxy']:
+ if key not in self.config['proxy']:
+ self.config['proxy'][key] = DEFAULT_PREFS['proxy'][key]
+
+ self.core = component.get('Core')
+ self.new_release_timer = None
+
+ def start(self):
+ # Set the initial preferences on start-up
+ for key in DEFAULT_PREFS:
+ self.do_config_set_func(key, self.config[key])
+
+ self.config.register_change_callback(self._on_config_value_change)
+
+ def stop(self):
+ if self.new_release_timer and self.new_release_timer.running:
+ self.new_release_timer.stop()
+
+ # Config set functions
+ def do_config_set_func(self, key, value):
+ on_set_func = getattr(self, '_on_set_' + key, None)
+ if on_set_func:
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Config key: %s set to %s..', key, value)
+ on_set_func(key, value)
+
+ def _on_config_value_change(self, key, value):
+ if self.get_state() == 'Started':
+ self.do_config_set_func(key, value)
+ component.get('EventManager').emit(ConfigValueChangedEvent(key, value))
+
+ def _on_set_torrentfiles_location(self, key, value):
+ if self.config['copy_torrent_file']:
+ try:
+ os.makedirs(value)
+ except OSError as ex:
+ log.debug('Unable to make directory: %s', ex)
+
+ def _on_set_listen_ports(self, key, value):
+ self.__set_listen_on()
+
+ def _on_set_listen_interface(self, key, value):
+ self.__set_listen_on()
+
+ def _on_set_outgoing_interface(self, key, value):
+ """Set interface name or IP address for outgoing BitTorrent connections."""
+ value = value.strip() if value else ''
+ self.core.apply_session_settings({'outgoing_interfaces': value})
+
+ def _on_set_random_port(self, key, value):
+ self.__set_listen_on()
+
+ def __set_listen_on(self):
+ """Set the ports and interface address to listen for incoming connections on."""
+ if self.config['random_port']:
+ if not self.config['listen_random_port']:
+ self.config['listen_random_port'] = random.randrange(49152, 65525)
+ listen_ports = [
+ self.config['listen_random_port']
+ ] * 2 # use single port range
+ else:
+ self.config['listen_random_port'] = None
+ listen_ports = self.config['listen_ports']
+
+ if self.config['listen_interface']:
+ interface = self.config['listen_interface'].strip()
+ else:
+ interface = '0.0.0.0'
+
+ log.debug(
+ 'Listen Interface: %s, Ports: %s with use_sys_port: %s',
+ interface,
+ listen_ports,
+ self.config['listen_use_sys_port'],
+ )
+ interfaces = [
+ f'{interface}:{port}'
+ for port in range(listen_ports[0], listen_ports[1] + 1)
+ ]
+ self.core.apply_session_settings(
+ {
+ 'listen_system_port_fallback': self.config['listen_use_sys_port'],
+ 'listen_interfaces': ','.join(interfaces),
+ }
+ )
+
+ def _on_set_outgoing_ports(self, key, value):
+ self.__set_outgoing_ports()
+
+ def _on_set_random_outgoing_ports(self, key, value):
+ self.__set_outgoing_ports()
+
+ def __set_outgoing_ports(self):
+ port = (
+ 0
+ if self.config['random_outgoing_ports']
+ else self.config['outgoing_ports'][0]
+ )
+ if port:
+ num_ports = (
+ self.config['outgoing_ports'][1] - self.config['outgoing_ports'][0]
+ )
+ num_ports = num_ports if num_ports > 1 else 5
+ else:
+ num_ports = 0
+ log.debug('Outgoing port set to %s with range: %s', port, num_ports)
+ self.core.apply_session_settings(
+ {'outgoing_port': port, 'num_outgoing_ports': num_ports}
+ )
+
+ def _on_set_peer_tos(self, key, value):
+ try:
+ self.core.apply_session_setting('peer_tos', int(value, 16))
+ except ValueError as ex:
+ log.error('Invalid tos byte: %s', ex)
+
+ def _on_set_dht(self, key, value):
+ lt_bootstraps = self.core.session.get_settings()['dht_bootstrap_nodes']
+ # Update list of lt bootstraps, using set to remove duplicates.
+ dht_bootstraps = set(
+ lt_bootstraps.split(',')
+ + [
+ 'router.bittorrent.com:6881',
+ 'router.utorrent.com:6881',
+ 'router.bitcomet.com:6881',
+ 'dht.transmissionbt.com:6881',
+ 'dht.aelitis.com:6881',
+ ]
+ )
+ self.core.apply_session_settings(
+ {'dht_bootstrap_nodes': ','.join(dht_bootstraps), 'enable_dht': value}
+ )
+
+ def _on_set_upnp(self, key, value):
+ self.core.apply_session_setting('enable_upnp', value)
+
+ def _on_set_natpmp(self, key, value):
+ self.core.apply_session_setting('enable_natpmp', value)
+
+ def _on_set_lsd(self, key, value):
+ self.core.apply_session_setting('enable_lsd', value)
+
+ def _on_set_utpex(self, key, value):
+ if value:
+ self.core.session.add_extension('ut_pex')
+
+ def _on_set_enc_in_policy(self, key, value):
+ self._on_set_encryption(key, value)
+
+ def _on_set_enc_out_policy(self, key, value):
+ self._on_set_encryption(key, value)
+
+ def _on_set_enc_level(self, key, value):
+ self._on_set_encryption(key, value)
+
+ def _on_set_encryption(self, key, value):
+ # Convert Deluge enc_level values to libtorrent enc_level values.
+ pe_enc_level = {
+ 0: lt.enc_level.plaintext,
+ 1: lt.enc_level.rc4,
+ 2: lt.enc_level.both,
+ }
+ self.core.apply_session_settings(
+ {
+ 'out_enc_policy': lt.enc_policy(self.config['enc_out_policy']),
+ 'in_enc_policy': lt.enc_policy(self.config['enc_in_policy']),
+ 'allowed_enc_level': lt.enc_level(
+ pe_enc_level[self.config['enc_level']]
+ ),
+ 'prefer_rc4': True,
+ }
+ )
+
+ def _on_set_max_connections_global(self, key, value):
+ self.core.apply_session_setting('connections_limit', value)
+
+ def _on_set_max_upload_speed(self, key, value):
+ # We need to convert Kb/s to B/s
+ value = -1 if value < 0 else int(value * 1024)
+ self.core.apply_session_setting('upload_rate_limit', value)
+
+ def _on_set_max_download_speed(self, key, value):
+ # We need to convert Kb/s to B/s
+ value = -1 if value < 0 else int(value * 1024)
+ self.core.apply_session_setting('download_rate_limit', value)
+
+ def _on_set_max_upload_slots_global(self, key, value):
+ self.core.apply_session_setting('unchoke_slots_limit', value)
+
+ def _on_set_max_half_open_connections(self, key, value):
+ self.core.apply_session_setting('half_open_limit', value)
+
+ def _on_set_max_connections_per_second(self, key, value):
+ self.core.apply_session_setting('connection_speed', value)
+
+ def _on_set_ignore_limits_on_local_network(self, key, value):
+ self.core.apply_session_setting('ignore_limits_on_local_network', value)
+
+ def _on_set_share_ratio_limit(self, key, value):
+ # This value is a float percentage in deluge, but libtorrent needs int percentage.
+ self.core.apply_session_setting('share_ratio_limit', int(value * 100))
+
+ def _on_set_seed_time_ratio_limit(self, key, value):
+ # This value is a float percentage in deluge, but libtorrent needs int percentage.
+ self.core.apply_session_setting('seed_time_ratio_limit', int(value * 100))
+
+ def _on_set_seed_time_limit(self, key, value):
+ # This value is stored in minutes in deluge, but libtorrent wants seconds
+ self.core.apply_session_setting('seed_time_limit', int(value * 60))
+
+ def _on_set_max_active_downloading(self, key, value):
+ self.core.apply_session_setting('active_downloads', value)
+
+ def _on_set_max_active_seeding(self, key, value):
+ self.core.apply_session_setting('active_seeds', value)
+
+ def _on_set_max_active_limit(self, key, value):
+ self.core.apply_session_setting('active_limit', value)
+
+ def _on_set_dont_count_slow_torrents(self, key, value):
+ self.core.apply_session_setting('dont_count_slow_torrents', value)
+
+ def _on_set_send_info(self, key, value):
+ """sends anonymous stats home"""
+ log.debug('Sending anonymous stats..')
+
+ class SendInfoThread(threading.Thread):
+ def __init__(self, config):
+ self.config = config
+ threading.Thread.__init__(self)
+
+ def run(self):
+ import time
+
+ now = time.time()
+ # check if we've done this within the last week or never
+ if (now - self.config['info_sent']) >= (60 * 60 * 24 * 7):
+ try:
+ url = (
+ 'http://deluge-torrent.org/stats_get.php?processor='
+ + platform.machine()
+ + '&python='
+ + platform.python_version()
+ + '&deluge='
+ + deluge.common.get_version()
+ + '&os='
+ + platform.system()
+ + '&plugins='
+ + quote_plus(':'.join(self.config['enabled_plugins']))
+ )
+ urlopen(url)
+ except OSError as ex:
+ log.debug('Network error while trying to send info: %s', ex)
+ else:
+ self.config['info_sent'] = now
+
+ if value:
+ SendInfoThread(self.config).start()
+
+ def _on_set_new_release_check(self, key, value):
+ if value:
+ log.debug('Checking for new release..')
+ threading.Thread(target=self.core.get_new_release).start()
+ if self.new_release_timer and self.new_release_timer.running:
+ self.new_release_timer.stop()
+ # Set a timer to check for a new release every 3 days
+ self.new_release_timer = LoopingCall(
+ self._on_set_new_release_check, 'new_release_check', True
+ )
+ self.new_release_timer.start(72 * 60 * 60, False)
+ else:
+ if self.new_release_timer and self.new_release_timer.running:
+ self.new_release_timer.stop()
+
+ def _on_set_proxy(self, key, value):
+ # Initialise with type none and blank hostnames.
+ proxy_settings = {
+ 'proxy_type': lt.proxy_type_t.none,
+ 'i2p_hostname': '',
+ 'proxy_hostname': '',
+ 'proxy_hostnames': value['proxy_hostnames'],
+ 'proxy_peer_connections': value['proxy_peer_connections'],
+ 'proxy_tracker_connections': value['proxy_tracker_connections'],
+ 'force_proxy': value['force_proxy'],
+ 'anonymous_mode': value['anonymous_mode'],
+ }
+
+ if value['type'] == lt.proxy_type_t.i2p_proxy:
+ proxy_settings.update(
+ {
+ 'proxy_type': lt.proxy_type_t.i2p_proxy,
+ 'i2p_hostname': value['hostname'],
+ 'i2p_port': value['port'],
+ }
+ )
+ elif value['type'] != lt.proxy_type_t.none:
+ proxy_settings.update(
+ {
+ 'proxy_type': value['type'],
+ 'proxy_hostname': value['hostname'],
+ 'proxy_port': value['port'],
+ 'proxy_username': value['username'],
+ 'proxy_password': value['password'],
+ }
+ )
+
+ self.core.apply_session_settings(proxy_settings)
+
+ def _on_set_rate_limit_ip_overhead(self, key, value):
+ self.core.apply_session_setting('rate_limit_ip_overhead', value)
+
+ def _on_set_geoip_db_location(self, key, geoipdb_path):
+ # Load the GeoIP DB for country look-ups if available
+ if os.path.exists(geoipdb_path):
+ try:
+ self.core.geoip_instance = GeoIP(geoipdb_path, 0)
+ except Exception as ex:
+ log.warning('GeoIP Unavailable: %s', ex)
+ else:
+ log.warning('Unable to find GeoIP database file: %s', geoipdb_path)
+
+ def _on_set_cache_size(self, key, value):
+ self.core.apply_session_setting('cache_size', value)
+
+ def _on_set_cache_expiry(self, key, value):
+ self.core.apply_session_setting('cache_expiry', value)
+
+ def _on_auto_manage_prefer_seeds(self, key, value):
+ self.core.apply_session_setting('auto_manage_prefer_seeds', value)
diff --git a/deluge/core/rpcserver.py b/deluge/core/rpcserver.py
new file mode 100644
index 0000000..81ab2e0
--- /dev/null
+++ b/deluge/core/rpcserver.py
@@ -0,0 +1,598 @@
+#
+# Copyright (C) 2008,2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""RPCServer Module"""
+import logging
+import os
+import sys
+import traceback
+from collections import namedtuple
+from types import FunctionType
+from typing import Callable, TypeVar, overload
+
+from twisted.internet import defer, reactor
+from twisted.internet.protocol import Factory, connectionDone
+
+import deluge.component as component
+import deluge.configmanager
+from deluge.core.authmanager import (
+ AUTH_LEVEL_ADMIN,
+ AUTH_LEVEL_DEFAULT,
+ AUTH_LEVEL_NONE,
+)
+from deluge.crypto_utils import check_ssl_keys, get_context_factory
+from deluge.error import (
+ DelugeError,
+ IncompatibleClient,
+ NotAuthorizedError,
+ WrappedException,
+ _ClientSideRecreateError,
+)
+from deluge.event import ClientDisconnectedEvent
+from deluge.transfer import DelugeTransferProtocol
+
+RPC_RESPONSE = 1
+RPC_ERROR = 2
+RPC_EVENT = 3
+
+log = logging.getLogger(__name__)
+
+TCallable = TypeVar('TCallable', bound=Callable)
+
+
+@overload
+def export(func: TCallable) -> TCallable:
+ ...
+
+
+@overload
+def export(auth_level: int) -> Callable[[TCallable], TCallable]:
+ ...
+
+
+def export(auth_level=AUTH_LEVEL_DEFAULT):
+ """
+ Decorator function to register an object's method as an RPC. The object
+ will need to be registered with an :class:`RPCServer` to be effective.
+
+ :param func: the function to export
+ :type func: function
+ :param auth_level: the auth level required to call this method
+ :type auth_level: int
+
+ """
+
+ def wrap(func, *args, **kwargs):
+ func._rpcserver_export = True
+ func._rpcserver_auth_level = auth_level
+
+ rpc_text = '**RPC exported method** (*Auth level: %s*)' % auth_level
+
+ # Append the RPC text while ensuring correct docstring formatting.
+ if func.__doc__:
+ if func.__doc__.endswith(' '):
+ indent = func.__doc__.split('\n')[-1]
+ func.__doc__ += f'\n{indent}'
+ else:
+ func.__doc__ += '\n\n'
+ func.__doc__ += rpc_text
+ else:
+ func.__doc__ = rpc_text
+
+ return func
+
+ if isinstance(auth_level, FunctionType):
+ func = auth_level
+ auth_level = AUTH_LEVEL_DEFAULT
+ return wrap(func)
+ else:
+ return wrap
+
+
+def format_request(call):
+ """
+ Format the RPCRequest message for debug printing
+
+ :param call: the request
+ :type call: a RPCRequest
+
+ :returns: a formatted string for printing
+ :rtype: str
+
+ """
+ try:
+ s = call[1] + '('
+ if call[2]:
+ s += ', '.join([str(x) for x in call[2]])
+ if call[3]:
+ if call[2]:
+ s += ', '
+ s += ', '.join([key + '=' + str(value) for key, value in call[3].items()])
+ s += ')'
+ except UnicodeEncodeError:
+ return 'UnicodeEncodeError, call: %s' % call
+ else:
+ return s
+
+
+class DelugeRPCProtocol(DelugeTransferProtocol):
+ def __init__(self):
+ super().__init__()
+ # namedtuple subclass with auth_level, username for the connected session.
+ self.AuthLevel = namedtuple('SessionAuthlevel', 'auth_level, username')
+
+ def message_received(self, request):
+ """
+ This method is called whenever a message is received from a client. The
+ only message that a client sends to the server is a RPC Request message.
+ If the RPC Request message is valid, then the method is called in
+ :meth:`dispatch`.
+
+ :param request: the request from the client.
+ :type data: tuple
+
+ """
+ if not isinstance(request, tuple):
+ log.debug('Received invalid message: type is not tuple')
+ return
+
+ if len(request) < 1:
+ log.debug('Received invalid message: there are no items')
+ return
+
+ for call in request:
+ if len(call) != 4:
+ log.debug(
+ 'Received invalid rpc request: number of items ' 'in request is %s',
+ len(call),
+ )
+ continue
+ # log.debug('RPCRequest: %s', format_request(call))
+ reactor.callLater(0, self.dispatch, *call)
+
+ def sendData(self, data): # NOQA: N802
+ """
+ Sends the data to the client.
+
+ :param data: the object that is to be sent to the client. This should
+ be one of the RPC message types.
+ :type data: object
+
+ """
+ try:
+ self.transfer_message(data)
+ except Exception as ex:
+ log.warning('Error occurred when sending message: %s.', ex)
+ log.exception(ex)
+ raise
+
+ def connectionMade(self): # NOQA: N802
+ """
+ This method is called when a new client connects.
+ """
+ peer = self.transport.getPeer()
+ log.info('Deluge Client connection made from: %s:%s', peer.host, peer.port)
+ # Set the initial auth level of this session to AUTH_LEVEL_NONE
+ self.factory.authorized_sessions[self.transport.sessionno] = self.AuthLevel(
+ AUTH_LEVEL_NONE, ''
+ )
+
+ def connectionLost(self, reason=connectionDone): # NOQA: N802
+ """
+ This method is called when the client is disconnected.
+
+ :param reason: the reason the client disconnected.
+ :type reason: str
+
+ """
+
+ # We need to remove this session from various dicts
+ del self.factory.authorized_sessions[self.transport.sessionno]
+ if self.transport.sessionno in self.factory.session_protocols:
+ del self.factory.session_protocols[self.transport.sessionno]
+ if self.transport.sessionno in self.factory.interested_events:
+ del self.factory.interested_events[self.transport.sessionno]
+
+ if self.factory.state == 'running':
+ component.get('EventManager').emit(
+ ClientDisconnectedEvent(self.factory.session_id)
+ )
+ log.info('Deluge client disconnected: %s', reason.value)
+
+ def valid_session(self):
+ return self.transport.sessionno in self.factory.authorized_sessions
+
+ def dispatch(self, request_id, method, args, kwargs):
+ """
+ This method is run when a RPC Request is made. It will run the local method
+ and will send either a RPC Response or RPC Error back to the client.
+
+ :param request_id: the request_id from the client (sent in the RPC Request)
+ :type request_id: int
+ :param method: the local method to call. It must be registered with
+ the :class:`RPCServer`.
+ :type method: str
+ :param args: the arguments to pass to `method`
+ :type args: list
+ :param kwargs: the keyword-arguments to pass to `method`
+ :type kwargs: dict
+
+ """
+
+ def send_error():
+ """
+ Sends an error response with the contents of the exception that was raised.
+ """
+ exc_type, exc_value, dummy_exc_trace = sys.exc_info()
+ formated_tb = traceback.format_exc()
+ try:
+ self.sendData(
+ (
+ RPC_ERROR,
+ request_id,
+ exc_type.__name__,
+ exc_value._args,
+ exc_value._kwargs,
+ formated_tb,
+ )
+ )
+ except AttributeError:
+ # This is not a deluge exception (object has no attribute '_args), let's wrap it
+ log.warning(
+ 'An exception occurred while sending RPC_ERROR to '
+ 'client. Wrapping it and resending. Error to '
+ 'send(causing exception goes next):\n%s',
+ formated_tb,
+ )
+ try:
+ raise WrappedException(
+ str(exc_value), exc_type.__name__, formated_tb
+ )
+ except WrappedException:
+ send_error()
+ except Exception as ex:
+ log.error(
+ 'An exception occurred while sending RPC_ERROR to client: %s', ex
+ )
+
+ if method == 'daemon.info':
+ # This is a special case and used in the initial connection process
+ self.sendData((RPC_RESPONSE, request_id, deluge.common.get_version()))
+ return
+ elif method == 'daemon.login':
+ # This is a special case and used in the initial connection process
+ # We need to authenticate the user here
+ log.debug('RPC dispatch daemon.login')
+ try:
+ client_version = kwargs.pop('client_version', None)
+ if client_version is None:
+ raise IncompatibleClient(deluge.common.get_version())
+ ret = component.get('AuthManager').authorize(*args, **kwargs)
+ if ret:
+ self.factory.authorized_sessions[
+ self.transport.sessionno
+ ] = self.AuthLevel(ret, args[0])
+ self.factory.session_protocols[self.transport.sessionno] = self
+ except Exception as ex:
+ send_error()
+ if not isinstance(ex, _ClientSideRecreateError):
+ log.exception(ex)
+ else:
+ self.sendData((RPC_RESPONSE, request_id, (ret)))
+ if not ret:
+ self.transport.loseConnection()
+ return
+
+ # Anything below requires a valid session
+ if not self.valid_session():
+ return
+
+ if method == 'daemon.set_event_interest':
+ log.debug('RPC dispatch daemon.set_event_interest')
+ # This special case is to allow clients to set which events they are
+ # interested in receiving.
+ # We are expecting a sequence from the client.
+ try:
+ if self.transport.sessionno not in self.factory.interested_events:
+ self.factory.interested_events[self.transport.sessionno] = []
+ self.factory.interested_events[self.transport.sessionno].extend(args[0])
+ except Exception:
+ send_error()
+ else:
+ self.sendData((RPC_RESPONSE, request_id, (True)))
+ return
+
+ if method not in self.factory.methods:
+ try:
+ # Raise exception to be sent back to client
+ raise AttributeError('RPC call on invalid function: %s' % method)
+ except AttributeError:
+ send_error()
+ return
+
+ log.debug('RPC dispatch %s', method)
+ try:
+ method_auth_requirement = self.factory.methods[method]._rpcserver_auth_level
+ auth_level = self.factory.authorized_sessions[
+ self.transport.sessionno
+ ].auth_level
+ if auth_level < method_auth_requirement:
+ # This session is not allowed to call this method
+ log.debug(
+ 'Session %s is attempting an unauthorized method call!',
+ self.transport.sessionno,
+ )
+ raise NotAuthorizedError(auth_level, method_auth_requirement)
+ # Set the session_id in the factory so that methods can know
+ # which session is calling it.
+ self.factory.session_id = self.transport.sessionno
+ ret = self.factory.methods[method](*args, **kwargs)
+ except Exception as ex:
+ send_error()
+ # Don't bother printing out DelugeErrors, because they are just
+ # for the client
+ if not isinstance(ex, DelugeError):
+ log.exception('Exception calling RPC request: %s', ex)
+ else:
+ # Check if the return value is a deferred, since we'll need to
+ # wait for it to fire before sending the RPC_RESPONSE
+ if isinstance(ret, defer.Deferred):
+
+ def on_success(result):
+ try:
+ self.sendData((RPC_RESPONSE, request_id, result))
+ except Exception:
+ send_error()
+ return result
+
+ def on_fail(failure):
+ try:
+ failure.raiseException()
+ except Exception:
+ send_error()
+ return failure
+
+ ret.addCallbacks(on_success, on_fail)
+ else:
+ self.sendData((RPC_RESPONSE, request_id, ret))
+
+
+class RPCServer(component.Component):
+ """
+ This class is used to handle rpc requests from the client. Objects are
+ registered with this class and their methods are exported using the export
+ decorator.
+
+ :param port: the port the RPCServer will listen on
+ :type port: int
+ :param interface: the interface to listen on, this may override the `allow_remote` setting
+ :type interface: str
+ :param allow_remote: set True if the server should allow remote connections
+ :type allow_remote: bool
+ :param listen: if False, will not start listening.. This is only useful in Classic Mode
+ :type listen: bool
+ """
+
+ def __init__(self, port=58846, interface='', allow_remote=False, listen=True):
+ component.Component.__init__(self, 'RPCServer')
+
+ self.factory = Factory()
+ self.factory.protocol = DelugeRPCProtocol
+ self.factory.session_id = -1
+ self.factory.state = 'running'
+
+ # Holds the registered methods
+ self.factory.methods = {}
+ # Holds the session_ids and auth levels
+ self.factory.authorized_sessions = {}
+ # Holds the protocol objects with the session_id as key
+ self.factory.session_protocols = {}
+ # Holds the interested event list for the sessions
+ self.factory.interested_events = {}
+
+ self.listen = listen
+ if not listen:
+ return
+
+ if allow_remote:
+ hostname = ''
+ else:
+ hostname = 'localhost'
+
+ if interface:
+ hostname = interface
+
+ log.info('Starting DelugeRPC server %s:%s', hostname, port)
+
+ # Check for SSL keys and generate some if needed
+ check_ssl_keys()
+
+ cert = os.path.join(deluge.configmanager.get_config_dir('ssl'), 'daemon.cert')
+ pkey = os.path.join(deluge.configmanager.get_config_dir('ssl'), 'daemon.pkey')
+
+ try:
+ reactor.listenSSL(
+ port, self.factory, get_context_factory(cert, pkey), interface=hostname
+ )
+ except Exception as ex:
+ log.debug('Daemon already running or port not available.: %s', ex)
+ raise
+
+ def register_object(self, obj, name=None):
+ """
+ Registers an object to export it's rpc methods. These methods should
+ be exported with the export decorator prior to registering the object.
+
+ :param obj: the object that we want to export
+ :type obj: object
+ :param name: the name to use, if None, it will be the class name of the object
+ :type name: str
+ """
+ if not name:
+ name = obj.__class__.__name__.lower()
+
+ for d in dir(obj):
+ if d[0] == '_':
+ continue
+ if getattr(getattr(obj, d), '_rpcserver_export', False):
+ log.debug('Registering method: %s', name + '.' + d)
+ self.factory.methods[name + '.' + d] = getattr(obj, d)
+
+ def deregister_object(self, obj):
+ """
+ Deregisters an objects exported rpc methods.
+
+ :param obj: the object that was previously registered
+
+ """
+ for key, value in self.factory.methods.items():
+ if value.__self__ == obj:
+ del self.factory.methods[key]
+
+ def get_object_method(self, name):
+ """
+ Returns a registered method.
+
+ :param name: the name of the method, usually in the form of 'object.method'
+ :type name: str
+
+ :returns: method
+
+ :raises KeyError: if `name` is not registered
+
+ """
+ return self.factory.methods[name]
+
+ def get_method_list(self):
+ """
+ Returns a list of the exported methods.
+
+ :returns: the exported methods
+ :rtype: list
+ """
+ return list(self.factory.methods)
+
+ def get_session_id(self):
+ """
+ Returns the session id of the current RPC.
+
+ :returns: the session id, this will be -1 if no connections have been made
+ :rtype: int
+
+ """
+ return self.factory.session_id
+
+ def get_session_user(self):
+ """
+ Returns the username calling the current RPC.
+
+ :returns: the username of the user calling the current RPC
+ :rtype: string
+
+ """
+ if not self.listen:
+ return 'localclient'
+ session_id = self.get_session_id()
+ if session_id > -1 and session_id in self.factory.authorized_sessions:
+ return self.factory.authorized_sessions[session_id].username
+ else:
+ # No connections made yet
+ return ''
+
+ def get_session_auth_level(self):
+ """
+ Returns the auth level of the user calling the current RPC.
+
+ :returns: the auth level
+ :rtype: int
+ """
+ if not self.listen or not self.is_session_valid(self.get_session_id()):
+ return AUTH_LEVEL_ADMIN
+ return self.factory.authorized_sessions[self.get_session_id()].auth_level
+
+ def get_rpc_auth_level(self, rpc):
+ """
+ Returns the auth level requirement for an exported rpc.
+
+ :returns: the auth level
+ :rtype: int
+ """
+ return self.factory.methods[rpc]._rpcserver_auth_level
+
+ def is_session_valid(self, session_id):
+ """
+ Checks if the session is still valid, eg, if the client is still connected.
+
+ :param session_id: the session id
+ :type session_id: int
+
+ :returns: True if the session is valid
+ :rtype: bool
+
+ """
+ return session_id in self.factory.authorized_sessions
+
+ def emit_event(self, event):
+ """
+ Emits the event to interested clients.
+
+ :param event: the event to emit
+ :type event: :class:`deluge.event.DelugeEvent`
+ """
+ log.debug('intevents: %s', self.factory.interested_events)
+ # Use copy of `interested_events` since it can mutate while iterating.
+ for session_id, interest in self.factory.interested_events.copy().items():
+ if event.name in interest:
+ log.debug('Emit Event: %s %s', event.name, event.args)
+ # This session is interested so send a RPC_EVENT
+ self.factory.session_protocols[session_id].sendData(
+ (RPC_EVENT, event.name, event.args)
+ )
+
+ def emit_event_for_session_id(self, session_id, event):
+ """
+ Emits the event to specified session_id.
+
+ :param session_id: the event to emit
+ :type session_id: int
+ :param event: the event to emit
+ :type event: :class:`deluge.event.DelugeEvent`
+ """
+ if not self.is_session_valid(session_id):
+ log.debug(
+ 'Session ID %s is not valid. Not sending event "%s".',
+ session_id,
+ event.name,
+ )
+ return
+ if session_id not in self.factory.interested_events:
+ log.debug(
+ 'Session ID %s is not interested in any events. Not sending event "%s".',
+ session_id,
+ event.name,
+ )
+ return
+ if event.name not in self.factory.interested_events[session_id]:
+ log.debug(
+ 'Session ID %s is not interested in event "%s". Not sending it.',
+ session_id,
+ event.name,
+ )
+ return
+ log.debug(
+ 'Sending event "%s" with args "%s" to session id "%s".',
+ event.name,
+ event.args,
+ session_id,
+ )
+ self.factory.session_protocols[session_id].sendData(
+ (RPC_EVENT, event.name, event.args)
+ )
+
+ def stop(self):
+ self.factory.state = 'stopping'
diff --git a/deluge/core/torrent.py b/deluge/core/torrent.py
new file mode 100644
index 0000000..57ec26f
--- /dev/null
+++ b/deluge/core/torrent.py
@@ -0,0 +1,1563 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""Internal Torrent class
+
+Attributes:
+ LT_TORRENT_STATE_MAP (dict): Maps the torrent state from libtorrent to Deluge state.
+
+"""
+
+import logging
+import os
+import socket
+import time
+from typing import Optional
+from urllib.parse import urlparse
+
+from twisted.internet.defer import Deferred, DeferredList
+
+import deluge.component as component
+from deluge._libtorrent import lt
+from deluge.common import decode_bytes
+from deluge.configmanager import ConfigManager, get_config_dir
+from deluge.core.authmanager import AUTH_LEVEL_ADMIN
+from deluge.decorators import deprecated
+from deluge.event import (
+ TorrentFolderRenamedEvent,
+ TorrentStateChangedEvent,
+ TorrentTrackerStatusEvent,
+)
+
+log = logging.getLogger(__name__)
+
+LT_TORRENT_STATE_MAP = {
+ 'queued_for_checking': 'Checking',
+ 'checking_files': 'Checking',
+ 'downloading_metadata': 'Downloading',
+ 'downloading': 'Downloading',
+ 'finished': 'Seeding',
+ 'seeding': 'Seeding',
+ 'allocating': 'Allocating',
+ 'checking_resume_data': 'Checking',
+}
+
+
+def sanitize_filepath(filepath, folder=False):
+ """Returns a sanitized filepath to pass to libtorrent rename_file().
+
+ The filepath will have backslashes substituted along with whitespace
+ padding and duplicate slashes stripped.
+
+ Args:
+ folder (bool): A trailing slash is appended to the returned filepath.
+ """
+
+ def clean_filename(filename):
+ """Strips whitespace and discards dotted filenames"""
+ filename = filename.strip()
+ if filename.replace('.', '') == '':
+ return ''
+ return filename
+
+ if '\\' in filepath or '/' in filepath:
+ folderpath = filepath.replace('\\', '/').split('/')
+ folderpath = [clean_filename(x) for x in folderpath]
+ newfilepath = '/'.join([path for path in folderpath if path])
+ else:
+ newfilepath = clean_filename(filepath)
+
+ if folder is True:
+ newfilepath += '/'
+
+ return newfilepath
+
+
+def convert_lt_files(files):
+ """Indexes and decodes files from libtorrent get_files().
+
+ Args:
+ files (file_storage): The libtorrent torrent files.
+
+ Returns:
+ list of dict: The files.
+
+ The format for the file dict::
+
+ {
+ "index": int,
+ "path": str,
+ "size": int,
+ "offset": int
+ }
+ """
+ filelist = []
+ for index in range(files.num_files()):
+ try:
+ file_path = files.file_path(index).decode('utf8')
+ except AttributeError:
+ file_path = files.file_path(index)
+
+ filelist.append(
+ {
+ 'index': index,
+ 'path': file_path.replace('\\', '/'),
+ 'size': files.file_size(index),
+ 'offset': files.file_offset(index),
+ }
+ )
+
+ return filelist
+
+
+class TorrentOptions(dict):
+ """TorrentOptions create a dict of the torrent options.
+
+ Attributes:
+ add_paused (bool): Add the torrrent in a paused state.
+ auto_managed (bool): Set torrent to auto managed mode, i.e. will be started or queued automatically.
+ download_location (str): The path for the torrent data to be stored while downloading.
+ file_priorities (list of int): The priority for files in torrent, range is [0..7] however
+ only [0, 1, 4, 7] are normally used and correspond to [Skip, Low, Normal, High]
+ mapped_files (dict): A mapping of the renamed filenames in 'index:filename' pairs.
+ max_connections (int): Sets maximum number of connections this torrent will open.
+ This must be at least 2. The default is unlimited (-1).
+ max_download_speed (float): Will limit the download bandwidth used by this torrent to the
+ limit you set.The default is unlimited (-1) but will not exceed global limit.
+ max_upload_slots (int): Sets the maximum number of peers that are
+ unchoked at the same time on this torrent. This defaults to infinite (-1).
+ max_upload_speed (float): Will limit the upload bandwidth used by this torrent to the limit
+ you set. The default is unlimited (-1) but will not exceed global limit.
+ move_completed (bool): Move the torrent when downloading has finished.
+ move_completed_path (str): The path to move torrent to when downloading has finished.
+ name (str): The display name of the torrent.
+ owner (str): The user this torrent belongs to.
+ pre_allocate_storage (bool): When adding the torrent should all files be pre-allocated.
+ prioritize_first_last_pieces (bool): Prioritize the first and last pieces in the torrent.
+ remove_at_ratio (bool): Remove the torrent when it has reached the stop_ratio.
+ seed_mode (bool): Assume that all files are present for this torrent (Only used when adding a torent).
+ sequential_download (bool): Download the pieces of the torrent in order.
+ shared (bool): Enable the torrent to be seen by other Deluge users.
+ stop_at_ratio (bool): Stop the torrent when it has reached stop_ratio.
+ stop_ratio (float): The seeding ratio to stop (or remove) the torrent at.
+ super_seeding (bool): Enable super seeding/initial seeding.
+ """
+
+ def __init__(self):
+ super().__init__()
+ config = ConfigManager('core.conf').config
+ options_conf_map = {
+ 'add_paused': 'add_paused',
+ 'auto_managed': 'auto_managed',
+ 'download_location': 'download_location',
+ 'max_connections': 'max_connections_per_torrent',
+ 'max_download_speed': 'max_download_speed_per_torrent',
+ 'max_upload_slots': 'max_upload_slots_per_torrent',
+ 'max_upload_speed': 'max_upload_speed_per_torrent',
+ 'move_completed': 'move_completed',
+ 'move_completed_path': 'move_completed_path',
+ 'pre_allocate_storage': 'pre_allocate_storage',
+ 'prioritize_first_last_pieces': 'prioritize_first_last_pieces',
+ 'remove_at_ratio': 'remove_seed_at_ratio',
+ 'sequential_download': 'sequential_download',
+ 'shared': 'shared',
+ 'stop_at_ratio': 'stop_seed_at_ratio',
+ 'stop_ratio': 'stop_seed_ratio',
+ 'super_seeding': 'super_seeding',
+ }
+ for opt_k, conf_k in options_conf_map.items():
+ self[opt_k] = config[conf_k]
+ self['file_priorities'] = []
+ self['mapped_files'] = {}
+ self['name'] = ''
+ self['owner'] = ''
+ self['seed_mode'] = False
+
+
+class TorrentError:
+ def __init__(self, error_message, was_paused=False, restart_to_resume=False):
+ self.error_message = error_message
+ self.was_paused = was_paused
+ self.restart_to_resume = restart_to_resume
+
+
+class Torrent:
+ """Torrent holds information about torrents added to the libtorrent session.
+
+ Args:
+ handle: The libtorrent torrent handle.
+ options (dict): The torrent options.
+ state (TorrentState): The torrent state.
+ filename (str): The filename of the torrent file.
+ magnet (str): The magnet URI.
+
+ Attributes:
+ torrent_id (str): The torrent_id for this torrent
+ handle: Holds the libtorrent torrent handle
+ magnet (str): The magnet URI used to add this torrent (if available).
+ status: Holds status info so that we don"t need to keep getting it from libtorrent.
+ torrent_info: store the torrent info.
+ has_metadata (bool): True if the metadata for the torrent is available, False otherwise.
+ status_funcs (dict): The function mappings to get torrent status
+ prev_status (dict): Previous status dicts returned for this torrent. We use this to return
+ dicts that only contain changes from the previous.
+ {session_id: status_dict, ...}
+ waiting_on_folder_rename (list of dict): A list of Deferreds for file indexes we're waiting for file_rename
+ alerts on. This is so we can send one folder_renamed signal instead of multiple file_renamed signals.
+ [{index: Deferred, ...}, ...]
+ options (dict): The torrent options.
+ filename (str): The filename of the torrent file in case it is required.
+ is_finished (bool): Keep track if torrent is finished to prevent some weird things on state load.
+ statusmsg (str): Status message holds error/extra info about the torrent.
+ state (str): The torrent's state
+ trackers (list of dict): The torrent's trackers
+ tracker_status (str): Status message of currently connected tracker
+ tracker_host (str): Hostname of the currently connected tracker
+ forcing_recheck (bool): Keep track if we're forcing a recheck of the torrent
+ forcing_recheck_paused (bool): Keep track if we're forcing a recheck of the torrent so that
+ we can re-pause it after its done if necessary
+ forced_error (TorrentError): Keep track if we have forced this torrent to be in Error state.
+ """
+
+ def __init__(self, handle, options, state=None, filename=None, magnet=None):
+ self.torrent_id = str(handle.info_hash())
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Creating torrent object %s', self.torrent_id)
+
+ # Get the core config
+ self.config = ConfigManager('core.conf')
+ self.rpcserver = component.get('RPCServer')
+
+ self.handle = handle
+
+ self.magnet = magnet
+ self._status: Optional['lt.torrent_status'] = None
+ self._status_last_update: float = 0.0
+
+ self.torrent_info = self.handle.torrent_file()
+ self.has_metadata = self.status.has_metadata
+
+ self.options = TorrentOptions()
+ self.options.update(options)
+
+ # Load values from state if we have it
+ if state:
+ self.set_trackers(state.trackers)
+ self.is_finished = state.is_finished
+ self.filename = state.filename
+ else:
+ self.set_trackers()
+ self.is_finished = False
+ self.filename = filename
+
+ if not self.filename:
+ self.filename = ''
+
+ self.forced_error = None
+ self.statusmsg = None
+ self.state = None
+ self.moving_storage_dest_path = None
+ self.tracker_status = ''
+ self.tracker_host = None
+ self.forcing_recheck = False
+ self.forcing_recheck_paused = False
+ self.status_funcs = None
+ self.prev_status = {}
+ self.waiting_on_folder_rename = []
+
+ self._create_status_funcs()
+ self.set_options(self.options)
+ self.update_state()
+
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Torrent object created.')
+
+ def _set_handle_flags(self, flag: lt.torrent_flags, set_flag: bool):
+ """set or unset a flag to the lt handle
+
+ Args:
+ flag (lt.torrent_flags): the flag to set/unset
+ set_flag (bool): True for setting the flag, False for unsetting it
+ """
+ if set_flag:
+ self.handle.set_flags(flag)
+ else:
+ self.handle.unset_flags(flag)
+
+ def on_metadata_received(self):
+ """Process the metadata received alert for this torrent"""
+ self.has_metadata = True
+ self.torrent_info = self.handle.get_torrent_info()
+ if self.options['prioritize_first_last_pieces']:
+ self.set_prioritize_first_last_pieces(True)
+ self.write_torrentfile()
+
+ # --- Options methods ---
+ def set_options(self, options):
+ """Set the torrent options.
+
+ Args:
+ options (dict): Torrent options, see TorrentOptions class for valid keys.
+ """
+
+ # Skip set_prioritize_first_last if set_file_priorities is in options as it also calls the method.
+ if 'file_priorities' in options and 'prioritize_first_last_pieces' in options:
+ self.options['prioritize_first_last_pieces'] = options.pop(
+ 'prioritize_first_last_pieces'
+ )
+
+ for key, value in options.items():
+ if key in self.options:
+ options_set_func = getattr(self, 'set_' + key, None)
+ if options_set_func:
+ options_set_func(value)
+ else:
+ # Update config options that do not have funcs
+ self.options[key] = value
+
+ def get_options(self):
+ """Get the torrent options.
+
+ Returns:
+ dict: the torrent options.
+ """
+ return self.options
+
+ def set_max_connections(self, max_connections):
+ """Sets maximum number of connections this torrent will open.
+
+ Args:
+ max_connections (int): Maximum number of connections
+
+ Note:
+ The minimum value for handle.max_connections is 2 (or -1 for unlimited connections).
+ This is enforced by libtorrent and values 0 or 1 raise an assert with lt debug builds.
+ """
+
+ if max_connections == 0:
+ max_connections = -1
+ elif max_connections == 1:
+ max_connections = 2
+
+ self.options['max_connections'] = max_connections
+ self.handle.set_max_connections(max_connections)
+
+ def set_max_upload_slots(self, max_slots):
+ """Sets maximum number of upload slots for this torrent.
+
+ Args:
+ max_slots (int): Maximum upload slots
+ """
+ self.options['max_upload_slots'] = max_slots
+ self.handle.set_max_uploads(max_slots)
+
+ def set_max_upload_speed(self, m_up_speed):
+ """Sets maximum upload speed for this torrent.
+
+ Args:
+ m_up_speed (float): Maximum upload speed in KiB/s.
+ """
+ self.options['max_upload_speed'] = m_up_speed
+ if m_up_speed < 0:
+ value = -1
+ else:
+ value = int(m_up_speed * 1024)
+ self.handle.set_upload_limit(value)
+
+ def set_max_download_speed(self, m_down_speed):
+ """Sets maximum download speed for this torrent.
+
+ Args:
+ m_down_speed (float): Maximum download speed in KiB/s.
+ """
+ self.options['max_download_speed'] = m_down_speed
+ if m_down_speed < 0:
+ value = -1
+ else:
+ value = int(m_down_speed * 1024)
+ self.handle.set_download_limit(value)
+
+ @deprecated
+ def set_prioritize_first_last(self, prioritize):
+ """Deprecated: Use set_prioritize_first_last_pieces."""
+ self.set_prioritize_first_last_pieces(prioritize)
+
+ def set_prioritize_first_last_pieces(self, prioritize):
+ """Prioritize the first and last pieces in the torrent.
+
+ Args:
+ prioritize (bool): Prioritize the first and last pieces.
+
+ """
+ if not self.has_metadata:
+ return
+
+ self.options['prioritize_first_last_pieces'] = prioritize
+ if not prioritize:
+ # If we are turning off this option, call set_file_priorities to
+ # reset all the piece priorities
+ self.set_file_priorities(self.options['file_priorities'])
+ return
+
+ # A list of priorities for each piece in the torrent
+ priorities = self.handle.get_piece_priorities()
+
+ def get_file_piece(idx, byte_offset):
+ return self.torrent_info.map_file(idx, byte_offset, 0).piece
+
+ for idx in range(self.torrent_info.num_files()):
+ file_size = self.torrent_info.files().file_size(idx)
+ two_percent_bytes = int(0.02 * file_size)
+ # Get the pieces for the byte offsets
+ first_start = get_file_piece(idx, 0)
+ first_end = get_file_piece(idx, two_percent_bytes) + 1
+ last_start = get_file_piece(idx, file_size - two_percent_bytes)
+ last_end = get_file_piece(idx, max(file_size - 1, 0)) + 1
+
+ # Set the pieces in first and last ranges to priority 7
+ # if they are not marked as do not download
+ priorities[first_start:first_end] = [
+ p and 7 for p in priorities[first_start:first_end]
+ ]
+ priorities[last_start:last_end] = [
+ p and 7 for p in priorities[last_start:last_end]
+ ]
+
+ # Setting the priorites for all the pieces of this torrent
+ self.handle.prioritize_pieces(priorities)
+
+ def set_sequential_download(self, sequential):
+ """Sets whether to download the pieces of the torrent in order.
+
+ Args:
+ sequential (bool): Enable sequential downloading.
+ """
+ self.options['sequential_download'] = sequential
+ self._set_handle_flags(
+ flag=lt.torrent_flags.sequential_download,
+ set_flag=sequential,
+ )
+
+ def set_auto_managed(self, auto_managed):
+ """Set auto managed mode, i.e. will be started or queued automatically.
+
+ Args:
+ auto_managed (bool): Enable auto managed.
+ """
+ self.options['auto_managed'] = auto_managed
+ if not (self.status.paused and not self.status.auto_managed):
+ self._set_handle_flags(
+ flag=lt.torrent_flags.auto_managed,
+ set_flag=auto_managed,
+ )
+ self.update_state()
+
+ def set_super_seeding(self, super_seeding):
+ """Set super seeding/initial seeding.
+
+ Args:
+ super_seeding (bool): Enable super seeding.
+ """
+ self.options['super_seeding'] = super_seeding
+ self._set_handle_flags(
+ flag=lt.torrent_flags.super_seeding,
+ set_flag=super_seeding,
+ )
+
+ def set_stop_ratio(self, stop_ratio):
+ """The seeding ratio to stop (or remove) the torrent at.
+
+ Args:
+ stop_ratio (float): The seeding ratio.
+ """
+ self.options['stop_ratio'] = stop_ratio
+
+ def set_stop_at_ratio(self, stop_at_ratio):
+ """Stop the torrent when it has reached stop_ratio.
+
+ Args:
+ stop_at_ratio (bool): Stop the torrent.
+ """
+ self.options['stop_at_ratio'] = stop_at_ratio
+
+ def set_remove_at_ratio(self, remove_at_ratio):
+ """Remove the torrent when it has reached the stop_ratio.
+
+ Args:
+ remove_at_ratio (bool): Remove the torrent.
+ """
+ self.options['remove_at_ratio'] = remove_at_ratio
+
+ def set_move_completed(self, move_completed):
+ """Set whether to move the torrent when downloading has finished.
+
+ Args:
+ move_completed (bool): Move the torrent.
+
+ """
+ self.options['move_completed'] = move_completed
+
+ def set_move_completed_path(self, move_completed_path):
+ """Set the path to move torrent to when downloading has finished.
+
+ Args:
+ move_completed_path (str): The move path.
+ """
+ self.options['move_completed_path'] = move_completed_path
+
+ def set_file_priorities(self, file_priorities):
+ """Sets the file priotities.
+
+ Args:
+ file_priorities (list of int): List of file priorities.
+ """
+ if not self.has_metadata:
+ return
+
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug(
+ 'Setting %s file priorities to: %s', self.torrent_id, file_priorities
+ )
+
+ if file_priorities and len(file_priorities) == len(self.get_files()):
+ self.handle.prioritize_files(file_priorities)
+ else:
+ log.debug('Unable to set new file priorities.')
+ file_priorities = self.handle.get_file_priorities()
+
+ if 0 in self.options['file_priorities']:
+ # Previously marked a file 'skip' so check for any 0's now >0.
+ for index, priority in enumerate(self.options['file_priorities']):
+ if priority == 0 and file_priorities[index] > 0:
+ # Changed priority from skip to download so update state.
+ self.is_finished = False
+ self.update_state()
+ break
+
+ # Store the priorities.
+ self.options['file_priorities'] = file_priorities
+
+ # Set the first/last priorities if needed.
+ if self.options['prioritize_first_last_pieces']:
+ self.set_prioritize_first_last_pieces(True)
+
+ @deprecated
+ def set_save_path(self, download_location):
+ """Deprecated: Use set_download_location."""
+ self.set_download_location(download_location)
+
+ def set_download_location(self, download_location):
+ """The location for downloading torrent data."""
+ self.options['download_location'] = download_location
+
+ def set_owner(self, account):
+ """Sets the owner of this torrent.
+
+ Args:
+ account (str): The new owner account name.
+
+ Notes:
+ Only a user with admin level auth can change this value.
+
+ """
+
+ if self.rpcserver.get_session_auth_level() == AUTH_LEVEL_ADMIN:
+ self.options['owner'] = account
+
+ # End Options methods #
+
+ def set_trackers(self, trackers=None):
+ """Sets the trackers for this torrent.
+
+ Args:
+ trackers (list of dicts): A list of trackers.
+ """
+ if trackers is None:
+ self.trackers = list(self.handle.trackers())
+ self.tracker_host = None
+ return
+
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Setting trackers for %s: %s', self.torrent_id, trackers)
+
+ tracker_list = []
+
+ for tracker in trackers:
+ new_entry = lt.announce_entry(str(tracker['url']))
+ new_entry.tier = tracker['tier']
+ tracker_list.append(new_entry)
+ self.handle.replace_trackers(tracker_list)
+
+ # Print out the trackers
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Trackers set for %s:', self.torrent_id)
+ for tracker in self.handle.trackers():
+ log.debug(' [tier %s]: %s', tracker['tier'], tracker['url'])
+ # Set the tracker list in the torrent object
+ self.trackers = trackers
+ if len(trackers) > 0:
+ # Force a re-announce if there is at least 1 tracker
+ self.force_reannounce()
+ self.tracker_host = None
+
+ def set_tracker_status(self, status):
+ """Sets the tracker status.
+
+ Args:
+ status (str): The tracker status.
+
+ Emits:
+ TorrentTrackerStatusEvent upon tracker status change.
+
+ """
+
+ self.tracker_host = None
+
+ if self.tracker_status != status:
+ self.tracker_status = status
+ component.get('EventManager').emit(
+ TorrentTrackerStatusEvent(self.torrent_id, self.tracker_status)
+ )
+
+ def merge_trackers(self, torrent_info):
+ """Merges new trackers in torrent_info into torrent"""
+ log.info(
+ 'Adding any new trackers to torrent (%s) already in session...',
+ self.torrent_id,
+ )
+ if not torrent_info:
+ return
+ # Don't merge trackers if either torrent has private flag set.
+ if torrent_info.priv() or self.get_status(['private'])['private']:
+ log.info('Adding trackers aborted: Torrent has private flag set.')
+ else:
+ for tracker in torrent_info.trackers():
+ self.handle.add_tracker({'url': tracker.url, 'tier': tracker.tier})
+ # Update torrent.trackers from libtorrent handle.
+ self.set_trackers()
+
+ def update_state(self):
+ """Updates the state, based on libtorrent's torrent state"""
+ status = self.get_lt_status()
+ session_paused = component.get('Core').session.is_paused()
+ old_state = self.state
+ self.set_status_message()
+ status_error = status.errc.message() if status.errc.value() else ''
+
+ if self.forced_error:
+ self.state = 'Error'
+ self.set_status_message(self.forced_error.error_message)
+ elif status_error:
+ self.state = 'Error'
+ # auto-manage status will be reverted upon resuming.
+ self._set_handle_flags(
+ flag=lt.torrent_flags.auto_managed,
+ set_flag=False,
+ )
+ self.set_status_message(decode_bytes(status_error))
+ elif status.moving_storage:
+ self.state = 'Moving'
+ elif not session_paused and status.paused and status.auto_managed:
+ self.state = 'Queued'
+ elif session_paused or status.paused:
+ self.state = 'Paused'
+ else:
+ self.state = LT_TORRENT_STATE_MAP.get(str(status.state), str(status.state))
+
+ if self.state != old_state:
+ component.get('EventManager').emit(
+ TorrentStateChangedEvent(self.torrent_id, self.state)
+ )
+
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug(
+ 'State from lt was: %s | Session is paused: %s\nTorrent state set from "%s" to "%s" (%s)',
+ 'error' if status_error else status.state,
+ session_paused,
+ old_state,
+ self.state,
+ self.torrent_id,
+ )
+ if self.forced_error:
+ log.debug(
+ 'Torrent Error state message: %s', self.forced_error.error_message
+ )
+
+ def set_status_message(self, message=None):
+ """Sets the torrent status message.
+
+ Calling method without a message will reset the message to 'OK'.
+
+ Args:
+ message (str, optional): The status message.
+
+ """
+ if not message:
+ message = 'OK'
+ self.statusmsg = message
+
+ def force_error_state(self, message, restart_to_resume=True):
+ """Forces the torrent into an error state.
+
+ For setting an error state not covered by libtorrent.
+
+ Args:
+ message (str): The error status message.
+ restart_to_resume (bool, optional): Prevent resuming clearing the error, only restarting
+ session can resume.
+ """
+ status = self.get_lt_status()
+ self._set_handle_flags(
+ flag=lt.torrent_flags.auto_managed,
+ set_flag=False,
+ )
+ self.forced_error = TorrentError(message, status.paused, restart_to_resume)
+ if not status.paused:
+ self.handle.pause()
+ self.update_state()
+
+ def clear_forced_error_state(self, update_state=True):
+ if not self.forced_error:
+ return
+
+ if self.forced_error.restart_to_resume:
+ log.error('Restart deluge to clear this torrent error')
+
+ if not self.forced_error.was_paused and self.options['auto_managed']:
+ self._set_handle_flags(
+ flag=lt.torrent_flags.auto_managed,
+ set_flag=True,
+ )
+ self.forced_error = None
+ self.set_status_message('OK')
+ if update_state:
+ self.update_state()
+
+ def get_eta(self):
+ """Get the ETA for this torrent.
+
+ Returns:
+ int: The ETA in seconds.
+
+ """
+ status = self.status
+ eta = 0
+ if (
+ self.is_finished
+ and self.options['stop_at_ratio']
+ and status.upload_payload_rate
+ ):
+ # We're a seed, so calculate the time to the 'stop_share_ratio'
+ eta = (
+ int(status.all_time_download * self.options['stop_ratio'])
+ - status.all_time_upload
+ ) // status.upload_payload_rate
+ elif status.download_payload_rate:
+ left = status.total_wanted - status.total_wanted_done
+ if left > 0:
+ eta = left // status.download_payload_rate
+
+ # Limit to 1 year, avoid excessive values and prevent GTK int overflow.
+ return eta if eta < 31557600 else -1
+
+ def get_ratio(self):
+ """Get the ratio of upload/download for this torrent.
+
+ Returns:
+ float: The ratio or -1.0 (for infinity).
+
+ """
+ if self.status.total_done > 0:
+ return self.status.all_time_upload / self.status.total_done
+ else:
+ return -1.0
+
+ def get_files(self):
+ """Get the files this torrent contains.
+
+ Returns:
+ list of dict: The files.
+
+ """
+ if not self.has_metadata:
+ return []
+
+ files = self.torrent_info.files()
+ return convert_lt_files(files)
+
+ def get_orig_files(self):
+ """Get the original filenames of files in this torrent.
+
+ Returns:
+ list of dict: The files with original filenames.
+
+ """
+ if not self.has_metadata:
+ return []
+
+ files = self.torrent_info.orig_files()
+ return convert_lt_files(files)
+
+ def get_peers(self):
+ """Get the peers for this torrent.
+
+ A list of peers and various information about them.
+
+ Returns:
+ list of dict: The peers.
+
+ The format for the peer dict::
+
+ {
+ "client": str,
+ "country": str,
+ "down_speed": int,
+ "ip": str,
+ "progress": float,
+ "seed": bool,
+ "up_speed": int
+ }
+ """
+ ret = []
+ peers = self.handle.get_peer_info()
+
+ for peer in peers:
+ # We do not want to report peers that are half-connected
+ if peer.flags & peer.connecting or peer.flags & peer.handshake:
+ continue
+
+ try:
+ client = decode_bytes(peer.client)
+ except UnicodeDecodeError:
+ # libtorrent on Py3 can raise UnicodeDecodeError for peer_info.client
+ client = 'unknown'
+
+ try:
+ country = component.get('Core').geoip_instance.country_code_by_addr(
+ peer.ip[0]
+ )
+ except AttributeError:
+ country = ''
+ else:
+ try:
+ country = ''.join(
+ [char if char.isalpha() else ' ' for char in country]
+ )
+ except TypeError:
+ country = ''
+
+ ret.append(
+ {
+ 'client': client,
+ 'country': country,
+ 'down_speed': peer.payload_down_speed,
+ 'ip': f'{peer.ip[0]}:{peer.ip[1]}',
+ 'progress': peer.progress,
+ 'seed': peer.flags & peer.seed,
+ 'up_speed': peer.payload_up_speed,
+ }
+ )
+
+ return ret
+
+ def get_queue_position(self):
+ """Get the torrents queue position
+
+ Returns:
+ int: queue position
+ """
+ return self.handle.queue_position()
+
+ def get_file_priorities(self):
+ """Return the file priorities"""
+ if not self.handle.status().has_metadata:
+ return []
+
+ if not self.options['file_priorities']:
+ # Ensure file_priorities option is populated.
+ self.set_file_priorities([])
+
+ return self.options['file_priorities']
+
+ def get_file_progress(self):
+ """Calculates the file progress as a percentage.
+
+ Returns:
+ list of floats: The file progress (0.0 -> 1.0), empty list if n/a.
+ """
+ if not self.has_metadata:
+ return []
+
+ try:
+ files_progresses = zip(
+ self.handle.file_progress(), self.torrent_info.files()
+ )
+ except Exception:
+ # Handle libtorrent >=2.0.0,<=2.0.4 file_progress error
+ files_progresses = zip(iter(lambda: 0, 1), self.torrent_info.files())
+
+ return [
+ progress / _file.size if _file.size else 0.0
+ for progress, _file in files_progresses
+ ]
+
+ def get_tracker_host(self):
+ """Get the hostname of the currently connected tracker.
+
+ If no tracker is connected, it uses the 1st tracker.
+
+ Returns:
+ str: The tracker host
+ """
+ if self.tracker_host:
+ return self.tracker_host
+
+ tracker = self.status.current_tracker
+ if not tracker and self.trackers:
+ tracker = self.trackers[0]['url']
+
+ if tracker:
+ url = urlparse(tracker.replace('udp://', 'http://'))
+ if hasattr(url, 'hostname'):
+ host = url.hostname or 'DHT'
+ # Check if hostname is an IP address and just return it if that's the case
+ try:
+ socket.inet_aton(host)
+ except OSError:
+ pass
+ else:
+ # This is an IP address because an exception wasn't raised
+ return url.hostname
+
+ parts = host.split('.')
+ if len(parts) > 2:
+ if parts[-2] in ('co', 'com', 'net', 'org') or parts[-1] == 'uk':
+ host = '.'.join(parts[-3:])
+ else:
+ host = '.'.join(parts[-2:])
+ self.tracker_host = host
+ return host
+ return ''
+
+ def get_magnet_uri(self):
+ """Returns a magnet URI for this torrent"""
+ return lt.make_magnet_uri(self.handle)
+
+ def get_name(self):
+ """The name of the torrent (distinct from the filenames).
+
+ Note:
+ Can be manually set in options through `name` key. If the key is
+ reset to empty string "" it will return the original torrent name.
+
+ Returns:
+ str: the name of the torrent.
+
+ """
+ if self.options['name']:
+ return self.options['name']
+
+ if self.has_metadata:
+ # Use the top-level folder as torrent name.
+ filename = decode_bytes(self.torrent_info.files().file_path(0))
+ name = filename.replace('\\', '/', 1).split('/', 1)[0]
+ else:
+ name = decode_bytes(self.handle.status().name)
+
+ if not name:
+ name = self.torrent_id
+
+ return name
+
+ def get_progress(self):
+ """The progress of this torrent's current task.
+
+ Returns:
+ float: The progress percentage (0 to 100).
+
+ """
+
+ def get_size(files, path):
+ """Returns total size of 'files' currently located in 'path'"""
+ files = [os.path.join(path, f) for f in files]
+ return sum(os.stat(f).st_size for f in files if os.path.exists(f))
+
+ if self.state == 'Error':
+ progress = 100.0
+ elif self.state == 'Moving':
+ # Check if torrent has downloaded any data yet.
+ if self.status.total_done:
+ torrent_files = [f['path'] for f in self.get_files()]
+ dest_path_size = get_size(torrent_files, self.moving_storage_dest_path)
+ progress = dest_path_size / self.status.total_done * 100
+ else:
+ progress = 100.0
+ else:
+ progress = self.status.progress * 100
+
+ return progress
+
+ def get_time_since_transfer(self):
+ """The time since either upload/download from peers"""
+ time_since = (self.status.time_since_download, self.status.time_since_upload)
+ try:
+ return min(x for x in time_since if x != -1)
+ except ValueError:
+ return -1
+
+ def get_status(self, keys, diff=False, update=False, all_keys=False):
+ """Returns the status of the torrent based on the keys provided
+
+ Args:
+ keys (list of str): the keys to get the status on
+ diff (bool): Will return a diff of the changes since the last
+ call to get_status based on the session_id
+ update (bool): If True the status will be updated from libtorrent
+ if False, the cached values will be returned
+ all_keys (bool): If True return all keys while ignoring the keys param
+ if False, return only the requested keys
+
+ Returns:
+ dict: a dictionary of the status keys and their values
+ """
+ if update:
+ self.get_lt_status()
+
+ if all_keys:
+ keys = list(self.status_funcs)
+
+ status_dict = {}
+
+ for key in keys:
+ status_dict[key] = self.status_funcs[key]()
+
+ if diff:
+ session_id = self.rpcserver.get_session_id()
+ if session_id in self.prev_status:
+ # We have a previous status dict, so lets make a diff
+ status_diff = {}
+ for key, value in status_dict.items():
+ if key in self.prev_status[session_id]:
+ if value != self.prev_status[session_id][key]:
+ status_diff[key] = value
+ else:
+ status_diff[key] = value
+
+ self.prev_status[session_id] = status_dict
+ return status_diff
+
+ self.prev_status[session_id] = status_dict
+ return status_dict
+
+ return status_dict
+
+ def get_lt_status(self) -> 'lt.torrent_status':
+ """Get the torrent status fresh, not from cache.
+
+ This should be used when a guaranteed fresh status is needed rather than
+ `torrent.handle.status()` because it will update the cache as well.
+ """
+ self.status = self.handle.status()
+ return self.status
+
+ @property
+ def status(self) -> 'lt.torrent_status':
+ """Cached copy of the libtorrent status for this torrent.
+
+ If it has not been updated within the last five seconds, it will be
+ automatically refreshed.
+ """
+ if self._status_last_update < (time.time() - 5):
+ self.status = self.handle.status()
+ return self._status
+
+ @status.setter
+ def status(self, status: 'lt.torrent_status') -> None:
+ """Updates the cached status.
+
+ Args:
+ status: a libtorrent torrent status
+ """
+ self._status = status
+ self._status_last_update = time.time()
+
+ def _create_status_funcs(self):
+ """Creates the functions for getting torrent status"""
+ self.status_funcs = {
+ 'active_time': lambda: self.status.active_time,
+ 'seeding_time': lambda: self.status.seeding_time,
+ 'finished_time': lambda: self.status.finished_time,
+ 'all_time_download': lambda: self.status.all_time_download,
+ 'storage_mode': lambda: self.status.storage_mode.name.split('_')[
+ 2
+ ], # sparse or allocate
+ 'distributed_copies': lambda: max(0.0, self.status.distributed_copies),
+ 'download_payload_rate': lambda: self.status.download_payload_rate,
+ 'file_priorities': self.get_file_priorities,
+ 'hash': lambda: self.torrent_id,
+ 'auto_managed': lambda: self.options['auto_managed'],
+ 'is_auto_managed': lambda: self.options['auto_managed'],
+ 'is_finished': lambda: self.is_finished,
+ 'max_connections': lambda: self.options['max_connections'],
+ 'max_download_speed': lambda: self.options['max_download_speed'],
+ 'max_upload_slots': lambda: self.options['max_upload_slots'],
+ 'max_upload_speed': lambda: self.options['max_upload_speed'],
+ 'message': lambda: self.statusmsg,
+ 'move_on_completed_path': lambda: self.options[
+ 'move_completed_path'
+ ], # Deprecated: move_completed_path
+ 'move_on_completed': lambda: self.options[
+ 'move_completed'
+ ], # Deprecated: Use move_completed
+ 'move_completed_path': lambda: self.options['move_completed_path'],
+ 'move_completed': lambda: self.options['move_completed'],
+ 'next_announce': lambda: self.status.next_announce.seconds,
+ 'num_peers': lambda: self.status.num_peers - self.status.num_seeds,
+ 'num_seeds': lambda: self.status.num_seeds,
+ 'owner': lambda: self.options['owner'],
+ 'paused': lambda: self.status.paused,
+ 'prioritize_first_last': lambda: self.options[
+ 'prioritize_first_last_pieces'
+ ],
+ # Deprecated: Use prioritize_first_last_pieces
+ 'prioritize_first_last_pieces': lambda: self.options[
+ 'prioritize_first_last_pieces'
+ ],
+ 'sequential_download': lambda: self.options['sequential_download'],
+ 'progress': self.get_progress,
+ 'shared': lambda: self.options['shared'],
+ 'remove_at_ratio': lambda: self.options['remove_at_ratio'],
+ 'save_path': lambda: self.options[
+ 'download_location'
+ ], # Deprecated: Use download_location
+ 'download_location': lambda: self.options['download_location'],
+ 'seeds_peers_ratio': lambda: -1.0
+ if self.status.num_incomplete == 0
+ else ( # Use -1.0 to signify infinity
+ self.status.num_complete / self.status.num_incomplete
+ ),
+ 'seed_rank': lambda: self.status.seed_rank,
+ 'state': lambda: self.state,
+ 'stop_at_ratio': lambda: self.options['stop_at_ratio'],
+ 'stop_ratio': lambda: self.options['stop_ratio'],
+ 'time_added': lambda: self.status.added_time,
+ 'total_done': lambda: self.status.total_done,
+ 'total_payload_download': lambda: self.status.total_payload_download,
+ 'total_payload_upload': lambda: self.status.total_payload_upload,
+ 'total_peers': lambda: self.status.num_incomplete,
+ 'total_seeds': lambda: self.status.num_complete,
+ 'total_uploaded': lambda: self.status.all_time_upload,
+ 'total_wanted': lambda: self.status.total_wanted,
+ 'total_remaining': lambda: self.status.total_wanted
+ - self.status.total_wanted_done,
+ 'tracker': lambda: self.status.current_tracker,
+ 'tracker_host': self.get_tracker_host,
+ 'trackers': lambda: self.trackers,
+ 'tracker_status': lambda: self.tracker_status,
+ 'upload_payload_rate': lambda: self.status.upload_payload_rate,
+ 'comment': lambda: decode_bytes(self.torrent_info.comment())
+ if self.has_metadata
+ else '',
+ 'creator': lambda: decode_bytes(self.torrent_info.creator())
+ if self.has_metadata
+ else '',
+ 'num_files': lambda: self.torrent_info.num_files()
+ if self.has_metadata
+ else 0,
+ 'num_pieces': lambda: self.torrent_info.num_pieces()
+ if self.has_metadata
+ else 0,
+ 'piece_length': lambda: self.torrent_info.piece_length()
+ if self.has_metadata
+ else 0,
+ 'private': lambda: self.torrent_info.priv() if self.has_metadata else False,
+ 'total_size': lambda: self.torrent_info.total_size()
+ if self.has_metadata
+ else 0,
+ 'eta': self.get_eta,
+ 'file_progress': self.get_file_progress,
+ 'files': self.get_files,
+ 'orig_files': self.get_orig_files,
+ 'is_seed': lambda: self.status.is_seeding,
+ 'peers': self.get_peers,
+ 'queue': lambda: self.status.queue_position,
+ 'ratio': self.get_ratio,
+ 'completed_time': lambda: self.status.completed_time,
+ 'last_seen_complete': lambda: self.status.last_seen_complete,
+ 'name': self.get_name,
+ 'pieces': self._get_pieces_info,
+ 'seed_mode': lambda: self.status.seed_mode,
+ 'super_seeding': lambda: self.status.super_seeding,
+ 'time_since_download': lambda: self.status.time_since_download,
+ 'time_since_upload': lambda: self.status.time_since_upload,
+ 'time_since_transfer': self.get_time_since_transfer,
+ }
+
+ def pause(self):
+ """Pause this torrent.
+
+ Returns:
+ bool: True is successful, otherwise False.
+
+ """
+ # Turn off auto-management so the torrent will not be unpaused by lt queueing
+ self._set_handle_flags(
+ flag=lt.torrent_flags.auto_managed,
+ set_flag=False,
+ )
+ if self.state == 'Error':
+ log.debug('Unable to pause torrent while in Error state')
+ elif self.status.paused:
+ # This torrent was probably paused due to being auto managed by lt
+ # Since we turned auto_managed off, we should update the state which should
+ # show it as 'Paused'. We need to emit a torrent_paused signal because
+ # the torrent_paused alert from libtorrent will not be generated.
+ self.update_state()
+ component.get('EventManager').emit(
+ TorrentStateChangedEvent(self.torrent_id, 'Paused')
+ )
+ else:
+ try:
+ self.handle.pause()
+ except RuntimeError as ex:
+ log.debug('Unable to pause torrent: %s', ex)
+
+ def resume(self):
+ """Resumes this torrent."""
+ if self.status.paused and self.status.auto_managed:
+ log.debug('Resume not possible for auto-managed torrent!')
+ elif self.forced_error and self.forced_error.was_paused:
+ log.debug(
+ 'Resume skipped for forced_error torrent as it was originally paused.'
+ )
+ elif (
+ self.status.is_finished
+ and self.options['stop_at_ratio']
+ and self.get_ratio() >= self.options['stop_ratio']
+ ):
+ log.debug('Resume skipped for torrent as it has reached "stop_seed_ratio".')
+ else:
+ # Check if torrent was originally being auto-managed.
+ if self.options['auto_managed']:
+ self._set_handle_flags(
+ flag=lt.torrent_flags.auto_managed,
+ set_flag=True,
+ )
+ try:
+ self.handle.resume()
+ except RuntimeError as ex:
+ log.debug('Unable to resume torrent: %s', ex)
+
+ # Clear torrent error state.
+ if self.forced_error and not self.forced_error.restart_to_resume:
+ self.clear_forced_error_state()
+ elif self.state == 'Error' and not self.forced_error:
+ self.handle.clear_error()
+
+ def connect_peer(self, peer_ip, peer_port):
+ """Manually add a peer to the torrent
+
+ Args:
+ peer_ip (str) : Peer IP Address
+ peer_port (int): Peer Port
+
+ Returns:
+ bool: True is successful, otherwise False
+ """
+ try:
+ self.handle.connect_peer((peer_ip, int(peer_port)), 0)
+ except (RuntimeError, ValueError) as ex:
+ log.debug('Unable to connect to peer: %s', ex)
+ return False
+ return True
+
+ def move_storage(self, dest):
+ """Move a torrent's storage location
+
+ Args:
+ dest (str): The destination folder for the torrent data
+
+ Returns:
+ bool: True if successful, otherwise False
+
+ """
+ dest = decode_bytes(dest)
+
+ if not os.path.exists(dest):
+ try:
+ os.makedirs(dest)
+ except OSError as ex:
+ log.error(
+ 'Could not move storage for torrent %s since %s does '
+ 'not exist and could not create the directory: %s',
+ self.torrent_id,
+ dest,
+ ex,
+ )
+ return False
+
+ try:
+ # lt needs utf8 byte-string. Otherwise if wstrings enabled, unicode string.
+ # Keyword argument flags=2 (dont_replace) dont overwrite target files but delete source.
+ try:
+ self.handle.move_storage(dest.encode('utf8'), flags=2)
+ except TypeError:
+ self.handle.move_storage(dest, flags=2)
+ except RuntimeError as ex:
+ log.error('Error calling libtorrent move_storage: %s', ex)
+ return False
+ self.moving_storage_dest_path = dest
+ self.update_state()
+ return True
+
+ def save_resume_data(self, flush_disk_cache=False):
+ """Signals libtorrent to build resume data for this torrent.
+
+ Args:
+ flush_disk_cache (bool): Avoids potential issue with file timestamps
+ and is only needed when stopping the session.
+
+ Returns:
+ None: The response with resume data is returned in a libtorrent save_resume_data_alert.
+
+ """
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Requesting save_resume_data for torrent: %s', self.torrent_id)
+ flags = lt.save_resume_flags_t.flush_disk_cache if flush_disk_cache else 0
+ # Don't generate fastresume data if torrent is in a Deluge Error state.
+ if self.forced_error:
+ component.get('TorrentManager').waiting_on_resume_data[
+ self.torrent_id
+ ].errback(UserWarning('Skipped creating resume_data while in Error state'))
+ else:
+ self.handle.save_resume_data(flags)
+
+ def write_torrentfile(self, filedump=None):
+ """Writes the torrent file to the state dir and optional 'copy of' dir.
+
+ Args:
+ filedump (str, optional): bencoded filedump of a torrent file.
+
+ """
+
+ def write_file(filepath, filedump):
+ """Write out the torrent file"""
+ log.debug('Writing torrent file to: %s', filepath)
+ try:
+ with open(filepath, 'wb') as save_file:
+ save_file.write(filedump)
+ except OSError as ex:
+ log.error('Unable to save torrent file to: %s', ex)
+
+ filepath = os.path.join(get_config_dir(), 'state', self.torrent_id + '.torrent')
+
+ if filedump is None:
+ lt_ct = lt.create_torrent(self.torrent_info)
+ filedump = lt.bencode(lt_ct.generate())
+
+ write_file(filepath, filedump)
+
+ # If the user has requested a copy of the torrent be saved elsewhere we need to do that.
+ if self.config['copy_torrent_file']:
+ if not self.filename:
+ self.filename = self.get_name() + '.torrent'
+ filepath = os.path.join(self.config['torrentfiles_location'], self.filename)
+ write_file(filepath, filedump)
+
+ def delete_torrentfile(self, delete_copies=False):
+ """Deletes the .torrent file in the state directory in config"""
+ torrent_files = [
+ os.path.join(get_config_dir(), 'state', self.torrent_id + '.torrent')
+ ]
+ if delete_copies and self.filename:
+ torrent_files.append(
+ os.path.join(self.config['torrentfiles_location'], self.filename)
+ )
+
+ for torrent_file in torrent_files:
+ log.debug('Deleting torrent file: %s', torrent_file)
+ try:
+ os.remove(torrent_file)
+ except OSError as ex:
+ log.warning('Unable to delete the torrent file: %s', ex)
+
+ def force_reannounce(self):
+ """Force a tracker reannounce"""
+ try:
+ self.handle.force_reannounce()
+ except RuntimeError as ex:
+ log.debug('Unable to force reannounce: %s', ex)
+ return False
+ return True
+
+ def scrape_tracker(self):
+ """Scrape the tracker
+
+ A scrape request queries the tracker for statistics such as total
+ number of incomplete peers, complete peers, number of downloads etc.
+ """
+ try:
+ self.handle.scrape_tracker()
+ except RuntimeError as ex:
+ log.debug('Unable to scrape tracker: %s', ex)
+ return False
+ return True
+
+ def force_recheck(self):
+ """Forces a recheck of the torrent's pieces"""
+ if self.forced_error:
+ self.forcing_recheck_paused = self.forced_error.was_paused
+ self.clear_forced_error_state(update_state=False)
+ else:
+ self.forcing_recheck_paused = self.status.paused
+
+ try:
+ self.handle.force_recheck()
+ self.handle.resume()
+ self.forcing_recheck = True
+ except RuntimeError as ex:
+ log.debug('Unable to force recheck: %s', ex)
+ self.forcing_recheck = False
+ return self.forcing_recheck
+
+ def rename_files(self, filenames):
+ """Renames files in the torrent.
+
+ Args:
+ filenames (list): A list of (index, filename) pairs.
+ """
+ for index, filename in filenames:
+ # Make sure filename is a sanitized unicode string.
+ filename = sanitize_filepath(decode_bytes(filename))
+ # lt needs utf8 byte-string. Otherwise if wstrings enabled, unicode string.
+ try:
+ self.handle.rename_file(index, filename.encode('utf8'))
+ except (UnicodeDecodeError, TypeError):
+ self.handle.rename_file(index, filename)
+
+ def rename_folder(self, folder, new_folder):
+ """Renames a folder within a torrent.
+
+ This basically does a file rename on all of the folders children.
+
+ Args:
+ folder (str): The original folder name
+ new_folder (str): The new folder name
+
+ Returns:
+ twisted.internet.defer.Deferred: A deferred which fires when the rename is complete
+ """
+ log.debug('Attempting to rename folder: %s to %s', folder, new_folder)
+
+ # Empty string means remove the dir and move its content to the parent
+ if len(new_folder) > 0:
+ new_folder = sanitize_filepath(new_folder, folder=True)
+
+ def on_file_rename_complete(dummy_result, wait_dict, index):
+ """File rename complete"""
+ wait_dict.pop(index, None)
+
+ wait_on_folder = {}
+ self.waiting_on_folder_rename.append(wait_on_folder)
+ for _file in self.get_files():
+ if _file['path'].startswith(folder):
+ # Keep track of filerenames we're waiting on
+ wait_on_folder[_file['index']] = Deferred().addBoth(
+ on_file_rename_complete, wait_on_folder, _file['index']
+ )
+ new_path = _file['path'].replace(folder, new_folder, 1)
+ try:
+ self.handle.rename_file(_file['index'], new_path.encode('utf8'))
+ except (UnicodeDecodeError, TypeError):
+ self.handle.rename_file(_file['index'], new_path)
+
+ def on_folder_rename_complete(dummy_result, torrent, folder, new_folder):
+ """Folder rename complete"""
+ component.get('EventManager').emit(
+ TorrentFolderRenamedEvent(torrent.torrent_id, folder, new_folder)
+ )
+ # Empty folders are removed after libtorrent folder renames
+ self.remove_empty_folders(folder)
+ torrent.waiting_on_folder_rename = [
+ _dir for _dir in torrent.waiting_on_folder_rename if _dir
+ ]
+ component.get('TorrentManager').save_resume_data((self.torrent_id,))
+
+ d = DeferredList(list(wait_on_folder.values()))
+ d.addBoth(on_folder_rename_complete, self, folder, new_folder)
+ return d
+
+ def remove_empty_folders(self, folder):
+ """Recursively removes folders but only if they are empty.
+
+ This cleans up after libtorrent folder renames.
+
+ Args:
+ folder (str): The folder to recursively check
+ """
+ # Removes leading slashes that can cause join to ignore download_location
+ download_location = self.options['download_location']
+ folder_full_path = os.path.normpath(
+ os.path.join(download_location, folder.lstrip('\\/'))
+ )
+
+ try:
+ if not os.listdir(folder_full_path):
+ os.removedirs(folder_full_path)
+ log.debug('Removed Empty Folder %s', folder_full_path)
+ else:
+ for root, dirs, dummy_files in os.walk(folder_full_path, topdown=False):
+ for name in dirs:
+ try:
+ os.removedirs(os.path.join(root, name))
+ log.debug(
+ 'Removed Empty Folder %s', os.path.join(root, name)
+ )
+ except OSError as ex:
+ log.debug(ex)
+
+ except OSError as ex:
+ log.debug('Cannot Remove Folder: %s', ex)
+
+ def cleanup_prev_status(self):
+ """Checks the validity of the keys in the prev_status dict.
+
+ If the key is no longer valid, the dict will be deleted.
+ """
+ # Dict will be modified so iterate over generated list
+ for key in list(self.prev_status):
+ if not self.rpcserver.is_session_valid(key):
+ del self.prev_status[key]
+
+ def _get_pieces_info(self):
+ """Get the pieces for this torrent."""
+ if not self.has_metadata or self.status.is_seeding:
+ pieces = None
+ else:
+ pieces = []
+ for piece, avail_piece in zip(
+ self.status.pieces, self.handle.piece_availability()
+ ):
+ if piece:
+ pieces.append(3) # Completed.
+ elif avail_piece:
+ pieces.append(
+ 1
+ ) # Available, just not downloaded nor being downloaded.
+ else:
+ pieces.append(
+ 0
+ ) # Missing, no known peer with piece, or not asked for yet.
+
+ for peer_info in self.handle.get_peer_info():
+ if peer_info.downloading_piece_index >= 0:
+ pieces[
+ peer_info.downloading_piece_index
+ ] = 2 # Being downloaded from peer.
+
+ return pieces
diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py
new file mode 100644
index 0000000..c43a7a2
--- /dev/null
+++ b/deluge/core/torrentmanager.py
@@ -0,0 +1,1700 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""TorrentManager handles Torrent objects"""
+import datetime
+import logging
+import operator
+import os
+import pickle
+import time
+from base64 import b64encode
+from tempfile import gettempdir
+from typing import Dict, List, NamedTuple, Tuple
+
+from twisted.internet import defer, reactor, threads
+from twisted.internet.defer import Deferred, DeferredList
+from twisted.internet.task import LoopingCall
+
+import deluge.component as component
+from deluge._libtorrent import LT_VERSION, lt
+from deluge.common import (
+ VersionSplit,
+ archive_files,
+ decode_bytes,
+ get_magnet_info,
+ is_magnet,
+)
+from deluge.configmanager import ConfigManager, get_config_dir
+from deluge.core.authmanager import AUTH_LEVEL_ADMIN
+from deluge.core.torrent import Torrent, TorrentOptions, sanitize_filepath
+from deluge.decorators import maybe_coroutine
+from deluge.error import AddTorrentError, InvalidTorrentError
+from deluge.event import (
+ ExternalIPEvent,
+ PreTorrentRemovedEvent,
+ SessionStartedEvent,
+ TorrentAddedEvent,
+ TorrentFileCompletedEvent,
+ TorrentFileRenamedEvent,
+ TorrentFinishedEvent,
+ TorrentRemovedEvent,
+ TorrentResumedEvent,
+)
+
+log = logging.getLogger(__name__)
+
+LT_DEFAULT_ADD_TORRENT_FLAGS = (
+ lt.torrent_flags.paused
+ | lt.torrent_flags.auto_managed
+ | lt.torrent_flags.update_subscribe
+ | lt.torrent_flags.apply_ip_filter
+)
+
+
+class PrefetchQueueItem(NamedTuple):
+ alert_deferred: Deferred
+ result_queue: List[Deferred]
+
+
+class TorrentState: # pylint: disable=old-style-class
+ """Create a torrent state.
+
+ Note:
+ This must be old style class to avoid breaking torrent.state file.
+
+ """
+
+ def __init__(
+ self,
+ torrent_id=None,
+ filename=None,
+ trackers=None,
+ storage_mode='sparse',
+ paused=False,
+ save_path=None,
+ max_connections=-1,
+ max_upload_slots=-1,
+ max_upload_speed=-1.0,
+ max_download_speed=-1.0,
+ prioritize_first_last=False,
+ sequential_download=False,
+ file_priorities=None,
+ queue=None,
+ auto_managed=True,
+ is_finished=False,
+ stop_ratio=2.00,
+ stop_at_ratio=False,
+ remove_at_ratio=False,
+ move_completed=False,
+ move_completed_path=None,
+ magnet=None,
+ owner=None,
+ shared=False,
+ super_seeding=False,
+ name=None,
+ ):
+ # Build the class attribute list from args
+ for key, value in locals().items():
+ if key == 'self':
+ continue
+ setattr(self, key, value)
+
+ def __eq__(self, other):
+ return isinstance(other, TorrentState) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
+
+
+class TorrentManagerState: # pylint: disable=old-style-class
+ """TorrentManagerState holds a list of TorrentState objects.
+
+ Note:
+ This must be old style class to avoid breaking torrent.state file.
+
+ """
+
+ def __init__(self):
+ self.torrents = []
+
+ def __eq__(self, other):
+ return (
+ isinstance(other, TorrentManagerState) and self.torrents == other.torrents
+ )
+
+ def __ne__(self, other):
+ return not self == other
+
+
+class TorrentManager(component.Component):
+ """TorrentManager contains a list of torrents in the current libtorrent session.
+
+ This object is also responsible for saving the state of the session for use on restart.
+
+ """
+
+ # This is used in the test to mock out timeouts
+ clock = reactor
+
+ def __init__(self):
+ component.Component.__init__(
+ self,
+ 'TorrentManager',
+ interval=5,
+ depend=['CorePluginManager', 'AlertManager'],
+ )
+ log.debug('TorrentManager init...')
+ # Set the libtorrent session
+ self.session = component.get('Core').session
+ # Set the alertmanager
+ self.alerts = component.get('AlertManager')
+ # Get the core config
+ self.config = ConfigManager('core.conf')
+
+ # Make sure the state folder has been created
+ self.state_dir = os.path.join(get_config_dir(), 'state')
+ if not os.path.exists(self.state_dir):
+ os.makedirs(self.state_dir)
+ self.temp_file = os.path.join(self.state_dir, '.safe_state_check')
+
+ # Create the torrents dict { torrent_id: Torrent }
+ self.torrents = {}
+ self.queued_torrents = set()
+ self.is_saving_state = False
+ self.save_resume_data_file_lock = defer.DeferredLock()
+ self.torrents_loading = {}
+ self.prefetching_metadata: Dict[str, PrefetchQueueItem] = {}
+
+ # This is a map of torrent_ids to Deferreds used to track needed resume data.
+ # The Deferreds will be completed when resume data has been saved.
+ self.waiting_on_resume_data = {}
+
+ # Keep track of torrents finished but moving storage
+ self.waiting_on_finish_moving = []
+
+ # Keeps track of resume data
+ self.resume_data = {}
+
+ self.torrents_status_requests = []
+ self.status_dict = {}
+ self.last_state_update_alert_ts = 0
+
+ # Keep the previous saved state
+ self.prev_saved_state = None
+
+ # Register set functions
+ set_config_keys = [
+ 'max_connections_per_torrent',
+ 'max_upload_slots_per_torrent',
+ 'max_upload_speed_per_torrent',
+ 'max_download_speed_per_torrent',
+ ]
+
+ for config_key in set_config_keys:
+ on_set_func = getattr(self, ''.join(['on_set_', config_key]))
+ self.config.register_set_function(config_key, on_set_func)
+
+ # Register alert functions
+ alert_handles = [
+ 'external_ip',
+ 'performance',
+ 'add_torrent',
+ 'metadata_received',
+ 'torrent_finished',
+ 'torrent_paused',
+ 'torrent_checked',
+ 'torrent_resumed',
+ 'tracker_reply',
+ 'tracker_announce',
+ 'tracker_warning',
+ 'tracker_error',
+ 'file_renamed',
+ 'file_error',
+ 'file_completed',
+ 'storage_moved',
+ 'storage_moved_failed',
+ 'state_update',
+ 'state_changed',
+ 'save_resume_data',
+ 'save_resume_data_failed',
+ 'fastresume_rejected',
+ ]
+
+ for alert_handle in alert_handles:
+ on_alert_func = getattr(self, ''.join(['on_alert_', alert_handle]))
+ self.alerts.register_handler(alert_handle, on_alert_func)
+
+ # Define timers
+ self.save_state_timer = LoopingCall(self.save_state)
+ self.save_resume_data_timer = LoopingCall(self.save_resume_data)
+ self.prev_status_cleanup_loop = LoopingCall(self.cleanup_torrents_prev_status)
+
+ def start(self):
+ # Check for old temp file to verify safe shutdown
+ if os.path.isfile(self.temp_file):
+ self.archive_state('Bad shutdown detected so archiving state files')
+ os.remove(self.temp_file)
+
+ with open(self.temp_file, 'a'):
+ os.utime(self.temp_file, None)
+
+ # Try to load the state from file
+ self.load_state()
+
+ # Save the state periodically
+ self.save_state_timer.start(200, False)
+ self.save_resume_data_timer.start(190, False)
+ self.prev_status_cleanup_loop.start(10)
+
+ @maybe_coroutine
+ async def stop(self):
+ # Stop timers
+ if self.save_state_timer.running:
+ self.save_state_timer.stop()
+
+ if self.save_resume_data_timer.running:
+ self.save_resume_data_timer.stop()
+
+ if self.prev_status_cleanup_loop.running:
+ self.prev_status_cleanup_loop.stop()
+
+ # Save state on shutdown
+ await self.save_state()
+
+ self.session.pause()
+
+ result = await self.save_resume_data(flush_disk_cache=True)
+ # Remove the temp_file to signify successfully saved state
+ if result and os.path.isfile(self.temp_file):
+ os.remove(self.temp_file)
+
+ def update(self):
+ for torrent_id, torrent in self.torrents.items():
+ # XXX: Should the state check be those that _can_ be stopped at ratio
+ if torrent.options['stop_at_ratio'] and torrent.state not in (
+ 'Checking',
+ 'Allocating',
+ 'Paused',
+ 'Queued',
+ ):
+ if (
+ torrent.get_ratio() >= torrent.options['stop_ratio']
+ and torrent.is_finished
+ ):
+ if torrent.options['remove_at_ratio']:
+ self.remove(torrent_id)
+ break
+
+ torrent.pause()
+
+ def __getitem__(self, torrent_id):
+ """Return the Torrent with torrent_id.
+
+ Args:
+ torrent_id (str): The torrent_id.
+
+ Returns:
+ Torrent: A torrent object.
+
+ """
+ return self.torrents[torrent_id]
+
+ def get_torrent_list(self):
+ """Creates a list of torrent_ids, owned by current user and any marked shared.
+
+ Returns:
+ list: A list of torrent_ids.
+
+ """
+ torrent_ids = list(self.torrents)
+ if component.get('RPCServer').get_session_auth_level() == AUTH_LEVEL_ADMIN:
+ return torrent_ids
+
+ current_user = component.get('RPCServer').get_session_user()
+ for torrent_id in torrent_ids[:]:
+ torrent_status = self.torrents[torrent_id].get_status(['owner', 'shared'])
+ if torrent_status['owner'] != current_user and not torrent_status['shared']:
+ torrent_ids.pop(torrent_ids.index(torrent_id))
+ return torrent_ids
+
+ def get_torrent_info_from_file(self, filepath):
+ """Retrieves torrent_info from the file specified.
+
+ Args:
+ filepath (str): The filepath to extract torrent info from.
+
+ Returns:
+ lt.torrent_info: A libtorrent torrent_info dict or None if invalid file or data.
+
+ """
+ # Get the torrent data from the torrent file
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Attempting to extract torrent_info from %s', filepath)
+ try:
+ torrent_info = lt.torrent_info(filepath)
+ except RuntimeError as ex:
+ log.warning('Unable to open torrent file %s: %s', filepath, ex)
+ else:
+ return torrent_info
+
+ @maybe_coroutine
+ async def prefetch_metadata(self, magnet: str, timeout: int) -> Tuple[str, bytes]:
+ """Download the metadata for a magnet URI.
+
+ Args:
+ magnet: A magnet URI to download the metadata for.
+ timeout: Number of seconds to wait before canceling.
+
+ Returns:
+ A tuple of (torrent_id, metadata)
+
+ """
+
+ torrent_id = get_magnet_info(magnet)['info_hash']
+ if torrent_id in self.prefetching_metadata:
+ d = Deferred()
+ self.prefetching_metadata[torrent_id].result_queue.append(d)
+ return await d
+
+ add_torrent_params = lt.parse_magnet_uri(magnet)
+ add_torrent_params.save_path = gettempdir()
+ add_torrent_params.flags = (
+ (
+ LT_DEFAULT_ADD_TORRENT_FLAGS
+ | lt.torrent_flags.duplicate_is_error
+ | lt.torrent_flags.upload_mode
+ )
+ ^ lt.torrent_flags.auto_managed
+ ^ lt.torrent_flags.paused
+ )
+
+ torrent_handle = self.session.add_torrent(add_torrent_params)
+
+ d = Deferred()
+ # Cancel the defer if timeout reached.
+ d.addTimeout(timeout, self.clock)
+ self.prefetching_metadata[torrent_id] = PrefetchQueueItem(d, [])
+
+ try:
+ torrent_info = await d
+ except (defer.TimeoutError, defer.CancelledError):
+ log.debug(f'Prefetching metadata for {torrent_id} timed out or cancelled.')
+ metadata = b''
+ else:
+ log.debug('prefetch metadata received')
+ if VersionSplit(LT_VERSION) < VersionSplit('2.0.0.0'):
+ metadata = torrent_info.metadata()
+ else:
+ metadata = torrent_info.info_section()
+
+ log.debug('remove prefetch magnet from session')
+ result_queue = self.prefetching_metadata.pop(torrent_id).result_queue
+ self.session.remove_torrent(torrent_handle, 1)
+ result = torrent_id, b64encode(metadata)
+
+ for d in result_queue:
+ d.callback(result)
+ return result
+
+ def _build_torrent_options(self, options):
+ """Load default options and update if needed."""
+ _options = TorrentOptions()
+ if options:
+ _options.update(options)
+ options = _options
+
+ if not options['owner']:
+ options['owner'] = component.get('RPCServer').get_session_user()
+ if not component.get('AuthManager').has_account(options['owner']):
+ options['owner'] = 'localclient'
+
+ return options
+
+ def _build_torrent_params(
+ self, torrent_info=None, magnet=None, options=None, resume_data=None
+ ):
+ """Create the add_torrent_params dict for adding torrent to libtorrent."""
+ add_torrent_params = {}
+ if torrent_info:
+ add_torrent_params['ti'] = torrent_info
+ name = torrent_info.name()
+ if not name:
+ name = (
+ torrent_info.file_at(0).path.replace('\\', '/', 1).split('/', 1)[0]
+ )
+ add_torrent_params['name'] = name
+ torrent_id = str(torrent_info.info_hash())
+ elif magnet:
+ magnet_info = get_magnet_info(magnet)
+ if magnet_info:
+ add_torrent_params['name'] = magnet_info['name']
+ add_torrent_params['trackers'] = list(magnet_info['trackers'])
+ torrent_id = magnet_info['info_hash']
+ add_torrent_params['info_hash'] = bytes(bytearray.fromhex(torrent_id))
+ else:
+ raise AddTorrentError(
+ 'Unable to add magnet, invalid magnet info: %s' % magnet
+ )
+
+ # Check for existing torrent in session.
+ if torrent_id in self.get_torrent_list():
+ # Attempt merge trackers before returning.
+ self.torrents[torrent_id].merge_trackers(torrent_info)
+ raise AddTorrentError('Torrent already in session (%s).' % torrent_id)
+ elif torrent_id in self.torrents_loading:
+ raise AddTorrentError('Torrent already being added (%s).' % torrent_id)
+ elif torrent_id in self.prefetching_metadata:
+ # Cancel and remove metadata fetching torrent.
+ self.prefetching_metadata[torrent_id].alert_deferred.cancel()
+
+ # Check for renamed files and if so, rename them in the torrent_info before adding.
+ if options['mapped_files'] and torrent_info:
+ for index, fname in options['mapped_files'].items():
+ fname = sanitize_filepath(decode_bytes(fname))
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('renaming file index %s to %s', index, fname)
+ try:
+ torrent_info.rename_file(index, fname.encode('utf8'))
+ except TypeError:
+ torrent_info.rename_file(index, fname)
+ add_torrent_params['ti'] = torrent_info
+
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('options: %s', options)
+
+ # Fill in the rest of the add_torrent_params dictionary.
+ add_torrent_params['save_path'] = options['download_location'].encode('utf8')
+ if options['name']:
+ add_torrent_params['name'] = options['name']
+ if options['pre_allocate_storage']:
+ add_torrent_params['storage_mode'] = lt.storage_mode_t.storage_mode_allocate
+ if resume_data:
+ add_torrent_params['resume_data'] = resume_data
+
+ # Set flags: enable duplicate_is_error & override_resume_data, disable auto_managed.
+ add_torrent_params['flags'] = (
+ LT_DEFAULT_ADD_TORRENT_FLAGS | lt.torrent_flags.duplicate_is_error
+ ) ^ lt.torrent_flags.auto_managed
+ if options['seed_mode']:
+ add_torrent_params['flags'] |= lt.torrent_flags.seed_mode
+ if options['super_seeding']:
+ add_torrent_params['flags'] |= lt.torrent_flags.super_seeding
+
+ return torrent_id, add_torrent_params
+
+ def add(
+ self,
+ torrent_info=None,
+ state=None,
+ options=None,
+ save_state=True,
+ filedump=None,
+ filename=None,
+ magnet=None,
+ resume_data=None,
+ ):
+ """Adds a torrent to the torrent manager.
+
+ Args:
+ torrent_info (lt.torrent_info, optional): A libtorrent torrent_info object.
+ state (TorrentState, optional): The torrent state.
+ options (dict, optional): The options to apply to the torrent on adding.
+ save_state (bool, optional): If True save the session state after adding torrent, defaults to True.
+ filedump (str, optional): bencoded filedump of a torrent file.
+ filename (str, optional): The filename of the torrent file.
+ magnet (str, optional): The magnet URI.
+ resume_data (lt.entry, optional): libtorrent fast resume data.
+
+ Returns:
+ str: If successful the torrent_id of the added torrent, None if adding the torrent failed.
+
+ Emits:
+ TorrentAddedEvent: Torrent with torrent_id added to session.
+
+ """
+ if not torrent_info and not filedump and not magnet:
+ raise AddTorrentError(
+ 'You must specify a valid torrent_info, torrent state or magnet.'
+ )
+
+ if filedump:
+ try:
+ torrent_info = lt.torrent_info(lt.bdecode(filedump))
+ except RuntimeError as ex:
+ raise AddTorrentError(
+ 'Unable to add torrent, decoding filedump failed: %s' % ex
+ )
+
+ options = self._build_torrent_options(options)
+ __, add_torrent_params = self._build_torrent_params(
+ torrent_info, magnet, options, resume_data
+ )
+
+ # We need to pause the AlertManager momentarily to prevent alerts
+ # for this torrent being generated before a Torrent object is created.
+ component.pause('AlertManager')
+
+ try:
+ handle = self.session.add_torrent(add_torrent_params)
+ if not handle.is_valid():
+ raise InvalidTorrentError('Torrent handle is invalid!')
+ except (RuntimeError, InvalidTorrentError) as ex:
+ component.resume('AlertManager')
+ raise AddTorrentError('Unable to add torrent to session: %s' % ex)
+
+ torrent = self._add_torrent_obj(
+ handle, options, state, filename, magnet, resume_data, filedump, save_state
+ )
+ return torrent.torrent_id
+
+ def add_async(
+ self,
+ torrent_info=None,
+ state=None,
+ options=None,
+ save_state=True,
+ filedump=None,
+ filename=None,
+ magnet=None,
+ resume_data=None,
+ ):
+ """Adds a torrent to the torrent manager using libtorrent async add torrent method.
+
+ Args:
+ torrent_info (lt.torrent_info, optional): A libtorrent torrent_info object.
+ state (TorrentState, optional): The torrent state.
+ options (dict, optional): The options to apply to the torrent on adding.
+ save_state (bool, optional): If True save the session state after adding torrent, defaults to True.
+ filedump (str, optional): bencoded filedump of a torrent file.
+ filename (str, optional): The filename of the torrent file.
+ magnet (str, optional): The magnet URI.
+ resume_data (lt.entry, optional): libtorrent fast resume data.
+
+ Returns:
+ Deferred: If successful the torrent_id of the added torrent, None if adding the torrent failed.
+
+ Emits:
+ TorrentAddedEvent: Torrent with torrent_id added to session.
+
+ """
+ if not torrent_info and not filedump and not magnet:
+ raise AddTorrentError(
+ 'You must specify a valid torrent_info, torrent state or magnet.'
+ )
+
+ if filedump:
+ try:
+ torrent_info = lt.torrent_info(lt.bdecode(filedump))
+ except RuntimeError as ex:
+ raise AddTorrentError(
+ 'Unable to add torrent, decoding filedump failed: %s' % ex
+ )
+
+ options = self._build_torrent_options(options)
+ torrent_id, add_torrent_params = self._build_torrent_params(
+ torrent_info, magnet, options, resume_data
+ )
+
+ d = Deferred()
+ self.torrents_loading[torrent_id] = (
+ d,
+ options,
+ state,
+ filename,
+ magnet,
+ resume_data,
+ filedump,
+ save_state,
+ )
+ try:
+ self.session.async_add_torrent(add_torrent_params)
+ except RuntimeError as ex:
+ raise AddTorrentError('Unable to add torrent to session: %s' % ex)
+ return d
+
+ def _add_torrent_obj(
+ self,
+ handle,
+ options,
+ state,
+ filename,
+ magnet,
+ resume_data,
+ filedump,
+ save_state,
+ ):
+ # For magnets added with metadata, filename is used so set as magnet.
+ if not magnet and is_magnet(filename):
+ magnet = filename
+ filename = None
+
+ # Create a Torrent object and add to the dictionary.
+ torrent = Torrent(handle, options, state, filename, magnet)
+ self.torrents[torrent.torrent_id] = torrent
+
+ # Resume AlertManager if paused for adding torrent to libtorrent.
+ component.resume('AlertManager')
+
+ # Store the original resume_data, in case of errors.
+ if resume_data:
+ self.resume_data[torrent.torrent_id] = resume_data
+
+ # Add to queued torrents set.
+ self.queued_torrents.add(torrent.torrent_id)
+ if self.config['queue_new_to_top']:
+ self.queue_top(torrent.torrent_id)
+
+ # Resume the torrent if needed.
+ if not options['add_paused']:
+ torrent.resume()
+
+ # Emit torrent_added signal.
+ from_state = state is not None
+ component.get('EventManager').emit(
+ TorrentAddedEvent(torrent.torrent_id, from_state)
+ )
+
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Torrent added: %s', str(handle.info_hash()))
+ if log.isEnabledFor(logging.INFO):
+ name_and_owner = torrent.get_status(['name', 'owner'])
+ log.info(
+ 'Torrent %s from user "%s" %s',
+ name_and_owner['name'],
+ name_and_owner['owner'],
+ from_state and 'loaded' or 'added',
+ )
+
+ # Write the .torrent file to the state directory.
+ if filedump:
+ torrent.write_torrentfile(filedump)
+
+ # Save the session state.
+ if save_state:
+ self.save_state()
+
+ return torrent
+
+ def add_async_callback(
+ self,
+ handle,
+ d,
+ options,
+ state,
+ filename,
+ magnet,
+ resume_data,
+ filedump,
+ save_state,
+ ):
+ torrent = self._add_torrent_obj(
+ handle, options, state, filename, magnet, resume_data, filedump, save_state
+ )
+
+ d.callback(torrent.torrent_id)
+
+ def remove(self, torrent_id, remove_data=False, save_state=True):
+ """Remove a torrent from the session.
+
+ Args:
+ torrent_id (str): The torrent ID to remove.
+ remove_data (bool, optional): If True, remove the downloaded data, defaults to False.
+ save_state (bool, optional): If True, save the session state after removal, defaults to True.
+
+ Returns:
+ bool: True if removed successfully, False if not.
+
+ Emits:
+ PreTorrentRemovedEvent: Torrent is about to be removed from session.
+ TorrentRemovedEvent: Torrent with torrent_id removed from session.
+
+ Raises:
+ InvalidTorrentError: If the torrent_id is not in the session.
+
+ """
+ try:
+ torrent = self.torrents[torrent_id]
+ except KeyError:
+ raise InvalidTorrentError('torrent_id %s not in session.' % torrent_id)
+
+ torrent_name = torrent.get_status(['name'])['name']
+
+ # Emit the signal to the clients
+ component.get('EventManager').emit(PreTorrentRemovedEvent(torrent_id))
+
+ try:
+ self.session.remove_torrent(torrent.handle, 1 if remove_data else 0)
+ except RuntimeError as ex:
+ log.warning('Error removing torrent: %s', ex)
+ return False
+
+ # Remove fastresume data if it is exists
+ self.resume_data.pop(torrent_id, None)
+
+ # Remove the .torrent file in the state and copy location, if user requested.
+ delete_copies = (
+ self.config['copy_torrent_file'] and self.config['del_copy_torrent_file']
+ )
+ torrent.delete_torrentfile(delete_copies)
+
+ # Remove from set if it wasn't finished
+ if not torrent.is_finished:
+ try:
+ self.queued_torrents.remove(torrent_id)
+ except KeyError:
+ log.debug('%s is not in queued torrents set.', torrent_id)
+ raise InvalidTorrentError(
+ '%s is not in queued torrents set.' % torrent_id
+ )
+
+ # Remove the torrent from deluge's session
+ del self.torrents[torrent_id]
+
+ if save_state:
+ self.save_state()
+
+ # Emit the signal to the clients
+ component.get('EventManager').emit(TorrentRemovedEvent(torrent_id))
+ log.info(
+ 'Torrent %s removed by user: %s',
+ torrent_name,
+ component.get('RPCServer').get_session_user(),
+ )
+ return True
+
+ def fixup_state(self, state):
+ """Fixup an old state by adding missing TorrentState options and assigning default values.
+
+ Args:
+ state (TorrentManagerState): A torrentmanager state containing torrent details.
+
+ Returns:
+ TorrentManagerState: A fixedup TorrentManager state.
+
+ """
+ if state.torrents:
+ t_state_tmp = TorrentState()
+ if dir(state.torrents[0]) != dir(t_state_tmp):
+ self.archive_state('Migration of TorrentState required.')
+ try:
+ for attr in set(dir(t_state_tmp)) - set(dir(state.torrents[0])):
+ for t_state in state.torrents:
+ setattr(t_state, attr, getattr(t_state_tmp, attr, None))
+ except AttributeError as ex:
+ log.error(
+ 'Unable to update state file to a compatible version: %s', ex
+ )
+ return state
+
+ def open_state(self):
+ """Open the torrents.state file containing a TorrentManager state with session torrents.
+
+ Returns:
+ TorrentManagerState: The TorrentManager state.
+
+ """
+ torrents_state = os.path.join(self.state_dir, 'torrents.state')
+ state = None
+ for filepath in (torrents_state, torrents_state + '.bak'):
+ log.info('Loading torrent state: %s', filepath)
+ if not os.path.isfile(filepath):
+ continue
+
+ try:
+ with open(filepath, 'rb') as _file:
+ state = pickle.load(_file, encoding='utf8')
+ except (OSError, EOFError, pickle.UnpicklingError) as ex:
+ message = f'Unable to load {filepath}: {ex}'
+ log.error(message)
+ if not filepath.endswith('.bak'):
+ self.archive_state(message)
+ else:
+ log.info('Successfully loaded %s', filepath)
+ break
+
+ return state if state else TorrentManagerState()
+
+ def load_state(self):
+ """Load all the torrents from TorrentManager state into session.
+
+ Emits:
+ SessionStartedEvent: Emitted after all torrents are added to the session.
+
+ """
+ start = datetime.datetime.now()
+ state = self.open_state()
+ state = self.fixup_state(state)
+
+ # Reorder the state.torrents list to add torrents in the correct queue order.
+ state.torrents.sort(
+ key=operator.attrgetter('queue'), reverse=self.config['queue_new_to_top']
+ )
+ resume_data = self.load_resume_data_file()
+
+ deferreds = []
+ for t_state in state.torrents:
+ # Populate the options dict from state
+ options = TorrentOptions()
+ for option in options:
+ try:
+ options[option] = getattr(t_state, option)
+ except AttributeError:
+ pass
+ # Manually update unmatched attributes
+ options['download_location'] = t_state.save_path
+ options['pre_allocate_storage'] = t_state.storage_mode == 'allocate'
+ options['prioritize_first_last_pieces'] = t_state.prioritize_first_last
+ options['add_paused'] = t_state.paused
+
+ magnet = t_state.magnet
+ torrent_info = self.get_torrent_info_from_file(
+ os.path.join(self.state_dir, t_state.torrent_id + '.torrent')
+ )
+
+ try:
+ d = self.add_async(
+ torrent_info=torrent_info,
+ state=t_state,
+ options=options,
+ save_state=False,
+ magnet=magnet,
+ resume_data=resume_data.get(t_state.torrent_id),
+ )
+ except AddTorrentError as ex:
+ log.warning(
+ 'Error when adding torrent "%s" to session: %s',
+ t_state.torrent_id,
+ ex,
+ )
+ else:
+ deferreds.append(d)
+
+ deferred_list = DeferredList(deferreds, consumeErrors=False)
+
+ def on_complete(result):
+ log.info(
+ 'Finished loading %d torrents in %s',
+ len(state.torrents),
+ str(datetime.datetime.now() - start),
+ )
+ component.get('EventManager').emit(SessionStartedEvent())
+
+ deferred_list.addCallback(on_complete)
+
+ def create_state(self):
+ """Create a state of all the torrents in TorrentManager.
+
+ Returns:
+ TorrentManagerState: The TorrentManager state.
+
+ """
+ state = TorrentManagerState()
+ # Create the state for each Torrent and append to the list
+ for torrent in self.torrents.values():
+ if self.session.is_paused():
+ paused = torrent.handle.is_paused()
+ elif torrent.forced_error:
+ paused = torrent.forced_error.was_paused
+ elif torrent.state == 'Paused':
+ paused = True
+ else:
+ paused = False
+
+ torrent_state = TorrentState(
+ torrent.torrent_id,
+ torrent.filename,
+ torrent.trackers,
+ torrent.get_status(['storage_mode'])['storage_mode'],
+ paused,
+ torrent.options['download_location'],
+ torrent.options['max_connections'],
+ torrent.options['max_upload_slots'],
+ torrent.options['max_upload_speed'],
+ torrent.options['max_download_speed'],
+ torrent.options['prioritize_first_last_pieces'],
+ torrent.options['sequential_download'],
+ torrent.options['file_priorities'],
+ torrent.get_queue_position(),
+ torrent.options['auto_managed'],
+ torrent.is_finished,
+ torrent.options['stop_ratio'],
+ torrent.options['stop_at_ratio'],
+ torrent.options['remove_at_ratio'],
+ torrent.options['move_completed'],
+ torrent.options['move_completed_path'],
+ torrent.magnet,
+ torrent.options['owner'],
+ torrent.options['shared'],
+ torrent.options['super_seeding'],
+ torrent.options['name'],
+ )
+ state.torrents.append(torrent_state)
+ return state
+
+ def save_state(self):
+ """Run the save state task in a separate thread to avoid blocking main thread.
+
+ Note:
+ If a save task is already running, this call is ignored.
+
+ """
+ if self.is_saving_state:
+ return defer.succeed(None)
+ self.is_saving_state = True
+ d = threads.deferToThread(self._save_state)
+
+ def on_state_saved(arg):
+ self.is_saving_state = False
+ if self.save_state_timer.running:
+ self.save_state_timer.reset()
+
+ d.addBoth(on_state_saved)
+ return d
+
+ def _save_state(self):
+ """Save the state of the TorrentManager to the torrents.state file."""
+ state = self.create_state()
+
+ # If the state hasn't changed, no need to save it
+ if self.prev_saved_state == state:
+ return
+
+ filename = 'torrents.state'
+ filepath = os.path.join(self.state_dir, filename)
+ filepath_bak = filepath + '.bak'
+ filepath_tmp = filepath + '.tmp'
+
+ try:
+ log.debug('Creating the temporary file: %s', filepath_tmp)
+ with open(filepath_tmp, 'wb', 0) as _file:
+ pickle.dump(state, _file, protocol=2)
+ _file.flush()
+ os.fsync(_file.fileno())
+ except (OSError, pickle.PicklingError) as ex:
+ log.error('Unable to save %s: %s', filename, ex)
+ return
+
+ try:
+ log.debug('Creating backup of %s at: %s', filename, filepath_bak)
+ if os.path.isfile(filepath_bak):
+ os.remove(filepath_bak)
+ if os.path.isfile(filepath):
+ os.rename(filepath, filepath_bak)
+ except OSError as ex:
+ log.error('Unable to backup %s to %s: %s', filepath, filepath_bak, ex)
+ return
+
+ try:
+ log.debug('Saving %s to: %s', filename, filepath)
+ os.rename(filepath_tmp, filepath)
+ self.prev_saved_state = state
+ except OSError as ex:
+ log.error('Failed to set new state file %s: %s', filepath, ex)
+ if os.path.isfile(filepath_bak):
+ log.info('Restoring backup of state from: %s', filepath_bak)
+ os.rename(filepath_bak, filepath)
+
+ def save_resume_data(self, torrent_ids=None, flush_disk_cache=False):
+ """Saves torrents resume data.
+
+ Args:
+ torrent_ids (list of str): A list of torrents to save the resume data for, defaults
+ to None which saves all torrents resume data.
+ flush_disk_cache (bool, optional): If True flushes the disk cache which avoids potential
+ issue with file timestamps, defaults to False. This is only needed when stopping the session.
+
+ Returns:
+ t.i.d.DeferredList: A list of twisted Deferred callbacks to be invoked when save is complete.
+
+ """
+ if torrent_ids is None:
+ torrent_ids = (
+ tid
+ for tid, t in self.torrents.items()
+ if t.handle.need_save_resume_data()
+ )
+
+ def on_torrent_resume_save(dummy_result, torrent_id):
+ """Received torrent resume_data alert so remove from waiting list"""
+ self.waiting_on_resume_data.pop(torrent_id, None)
+
+ deferreds = []
+ for torrent_id in torrent_ids:
+ d = self.waiting_on_resume_data.get(torrent_id)
+ if not d:
+ d = Deferred().addBoth(on_torrent_resume_save, torrent_id)
+ self.waiting_on_resume_data[torrent_id] = d
+ deferreds.append(d)
+ self.torrents[torrent_id].save_resume_data(flush_disk_cache)
+
+ def on_all_resume_data_finished(dummy_result):
+ """Saves resume data file when no more torrents waiting for resume data.
+
+ Returns:
+ bool: True if fastresume file is saved.
+
+ This return value determines removal of `self.temp_file` in `self.stop()`.
+
+ """
+ # Use flush_disk_cache as a marker for shutdown so fastresume is
+ # saved even if torrents are waiting.
+ if not self.waiting_on_resume_data or flush_disk_cache:
+ return self.save_resume_data_file(queue_task=flush_disk_cache)
+
+ return DeferredList(deferreds).addBoth(on_all_resume_data_finished)
+
+ def load_resume_data_file(self):
+ """Load the resume data from file for all torrents.
+
+ Returns:
+ dict: A dict of torrents and their resume_data.
+
+ """
+ filename = 'torrents.fastresume'
+ filepath = os.path.join(self.state_dir, filename)
+ filepath_bak = filepath + '.bak'
+ old_data_filepath = os.path.join(get_config_dir(), filename)
+
+ for _filepath in (filepath, filepath_bak, old_data_filepath):
+ log.info('Opening %s for load: %s', filename, _filepath)
+ try:
+ with open(_filepath, 'rb') as _file:
+ resume_data = lt.bdecode(_file.read())
+ except (OSError, EOFError, RuntimeError) as ex:
+ if self.torrents:
+ log.warning('Unable to load %s: %s', _filepath, ex)
+ resume_data = None
+ else:
+ # lt.bdecode returns the dict keys as bytes so decode them.
+ resume_data = {k.decode(): v for k, v in resume_data.items()}
+ log.info('Successfully loaded %s: %s', filename, _filepath)
+ break
+
+ # If the libtorrent bdecode doesn't happen properly, it will return None
+ # so we need to make sure we return a {}
+ if resume_data is None:
+ return {}
+ else:
+ return resume_data
+
+ def save_resume_data_file(self, queue_task=False):
+ """Save resume data to file in a separate thread to avoid blocking main thread.
+
+ Args:
+ queue_task (bool): If True and a save task is already running then queue
+ this save task to run next. Default is to not queue save tasks.
+
+ Returns:
+ Deferred: Fires with arg, True if save task was successful, False if
+ not and None if task was not performed.
+
+ """
+ if not queue_task and self.save_resume_data_file_lock.locked:
+ return defer.succeed(None)
+
+ def on_lock_aquired():
+ d = threads.deferToThread(self._save_resume_data_file)
+
+ def on_resume_data_file_saved(arg):
+ if self.save_resume_data_timer.running:
+ self.save_resume_data_timer.reset()
+ return arg
+
+ d.addBoth(on_resume_data_file_saved)
+ return d
+
+ return self.save_resume_data_file_lock.run(on_lock_aquired)
+
+ def _save_resume_data_file(self):
+ """Saves the resume data file with the contents of self.resume_data"""
+ if not self.resume_data:
+ return True
+
+ filename = 'torrents.fastresume'
+ filepath = os.path.join(self.state_dir, filename)
+ filepath_bak = filepath + '.bak'
+ filepath_tmp = filepath + '.tmp'
+
+ try:
+ log.debug('Creating the temporary file: %s', filepath_tmp)
+ with open(filepath_tmp, 'wb', 0) as _file:
+ _file.write(lt.bencode(self.resume_data))
+ _file.flush()
+ os.fsync(_file.fileno())
+ except (OSError, EOFError) as ex:
+ log.error('Unable to save %s: %s', filename, ex)
+ return False
+
+ try:
+ log.debug('Creating backup of %s at: %s', filename, filepath_bak)
+ if os.path.isfile(filepath_bak):
+ os.remove(filepath_bak)
+ if os.path.isfile(filepath):
+ os.rename(filepath, filepath_bak)
+ except OSError as ex:
+ log.error('Unable to backup %s to %s: %s', filepath, filepath_bak, ex)
+ return False
+
+ try:
+ log.debug('Saving %s to: %s', filename, filepath)
+ os.rename(filepath_tmp, filepath)
+ except OSError as ex:
+ log.error('Failed to set new file %s: %s', filepath, ex)
+ if os.path.isfile(filepath_bak):
+ log.info('Restoring backup from: %s', filepath_bak)
+ os.rename(filepath_bak, filepath)
+ else:
+ # Sync the rename operations for the directory
+ if hasattr(os, 'O_DIRECTORY'):
+ dirfd = os.open(os.path.dirname(filepath), os.O_DIRECTORY)
+ os.fsync(dirfd)
+ os.close(dirfd)
+ return True
+
+ def archive_state(self, message):
+ log.warning(message)
+ arc_filepaths = []
+ for filename in ('torrents.fastresume', 'torrents.state'):
+ filepath = os.path.join(self.state_dir, filename)
+ arc_filepaths.extend([filepath, filepath + '.bak'])
+
+ archive_files('state', arc_filepaths, message=message)
+
+ def get_queue_position(self, torrent_id):
+ """Get queue position of torrent"""
+ return self.torrents[torrent_id].get_queue_position()
+
+ def queue_top(self, torrent_id):
+ """Queue torrent to top"""
+ if self.torrents[torrent_id].get_queue_position() == 0:
+ return False
+
+ self.torrents[torrent_id].handle.queue_position_top()
+ return True
+
+ def queue_up(self, torrent_id):
+ """Queue torrent up one position"""
+ if self.torrents[torrent_id].get_queue_position() == 0:
+ return False
+
+ self.torrents[torrent_id].handle.queue_position_up()
+ return True
+
+ def queue_down(self, torrent_id):
+ """Queue torrent down one position"""
+ if self.torrents[torrent_id].get_queue_position() == (
+ len(self.queued_torrents) - 1
+ ):
+ return False
+
+ self.torrents[torrent_id].handle.queue_position_down()
+ return True
+
+ def queue_bottom(self, torrent_id):
+ """Queue torrent to bottom"""
+ if self.torrents[torrent_id].get_queue_position() == (
+ len(self.queued_torrents) - 1
+ ):
+ return False
+
+ self.torrents[torrent_id].handle.queue_position_bottom()
+ return True
+
+ def cleanup_torrents_prev_status(self):
+ """Run cleanup_prev_status for each registered torrent"""
+ for torrent in self.torrents.values():
+ torrent.cleanup_prev_status()
+
+ def on_set_max_connections_per_torrent(self, key, value):
+ """Sets the per-torrent connection limit"""
+ log.debug('max_connections_per_torrent set to %s...', value)
+ for key in self.torrents:
+ self.torrents[key].set_max_connections(value)
+
+ def on_set_max_upload_slots_per_torrent(self, key, value):
+ """Sets the per-torrent upload slot limit"""
+ log.debug('max_upload_slots_per_torrent set to %s...', value)
+ for key in self.torrents:
+ self.torrents[key].set_max_upload_slots(value)
+
+ def on_set_max_upload_speed_per_torrent(self, key, value):
+ """Sets the per-torrent upload speed limit"""
+ log.debug('max_upload_speed_per_torrent set to %s...', value)
+ for key in self.torrents:
+ self.torrents[key].set_max_upload_speed(value)
+
+ def on_set_max_download_speed_per_torrent(self, key, value):
+ """Sets the per-torrent download speed limit"""
+ log.debug('max_download_speed_per_torrent set to %s...', value)
+ for key in self.torrents:
+ self.torrents[key].set_max_download_speed(value)
+
+ # --- Alert handlers ---
+ def on_alert_add_torrent(self, alert):
+ """Alert handler for libtorrent add_torrent_alert"""
+ if not alert.handle.is_valid():
+ log.warning('Torrent handle is invalid: %s', alert.error.message())
+ return
+
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ except RuntimeError as ex:
+ log.warning('Failed to get torrent id from handle: %s', ex)
+ return
+
+ try:
+ add_async_params = self.torrents_loading.pop(torrent_id)
+ except KeyError as ex:
+ log.warning('Torrent id not in torrents loading list: %s', ex)
+ return
+
+ self.add_async_callback(alert.handle, *add_async_params)
+
+ def on_alert_torrent_finished(self, alert):
+ """Alert handler for libtorrent torrent_finished_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ torrent = self.torrents[torrent_id]
+ except (RuntimeError, KeyError):
+ return
+
+ # If total_download is 0, do not move, it's likely the torrent wasn't downloaded, but just added.
+ # Get fresh data from libtorrent, the cache isn't always up to date
+ total_download = torrent.get_status(['total_payload_download'], update=True)[
+ 'total_payload_download'
+ ]
+
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('Finished %s ', torrent_id)
+ log.debug(
+ 'Torrent settings: is_finished: %s, total_download: %s, move_completed: %s, move_path: %s',
+ torrent.is_finished,
+ total_download,
+ torrent.options['move_completed'],
+ torrent.options['move_completed_path'],
+ )
+
+ torrent.update_state()
+ if not torrent.is_finished and total_download:
+ # Move completed download to completed folder if needed
+ if (
+ torrent.options['move_completed']
+ and torrent.options['download_location']
+ != torrent.options['move_completed_path']
+ ):
+ self.waiting_on_finish_moving.append(torrent_id)
+ torrent.move_storage(torrent.options['move_completed_path'])
+ else:
+ torrent.is_finished = True
+ component.get('EventManager').emit(TorrentFinishedEvent(torrent_id))
+ else:
+ torrent.is_finished = True
+
+ # Torrent is no longer part of the queue
+ try:
+ self.queued_torrents.remove(torrent_id)
+ except KeyError:
+ # Sometimes libtorrent fires a TorrentFinishedEvent twice
+ if log.isEnabledFor(logging.DEBUG):
+ log.debug('%s is not in queued torrents set.', torrent_id)
+
+ # Only save resume data if it was actually downloaded something. Helps
+ # on startup with big queues with lots of seeding torrents. Libtorrent
+ # emits alert_torrent_finished for them, but there seems like nothing
+ # worth really to save in resume data, we just read it up in
+ # self.load_state().
+ if total_download:
+ self.save_resume_data((torrent_id,))
+
+ def on_alert_torrent_paused(self, alert):
+ """Alert handler for libtorrent torrent_paused_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ torrent = self.torrents[torrent_id]
+ except (RuntimeError, KeyError):
+ return
+ torrent.update_state()
+ # Write the fastresume file if we are not waiting on a bulk write
+ if torrent_id not in self.waiting_on_resume_data:
+ self.save_resume_data((torrent_id,))
+
+ def on_alert_torrent_checked(self, alert):
+ """Alert handler for libtorrent torrent_checked_alert"""
+ try:
+ torrent = self.torrents[str(alert.handle.info_hash())]
+ except (RuntimeError, KeyError):
+ return
+
+ # Check to see if we're forcing a recheck and set it back to paused if necessary.
+ if torrent.forcing_recheck:
+ torrent.forcing_recheck = False
+ if torrent.forcing_recheck_paused:
+ torrent.handle.pause()
+
+ torrent.update_state()
+
+ def on_alert_tracker_reply(self, alert):
+ """Alert handler for libtorrent tracker_reply_alert"""
+ try:
+ torrent = self.torrents[str(alert.handle.info_hash())]
+ except (RuntimeError, KeyError):
+ return
+
+ # Set the tracker status for the torrent
+ torrent.set_tracker_status('Announce OK')
+
+ # Check for peer information from the tracker, if none then send a scrape request.
+ torrent.get_lt_status()
+ if torrent.status.num_complete == -1 or torrent.status.num_incomplete == -1:
+ torrent.scrape_tracker()
+
+ def on_alert_tracker_announce(self, alert):
+ """Alert handler for libtorrent tracker_announce_alert"""
+ try:
+ torrent = self.torrents[str(alert.handle.info_hash())]
+ except (RuntimeError, KeyError):
+ return
+
+ # Set the tracker status for the torrent
+ torrent.set_tracker_status('Announce Sent')
+
+ def on_alert_tracker_warning(self, alert):
+ """Alert handler for libtorrent tracker_warning_alert"""
+ try:
+ torrent = self.torrents[str(alert.handle.info_hash())]
+ except (RuntimeError, KeyError):
+ return
+ # Set the tracker status for the torrent
+ torrent.set_tracker_status('Warning: %s' % decode_bytes(alert.message()))
+
+ def on_alert_tracker_error(self, alert):
+ """Alert handler for libtorrent tracker_error_alert"""
+ try:
+ torrent = self.torrents[str(alert.handle.info_hash())]
+ except (RuntimeError, KeyError):
+ return
+
+ error_message = decode_bytes(alert.error_message())
+ if not error_message:
+ error_message = decode_bytes(alert.error.message())
+ log.debug(
+ 'Tracker Error Alert: %s [%s]', decode_bytes(alert.message()), error_message
+ )
+ # libtorrent 1.2 added endpoint struct to each tracker. to prevent false updates
+ # we will need to verify that at least one endpoint to the errored tracker is working
+ for tracker in torrent.handle.trackers():
+ if tracker['url'] == alert.url:
+ if any(
+ endpoint['last_error']['value'] == 0
+ for endpoint in tracker['endpoints']
+ ):
+ torrent.set_tracker_status('Announce OK')
+ else:
+ torrent.set_tracker_status('Error: ' + error_message)
+ break
+
+ def on_alert_storage_moved(self, alert):
+ """Alert handler for libtorrent storage_moved_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ torrent = self.torrents[torrent_id]
+ except (RuntimeError, KeyError):
+ return
+
+ torrent.set_download_location(os.path.normpath(alert.storage_path()))
+ torrent.set_move_completed(False)
+ torrent.update_state()
+
+ if torrent_id in self.waiting_on_finish_moving:
+ self.waiting_on_finish_moving.remove(torrent_id)
+ torrent.is_finished = True
+ component.get('EventManager').emit(TorrentFinishedEvent(torrent_id))
+
+ def on_alert_storage_moved_failed(self, alert):
+ """Alert handler for libtorrent storage_moved_failed_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ torrent = self.torrents[torrent_id]
+ except (RuntimeError, KeyError):
+ return
+
+ log.warning('on_alert_storage_moved_failed: %s', decode_bytes(alert.message()))
+ # Set an Error message and pause the torrent
+ alert_msg = decode_bytes(alert.message()).split(':', 1)[1].strip()
+ torrent.force_error_state('Failed to move download folder: %s' % alert_msg)
+
+ if torrent_id in self.waiting_on_finish_moving:
+ self.waiting_on_finish_moving.remove(torrent_id)
+ torrent.is_finished = True
+ component.get('EventManager').emit(TorrentFinishedEvent(torrent_id))
+
+ def on_alert_torrent_resumed(self, alert):
+ """Alert handler for libtorrent torrent_resumed_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ torrent = self.torrents[torrent_id]
+ except (RuntimeError, KeyError):
+ return
+ torrent.update_state()
+ component.get('EventManager').emit(TorrentResumedEvent(torrent_id))
+
+ def on_alert_state_changed(self, alert):
+ """Alert handler for libtorrent state_changed_alert.
+
+ Emits:
+ TorrentStateChangedEvent: The state has changed.
+
+ """
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ torrent = self.torrents[torrent_id]
+ except (RuntimeError, KeyError):
+ return
+
+ torrent.update_state()
+ # Torrent may need to download data after checking.
+ if torrent.state in ('Checking', 'Downloading'):
+ torrent.is_finished = False
+ self.queued_torrents.add(torrent_id)
+
+ def on_alert_save_resume_data(self, alert):
+ """Alert handler for libtorrent save_resume_data_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ except RuntimeError:
+ return
+ if torrent_id in self.torrents:
+ # libtorrent add_torrent expects bencoded resume_data.
+ self.resume_data[torrent_id] = lt.bencode(
+ lt.write_resume_data(alert.params)
+ )
+
+ if torrent_id in self.waiting_on_resume_data:
+ self.waiting_on_resume_data[torrent_id].callback(None)
+
+ def on_alert_save_resume_data_failed(self, alert):
+ """Alert handler for libtorrent save_resume_data_failed_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ except RuntimeError:
+ return
+
+ if torrent_id in self.waiting_on_resume_data:
+ self.waiting_on_resume_data[torrent_id].errback(
+ Exception(decode_bytes(alert.message()))
+ )
+
+ def on_alert_fastresume_rejected(self, alert):
+ """Alert handler for libtorrent fastresume_rejected_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ torrent = self.torrents[torrent_id]
+ except (RuntimeError, KeyError):
+ return
+
+ alert_msg = decode_bytes(alert.message())
+ log.error('on_alert_fastresume_rejected: %s', alert_msg)
+ if alert.error.value() == 134:
+ if not os.path.isdir(torrent.options['download_location']):
+ error_msg = 'Unable to locate Download Folder!'
+ else:
+ error_msg = 'Missing or invalid torrent data!'
+ else:
+ error_msg = (
+ 'Problem with resume data: %s' % alert_msg.split(':', 1)[1].strip()
+ )
+ torrent.force_error_state(error_msg, restart_to_resume=True)
+
+ def on_alert_file_renamed(self, alert):
+ """Alert handler for libtorrent file_renamed_alert.
+
+ Emits:
+ TorrentFileRenamedEvent: Files in the torrent have been renamed.
+
+ """
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ torrent = self.torrents[torrent_id]
+ except (RuntimeError, KeyError):
+ return
+
+ new_name = decode_bytes(alert.new_name())
+ log.debug('index: %s name: %s', alert.index, new_name)
+
+ # We need to see if this file index is in a waiting_on_folder dict
+ for wait_on_folder in torrent.waiting_on_folder_rename:
+ if alert.index in wait_on_folder:
+ wait_on_folder[alert.index].callback(None)
+ break
+ else:
+ # This is just a regular file rename so send the signal
+ component.get('EventManager').emit(
+ TorrentFileRenamedEvent(torrent_id, alert.index, new_name)
+ )
+ self.save_resume_data((torrent_id,))
+
+ def on_alert_metadata_received(self, alert):
+ """Alert handler for libtorrent metadata_received_alert"""
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ except RuntimeError:
+ return
+
+ try:
+ torrent = self.torrents[torrent_id]
+ except KeyError:
+ pass
+ else:
+ return torrent.on_metadata_received()
+
+ # Try callback to prefetch_metadata method.
+ try:
+ d = self.prefetching_metadata[torrent_id].alert_deferred
+ except KeyError:
+ pass
+ else:
+ torrent_info = alert.handle.get_torrent_info()
+ return d.callback(torrent_info)
+
+ def on_alert_file_error(self, alert):
+ """Alert handler for libtorrent file_error_alert"""
+ try:
+ torrent = self.torrents[str(alert.handle.info_hash())]
+ except (RuntimeError, KeyError):
+ return
+ torrent.update_state()
+
+ def on_alert_file_completed(self, alert):
+ """Alert handler for libtorrent file_completed_alert
+
+ Emits:
+ TorrentFileCompletedEvent: When an individual file completes downloading.
+
+ """
+ try:
+ torrent_id = str(alert.handle.info_hash())
+ except RuntimeError:
+ return
+ if torrent_id in self.torrents:
+ component.get('EventManager').emit(
+ TorrentFileCompletedEvent(torrent_id, alert.index)
+ )
+
+ def on_alert_state_update(self, alert):
+ """Alert handler for libtorrent state_update_alert
+
+ Result of a session.post_torrent_updates() call and contains the torrent status
+ of all torrents that changed since last time this was posted.
+
+ """
+ self.last_state_update_alert_ts = time.time()
+
+ for t_status in alert.status:
+ try:
+ torrent_id = str(t_status.info_hash)
+ except RuntimeError:
+ continue
+ if torrent_id in self.torrents:
+ self.torrents[torrent_id].status = t_status
+
+ self.handle_torrents_status_callback(self.torrents_status_requests.pop())
+
+ def on_alert_external_ip(self, alert):
+ """Alert handler for libtorrent external_ip_alert"""
+ log.info('on_alert_external_ip: %s', alert.external_address)
+ component.get('EventManager').emit(ExternalIPEvent(alert.external_address))
+
+ def on_alert_performance(self, alert):
+ """Alert handler for libtorrent performance_alert"""
+ log.warning(
+ 'on_alert_performance: %s, %s',
+ decode_bytes(alert.message()),
+ alert.warning_code,
+ )
+ if alert.warning_code == lt.performance_warning_t.send_buffer_watermark_too_low:
+ max_send_buffer_watermark = 3 * 1024 * 1024 # 3MiB
+ settings = self.session.get_settings()
+ send_buffer_watermark = settings['send_buffer_watermark']
+
+ # If send buffer is too small, try increasing its size by 512KiB (up to max_send_buffer_watermark)
+ if send_buffer_watermark < max_send_buffer_watermark:
+ value = send_buffer_watermark + (500 * 1024)
+ log.info(
+ 'Increasing send_buffer_watermark from %s to %s Bytes',
+ send_buffer_watermark,
+ value,
+ )
+ component.get('Core').apply_session_setting(
+ 'send_buffer_watermark', value
+ )
+ else:
+ log.warning(
+ 'send_buffer_watermark reached maximum value: %s Bytes',
+ max_send_buffer_watermark,
+ )
+
+ def separate_keys(self, keys, torrent_ids):
+ """Separates the input keys into torrent class keys and plugins keys"""
+ if self.torrents:
+ for torrent_id in torrent_ids:
+ if torrent_id in self.torrents:
+ status_keys = list(self.torrents[torrent_id].status_funcs)
+ leftover_keys = list(set(keys) - set(status_keys))
+ torrent_keys = list(set(keys) - set(leftover_keys))
+ return torrent_keys, leftover_keys
+ return [], []
+
+ def handle_torrents_status_callback(self, status_request):
+ """Build the status dictionary with torrent values"""
+ d, torrent_ids, keys, diff = status_request
+ status_dict = {}.fromkeys(torrent_ids)
+ torrent_keys, plugin_keys = self.separate_keys(keys, torrent_ids)
+
+ # Get the torrent status for each torrent_id
+ for torrent_id in torrent_ids:
+ if torrent_id not in self.torrents:
+ # The torrent_id does not exist in the dict.
+ # Could be the clients cache (sessionproxy) isn't up to speed.
+ del status_dict[torrent_id]
+ else:
+ status_dict[torrent_id] = self.torrents[torrent_id].get_status(
+ torrent_keys, diff, all_keys=not keys
+ )
+ self.status_dict = status_dict
+ d.callback((status_dict, plugin_keys))
+
+ def torrents_status_update(self, torrent_ids, keys, diff=False):
+ """Returns status dict for the supplied torrent_ids async.
+
+ Note:
+ If torrent states was updated recently post_torrent_updates is not called and
+ instead cached state is used.
+
+ Args:
+ torrent_ids (list of str): The torrent IDs to get the status of.
+ keys (list of str): The keys to get the status on.
+ diff (bool, optional): If True, will return a diff of the changes since the
+ last call to get_status based on the session_id, defaults to False.
+
+ Returns:
+ dict: A status dictionary for the requested torrents.
+
+ """
+ d = Deferred()
+ now = time.time()
+ # If last update was recent, use cached data instead of request updates from libtorrent
+ if (now - self.last_state_update_alert_ts) < 1.5:
+ reactor.callLater(
+ 0, self.handle_torrents_status_callback, (d, torrent_ids, keys, diff)
+ )
+ else:
+ # Ask libtorrent for status update
+ self.torrents_status_requests.insert(0, (d, torrent_ids, keys, diff))
+ self.session.post_torrent_updates()
+ return d
diff --git a/deluge/crypto_utils.py b/deluge/crypto_utils.py
new file mode 100644
index 0000000..d636c05
--- /dev/null
+++ b/deluge/crypto_utils.py
@@ -0,0 +1,136 @@
+#
+# Copyright (C) 2007,2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+import stat
+
+from OpenSSL import crypto
+from OpenSSL.crypto import FILETYPE_PEM
+from twisted.internet.ssl import (
+ AcceptableCiphers,
+ Certificate,
+ CertificateOptions,
+ KeyPair,
+ TLSVersion,
+)
+
+import deluge.configmanager
+
+# A TLS ciphers list.
+# Sources for more information on TLS ciphers:
+# - https://wiki.mozilla.org/Security/Server_Side_TLS
+# - https://www.ssllabs.com/projects/best-practices/index.html
+# - https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
+#
+# This list was inspired by the `urllib3` library
+# - https://github.com/urllib3/urllib3/blob/master/urllib3/util/ssl_.py#L79
+#
+# The general intent is:
+# - prefer cipher suites that offer perfect forward secrecy (ECDHE),
+# - prefer AES-GCM over ChaCha20 because hardware-accelerated AES is common,
+# - disable NULL authentication, MD5 MACs and DSS for security reasons.
+TLS_CIPHERS = ':'.join(
+ [
+ 'ECDH+AESGCM',
+ 'ECDH+CHACHA20',
+ 'AES256-GCM-SHA384',
+ 'AES128-GCM-SHA256',
+ '!DSS' '!aNULL',
+ '!eNULL',
+ '!MD5',
+ ]
+)
+
+# This value tells OpenSSL to disable all SSL/TLS renegotiation.
+SSL_OP_NO_RENEGOTIATION = 0x40000000
+
+
+def get_context_factory(cert_path, pkey_path):
+ """OpenSSL context factory.
+
+ Generates an OpenSSL context factory using Twisted's CertificateOptions class.
+ This will keep a server cipher order.
+
+ Args:
+ cert_path (string): The path to the certificate file
+ pkey_path (string): The path to the private key file
+
+ Returns:
+ twisted.internet.ssl.CertificateOptions: An OpenSSL context factory
+ """
+
+ with open(cert_path) as cert:
+ certificate = Certificate.loadPEM(cert.read()).original
+ with open(pkey_path) as pkey:
+ private_key = KeyPair.load(pkey.read(), FILETYPE_PEM).original
+ ciphers = AcceptableCiphers.fromOpenSSLCipherString(TLS_CIPHERS)
+ cert_options = CertificateOptions(
+ privateKey=private_key,
+ certificate=certificate,
+ raiseMinimumTo=TLSVersion.TLSv1_2,
+ acceptableCiphers=ciphers,
+ )
+ ctx = cert_options.getContext()
+ ctx.use_certificate_chain_file(cert_path)
+ ctx.set_options(SSL_OP_NO_RENEGOTIATION)
+
+ return cert_options
+
+
+def check_ssl_keys():
+ """
+ Check for SSL cert/key and create them if necessary
+ """
+ ssl_dir = deluge.configmanager.get_config_dir('ssl')
+ if not os.path.exists(ssl_dir):
+ # The ssl folder doesn't exist so we need to create it
+ os.makedirs(ssl_dir)
+ generate_ssl_keys()
+ else:
+ for f in ('daemon.pkey', 'daemon.cert'):
+ if not os.path.exists(os.path.join(ssl_dir, f)):
+ generate_ssl_keys()
+ break
+
+
+def generate_ssl_keys():
+ """
+ This method generates a new SSL key/cert.
+ """
+ digest = 'sha256'
+
+ # Generate key pair
+ pkey = crypto.PKey()
+ pkey.generate_key(crypto.TYPE_RSA, 2048)
+
+ # Generate cert request
+ req = crypto.X509Req()
+ subj = req.get_subject()
+ setattr(subj, 'CN', 'Deluge Daemon')
+ req.set_pubkey(pkey)
+ req.sign(pkey, digest)
+
+ # Generate certificate
+ cert = crypto.X509()
+ cert.set_serial_number(0)
+ cert.gmtime_adj_notBefore(0)
+ cert.gmtime_adj_notAfter(60 * 60 * 24 * 365 * 3) # Three Years
+ cert.set_issuer(req.get_subject())
+ cert.set_subject(req.get_subject())
+ cert.set_pubkey(req.get_pubkey())
+ cert.sign(pkey, digest)
+
+ # Write out files
+ ssl_dir = deluge.configmanager.get_config_dir('ssl')
+ with open(os.path.join(ssl_dir, 'daemon.pkey'), 'wb') as _file:
+ _file.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey))
+ with open(os.path.join(ssl_dir, 'daemon.cert'), 'wb') as _file:
+ _file.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert))
+ # Make the files only readable by this user
+ for f in ('daemon.pkey', 'daemon.cert'):
+ os.chmod(os.path.join(ssl_dir, f), stat.S_IREAD | stat.S_IWRITE)
diff --git a/deluge/decorators.py b/deluge/decorators.py
new file mode 100644
index 0000000..92e3ecf
--- /dev/null
+++ b/deluge/decorators.py
@@ -0,0 +1,219 @@
+#
+# Copyright (C) 2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import inspect
+import re
+import warnings
+from functools import wraps
+from typing import Any, Callable, Coroutine, TypeVar
+
+from twisted.internet import defer
+
+
+def proxy(proxy_func):
+ """
+ Factory class which returns a decorator that passes
+ the decorated function to a proxy function
+
+ :param proxy_func: the proxy function
+ :type proxy_func: function
+ """
+
+ def decorator(func):
+ @wraps(func)
+ def wrapper(*args, **kwargs):
+ return proxy_func(func, *args, **kwargs)
+
+ return wrapper
+
+ return decorator
+
+
+def overrides(*args):
+ """
+ Decorater function to specify when class methods override
+ super class methods.
+
+ When used as
+ @overrides
+ def funcname
+
+ the argument will be the funcname function.
+
+ When used as
+ @overrides(BaseClass)
+ def funcname
+
+ the argument will be the BaseClass
+
+ """
+ stack = inspect.stack()
+ if inspect.isfunction(args[0]):
+ return _overrides(stack, args[0])
+ else:
+ # One or more classes are specified, so return a function that will be
+ # called with the real function as argument
+ def ret_func(func, **kwargs):
+ return _overrides(stack, func, explicit_base_classes=args)
+
+ return ret_func
+
+
+def _overrides(stack, method, explicit_base_classes=None):
+ # stack[0]=overrides, stack[1]=inside class def'n, stack[2]=outside class def'n
+ classes = {}
+ derived_class_locals = stack[2][0].f_locals
+
+ # Find all super classes
+ m = re.search(r'class\s(.+)\((.+)\)\s*\:', stack[2][4][0])
+ class_name = m.group(1)
+ base_classes = m.group(2)
+
+ # Handle multiple inheritance
+ base_classes = [s.strip() for s in base_classes.split(',')]
+ check_classes = base_classes
+
+ if not base_classes:
+ raise ValueError(
+ 'overrides decorator: unable to determine base class of class "%s"'
+ % class_name
+ )
+
+ def get_class(cls_name):
+ if '.' not in cls_name:
+ return derived_class_locals[cls_name]
+ else:
+ components = cls_name.split('.')
+ # obj is either a module or a class
+ obj = derived_class_locals[components[0]]
+ for c in components[1:]:
+ assert inspect.ismodule(obj) or inspect.isclass(obj)
+ obj = getattr(obj, c)
+ return obj
+
+ if explicit_base_classes:
+ # One or more base classes are explicitly given, check only those classes
+ override_classes = re.search(r'\s*@overrides\((.+)\)\s*', stack[1][4][0]).group(
+ 1
+ )
+ override_classes = [c.strip() for c in override_classes.split(',')]
+ check_classes = override_classes
+
+ for c in base_classes + check_classes:
+ classes[c] = get_class(c)
+
+ # Verify that the explicit override class is one of base classes
+ if explicit_base_classes:
+ from itertools import product
+
+ for bc, cc in product(base_classes, check_classes):
+ if issubclass(classes[bc], classes[cc]):
+ break
+ else:
+ raise Exception(
+ 'Excplicit override class "%s" is not a super class of: %s'
+ % (explicit_base_classes, class_name)
+ )
+ if not all(hasattr(classes[cls], method.__name__) for cls in check_classes):
+ for cls in check_classes:
+ if not hasattr(classes[cls], method.__name__):
+ raise Exception(
+ 'Function override "%s" not found in superclass: %s\n%s'
+ % (
+ method.__name__,
+ cls,
+ f'File: {stack[1][1]}:{stack[1][2]}',
+ )
+ )
+
+ if not any(hasattr(classes[cls], method.__name__) for cls in check_classes):
+ raise Exception(
+ 'Function override "%s" not found in any superclass: %s\n%s'
+ % (
+ method.__name__,
+ check_classes,
+ f'File: {stack[1][1]}:{stack[1][2]}',
+ )
+ )
+ return method
+
+
+def deprecated(func):
+ """This is a decorator which can be used to mark function as deprecated.
+
+ It will result in a warning being emitted when the function is used.
+
+ """
+
+ @wraps(func)
+ def depr_func(*args, **kwargs):
+ warnings.simplefilter('always', DeprecationWarning) # Turn off filter
+ warnings.warn(
+ f'Call to deprecated function {func.__name__}.',
+ category=DeprecationWarning,
+ stacklevel=2,
+ )
+ warnings.simplefilter('default', DeprecationWarning) # Reset filter
+ return func(*args, **kwargs)
+
+ return depr_func
+
+
+class CoroutineDeferred(defer.Deferred):
+ """Wraps a coroutine in a Deferred.
+ It will dynamically pass through the underlying coroutine without wrapping where apporpriate.
+ """
+
+ def __init__(self, coro: Coroutine):
+ # Delay this import to make sure a reactor was installed first
+ from twisted.internet import reactor
+
+ super().__init__()
+ self.coro = coro
+ self.awaited = None
+ self.activate_deferred = reactor.callLater(0, self.activate)
+
+ def __await__(self):
+ if self.awaited in [None, True]:
+ self.awaited = True
+ return self.coro.__await__()
+ # Already in deferred mode
+ return super().__await__()
+
+ def activate(self):
+ """If the result wasn't awaited before the next context switch, we turn it into a deferred."""
+ if self.awaited is None:
+ self.awaited = False
+ try:
+ d = defer.Deferred.fromCoroutine(self.coro)
+ except AttributeError:
+ # Fallback for Twisted <= 21.2 without fromCoroutine
+ d = defer.ensureDeferred(self.coro)
+ d.chainDeferred(self)
+
+ def addCallbacks(self, *args, **kwargs): # noqa: N802
+ assert not self.awaited, 'Cannot add callbacks to an already awaited coroutine.'
+ self.activate()
+ return super().addCallbacks(*args, **kwargs)
+
+
+_RetT = TypeVar('_RetT')
+
+
+def maybe_coroutine(
+ f: Callable[..., Coroutine[Any, Any, _RetT]]
+) -> 'Callable[..., defer.Deferred[_RetT]]':
+ """Wraps a coroutine function to make it usable as a normal function that returns a Deferred."""
+
+ @wraps(f)
+ def wrapper(*args, **kwargs):
+ # Uncomment for quick testing to make sure CoroutineDeferred magic isn't at fault
+ # return defer.ensureDeferred(f(*args, **kwargs))
+ return CoroutineDeferred(f(*args, **kwargs))
+
+ return wrapper
diff --git a/deluge/error.py b/deluge/error.py
new file mode 100644
index 0000000..d542dc2
--- /dev/null
+++ b/deluge/error.py
@@ -0,0 +1,96 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+class DelugeError(Exception):
+ def __new__(cls, *args, **kwargs):
+ inst = super().__new__(cls, *args, **kwargs)
+ inst._args = args
+ inst._kwargs = kwargs
+ return inst
+
+ def __init__(self, message=None):
+ super().__init__(message)
+ self.message = message
+
+ def __str__(self):
+ return self.message
+
+
+class DaemonRunningError(DelugeError):
+ pass
+
+
+class InvalidTorrentError(DelugeError):
+ pass
+
+
+class AddTorrentError(DelugeError):
+ pass
+
+
+class InvalidPathError(DelugeError):
+ pass
+
+
+class WrappedException(DelugeError):
+ def __init__(self, message, exception_type, traceback):
+ super().__init__(message)
+ self.type = exception_type
+ self.traceback = traceback
+
+ def __str__(self):
+ return f'{self.message}\n{self.traceback}'
+
+
+class _ClientSideRecreateError(DelugeError):
+ pass
+
+
+class IncompatibleClient(_ClientSideRecreateError):
+ def __init__(self, daemon_version):
+ self.daemon_version = daemon_version
+ msg = (
+ 'Your deluge client is not compatible with the daemon. '
+ 'Please upgrade your client to %(daemon_version)s'
+ ) % {'daemon_version': self.daemon_version}
+ super().__init__(message=msg)
+
+
+class NotAuthorizedError(_ClientSideRecreateError):
+ def __init__(self, current_level, required_level):
+ msg = ('Auth level too low: %(current_level)s < %(required_level)s') % {
+ 'current_level': current_level,
+ 'required_level': required_level,
+ }
+ super().__init__(message=msg)
+ self.current_level = current_level
+ self.required_level = required_level
+
+
+class _UsernameBasedPasstroughError(_ClientSideRecreateError):
+ def __init__(self, message, username):
+ super().__init__(message)
+ self.username = username
+
+
+class BadLoginError(_UsernameBasedPasstroughError):
+ pass
+
+
+class AuthenticationRequired(_UsernameBasedPasstroughError):
+ pass
+
+
+class AuthManagerError(_UsernameBasedPasstroughError):
+ pass
+
+
+class LibtorrentImportError(ImportError):
+ pass
diff --git a/deluge/event.py b/deluge/event.py
new file mode 100644
index 0000000..38fc32f
--- /dev/null
+++ b/deluge/event.py
@@ -0,0 +1,319 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""
+Event module.
+
+This module describes the types of events that can be generated by the daemon
+and subsequently emitted to the clients.
+
+"""
+known_events = {}
+
+
+class DelugeEventMetaClass(type):
+ """
+ This metaclass simply keeps a list of all events classes created.
+ """
+
+ def __init__(cls, name, bases, dct): # pylint: disable=bad-mcs-method-argument
+ super().__init__(name, bases, dct)
+ if name != 'DelugeEvent':
+ known_events[name] = cls
+
+
+class DelugeEvent(metaclass=DelugeEventMetaClass):
+ """
+ The base class for all events.
+
+ :prop name: this is the name of the class which is in-turn the event name
+ :type name: string
+ :prop args: a list of the attribute values
+ :type args: list
+
+ """
+
+ def _get_name(self):
+ return self.__class__.__name__
+
+ def _get_args(self):
+ if not hasattr(self, '_args'):
+ return []
+ return self._args
+
+ name = property(fget=_get_name)
+ args = property(fget=_get_args)
+
+
+class TorrentAddedEvent(DelugeEvent):
+ """
+ Emitted when a new torrent is successfully added to the session.
+ """
+
+ def __init__(self, torrent_id, from_state):
+ """
+ :param torrent_id: the torrent_id of the torrent that was added
+ :type torrent_id: string
+ :param from_state: was the torrent loaded from state? Or is it a new torrent.
+ :type from_state: bool
+ """
+ self._args = [torrent_id, from_state]
+
+
+class TorrentRemovedEvent(DelugeEvent):
+ """
+ Emitted when a torrent has been removed from the session.
+ """
+
+ def __init__(self, torrent_id):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ """
+ self._args = [torrent_id]
+
+
+class PreTorrentRemovedEvent(DelugeEvent):
+ """
+ Emitted when a torrent is about to be removed from the session.
+ """
+
+ def __init__(self, torrent_id):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ """
+ self._args = [torrent_id]
+
+
+class TorrentStateChangedEvent(DelugeEvent):
+ """
+ Emitted when a torrent changes state.
+ """
+
+ def __init__(self, torrent_id, state):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ :param state: the new state
+ :type state: string
+ """
+ self._args = [torrent_id, state]
+
+
+class TorrentTrackerStatusEvent(DelugeEvent):
+ """
+ Emitted when a torrents tracker status changes.
+ """
+
+ def __init__(self, torrent_id, status):
+ """
+ Args:
+ torrent_id (str): the torrent_id
+ status (str): the new status
+ """
+ self._args = [torrent_id, status]
+
+
+class TorrentQueueChangedEvent(DelugeEvent):
+ """
+ Emitted when the queue order has changed.
+ """
+
+ pass
+
+
+class TorrentFolderRenamedEvent(DelugeEvent):
+ """
+ Emitted when a folder within a torrent has been renamed.
+ """
+
+ def __init__(self, torrent_id, old, new):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ :param old: the old folder name
+ :type old: string
+ :param new: the new folder name
+ :type new: string
+ """
+ self._args = [torrent_id, old, new]
+
+
+class TorrentFileRenamedEvent(DelugeEvent):
+ """
+ Emitted when a file within a torrent has been renamed.
+ """
+
+ def __init__(self, torrent_id, index, name):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ :param index: the index of the file
+ :type index: int
+ :param name: the new filename
+ :type name: string
+ """
+ self._args = [torrent_id, index, name]
+
+
+class TorrentFinishedEvent(DelugeEvent):
+ """
+ Emitted when a torrent finishes downloading.
+ """
+
+ def __init__(self, torrent_id):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ """
+ self._args = [torrent_id]
+
+
+class TorrentResumedEvent(DelugeEvent):
+ """
+ Emitted when a torrent resumes from a paused state.
+ """
+
+ def __init__(self, torrent_id):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ """
+ self._args = [torrent_id]
+
+
+class TorrentFileCompletedEvent(DelugeEvent):
+ """
+ Emitted when a file completes.
+ """
+
+ def __init__(self, torrent_id, index):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ :param index: the file index
+ :type index: int
+ """
+ self._args = [torrent_id, index]
+
+
+class TorrentStorageMovedEvent(DelugeEvent):
+ """
+ Emitted when the storage location for a torrent has been moved.
+ """
+
+ def __init__(self, torrent_id, path):
+ """
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ :param path: the new location
+ :type path: string
+ """
+ self._args = [torrent_id, path]
+
+
+class CreateTorrentProgressEvent(DelugeEvent):
+ """
+ Emitted when creating a torrent file remotely.
+ """
+
+ def __init__(self, piece_count, num_pieces):
+ self._args = [piece_count, num_pieces]
+
+
+class NewVersionAvailableEvent(DelugeEvent):
+ """
+ Emitted when a more recent version of Deluge is available.
+ """
+
+ def __init__(self, new_release):
+ """
+ :param new_release: the new version that is available
+ :type new_release: string
+ """
+ self._args = [new_release]
+
+
+class SessionStartedEvent(DelugeEvent):
+ """
+ Emitted when a session has started. This typically only happens once when
+ the daemon is initially started.
+ """
+
+ pass
+
+
+class SessionPausedEvent(DelugeEvent):
+ """
+ Emitted when the session has been paused.
+ """
+
+ pass
+
+
+class SessionResumedEvent(DelugeEvent):
+ """
+ Emitted when the session has been resumed.
+ """
+
+ pass
+
+
+class ConfigValueChangedEvent(DelugeEvent):
+ """
+ Emitted when a config value changes in the Core.
+ """
+
+ def __init__(self, key, value):
+ """
+ :param key: the key that changed
+ :type key: string
+ :param value: the new value of the `:param:key`
+ """
+ self._args = [key, value]
+
+
+class PluginEnabledEvent(DelugeEvent):
+ """
+ Emitted when a plugin is enabled in the Core.
+ """
+
+ def __init__(self, plugin_name):
+ self._args = [plugin_name]
+
+
+class PluginDisabledEvent(DelugeEvent):
+ """
+ Emitted when a plugin is disabled in the Core.
+ """
+
+ def __init__(self, plugin_name):
+ self._args = [plugin_name]
+
+
+class ClientDisconnectedEvent(DelugeEvent):
+ """
+ Emitted when a client disconnects.
+ """
+
+ def __init__(self, session_id):
+ self._args = [session_id]
+
+
+class ExternalIPEvent(DelugeEvent):
+ """
+ Emitted when the external ip address is received from libtorrent.
+ """
+
+ def __init__(self, external_ip):
+ """
+ Args:
+ external_ip (str): The IP address.
+ """
+ self._args = [external_ip]
diff --git a/deluge/httpdownloader.py b/deluge/httpdownloader.py
new file mode 100644
index 0000000..700ade0
--- /dev/null
+++ b/deluge/httpdownloader.py
@@ -0,0 +1,333 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import cgi
+import logging
+import os.path
+import zlib
+
+from twisted.internet import reactor
+from twisted.internet.defer import Deferred
+from twisted.python.failure import Failure
+from twisted.web import client, http
+from twisted.web._newclient import HTTPClientParser
+from twisted.web.error import Error, PageRedirect
+from twisted.web.http_headers import Headers
+from twisted.web.iweb import IAgent
+from zope.interface import implementer
+
+from deluge.common import get_version
+
+log = logging.getLogger(__name__)
+
+
+class CompressionDecoder(client.GzipDecoder):
+ """A compression decoder for gzip, x-gzip and deflate."""
+
+ def deliverBody(self, protocol): # NOQA: N802
+ self.original.deliverBody(CompressionDecoderProtocol(protocol, self.original))
+
+
+class CompressionDecoderProtocol(client._GzipProtocol):
+ """A compression decoder protocol for CompressionDecoder."""
+
+ def __init__(self, protocol, response):
+ super().__init__(protocol, response)
+ self._zlibDecompress = zlib.decompressobj(32 + zlib.MAX_WBITS)
+
+
+class BodyHandler(HTTPClientParser):
+ """An HTTP parser that saves the response to a file."""
+
+ def __init__(self, request, finished, length, agent, encoding=None):
+ """BodyHandler init.
+
+ Args:
+ request (t.w.i.IClientRequest): The parser request.
+ finished (Deferred): A Deferred to handle the finished response.
+ length (int): The length of the response.
+ agent (t.w.i.IAgent): The agent from which the request was sent.
+ """
+ super().__init__(request, finished)
+ self.agent = agent
+ self.finished = finished
+ self.total_length = length
+ self.current_length = 0
+ self.data = b''
+ self.encoding = encoding
+
+ def dataReceived(self, data): # NOQA: N802
+ self.current_length += len(data)
+ self.data += data
+ if self.agent.part_callback:
+ self.agent.part_callback(data, self.current_length, self.total_length)
+
+ def connectionLost(self, reason): # NOQA: N802
+ if self.encoding:
+ self.data = self.data.decode(self.encoding).encode('utf8')
+ with open(self.agent.filename, 'wb') as _file:
+ _file.write(self.data)
+ self.finished.callback(self.agent.filename)
+ self.state = 'DONE'
+ HTTPClientParser.connectionLost(self, reason)
+
+
+@implementer(IAgent)
+class HTTPDownloaderAgent:
+ """A File Downloader Agent."""
+
+ def __init__(
+ self,
+ agent,
+ filename,
+ part_callback=None,
+ force_filename=False,
+ allow_compression=True,
+ handle_redirect=True,
+ ):
+ """HTTPDownloaderAgent init.
+
+ Args:
+ agent (t.w.c.Agent): The agent which will send the requests.
+ filename (str): The filename to save the file as.
+ force_filename (bool): Forces use of the supplied filename,
+ regardless of header content.
+ part_callback (func): A function to be called when a part of data
+ is received, it's signature should be:
+ func(data, current_length, total_length)
+ """
+
+ self.handle_redirect = handle_redirect
+ self.agent = agent
+ self.filename = filename
+ self.part_callback = part_callback
+ self.force_filename = force_filename
+ self.allow_compression = allow_compression
+ self.decoder = None
+
+ def request_callback(self, response):
+ finished = Deferred()
+
+ if not self.handle_redirect and response.code in (
+ http.MOVED_PERMANENTLY,
+ http.FOUND,
+ http.SEE_OTHER,
+ http.TEMPORARY_REDIRECT,
+ ):
+ location = response.headers.getRawHeaders(b'location')[0]
+ error = PageRedirect(response.code, location=location)
+ finished.errback(Failure(error))
+ elif response.code >= 400:
+ error = Error(response.code)
+ finished.errback(Failure(error))
+ else:
+ headers = response.headers
+ body_length = int(headers.getRawHeaders(b'content-length', default=[0])[0])
+
+ if headers.hasHeader(b'content-disposition') and not self.force_filename:
+ content_disp = headers.getRawHeaders(b'content-disposition')[0].decode(
+ 'utf-8'
+ )
+ content_disp_params = cgi.parse_header(content_disp)[1]
+ if 'filename' in content_disp_params:
+ new_file_name = content_disp_params['filename']
+ new_file_name = sanitise_filename(new_file_name)
+ new_file_name = os.path.join(
+ os.path.split(self.filename)[0], new_file_name
+ )
+
+ count = 1
+ fileroot = os.path.splitext(new_file_name)[0]
+ fileext = os.path.splitext(new_file_name)[1]
+ while os.path.isfile(new_file_name):
+ # Increment filename if already exists
+ new_file_name = f'{fileroot}-{count}{fileext}'
+ count += 1
+
+ self.filename = new_file_name
+
+ cont_type_header = headers.getRawHeaders(b'content-type')[0].decode()
+ cont_type, params = cgi.parse_header(cont_type_header)
+ # Only re-ecode text content types.
+ encoding = None
+ if cont_type.startswith('text/'):
+ encoding = params.get('charset', None)
+ response.deliverBody(
+ BodyHandler(response.request, finished, body_length, self, encoding)
+ )
+
+ return finished
+
+ def request(self, method, uri, headers=None, body_producer=None):
+ """Issue a new request to the wrapped agent.
+
+ Args:
+ method (bytes): The HTTP method to use.
+ uri (bytes): The url to download from.
+ headers (t.w.h.Headers, optional): Any extra headers to send.
+ body_producer (t.w.i.IBodyProducer, optional): Request body data.
+
+ Returns:
+ Deferred: The filename of the of the downloaded file.
+ """
+ if headers is None:
+ headers = Headers()
+
+ if not headers.hasHeader(b'User-Agent'):
+ version = get_version()
+ user_agent = 'Deluge/%s (https://deluge-torrent.org)' % version
+ headers.addRawHeader('User-Agent', user_agent)
+
+ d = self.agent.request(
+ method=method, uri=uri, headers=headers, bodyProducer=body_producer
+ )
+ d.addCallback(self.request_callback)
+ return d
+
+
+def sanitise_filename(filename):
+ """Sanitises a filename to use as a download destination file.
+
+ Logs any filenames that could be considered malicious.
+
+ filename (str): The filename to sanitise.
+
+ Returns:
+ str: The sanitised filename.
+ """
+
+ # Remove any quotes
+ filename = filename.strip('\'"')
+
+ if os.path.basename(filename) != filename:
+ # Dodgy server, log it
+ log.warning(
+ 'Potentially malicious server: trying to write to file: %s', filename
+ )
+ # Only use the basename
+ filename = os.path.basename(filename)
+
+ filename = filename.strip()
+ if filename.startswith('.') or ';' in filename or '|' in filename:
+ # Dodgy server, log it
+ log.warning(
+ 'Potentially malicious server: trying to write to file: %s', filename
+ )
+
+ return filename
+
+
+def _download_file(
+ url,
+ filename,
+ callback=None,
+ headers=None,
+ force_filename=False,
+ allow_compression=True,
+ handle_redirects=True,
+):
+ """Downloads a file from a specific URL and returns a Deferred.
+
+ A callback function can be specified to be called as parts are received.
+
+ Args:
+ url (str): The url to download from.
+ filename (str): The filename to save the file as.
+ callback (func): A function to be called when partial data is received,
+ it's signature should be: func(data, current_length, total_length)
+ headers (dict): Any optional headers to send.
+ force_filename (bool): Force using the filename specified rather than
+ one the server may suggest.
+ allow_compression (bool): Allows gzip & deflate decoding.
+
+ Returns:
+ Deferred: The filename of the downloaded file.
+
+ Raises:
+ t.w.e.PageRedirect
+ t.w.e.Error: for all other HTTP response errors
+ """
+
+ agent = client.Agent(reactor)
+
+ if allow_compression:
+ enc_accepted = ['gzip', 'x-gzip', 'deflate']
+ decoders = [(enc.encode(), CompressionDecoder) for enc in enc_accepted]
+ agent = client.ContentDecoderAgent(agent, decoders)
+ if handle_redirects:
+ agent = client.RedirectAgent(agent)
+
+ agent = HTTPDownloaderAgent(
+ agent, filename, callback, force_filename, allow_compression, handle_redirects
+ )
+
+ # The Headers init expects dict values to be a list.
+ if headers:
+ for name, value in list(headers.items()):
+ if not isinstance(value, list):
+ headers[name] = [value]
+
+ return agent.request(b'GET', url.encode(), Headers(headers))
+
+
+def download_file(
+ url,
+ filename,
+ callback=None,
+ headers=None,
+ force_filename=False,
+ allow_compression=True,
+ handle_redirects=True,
+):
+ """Downloads a file from a specific URL and returns a Deferred.
+
+ A callback function can be specified to be called as parts are received.
+
+ Args:
+ url (str): The url to download from.
+ filename (str): The filename to save the file as.
+ callback (func): A function to be called when partial data is received,
+ it's signature should be: func(data, current_length, total_length).
+ headers (dict): Any optional headers to send.
+ force_filename (bool): Force the filename specified rather than one the
+ server may suggest.
+ allow_compression (bool): Allows gzip & deflate decoding.
+ handle_redirects (bool): HTTP redirects handled automatically or not.
+
+ Returns:
+ Deferred: The filename of the downloaded file.
+
+ Raises:
+ t.w.e.PageRedirect: If handle_redirects is False.
+ t.w.e.Error: For all other HTTP response errors.
+ """
+
+ def on_download_success(result):
+ log.debug('Download success!')
+ return result
+
+ def on_download_fail(failure):
+ log.warning(
+ 'Error occurred downloading file from "%s": %s',
+ url,
+ failure.getErrorMessage(),
+ )
+ result = failure
+ return result
+
+ d = _download_file(
+ url,
+ filename,
+ callback=callback,
+ headers=headers,
+ force_filename=force_filename,
+ allow_compression=allow_compression,
+ handle_redirects=handle_redirects,
+ )
+ d.addCallbacks(on_download_success, on_download_fail)
+ return d
diff --git a/deluge/i18n/__init__.py b/deluge/i18n/__init__.py
new file mode 100644
index 0000000..701d2af
--- /dev/null
+++ b/deluge/i18n/__init__.py
@@ -0,0 +1,15 @@
+from .util import (
+ I18N_DOMAIN,
+ get_languages,
+ set_language,
+ setup_mock_translation,
+ setup_translation,
+)
+
+__all__ = [
+ 'I18N_DOMAIN',
+ 'set_language',
+ 'get_languages',
+ 'setup_translation',
+ 'setup_mock_translation',
+]
diff --git a/deluge/i18n/af.po b/deluge/i18n/af.po
new file mode 100644
index 0000000..ad60b49
--- /dev/null
+++ b/deluge/i18n/af.po
@@ -0,0 +1,6178 @@
+# Afrikaans translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Afrikaans <af@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Alle"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktief"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Kontroleer"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Laai tans af"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Besaai"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Onderbreek"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "In wagtou"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Fout"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Naam"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Vordering"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Grootte"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Afgelaai"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Opgelaai"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Verhouding"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Aflaaispoed"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Oplaaispoed"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Aflaai-limiet"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Oplaai-limiet"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Eweknieë"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Beskikbaar"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Bygevoeg"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automaties beheerd:"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Waarskuwing"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Verkondig OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Verkondig Gestuur"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Koppelvlak"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Aflaaie"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandwydte"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Wagtou"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Netwerk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Instaanbediener"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Kas"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Ander"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Agtergrondproses"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Inproppe"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanië"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algerië"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikaanse Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktika"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigue en Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentinië"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenië"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australië"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Oostenryk"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbeidzjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrein"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesj"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Wit-Rusland (Belarus)"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "België"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermunda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhoetan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivië"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnië en Herzegowina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet-eiland"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasilië"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Britse Indiese Oseaan Gebied"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgarye"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Boerkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundie"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kameroon"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kaap Verdie"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kaaimanseilande"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Sentraal Afrika Republiek"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tsjad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Sjina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Kersfees-eiland"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolombië"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo, Demokratiese republiek van die"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook-eilande"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Ivoorkus"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroasië"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tsjeggiese Republiek"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Denemarke"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djiboeti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikaanse Republiek"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipte"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Esland"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopië"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkland-eilande (Malvinas)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faroëreilande"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frankryk"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Frans-Guinee"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Franse Polinesië"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Franse Suidelike gebiede"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gaboen"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambië"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgië"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Duitsland"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Griekeland"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Gautemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haïti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hongarye"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Ysland"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indië"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesië"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Islamitiese Republiek"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ierland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italië"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaika"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey (Eiland)"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordanië"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea, Demokratiese Volksrepubliek"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korea, Republiek"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Koeweit"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Lao, Demokratiese Volksrepubliek"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letland"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberië"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libië"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litoue"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshall-eilande"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Meksiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesië, Verenigde State van"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldowië"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolië"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Morokko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mosambiek"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibië"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Nederland"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nieu-Kaledonië"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nieu-Seeland"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigerië"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolk-eiland"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Noord-Mariana-eilande"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Noorweë"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestynse Gebied, Besette"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Fillipyne"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Pole"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romenië"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Russiese Federasie"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Sint-Bartholomeus"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "St. Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts en Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "St. Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "St. Maarten"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "St. Pierre en Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "St. Vincent en die Grenadine"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tomé en Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saoedi-Arabië"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serwië"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapoer"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slowakye"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slowenië"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Solomon-eilande"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalië"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Suid-Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Suid-Georgië en die Suidelijke Sandwich-eilande"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spanje"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Soedan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard en Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Swede"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Switserland"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Sirië"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadjikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzanië, Verenigde Republiek van"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Oos-Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad en Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisië"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkye"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Toerkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks en Caicos Eilande"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Toewaloe"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Oekraïne"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Verenigde Arabiese Emirate"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Verenigde Koninkryk"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Verenigde State"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Verenigde State Kleiner uitliggende eilande"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Oesbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Viëtnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Virgin Eilande, Brits"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis en Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Westelike Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambië"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Agtergrondproses nie aan die gang nie"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Leêrnaam"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Kies 'n lêer"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Kies 'n gids"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrentlêers"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Alle lêers"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Bediener:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ongeldige Lêer"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Kies 'n .torrent-lêer"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Ongeldige URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Laai tans af..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Aflaai het misluk"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Besonderhede:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Gebruikernaam:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Wagwoord:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Ander..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Nie gekoppel nie"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioriteit"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Nie gekoppel nie..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Onbeperk"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Af"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Op"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Aflyn"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Aanlyn"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Gekoppel"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Gasheer"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Weergawe"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Aan"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Inprop"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Kies die inprop"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Geen"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etikette"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Geen etiket nie"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Klïent Weergawe</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Aan"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Af"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adres"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Kliënt"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Skuif voltooide lêers na:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Verbindings:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Aflaaispoed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Oplaaispoed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Vanaf:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Gasheernaam:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Poort:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Instellings"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Verbindings"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Algemeen</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Naam:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Bokant"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Onderkant"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Redigeer trackers"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opsies"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Opdrag"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP lys (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Teks (gezipt)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Teks (sonder kompressie)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokkeerlys"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Foutiewe leier"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Ongeldige magiese kode"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ongeldige weergawe"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dae"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Kontrolleer vir 'n nuwe lys elke:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Voer blokkeerlys in tydens programbegin"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Instellings</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Laai die blokkeerlys-lêer af indien nodig en voer die lêer in."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Kontroleer aflaai en invoering"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Laai 'n nuwe blokkeerlys af en voer dit in"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forseer aflaai en invoering"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blokkeerlys is op datum"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opsies</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipe:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Datum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Lêergrootte"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent Voltooid"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent bygevoeg"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Voer uit"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Gebeurtenis"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Gee Opdrag</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Opdragte</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Toesigvouer bestaan nie"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Pad bestaan nie"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Hou toesig oor vouereienskappe"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Kies 'n vouer"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Skakel toesigvouer aan"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Toesigvouer</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Skrap .torrent nadat dit bygevoeg is"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiket "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Hoof"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maksimum verbindings:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maksimum oplaai-gleuwe:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maksimum aflaaispoed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandwydte</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Wagtou</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Hou toesig oor vouers:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Die Deluge web-koppelvlak is nie geïnstalleer nie, installeer die\n"
+"koppelvlak en probeer weer."
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Skakel web-koppelvlak aan"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Skakel SSL aan"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Luisterpoort:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Leë etiket"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Etiket bestaan reeds"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Onbekende etiket"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Onbekende torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Etiket opsies"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiket"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Etiket Opsies</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Toepassing van Wagtou-instellings:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Pas automaties die etiket toe:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Voeg etiket by"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Voeg etiket by</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etikette</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Vertoon kennisgewing flikker"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Opspring kennisgewings is nie geaktiveer nie"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Vertoon kennisgewing"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Klank-kennisgewings nie geaktiveer nie"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame is nie geïnstalleer nie"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Klank-kennisgewing het gefaal %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Klank-kennisgewing Sukses"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Voltooide Torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Kies klanklêer"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+"'n Fout het voorgekom tydens die versending van die kennisgewings-e-pos: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "E-pos ter kennisgewing gestuur."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent \"%(name)s\" voltooi"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Hierdie e-pos is gestuur om u bedag te maak dat Deluge klaar is met die "
+"aflaai van \"%(name)s\", wat %(num_files)i lêers insluit. Skakel e-pos "
+"kennisgewings af in Deluge se voorkeure, om nie meer hierdie bedagmakings-e-"
+"posse te ontvang nie.\n"
+"\n"
+"Dankie,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Stelsellaai ikoon flikker geaktiveer"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Opspring vensters geaktiveer"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Klanke geaktiveer"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Gebruikerskoppelvlak Kennisgewings</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Ontvangers</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Bediener benodig TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-pos Kennisgewings</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Hierdie konfigurasie beteken nie dat u wel kennisgewings vir hierdie gebeure "
+"sal ontvang nie."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Inskrywings"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Klankaanpassing"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Pak uit na:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Skep 'n subvouer met die naam van die torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Hierdie opsie skep 'n subvouer met die naam van die torrent binne die gekose "
+"uitpakvouer en plaas die uitgepakte lêers daar."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Aflaai-limiet"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Oplaai-limiet"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktiewe Torrents:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktiewe Aflaaie:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ar.po b/deluge/i18n/ar.po
new file mode 100644
index 0000000..bfc057c
--- /dev/null
+++ b/deluge/i18n/ar.po
@@ -0,0 +1,6191 @@
+# Arabic translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Arabic <ar@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "ك.بايت"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "م.بايت"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "ج.بايت"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "كيلو"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "ميجا"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "جيجا"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "ك.بايت/ث"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "م.بايت/ث"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "ج.بايت/ث"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "الكل"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "يجري الفحص"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "خطأ"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "الاسم"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "المنجز"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "الحالة"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "الحجم"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "تم تنزيله"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "مرفوع"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "النسبة"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "سرعة التنزيل"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "سرعة الرفع"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "الأنداد"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "متاح"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "اُضيفت"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "المتتبع"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "الوقت المتبقي"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "إعطاء الأولوية للأول/الأخير"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "مدار تلقائيا"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "الأجزاء"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "تحذير"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "الإعلان حسن"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "تم إرسال الإعلان"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "الواجهة"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "تنزيلات"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "عرض النطاق"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "قائمة الانتظار"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "الشبكة"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "بروكسي"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "التخزين المؤقت"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "أخرى"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "دايمون"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "مُلحقات"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "أفغانستان"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "جزر أولان"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "ألبانيا"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "الجزائر"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "ساموا الأمريكية"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "أندورا"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "أنجولا"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "أنجويلا"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "انتاركتيكا"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "أنتيغا وباربودا"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "الأرجنتين"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "أرمينيا"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "أروبا"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "أستراليا"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "النّمسا"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "أذربيجان"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "جزر الباهاما"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "البحرين"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "بنجلاديش"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "باربادوس"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "روسيا البيضاء"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "بلجيكا"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "بليز"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "بنين"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "جزر البرمودا"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "بوتان"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "بوليفيا"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "البوسنة والهرسك"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "بوتسوانا"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "جزيرة بوفي"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "البرازيل"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "مقاطعة المحيط الهندي البريطانيّة"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "بروناي دار السّلام"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "بلغاريا"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "بوركينا فاسو"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "بوروندي"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "كامبوديا"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "الكاميرون"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "كندا"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "الرأس الاخضر كاب فيردي"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "جزر الكايمان"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "جمهورية افريقيا الوسطى"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "تشاد"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "تشيلي"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "الصّين"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "جزيرة الكريسماس"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "جزر جوز الهند (كيلنج)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "كولومبيا"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "جزر القمر"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "الكونغو"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "جمهورية الكونغو الديمقراطية"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "جزر كوك"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "كوستاريكا"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "ساحل العاج"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "كرواتيا"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "كوبا"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "قبرص"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "التشيك"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "الدّنمارك"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "جيبوتي"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "دومينيكا"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "جمهورية الدومينيكان"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "الإكوادور"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "مصر"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "السّلفادور"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "غينيا الاستوائية"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "إريتريا"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "استونيا"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "اثيوبيا"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "جزر فوكلاند"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "جزر فارو"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "فيجي"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "فنلندا"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "فرنسا"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "غيانا الفرنسية"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "بولينسيا الفرنسية"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "الأقاليم الشمالية الفرنسية"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "الغابون"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "غامبيا"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "جورجيا"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "ألمانيا"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "غانا"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "جبل طارق"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "اليونان"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "جرين ﻻند"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "غرناطة"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "جزر جوادلوب"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "غوام"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "جواتيمالا"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "غيرنسي"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "غينيا"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "غينيا-بيساو"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "غيانا"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "هايتي"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "جزيرة هيرد وجزر مَكْدونالد"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "الكرسي الرسولي (دولة الفاتيكان)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "هندوراس"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "هونج كونج"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "المجر"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "آيسلندا"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "الهند"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "إندونيسيا"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "إيران، الجمهوريّة الإسلاميّة الإيرانيّة"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "العراق"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "إيرلندا"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "جزيرة مان"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "اسرائيل"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "ايطاليا"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "جامايكا"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "اليابان"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "جيرسي"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "الأردن"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "كازاخستان"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "كينيا"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "كيريباتي"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "كوريا، جمهورية كوريا الشّعبيّة الدّيموقراطيّة"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "كوريا، جمهوريّة كوريا"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "الكويت"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "قيرغيزستان"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "لاوس"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "لاتفيا"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "لبنان"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "ليسوتو"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "ليبيريا"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "الجماهيريّة العربيّة اللّيبيّة"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "ليشتنشتاين"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "ليثوانيا"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "لوكسمبورغ"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "مكّاو"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "مقدونيا"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "مدغشقر"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "مالاوي"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "ماليزيا"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "مولدافيا"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "مالي"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "مالطة"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "جزر مارشال"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "مارتينيك"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "موريتانيا"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "موريشيوس"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "مايوت"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "المكسيك"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "دول مايكرونيزيا الإتحادية"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "مولدافيا"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "موناكو"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "منغوليا"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "الجبل الأسود"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "مونتسيرات"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "المغرب"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "موزامبيق"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "ميانمار"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "ناميبيا"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "ناورو"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "نيبال"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "هولندا"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "جزر الأنتيل الهولندية"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "كاليدوينا الجديدة"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "نيوزيلندا"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "نيكاراجوا"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "النّيجر"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "نيجيريا"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "نييوي"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "جزيرة نورفولك"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "جزر ماريانا الشمالية"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "النرويج"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "سلطنة عمان"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "باكستان"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "بالاو"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "الأراضي الفلسطينية المحتلة"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "بنما"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "بابوا غينيا الجديدة"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "باراجواي"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "البيرو"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "الفلبّين"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "جزر بيتكيرن"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "بولندا"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "البرتغال"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "بورتوريكو"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "قطر"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "ريونيون"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "رومانيا"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "روسيا"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "راوندا"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "سانت بارتيليمي"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "سانت هيلينا"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "سانت كيتس ونيفيس"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "سانت لوسيا"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "سانت مارتن"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "سان بيار وميكلون"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "سانت فنسنت والجرينادينز"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "ساموا"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "سان مارينو"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "ساو تومي وبرينسيبي"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "السعودية"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "السنغال"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "صربيا اللعينة"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "سيشيل"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "سيراليون"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "سنغافورة"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "سلوفاكيا"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "سلوفينيا"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "جزر سليمان"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "الصّومال"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "جنوب إفريقيا"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "جورجيا الجنوبيه وجزر سندويتش الجنوبية"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "أسبانيا"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "سريلانكا"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "السّودان"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "سورينام"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "سفالبارد وجان مايان"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "سوازيلاند"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "السويد"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "سويسرا"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "سوريا"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "طاجكستان"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "جمهورية تنزانيا المتحدة"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "تايلاند"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "تيمور الشرقية"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "توغو"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "توكلو"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "تونجا"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "ترينيداد وتوباغو"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "تونس"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "تركيّا"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "توركمنستان"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "جزر تركس وكايكوس"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "توفالو"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "أوغندا"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "أوكرانيا"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "الامارات"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "المملكة المتحدة"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "الولايات المتحدة"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "جزر الولايات المتحدة البعيدة الصغيرة"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "أوروغواي"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "أوزبكستان"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "فانوتوا"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "فنزويلا"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "فيتنام"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "الجزر العذراء البريطانية"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "الجزر العذراء الأمريكية"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "والس وفوتونا"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "الصحراء الغربية"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "اليمن"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "زامبيا"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "زيمبابوي"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "اسم الملف"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "طبقة (و تعني أيضاُ صف أو درجة)"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "اختر ملفا"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "اختر مجلّدًا"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "حفظ ملف .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "ملفات التورينت"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "كل الملفات"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "دلوج"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"هذا البرنامج حُر ومجاني، تستطيع إعادة توزيعه و/أو تعديله تحت بنود رخصة جنو "
+"العمومية كما نُشر من مؤسسة البرمجيات الحُرة، إما الإصدار الثالث من الرخصة أو "
+"أي إصدار بعده (باختيارك). \n"
+"هذا البرنامج وُزِع على أمل أن يكون مفيدا، ولكن بدون أي ضمانات، حتى بدون أ ي "
+"ضمانات ضمنية للرواج أو التسويق لغرض معين. انظر رخصة جنو العمومية لمزيد من "
+"التفاصيل. \n"
+"من المفترض أنك تلقيت نسخة من رخصة جنو العمومية مع هذا البرنامج، إذا لم يحدث "
+"ذلك أنظر <http://www.gnu.org/licenses>. \n"
+"بالإضافة إلى ذلك، وكاستثناء خاص، فإن مالكي حقوق النسخ قد أعطوا الإذن لربط "
+"الكود الخاص بأجزاء هذا البرنامج مع مكتبة OpenSSL. يجب عليك الامتثال لرخصة "
+"جنو العمومية من جميع النواحي لجميع الكود المُستخدم بخلاف OpenSSL. \n"
+"إذا عدّلت ملف أو أكثر مع هذا الاستثناء، قد توسع هذا الاستثناء إلى إصدارك "
+"الخاص من الملف أو الملفات المُعدّلة، ولكنك غير مُلزم للقيام بذلك. إذا كنت لا "
+"ترغب في القيام بذلك، احذف عبارة الاستثناء هذه من إصدارتك. إذا حذفت عبارة "
+"الاستثناء هذه من جميع ملفات المصدر في البرنامج، احذفها أيضًا من هنا."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "الخادم:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "تورنت"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "ملف غير صالح"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "اختر ملف تورينت"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "عنوان غير صالح"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "التنزيل فشل"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "التفاصيل:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "اسم المستخدم:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "كلمة السر:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "أخرى ..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "غير منصل"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "عقد DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "نعم"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "الأولوية"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_الحالة"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_تفاصيل"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "م_لفات"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_الأقران"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_خيارات"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "غير محدود"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "لأسفل"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "لأعلى"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "غير متصل"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "متصل"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "متّصل"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "حصل خطأ خلال إضافة المضيف"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "اسم المستخدم"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "المستوى"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "مُفعّل"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "ملحقة"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "اختر المُلحقة"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "الحالات"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "المتتبعون:"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "لا شئ"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "المدير"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "التسميات"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " تم أضافة التورنت"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " تم أضافة التورنت"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "تعيين كغير محدود"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "مفعّل"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "مُعَطْل"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "عَطّل"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "عنوان"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "العميل"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "إنشاء ملف تورنت"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "التورنت المنتظرة"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_إزالة"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "أضف ملفات التورنت آليا عند الاتصال"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_ملف"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "إ_ظافة ملف توررنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "إنشاء ملف تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "ا_خرج"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_حرّر"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "مدير الإتصال"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "ملف تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "إ_عرض"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_شريط الأدوات"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "الشريط ال_جانبي"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "شريط الحالة"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "التبويبات"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_أعمدة"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "الشريط ال_جانبي"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "عرض التراكرات"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_مساعدة"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "الأسئلة المكررة"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "أضف تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "اضف تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "أزِل تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "أزِل تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "إيقاف ملفات التورنت المحددة مؤقتا"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "إيقاف مؤقت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "اكمل التورنتات المحددة"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "عاود"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "قدم التورنت في الطابور"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "اعلي الصف"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "أخّر التورنت في الطابور"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "اسفل الصف"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "التفضيلات"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "مدير الإتصال"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "معطّل"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "المصافحة"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "هذا أو ذاك"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "أظهر سرعة الجلسة في شريط العنوان"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "فعل أيقونة صينية النظام"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "صغر إلى الصينية عند الغلق"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "ابدأ في الصينية"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "حماية صينية النظام بكلمة سرّ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "نقل المكتمل إلى:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "نسخ ملفات التورنت (torrent.) إلى:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "حذف نسخة ملف التورنت عند الإزالة"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "تنزيل إلى"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "أعطي الأهمية لقطع التورنت الأولى والأخيرة"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "أعط أولوية أكبر لأول و آخر قطعتين من كل ملف في التورنت"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "اضف التورنتات فى حالة الايقاف المؤقت"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "دائما أعرض"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "جلب التركيز إلى مربع الحوار"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "العدد الأقصى للاتصالات المسموح بها. -1 تعني غير محدودة."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "الإتصالات:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "العدد الأقصى لشرائح الرفع لجميع التورنتات. -1 تعني غير محدود."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "سرعة التحميل القصوى لجميع التورنتات. -1 تعني غير محدود"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "سرعة التنزيل:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "سرعة الرفع القصوى لجميع التورنتات. - 1 تعني غير محدودة."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "سرعة الرفع:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "تجاهل الحدود في الشبكة المحلية"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "معدل الحد من الIP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "العدد الأقصى لشرائح الرفع للتورنت الواحد. -1 تعني لا حد أقصى."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "العدد الأقصى لعدد الاتصالات للتورنت الواحد. -1 تعني لا حد أقصى."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "عشواىٔية"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "المنفذ النشط:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "اختبر المنفذ النشط"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "من:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "إلى:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "المستوى:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "التشفير"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "اشبك وشغل العالمي"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "تبادل الأنداد"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "مستكشف الخدمات المحلية وجد نظراء في شبكتك."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "قد يزيد جدول التلبيد الموزع من عدد الاتصالات الفاعلة."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "البايت من شروط الخدمة للبيرز:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "اسم المستضيف:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "المنفذ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "حجم التخزين المؤقت (16 KiB blocks):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "انتهاء التخزين المؤقت (بالثواني):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "حجم التخزين المؤقت"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "قراءة حجم التخزين المؤقت"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"ساعدنا في تحسين \"Deluge\" بارسال رقم إصدارة \"Python\" ورقم إصدارة "
+"\"PyGTK\" و نظام التشغيل ونوعية المعالج. بالتأكيد لن يرسل البرنامج أية "
+"معلومات أخرى."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "نعم, أرجو ارسال الإحصائيات كمجهولة الهوية."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "المكان:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon بورت:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "منفذ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "اسمح بالاستخدام عن بعد"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "الاتصالات"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "تفحص الموقع بشكل دوريا بحثاً عن الإصدارات الجديدة"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "الإصدارة:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "المؤلف:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "الصفحة الرئيسية:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "بريد الؤلف:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "معلومات"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "إضافة نظير"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:بورت"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>عام</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "أضف"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "احذف"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "أضف معلومات التلبيد"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "معلومات التلبيد:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "التراكرات:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "اضافة مستضيف"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "الوجهة:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "إصدارة جديدة"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_الذهاب للموقع"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "لا تظهر مربع الحوار هذا في المستقبل"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "الاسم:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "التعليقات:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "نقل المكتمل"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "وقف الرفع عند نسبة:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "حذف عند الوصول لنسبة:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_عدّل المتعقبين"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "الأعلى"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "القاع"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "أضف تورنتات"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_عنوان إنترنت"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "معلومات ال_تلبيد"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "أضفه في حالة الإ_لباث"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "أعطي الأولية للقطع الأولى والأخيرة"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "طبّق على الكل"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "استرجع القيم الإفتراضية"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "أ_ظهر دِلَج"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "حد سرعة التن_زيل"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "حد سرعة ال_رفع"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "الخروج واغلاق الديمون"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "حرّر المقتفين"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "اضافة اي بي الند"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "تحرير التراكر"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "التراكر:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "أدخل المسار البعيد"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "المسار:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "إنشاء ملف تورنت"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "م_جلد"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "المسار الب_عيد"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "موقع داعم"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "حجم القطعة:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "ضع علامة خاص"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "أضف ملف التورنت هذا إلى هذه الجلسة"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "خيارات"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "أحفظ التورنت إلى"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "ا_ستئناف"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "تكملة التورانت المختاره"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "ال_خيارات"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_الطابور"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_حدّث المتعقب"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_أزل التورنت"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "أعد الفحص"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "علامة"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_اختر الكلّ"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "أ_لبث الكل"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "ا_ستأنف الكل"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "حد الإ_تصال"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "حد رفع الفتحات"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "إدارة آ_لية"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "أضف تراكر"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "أضف رابط"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "المسار:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_مدّد الكل"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "أمر"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "كلمة المرور"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "من"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "إلى"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "استخدم منافذ عشوائية"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "الحد الأقصى للاتصالات"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "نسبة المشاركة"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "طبق"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "قائمة الملكية الفكرية"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "نص نظراء-آمنون (مضغوط)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "نص النظراء الجارديان (غير مضغوط)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "القائمة السوداء"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "تعقب خاطىء"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "رمز خاطىء"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "نسخة باطلة"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "الأيام"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "تفقد وجود قائمة جديده كل:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "استيراد قائمة المحظورين عند بدء التشغيل"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>الإعدادات</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "حمل ملف قائمة المحظورين عند الحاجه ، و قم بإستيراد الملف."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "اقحص التحميل والغستيراد"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "حمل قائمه محظورين جديده وقم بإستيرادها."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "اجبر التحميل والاستيراد"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "قائمة الحظر مُحدثة"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>خيارات</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "الصنف"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "التّاريخ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "حجم الملف:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>معلومات</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "اكتمل التورنت"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "تمّت اضافة التورنت"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "تنفيذ"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "الحدث"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b> إضافة أمر </b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>الأوامر</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "اختر مجلدا"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "أقصى سرعة رفع:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "أقصى الإتصالات"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "الحد الأقصى لشرائح الرفع:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "أقصى سرعة تنزيل:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>عرض النطاق</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>الإنتظار</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "ثوان"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr "واجهة الوِب لـ \"دليوج\" غير مثبتة، رجاءً ثبت الواجهة وحاول مجددا"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "تفعيل واجهة الوِب"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "تفعيل SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "منفذ الاستماع:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "التسمية غير صحيحة، و الأحرف صالحة هي: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "تسمية فارغه"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "التسمية موجود بالفعل"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "تسمية مجهولة"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "تورنت مجهول"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "خيارات_التسمية (أو إحتمال تعني العلامة)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_حذف العلامة (أو إحتمال تعني التسمية)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_إضافة علامة (أو إحتمال تعني التسمية)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "خيارات العلامة"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "تسمية"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>خيارات العلامة</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "طبق على التورنت وفقاً لأعلى اﻹعدادات"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "الحد الأقصى"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "تطبيق إعدادات اﻹنتظار:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(سطر واحد لكل متتبع)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "طبق العلامة آلياً:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "اضافة صنف"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>أضف علامة</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>استخدم الشريط الجانبي لإضافة وتعديل وحذف العلامات.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>العلامات</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame غير مُثبّت"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "هناك خطأ في إرسال الإشعار للبريد الإلكتروني: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "أُرسل إشعار للبريد الإلكتروني."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"هذا الإشعار لإعلامك أن \"دليوج\" قد أتم تنزيل \"%(name)s\"، والذي يشمل "
+"%(num_files)i ملف(ات).\n"
+"لإيقاف استقبال هذه التنبيهات، أوقف ببساطة إشعارات البريد من تفضيلات "
+"\"دليوج\".\n"
+"\n"
+"شكرًا لك.\n"
+"دليوج."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>الإشعارات البريدية</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr "هذا التكوين لا يعني أنك تستقبل فعليًا الإشعارات لكل هذه الأحداث."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "إستخراج الى"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "انشاء تورنيت واسم المجلد الفرعي"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"هذا الخيار سيجعل لكل تورنت مجلد خاص به بنفس اسم التورنت وسيكون داخل المجلد "
+"المحدد للتحميل"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "حد التحميل:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "حد الرفع:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "تفيل جميع التونيت"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>عرض الخيارات</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "تسجيل الخروج..."
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "احفظ"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "المستضيف:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "تحريك"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "دخول"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "تعيين الحد الأقصى للإتصالات"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "سرعة التنزيل"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "تحديد على أعلى سرعة تحميل"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "سرعة الرفع"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "تحديد على أعلى سرعة رفع"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "اتصل"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "مرشِّحات"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "حدث المتعقب"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "التفاصيل"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "عام"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "خاص"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "صحيح"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "نبهني عند وجود إصدراة أحدث"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "أقصى عدد للاتصالات:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "السرعة القصوى للتنزيل (ك.بايت/ ث)"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "السرعة القصوى للرفع (ك.بايت/ث)"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "العدد الأقصى للاتصالات نصف المفتوحة"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "العدد الأقصى لعدد محاولات الاتصال في الثانية."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "عدد شرائح الرفع:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "الخادم"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "الرابط"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "ملف"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "التنزيل"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ast.po b/deluge/i18n/ast.po
new file mode 100644
index 0000000..3e2e61f
--- /dev/null
+++ b/deluge/i18n/ast.po
@@ -0,0 +1,6179 @@
+# Asturian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Asturian <ast@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Fallu"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nome"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progresu"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Estáu"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Tamañu"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Descargáu"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Xubío"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Rellación"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Velocidá de descarga"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Velocidá d'unvíu"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Collacies/os compartiendo"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Disp"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Amestáu"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Rastreador"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Tiempu estimáu"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Priorizar primeru/caberu"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Autoxestionáu"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Partes"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Avisu"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Anunciu correutu"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anunciu unviáu"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfaz"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Descargues"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Anchor de banda"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Cola"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Rede"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Otres"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Demoniu"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nome de ficheru"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Parte"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Escueye un ficheru"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Escueye una carpeta"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Atroxar ficheru .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Ficheros torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Tolos ficheros"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Sirvidor:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Escueya un ficheru .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detalles:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nome d'usuariu:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Otru ..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Non coneutáu"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nodos DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Sí"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Non"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioridá"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Estáu"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalles"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_cheros"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Pares"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opciones"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Illimitada"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Abaxo"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Arriba"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Sirvidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Nome d'Usuariu"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivel"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Habilitáu"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Seleiciona el complementu"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Complementu Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Rastreadores"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Dengún"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Alministrador"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Ensin etiqueta"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents na cola"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrents na cola"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Definir illimitáu"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Activáu"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Off"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Deshabilitar"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Direición"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Cliente"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creando torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents na cola"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Esaniciar"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Amestar torrents automáticamente al coneutase"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Ficheru"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Amestar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Criar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Colar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Editar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Asistente de conexón"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "Vista"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Barra Ferramientes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "Barra _llateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Barra d'estáu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Pest_añes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "Co_lumnes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Barra llateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Amosar _Zero visites"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Amosar ras_treadores"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Aida"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Entrugues frecuentes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Amestar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Amésta-y un \"Torrent\""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Desaniciar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Esanicia'l \"Torrent\""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pausar los torrents seleicionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Siguir colos torrents seleicionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Siguir"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Coloca Esti \"Torrent\" delantre"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Xubir cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Alluga Esti \"Torrent\" darrera"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Baxar cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferencies"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Asistente de conexón"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forciáu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Deshabilitáu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Alcuerdu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Cualesquier"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Amosar velocidá na barra de títulu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Activa el iconu del sistema na bandexa."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimiza pa la bandexa al zarrar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Abrir minimizáu nel área de notificación"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Protexer con contraseña l'área de notificación"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Mover completaos a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copia d'archivos .torrent a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Descargar a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Priorizar primeru y caberu trozu del torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Priorizar primera y cabera parte de los archivos del torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Amosar siempres"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Enfocar el diálogu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Númberu másimu de conexones permitíes. Use -1 si deseya illimitaos."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Conexones:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"La cantidá másima de slots pa tolos torrents. Use -1 si deseya illimitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Velocidá másima de descarga pa tolos torrents. Use -1 si deseya illimitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocidá de descarga:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Velocidá máxima de xuba pa tolos torrents. Use -1 si deseya illimitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocidá de xuba:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "inorar llímites na rede llocal"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Sobrecarga d'IP na llende de tasa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Si ta marcáu, la sobrecarga TCP/IP estimada restaráse de les llendes de la "
+"tasa, pa evitar pasar les llendes col tráficu total."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"La cantidá másima de puestos de xuba por torrent. Use -1 si deseya "
+"illimitaos."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"El númberu másimu de conexones por torrent. Use -1 si deseya illimitaes."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Aleatoriu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Puertu activu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Comprobar puertos activos"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Dende:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "A:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivel:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Cifráu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Plug and Play Universal"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocolu de mapéu de puertu NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Intercambéu de collacios"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery alcuentra pares llocales na so rede"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Una tabla hash distribuyía pue meyorar la cantidá de conexones actives."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Byte TOS del compartidor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nome del host:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Puertu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Aidanos a meyorar Deluge unviándonos la so versión de Python, versión de "
+"PyGTK, Sistema Operativu y tipu de procesador. De xuru que nenguna otra "
+"información ye unviada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Si, unviar estadístiques anónimes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Puertu del demoniu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Puertu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Permitir conexones remotes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Conexones"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Revisar davezu el sitiu web pa nueves versiones"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versión:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Páxina principal:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Corréu electrónicu del autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Amestar par"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "nome de máquina:puertu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Xeneral</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Encaboxar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Amestar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Esborrar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Amestar Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Rastreadores:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Amestar equipu"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destín:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nueva versión"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Dir al sitiu web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Non amosar esti diálogu nel futuru"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nome:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comentarios:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Mover completaos:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Parar compartición en proporción:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Esaniciar en proporción"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Editar rastreadores"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Arriba"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Abaxo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Amestar torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Amestar n'estáu de _pausa"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Priorizar primeros/caberos trozos"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Aplicar a toos"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Revertir a predeterminaos"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Amo_sar Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Llímite de velocidá de descarga"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Llímite de velocidá de xuba"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Colar y apagar demoniu"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Editar rastreadores"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Añader un par pola so IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Editar rastreador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Rastreador:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Escribe'l camín remotu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Camín:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Criar torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Car_peta"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Camín remotu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Ficheros"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Comparticiones web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Tamañu de la parte:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Conseñar como priváu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Amestar esti torrent a la sesión"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opciones"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Atroxar .torrent como"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Siguir"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Siguir torrents seleicionaos."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opc_iones"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Cola"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Aut_ualizar el rastreador"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Esanicia_r torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Forciar verificación"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiqueta"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Seleicionar todo"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pausar too"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Rea_nudar todo"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Llímite de _conexón"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Llímite de puertos de _xuba"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Autoxestionáu"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Amestar rastreador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Amestar URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Estenderexar too"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Contraseña"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Dende"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "A"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Utilizar puertos al debalu"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Entrante"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Saliente"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Conexones másimes"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Puertos máximos de xuba"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Máximes Conexones parcialmente abiertes"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Máximos tentos de conexón per segundu"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Sobrecarga IP na llende de tasa"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Rellación de datos compartios: baxada/xuba"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tipu"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Llista IP d'Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Archivu de testu de SafePeer (comprimíu en zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Archivu de testu de PeerGuardian (descomprimíu)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Llista de bloquéu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Llíder non válidu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Códigu máxicu non válidu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versión non válida"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Díes"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Comprebar por una nueva llista cada:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importar llista de bloquéu al entamu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Preferencies</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Descargar l'archivu de llista de bloqueo si ye necesario ya importar "
+"l'archivu."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Verificar descarga ya importalu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Descargar un nuevu ficheru de llista de bloquéu ya importalu."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forciar descarga ya importalu."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Preferencies</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipu:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Tamañu del archivu:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Seleicione una carpeta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Velocidá de xuba máxima:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Másimes Conexones:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Puertos de xuba máximos:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Velocidá de descarga máxima:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Anchor de banda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Cola</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "segundos"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etiqueta inválida, carauteres validos:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etiqueta erma"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "La etiqueta yá esiste"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etiqueta desconocía"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent desconocíu"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opciones d'etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Desanicia_r etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Añader etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opciones d'etiquetes"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opciones d'etiquetes</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Aplicar preferencies máximes por torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Máximu"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Aplicar preferencies de cola:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 llinia por rastreador)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aplicar automáticamente la etiqueta:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Amestar etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Amestar etiqueta</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Use la barra llateral p'amestar, editar y desaniciar etiquetes. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiquetes</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "La notificación emerxente nun ta habilitada"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Notificación de soníu non habilitáu"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame nun ta instaláu"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Notificación de soníu fallida %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Notificación de soníu esitosa"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent fináu"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Hebo un fallu unviando'l corréu de notificación: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Corréu de notificación unviáu."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent \"%(name)s\" fináu"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Desconeutar"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Guardar"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Mover"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Coneutase"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Afitar máximu númberu de conexones"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Velocidá de Baxada"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Afitar velocidá máxima de descarga"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Velocidá de Subida"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Afitar velocidá máxima de xuba"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Tráficu del protocolu Descarga/Xuba"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Coneutar"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Fieltros"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Velocidá llende de descarga"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Velocidá llende de xuba"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Llende de conexón"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Llende de biligueres de xuba"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Anovar rastreador"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Forzar comprobación nueva"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detalles"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Xeneral"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Priv&aacute;u"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Braero"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Ser avisáu de nueves versiones"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Conexones másimes:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Velocidá másima de descarga (KB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Velocidá másima de xuba (KB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Másimes conexones half-open:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Másimos intentos de conexón per segundu:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Másimu númberu de puestos de xuba:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Servidor"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Ficheru"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Amestar n'estáu de pausa"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Baxada"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/be.po b/deluge/i18n/be.po
new file mode 100644
index 0000000..cf4ed25
--- /dev/null
+++ b/deluge/i18n/be.po
@@ -0,0 +1,6314 @@
+# Belarusian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2023-08-01 15:28+0000\n"
+"Last-Translator: Anton Hryb <Unknown>\n"
+"Language-Team: Belarusian <be@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "Б"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "КіБ"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "МіБ"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "ГіБ"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "ТіБ"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "К"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "М"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "Г"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "Т"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "К/с"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "КіБ/с"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "М/с"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "МіБ/с"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "Г/с"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "ГіБ/с"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "Т/с"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "ТіБ/с"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Агульныя параметры"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Друк дапаможнага паведамлення"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Друк інфармацыі пра версію"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Наладзіць шлях да папкі з канфігурацыяй"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "Вывад у вызначаны файл логаў замест stdout"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "Узровень лога (none, error, warning, info, debug)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+"Уключыць змену файла лога, з максімумам памера файла, па змаўчанні: "
+"%(const)s (Logfile rotation count is 5)"
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "Сцішаны вывад логаў (Тое ж што `--loglevel none`)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+"Профіль %(prog)s з cProfile. Вывад у stdout пакуль не вызначана імя файла"
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "Опцыі кантролю працэса"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "Файл для захавання id працэса"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr "Не дэманізаваць (разгаліноўваць) гэты працэс"
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "Змяніць гэтага карыстальніка пры запуску (патрэбны правы root)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "Змяніць на гэту групу пры запуску (патрэбны правы root)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Опцыі дэмана"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "IP адрасы каб слухаць падлучэнні"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Які порт слухаць пры падлучэнні"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "IP адрас каб слухаць падлучэнне BitTorrent"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr "Назва сеткі ці IP адрас для сыходзячага падлучэння BitTorrent."
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+"Ключы канфігурацый для RPC, немадыфікаваных з дапамогай `set_config`"
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Усе"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Актыўны"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Выдзяленне"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Праверка"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Спампоўка"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Раздача"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Прыпынена"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "У чарзе"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Памылка"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Назва"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Прагрэс"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Стан"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Памер"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Спампавана"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Запампавана"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Застаецца"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Рэйтынг"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Хуткасць спампоўкі"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Хуткасць раздачы"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Ліміт спампоўкі"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Ліміт раздачы"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Макс злучэнняў"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Макс слотаў раздачы"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Піры"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Сіды"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Даступна"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Сіды:Піры"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Дададзена"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Трэкер"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Папка спампоўкі"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Час сідавання"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Актыўны час"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Апошняя актыўнасць"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Час завяршэння"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Паказ завершанага"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Завершана"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Засталося"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Супольнае"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Прыятытэт Першае/Апошняе"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Паслядоўная спампоўка"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Аўтаматычнае кіраванне"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Спыніць пры суадносінах"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Суадносіны для спынення"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Выдаліць пры суадносінах"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Перамясціць пры завяршэнні"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Шлях перамяшчэння завершанага"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr "Перамясціць на шлях завершанага"
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Уласнік"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Часткі"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Ранг сідаў"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "Супер сідаванне"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Папярэджанне"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Анонс удала выкананы"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Анонс адпраўлены"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Інтэрфейс"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Спампоўкі"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Абмежаванні"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Чарга"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Сетка"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Проксі"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Кэш"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Іншае"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Дэман"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Плагіны"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Прапусціць"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Нізкі"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Звычайны"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Высокі"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"Deluge не знаходзіць выканальны `deluged`, праверце што пакет усталяваны, "
+"або дадайце шлях."
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Афганістан"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Аландскія астравы"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Албанія"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Алжыр"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Амерыканскае Самоа"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Андора"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Ангола"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ангілья"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Антарктыда"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Антыгуа і Барбуда"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Аргенціна"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Арменія"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Аруба"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Аўстралія"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Аўстрыя"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Азербайджан"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Багамскія астравы"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Бахрэйн"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Бангладэш"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Барбадас"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Беларусь"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Бельгія"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Беліз"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Бенін"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Бермудскія астравы"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Балівія"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Боснія і Герцагавіна"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Батсвана"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Востраў Бувэ"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Бразілія"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Брытанская тэрыторыя ў Індыйскім акіяне"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Брунэй Даруссалам"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Балгарыя"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Буркіна-Фасо"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Бурундзі"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Камбоджа"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Камерун"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Канада"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Каба-Вердэ"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Кайманавы астравы"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Цэнтральна-Афрыканская Рэспубліка"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Чад"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Чылі"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Кітай"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Востраў Каляд"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Какосавыя (Кілінг) астравы"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Калумбія"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Каморскія астравы"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Конга"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Дэмакратычная Рэспубліка Конга"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Астравы Кука"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Коста-Рыка"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Кот д'Івуар"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Харватыя"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Куба"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Кіпр"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Чэшская Рэспубліка"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Данія"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Джыбуці"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Дамініка"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Дамініканская Рэспубліка"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Эквадор"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Егіпет"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Сальвадор"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Экватарыяльная Гвінея"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Эрытрэя"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Эстонія"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Эфіопія"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Фалклендскія (Мальвінскія) астравы"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Фарэрскія астравы"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Фіджы"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Фінляндыя"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Францыя"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Французская Гвіяна"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Французская Палінезія"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Французскія Паўднёвыя Тэрыторыі"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Габон"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Гамбія"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Грузія"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Германія"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Гана"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Гібралтар"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Грэцыя"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Грэнландыя"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Грэнада"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Гвадэлупа"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Гуам"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Гватэмала"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Гернсі"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Гвінея"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Гвінея-Бісау"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Гаяна"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Гаіці"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Востраў Херд і астравы МакДональд"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Ватыкан (Папскі Пасад)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Гандурас"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Ганконг"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Венгрыя"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Ісландыя"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Індыя"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Інданезія"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Ісламская Рэспубліка Іран"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Ірак"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ірландыя"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Востраў Мэн"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Ізраіль"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Італія"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Ямайка"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Японія"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Джэрсі"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Іарданія"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Казахстан"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Кенія"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Кірыбаці"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Карэйская Народна-Дэмакратычная Рэспубліка"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Рэспубліка Карэя"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Кувейт"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Кыргызстан"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Лаос"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Латвія"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Ліван"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Лесота"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Ліберыя"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Лівійская Арабская Джамахірыя"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Ліхтэнштэйн"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Літва"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Люксембург"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Макао"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Паўночная Македонія"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Мадагаскар"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Малаві"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Малайзія"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Мальдывы"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Малі"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Мальта"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Маршалавы астравы"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Марцініка"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Маўрытанія"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Маўрыкій"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Маёта"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Мексіка"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Федэратыўныя Штаты Мікранезіі"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Малдова"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Манака"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Манголія"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Чарнагорыя"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Мантсерат"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Марока"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Мазамбік"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "М'янма"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Намібія"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Науру"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Непал"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Нідэрланды"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Нідэрландскія Антыльскія астравы"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Новая Каледонія"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Новая Зеландыя"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Нікарагуа"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Нігер"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Нігерыя"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Ніуэ"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Востраў Норфалк"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Паўночныя Марыянскія астравы"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Нарвегія"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Аман"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Пакістан"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Палау"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Палестынская тэрыторыя, акупаваная"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Панама"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Папуа-Новая Гвінея"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Парагвай"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Перу"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Філіпіны"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Астравы Піткэрн"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Польшча"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Партугалія"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Пуэрта-Рыка"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Катар"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Рэюньён"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Румынія"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Расійская Федэрацыя"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Руанда"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Сен-Бартэльмі"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Востраў Святой Алены"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Сент-Кітс і Невіс"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Сент-Люсія"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Сен-Мартэн"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Сен-П'ер і Мікелон"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Сент-Вінсент і Грэнадзіны"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Самоа"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Сан-Марына"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Сан-Тамэ і Прынсіпі"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Саудаўская Аравія"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Сенегал"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Сербія"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Сейшэльскія астравы"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Сьера-Леонэ"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Сінгапур"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Славакія"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Славенія"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Саламонавы астравы"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Самалі"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Паўднёва-Афрыканская Рэспубліка"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Паўднёвая Георгія і Паўднёвыя Сандвічавы астравы"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Іспанія"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Шры-Ланка"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Судан"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Сурынам"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Шпіцберген і Ян-Маен"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Свазіленд"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Швецыя"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Швейцарыя"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Сірыйская Арабская Рэспубліка"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Тайвань"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Таджыкістан"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Танзанія"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Тайланд"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Тымор-Лешці"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Тога"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Такелау"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Тонга"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Трынідад і Табага"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Туніс"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Турцыя"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Туркменістан"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Астравы Цёркс і Кайкас"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Тувалу"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Уганда"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Украіна"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Аб'яднаныя Арабскія Эміраты"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Вялікабрытанія"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Злучаныя Штаты Амерыкі"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Малыя Аддаленыя астравы ЗША"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Уругвай"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Узбекістан"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Вануату"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Венесуэла"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "В'етнам"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Віргінскія астравы (Брытанія)"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Віргінскія астравы (ЗША)"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Уоліс і Футуна"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Заходняя Сахара"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Емен"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Замбія"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Зімбабвэ"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Опцыі UI"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr "Вызначыць UI для запуску па змаўчанні, калі UI не вызначаны"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+"Альтэрнатыўны UI для запуску, з апцыянальнымі аргументамі \n"
+" (UI па змаўчанні: *)"
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Опцыі вэб-сервера"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "IP адрас для праслухоўвання вэб-сервера"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Порт для праслухоўвання вэб-сервера"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr "Наладзіць базавы шлях для запуску UI"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Прымусіць вэб-сервер выкарыстоўваць SSL"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Прымусіць вэб-сервер адключыць SSL"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Дэман не існуе"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Дэман не запушчаны"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Назва файла"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Узровень"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Выберыце файл"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Скасаваць"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Адкрыць"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Выбраць папку"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Захаваць файл .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "_Захаваць"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Торэнт-файлы"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Усе файлы"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Увядзіце пароль, каб паказаць Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Увядзіце пароль, каб выйсці з Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "D: {download_rate} U: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Змяніць шлях"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Выдаліць шлях"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Прымяніць да выбранага"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Аўтарскае права %(year_start)s-%(year_end)s Каманда Deluge"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Праграма перадачы файлаў\n"
+"выкарыстоўваючы пратакол BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Кліент:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Дзейныя распрацоўнікі:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Ранейшыя распрацоўнікі і ўкладальнікі:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Гэта праграма свабодная; вы можаце змяняць яе паводле ліцэнзіі GNU General "
+"Public License, распаўсюджанай фондам Free Software Foundation; як трэцяй "
+"версіі, так і пазнейшымі. \n"
+"\n"
+"Гэта праграма распаўсюджваецца ў надзеі, што яна будзе карысна, але БЕЗ "
+"АНІЯКІХ ГАРАНТЫЙ; нават без гарантыі ПРЫДАТНАСЦІ ці АДПАВЕДНАСЦІ "
+"ПРЫЗНАЧЭННЮ. Для падрабязнасцей глядзіце тэкст ліцэнзіі GNU General Public "
+"License. \n"
+"\n"
+"Вы павінны былі атрымаць копію ліцэнзіі GNU General Public License разам з "
+"гэтай праграмай; калі ж не, глядзіце <http://www.gnu.org/licenses>. \n"
+"\n"
+"Дадаткова, як выключэнне, уладальнікі правоў даюць зазвол спасылацца на код "
+"праграмы праз свабодныя бібліятэкі OpenSSL. Вы павінны прытрымлівацца "
+"ліцэнзіі GNU General Public License з павагай да ўсяго кода, які "
+"выкарыстоўваецца акрамя OpenSSL. \n"
+"\n"
+"Пры змяненні файла(ў) у адпаведнасці з выключэннем, вы можаце пашырыць "
+"выключэнне да вашай версіі файла(ў), але вы не абавязаны рабіць гэта. Калі "
+"вы не жадаеце рабіць гэта, выдаліце гэта паведамленне з вашай версіі. Калі "
+"вы выдаліце паведамленне аб выключэнні з усіх файлаў праграмы, таксама "
+"выдаліце яго тут."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Сервер:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Торэнт"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Дадаць торэнты (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "Дубліраваны(я) торрэнт(ы)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr "Нельга двойчы дадаць адзін торрэнт. Ужо дададзена торрэнтаў: %d."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Няправільны файл"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Пачакайце файлаў..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "Немагчыма спампаваць файлы для гэтай спасылкі"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Выберыце файл .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Няправільны URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "не карэктны URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Спампоўка..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Не ўдалося спампаваць"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Не ўдалося спампаваць:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_Не"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Так"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Закрыць"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Падрабязнасці:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Аўтэнтыфікацыя"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "Да_лучыцца"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Імя карыстальніка:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Пароль:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Рэдагаваць акаўнт"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Рэдагаваць існуючы акаўнт"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Ужыць"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Новы акаўнт"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Стварыць новы акаўнт"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Дадаць"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Узровень аўтэнтыфікацыі:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Абаронена паролем"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_ОК"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Iншае..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Не падключаны"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Падлучэнні (ліміт)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Хуткасць спампоўкі (ліміт)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Хуткасць раздачы (ліміт)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr "Пратакольны трафік (спампоўка:раздача)"
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Вузлы DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Свабоднае месца на дыску"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Знешні IP адрас"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "н/д"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Праблема з портам</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Няма ўваходзячых злучэнняў, праверце порт"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Ліміт хуткасці спампоўкі"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Усталяваць максімум хуткасці спампоўкі"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Ліміт хуткасці раздачы"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Усталяваць максімум хуткасці раздачы"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Уваходныя злучэнні"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Усталяваць максімум уваходных злучэнняў"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent}%"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Ніколі"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Так"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Не"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Прыярытэт"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Усе"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Статус"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "Паз_драбязнасці"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Файлы"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Піры"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Опцыі"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Трэкеры"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Не злучана..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Неабмежавана"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Спампоўка"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Раздача"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"Дэман Deluge (deluged) ужо запушчаны.\n"
+"Каб перайсці ў аўтаномны рэжым, спыніце лакальны дэман і перазапусціце "
+"Deluge."
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"Даступны толькі тонкі кліент, таму што libtorrent не ўсталяваны.\n"
+"Каб перайсці ў аўтаномны рэжым, усталюйце пакет libtorrent."
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"Даступны толькі тонкі кліент з-за невядомай памылкі імпарту.\n"
+"Каб перайсці ў аўтаномны рэжым, паглядзіце лог з памылкамі."
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "Працягнуць у рэжыме тонкага кліента?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Змяніць рэжым інтэрейса карыстальніка"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Па-за сеткай"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "У сетцы"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Злучана"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Статус"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Хост"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Версія"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Запусціць дэман"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Спыніць дэман"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Адлучыць"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Немагчыма запусціць дэман!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr "Праверце ўсталяванне пакета і логі для падрабязнасцей"
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Несумяшчальны кліент"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+"Лакальны аўтазапуск дэмана не ўключаны. Глядзіце \"Опцыі\" ў \"Кіраванні "
+"злучэннямі\"."
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Памылка злучэння"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Рэдагаваць хост"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Збой дадання хосту"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "Памылка рэдагавання хосту"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Імя карыстальніка"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Узровень"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Уключана"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Плагін"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Увага"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Вы павінны выбраць мову"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr "Вы павінны перазапусціць UI праграмы каб прымяніць змены."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "Тонкі кліент"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Аўтаномны"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr "Пераключэнне рэжыму кліента Deluge..."
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "Жадаеце перазапусціць у рэжыме %s?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Выберыце плагін"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Плагін Egg"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Памылка сервера"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "Памылка на серверы"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Памылка дадання акаўнта"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Памылка аўтэнтыфікацыі"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "Памылка падчас дадання акаўнта"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Памылка абнаўлення акаўнта"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "Памылка падчас абнаўлення акаўнта"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Выдаліць акаўнт"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr "Сапраўды жадаеце выдаліць акаўнт з іменем \"%(username)s\"?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Памылка выдаляння акаўнта"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Памылка аўтэнтыфікацыі"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "Памылка падчас выдалення акаўнта"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Станы"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Трэкеры"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Няма"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Адмін"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Ярлыкі"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Без ярлыка"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Няма ўласніка"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Версія кліента</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Торэнты пастаўлены ў чаргу"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Торэнт пастаўлены ў чаргу"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr "Торэнт агульны ці не з іншымі карыстальнікамі Deluge."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Выдаліць вылучаныя торэнты?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Усяго вылучана торэнтаў: %s"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Неабмежавана"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Уключана"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Выключана"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Выключыць"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Уключыць..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "Слоты піраў раздачы"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Усталяваць максімум слотаў раздачы"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Спыніць сіды па рэйтынгу"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Памылка змены ўласніка"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "Памылка падчас спробы змяніць ўласніка."
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Адрас"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Кліент"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "Опцыі GTK"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+"Дадаць адзін ці больш торэнт-файлаў, URL-аў ці URI-спасылак у запушчаны "
+"цяпер Deluge GTK"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Стварэнне торэнту"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Торэнты ў чарзе"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Дадаць торэнты ў чарзе"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Выдаліць"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "А_чысціць"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Аўтаматычна дадаваць торэнты пры злучэнні"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Файл"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Дадаць торэнт"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Стварыць торэнт"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Выйсці і вы_ключыць дэман"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "В_ыхад"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Рэдагаваць"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Налады"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Менеджэр _падключэнняў"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Торэнт"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Выгляд"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Панэль _прылад"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Бакавая панэль"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Радок _стану"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Укладкі"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Калонкі"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Знайсці ..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Бакавая панэль"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Паказваць _пустыя элементы"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Паказваць _трэкеры"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "Паказваць у_ласнікаў"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Даведка"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Хатняя старонка"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_Частыя пытанні"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Частыя пытанні"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Супольнасць"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_Аб праграме"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Дадаць торэнт"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Дадаць торэнт"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Выдаліць торэнт"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Выдаліць торэнт"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"Фільтраваць торэнты па імені.\n"
+"Гэта адфільтруе торэнты паводле бягучага адбора на бакавой панэлі."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Фільтр"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Прыпыніць вылучаныя торэнты"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Прыпыніць"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Працягнуць выбраныя торэнты"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Працягнуць"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Перанесці торэнт уверх"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Вышэй"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Перанесці торэнт уніз"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Ніжэй"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Параметры"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Кіраванне злучэннямі"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Закрыць"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Фільтр:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Ачысціць пошук"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "_Улічваць рэгістр літар"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Прымусова"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Адключана"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Рукапацісканне"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "Поўная плынь"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Любы"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 Auth"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP Auth"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "Аўтаномная самастойная праграма"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "Тонкі кліент"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Злучыцца з дэманам Deluge (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Рэжым праграмы"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Паказваць хуткасць у загалоўку праграмы"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Факусіраваць на акне пры даданні торэнта"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"Паласа паказу частак\n"
+"павялічыць прапускную здольнасць паміж кліентам\n"
+"і дэманам (не дзейнічае ў аўтаномным рэжыме)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "Паказваць паласу частак на панэлі стану"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Завершана:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Спампоўка:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Чаканне:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Згублена:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "_Вярнуць"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Вярнуць зыходны колер"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Колеры частак"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Галоўнае акно"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Уключыць значок у сістэмным трэі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "Індыкатар праграмы"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Сістэмны трэй"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Згортваць у вобласць апавяшчэнняў пры закрыцці"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Згортваць у вобласць апавяшчэнняў пры запуску"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Абараніць паролем вобласць апавяшчэнняў"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Сістэмны трэй"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Апавяшчаць аб новых рэлізах"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Абнаўленні"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Сістэмныя налады па змаўчанні"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Мова</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Перамяшчаць загружаныя файлы ў:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Капіяваць файлы .torrent ў:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Выдаляць копіі торэнт-файлаў"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Выдаляць копію торэнт-файла пры выдаленні торэнта"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Спампоўваць у:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Папкі спампоўкі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Прыярытэт першай і апошняй частак торэнта"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Прыярытэт першай і апошняй частак файлаў у торэнце"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Паслядоўная спампоўка"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+"Калі ўключана, чаткі будуць падбірацца\n"
+"паслядоўна замест \"спачатку самы рэдкі\".\n"
+"\n"
+"Уключэнне паслядоўнай спампоўкі ў цэлым адмоўна\n"
+"на атрыманне частак падзейнічае. Трэба\n"
+"выкарыстоўваць ашчадна."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Дадаваць торэнты ў спыненым стане"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Рэзерваваць месца на дыску"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Рэзерваваць месца на дыску для торэнт-файлаў"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Опцыі дадання торэнта"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Заўсёды адлюстроўваць"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Зрабіць дыялогавае акно актыўным"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Дыялог дадання торэнта"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Спробы злучыцца ў секунду:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Паў-адкрытае злучэнне:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"Максімальна дапушчальная колькасць злучэнняў. Для неабмежаванай усталюйце -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Злучэнні:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максімальная колькасць слотаў раздачы. Для неабмежаванай усталюйце -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Слоты раздачы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максімальная хуткасць спампоўкі для ўсіх торэнтаў. Для неабмежаванай "
+"усталюйце -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Хуткасць спампоўкі:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максімальная хуткасць спампоўкі для ўсіх торэнтаў. Для неабмежаванай "
+"усталюйце -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Хуткасць раздачы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ігнараваць абмежаванні ў лакальнай сетцы"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Абмяжоўваць хуткасць з улікам выдаткаў пратаколу IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Калі ўключана, прыблізныя выдаткі TCP/IP улічваюцца абмежавальнікамі "
+"хуткасці, каб пазбегнуць перавышэння сумарнага трафіку"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Глабальныя ліміты прапускной здольнасці"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Максімальная колькасць слотаў для раздачы на торэнт. Для неабмежаванай "
+"усталюйце -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Максімальная колькасць злучэнняў на торэнт. Для неабмежаванай усталюйце -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Максімальная хуткасць спампоўкі на торэнт. Для неабмежаванай усталюйце -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Максімальная хуткасць раздачы на торэнт. Для неабмежаванай усталюйце -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Ліміты прапускной здольнасці на торэнт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "Падняць у чарзе"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Новыя торэнты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Сідаванне:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Усяго:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Ігнараваць марудныя торэнты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+"Торэнты без перадачы даных не ўлічваюцца пры падліку актыўных "
+"спамповак/сідавання."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Пераважнае сідаванне торэнтаў"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr "Аддайваць перавагу сідаванню торэнтаў над спампоўкай."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Актыўныя торэнты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Суадносіны дзялення:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "Суадносіны часу:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Час (хв):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr "Змена сідавання"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Прыпыніць торэнт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Дасягнуты суадносіны дзялення"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"IP адрас інтэрфейса для праслухоўвання ўваходзячых злучэнняў bittorrent. "
+"Пакіньце пустым каб выкарыстоўваць значэнне па змаўчанні."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Уваходзячы адрас"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Выпадковы"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Выкарыстоўвае выпадковы порт паміж 49152 і 65525"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Актыўны порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Праверыць актыўны порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Уваходзячы порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"Сеткавы інтэрфейс ці IP адрас для зыходзячых злучэнняў BitTorrent. (Пакіньце "
+"пустым каб выкарыстоўваць перадвызначаны.)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Зыходзячы інтэрфейс"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "З:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Да:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Зыходзячыя парты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Зыходзячы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Уваходзячы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Узровень:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Шыфраванне"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Пратакол перанакіравання партоў NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Абмен пірамі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr "Абмен пірамі паміж кліентамі. (Адключэнне патрабуе перазапуску)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery знаходзіць лакальных піраў у вашай сетцы."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Размеркаваная хэш-табліца (DHT) можа павялічыць колькасць актыўных злучэнняў."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TOS-байт піра:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Сетка дадаткова"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Назва хаста:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "Назва хаста проксі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+"Назвы хаста трэба спрабаваць выправіць праз проксі\n"
+"замест таго, каб выкарыстоўваць лакальны сэрвіс DNS"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr "Проксі піры"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr "Злучэнне праз проксі піры і вэб сід."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "Проксі трэкеры"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Прымусовае выкарыстанне проксі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "Хаваць ідэнтычнасць кліента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+"Спрабаваць хаваць ідэнтычнасць кліента і выкарыстоўваць толькі проксі для "
+"ўваходзячых злучэнняў."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Прымусовае проксі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Памер кэшу (у блоках па 16 КіБ):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Час у секундах ад апошняга кэшыраваннага запісу часткі ў кэшы запісу да "
+"таго, як прымусова скідаць кэш гэтай часткі на дыск. Па змаўчанні 60 секунд."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Час жыцця кэша (секунд):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Параметры"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Колькасць блокаў па 16 КБ, запісаных на дыск з моманту пачатку сесіі."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Блокаў запісана:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Агульная колькасць выкананых аперацый запісу з моманту запуску сесіі."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Аперацый запісу:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Суадносіны (блокаў_запісана - аперацый_запісу) / блокаў_запісана прадстаўляе "
+"суадноснасць колькасці захаваных аперацый запісу да іх агульнай колькасці, "
+"г.зн. эфектыўнасць кэша запісу."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Працэнт траплення ў кэш:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Запісаць"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Колькасць блокаў, запытаных рухавіком BitTorrent (ад піраў) і счытаных з "
+"дыска ці з кэша."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Блокаў счытана:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Колькасць блокаў, счытаных з кэша."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Счытана блокаў з кэша:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Каэфіцыент эфектыўнасці кэша счытвання."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Працэнт счытвання з кэша:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Агульная колькасць аперацый счытвання, выкананых з пачатку гэтай сесіі."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Аперацый счытвання:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Чытаць"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Колькасць блокаў па 16 КБ, якія знаходзяцца зараз у дыскавым кэшы. Уключае "
+"кэш счытвання і запісу."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Памер кэша:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Памер кэша счытвання:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Абнавіць"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Дапамажыце нам зрабіць Deluge лепшым, адправіўшы версію ўсталяванага Python, "
+"PyGTK, АС і тып працэсара. Ніякая іншая інфармацыя не адсылаецца."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Адсылаць ананімную статыстыку"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Сістэмная інфармацыя"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Месцазнаходжанне:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Калі Deluge не зможа знайсці базу файлаў па паказаным шляху, то для "
+"вызначэння краіны піра будзе выкарыстоўвацца DNS."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "База даных GeoIP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Звязаць з Deluge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Магнет-спасылкі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Порт дэмана:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Дазволіць знешнія злучэнні"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Злучэнні"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Перыядычна правяраць вэб-сайт на наяўнасць абнаўленняў"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Выдаліць"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Акаўнты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Версія:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Аўтар:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Хатняя старонка:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Email аўтара:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Інфармацыя"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Усталяваць"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Знайсці болей..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Выдаліць вылучаныя торэнты?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Уключыць спампаваныя файлы"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(Гэта назаўсёды!)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Дадаць пір"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "назва_вузла:порт"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Уласцівасці"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr "Макс радкоў у спісе"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Агульныя</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Паказваць шлях"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Паказваць выбар файлаў"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Паказваць назву папкі"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Тып выбара шляху"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Уключыць аўтазапаўненне"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Паказваць схаваныя файлы"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Усталяваць новую клавішу"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr "Націсніце гэту клавішу каб усталяваць яе як трыгер аўтазапаўнення"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Аўтазапаўнення"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Захаваць шлях"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Пераключальнік схаваных файлаў"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Шлях па змаўчанні"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Спалучэнні клавіш"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Выберыце папку"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Захаваныя шляхі"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "слупок"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Скасаваць"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Адкрыць"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Дадаць"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Дадаць бягучае значэнне ў спіс"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Рэдагаваць"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Рэдагаваць выбранае значэнне"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Выдаліць"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Выдаліць выбраны запіс"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Падняць выбраны запіс"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Апусціць выбраны запіс"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Прадвызначана"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Няма прадвызначанага шляху"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Адкрыць акенца ўласцівасцей"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Дадаць хэш файлаў"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "З хэша файлаў"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Хэш файлаў:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Трэкеры:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Дадаць хост"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "Перамясціць папку спампоўкі"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "Перамясціць папку спампоўкі торэнта(ў)."
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Прызначэнне:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Новая версія"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Перайсці на вэб-сайт"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Даступна новая версія!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Даступная версія:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Версія сервера"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Бягучая версія:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Больш не паказваць гэта акно"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Хуткасць спампоўкі:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Хуткасць раздачы:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Спампавана:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Раздадзена:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Сіды:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Піры:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Даступнасць:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Ранг сіда:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "Час да завяршэння:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Апошняя перадача:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Час актыўнасці:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "Цалкам прагледжана:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Час сідавання:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Частак:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Назва:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Папка спампоўкі:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Дададзена:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Усяго памер:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Усяго файлаў:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Хэш:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Створана:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Каментары:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Уласнік:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Перамяшчаць завершаныя:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Спыніць раздачу на рэйтынгу:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Выдаліць на рэйтынгу"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Ліміты прапускной здольнасці"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Бягучы трэкер:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Усяго трэкераў:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Статус трэкера:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Наступны анонс:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Прыватны торэнт:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Рэдагаваць трэкеры"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Зверху"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Знізу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Дадаць торэнты"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Хэш _файлаў"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "Перамясціць завершаную папку"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Дадаць у _спыненым стане"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Прыярытэт у першай/апошняй частак"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Прапусціць праверку хэша"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Зарэзерваваць месца на дыску"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Зарэзерваваць месца на дыску для файлаў"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "Макс хуткасць спампоўкі торэнта"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Макс хуткасць раздачы торэнта"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Макс злучэнняў для торэнта"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr "Макс слотаў раздачы торэнта"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Прымяніць да ўсіх"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Вярнуцца да налад па змаўчанню"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Па_казать Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "_Прыпыніць сесію"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "Ад_навіць сесію"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Ліміт хуткасці с_пампоўкі"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Ліміт хуткасці _раздачы"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Выйсці і спыніць дэман"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Рэдагаваць трэкеры"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "_Вышэй"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "_Ніжэй"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Дадаць пір"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Дадаць піра па IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Рэдагаваць трэкер"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Трэкер:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Увядзіце аддалены шлях"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Аддалены шлях"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Шлях:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Стварыць торэнт"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Папка"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Аддалены шлях"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Файлы"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Вэб-сіды"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Памер часткі:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Усталяваць сцяг прыватнасці"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Дадаць гэты торэнт да сесіі"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Параметры"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Захаваць .torrent як"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Адкрыць папку спампоўкі"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Прыпыніць"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Ад_навіць"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Аднавіць вылучаныя торэнты."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Параметры"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Чарга"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Абнавіць трэкер"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Выдаліць торэнт"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "П_ераправерыць файлы"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "Пера_мясціць папку спампоўкі"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "метка"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Вылучыць усе"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Прыпыніць усе"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Ад_навіць усе"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Ліміт _злучэнняў"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Ліміт _слотаў раздачы"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "Спыніць сід на р_эйтынгу"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Аўтаматычнае кіраванне"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr "С_упер сідаванне"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "Змяніць у_ладальніка"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Дадаць трэкер"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Дадаць трэкеры"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Дадаць URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "З URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Дэманы Deluge"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Аўтазлучэнне з выбраным дэманам"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "Аўтастарт лакальнага дэмана (калі патрэбна)"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Схаваць гэта акно"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Параметры запуску"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Адкрыць файл"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "_Паказаць папку"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Разгарнуць усё"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "Пр_апусціць"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Нізкі"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Звычайны"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_Высокі"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Каманда Deluge"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr "Deluge - легкавесны, свабодны, крос-платформенны кліент BitTorrent."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+"Deluge утрымлівае звычайныя функцыі кліентаў BitTorrent, напрыклад пратакол "
+"шыфравання, DHT, лакальнае адкрыццё піраў (LSD), абмен пірамі (PEX), UPnP, "
+"NAT-PMP, падтрымка проксі, вэб-сіды, ліміты хуткасці. Паколькі Deluge "
+"актыўна выкарыстоўвае бібліятэку libtorrent, яна мае комплексны спіс функцый."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+"Deluge распрацавана каб працаваць і як звычайная аўтаномная праграма, і як "
+"кліент-серверная. У рэжыме тонкага кліента дэман Deluge кіруе ўсімі "
+"дзеяннямі з торэнтамі і здольны працаваць аддалена з іншых платформ праз "
+"карыстальніцкі інтэрфейс."
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Кліент BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "BitTorrent кліент Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Спампоўванне і раздача файлаў праз BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Налады кансолі"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+"Гэтыя налады дэмана будуць выкарыстоўвацца для каманд ці пры ўключэнні "
+"аўтазлучэння ў кансолі."
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr "IP адрас дэмана Deluge для злучэння (па змаўчанні 127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr "Порт дэмана Deluge для злучэння (па змаўчанні 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "Імя карыстальніка дэмана Deluge пры злучэнні"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "Пароль дэмана Deluge пры злучэнні"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Кансольныя каманды"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Апісанне"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "Даступны кансольныя каманды:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Каманда"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr "`%s` імя"
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Выкарыстанне: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr "выраз суадносіць id торэнтаў і імёны торэнтаў"
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "задаць значэнне ключа"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Задаць значэнне"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "адзін ці больш ключоў- праз прабел"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Таксама выдаляе даныя торэнта"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "Спіс суаднесеных торэнтаў без выдалення."
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "Адзін ці больш id торэнтаў"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr "Пацвердзіць з -c каб выдаліць пералічаныя торэнты (Падлік: %d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr "Выкарыстанне: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+"Адзін ці больш id торэнтаў. Выкарыстоўвайце \"*\" каб аднавіць усе торэнты"
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+"Адзін ці больш id торэнтаў. Выкарыстоўвайце \"*\" каб прыпыніць усе торэнты"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Папка спампоўкі для торэнта"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Перамясціць завершаны торэнт у гэту папку"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "Адзін ці больш торэнт-файлаў, URL ці спасылак URI"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Спіс даступных плагінаў"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Паказвае ўключаныя плагіны"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Уключае плагін"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Выключае плагін"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "Перазагрузка спіса даступных плагінаў"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Усталяваць плагін з файла .egg"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+"Значэнні для рэйтынга раздачы/спампоўкі (без КіБ/с)(карысна для скрыптоў, "
+"якія жадаюць рабіць уласны парсінг)"
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Не паказваць статус торэнта (Паляпшае хуткасць каманды)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr "Выкарыстанне: connect <host[:port]> [<username>] [<password>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "Хост і порт дэмана"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Пароль"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "Шлях куды перамясціць торэнты"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "Новы стан"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "Адна ці больш каманд"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "Выкарыстанне: config [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Паказаць больш інфармацыі аб торэнце."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "Паказаць больш падрабязную інфармацыю пра файлы і піры."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr "Паказаць торэнты са станам STATE: %s."
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "Такое ж як --sort але адзінкі ў адваротным парадку."
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr "Адзін ці больш id торэнтаў. Калі нічога не выбрана, паказваюцца ўсе"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Выбраць хост"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Выйсці"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Выдаліць хост"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr "Дадаць хост (стрэлкі ўверх/уніз для перамяшчэння, Esc каб скасаваць)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "Памылка дадання хоста"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Слупкі"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Шырыня"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Агульныя параметры"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "Сістэмны званочак калі скончылася спампоўка"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+"Змяшчаць завершаныя торэнты пасля незавершаных па выбранай сарціроўцы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr "Перамясціць выбар пры перамяшчэнні торэнта ў чарзе"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Мова"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Рэжым каманднага радка"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "Не захоўваць копіі ўводу ў гісторыі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+"Захоўваць і загружаць гісторыю каманднага радка ў рэжыме каманднага радка"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+"Трэцяя ўкладка ўтрымлівае ўсе торэнты, якія засталіся, у рэжыме каманднага "
+"радка"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr "Торэнты на націсканне ўкладкі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Папкі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Спампоўваць у"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Перамяшчаць завершаны ў"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr "Капіяваць файлы .torrent у"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "Дадаць прыпыненыя"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Рэзерваваць месца на дыску"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Уваходзячыя парты"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "З"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Да"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Выкарыстоўваць выпадковыя парты"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Уваходзячы інтэрфейс"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+"IP адрас інтэрфейса каб слухаць (перадвызначаны калі пакінуць пустым):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"Імя інтэрфейса сеткі ці IP адрас для сыходзячага злучэння BitTorrent. "
+"(Перадвызначаны калі пакінуць пустым.):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Уваходзячы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Сыходзячы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Агульнае выкарыстанне прапускной здольнасці"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Максімум злучэнняў"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Максімум слотаў раздачы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Максімум хуткасці спампоўкі (КіБ/с)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Максімум хуткасці раздачы (КіБ/с)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Максімум паўадкрытых злучэнняў"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Максімум спроб злучэнняў у секунду"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Ацаніць верхні ліміт IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Выкарыстанне прапускной здольнасці на торэнт"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Так, адсылаць ананімную статыстыку."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Порт дэмана"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Дазволіць аддаленыя злучэнні"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Усяго"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Рэйтынг раздачы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Рэйтынг часу"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Час (хв)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr "Выдаліць торэнт (Адключаны прыпыняе торэнт)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Налады проксі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Тып"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Імя хоста"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr "Дапамога тыпа проксі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Памер кэша (блокі 16 КіБ)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr "Заканчэння кэша (секунды)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Блакіруе запісанае"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "Запісвае"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr "Рэйтынг запісу кэша"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Блакіруе чытанне"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr "Блакіруе чытанне"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr "Чытае"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr "Рэйтынг чытання кэша"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr "Памер кэша"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr "Памер кэша чытання"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Ужыць"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "ОК"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Выбраць мову"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr "IP {!white,blue!}%s{!status!}"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "IP адрас \"%s\" дрэнна сфарміраваны"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Спіс IP Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer тэкст (zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian тэкст (несціснуты)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr "Блакіраваныя дыяпазоны IP /Дазволеныя дыяпазоны IP"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Чорны спіс"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Дрэнны IP адрас"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Няправільны пачатак"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Няправільны адбітак"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Няправільная версія"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Дзён"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Правяраць спіс кожныя:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Дабавіць чорны спіс пры запуску"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Налады</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Спампаваць файл чорнага спісу, калі неабходна, і дабавіць яго."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Праверыць спампоўку і імпарт"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Спампаваць новы файл чорнага спісу і дабавіць яго."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Прымусова спампаваць і дабавіць"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Чорны спіс апошняй версіі"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Налады</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Тып:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Дата:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Памер файла:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Інфармацыя</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Белы спіс</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Торэнт завершаны"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Торэнт дададзены"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Торэнт выдалены"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Выканаць"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Падзея"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Дадаць каманду</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Каманды</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Несумяшчальная опцыя"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+"Папка для \"Глядзець папку\" і \"Капіяваць файл .torrent у\" не можа быць "
+"адной і той жа!"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Аўтададанне"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Двайное націсканне каб пераключыць"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Двайное націсканне каб рэдагаваць"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Шлях"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Папка прагляду не існуе."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Шлях не існуе."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Уласцівасці папкі прагляду"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Калі файл .torrent дададзены ў папку,\n"
+"ён будзе дададзены да сесіі."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Вылучыць папку"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Уключыць папку прагляду"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Папка прагляду</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Выдаліць .torrent пасля дадання"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Як толькі торэнт дададзены да сесіі,\n"
+".torrent будзе выдалены."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Дадаць пашырэнне пасля дадання:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"Як толькі торэнт дададзены да сесіі,\n"
+"пашырэнне будзе дададзена да .torrent\n"
+"і застанецца ў той жа папцы."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"Як толькі торэнт дададзены да сесіі,\n"
+".torrent будзе скапіяваны ў вылучаную папку\n"
+"і выдалены з папкі прагляду."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+"Як толькі торэнт выдалены з сесіі,\n"
+"таксама выдаліць і адпаведны файл .torrent."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Дзеянні з файлам торэнта</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Выбраць папку спампоўкі"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "У гэту папку будуць спампоўвацца даныя торэнтаў."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Папка спампоўкі</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "Выбраць папку для перамяшчэння завершаных"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Перамясціць завершаныя</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Пазнака: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Пазнака</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Асноўная"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "Выбраны тут карыстальнік будзе ўласнікам торэнта."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Уласнік</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Максімальная хуткасць раздачы:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Максімальная колькасць злучэнняў:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Максімальная колькасць слотаў раздачы:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Максімальная хуткасць спампоўкі:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Абмежаванні</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Аўтаматычна:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Дадаць прыпыненыя:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Чарга да:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Чарга</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Папкі назірання:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "хвіліны"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 хвіліна"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 секунда"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "секунды"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Статыстыка"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Раздзяляльнасць"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Сіды/Піры"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Колер спампоўкі:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Колер раздачы:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Граф злучэнняў</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Граф прапускной здольнасці</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "Вузлы DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Кэшаваныя вузлы DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "Торэнты DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Сіды / Піры</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Колеры графаў</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Вэб-інтэрфейс"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Вэб-інтэрфейс Deluge не ўсталяваны, калі ласка,\n"
+"усталюйце яго і паўтарыце спробу"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Уключыць вэб-інтэрфейс"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Выкарыстоўваць SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Праслухоўваць порт:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Памылковая пазнака. Дазволеныя сімвалы: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Пустая пазнака"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Пазнака ўжо існуе"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Невядомая пазнака"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Невядомы торэнт"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Налады пазнакі"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Выдаліць пазнаку"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Дадаць пазнаку"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Налады пазнакі"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Пазнака"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Налады пазнакі</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Прымяніць макс налады да кожнага торэнта:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Максімум"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Прымяніць налады чаргі:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Прымяніць налады папкі:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(кожны трэкер у асобным радку)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Аўтаматычна ўжываць пазнаку:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Дадаць пазнаку"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Дадаць пазнаку</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Выкарыстоўвайце бакавую панэль для дадання, выпраўлення і выдалення "
+"пазнак.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Пазнакі</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Паказваць мігценне паведамлення"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Усплываючыя вокны не ўключаны."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "libnotify не ўсталявана"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr "Памылка паведамленняў"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Паказваць усплываючае акно"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Гукавое апавяшчэнне не ўключана"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame не ўсталявана"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Гукавое апавяшчэнне няўдала %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Гукавое апавяшчэнне ўдалае"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Торэнт скончаны"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr "Скончылася спампоўка \"%(name)s\" з %(num_files)i файла(ў)."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Апавяшчэнні"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Выберыце гукавы файл"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Памылка апавяшчэння па электроннай пошце: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "Сервер няправільна адказаў на прывітанне: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "Сервер адмовіўся прыняць імя карыстальніка або пароль: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Апавяшчэнне выслана па эл. пошце."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Завершаны торэнт \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Гэты ліст інфармуе, што Deluge скончыў спампоўку «%(name)s», які складаецца "
+"з %(num_files)i файлаў.\n"
+"Каб перастаць атрымліваць гэтыя паведамленні — выключыце апавяшчэнні ў "
+"наладах Deluge.\n"
+"\n"
+"Дзякуем,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Мігценне значка ў трэі ўключана"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Усплываючыя вокны ўключаны"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Гукі ўключаны"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Апавяшчэнні UI</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Атрымальнікі</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Сервер патрабуе TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Паштовыя апавяшчэнні</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Гэтая канфігурацыя не азначае, што вы атрымаеце ўсе апавяшчэнні пра гэтыя "
+"падзеі."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Падпіскі"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Налады гуку"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Распакоўка"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Распакаваць у:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Стварыць пад-папку з назвай торэнта"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Гэта налада дазволіць стварыць пад-папку з назвай торэнта ўнутры выбранай "
+"папкі і перамясціць туды распакаваныя файлы."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Планавальнік"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr "<b>Запланаваць</b>"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Абмежаванне спампоўкі:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Абмежаванне раздачы:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Актыўныя торэнты:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Актыўныя спампоўкі:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Актыўныя сідаванні:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Абмежаванні</ b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Агляд файлаў"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Назад"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Наперад"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "Хатняя"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Стварыць"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Даведка"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Скончыць сеанс"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Захаваць"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "Аб Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Copyright 2007-2018 Deluge Team"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Выдаліць з данымі"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Дадаць злучэнне"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Хост:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "Немагчыма дадаць хост: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Перамясціць"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Аглядзець"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Рэдагаваць злучэнне"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "Немагчыма рэдагаваць хост"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Уваход"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Памылка ўваходу"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Вы ўвялі няправільны пароль"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Публічны"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Апошняя перадача"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "Змешаны"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Максімальная колькасць злучэнняў"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Хуткасць спампоўкі"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Усталяваць максімальную хуткасць спампоўкі"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Хуткасць раздачы"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Усталяваць максімальную хуткасць раздачы"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Трафік пратакола Спампоўка/Раздача"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "Вольнае месца ў папцы спампоўкі"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Злучыцца"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Спыніць дэман"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Адлучыцца"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Запусціць дэман"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Змяніць пароль па змаўчанні"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Мы рэкамендавалі змену пароля па змаўчанні.<br><br>Жадаеце змяніць яго цяпер?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "Хост трэкера"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Фільтры"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "Злучэнне адноўлена"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "Злучэнне згублена"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "Злучэнне з вэб-серверам згублена!"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "Згублена злучэнне з вэб-серверам"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Ліміт хуткасці Спам"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Ліміт хуткасці Разд"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Ліміт злучэння"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Ліміт слота раздачы"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Абнавіць трэкер"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Прымусовая праверка"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Разгарнуць усё"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Падрабязнасці"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Каментар:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Статус:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Перамяшчэнне завершана:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Асноўныя"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Прыватны"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Загрузка"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "True"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Апавяшчаць аб выпуску новых версій"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Дапамажыце нам палепшыць Deluge, дашліце вашы версіі Python, PyGTK, АС і тып "
+"працэсара. Больш ніякай інфармацыі не адсылаецца."
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Прыпыніць торэнт"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Усталяваць плагін"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Усталяваць"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr "Выбраць"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr "Плагін"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Аглядзець..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Запампоўваецца ваш плагін..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Макс колькасць злучэнняў:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Макс хуткасць спампоўкі (КБ/с):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Макс хуткасць раздачы (КБ/с):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Макс колькасць паў-адкрытых злучэнняў:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Макс колькасць спроб злучэння ў секунду:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Макс колькасць слотаў раздачы:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Памер кэша (блокі 16 Кіб):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Прымусова выкарыстоўваць проксі"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "Знайсці больш"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Выкарыстоўваць выпадковы порт"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Тып сервіса"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr "Паказваць фільтры з нулявымі торэнтамі"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr "Дазволіць выкарыстанне адразу некалькіх фільтраў"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr "Пароль WebUI"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "Стары:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Новы:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Пацвердзіць:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Сервер"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Таймаўт сесіі:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr "Уключыць SSL (шляхі адносна папкі з канфігамі Deluge)"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Прыватны ключ:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Сертыфікат:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr "Мова WebUI зменена"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr "Жадаеце перазапусціць старонку цяпер каб выкарыстоўваць новую мову?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Абнавіць"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "Няправільны пароль"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Ваш пароль не супадае!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "Ваш стары пароль быў няправільны!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "Паспяховая змена"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "Ваш пароль быў паспяхова зменены!"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Дадаць з Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Кукі"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Не ўдалося спапмаваць торэнт"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Файл"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Infohash"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Раздача вашага торэнта..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Не ўдалося раздаць торэнт"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Некарэктны торэнт"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "Перамясціць завершаную папку"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Макс хуткасць спампоўкі"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Макс хуткасць раздачы"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Дадаць у спыненым стане"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr "Супер сід"
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Спампаваць"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "ETA:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "Дата дададзена:"
diff --git a/deluge/i18n/bg.po b/deluge/i18n/bg.po
new file mode 100644
index 0000000..027b801
--- /dev/null
+++ b/deluge/i18n/bg.po
@@ -0,0 +1,6186 @@
+# Bulgarian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Bulgarian <bg@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "КБ/сек"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Проверка"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Изтегляне"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Разпръскване"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "На пауза"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "На опашка"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Грешка"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Име"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Напредък"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Състояние"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Размер"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Изтеглено"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Качени"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Съотн."
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Сваляне"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Качване"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Потр."
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Налично"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Добавено"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Тракер"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Остава"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Първо началото и края"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Автоматично управление"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Части"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Внимание"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Успешно обявяване"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Обявлението е изпратено"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Интерфейс"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Изтегляния"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Скорост на връзката"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Опашка"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Мрежа"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Посредник"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Кеш-памет"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Друго"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Демон"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Приставки"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Афганистан"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Айландски Острови"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Албания"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Алжир"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Американска Самоа"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Андора"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Ангола"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ангила"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Антарктида"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Антигуа и Барбуда"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Аржентина"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Армения"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Аруба"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Австралия"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Австрия"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Азербейджан"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Бахамски острови"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Бахрейн"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Барбадос"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Беларус"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Белгия"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Белийз"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Бенин"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Бермудски острови"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Боливия"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Босна и Херцеговина"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Ботсвана"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Остров Буве"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Бразилия"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Британска територия в Индийския океан"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Бруней Дарессалам"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "България"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Буркина Фасо"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Бурунди"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Камбоджа"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Камерун"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Канада"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Капо Верде"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Кайманови острови"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Централноафриканска Република"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Чад"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Чили"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Китай"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Коледни острови"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Кокосови острови"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Колумбия"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Коморски острови"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Конго"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Демократична република Конго"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Острови Кук"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Коста Рика"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Бряг на слоновата кост"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Хърватска"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Куба"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Кипър"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Чешка република"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Дания"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Джибути"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Доминика"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Доминиканска република"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Еквадор"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Египет"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Ел Салвадор"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Екваториална Гвинея"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Еритрея"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Естония"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Етиопия"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Фолклендски Острови (Малвини)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Фарьорски острови"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Фиджи"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Финландия"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Франция"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Френска Гвиана"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Френска Полинезия"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Френски южни територии"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Габон"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Гамбия"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Грузия"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Германия"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Гана"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Гибралтар"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Гърция"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Гренландия"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Гренада"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Гваделупа"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Гуам"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Гватемала"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Гърнси"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Гвинея"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Гвинея-Бисау"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Гаяна"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Хаити"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Острови Хърд и МакДоналд"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Ватикана"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Хондурас"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Хонг Конг"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Унгария"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Исландия"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Индия"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Индонезия"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Иран, Ислямска република"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Ирак"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ирландия"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Остров Ман"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Израел"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Италия"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Ямайка"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Япония"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Джърси (остров)"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Йордания"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Казахстан"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Кения"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Кирибати"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Корея, Демократична народна република"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Корея, Република"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Кувейт"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Киргизстан"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Лаоска народнодемократична република"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Латвия"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Ливан"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Лесото"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Либерия"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Либийска Арабска Джамахирия"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Лихтенщайн"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Литва"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Люксембург"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Макао"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Македония"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Мадагаскар"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Малави"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Малайзия"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Малдивски острови"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Мали"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Малта"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Маршалови острови"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Мартиника"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Мавритания"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Мавриций"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Майот"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Мексико"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Микронезия"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Молдова"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Монако"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Монголия"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Черна гора"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Монсерат"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Мароко"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Мозамбик"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Мианмар"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Намибия"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Науру"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Непал"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Холандия"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Холандски Антили"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Нова Каледония"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Нова Зеландия"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Никарагуа"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Нигер"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Нигерия"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Ниуе"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Остров Норфолк"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Северни Мариански острови"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Норвегия"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Оман"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Пакистан"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Палау"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Палестинска територия, Окупирана"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Панама"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Папуа Нова Гвинея"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Парагвай"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Перу"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Филипини"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Острови Питкерн"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Полша"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Португалия"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Пуерто Рико"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Катар"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Реюнион"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Румъния"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Руска Федерация"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Руанда"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Сен Бартелми"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Света Елена"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Сейнт Китс и Невис"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Сейнт Лусия"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Сен Мартен"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Сен Пиер и Микелон"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Сейнт Винсънт и Гренадини"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Самоа"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Сан Марино"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Сао Томе и Принсипи"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Саудитска Арабия"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Сенегал"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Сърбия"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Сейшели"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Сиера Леоне"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Сингапур"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Словакия"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Словения"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Соломонови острови"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Сомалия"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Република Южна Африка"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Южна Джорджия и Южни Сандвичеви острови"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Испания"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Шри Ланка"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Судан"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Суринам"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Шпицберген и Ян Майен"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Свазиленд"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Швеция"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Швейцария"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Сирийска Арабска Република"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Таджикистан"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Танзания"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Тайланд"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Източен Тимор"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Того"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Токелау"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Тонга"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Тринидад и Тобаго"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Тунис"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Турция"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Туркменистан"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Търкс и Кайкос"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Тувалу"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Уганда"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Украйна"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Обединени Арабски Емирства"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Великобритания"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Съединени Амеркански Щати"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Малки далечни острови на САЩ"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Уругвай"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Узбекистан"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Вануату"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Венецуела"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Виетнам"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Британски Вирджински острови"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Американски Вирджински острови"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Уолис и Футуна"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Западна Сахара"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Йемен"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Замбия"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Зимбабве"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Демона не се изпълнява"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Име на файл"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Редица"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Изберете файл"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Изберете папка"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Запазване на торент-файла"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Торент-файлове"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Всички файлове"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Сървър:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Торент"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Невалиден файл"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Избор на торент-файл"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Невалиден URL адрес"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Изтеглянето неуспешно"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Подробности:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Потребителско име:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Парола:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Друго..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Няма връзка"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Възли на DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Да"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Не"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Важност"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Състояние"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "По_дробности"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Файлове"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Потребители"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Настройки"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Неограничено"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Надолу"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Нагоре"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Изключен"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Включен"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Свързан"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Хост"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Потребителско име"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Ниво"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Включено"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Приставка"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Изберете приставката"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Инсталатори (eggs) на приставки"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Следящи сървъри"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Без"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Администратор"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Етикети"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Без етикет"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " торента на опашката"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " торент на опашката"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Без ограничение"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Вкл"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Изкл."
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Изключване"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Адрес"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Клиент"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Създаване на торент"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Торенти на опашка"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "П_ремахване"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Автоматично добавяне на торенти при свързване"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Файл"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Добавяне на торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Създаване на торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Затваряне"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Редактиране"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Управление на връзките"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "П_реглед"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Лента с _инструменти"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Странична лента"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Лента за със_тоянието"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Подпрозорци"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Колони"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Страни_чна лента"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Показване торентите _без трафик"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Показване на _сървърите"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Помощ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Често задавани въпроси"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Добавяне на торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Добавяне на торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Премахване на торента"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Премахване на торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Спиране на пауза на избраните торенти"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Спиране"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Възобновяване на избраните торенти"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Продължаване"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Нагоре в опашката"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Нагоре в опашката"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Надолу в опашката"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Надолу в опашката"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Настройки"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Управление на връзките"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Задължително"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Изключено"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Ръкостискане"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "И двете"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Обща скорост в заглавието на прозореца"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Икона в системния панел"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Свиване в системния панел при затваряне"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Зареждане в системния панел"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Защита с парола на системния панел"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Преместване на приключилите в:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Торент-файловете в:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Сваляне в:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Първо на началото и края"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Изтегляне първо на началната и крайна част на файловете"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Добавяне на торентите в спряно състояние"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Да се показва винаги"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Показване прозореца на преден план"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Максимален позволен брой връзки. Задайте -1 за неограничен."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Връзки:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максималният брой слотове за качване за всички торенти. Задайте -1 за "
+"неограничен брой такива."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максимална скорост на изтегляне за всички торенти. Задайте -1 за "
+"неограничена."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Скорост на изтегляне:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максималната скорост на качване за всички торенти. Задайте -1 за "
+"неограничена."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Скорост на качване:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Пренебрегване на ограниченията в локалната мрежа"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Максимален брой места за качване по торенти. Задайте -1 за неограничен."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Максимален брой връзки за торент. Задайте -1 за неограничен."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Произволно"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Използван порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Проверка на ползвания порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "От:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "До:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Степен:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Шифроване"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play (UPNP)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Протокол за пренасочване на портове"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Размяна между потребители"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD (откриване в локална мрежа)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Откриване на потребители в локалната ви мрежа"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT (децентрализирана размяна)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Разпределената хеш-таблица (DHT) може да подобри активните връзки."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Байт за TOS на потребител:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Име на хост:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Големина на кеша (в блокове по 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Изчистване от кеша (в секунди):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Настройки"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Общия брой на блоковете от по 16 KiB записани на диска откакто е започнала "
+"сесията."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Записани блокове:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Общия брой на изпълнениете операции за запис откакто е започнала сесията."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Прочетени блокове:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Общия брой на изпълнените операции за четене откакто е започнала сесията."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Четения:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Общия брой на блоковете от по 16 KiB прочетени от диска откакто е започнала "
+"сесията."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Големина на кеша:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Големина на кеша при четене:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Помогнете ни да подобрим Deluge, като ни изпращате версиите си на Python, "
+"PyGTK, операционната систева и вида на процесора. Никакви други данни не се "
+"изпращат."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Да, нека се изпращат анонимно статистики"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Местоположение:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Ако Deluge не открие файл с базата данни на това местоположение, ще се опита "
+"да използва DNS за намирането на дръжавата на пиъра."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Порт на демона:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Пзволяване на отдалечени връзки"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Връзки"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Периодична проверка на сайта за нови версии"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Версия:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Автор:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Страница в Интернет:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Е-поща на автора:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Данни"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Добавяне на потребител"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "хост:порт"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Общи</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Отказване"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Добавяне"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Премахване"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Добавяне на хеш-код"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Хеш-код:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Сървъри:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Добавяне на хост"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Назначение:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Нова версия"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "Отиване на _уеб-страницата"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Да не се показва този прозорец за в бъдеще"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Име:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Коментари:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Преместване на готовите в:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Спиране при съотношение:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Премахване при съотношение"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Редактиране на следящите сървъри"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Горе"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Най-долу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Добавяне на торенти"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Добавяне в _спряно състояние"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Първо началото и края"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Прилагане за всички"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Връщане към подразбиране"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Показване на Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Ограничение скоростта на _изтегляне"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Ограничение скоростта на _качване"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Изход и спиране на демона"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Редактиране на следящите сървъри"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Добавяне на потребител по IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Редактиране на следящия сървър"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Следящ сървър:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Въведете отдалечен път"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Път:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Създаване на торент"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Пап_ка"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Отдалечен път"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Файлове"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Качващи"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Размер на частите:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Отбелязване като лично"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Добавяне на този торент към сесията"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Настройки"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Запазване на торент-файла като"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Възобновяване"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Възобновяване на избраните торенти."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Наст_ройки"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_На опашка"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Обновяване на следящия сървър"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Премахване на торента"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Проверка на изтегленото"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "етикет"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Избиране на _всички"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Спиране на всички"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Продължаване на _всички"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Ограничение на _връзките"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Ограничение _местата на качване"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Автоматично управление"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Добавяне на следящ сървър"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Добавяне на URL-адрес"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL-адрес:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Разширяване на _всички"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Команда"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Парола"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "От"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "До"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Ползване на случайни портове"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Входящ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Изходящ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "максимални връзки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Максимален брой качвания"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Макс. полу-отворени връзки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Макс. опити за свързване в секунда"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Коефицент на споделяне"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Вид"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Прилагане"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "IP-списък от Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer, текст (компресиран)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian, текст (некомпресиран)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (компресиран с GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Черен списък"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Неправилно начало"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Неправилен магически код"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Неправилна версия"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Дни"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Проверка за нов списък на всеки:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Приложи списъка с блокирани при стартиране"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Настройки</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Свали списъка с блокирани, при необходимост, и добави файла."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Проверка на изтегленото и внасяне"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Изтегли нов списък в блокирани адреси и го зареди."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Принудително изтегляне и внасяне"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Списъкът с блокирани адреси е актуален"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Настройки</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Вид:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Дата:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Размер на файла:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Данни</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Торентът е завършен"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Торентът е добавен"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Изпълни"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Събитие"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Добави команда</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Команди</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Изберете Папка"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Максимална скорост на качване:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Максимален брой връзки:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Макс. места за качване:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Максимална скорост на изтегляне:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Скорост на връзката</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Опашка</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "секунди"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Включи уеб интерфейсът"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Включи SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Порт:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Неправилен етикет, разрешените символи са a-z, 0-9, _ и -"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Празен етикет"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Етикетът вече съществува"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Непознат еткет"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Непознат торент"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Настройки на етикет"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Премахване на етикет"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Добавяне на етикет"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Настройки на етикет"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Етикет"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Настройки на етикет<b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Прилагане на максимални настройки за торент:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Максимално"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Прилагане настройките за опашката:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(един ред за всеки сървър)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Автоматично прилагане на етикет:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Добавяне на етикет"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Добавяне на етикет</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Ползвайте страничната лента за добавяне, редактиране и премахване на "
+"етикети.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Етикети</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Извличане в:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Създаване на под-папка с името на торента"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Това ще създаде под-папка с името на торента в избраната папка и ще постави "
+"извлечените файлове в нея."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Лимит за сваляне:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Лимит за качване:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Активни торенти:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Изход"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Запазване"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Адрес:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Преместване"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Вход"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Зададен максимален брой връзки"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "скорост на сваляне"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Зададена максимална скорост на изтегляне"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "скорост на качване"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Зададена максимална скорост на качване"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Трафик от протокола"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Свързване"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Филтри"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Ограничеине скорост на изтегляне"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Лимит на скороста на качване"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Ограничение на връзката"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Ограничение места за качване"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Обновяване на тракера"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Проверка на изтегленото"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Подробности"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Общо"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Лично"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Вярно"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Съобщаване за нови версии"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Максимален брой връзки:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Максимална скорост на изтегляне (КБ/сек):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Максимална скорост на качване (КБ/сек):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Максимум полу-отворени връзки:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Максимум опити за свързване за секунда:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Максимум слотове за качване:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Сървър"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Обновяване"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Файл"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Добавяне в спряно състояние"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Изтегляне"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/bn.po b/deluge/i18n/bn.po
new file mode 100644
index 0000000..8767031
--- /dev/null
+++ b/deluge/i18n/bn.po
@@ -0,0 +1,6164 @@
+# Bengali translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Bengali <bn@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "কি.বাইট/সেকেন্ড"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "অগ্রগতি"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "আকার"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "স্বয়ংক্রিয়ভাবে পরিচালিত"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "ব্যান্ডউইড্থ"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "ব্যবহারকারীর নাম:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "পাসওয়ার্ড:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "সংয়োগসমূহ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "ডাউনলোডের গতি:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "আপলোডের গতি:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "আদেশ"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "দিন"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "তারিখ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "টরেন্ট সম্পূর্ণ"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "টরেন্ট যোগ করা হয়েছে"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "চালান"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "ঘটনা"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>আদেশ যোগ করুন<b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>আদেশগুলি<b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "সেকেন্ড"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "লেবেল অপশন"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>লেবেল অপশন</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "প্রতি টোরেন্ট এর জন্য সর্বোচ্চ মানসমূহ প্রয়োগ:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "সর্বোচ্চ"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "স্বয়ংক্রিয়ভাবে লেবেল প্রয়োগ:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>পাশের বারটি ব্যবহার করে লেবেল য়োগ, সম্পাদন অথবা বাদ দিন</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>লেবেল</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "সংরক্ষণ"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "সত্য"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/bs.po b/deluge/i18n/bs.po
new file mode 100644
index 0000000..3261557
--- /dev/null
+++ b/deluge/i18n/bs.po
@@ -0,0 +1,6166 @@
+# Bosnian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Bosnian <bs@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Red"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detalji:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Korisničko ime:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Lozinka:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalji"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Da_toteke"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opcije"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Nijedan"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Ukloni"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Datoteka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Pogled"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolone"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Dodaj Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Ukloni Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Postavke"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Preuzmi u:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Uvijek pokaži"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Veze:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Brzina Preuzimanja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Brzina Otpremanja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Od:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Dozvoli Udaljene Veze"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Verzija:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Općenito</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Ime:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Dodaj Torente"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Primijeni Na Sve"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Ograničenje Brzine _Preuzimanja"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Ograničenje Brzine _Otpremanja"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Nast_avi"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opc_ije"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Ukloni Torent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Izaberi Sve"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Dodaj URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Naredba"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Postavke</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opcije</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Vrsta:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informacija</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent završen"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Dodan torrent"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Izvrši"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Događaj"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Dodaj komandu</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Komande</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Omogući web izgled"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Omogući SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Slušam port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Pogrešna oznaka, validni znakovi: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Prazna Oznaka"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Oznaka već postoji"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Nepoznata Oznaka"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Nepoznat Torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opcije Oznaka"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opcije Oznaka</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automatski primijeni oznaku:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Dodaj Oznaku"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Dodaj Oznaku</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>Koristi panel sa strane da dodaš,urediš i izbrišes oznake. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Oznake</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Izdvoji u:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Kreiraj sub-mapu sa imenom torrenta"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Ova opcija će kreirati pod-mapu koristeći ime torrenta u izabranom folderu "
+"izdvajanja i datoteke će biti izdvojene u ovu mapu."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limit preuzimanja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limit slanja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktivni torrenti:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Spore postavke</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Server:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maksimalna rzina Preuzimanja (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maksimalna Brzina Otpremanja (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ca.po b/deluge/i18n/ca.po
new file mode 100644
index 0000000..e060aa1
--- /dev/null
+++ b/deluge/i18n/ca.po
@@ -0,0 +1,6360 @@
+# Catalan translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2022-12-21 00:21+0000\n"
+"Last-Translator: Pere Orga <Unknown>\n"
+"Language-Team: Catalan <ca@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Opcions comunes"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Imprimeix aquest missatge d'ajuda"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Imprimeix la informació de la versió"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Estableix el camí del directori de configuració"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+"Treu la sortida al fitxer de registre especificat en comptes de per la "
+"sortida estàndard"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "Estableix el nivell de registre (none, error, warning, info, debug)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+"Habilita la rotació del fitxer de registre, amb una mida màxima opcional de "
+"per defecte: %(const)s (es mantindran 5 fitxers de registre)"
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "Fes callar la sortida del registre (el mateix que `--loglevel none`)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+"Perfil %(prog)s amb cProfile. Treu la sortida per la sortida estàndard a no "
+"ser que s'especifiqui un nom de fitxer"
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "Opcions del control del procés"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "Pidfile per emmagatzemar l'id. de procés"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr "No facis un dimoni (bifurcació) d'aquest procés"
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "Canvia a aquest usuari en iniciar (requereix root)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "Canvia a aquest grup en iniciar (requereix root)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Opcions del dimoni"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "Adreça IP per escoltar connexions de la interfície gràfica"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Port per escoltar connexions de la interfície gràfica"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "Adreça IP per escoltar connexions de BitTorrent"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+"El nom de la interfície de xarxa o l'adreça IP per les connexions BitTorrent "
+"de sortida."
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr "Les claus de configuració que es modificaran per `set_config` RPC"
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Tot"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Actiu"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Assignant"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "S'està comprovant"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "S'està baixant"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "S'està sembrant"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "En pausa"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "A la cua"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Error"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nom"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progrés"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Estat"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Mida"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Baixat"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Pujat"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Restant"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Relació"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Velocitat de baixada"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Velocitat de pujada"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Límit de baixada"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Límit de pujada"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Connexions màx."
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Màxim de ranures de pujada"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Clients"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Llavors"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Disp"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Llavors:Clients"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Afegit"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Rastrejador"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Carpeta de baixades"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Temps de sembra"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Temps d'activitat"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Última activitat"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Temps finalitzat"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Vists complets"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Completat"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Temps estimat"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Compartit"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritza les primeres/últimes"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Baixada seqüencial"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Gestió automàtica"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Atura a la relació"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Relació d'aturada"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Suprimeix a la relació"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Mou després de completar"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Camí a moure els fitxers completats"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr "Camí a moure els fitxers complets"
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Propietari"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Trossos"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Rang de sembra"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "Sembra ràpida"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Avís"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Comunicat correcte"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anunci enviat"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfície"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Baixades"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Amplada de banda"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Cua"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Xarxa"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Servidor intermediari"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Memòria cau"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Altres"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Dimoni"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Connectors"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Omet"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Baixa"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normal"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Alta"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"El Deluge no ha pogut trobar l'executable `deluged`. Comproveu que el paquet "
+"deluged estigui instal·lat i que s'hagi afegit a la variable PATH."
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Illes Aland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albània"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algèria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Americana"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antàrtica"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua i Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armènia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Austràlia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Àustria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaidjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahames"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangla Desh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bielorússia"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Bèlgica"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benín"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudes"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolívia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bòsnia i Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Illa Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Territori britànic de l'oceà Índic"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgària"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Camerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canadà"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cap Verd"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Illes Caiman"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "República Centreafricana"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Txad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Xile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Xina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Illa Christmas"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Illes Cocos (Keeling)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colòmbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comores"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "República Democràtica del Congo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Illes Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Costa d'ivori"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croàcia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Xipre"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "República Txeca"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dinamarca"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "República Dominicana"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Equador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipte"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Guinea Equatorial"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estònia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiòpia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Illes Malvines (Falkland)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Illes Fèroe"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlàndia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "França"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Guaiana Francesa"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinèsia Francesa"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Territoris Francesos del Sud"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gàmbia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Geòrgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Alemanya"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grècia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenlàndia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haití"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Illes Heard i McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Santa Seu (Estat del Vaticà)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Hondures"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hongria"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islàndia"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Índia"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonèsia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "República Islàmica d'Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraq"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Illa de Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Itàlia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japó"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordània"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Corea del Nord"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "República de Corea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirguizistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "República Democràtica Popular de Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letònia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Líban"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libèria"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Líbia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituània"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macau"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedònia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malàisia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldives"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Illes Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinica"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritània"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Maurici"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mèxic"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Micronèsia, Estats Federats de"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldàvia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Mònaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongòlia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marroc"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Moçambic"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namíbia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "nauruà"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Països Baixos"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antilles Holandeses"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nova Caledònia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nova Zelanda"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Níger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigèria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Illa Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Illes Marianes del Nord"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Noruega"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Territori Palestí, Ocupat"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panamà"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Nova Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguai"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Perú"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipines"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Illes Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polònia"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Federació Russa"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Sant Bartomeu"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Santa Elena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts i Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Santa Llúcia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Sant Pere i Miqueló"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vicent i les Grenadines"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé i Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Aràbia Saudita"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Sèrbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Eslovàquia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Eslovènia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Illes Salomó"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somàlia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Sud-àfrica"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Illes Geòrgia del Sud i Sandwich del Sud"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Espanya"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard i Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swazilàndia"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suècia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Suïssa"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Síria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Taiwan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadjikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "República Unida de Tanzània"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tailàndia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor Oriental"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "tokelauès"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinitat i Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunísia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turquia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Illes Turques i Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ucraïna"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Unió dels Emirats Àrabs"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Regne Unit"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Estats Units"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Illes Perifèriques Menors dels EUA"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguai"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Veneçuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Illes Verges Britàniques"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Illes Verges Nord-americanes"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis i Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Sàhara Occidental"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Iemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zàmbia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbàbue"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Opcions de la interfície gràfica"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+"Estableix la interfície d'usuari a executar per defecte, quan no se "
+"n'especifica cap"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+"Interfície d'usuari alternativa a executar, amb arguments opcionals\n"
+" (IU per defecte: *)"
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Opcions del servidor web"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "Adreça IP a escoltar pel servidor web"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Ports a escoltar pel servidor web"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr "Estableix el camí base on s'executa la interfície d'usuari"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Força el servidor web a fer servir SSL"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Força el servidor web a desactivar SSL"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "El dimoni no existeix"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "El dimoni no s'està executant"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nom de fitxer"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Parcial"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Tria un fitxer"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Cancel·la"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Obre"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Tria una carpeta"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Desar fitxer .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "De_sa"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Fitxers torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Tots els fitxers"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Introduïu la vostra contrasenya per mostrar Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Introduïu la vostra contrasenya per sortir de Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "B: {download_rate} P: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Edita el camí"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Suprimeix el camí"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Aplica-ho als seleccionats"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Drets d'autor %(year_start)s-%(year_end)s Equip de Deluge"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Un programari de compartició de fitxers P2P\n"
+"mitjançant el protocol BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Client:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Desenvolupadors actuals:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Desenvolupadors o col·laboradors anteriors:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Aquest programa és programari lliure (\"free software\" en anglès); podeu "
+"redistribuir-lo i/o modificar-lo sota els termes de la llicència GNU Public "
+"License tal com està publicada per la Free Software Foundation; ja sigui la "
+"versió 3 de la llicència, o (a la vostra decisió) qualsevol altra versió "
+"posterior.\n"
+"Aquest programari es distribueix amb l'esperança de que serà útil, però "
+"SENSE CAP GARANTIA; fins i tot sense la garantia implícita de "
+"COMERCIALITZACIÓ o IDONEÏTAT PER A UN PROPÒSIT ESPECÍFIC. Veieu la GNU "
+"General Public License (GNU GPL) per més detalls.\n"
+"Hauríeu d'haver rebut una còpia de la GNU General Public License (GNU GPL) "
+"juntament amb aquest programa; si no és així, visiteu "
+"<http://www.gnu.org/licenses> ó <http://ca.dodds.net/gnu/gpl.ca.html> "
+"(traducció no oficial de la llicència GPL al català). \n"
+"A més, com a excepció especial, els titulars dels drets d'autor donen permís "
+"per a enllaçar amb la llibreria OpenSSL el codi de parts del programa. Heu "
+"de complir amb la GNU General Public License en tots els aspectes i per a la "
+"totalitat del codi usat fora de OpenSSL.\n"
+"Si modifiqueu fitxers amb aquesta excepció, podríeu estendre aquesta "
+"excepció a la vostra versió dels fitxers, però no esteu obligats. Si no "
+"desitgeu fer-ho, esborreu aquesta clàusula d'excepció de la vostra versió. "
+"Si elimineu aquesta clàusula d'excepció de tots els arxius font al programa, "
+"llavors també esborreu-la aquí."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Servidor:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Afegeix els torrents (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "Torrent(s) duplicat(s)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+"No podeu afegir el mateix torrent dues vegades. Ja s'ha afegit %d torrent(s) "
+"."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Fitxer invàlid"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Espereu pels fitxers..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "No s'ha pogut baixar fitxers per aquest magnet"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Seleccioneu un fitxer .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "L'URL no és vàlid"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "no és un URL vàlid."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "S’està baixant…"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Descàrrega Fallida"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "No s'ha pogut baixar:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_No"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Sí"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Tanca"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detalls:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Autentica"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "C_onnecta"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nom d'usuari:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Contrasenya:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Edita el compte"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Edita el compte existent"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Aplica"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Compte nou"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Crear un compte nou"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Afegeix"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Nivel d'autenticació:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Protegit amb contrasenya"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_D'acord"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Altres..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Desconnectat"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Connexions (límit)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Velocitat de baixada (límit)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Velocitat de pujada (límit)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr "Protocol del trànsit (Baixada:Pujada)"
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nodes DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Espai lliure al disc"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Adreça IP externa"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "n/d"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Qüestió del port</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Sense connexions d'entrada, comproveu el reenviament de ports"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Límit de la velocitat de baixada"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Estableix la velocitat de baixada màxima"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Límit de la velocitat de pujada"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Estableix la velocitat de pujada màxima"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Connexions entrants"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Estableix el nombre màxim de connexions entrants"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent}%"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Mai"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Sí"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "No"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritat"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Tot"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Estat"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalls"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fit_xers"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "C_lients"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opcions"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Rastrejadors"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "No connectat..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Il·limitada"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Avall"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Amunt"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"Un dimoni del Deluge (deluged) ja s'està executant.\n"
+"Per fer servir el mode independent, pareu el dimoni local i reinicieu el "
+"Deluge."
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"Només hi ha disponible el mode client lleuger perquè libtorrent no està "
+"instal·lat.\n"
+"Per fer servir el mode independent, instal·leu el paquet libtorrent."
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"A causa d'un error d'importació desconegut, només hi ha disponible el mode "
+"client lleuger.\n"
+"Per a fer servir el mode independent, vegeu primer els fitxers de registre "
+"pels detalls de l'error."
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "Voleu continuar amb el mode client lleuger?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Canvia el mode de la interfície d'usuari"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Sense connexió"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "En línia"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Connectat"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Estat"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Amfitrió"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versió"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Engega el dimoni"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Atura el dimoni"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Desconnecta"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "No s'ha pogut engegar el dimoni!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+"Comproveu que el paquet deluged estigui instal·lat, i els fitxers de "
+"registre per a més detalls"
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Client incompatible"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+"L'autoarrancada del dimoni local no està habilitada. Vegeu «Opcions» i "
+"«Gestor de connexions»."
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Ha fallat la connexió"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Edita l'amfitrió"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Error en afegir l'amfitrió"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "Ha fallat l'actualització de l'amfitrió"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Nom d'usuari"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivell"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Habilitat"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Connector"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Atenció"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Heu d'escollir un idioma"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr "Heu de reiniciar la interfície d'usuari per aplicar els canvis."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "Client lleuger"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Independent"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr "S'està canviant el mode del client Deluge..."
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "Voleu reiniciar per fer servir el mode %s?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Selecciona el complement"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Ous del Complement (Eggs)"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Error en el servidor"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "S'ha produït un error al servidor"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "S'ha produït un error afegint el compte"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "L'autenticació ha fallat"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "S'ha produït un error quan s'intentava afegir el compte"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Error actualitzant el compte"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "S'ha produït un error quan s'intentava actualitzar el compte"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Suprimeix el compte"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+"Esteu segur que voleu suprimir el compte amb el nom d'usuari «%(username)s»?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Error suprimint el compte"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Ha fallat l'autenticació"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "S'ha produït un error quan s'intentava suprimir el compte"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Estats"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Rastrejadors"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Cap"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administrador"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiquetes"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Cap etiqueta"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Sense propietari"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Versió del client</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents a la cua"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent a la cua"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr "El torrent es comparteix o no amb altres usuaris del Deluge."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Voleu suprimir els torrents seleccionats?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Un total de %s torrents seleccionats"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Estableix a il·limitat"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Actiu"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Inactiu"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Inhabilita"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Habilita..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "Ranures de pujada del client"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Estableix el nombre màxim de ranures de pujada"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Atura la sembra a la relació"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Error en canviar el propietari"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "S'ha produït un error quan s'intentava canviar el propietari."
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adreça"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "Opcions de la GTK"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+"Afegeix un o més fitxers torrent, URLs de fitxers torrent o URIs magnet a "
+"una instància GTK en execució del Deluge"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creació del torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents a la cua"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Afegeix els torrents a la cua"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Suprimeix"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "_Neteja"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Afegeix els fitxers .torrent automàticament en connectar-se"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fitxer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Afegeix un Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Crea un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "_Surt i apaga el dimoni"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Surt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "Edita"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Preferències"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Gestor de _connexions"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Visualitza"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Barra d'eines"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Barra lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Barra d'e_stat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Pest_anyes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Columnes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Troba ..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Ba_rra lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Mosta els accessos _Zero"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Mostra els ras_trejadors"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "Mostra els _propietaris"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Ajuda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Pàgina d'inici"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_PMF"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Preguntes més freqüents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Comunitat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_Quant a"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Afegeix un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Afegeix un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Suprimeix el torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Suprimeix el torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"Filtra els torrents pel nom.\n"
+"Això filtrarà els torrents per la selecció actual en la barra lateral."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Filtra"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Fes una pausa als torrents seleccionats"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Fes una pausa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Reprèn els torrents seleccionats"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Reprèn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Mou el torrent cap a dalt de la cua"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Puja a la cua"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Mou el torrent cap a baix de la cua"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Baixa a la cua"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferències"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Gestor de connexions"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Tanca"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Filtre:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Neteja la cerca"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "_Distingeix entre majúscules i minúscules"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forçat"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Inhabilitat"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Encaixada"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "Flux complet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Qualsevol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Autenticació Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "Autenticació HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "L'aplicació independent autocontinguda"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "Client lleuger"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Connecta a un dimoni del Deluge (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Mode de l'aplicació"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Mostra la velocitat de la sessió a la barra de títol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Enfoca la finestra quan s'afegeixi un torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"La barra de trossos\n"
+"incrementarà l'ús d'amplada de banda entre el client\n"
+"i el dimoni (no aplica en el mode independent)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "Mostra la barra de trossos a la pestanya d'estat"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Completat:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Baixant:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Esperant:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Falten:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "_Reverteix"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Reverteix el color a per defecte"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Colors dels trossos"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Finestra principal"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Habilita la icona de la safata del sistema"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "Indicador de l'aplicació"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Safata del sistema"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimitza a la safata amb el tancament"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Inicia a la safata"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Protecció amb contrasenya de la safata del sistema"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Safata del sistema"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Notifica sobre versions noves"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Actualitzacions"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Valor per defecte del sistema"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Idioma</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Mou els completats a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copia els fitxers .torrent a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Elimina la còpia del fitxer torrent amb la supressió"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Elimina la còpia del fitxer torrent creat quan se suprimeix el torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Baixa a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Baixa les carpetes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioritza els primers i últims trossos del torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioritza els primers i últims trossos dels fitxers al torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Baixada seqüencial"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+"Si s'habilita, el selector de trossos triarà primer els\n"
+"trossos seqüencialment, i no els menys comuns.\n"
+"\n"
+"Habilitar la baixada seqüencial afecta la distribució\n"
+"de trossos a l'eixam. S’ha d’utilitzar amb moderació."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Afegeix els torrents en pausa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Reserva l'espai al disc"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Reserva l'espai al disc pels fitxers torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Afegeix opcions del torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Mostra'l sempre"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Porta el diàleg al primer pla"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Diàleg «Afegeix torrents»"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Intents de connexió per segon:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Connexions mig obertes:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"El nombre màxim de connexions permeses. Establiu-ho a -1 per a il·limitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Connexions:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"El nombre màxim de ranures de pujada per a tots els torrents. Establiu-ho a -"
+"1 per a il·limitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Ranures de pujada:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"La velocitat màxima de baixada per a tots els torrents. Estableix a -1 per a "
+"il·limitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocitat de baixada:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"La velocitat màxima de pujada per a tots els torrents. Establiu-ho a -1 per "
+"a il·limitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocitat de pujada:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignora els límits a la xarxa local"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Límit de sobrecàrrega per IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Si es marca, la sobrecàrrega TCP/IP estimada no es tindrà en compte en els "
+"límits de relació, per tal d'evitar excedir els límits amb el trànsit total"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Límits d'amplada de banda globals"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"El nombre màxim de ranures de pujada per torrent. Establiu-ho a -1 per a "
+"il·limitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"El nombre màxim de connexions per torrent. Establiu-ho a -1 per a il·limitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+"La velocitat màxima de baixada per torrent. Establiu-ho a -1 per a "
+"il·limitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"La velocitat màxima de pujada per torrent. Establiu-ho a -1 per a il·limitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Límits d'amplada de banda per torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "Posa al principi de la cua"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Torrents nous"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Sembrant:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Total:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Ignora els torrents lents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+"Els torrents que no transfereixen dades no es tenen en compte en el recompte "
+"de baixada i sembra."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Prefereix els torrents que sembren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr "Dona preferència a sembrar torrents més que no pas a baixar-los."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Torrents actius"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Relació de compartició:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "Relació de temps:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Temps (m):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr "Rotació de la sembra"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Pausa el torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Relació de compartició assolida"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"L'adreça IP de la interfície per on escoltar les connexions bittorrent "
+"entrants. Deixeu-ho buit si voleu fer servir el valor per defecte."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Adreça d'entrada"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Aleatori"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Usa ports aleatoris entre 49152 i 65525"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Port actiu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Comprova el port actiu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Port d'entrada"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"El nom de la interfície de xarxa o l'adreça IP per les connexions BitTorrent "
+"sortints. (Deixeu-ho buit per defecte.)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Interfície de sortida"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "De:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "A:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Ports de sortida"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "De sortida:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "D'entrada:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivell:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Xifratge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Integració automàtica universal"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocol de mapatge de ports NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Intercanvi de clients"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr "Intercanvia clients. (Desactivar-ho requereix reiniciar)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery troba els clients locals a la vostra xarxa."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"La taula de resum distribuïda pot millorar la quantitat de connexions "
+"actives."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Parell Byte TDS:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Extres de xarxa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nom de l'amfitrió:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "Noms dels servidors intermediaris"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+"Els noms es resoldran a través del servidor intermediari\n"
+"en comptes d'usar el servei DNS local"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr "Clients del servidor intermediari"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr "Connexions de clients del servidor intermediari i de llavors web."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "Rastrejadors del servidor intermediari"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Força l'ús del servidor intermediari"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "Amaga la identitat del client"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+"S'intentarà amagar la identitat del client i només es farà ús del servidor "
+"intermediari per les connexions entrants."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Força el servidor intermediari"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Mida de la memòria cau (blocs de 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"El nombre de segons des de la darrera escriptura a la memòria cau d'un tros, "
+"fins que es desa al disc. Per defecte són 60 segons."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Expiració de la memòria cau (segons):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Paràmetres"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"El nombre total de blocs de 16 KiB escrits al disc d'ençà que s'ha iniciat "
+"aquesta sessió."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocs escrits:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"El nombre total d'operacions d'escriptura realitzades d'ençà que s'ha "
+"iniciat aquesta sessió."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Escriptures:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"La relació (blocs_escrits - escriptures) / blocs_escrits representa el "
+"nombre d'operacions d'escriptura estalviades pel nombre total d'operacions "
+"d'escriptura, és a dir, una mena de relació d'encerts de la memòria cau "
+"d'escriptura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Relació d'encerts d'escriptura a la memòria cau:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Escriptura"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"El nombre de blocs que van ser sol·licitats pel motor bittorrent (per "
+"clients), que foren servits del disc o de la memòria cau."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocs llegits:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "El nombre de blocs que foren servits de la memòria cau."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Encert de lectura dels blocs:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "La relació d'encerts d'escriptura a la memòria cau."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Relació d'encerts de lectura a la memòria cau:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"El nombre total d'operacions de lectura realitzades d'ençà que s'ha iniciat "
+"aquesta sessió."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lectures:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Lectura"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"El nombre de blocs de 16 KiB actualment a la memòria cau del disc. Inclou "
+"les memòries cau de lectura i escriptura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Mida de la memòria cau:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Mida de la memòria cau de lectura:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Refresca"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Ajudeu-nos a millorar Deluge amb l'enviament de la vostra versió de Python, "
+"PyGTK, SO i tipus de processador. No s'enviarà cap altra informació."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Sí, si us plau, envieu-nos estadístiques anònimes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Informació del sistema"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Ubicació:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Si el Deluge no pot trobar el fitxer de la base de dades en aquesta ubicació "
+"haurà d'emprar DNS per a resoldre el país dels clients."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "Base de dades GeoIP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Associa amb el Deluge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Enllaços magnet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Port del dimoni:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Permet connexions remotes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Connexions"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Comprova periòdicament el lloc web per si hi ha llançaments nous"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Suprimeix"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Comptes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versió:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor/a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Pàgina d'inici:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Correu de l'autor/a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informació"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Instal·la"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Troba'n més..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Voleu suprimir els torrents seleccionats?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Inclou els fitxers baixats"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(Això és permanent)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Afegeix el client"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "amfitrió:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Propietats"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr "Màxim de files de la llista desplegable"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>General</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Mostra l'entrada del camí"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Mostra el selector de fitxers"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Mostra el nom de la carpeta"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Tipus del selector de camins"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Activa la compleció automàtica"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Mostra els fitxers ocults"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Estableix una clau nova"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+"Premeu aquesta tecla per establir nou acceleradors de tecles que activin "
+"l'autocompleció"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Completa automàticament"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Desa el camí"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Commuta la visualització de fitxers ocults"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Camí per defecte"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Dreceres"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Seleccioneu un directori"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Camins desats"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "columna"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Obre"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Afegeix"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Afegeix el valor de l'entrada actual a la llista"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Edita"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Edita l'entrada seleccionada"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Suprimeix"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Suprimeix l'entrada seleccionada"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Mou l'entrada seleccionada amunt"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Mou l'entrada seleccionada avall"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Per defecte"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "No s'ha establert un camí per defecte"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Obre el diàleg de propietats"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Afegeix Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "De l'«infohash»"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Rastrejadors:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Afegeix un amfitrió"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "Mou la carpeta de baixades"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "Mou la carpeta de baixada dels torrents."
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destí:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nova versió"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Ves al lloc web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Hi ha una nova versió disponible."
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Versió disponible:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Versió del servidor"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Versió actual:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "No tornis a mostrar aquest diàleg"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Velocitat de baixada:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Velocitat de pujada:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Baixat:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Pujat:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Llavors:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Clients:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Disponibilitat:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Rang de sembra:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "Temps restant estimat:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Última transferència:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Temps d'activitat:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "Vists complets:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Temps de sembra:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Trossos:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nom:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Carpeta de baixada:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Afegit:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Mida total:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Total de fitxers:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Hash:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Creat per:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comentaris:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Propietari:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Mou els completats:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Atura la sembra a la relació:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Suprimeix a la relació"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Límits d'amplada de banda"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Rastrejador actual:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Total de rastrejadors:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Estat del rastrejador:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Comunicat següent:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Torrent privat:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Edita els rastrejadors"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Capdamunt"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Capdavall"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Afegiment de Torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "Mou la carpeta de completats"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Afegeix amb l'estat de _pausa"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritza els primers/últims trossos"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Omet la comprovació de la suma de verificació"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Reserva l'espai al disc"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Reserva l'espai al disc pels fitxers torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "Velocitat màxima de baixada pel torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Velocitat màxima de pujada pel torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Màxim de connexions pel torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr "Màxim de ranures de pujada pel torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Aplica-ho a tot"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Reverteix als valors predeterminats"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Mostra el Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "_Pausa la sessió"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "_Reprèn la sessió"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Límit de la velocitat de _baixada"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Límit de la velocitat de _pujada"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Sortir i Apagar Dimoni"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Edita els rastrejadors"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "_Amunt"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "A_vall"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Afegeix un client"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Afegeix un client per la seva IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Edita el rastrejador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Seguidor:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Introduïu el camí remot"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Camí remot"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Camí:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Crea torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Carpeta"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Camí _remot"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Fitxers"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Sembradors web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Mida del tros:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Estableix un senyalitzador privat"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Afegeix aquest torrent a la sessió"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opcions"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Anomena i desa el .torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Obre la carpeta de baixades"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "Fes una _pausa"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Conti_nua"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Reprèn els torrents seleccionats."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Op_cions"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "Envia a la _cua"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Actualitza el rastrejador"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Suprimeix el torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Força la re-comprovació"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "_Mou la carpeta de baixades"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiqueta"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Selecciona-ho tot"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Fes una _pausa a tot"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Conti_nuar Tots"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Límit de la _connexió"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Límit de _ranures de pujada"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "Atura la sembra a la _relació"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "Gestió _automàtica"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr "_Sembra ràpida"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "_Canvia el propietari"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Afegeix un seguidor"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Afegeix rastrejadors"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Afegeix un URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "D'un URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Dimonis del Deluge"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Connecta automàticament al dimoni seleccionat"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "Inicia automàticament un dimoni local (si és necessari)"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Amaga aquest diàleg"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Opcions d'inici"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Obre el fitxer"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "_Mostra la carpeta"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expandeix-ho Tot"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "_Omet"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Baixa"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Normal"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_Alta"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Equip del Deluge"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+"El Deluge és un client de BitTorrent lleuger, de progamari lliure i "
+"multiplataforma."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+"El Deluge conté les funcions comunes dels clients BitTorrent, com ara el "
+"xifratge del protocol, DHT, descobriment de clients locals (LSD), intercanvi "
+"de clients (PEX), UPnP, NAT-PMP, suport per servidors intermediaris, llavors "
+"web i límits de velocitat globals i per torrent. El Deluge es basa en la "
+"biblioteca libtorrent, i, per tant, incorpora la llista completa de les "
+"funcions que proporciona."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+"El Deluge ha estat dissenyat per funcionar com una aplicació normal "
+"d'escriptoril i com a client-servidor. En el mode de client lleuger, un "
+"dimoni del Deluge gestiona tota l'activitat de BitTorrent i és capaç "
+"d'executar-se en màquines sense perifèrics amb les interfícies d'usuari que "
+"es connecten de forma remota des de qualsevol altra plataforma."
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Client de BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Client de BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Baixeu i compartiu fitxers a través de BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Opcions de la consola"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+"Aquestes opcions de connexió del dimoni s'utilitzaran per a ordres, o per si "
+"la connexió automàtica de la interfície d'usuari de la consola està "
+"habilitada."
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+"Adreça IP del dimoni del Deluge a connectar-se (per defecte 127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr "Port del dimoni del Deluge a connectar-se (per defecte 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "El nom d'usuari del dimoni del Deluge a utilitzar per connectar"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "La contrasenya del dimoni del Deluge a utilitzar per connectar"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Ordres de la consola"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Descripció"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "Les ordres de consola següents estan disponibles:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Ordre"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr "Àlies `%s`"
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Ús: manage <id-del-torrent> [--set <clau> <valor>] [<clau> [<clau>...] ]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+"una expressió que coincideix amb els identificadors i noms dels torrents"
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "Estableix un valor per aquesta clau"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Valor a establir"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "una o més claus separades per espai"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Això també suprimirà les dades del torrent"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "Llista els torrents coincidents sense suprimir-los."
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "Un o més identificadors de torrent"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr "Confirmeu amb -c per suprimir els torrents llistats (Total: %d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr "Ús: resume [ * | <id-del-torrent> [<id-del-torrent> ...] ]"
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+"Un o més identificadors de torrent. Useu \"*\" per reprendre tots els "
+"torrents"
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+"Un o més identificadors de torrent. Useu \"*\" per posar en pausa tots els "
+"torrents"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Carpeta de baixada pel torrent"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Mou el torrent completat a aquesta carpeta"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "Un o més fitxers torrent, URLs o URLs magnet"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Llista els connectors disponibles"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Mostra els connectors habilitats"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Habilita un connector"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Desactiva un connector"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "Torna a carregar la llista de connectors disponibles"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Instal·la un connector d'un fitxer .egg"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+"Valors en brut de les velocitats de pujada i baixada (sense el sufix KiB/s) "
+"(útil per a scripts que vulguin analitzar-ho)"
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "No mostris l'estat dels torrent (millora la velocitat de l'ordre)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr "Ús: connect <amfitrió[:port]> [<usuari>] [<contrasenya>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "Amfitrió i port del dimoni"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Contrasenya"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "El camí a moure els torrents"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "El nou estat"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "Una o més ordres"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "Ús: config [--set <clau> <valor>] [<clau> [<clau>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Mostra més informació per torrent."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "Mostra més informació detallada com ara els fitxers i clients."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr "Mostra els torrents amb l'estat: %s."
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "El mateix que --sort però els elements estan amb ordre invers."
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+"Un o més identificadors de torrent. Si no se'n proporciona cap, mostra'ls "
+"tots"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Selecciona un amfitrió"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Surt"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Suprimeix l'amfitrió"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+"Afegeix un amfitrió (les fletxes amunt i avall serveixen per navegar, ESC "
+"per cancel·lar)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "S'ha produït un error afegint l'amfitrió"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Columnes"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Amplada"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Opcions generals"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "Fes sonar la campana del sistema quan es completi una baixada"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+"Llista els torrents complets després dels incomplets, independentment del "
+"criteri d'ordenació"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr "Mou la selecció quan moguis els torrents de la cua"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Idioma"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Mode de línia d'ordres"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "No emmagatzemis l'entrada de dades a l'historial"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+"Emmagatzema i carrega l'historial de la línia d'ordres en el mode de línia "
+"d'ordres"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+"La tercera pestanya llista al mode de línia d'ordres els torrents restants"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr "Torrents per cada pestanya premuda"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Carpetes"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Baixar a"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Mou els completats a"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr "Còpia de fitxers .torrent a"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "Afegeix en pausa"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Reserva l'espai al disc"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Ports d'entrada"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Des de"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "A"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Utilitza ports aleatoris"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Interfície d'entrada"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+"Adreça IP de la interfície per on escoltar (deixeu-ho buit per defecte):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"El nom de la interfície o l'adreça IP per a connexions BitTorrent sortints. "
+"(Deixeu-ho buit per defecte):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Trànsit d'entrada"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Trànsit de sortida"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Ús global de l'amplada de banda"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Connexions màximes"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Llocs Màxims de Pujada"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Velocitat de baixada màxima (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Velocitat de pujada màxima (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Nombre màxim de connexions a mig obrir"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Nombre màxim d'intents de connexió per segon"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Límit de sobrecàrrega per IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Ús per torrent de l'amplada de banda"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Sí, envia estadístiques anònimes."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Port del dimoni"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Permet connexions remotes"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Total"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Relació de compartició"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Relació de temps"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Temps (m)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr "Suprimeix el torrent (Desmarcat pausa el torrent)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Configuració del servidor intermediari"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tipus"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Nom de l'amfitrió"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr "Ajuda sobre el tipus de servidor intermediari"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Mida de la memòria cau (blocs de 16 KiB)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr "Expiració de la memòria cau (segons)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Blocs escrits"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "Escriptures"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr "Relació d'encerts d'escriptura a la memòria cau"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Blocs llegits"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr "Encert de lectura dels blocs"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr "Lectures"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr "Relació d'encerts de lectura a la memòria cau"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr "Mida de la memòria cau"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr "Mida de la memòria cau de lectura"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Aplicar"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "D'acord"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Seleccioneu un idioma"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr "IP {!white,blue!}%s{!status!}"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "L'adreça IP \"%s\" està mal formada"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Llistat d'IPs de l'eMule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Text de SafePeer (amb compressió zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Text de PeerGuardian (sense compressió)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "P2B de PeerGuardian (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr "Intervals d'IP bloquejats / Intervals d'IP a la llista blanca"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Llista de bloqueig"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Adreça IP incorrecta"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Líder invàlid"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Codi màgic invàlid"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versió no vàlida"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dies"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Comprovar per una nova llista cada:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importa la llista de bloqueigs a l'inici"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Paràmetres</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Baixa el fitxer de la llista de bloqueigs si cal i importa el fitxer."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Verificar descàrrega i importar-lo"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Baixa un fitxer nou de llista de bloqueigs i l'importa."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forçar descàrrega i importar-lo"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "La llista de bloqueigs està actualitzada"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opcions</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipus:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Mida del fitxer:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informació</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Llista blanca</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent completat"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent afegit"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent suprimit"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Executa"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Esdeveniment"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Afegeix una ordre</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Ordres</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Opció incompatible"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+"Els directoris de la «Carpeta a vigilar» i de «Copia els fitxers .torrent a» "
+"no poden ser el mateix."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Afegeix automàticament"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Feu doble clic per canviar"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Feu doble clic per editar"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Camí"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "La carpeta vigilada no existeix."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "No existeix el camí."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Propietats de la carpeta vigilada"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Si s'afegeix un fitxer .torrent en aquest\n"
+"directori, s'afegirà a la sessió."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Selecciona una carpeta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Habilita aquesta carpeta vigilada"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Carpeta a vigilar</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Suprimeix el .torrent després d'afegir-lo"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Després d'afegir el torrent a la sessió,\n"
+"se suprimirà el .torrent."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Annexa l'extensió després d'afegir:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"Després d'afegir el torrent a la sessió,\n"
+"s'annexarà una extensió al .torrent i romandrà\n"
+"al mateix directori."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".afegit"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"Després d'afegir el torrent a la sessió,\n"
+"es copiarà el fitxer .torrent al directori\n"
+"escollit i se suprimirà de la carpeta vigilada."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+"Quan se suprimeixi el torrent de la sessió,\n"
+"esborra el fitxer .torrent utilitzar per afegir-lo."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Acció amb el fitxer torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Estableix la carpeta de la baixada"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "Es guardaran les dades del torrent en aquesta carpeta."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Carpeta de la baixada</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "Estableix la carpeta on moure els fitxers complets"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Mou els completats</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiqueta: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiqueta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Principal"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "L'usuari seleccionat serà el propietari del torrent."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Propietari</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Velocitat màxima de pujada:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Nombre màxim de connexions:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Nombre màxim de ranures de pujada:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Velocitat màxima de baixada:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Amplada de banda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Gestió automàtica:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Afegeix en pausa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Envia a la cua:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Cua</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Vigila les carpetes:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "minuts"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 minut"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 segon"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "segons"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Estadístiques"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Resolució"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Llavors/Clients"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Color de baixada:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Color de pujada:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Gràfica de connexions</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Gràfica d'amplada de banda</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "Nodes DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Nodes DHT a la memòria cau:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "Torrents DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Llavors / Clients</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Colors de la gràfica</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Interfície gràfica web"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"La interfície web de Deluge no està instal·lada. Si us plau, instal·leu la\n"
+"interfície i torneu-ho a provar"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Habilita la interfície web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Habilita SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Escoltant port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etiqueta Invàlida, caràcters vàlids:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etiqueta buida"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Ja existeix l'etiqueta"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etiqueta desconeguda"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent desconegut"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opcions de l'etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Sup_rimeix l'etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Afegeix una etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opcions de les etiquetes"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opcions de les etiquetes</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Aplica els paràmetres màxims a cadascun dels torrents:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Màxim"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Aplica els paràmetres de cua:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Aplica els paràmetres de la carpeta:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 línia per rastrejador)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aplica automàticament l'etiqueta:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Afegeix una etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Afegeix una etiqueta</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Utilitza la barra lateral per afegir, editar i eliminar etiquetes.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiquetes</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Notificacions mostrades parpadejant"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Les notificacions emergents no es troben habilitades."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "La libnotify no està instal·lada"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr "No s'ha pogut mostrar una notificació emergent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Notificació emergent mostrada"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "La notificació sonora no es troba habilitada"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame no es troba instal·lat"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Ha fallat la notificació sonora: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "La notificació sonora ha tingut èxit"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "S'ha finalitzat el torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"El torrent \"%(name)s\" incloent %(num_files)i fitxers han acabat de baixar-"
+"se."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Notificacions"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Escolliu un fitxer de so"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "S'ha produït un error enviant el correu de notificació: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "El servidor no ha respost adequadament a la petició inicial: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "El servidor ha refusat la combinació d'usuari i contrasenya: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Correu de notificació enviat."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "S'ha finalitzat el torrent «%(name)s»"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Aquest correu és per informar-vos que Deluge ha acabat de baixar "
+"\"%(name)s\", el qual inclou %(num_files)i fitxers.\n"
+"Per deixar de rebre aquestes alertes, simplement desactiveu la notificació "
+"per correu a les preferències de Deluge.\n"
+"\n"
+"Mostes gràcies,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "El parpelleig de les icones de la safata del sistema està activat"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Notificacions emergents habilitades"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "So habilitat"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Notificacions de la interfície gràfica</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Destinataris</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "El servidor requereix TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Notificacions per correu electrònic</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Aquesta configuració no significa que realment rebeu notificacions de tots "
+"aquests esdeveniments."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Subscripcions"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Personalització del so"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Extractor"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extreu a:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Crear torrent anomena subcarpeta"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Aquesta opció crearà una subcarpeta amb el nom del torrent dins de la "
+"carpeta d'extracció seleccionada i posarà els fitxers extrets allí."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Planificador"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr "<b>Programació</b>"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Límit de baixada:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Límit de pujada:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrents actius:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Nombre de connexions actives:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Comparticions actives:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Paràmetres de lentitud</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Navegador de fitxers"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Enrere"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Següent"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "Inici"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Crea"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Ajuda"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Fi de sessió"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Desa"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "Quant al Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Copyright 2007-2018 L'equip del Deluge"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Suprimeix amb les dades"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Afegeix una connexió"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Amfitrió:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "No s'ha pogut afegir l'amfitrió: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Mou"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Navega"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Edita la connexió"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "No s'ha pogut editar l'amfitrió"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Inici de sessió"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Ha fallat l'inici de sessió"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Heu introduït una contrasenya incorrecta"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Públic"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Última transferència"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "Barrejat"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Estableix el nombre màxim de connexions"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Velocitat de Descàrrega"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Estableix la velocitat màxima de baixada"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Velocitat de Pujada"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Estableix la velocitat màxima de pujada"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocol del trànsit (Baixada/Pujada)"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "Espai lliure en la carpeta de baixades"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Connecta"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Atura el dimoni"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Desconnecta"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Inicia el dimoni"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Canvia la contrasenya per defecte"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Es recomana canviar la contrasenya per defecte.<br><br>Voleu canviar-la ara?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "Amfitrió del rastrejador"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtres"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "S'ha restaurat la connexió"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "S'ha perdut la connexió"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "S'ha perdut la connexió amb el servidor web."
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "S'ha perdut la connexió al servidor"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Límit de velocitat (B)"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Límit de velocitat (P)"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Límit de connexions"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Límit de ranures de pujada"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Actualitza el rastrejador"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Força la comprovació"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Expandeix-ho tot"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detalls"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Comentari:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Estat:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Mou els completats:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "General"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privat"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "S'està carregant"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Vertader"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Avisa'm quan hi hagi una versió nova"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Ajudeu-nos a millorar el Deluge enviant-nos la versió de Python i de PyGTK, "
+"el sistema operatiu i el tipus del processador. No s'envia cap altra "
+"informació."
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Pausa el torrent"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Instal·la el connector"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Instal·la"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr "Seleccioneu un «egg»"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr "Connector «Egg»"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Navega..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Pugeu el vostre connector..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Nombre màxim de connexions:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Velocitat màxima de baixada (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Velocitat màxima de pujada (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Nombre màxim de connexions mig-obertes:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Nombre màxim d'intents de connexió per segon:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Nombre màxim de ranures de pujada:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Mida de la memòria (blocs de 16 KiB):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Força l'ús del servidor intermediari"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "Troba'n més"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Fes servir un port aleatori"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Tipus del servei"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr "Mostra els filtres sense cap torrent"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr "Permet l'ús de més d'un filtre al mateix temps"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr "Contrasenya WebUI"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "Antic:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Nou:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Confirmeu:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Servidor"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Temps d'espera de la sessió:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+"Habilita SSL (els camins són relatius a la carpeta de configuració del "
+"Deluge)"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Clau privada:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Certificat:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr "L'idioma de WebUI ha canviat"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr "Voleu refrescar la pàgina ara per fer servir l'idioma nou?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Refresca"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "La contrasenya no és vàlida"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Les contrasenyes no coincideixen."
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "La contrasenya anterior no és correcta."
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "S'ha canviat correctament"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "La contrasenya s'ha canviat satisfactòriament."
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Afegeix d'un URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Galetes"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Ha fallat la baixada del torrent"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fitxer"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Infohash"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "S'està pujant el torrent..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Ha fallat la pujada del torrent"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "El torrent no és vàlid"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "Mou la carpeta de completats"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Velocitat màxima de baixada"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Velocitat màxima de baixada"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Afegeix en pausa"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr "Sembra ràpida"
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Baixada"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "Temps estimat:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "Data d'addició:"
+
+#~ msgid "<b>Language</b>"
+#~ msgstr "<b>Idioma</b>"
diff --git a/deluge/i18n/cs.po b/deluge/i18n/cs.po
new file mode 100644
index 0000000..af5a9c8
--- /dev/null
+++ b/deluge/i18n/cs.po
@@ -0,0 +1,6220 @@
+# Czech translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-07-23 10:47+0000\n"
+"Last-Translator: Cas <Unknown>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Vše"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktivní"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Kontrolované"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Stahované"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Seedované"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pozastavené"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Ve frontě"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Chyba"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Název"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Průběh"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Stav"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Velikost"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Staženo"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Odesláno"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Poměr"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Rychl. stah."
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Rychl. odes."
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limit stah."
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Limit odes."
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peerů"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Dostup."
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Přidáno"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Zbývá"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Upřednostňovat první/poslední"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatická správa"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Dílky"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Varování"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Oznámení OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Oznámení odesláno"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Rozhraní"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Stahování"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Šířka pásma"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Fronta"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Síť"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Mezipaměť"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Ostatní"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Démon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Zásuvné moduly"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghánistán"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Alandy"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albánie"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Alžírsko"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Americká Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktida"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua a Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Arménie"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Austrálie"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Rakousko"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Ázerbájdžán"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamy"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrajn"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladéš"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bělorusko"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgie"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudy"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhútán"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolívie"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna a Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvetův ostrov"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazílie"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Britské indickooceánské území"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Sultanát Brunej"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulharsko"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kapverdy"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kajmanské ostrovy"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Středoafrická republika"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Čad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Čína"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Vánoční ostrovy"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosové (Keelingovy) ostrovy"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbie"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komory"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Konžská demokratická republika"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cookovy ostrovy"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kostarika"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Pobřeží slonoviny"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Chorvatsko"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Kypr"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Česká republika"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dánsko"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Džibutsko"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikánská republika"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekvádor"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Rovníková Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonsko"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopie"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandy (Malvíny)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faerské ostrovy"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidži"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finsko"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francie"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Francouzská Guyana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Francouzská Polynésie"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Francouzská jižní a antarktická území"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambie"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gruzie"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Německo"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Řecko"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grónsko"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heardův ostrov a McDonaldovy ostrovy"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Svatý stolec (Městský stát Vatikán)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hongkong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Maďarsko"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indie"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonésie"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Íránská islámská republika"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irák"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irsko"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Ostrov Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Izrael"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Itálie"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamajka"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japonsko"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordánsko"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazachstán"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Keňa"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korejská lidově demokratická republika"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korejská republika"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuvajt"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstán"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laoská lidově demokratická republika"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Lotyšsko"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libérie"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyjská arabská džamáhíríje"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Lichtenštejnsko"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litva"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Lucembursko"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonie"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malajsie"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maledivy"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshallovy ostrovy"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinik"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritánie"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauricius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Federativní státy Mikronésie"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavsko"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolsko"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Černá Hora"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mosambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibie"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepál"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Nizozemsko"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Nizozemské Antily"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nová Kaledonie"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nový Zéland"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigérie"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Ostrov Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Severní Mariany"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norsko"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omán"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pákistán"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinské území, okupované"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua - Nová Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipíny"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polsko"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugalsko"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Portoriko"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumunsko"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Ruská federace"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Svatý Bartoloměj"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Svatá Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Svatý Kryštof a Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Svatá Lucie"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Svatý Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Svatý Pierre a Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Svatý Vincenc a Grenadiny"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Svatý Tomáš a Princův ostrov"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saúdská Arábie"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Srbsko"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychely"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovensko"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovinsko"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Šalamounovy ostrovy"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somálsko"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Jihoafrická republika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Jižní Georgie a Jižní Sandwichovy ostrovy"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Španělsko"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Srí Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Súdán"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Špicberky a Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Svazijsko"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Švédsko"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Švýcarsko"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syrská arabská republika"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tádžikistán"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Sjednocená tanzanská republika"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thajsko"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Východní Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad a Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisko"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turecko"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistán"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Ostrovy Turks a Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukrajina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Spojené arabské emiráty"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Spojené království"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Spojené státy americké"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Menší odlehlé ostrovy USA"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistán"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Britské Panenské ostrovy"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Americké Panenské ostrovy"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis a Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Západní Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambie"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Démon neběží"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Soubor"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Úroveň"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Vybrat soubor"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Vybrat složku"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Uložit .torrent soubor"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent soubory"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Všechny soubory"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Tento program je svobodný software; můžete jej šířit a/nebo modifikovat "
+"podle podmínek GNU General Public License vydávané Free Software Foundation; "
+"buď ve verzi 3 této licence, nebo (podle vašeho uvážení) kterékoli pozdější "
+"verze. \n"
+"\n"
+"Tento program je rozšiřován v naději, že bude užitečný, avšak BEZ JAKÉKOLI "
+"ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO "
+"URČITÝ ÚČEL. Přečtěte si GNU General Public License, chcete-li bližší "
+"informace. \n"
+"\n"
+"Měli byste obdržet kopii GNU General Public License spolu s tímto programem, "
+"pokud ne, vizte <http://www.gnu.org/licenses>. \n"
+"\n"
+"Kromě toho, jako zvláštní výjimku, držitelé autorských práv dávají povolení "
+"linkovat kód části tohoto programu s knihovnou OpenSSL. Musíte se řídit GNU "
+"General Public License ve všech ohledech pro všechen kód použitý k jiným "
+"účelům než OpenSSL. \n"
+"\n"
+"Změníte-li soubor(y) s touto výjimkou, můžete rozšířit tuto výjimku na svou "
+"verzi souboru(ů), ale nejste povinni tak učinit. Pokud tak nechcete učinit, "
+"smažte tuto výjimku ze své verze. Pokud odstraníte tuto výjimku ze všech "
+"zdrojových souborů v programu, odstraňte ji také zde."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Neplatný soubor"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Vyberte .torrent soubor"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Neplatná URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "není platná URL adresa."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Stahování..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Stahování selhalo"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Nepodařilo se stáhnout:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Podrobnosti:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Uživatelské jméno:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Heslo:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Další..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Nepřipojeno"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT uzlů"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Volné místo na disku"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ano"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Ne"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priorita"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "Sta_v"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Podrobnosti"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Sou_bory"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "P_rotějšky"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Možnosti"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Nepřipojeno..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Neomezeně"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Stahování"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Odesílání"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Odpojen"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Připojen"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Připojeno"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Stav"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Hostitel"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Verze"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Spustit démona"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Zastavit démona"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Nelze spustit démona!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Chyba při přidávání hostitele"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Uživatelské jméno"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Úroveň"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Povolen"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Zásuvný modul"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Vyberte zásuvný modul"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Podmoduly"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Stavy"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackery"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Žádný"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Štítky"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Bez štítku"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Verze klienta</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrenty ve frontě"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent ve frontě"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Nastavit neomezeně"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Zapnuto"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Vypnuto"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Zakázat"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresa"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klient"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Vytváření torrentu"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrenty ve frontě"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Odstranit"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automaticky přidat torrenty po připojení"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Soubor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "Přidat _torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Vytvořit torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Ukončit a _vypnout démona"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "U_končit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "Úpr_avy"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Správ_ce připojení"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Zobrazení"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Panel nástrojů"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "P_ostranní panel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Stavový řádek"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Karty"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "Sloup_ce"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Postra_nní panel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Zobraz prázdné sk_upiny"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Zobrazit _trackery"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Nápověda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Domovská stránka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Často kladené otázky"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Komunita"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Přidat torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Přidat torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Odstranit torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Odstranit torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pozastavit vybrané torrenty"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pozastavit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Obnovit vybrané torrenty"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Obnovit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Posunout torrent nahoru"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Posunout nahoru"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Posunout torrent dolů"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Posunout dolů"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Nastavení"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Správce připojení"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Vynuceno"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Vypnuto"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Navázání spojení"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Obojí"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Zobrazit rychlost relace v záhlaví"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Povolit ikonu v oznamovací oblasti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimalizovat do oznamovací oblasti při zavření"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Při spuštění skrýt do oznamovací oblasti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "V oznamovací oblasti chránit heslem"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Dokončené přesunout do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopírovat .torrent soubory do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Stahovat do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "První a poslední dílky torrentu mají přednost"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Upřednostňovat první a poslední dílky souborů v torrentu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Přidat torrenty v pozastaveném stavu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Vždy zobrazit"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Přenést dialog do popředí"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Maximální počet povolených spojení. Zadejte -1 pro neomezené."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Spojení:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maximum slotů k odesílání pro všechny torrenty. Zadejte -1 pro neomezeně."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maximální rychlost stahování pro všechny torrenty. Zadejte -1 pro neomezené."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Rychlost stahování:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maximální rychlost odesílání pro všechny torrenty. Zadejte -1 pro neomezené."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Rychlost odesílání:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorovat omezení pro místní síť"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Překročení limitů na IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Je-li zaškrtnuto, nebude TCP/IP režie přenosu započítána do celkových "
+"limitů, může dojít k jejich prekročení."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Maximální počet slotů pro odesílání na torrent. Zadejte -1 pro neomezené."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Maximální počet spojení na torrent. Zadejte -1 pro neomezené."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Náhodné"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktivní port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Vyzkoušet aktivní port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Od:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Úroveň:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Šifrování"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Výměna protějšků"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery vyhledá lokální protějšky ve vaší síti."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Distributed hash table může vylepšit množství aktivních spojení."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TOS bajt protějškům:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Hostitelské jméno:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Velikost mezipaměti (16 KiB bloky):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Počet vteřin od posledního zapsání dat do paměti předtím, než jsou data "
+"zapsána na HDD. Standard je 60 vteřin."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Vypršení mezipaměti (sekundy):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Nastavení"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "Celkový počet 16 KiB bloků zapsaných na disk od začátku sezení."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Zapsaných bloků:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Celkový počet zapisovacích operací od začátku sezení."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Zápisů:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Poměr (zapsaných_bloků - zápisů) / zapsaných_bloků představuje počet "
+"ušetřených zapisovacích operací ze všech zapisovacích operací, čili zásahů "
+"mezipaměti pro zápis."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Poměr zásahů mezipaměti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Počet bloků vyžádaných bittorrentovým jádrem (od protějšků) které byly "
+"obslouženy z disku nebo mezipaměti."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Přečtených bloků:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Počet bloků obsloužených z mezipaměti."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Zásahy čtení bloku:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Poměr zásahů mezipaměti při čtení bloku."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Poměr zásahů mezipaměti pro čtení:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Celkový počet operací čtení provedených od začátku sezení."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Čtení:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Počet 16 kiB bloků v diskové mezipaměti. Zahrnuje mezipaměť pro čtení i "
+"zápis."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Velikost mezipaměti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Velikost mezipaměti pro čtení:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Pomozte nám vylepšit Deluge zasláním své verze Pythonu, PyGTK, OS a typu "
+"procesoru. Žádná další informace nebude odeslána."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ano, chci odesílat anonymní statistické informace"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Umístění:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Pokud Deluge nebude moci najít soubor s databází o této lokalitě, bude k "
+"rozlišení země protějšků nouzově používat DNS."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Port démona:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Povolit vzdálené připojení"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Spojení"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Pravidelně kontrolovat na webových stránkách nové verze"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Verze:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Domovská stránka:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Email autora:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informace"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Přidat protějšek"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "jménohostitele:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Obecné</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Přidat"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Odstranit"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Přidat Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackery:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Přidat hostitele"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Cíl:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nová verze"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Přejít na webové stránky"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Nezobrazovat tento dialog v budoucnu"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Název:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Komentáře:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Dokončené přesunout do:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Zastavit sdílení při poměru:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Odstranit při poměru"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Upravit trackery"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Začátek"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Konec"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Přidat torrenty"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Přidat v _pozastaveném stavu"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Upřednostňovat první/poslední dílky"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Použít pro všechny"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Vrátit výchozí"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Zobrazit Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Limit rychlosti _stahování"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Limit rychlosti _odesílání"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Ukončit a deaktivovat démona"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Upravit trackery"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "Přid_at protějšek"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Přidat protějšek podle jeho IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Upravit tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Zadejte vzdálenou cestu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Cesta:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Vytvořit torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Sl_ožka"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Vzdálená cesta"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Soubory"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webové zdroje"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Velikost dílku:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Nastavit soukromý příznak"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Přidat tento torrent do relace"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Možnosti"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Uložit .torrent jako"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Obno_vit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Obnovit vybrané torrenty."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Možnosti"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Fronta"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Aktualizovat tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "O_dstranit torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Vynutit překontrolování"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "štítek"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Vybrat vše"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pozastavit vše"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Ob_novit vše"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Limit připojení"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Li_mit slotů k odesílání"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatická správa"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Přidat tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Přidat URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Rozbalit vš_e"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "BitTorrent klient Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Stahovat a sdílet soubory přes BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Příkaz"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Heslo:"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Od"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Pro"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Použít náhodné porty"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Příchozí"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Odchozí"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maximum spojení"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maximum slotů k odesílání"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximum polootevřených spojení"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maximum pokusů o spojení za sekundu"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Překročení limitů na IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Poměr sdílení"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Typ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Použít"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule seznam IP (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer text (zipovaný)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian text (nekomprimovaný)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Seznam blokovaných"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Neplatná hlavička"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Neplatný kouzelný kód"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Neplatná verze"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "dní"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Zkontrolovat nový blocklist každých:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importovat blocklist při spuštění"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Nastavení</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Stáhnout blocklist, pokud to bude potřebné a importovat ho."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Zkontrolovat stažení a import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Stáhnout nový soubor blocklistu a importovat ho."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Vynutit stažení a import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blocklist je aktuální"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Možnosti</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Typ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Datum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Velikost souboru:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informace</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent kompletní"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent přidán"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Spustit"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Událost"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Přidat příkaz</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Příkazy</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Sledovaná složka neexistuje."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Cesta neexistuje."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Vlastnosti sledované složky"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Vyberte složku"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Povolit sledování této složky"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Sledovaná složka</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Smazat .torrent po přidání"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Doplnit příponu po přidání:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Akce torrent souboru</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Přesun kompletních</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Štítek: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Štítek</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Hlavní"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maximální rychlost odesílání:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maximum spojení:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maximum slotů k odesílání:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maximální rychlost stahování:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Šířka pásma</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automatická správa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Přidat pozastavené:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Zařadit na:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Fronta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Sledované složky:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekundy"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Webové rozhraní Deluge není nainstalováno,\n"
+"prosím nainstalujte rozhraní a zkuste to znovu"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Zapnout webové rozhraní"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Zapnout SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Naslouchající port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Neplatný štítek, povolené znaky:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Prázdný štítek"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Štítek již existuje"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Neznámý štítek"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Neznámý torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Možnosti štítku"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Odstranit štítek"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Přidat štítek"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Možnosti štítku"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Štítek"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Možnosti štítku</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Použít nastavení maxim torrentu:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Použít nastavení fronty:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 řádek na tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automaticky použít štítek:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Přidat štítek"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Přidat štítek</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Použijte postranní panel pro přidávání, úpravu a odstraňování "
+"štítků.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Štítky</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Oznamování vyskakovacím oknem není zapnuto."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Oznamování zvukem není zapnuto"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Zvukové oznamování selhalo %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Dokončený torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Vyberte zvukový soubor"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Došlo k chybě při odesílání oznamujícího e-mailu: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Oznamovací e-mail odeslán."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Dokončen torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Tento e-mail vás informuje, že aplikace Deluge dokončila stahování "
+"\"%(name)s\", jež obsauje %(num_files)i souborů.\n"
+"Pokud si již nepřejete dostávat tato upozornění, jednoduše vypněte e-mailové "
+"oznamovaní v nastavení Deluge.\n"
+"\n"
+"Děkujeme,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Povolit blikání ikony v oznamovací oblasti"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Povolit vyskakovací okna"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Povolit zvuk"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Příjemci</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Server vyžaduje TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-mailové oznamování</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Tato konfigurace neznamená, že budete skutečně dostávat oznámení na všechny "
+"tyto akce."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Odběry"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Přizpůsobení zvuku"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Rozbalit do:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Vytvořit podsložku s názvem torrentu"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Tato volba vytvoří ve zvolené složce podsložku s názvem torrentu a umístí do "
+"ní rozbalené soubory."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limit stahování:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limit odesílání:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktivní torrenty:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktivní stahování:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktivní sdílení jako zdroj:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Pomalé nastavení</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Odhlásit se"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Uložit"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Hostitel:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Přesunout"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Přihlášení"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Nastavit maximum spojení"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Rychlost stahování"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Nastavit maximální rychlost stahování"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Rychlost odesílání"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Nastavit maximální rychlost odesílání"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Režie přenosu stahování/odesílání"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Připojit"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtry"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Limit rychlosti stahování"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Limit rychlosti odesílání"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Limit připojení"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limit slotů k odesílání"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Aktualizovat tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Vynutit překontrolování"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detaily"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Obecné"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Soukromé"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Ano"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Informovat o nových verzích"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximum spojení:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maximální rychlost stahování (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maximální rychlost odesílání (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximum polootevřených spojení:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maximum pokusů o spojení za sekundu:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maximum slotů k odesílání:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Soubor"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Přidat v pozastaveném stavu"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Staženo"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/cy.po b/deluge/i18n/cy.po
new file mode 100644
index 0000000..4f95449
--- /dev/null
+++ b/deluge/i18n/cy.po
@@ -0,0 +1,6164 @@
+# Welsh translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Welsh <cy@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Gwall"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Enw"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Cynnydd"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Maint"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Lawrlwytho"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Cymhareb"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Partneriaid"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Rhybudd"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Lawrlwythiadau"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Ystod"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Rhwydwaith"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Arall"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Ategion"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Enw Ffeil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Pob ffeil"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Cyfrinair:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Arall..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Blaenoriaeth"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Manylion"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Digyfwng"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Lawr"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Fyny"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Enw Defnyddiwr"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Diffodd"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Analluogi"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Ffeil"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Ychwanegu Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Gadael"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Golygu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Golwg"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Bar Offer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Colofnau"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Cymorth"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Ychwanegu Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Tynnu Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Seibio"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Ail-ddechrau"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Blaenoriaethau"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Lefel:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Porth"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Cysylltiadau"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Ychwanegu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Tynnu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Enw:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Ffeiliau"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Seibio Popeth"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Cyfrinair"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Oddi wrth"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Math"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Dewiswch Blygell"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "eiliadau"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Allgofnodi"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Mewngofnodi"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Ffiltrau"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Manylion"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Cyflymder Lawrlwytho Cyflymaf (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Gwasanaethwr"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Lawrlwytho"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/da.po b/deluge/i18n/da.po
new file mode 100644
index 0000000..81c2825
--- /dev/null
+++ b/deluge/i18n/da.po
@@ -0,0 +1,6239 @@
+# Danish translation for deluge
+# Copyright (c) 2006 Rosetta Contributors and Canonical Ltd 2006
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-07-23 10:47+0000\n"
+"Last-Translator: scootergrisen <scootergrisen@gmail.com>\n"
+"Language-Team: Danish <da@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Fælles valgmuligheder"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Udskriv denne hjælpemeddelelse"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Udskriv versionsinformation"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Sæt stien til konfigurationsmappen"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "Output til en angivet logfil i stedet for stdout"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "Sæt log-niveauet (none, error, warning, info, debug)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "Stille logningsoutput (Samme som `--loglevel none`)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+"Profilen %(prog)s med cProfile. Outputter til stdout medmindre der angives "
+"et filnavn"
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "Processtyring-valgmuligheder"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "Pidfil som proces-id'et skal gemmes i"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr "Dæmonisér (fork) ikke processen"
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "Skift til denne bruger ved opstart (kræver root)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "Skift til denne gruppe ved opstart (kræver root)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Dæmon-valgmuligheder"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "IP-adresse hvor der skal lyttes efter brugerfladeforbindelser"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Port hvor der skal lyttes efter brugerfladeforbindelser"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "IP-adresse hvor der skal lyttes efter BitTorrent-forbindelser"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Alle"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktive"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Undersøger"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Henter"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Udgiver"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Sat på pause"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Sat i kø"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Fejl"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Navn"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Fremgang"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Status"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Størrelse"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Hentet"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Sendt"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Forhold"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Downloadhastighed"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Sendehastighed"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Ned-grænse"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Op-grænse"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Maks. forbindelser"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Maks. uploadpladser"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Modparter"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Tilgængelig"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Seedere:Modparter"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Tilføjet"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Downloadmappe"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Sidste aktivitet"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Anslået tid til afslutning"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Priortér første/sidste"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatisk håndteret"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Stop ved forhold"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Stopforhold"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Fjern ved forhold"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Sti til flyt fuldførte"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Ejer"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Stykker"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Advarsel"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Bekendtgørelse OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Bekendtgørelse sendt"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Brugerflade"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Downloads"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Båndbredde"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Kø"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Netværk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Øvrige"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Dæmon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Lav"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normal"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Høj"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Ålands Øerne"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanien"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeriet"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikansk Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktis"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua og Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenien"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australien"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Østrig"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbajdjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Hviderusland"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgien"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnien-Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvetøen"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasilien"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Britisk-Indisk havområde"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgarien"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameroun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kap Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Caymanøerne"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Centralafrikanske Republik"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tchad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Christmas Island (Indiske Ocean)"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Cocos (Keeling) Islands"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comoros"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo, den demokratiske republik"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook-øerne"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Elfenbenskysten"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatien"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cypern"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tjekkiet"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danmark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikanske Republik"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypten"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ækvatorialguinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estland"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopien"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkland-øerne"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Færøerne"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frankrig"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Fransk Guinea"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Fransk Polynesien"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Franske Sydlige Territorier"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgien"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Tyskland"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grækenland"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grønland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard-øen og McDonald-øerne"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vatikanstaten"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indien"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesien"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isle of Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italien"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kasakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea, Den Demokratiske Folkerepublik"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korea, Republikken"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgisistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Lao, Folkets Demokratiske Republik"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letland"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyske Arabiske Jamahiriya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxembourg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonien, Den Tidligere Jugoslaviske Republik"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldiverne"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshalløerne"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauretanien"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesiens Forenede Stater"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavien"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongoliet"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Burma"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Holland"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Hollandske Antiller"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Ny Kaledonien"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "New Zealand"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolk Island"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Nordmarianerne"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norge"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palæstinensiske Territorie, Det Besatte"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Ny Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filippinerne"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polen"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumænien"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Rusland"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "St Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Sankt Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Sankt Kitts og Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Sankt Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Sankt Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Sankt Pierre og Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent og Grenadinerne"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tomé og Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi Arabien"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbien"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychellerne"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakiet"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenien"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomon-øerne"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Sydafrikanske republik"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Sydgeorgien og Sydsandwichøerne"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spanien"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard og Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Sverige"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Svejts"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Den arabiske republik Syrien"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Taiwan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, Den Forenede Republik"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad og Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunesien"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Tyrkiet"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks- og Caicosøerne"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Forenende Arabiske Emirater"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Storbritannien"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "USA"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "USA, mindre omliggende øer"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Britiske Jomfruøer"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Amerikanske Jomfruøer"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis- og Futuna-øerne"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Vestsahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Brugerflade-valgmuligheder"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Webserver-valgmuligheder"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "IP-adresse som webserveren skal lytte på"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Port som webserveren skal lytte på"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Tving webserveren til at bruge SSL"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Tving webserveren til at deaktivere SSL"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Dæmon findes ikke"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Dæmon kører ikke"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Filnavn"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Niveau"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Vælg en fil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Vælg en mappe"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Gem .torrent-fil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent-filer"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Alle filer"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Indtast din adgangskode for at vise Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Indtast din adgangskode for at afslutte Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Ophavsret %(year_start)s-%(year_end)s Deluge-teamet"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Et modpart-til-modpart-fildelingsprogram\n"
+"som anvender BitTorrent-protokollen."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klient:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Nuværende udviklere:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Tidligere udviklere og bidragere:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Dette program er fri software; du kan distribuere og/eller modificere det "
+"under reglerne i GNU General Public License, udgivet af The Free Software "
+"Foundation; enten version 3 af licensen eller (efter dit valg) en hvilken "
+"som helst senere version.\n"
+"\n"
+"Dette program er distribueret i håb om, at det ville være brugbart, men UDEN "
+"NOGEN GARANTI; selv uden den implicitte garanti, SALGBARHED eller EGNETHED "
+"TIL ET BESTEMT FORMÅL. Se GNU General Public License for flere detaljer.\n"
+"\n"
+"Du burde have modtaget en udgave af GNU General Public License sammen med "
+"dette program; hvis ikke, se <http://www.gnu.org/licenses>.\n"
+"\n"
+"Ydermere som en særlig undtagelse giver opretshaverne tilladelse til at "
+"linke til koden eller portioner af dette program via OpenSSL-arkivet. Du "
+"skal overhold GNU General Public License i alle henseender for al brug af "
+"koden ud over OpenSSL.\n"
+"\n"
+"Hvis du modificerer en eller flere filer under denne undtagelse, må du "
+"udvide denne undtagelse til din version af filen/filerne, men du er ikke "
+"tvunget til dette. Hvis du ikke ønsker at gøre dette, slet udsagn om "
+"undtagelsen fra din version. Hvis du sletter denne undtagelse fra alle "
+"kildefiler i programmet, slet det da også her."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ugyldig fil"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Vælg en .torrent-fil"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Ugyldig URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "er ikke et gyldigt URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Downloader..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Download mislykkedes"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Fejlslagne download(s):"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detaljer:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Brugernavn:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Adgangskode:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Beskyttet med adgangskode"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Andet..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Frakoblet"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT-knuder"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Fri diskplads"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ja"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nej"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritet"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Alle"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detaljer"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_ler"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "Mod_parter"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Valgmuligheder"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Ikke tilsluttet..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Ubegrænset"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Ned"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Op"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Frakoblet"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Tilkoblet"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Forbundet"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Vært"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Version"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Start dæmon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Stop dæmon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Kan ikke starte dæmon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Fejl ved tilføjelse af vært"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Brugernavn"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Niveau"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Slået til"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Vælg pluginet"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin-æg"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Tilstande"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackere"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ingen"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiketter"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Ingen Etiket"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Klientversion</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents sat i kø"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent-fil sat i kø"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Sæt ubegrænset"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Til"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Fra"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Slå fra"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresse"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klient"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "GTK-valgmuligheder"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Opretter torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrentoverførsler i kø"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Fjern"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Tilføj automatisk torrents ved forbindelse"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Filer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Tilføj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Opret torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Afslut og _stop dæmon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Afslut"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Rediger"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Forbindelseshåndtering"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Vis"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Værktøjslinje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sidepanel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_bjælke"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "F_aneblade"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolonner"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_idepanel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Vis _nul træffere"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Vis _trackere"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Hjælp"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Hjemmeside"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_OSS"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Ofte stillede spørgsmål"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Fællesskab"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Tilføj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Tilføj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Fjern torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Fjern torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Sæt valgte torrents på pause"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pause"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Genoptag valgte torrents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Genoptag"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Skub torrent frem i køen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Flyt op i køen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Skub torrent tilbage i køen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Flyt ned i køen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Indstillinger"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Forbindelseshåndtering"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Tvungen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Slået fra"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Håndtryk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Begge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Vis sessionshastighed i titelbjælken"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Giv fokus til vindue når der tilføjes torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Slå statusikon til"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimer til statusområdet ved lukning"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Start i statusområde"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Beskyt statusikonet med en adgangskode"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Flyt fuldførte til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopi af .torrent-filer i:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Slet kopi af torrent-fil når den fjernes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Slet kopi af torrent-filen, når torrenten er fjernet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Hent til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioritér første og sidste stykker af torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioritér første og sidste stykker af filer"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Tilføj torrent i Pause-tilstand"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Tilføj torrent-valgmuligheder"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Vis altid"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Bring dialogen i fokus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Største antal tilladte forbindelser. Sæt til -1 for ubegrænset."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Forbindelser:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Største antal sendepladser for alle torrents. Sæt til -1 for ubegrænset."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Uploadpladser:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Den højeste downloadhastighed for alle torrents. Sæt til -1 for ubegrænset."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Modtagehastighed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Den højeste uploadhastighed for alle torrents. Sæt til -1 for ubegrænset."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Sendehastighed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorer begrænsninger på det lokale netværk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Ratebegræns IP-overhead"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Hvis dette felt er markeret bliver den anslåede TCP/IP-overhead drænet fra "
+"ratebegrænserne, for at undgå at den samlet trafik overskrider grænserne"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Det højeste antal sendepladser pr. torrent. Sæt til -1 for ubegrænset."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Det højeste antal af forbindelser pr. torrent. Sæt til -1 for ubegrænset."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Den maksimale uploadhastighed pr. torrent. Sæt den til -1 for ubegrænset."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Tilfældig"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiv port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Test aktiv port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Fra:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Niveau:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Kryptering"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universel Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping protokol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Modpartsudveksling"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery finder modparter på det lokale netværk."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Distribueret hashtabel vil muligvis forbedre antallet af aktive forbindelser."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Modpartens TOS-byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Værtsnavn:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr "Proxy-modparter"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Cache-størrelse (16 KiB-blokke):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Antal sekunder fra den sidste cachede skrivning til et stykke i write-"
+"cachen, til den tvinges til at blive flushed til disken. "
+"Standardindstillingen er 60 sekunder."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache-udløbstid (sekunder):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Indstillinger"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Det totale antal af 16 KiB blokke der er blevet skrevet til disken siden "
+"denne session blev startet."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blokke Skrevet:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Det totale antal af skrive-operationer der er blevet udført siden denne "
+"session blev startet."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Skrivninger:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Forholdet (blocks_written - wries) / blocks_written repræsenterer antallet "
+"af gemte skrive-operationer pr. samlede skrive-operationer, dvs. en slags "
+"cache hit-forhold for skrive-cachen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Skrive-cache hit-forhold:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Antal blokke, der blev anmodet om af BitTorrent-motoren (fra modparter), der "
+"blev uddelt fra disken eller cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blokke Læst:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Antal blokke der blev uddelt fra cachen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blokke læse-hit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Cache hit-forhold for skrive-cachen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Læse-cache hit-forhold:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Det samlede antal læse-operationer som er blevet udført siden denne session "
+"startede."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Læsninger:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Antal 16 KiB-blokke i disk-cachen på nuværende tidspunkt. Dette omfatter "
+"både læse- og skrive-cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Cachestørrelse:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Læse-cachestørrelse:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Hjælp os med at forbedre Deluge ved at sende os oplysninger om din Python-"
+"version, PyGTK-version, operativsystem og processor. Ingen andre oplysninger "
+"vil blive sendt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ja, send venligst anonyme statistikker"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Placering:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Hvis Deluge ikke kan finde databasefilen på dette sted vil det falde tilbage "
+"til at bruge DNS til at løse modparternes land."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Dæmonport:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Tillad fjernforbindelser"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Forbindelser"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Søger periodisk efter nye udgivelser på webstedet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Version:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Forfatter:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Hjemmeside:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Udviklers e-mail:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Oplysninger"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Tilføj modpart"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "værtsnavn:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Generelt</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Afbryd"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Tilføj"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Fjern"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Tilføj infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackere:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Tilføj vært"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destination:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Ny udgivelse"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Gå til websted"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Vis ikke denne dialog i fremtiden"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Seedere:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Modparter:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Navn:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Kommentarer:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Flyt fuldførte:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Stands udgivelse ved forholdstal:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Fjern ved forholdstal"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Rediger trackere"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Øverst"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Nederst"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Tilføj torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Tilføj i _pauset tilstand"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Priotér første/sidste stykker"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Spring over tjek af filhash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Anvend på alle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Gendan standarder"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Vis Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Hastighedsgrænse for _download"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Hastighedsgrænse for _upload"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Afslut og luk dæmon ned"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Rediger trackere"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Tilføj modpart"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Tilføj en modpart vha. dens IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Rediger tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Indtast fjernsti"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Sti:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Opret en torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Mappe"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Fjernsti"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Filer"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseedere"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Stykkestørrelse:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Sæt privatflag"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Tilføj denne torrent til sessionen"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Valgmuligheder"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Gem .torrent som"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pause"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Genoptag"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Genoptag valgte torrents."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Indstillinger"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Kø"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Opdater tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Fjern torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Gennemtving gentjek"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiket"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Vælg alle"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Sæt alle på _pause"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Gen_optag alle"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Forbindelsesbegrænsning"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Sende_pladsbegrænsning"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatisk håndteret"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Tilføj tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Tilføj URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Deluge-dæmoner"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Opret automatisk forbindelse til valgte dæmon"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Opstart-valgmuligheder"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Udvid all_e"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent-klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent-klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Download og del filer over BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Konsol-valgmuligheder"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Konsol-kommandoer"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "Følgende konsol-kommandoer til tilgængelige:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Kommando"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "Dæmonvært og -port"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Adgangskode"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "Vis mere detaljerede information inklusiv filer og modparter."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Vælg vært"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Afslut"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Slet vært"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Generelle valgmuligheder"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Sprog"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Kommandolinjetilstand"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Mapper"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Download til"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Flyt fuldførte til"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Fra"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Til"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Brug tilfældige porte"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Indkommende"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Udgående"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Største antal forbindelser"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Højeste antal sendepladser"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximalt antal Halvåbne Forbindelser"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maksimalt antal forbindelsesforsøg i sekundet"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Begræns IP Overhead"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Dæmonport"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Delingsforhold"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Type"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Anvend"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Vælg sprog"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "IP-adressen \"%s\" er dårligt udformet"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP-liste (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer-tekst (zip-pakket)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian-tekst (ukomprimeret)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr "Blokerede IP-områder/hvidlistede områder"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokeringsliste"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Dårlig IP-adresse"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Ugyldig leder"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Ugyldig magisk kode"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ugyldig version"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dage"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Led efter ny liste hver:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importér blokeringsliste ved opstart"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Indstillinger</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Hent blokeringsliste om nødvendigt og importér filen."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Undersøg download og import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Hent og importér ny blokeringsliste."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Gennemtving download og import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blocklist er opdateret"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Valgmuligheder</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Type:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Dato:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Filstørrelse:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Oplysninger</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Hvidliste</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent Færdig"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent tilføjet"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent fjernet"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Udfør"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Begivenhed"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Tilføj Kommando</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Kommandoer</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Inkompatibelt tilvalg"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Tilføj automatisk"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Dobbeltklik for at skifte"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Dobbeltklik for at redigere"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Sti"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Overvågningsmappe eksisterer ikke."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Stien eksisterer ikke."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Indstillinger for overvågningsmappe"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Hvis en .torrent-fil tilføjes denne mappen,\n"
+"så tilføjes den i denne session."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Vælg en mappe"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Slå overvågningsmappe til"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Overvågningsmappe</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Slet .torrent efter tilføjelse"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Når torrenten tilføjes til sessionen,\n"
+"slettes .torrent'en."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Vedhæft endelse efter tilføjelse:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".tilføjet"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent-filhandling</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Sæt downloadmappe"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "Mappen hvor torrent-dataen downloades til."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Downloadmappe</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "Sæt mappe til flyt fuldførte"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Flyt fuldførte</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiket: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiket</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Hoved"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Ejer</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Højeste sendehastighed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Største antal forbindelser:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Højeste antal sendepladser:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Højeste modtagehastighed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Båndbredde</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Autohåndteret:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Tilføj pausede:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Sæt i kø til:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Kø</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Overvågningsmapper</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "minutter"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 minut"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 sekund"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekunder"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Statistik"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Opløsning"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Seedere/modparter"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Downloadfarve:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Uploadfarve:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Forbindelsesgraf</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Båndbreddegraf</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "DHT-torrents:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Seedere/modparter</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Graffarver</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebUi"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge web-grænseflade er ikke installeret. Installér venligst\n"
+"grænsefladen og prøv igen"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Aktivér Web-grænseflade"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Aktiver SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Lytteport:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Ugyldig etiket, gyldige symboler:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tom etiket"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Etiket findes allerede"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Ukendt etiket"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Ukendt torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Etiket-_valgmuligheder"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Fjern etiket"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Tilføj etiket"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Etiket-valgmuligheder"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiket"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Etiket-valgmuligheder</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Anvend max-indstillinger pr. torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Anvend køindstillinger:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Anvend mappeindstillinger:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 linje pr. tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Anvend automatisk etiket:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Tilføj etiket"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Tilføj etiket</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Brug sidepanelet til at tilføje, redigere og fjerne etiketter. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiketter</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Notifikations-blink vist"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Pop op-notifikation er ikke slået til."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Notifikations-pop op vist"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Lydnotifikation ikke slået til"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame er ikke installeret"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Lydnotifikation fejlede %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Lydpåmindelse lykkedes"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Afsluttet torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Torrenten \"%(name)s\" inklusiv %(num_files)i fil(er) er færdige med at "
+"downloade."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Notifikationer"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Vælg lydfil"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Der opstod en fejl under afsendelse af notifikations-e-mail: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "Serveren svarede ikke ordentligt på HELO-hilsen: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "Serveren afviste kombinationen af brugernavn/adgangskode: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Notifikations-e-mail sendt."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Afsluttede torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Denne e-mail er blevet endt for at informere dig om at Deluge er færdig med "
+"at downloade \"%(name)s\" , som inkluderer %(num_files)i filer.\n"
+"For ikke længere at modtage disse meddelelser skal de blot slå e-mail-"
+"notifikationer fra i Deluge's indstillinger.\n"
+"Tak,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Blink for bakkeikon slået til"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Pop op'er slået til"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Lyd aktiveret"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI-notifikationer</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Modtagere</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Server kræver TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-mail-notifikationer</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Denne konfiguration betyder ikke, at du faktisk vil modtage notifikationer "
+"for alle disse hændelser."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Abonnementer"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Lydtilpasning"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Udtrækker"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Udpak til:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Opret undermappe med samme navn som torrenten"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Denne valgmulighed vil oprette en undermappe med samme navn som torrenten i "
+"den valgte udpakningsmappe og placere de udpakkede filer i den."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Planlægger"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Grænse for download:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Grænse for upload:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktive torrents:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktive downloads:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktive seeds:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Langsomme Indstillinger</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Log ud"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Gem"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Vært:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Flyt"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Log på"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Sæt højeste antal forbindelser"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Modtagehastighed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Sæt højeste modtagehastighed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Sendehastighed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Sæt højeste sendehastighed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protokol Traffik Download/Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Tilslut"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Stop dæmon"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Start dæmon"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtre"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Modtagehastighedsgrænse"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Upload hastighedsbegrænsning:"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Forbindelsesbegrænsning"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Sendepladsbegrænsning"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Opdatér tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Gennemtving Gentjek"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detaljer"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Status:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Flyt fuldførte:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Generelt"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privat"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Indlæser"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Sand"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Giv besked om nye versioner"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Største antal forbindelser:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Højeste downloadhastighed (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Højeste uploadhastighed (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Højeste antal halvåbne forbindelser:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Højeste antal forbindelsesforsøg per sekund:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Højeste antal sendepladser:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Tving brug af proxy"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Tilføj fra Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Adresse"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Cookies"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fil"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Infohash"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Uploader din torrent..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Ikke en gyldig torrent"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "Mappe til flyt fuldførte"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Maks. downloadhastighed"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Maks. uploadhastighed"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Tilføj i pauset tilstand"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Modtag"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "Dato tilføjet:"
diff --git a/deluge/i18n/de.po b/deluge/i18n/de.po
new file mode 100644
index 0000000..10f0dc2
--- /dev/null
+++ b/deluge/i18n/de.po
@@ -0,0 +1,6268 @@
+# German translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2023-11-06 17:15+0000\n"
+"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Allgemeine Einstellungen"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Diese Hilfe anzeigen"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Versionsinformationen anzeigen"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Den Konfigurationsverzeichnispfad festlegen"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "In angegebene Logdaeti statt stdout ausgeben"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "Log-Level festlegen (kein, Fehler, Warnung, Information, Debug)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "Beim Start zu diesem Benutzer wechseln (Benötigt root)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "Beim Start zu dieser Gruppe wechseln (Benötigt root)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Daemon-Optionen"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "IP-Adresse, um auf UI-Verbindungen zu lauschen"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Port, um auf UI-Verbindungen zu lauschen"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "IP-Adresse, um auf BitTorrent-Verbindungen zu lauschen"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+"Der Netzwerkschnittstellenname oder die IP-Adresse für ausgehende BitTorrent-"
+"Verbindungen."
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Alle"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktiv"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Zuordnung"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Hashen"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Herunterladen"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Wird verteilt"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Angehalten"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "In Warteschlange"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Fehler"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Name"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Fortschritt"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Status"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Größe"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Heruntergeladen"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Hochgeladen"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Verbleibend"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Verhältnis"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Download"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Upload"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Herabladen Limit"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Heraufladen Limit"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Maximale Verbindungen"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Maximale Upload-Slots"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Seeds"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Verfügb."
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Seeds:Peers"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Hinzugefügt"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Downloadverzeichnis"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Aktive Zeit"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Letzte Aktivität"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Vollständig gesehen"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Abgeschlossen"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Verbleibende Zeit"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Geteilt"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Bevorzuge Anfang/Ende"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Sequentieller Download"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatisch verwaltet"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Bei Verhältnis stoppen"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Stoppverhältnis"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Bei Verhältnis entfernen"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Bei Fertigstellung verschieben"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Vollständigen Pfad verschieben"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Besitzer"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Teile"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Seed-Rang"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Warnung!"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Ankündigung OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anfrage gesendet"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Schnittstelle"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Downloads"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandbreite"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Warteschlange"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Netzwerk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Sonstige"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Erweiterungen"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Überspringen"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Niedrig"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normal"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Hoch"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"Deluge kann die ausführbare Datei 'deluged' nicht finden, prüfen Sie, ob das "
+"deluged-Paket installiert ist oder ob es zu ihrem PATH hinzugefügt wurde."
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Åland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanien"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algerien"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikanisch-Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktis"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua und Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentinien"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenien"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australien"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Österreich"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Aserbaidschan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesch"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Weißrussland"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgien"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudas"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivien"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnien-Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet-Insel"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasilien"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Britische Gebiete im Indischen Ozean"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Sultanat Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgarien"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodscha"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cap Verdische Inseln"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Cayman-Inseln"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Zentralafrikanische Republik"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tschad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Weihnachtsinsel"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosinseln"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbien"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komoren"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Demokratische Republik Kongo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cookinseln"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Elfenbeinküste"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatien"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Zypern"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tschechische Republik"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dänemark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Dschibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikanische Republik"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Equador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Ägypten"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Äquatorialguinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estland"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Äthiopien"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandinseln"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Färöer"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidschi"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finnland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frankreich"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Französisch-Guayana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Französisch-Polynesien"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Französische Süd- und Antarktisgebiete"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabun"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgien"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Deutschland"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Griechenland"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grönland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard und McDonaldinseln"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Staat Vatikanstadt"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hongkong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indien"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesien"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isle of Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italien"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaika"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordanien"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kasachstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Nordkorea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Südkorea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgisistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Lettland"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyen"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Mazedonien"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Malediven"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshallinseln"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauretanien"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesien, Föderierte Staaten von"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldawien"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolei"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mosambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar (Birma)"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Niederlande"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Niederländische Antillen"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Neukaledonien"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Neuseeland"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolkinsel"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Nördliche Marianen"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norwegen"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palästinensische Autonomiegebiete"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua-Neuguinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Philippinen"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairninseln"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polen"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumänien"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Russland"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint-Barthélemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "St. Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "St. Kitts und Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "St. Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint-Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint-Pierre und Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "St. Vincent und die Grenadinen"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé und Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi-Arabien"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbien"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychellen"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slowakei"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slowenien"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomonen"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Südafrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Südgeorgien und die Südlichen Sandwichinseln"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spanien"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard und Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swasiland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Schweden"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Schweiz"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syrien"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Taiwan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadschikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tansania, Vereinigte Republik"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Osttimor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad und Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunesien"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Türkei"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks- und Caicosinseln"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Vereinigte Arabische Emirate"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Vereinigtes Königreich"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Vereinigte Staaten"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Vereinigte Staaten, Kleinere Inselbesitzungen"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Usbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Britische Jungferninseln"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Amerikanische Jungferninseln"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis und Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Westsahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Sambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Simbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "UI-Optionen"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+"Legen Sie die standardmäßige UI fest, die laufen soll, wenn keine UI "
+"angegeben ist"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Webserver-Optionen"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "IP-Adresse, auf der der Webserver lauschen soll"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Port, auf dem der Webserver lauschen soll"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Den Webserver zwingen, SSL zu nutzen"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Den Webserver zwingen, SSL zu deaktivieren"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Daemon existiert nicht"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Daemon läuft nicht"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Dateiname"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Rang"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Wähle eine Datei"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Abbrechen"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Öffnen"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Ordner wählen"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Sichere .torrent-Datei"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "_Speichern"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent-Dateien"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Alle Dateien"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Geben Sie Ihr Passwort ein, um Deluge anzuzeigen..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Geben Sie Ihr Passwort ein, um Deluge zu beenden..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "D: {download_rate} U: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Pfad bearbeiten"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Pfad entfernen"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Auf Ausgewählte anwenden"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Copyright %(year_start)s-%(year_end)s Deluge Team"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Ein Peer-to-Peer Dateiverteilungs-Programm\n"
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klient:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Derzeitige Entwickler:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Ehemalige Entwickler oder Mitwirkende:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Torrents (%d) hinzufügen"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+"Sie können den gleichen Torrent nicht zweimal hinzufügen. %d Torrents wurden "
+"bereits hinzugefügt."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ungültige Datei"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Bitte warten Sie auf Dateien..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "Konnte Dateien für diesen Magnet nicht herunterladen"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Wählen Sie eine .torrent-Datei"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Ungültige URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "ist keine gültige URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Herunterladen …"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Download Fehlgeschlagen"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Herunterladen schlug fehl:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_Nein"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Ja"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Schließen"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Details:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Authentifizieren"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "V_erbinden"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Benutzername:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Passwort:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Konto bearbeiten"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Existierendes Konto bearbeiten"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Anwenden"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Neues Konto"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Ein neues Konto erstellen"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Hinzufügen"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Authentifizierungslevel:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Passwortgeschützt"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_OK"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Weitere..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Nicht verbunden"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Verbindungen (Limit)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Downloadgeschwindigkeit (Limit)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Uploadgeschwindigkeit (Limit)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Knoten"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Freier Speicherplatz"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Externe IP-Adresse"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "n/v"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Port-Fehler</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Keine eingehenden Verbindungen, prüfen Sie die Portweiterleitung"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Maximale Downloadgeschwindigkeit"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Maximale Downloadgeschwindigkeit festlegen"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Maximale Uploadgeschwindigkeit"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Maximale Uploadgeschwindigkeit festlegen"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Eingehende Verbindungen"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Anzahl maximaler eingehender Verbindungen festlegen"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent}%"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Nie"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ja"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nein"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priorität"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Alle"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Details"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Da_teien"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Optionen"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Tracker"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Nicht verbunden…"
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Unbegrenzt"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Runter"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Rauf"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Benutzeroberflächenmodus ändern"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Offline"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Online"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Verbunden"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Hostname"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Version"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Daemon _starten"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Daemon _stop"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Trennen"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Daemon kann nicht gestartet werden!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Inkompatibler Client"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Fehler beim Verbinden"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Host bearbeiten"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Fehler beim Hinzufügen des Hosts"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Benutzername"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Level"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Aktiviert"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Erweiterung"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Achtung"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Sie müssen eine Sprache wählen"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+"Sie müssen nun die Deluge-UI neustarten, um die Änderungen zu übernehmen."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Modul auswählen"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Modul-Pakete"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Serverseitiger Fehler"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "Ein Fehler trat auf dem Server auf"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Fehler beim Hinzufügen des Kontos"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Authentifizierung fehlgeschlagen"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "Ein Fehler trat während des Hinzufügen des Kontos auf"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Konto entfernen"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+"Sind Sie sicher, dass Sie das Konto mit dem Benutzernamen \"%(username)s\" "
+"entfernen möchten?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Fehler beim Entfernen des Kontos"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Authentifizierung fehlgeschlagen"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "Ein Fehler trat während des Entfernens des Kontos auf"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Zustände"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Tracker"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Keine"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administrator"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Kategorien"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Kein Lesezeichen"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Kein Besitzer"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Client Version</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents in der Warteschlange"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent in der Warteschlange"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+"Ob der Torrent zwischen anderen Deluge-Benutzern geteilt werden soll oder "
+"nicht."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Die ausgewählten Torrents löschen?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Insgesamt %s Torrents ausgewählt"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Setze auf unbegrenzt"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "An"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Aus"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Deaktivieren"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Aktivieren..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Maximale Anzahl von Uploadslots festlegen"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Seed bei Verhältnis anhalten"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "Es trat ein Fehler auf beim Versuch, den Besitzer zu ändern."
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresse"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "GTK-Optionen"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Erstelle Torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents in der Warteschlange"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "Entfe_rnen"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "_Leeren"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automatisch Torrents beim Verbinden hinzufügen."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Datei"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Torrent hinzufügen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "Erstelle Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Beenden & Dienst _herunterfahren"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Beenden"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Bearbeiten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Einstellungen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Verbindungs-Verwaltung"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Ansicht"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Werkzeugleiste"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Seitenleiste"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Stats_leiste"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Spalten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Finden..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Se_itenleiste"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Zeige Null-Treffer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Zeige _Tracker"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "_Besitzer anzeigen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Website"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Häufig gestellte Fragen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Gemeinschaft"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_Über"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Torrent hinzufügen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Torrent hinzufügen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Torrent entfernen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Torrent entfernen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Filter"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Ausgewählte Torrents pausieren"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausieren"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Ausgewählte Torrents fortsetzten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Fortsetzen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "In Warteschlange aufwärts"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "nach oben"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "In Warteschlange abwärts"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "nach unten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Verbindungsmanager"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Schließen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Filter:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Das Suchfeld leeren"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "_Groß-/Kleinschreibung beachten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Erzwungen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Deaktivert"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Handschlag"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Beides"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5-Authentifizierung"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP-Authentifizierung"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Mit einem Deluge-Daemon verbinden (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Anwendungsmodus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Zeige die Geschwindigkeit in der Fensterleiste"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Fenster beim Hinzufügen eines Torrent fokussieren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Abgeschlossen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Lade herunter:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Warten:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Fehlend:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "_Rückgängig"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Farben auf Standard zurücksetzen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Hauptfenster"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Symbol im Benachrichtigungsfeld anzeigen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "App-Indikator"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Benachrichtigungsfeld"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Beim Schließen in das Benachrichtigungsfeld minimieren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Starte im Tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Schütze Benachrichtigungsfeld mit Passwort"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Benachrichtigungsfeld"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Über neue Veröffentlichungen informieren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Aktualisierungen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Systemstandard"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Sprache</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Verschiebe vollständige nach:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopie von .torrent Dateien erstellen in:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Kopie der Torrentdatei beim Entfernen löschen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Lösche die Kopie der Torrentdatei, die beim Entfernen des Torrents angelegt "
+"wurde"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Herunterladen nach:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Download-Ordner"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Bevorzuge Anfangs- und Endstücke eines Torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Erste und letzte Stücke von Dateien in Torrents bevorzugen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Sequenzieller Download"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Torrents im pausierten Zustand hinzufügen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Speicherplatz vorbelegen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Speicherplatz für Torrent-Dateien vorbelegen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Torrent-Optionen hinzufügen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Immer zeigen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Den Dialog in den Fokus bringen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Verbindungsversuche pro Sekunde"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Halboffene Verbindungen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "max. Anzahl von Verbindungen. Setze -1 für unendlich."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Verbindungen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Das Maximum an Upload-Slots für alle Torrents. Für keine Begrenzung auf -1 "
+"setzen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Uploadslots:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Die maximale Download-Rate für alle Torrents. Auf -1 setzen für unendlich."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Download-Geschwindigkeit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Die maximale Uploadrate für alle Torrents. Auf -1 setzen für unendlich."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Upload-Geschwindigkeit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignoriere Limits im lokalen Netzwerk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Zeige den limitierten IP des Transferprotokolls"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Wenn ausgewählt, wird der geschätzte Aufwand von TCP/IP von den Limits der "
+"Bandbreiten abgezogen. Das vermeidet, deren Begrenzung zu überschreiten."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Globale Bandbreitenlimits"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Maximale Anzahl an Upload-Slots pro Torrent. -1 für unbegrenzt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Maximale Anzahl an Verbindungen pro Torrent. -1 für unbegrenzt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Die maximale Downloadgeschwindigkeit pro Torrent. Geben Sie -1 für "
+"unbegrenzt ein."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Die maximale Hochladegeschwindigkeit pro Torrent. -1 für unbegrenzt "
+"festlegen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Bandbreitenlimitierung pro Torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Neue Torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Seeden:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Gesamt :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Slot-Torrents ignorieren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Seedende Torrents bevorzugen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Aktive Torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Tauschverhältnis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Zeit (m):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Torrent pausieren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"Die IP-Adresse der Netzwerkschnittstelle, an der auf einkommende Bittorrent-"
+"Verbindungen gelauscht werden soll. Lassen Sie dies leer, wenn Sie den "
+"Standard verwenden möchten."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Eingangsadresse"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Zufällig"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Zufällige Ports im Bereich 49152 bis 65525 verwenden"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiver Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Aktiven Port testen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Eingangsport"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"Der Netzwerkschnittstellenname oder die IP-Adresse für ausgehende BitTorrent-"
+"Verbindungen. (Leer lassen für Standard)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Ausgehende Schnittstelle"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Von:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Bis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Ausgehende Ports"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Ausgehend:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Eingehend:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Ebene:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Verschlüsselung"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universelles Plug-and-Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT-Port-Mapping-Protokoll"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Austausch von Gegenstellen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr "Tauscht Peers zwischen Clients aus. (Deaktivieren benötigt Neustart)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Lokale Dienst-Suche findet Gegenstellen in Ihrem lokalen Netzwerk."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Verteilte Hashtabelle (DHT) verbessert möglicherweise die Anzahl aktiver "
+"Verbindungen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TOS-Byte für Peers:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Netzwerk-Extras"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Hostname:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "Proxy-Hostnamen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Proxynutzung erzwingen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "Client-Identität verstecken"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+"Versuche Client-Identität zu verstecken und nur den Proxy für eingehende "
+"Verbindungen zu nutzen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Proxy erzwingen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Cache-Größe (16 KiB Blöcke):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Die maximale Anzahl von Sekunden seit der letzten Änderung eines Fragments "
+"im Schreib-Cache, bis das Schreiben auf die Festplatte erzwungen wird. "
+"Standard-Wert ist 60 Sekunden."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache Lebensdauer (Sekunden):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Die Gesamtanzahl der 16 KiB Blöcke, die seit dem Start dieser Sitzung auf "
+"die Festplatte geschrieben wurden."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blöcke geschrieben:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Die Gesamtanzahl der durchgeführten Schreibeoperationen seit Beginn dieser "
+"Sitzung."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Schreib-Zugriffe:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Das Verhältnis (Blöcke_geschrieben - Schreibzugriffe) / Blöcke_geschrieben "
+"repräsentiert den Anteil an durch den Cache ersparten Schreibzugriffen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Schreib-Cache Trefferquote:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Schreiben"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Die Anzahl der von Peers verlangten Blöcke, die von Festplatte oder Cache "
+"versandt wurden."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blöcke gelesen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Die Anzahl von Blöcken, die aus dem Cache versandt wurden."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blöcke gelesen (Cache):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Die Trefferquote für den Lese-Cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Lese-Cache Trefferquote:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Die Gesamtanzahl der durchgeführten Leseoperationen seit Beginn dieser "
+"Sitzung."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lese-Zugriffe:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Lesen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Die Gesamtanzahl von 16 KiB Blöcken, die derzeit in den Lese- und Schreib-"
+"Caches enthalten sind."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Cache-Größe:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Größe vom Lese-Cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Aktualisieren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Helfen Sie uns Deluge zu verbessern indem Sie uns Ihre Python- und PyGTK-"
+"Version, Ihr Betriebssytem und Prozessor-Typ senden. Garantiert keine andere "
+"Information wird übermittelt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ja, sende anonymisierte Statistiken"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Systeminformation"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Ort:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Falls Deluge die Datenbank-Datei an diesem Ort nicht finden kann, greift es "
+"auf DNS zurück um das Land des Peers zu ermitteln."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "GeoIP-Datenbank"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Mit Deluge verknüpfen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Magnet-Links"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Entfernte Verbindungen erlauben"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Verbindungen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Übeprüfe die Website regelmäßig auf neue Versionen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Löschen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Konten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Version:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Internetseite:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "E-Mail-Adresse des Autors:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informationen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Installieren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Mehr finden..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Die ausgewählten Torrents entfernen?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Heruntergeladene Dateien einbeziehen"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(Dies ist dauerhaft!)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Gegenstelle hinzufügen"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "Hostname:Port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Eigenschaften"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Allgemein</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Pfadeintrag anzeigen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Dateiauswahl anzeigen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Ordnernamen anzeigen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Autovervollständigung aktivieren"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Verborgene Dateien zeigen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Neuen Schlüssel festlegen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Autovervollständigung"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Speicherpfad"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Strg+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Strg+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Strg+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Strg+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Strg+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Versteckte Dateien umschalten"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Standardpfad"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Tastenkombinationen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Ein Verzeichnis wählen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Gespeicherte Pfade"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "Spalte"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Öffnen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Den aktuellen Eintragswert zur Liste hinzufügen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Den ausgewählten Eintrag bearbeiten"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Entfernen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Den ausgewählten Eintrag entfernen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Den ausgewählten Eintrag nach oben bewegen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Den ausgewählten Eintrag nach unten bewegen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Standard"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Kein Standardpfad festgelegt"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Eigenschaften-Dialog öffnen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Datei-Quersumme hinzufügen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "Von Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Datei-Quersumme:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Host hinzufügen"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "Download-Ordner verschieben"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Ziel:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Neue Version"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Gehe zu Website"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Neue Veröffentlichung verfügbar!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Verfügbare Version:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Server-Version"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Aktuelle Version:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Diesen Dialog in Zukunft nicht mehr anzeigen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Downloadgeschwindigkeit"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Uploadgeschwindigkeit"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Heruntergeladen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Hochgeladen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Seeds:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Peers:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Verfügbarkeit:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Verteil-Rang:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Letzte Übertragung:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Aktive Zeit:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "Komplett gesehen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Seeding Zeit:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Teile:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Name:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Ordner für heruntergeladene Dateien:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Hinzugefügt:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Gesamtgröße:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Dateien insgesamt:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Prüfsumme:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Erstellt von:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Kommentare:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Besitzer:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Verschiebe Vollständige:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Stoppen bei Verhältnis:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Entfernen bei Verhältnis"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Bandbreitenbegrenzung"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Aktueller Tracker:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Tracker insgesamt:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Tracker-Status:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Nächste Ankündigung:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Privater Torrent:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Bearbeite Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Anfang"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Unten"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Torrents hinzufügen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Datei-Quersumme"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "Vollständigen Ordner verschieben"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "_Pausiert hinzufügen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Bevorzuge Anfangs-/Endstücke"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Datei-Prüfsummenüberprüfung überspringen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Festplattenspeicher vorbelegen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Festplattenspeicher für Torrent-Dateien vorbelegen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "Maximale Torrent-Downloadgeschwindigkeit"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Maximale Torrent-Uploadgeschwindigkeit"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Maximale Torrent-Verbindungen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Für alle anwenden"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Auf Standard-Werte zurücksetzten"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Zeige Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "_Sitzung pausieren"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "_Sitzung fortsetzen"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Maximale Downloadgeschwindigkeit"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Limit für _Upload-Geschwindigkeit"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Abbrechen & Dienst stoppen"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Bearbeite Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "_Hoch"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "_Runter"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "Peer _hinzufügen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Gegenstelle nach IP hinzufügen"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Tracker bearbeiten"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Entfernten Dateipfad eingeben"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Entfernter Pfad"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Pfad:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Torrent erstellen"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Or_dner"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Entfe_rnter Dateipfad"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Dateien"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseeds"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Stückgröße:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Als Privat markieren"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Dieses Torrent der Sitzung hinzufügen"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Optionen"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Speicher .torrent als"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Download-Ordner öffnen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pausieren"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Fort_setzen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Ausgewählte Torrents fortsetzen."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opt_ionen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Warteschlange"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Akt_ualisiere Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Entferne Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Neu-Prüfung erzwingen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "_Download-Ordner verschieben"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "Label"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Alle auswählen"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Alle pausieren"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Alle Torrents fortsetzen."
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Verbindungslimit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limit für Upload-Kanäle"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "Seeden bei _Verhältnis stoppen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatisch verwaltet"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "_Besitzer ändern"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Tracker hinzufügen"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Tracker hinzufügen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URL hinzufügen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "von URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "Adresse (URL):"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "automatisch mit ausgewähltem Daemon verbinden"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "Localhost-Daemon automatisch starten (falls notwendig)"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Diesen Dialog verstecken"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Startoptionen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Datei öffnen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "_Ordner anzeigen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Alles ausklappen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "_Überspringen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Niedrig"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Normal"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_Hoch"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Deluge-Team"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent-Klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge – BitTorrent-Client"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Dateien über BitTorrent herunterladen und tauschen"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Konsolenoptionen"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+"Deluge-Daemon-IP-Adresse, mit der sich verbunden werden soll (Standard "
+"127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+"Deluge-Daemon-Port, mit dem sich verbunden werden soll (Standard 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "Deluge-Daemon-Benutzername, der beim Verbinden genutzt werden soll"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "Deluge-Daemon-Kennwort das beim Verbinden genutzt werden soll"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Konsolenbefehle"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Beschreibung"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "Die folgenden Konsolenbefehle sind verfügbar:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Befehl"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Benutzung: manage <Torrent-ID> [--set <Schlüssel> <Wert>] [<Schlüssel> "
+"[<Schlüssel>...] ]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "Wert für diesen Schlüssel festlegen"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Festzulegender Wert"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "ein oder mehrere Schlüssel, durch Leerzeichen getrennt"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Entfernt auch die Torrent-Daten"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "Eine oder mehrere Torrend-IDs"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+"Bestätigen Sie mit -c, die aufgelisteten Torrents zu entfernen (Anzahl: %d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+"Eine oder mehrere Torrend-IDs. Nutzen Sie \"*\" um alle Torrents fortzusetzen"
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+"Eine oder mehrere Torrent-IDs. Nutzen Sie \"\" um alle Torrents zu pausieren"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Downloadordner für Torrent"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Den vollständigen Torrent in diesen Ordner verschieben"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "Ein oder mehrere Torrent-Dateien, URLs oder Magnet-URLs"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Verfügbare Plugins auflisten"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Aktivierte Plugins anzeigen"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Aktiviert ein Plugin"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Deaktiviert ein Plugin"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "List von verfügbaren Plugins erneut laden"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Plugin aus einer .egg-Datei installieren"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Torrent-Status nicht anzeigen (Verbessert Befehlsgeschwindigkeit)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr "Benutzung: connect <Host[:Port]> [<Benutzername>] [<Kennwort>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Passwort"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "Der Pfad, in den die Torrents verschoben werden sollen"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "Der neue Zustand"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "Ein oder mehrere Befehle"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Benutzung: config [--set <Schlüssel> <Wert>] [<Schlüssel> [<Schlüssel>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Mehr Informationen pro Torrent anzeigen."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+"Mehr detaillierte Informationen inklusive Dateien und Peers anzeigen."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "So wie --sort, aber die Elemente sind un umgekehrter Reihenfolge."
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+"Eine oder mehrere Torrent-IDs. Wenn keine angegeben ist, alle auflisten"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Host auswählen"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Beenden"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Host löschen"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+"Host hinzufügen (Pfeil Hoch/Runter zum Navigieren, Esc zum Abbrechen)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "Fehler beim Hinzufügen des Hosts"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Spalten"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Breite"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Allgemeine Optionen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "Systemglocke läuten wenn ein Download fertiggestellt wird"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Sprache"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Kommandozeilenmodus"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr "Kommandozeilenhistorie im kommandozeilenmodus speichern und laden"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Ordner"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Herunterladen nach"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "Pausierte hinzufügen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Festplattenspeicher vorbelegen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Eingangsports"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Von"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Nach"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Benutze Zufallsports"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Eingangsschnittstelle"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+"IP-Adresse der Schnittstelle, auf der gelauscht werden soll (leer lassen für "
+"Standard):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"Der Netzwerkschnittstellenname oder die IP-Adresse für ausgehende BitTorrent-"
+"Verbindungen. (Leer lassen für Standard.):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Eingehend"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Ausgehend"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Globale Bandbreitennutzung"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maximale gleichzeitige Verbindungen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maximale Upload Kanäle"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Maximale Downloadgeschwindigkeit (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Maximale Uploadgeschwindigkeit (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximale halb-offene Verbindungen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maximale Verbindungs-Versuche pro Sekunde"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Zeige den limitierten IP des Transferprotokolls"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Bandbreitennutzung pro Torrent"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Ja, bitte sende anonyme Statistiken."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Daemon-Port"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Remoteverbindungen erlauben"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Gesamt"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Tauschverhältnis"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Zeitverhältnis"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Zeit (m)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Proxy-Einstellungen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Art"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Hostname"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Cache-Größe (16 KiB Blocks)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Geschriebene Blöcke"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Gelesene Blöcke"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Übernehmen"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "OK"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Sprache wählen"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule-IP-Liste (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer-Text (ZIP-Format)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian-Text (unkomprimiert)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (gzip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blockierliste"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Falsche IP-Adresse"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Ungültiger Anfang"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "magischer Code ungültig"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ungültige Version"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Tage"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Auf neue Liste überprüfen, jeden:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importiere Blockliste beim Start"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Einstellungen</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Lade die Blockliste ggf. herunter und importiere die Datei."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Überprüfe Download und Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Lade eine neue Blockliste herunter und importiere sie."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Erzwinge Herunterladen und Importieren"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blockliste ist auf dem neusten Stand"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Optionen</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Typ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Datum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Dateigröße:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Information</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent vollständig"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent hinzugefügt"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent entfernt"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Ausführen"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Ereignis"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Befehl hinzufügen</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Befehle</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Inkompatible Option"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "AutoHinzufügen"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Doppelklick zum Umschalten"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Doppelklick zum Editieren"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Pfad"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Zu beobachtender Ordner existiert nicht"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Pfad existiert nicht."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Eigenschaften des Überwachungs-Ordners"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Wenn eine .torrent-Datei zu diesem Verzeichnis hinzugefügt wird,\n"
+"wird sie zur Sitzung hinzugefügt."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Ordner auswählen"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Aktiviere Überwachung des Ordners"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Überwachter Ordner</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Lösche .torrent Datei nach dem Hinzufügen"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Sobald der Torrent zur Sitzung hinzugefügt wurde,\n"
+"wird die .torrent-Datei gelöscht."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Erweiterung anhängen nach hinzufügen:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"Sobald der Torrent der Sitzung hinzugefügt wurde,\n"
+"wird eine Erweiterung an .torrent angefügt\n"
+"und er wir im gleichen Verzeichnis verbleiben."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".hinzugefügt"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent-Datei-Aktionen</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Download-Ordner festlegen"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Download-Ordner</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Fertige verschieben</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Beschriftung: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Beschriftung</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Hauptmenü"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "Der hier ausgewählte Benutzer wird der Besitzer des Torrents sein."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Besitzer</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Max. Upload-Geschwindigkeit:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Max. Verbindungen:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maximale Uploads:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Max. Download-Geschwindigkeit:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandbreite</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Selbstverwaltet"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Pausiert hinzufügen:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Stelle in Warteschlange:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Warteschlange</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Beobachteter Ordner:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "Minuten"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 Minute"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 Sekunde"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "Sekunden"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Statistiken"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Auflösung"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Seeds/Peers"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Downloadfarbe:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Uploadfarbe:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Verbindungsgraph</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Bandbreitengraph</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "DHT-Knoten:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Seeds / Peers</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Graphfarben</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebOberfläche"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Die Deluge Weboberfläche ist nicht installiert, bitte\n"
+"installiere die Oberfläche und versuche es erneut."
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Web UI aktivieren"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL aktivieren"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Dienst-Port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Ungültiges Label, gültige Zeichen: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Leeres Label"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Label existiert bereits"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Unbekanntes Label"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Unbekannter Torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Label-_Optionen"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Entfe_rne Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "Füge L_abel hinzu"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Label-Optionen"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Label-Optionen</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Verwende Beschränkung pro Torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Verwende Einstellungen der Warteliste:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Ordnereinstellungen anwenden:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(Je eine Zeile pro Tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Verwende automatisch folgendes Label:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Label hinzufügen"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Label hinzufügen</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>Benutzen Sie die Seitenleiste um die Labels zu bearbeiten.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Labels</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Mitteilungen blinkend zeigen"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Popup Benachrichtigung ist nicht aktiviert."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "libnotify ist nicht installiert"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Benachrichtigungs-Popup zeigen"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Klang-Benachrichtigung nicht eingeschaltet"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame ist nicht installiert"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Klang-Benachrichtigung gescheitert %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Klang-Benachrichtigung Erfolg"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent fertiggestellt"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Der Torrent \"%(name)s\" mit %(num_files)i Datei(en) hat das Herunterladen "
+"abgeschlossen."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Benach­rich­ti­gungen"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Klangdatei auswählen"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Es trat ein Fehler beim Senden der Benachrichtigungsemail auf: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "Server verweigert Benutzernamen/Kennwort-Kombination: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Benachrichtigungsemail versandt."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent \"%(name)s\" fertiggestellt."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Diese Email dient dem Zweck, Sie zu informieren, dass Deluge den Download "
+"\"%(name)s\" inklusive %(num_files)i Datei(en) fertiggestellt hat.\n"
+"Zur Beendigung des Erhalts dieser Benachrichtigungen, deaktivieren sie "
+"einfach die Email-Benachrichtigungen in Deluge's Einstellungen.\n"
+"\n"
+"Vielen Dank,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Benachrichtigungsicon blinkt aktiviert."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Popups aktiviert"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Klänge wiedergeben"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI Benachrichtigungen</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Empfänger</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Server verlangt TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-Mail Benachrichtigung</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Diese Einstellungen bedeutet nicht, dass Sie für all diese Ereignisse eine "
+"Benachrichtigung erhalten."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Abonnements"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Klang Personalisierung"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Entpacker"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Entpacken nach:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Erstelle Torrent Unterverzeichnis"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Diese Einstellung erstellt ein Unterverzeichnis benannt nach dem Dateinamen "
+"des Torrents innerhalb des Entpackverzeichnisses und speichert die "
+"entpackten Dateien darin ab."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Planer"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limit beim Herunterladen:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limit beim Hochladen:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktive Torrents"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktiv herunterladen:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktiv verteilen:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Langsame Einstellungen</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Dateibrowser"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Zurück"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Vorwärts"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Erstellen"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Hilfe"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Abmelden"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Speichern"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "Über Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Copyright 2007-2018 Deluge-Team"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Mit Daten entfernen"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Verbindung hinzufügen"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "Konnte Host nicht hinzufügen: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Verschieben"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Durchsuchen"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Verbindung bearbeiten"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "Konnte Host nicht editieren"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Anmeldung"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Anmeldung fehlgeschlagen"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Sie gaben ein falsches Kennwort ein"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Öffentlich"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Letzte Übertragung"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "Gemischt"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Setze maximale Verbindungsanzahl"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Downloadgeschwindigkeit"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Setze maximale Empfangsgeschwindigkeit"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Uploadgeschwindigkeit"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Setze maximale Sendegeschwindigkeit"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Bandbreitenverbrauch vom Protokoll in Sende- und Empfangsrichtung"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "Freier Speicherplatz im Download-Ordner"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Verbinden"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Daemon stoppen"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Trennen"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Daemon starten"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Standardkennwort ändern"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Wir empfehlen, das Standardkennwort zu ändern. <br><br>Möchten Sie es jetzt "
+"ändern?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filter"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "Verbindung wiederhergestellt"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "Verbindung verloren"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "Die Verbindung zum Webserver ist verloren gegangen!"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "Verbindung zum Webserver verloren"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Empfangslimit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Limit der Sende-Geschwindigkeits"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Verbindungslimit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limit an Sende-Kanälen"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Tracker aktualisieren"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Erzwinge erneute Überprüfung"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Alles ausklappen"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Details"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Status:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Verschieben vervollständigt:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Allgemeine Einstellungen"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privat"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Laden"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Wahr"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Über Updates informiert werden"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Helfen Sie uns, Deluge zu verbessern, indem Sie und Ihre Pythem-Version, "
+"PyGTK-version, OS- und Prozessortyp senden. Es werden keinerlei andere "
+"Informationen gesendet."
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Torrent pausieren"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Plugin installieren"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Installieren"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Durchsuchen…"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Uploaden Ihres Plugins..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximale Verbindungen:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maximale Download-Rate (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maximale Uploadrate (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximale Anzahl halboffener Verbindungen"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maximale Verbindungsversuche pro Sekunde:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maximale Anzahl an Upload-Slots:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Cache-Größe (16 KiB Blöcke):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Nutzung des Proxy erzwingen"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "Mehr finden"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Zufälligen Port verwenden"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Diensttyp"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr "Filter mit null Torrents anzeigen"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr "WebUI-Kennwort"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "Alt:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Neu:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Bestätigen:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Zeitüberschreitung der Sitzung:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Privater Schlüssel:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Zertifikat:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr "WebUI-Sprache geändert"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+"Möchten Sie die Seite jetzt aktualisieren, um die neue Sprache zu verwenden?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Aktualisieren"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "Ungültiges Kennwort"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Ihre Kennwörter stimmen nicht überein!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "Ihr altes kennwort war falsch!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "Änderung erfolgreich"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "Ihr Kennwort wurde erfolgreich geändert!"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Aus Url hinzufügen"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Cookies"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Fehler beim Herunterladen des Torrent"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Datei"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Infohash"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Fehler beim Hochladen des Torrent"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Kein gültiger Torrent"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Pausiert hinzufügen"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Download"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/el.po b/deluge/i18n/el.po
new file mode 100644
index 0000000..0b69faa
--- /dev/null
+++ b/deluge/i18n/el.po
@@ -0,0 +1,6253 @@
+# Greek translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Greek <el@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Όλα"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Ενεργό"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Έλεγχος"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Γίνεται λήψη"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Διαμοιράζεται"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Σε παύση"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Στην ουρά"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Σφάλμα"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Όνομα"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Πρόοδος"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Κατάσταση"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Μέγεθος"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Λήφθηκαν"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Απεσταλμένα"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Αναλογία"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Ταχύτητα λήψης"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Ταχύτητα αποστολής"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Όριο κατεβάσματος"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Όριο ανεβάσματος"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Ομότιμοι χρήστες"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Διαθεσ"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Προστέθηκε"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Ιχνηλάτης"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Εκτιμ. χρ. αναμονής"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Προτεραιότητα πρώτων/τελευταίων κομματιών"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Με αυτόματη διαχείριση"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Κομάτια"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Προειδοποιήση"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Ανακοίνωση ΟΚ"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Η ανακοίνωση στάλθηκε"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Διεπαφή"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Λήψεις"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Εύρος ζώνης"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Σειρά αναμονής"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Δίκτυο"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Διαμεσολαβητής"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Προσωρινή μνήμη"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Άλλο"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Δαίμονας"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Πρόσθετα"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Αφγανιστάν"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Νήσοι Όλαντ"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Αλβανία"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Αλγερία"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Αμερικανική Σαμόα"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Ανδόρα"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Ανγκόλα"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ανγκουίλα"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Ανταρκτική"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Αντίγκουα και Μπαρμπούντα"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Αργεντινή"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Αρμενία"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Αρούμπα"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Αυστραλία"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Αυστρία"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Αζερμπαϊτζάν"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Μπαχάμες"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Μπαχρέιν"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Μπανγκλαντές"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Μπαρμπέιντος"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Λευκορωσία"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Βέλγιο"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Μπελίζε"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Μπενίν"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Βερμούδες"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Μπουτάν"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Βολιβία"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Βοσνία και Ερζεγοβίνη"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Μποτσουάνα"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Νήσος Μπουβέ"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Βραζιλία"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Βρετανικά Εδάφη Ινδικού Ωκεανού"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Μπρουνέι Νταρουσαλάμ"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Βουλγαρία"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Μπουρκίνα Φάσο"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Μπουρούντι"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Καμπότζη"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Καμερούν"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Καναδάς"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Πράσινο Ακρωτήριο"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Νήσοι Καϋμάν"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Κεντροαφρικανική Δημοκρατία"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Τσαντ"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Χιλή"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Κίνα"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Νήσος των Χριστουγέννων"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Νήσοι Κόκος (Κήλινγκ)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Κολομβία"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Κομόρες"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Κονγκό"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Κονγκό, Λαϊκή Δημοκρατία του"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Νήσοι Κουκ"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Κόστα Ρίκα"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Ακτή Ελεφαντοστού"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Κροατία"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Κούβα"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Κύπρος"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Δημοκρατία της Τσεχίας"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Δανία"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Τζιμπουτί"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Ντομίνικα"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Δομινικανή Δημοκρατία"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ισημερινός (Εκουαδόρ)"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Αίγυπτος"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Ελ Σαλβαδόρ"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ισημερινή Γουινέα"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Ερυθραία"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Εσθονία"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Αιθιοπία"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Νήσοι Φώκλαντ (Μαλβίνες)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Νήσοι Φερόε"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Φίτζι"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Φινλανδία"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Γαλλία"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Γαλλική Γουιάνα"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Γαλλική Πολυνησία"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Γαλλικά Νότια Εδάφη"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Γκαμπόν"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Γκάμπια"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Γεωργία"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Γερμανία"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Γκάνα"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Γιβραλτάρ"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Ελλάδα"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Γροιλανδία"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Γρενάδα"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Γουαδελούπη"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Γκουάμ"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Γουατεμάλα"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Γκέρνσεϊ"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Γουινέα"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Γουινέα-Μπισάου"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Γουιάνα"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Αϊτή"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Νήσος Χερντ και Νήσοι Μακντόναλντ"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Αγία Έδρα (Κράτος της Πόλης του Βατικανού)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Ονδούρα"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Χονγκ Κονγκ"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ουγγαρία"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Ισλανδία"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Ινδία"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Ινδονησία"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Ιράν, Ισλαμική Δημοκρατία του"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Ιράκ"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ιρλανδία"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Νήσος του Μαν"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Ισραήλ"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Ιταλία"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Τζαμάικα"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Ιαπωνία"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Τζέρσεϊ"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Ιορδανία"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Καζακστάν"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Κένυα"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Κιριμπάτι"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Κορέα, Λαϊκη Δημοκρατία της"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Κορέα, Δημοκρατία της"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Κουβέιτ"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Κιργιστάν"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Λαϊκή Δημοκρατία του Λάος"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Λετονία"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Λίβανος"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Λεσόθο"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Λιβερία"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Λιβύη, Αραβική Τζαμαχιρία"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Λιχτενστάιν"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Λιθουανία"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Λουξεμβούργο"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Μακάο"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Πρώην Γιουγκοσλαβική Δημοκρατία της Μακεδονίας"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Μαδαγασκάρη"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Μαλάουι"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Μαλαισία"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Μαλδίβες"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Μάλι"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Μάλτα"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Νήσοι Μάρσαλ"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Μαρτινίκα"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Μαυριτανία"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Μαυρίκιος"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Μαγιότ"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Μεξικό"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Μικρονησία, Ομόσπονδες Πολιτείες της"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Μολδαβία"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Μονακό"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Μογγολία"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Μαυροβούνιο"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Μοντσεράτ"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Μαρόκο"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Μοζαμβίκη"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Μιανμάρ"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Ναμίμπια"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Ναουρού"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Νεπάλ"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Ολλανδία"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Ολλανδικές Αντίλλες"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Νέα Καληδονία"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Νέα Ζηλανδία"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Νικαράγουα"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Νίγηρας"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Νιγηρία"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Νιούε"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Νήσος Νόρφολκ"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Νήσοι Βόρειες Μαριάνες"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Νορβηγία"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Ομάν"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Πακιστάν"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Παλάου"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Παλαιστινιακά Εδάφη, Κατεχόμενα"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Παναμάς"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Παπούα Νέα Γουινέα"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Παραγουάη"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Περού"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Φιλιππίνες"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Νήσοι Πίτκαιρν"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Πολωνία"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Πορτογαλία"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Πουέρτο Ρίκο"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Κατάρ"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Ρεϊνιόν"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Ρουμανία"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Ρωσική Ομοσπονδία"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ρουάντα"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Άγιος Βαρθολομαίος"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Νήσος Αγίας Ελένης"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Άγιος Χριστόφορος και Νέβις"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Αγία Λουκία"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Άγιος Μαρτίνος"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Νήσοι Αγίου Πέτρου και Μιχαήλ"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Άγιος Βικέντιος και Γρεναδίνες"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Σαμόα"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Σαν Μαρίνο"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Σάο Τομέ και Πρίνσιπε"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Σαουδική Αραβία"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Σενεγάλη"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Σερβία"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Σεϋχέλλες"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Σιέρα Λεόνε"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Σινγκαπούρη"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Σλοβακία"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Σλοβενία"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Νήσοι Σολομώντα"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Σομαλία"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Νότια Αφρική"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Νότια Τζόρτζια και Νότιοι νήσοι Σάντουιτς"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Ισπανία"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Σρι Λάνκα"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Σουδάν"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Σουρινάμ"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Νήσοι Σβάλμπαρντ και Γιαν Μαγιέν"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Σουαζιλάνδη"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Σουηδία"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Ελβετία"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Αραβική Δημοκρατία της Συρίας"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Τατζικιστάν"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Ηνωμένη Δημοκρατία της Τανζανίας"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Ταϊλάνδη"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Τιμόρ, Ανατολικό"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Τόγκο"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Τοκελάου"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Τόνγκα"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Τρινιντάντ και Τομπάγκο"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Τυνησία"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Τουρκία"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Τουρκμενιστάν"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Νήσοι Τερκς και Κάικος"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Τουβάλου"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Ουγκάντα"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ουκρανία"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Ενωμένα Αραβικά Εμιράτα"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Ηνωμένο Βασίλειο"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Ηνωμένες Πολιτείες της Αμερικής"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Ελάσσονες Νήσοι ΗΠΑ"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Ουρουγουάη"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Ουζμπεκιστάν"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Βανουάτου"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Βενεζουέλα"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Βιετνάμ"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Παρθένοι Νήσοι, Βρετανικές"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Παρθένοι Νήσοι, Η.Π.A."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Νήσοι Γουόλις και Φουτούνα"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Δυτική Σαχάρα"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Υεμένη"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Ζάμπια"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Ζιμπάμπουε"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Ο δαίμονας δεν εκτελείται"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "'Ονομα αρχείου"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Βαθμίδα"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Επιλογή αρχείου"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Επιλογή φακέλου"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Αποθήκευση αρχείου .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Αρχεία Τorrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Όλα τα αρχεία"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Εισάγετε τον κωδικό σας για εκκίνηση του Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Εισάγετε τον κωδικό σας για Έξοδο από το Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Πνευματική ιδιοκτησία %(year_start)s-%(year_end)s Ομάδα του Deluge"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Ένα πρόγραμμα ανταλλαγής αρχείων μεταξύ ομοτίμων χρηστών \n"
+"με χρήση του πρωτοκόλλου BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Πελάτης:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Τωρινοί Δημιουργοί:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Προηγούμενοι Δημιουργοί:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Αυτό το πρόγραμμα είναι ελεύθερο λογισμικό. Επιτρέπεται η αναδιανομή και/ή "
+"τροποποίησή του υπό τους όρους της GNU General Public License, όπως αυτή "
+"δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού, είτε της έκδοσης 3 της "
+"Άδειας, είτε (κατ' επιλογή σας) οποιασδήποτε μεταγενέστερης έκδοσης.\n"
+"\n"
+"Αυτό το πρόγραμμα διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά ΧΩΡΙΣ "
+"ΟΠΟΙΑΔΗΠΟΤΕ ΕΓΓΥΗΣΗ, χωρίς καν την σιωπηρή εγγύηση ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή "
+"ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΕΝΑ ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ. Δείτε την GNU General Public "
+"License για περισσότερες λεπτομέρειες.\n"
+"\n"
+"Θα πρέπει να έχετε λάβει ένα αντίγραφο της GNU General Public License μαζί "
+"με αυτό το πρόγραμμα. Αν όχι, δείτε <http://www.gnu.org/licenses>.\n"
+"\n"
+"Επιπλέον, ως ειδική εξαίρεση, οι κάτοχοι των πνευματικών δικαιωμάτων δίνουν "
+"την άδεια σύνδεσης του κώδικα τμημάτων του προγράμματος αυτού, με τη "
+"βιβλιοθήκη OpenSSL. Θα πρέπει να υπακούσει το GNU General Public License από "
+"όλες τις απόψεις για το σύνολο του κώδικα που χρησιμοποιείται εκτός από "
+"OpenSSL.\n"
+"\n"
+"Εάν τροποποιήσετε το αρχείο(α) μ' αυτή την εξαίρεση, μπορεί να επεκταθεί η "
+"εξαίρεση αυτή στη δική σας έκδοση του(των) αρχείου(ων), αλλά δεν είναι "
+"υποχρεωτικό να γίνει. Εάν δεν θέλετε να το κάνετε αυτό, διαγράψτε αυτή τη "
+"δήλωση εξαίρεσης από την έκδοση σας. Εάν διαγράψετε αυτή τη δήλωση εξαίρεσης "
+"από όλα τα πηγαία αρχεία στο πρόγραμμα, στη συνέχεια, διαγράψτε την και από "
+"εδώ."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Εξυπηρετητής:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Μη έγκυρο αρχείο"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Επιλογή αρχείου .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Μη έγκυρη διεύθυνση"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "δεν είναι νόμιμο URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Γίνεται λήψη..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Η λήψη απέτυχε"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Αδυναμία λήψης:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Λεπτομέρειες:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Όνομα χρήστη:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Κωδικός πρόσβασης:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Προστατευμένο με κωδικό"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Άλλο..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Δεν συνδέθηκε"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Κόμβοι DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Ελεύθερος χώρος δίσκου"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ναι"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Όχι"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Προτεραιότητα"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Όλα"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Κατάσταση"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Λεπτομέρειες"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Αρ_χεία"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Υπολογιστές"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Επιλογές"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Χωρίς σύνδεση..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Χωρίς περιορισμό"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Κάτω"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Πάνω"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Εκτός σύνδεσης"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Σε σύνδεση"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Συνδεδεμένος"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Κατάσταση"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Υπολογιστής"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Έκδοση"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Έ_ναρξη Δαίμονα"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Τερματισμός Δαίμονα"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Αδυναμία έναρξης δαίμονα!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Σφάλμα κατά την προσθήκη υπολογιστή"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Όνομα Χρήστη"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Επίπεδο"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Ενεργό"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Πρόσθετο"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Επιλογή πρόσθετου"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Πρόσθετο Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Καταστάσεις"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Ανιχνευτές"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Κανένα"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Διαχειριστής"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Ετικέτες"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Χωρίς ετικέτα"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Έκδοση Client</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrent στην ουρά"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent στην ουρά"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Χωρίς περιορισμό"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Ενεργό"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Ανενεργό"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Απενεργοποίηση"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Διεύθυνση"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Πελάτης"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Δημιουργία Torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrent στην Ουρά"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Αφαίρεση"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Αυτόματη προσθήκη Torrent κατά τη σύνδεση"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Αρχείο"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Προσθήκη Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Δημιουργία Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Έξοδος & _Κλείσιμο υπηρεσίας"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_'Εξοδος"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Επεξεργασία"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Διαχειριστής _σύνδεσης"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Προβολή"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Γραμμή εργαλείων"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Πλευρική στήλη"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Μπάρα κατάστασης"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Καρτέλες"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Στήλες"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Πλευρική στήλη"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Εμφάνιση _μηδενικών εγγραφών"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Εμφάνιση _ιχνηλατών"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Βοήθεια"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Αρχική σελίδα"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_Συχνές ερωτήσεις"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Συχνές ερωτήσεις"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Κοινότητα"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Προσθήκη Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Προσθήκη Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Αφαίρεση torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Διαγραφή Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Παύση των επιλεγμένων Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Παύση"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Συνέχιση των επιλεγμένων Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Συνέχιση"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Μετακίνηση του Torrent ψηλότερα στην σειρά αναμονής"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Πάνω στην ουρά"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Μετακίνηση του Torrent χαμηλότερα στην σειρά αναμονής"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Κάτω στην ουρά"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Προτιμήσεις"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Διαχειριστής σύνδεσης"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Εξαναγκασμένο"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Απενεργοποιημένο"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Χαιρετισμός"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Οποιοδήποτε"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Εμφάνιση της ταχύτητας της συνεδρίας στην γραμμή τίτλου"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Εστίαση στο παράθυρο κατά την προσθήκη torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Εικονίδιο στη μπάρα συστήματος"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Ελαχιστοποίηση στη μπάρα συστήματος κατά την έξοδο"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Εκκίνηση στην μπάρα συστήματος"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Προστασία μεγιστοποίησης από την μπάρα με κωδικό"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Μετακίνηση ολοκληρωμένων σε:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Αντιγραφή των αρχείων .torrent σε:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Διαγραφή αντιγράφου αρχείου torrent στην αφαίρεση"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Διαγραφή του αντιγράφου του αρχείου torrent όταν το torrent αφαιρείται"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Αποθήκευση σε:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Να δοθεί προτεραιότητα στα πρώτα και τελευταία τμήματα του torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+"Να δοθεί προτεραιότητα στα πρώτα και τα τελευταία τμήματα αρχείων αυτού του "
+"torrent."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Προσθήκη των Torrent σε κατάσταση πάυσης"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Εμφάνιση πάντα"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Εστίαση διαλόγου"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"Ο μέγιστος επιτρεπτός αριθμός συνδέσεων. Εισάγετε -1 για απεριόριστο."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Συνδέσεις:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Ο μέγιστος αριθμός θυρίδων αποστολής για όλα τα Torrent. Εισάγετε -1 για "
+"απεριόριστες."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Θέσεις για αποστολές:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Η μέγιστη ταχύτητα λήψης για όλα τα Torrent. Εισάγετε -1 για απεριόριστη."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Ταχύτητα λήψης:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Η μέγιστη ταχύτητα αποστολής για όλα τα Torrent. Εισάγετε -1 για απεριόριστη."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Ταχύτητα αποστολής:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Αγνόηση ορίων για το τοπικό δίκτυο"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Καθορισμός ορίου επίβαρου IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Αν επιλεγεί, το εκτιμώμενο επίβαρο TCP/IP δε συμπεριλαμβάνεται στην τιμή του "
+"περιορισμού, για να αποφευχθεί η υπέρβαση του ορίου με τη συνολική κίνηση."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Ο μέγιστος αριθμός θυρίδων αποστολής ανά torrent. Εισάγετε -1 για "
+"απεριόριστες."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Ο μέγιστος αριθμός συνδέσεων ανά Torrent. Εισάγετε -1 για απεριόριστες."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Η μέγιστη ταχύτητα αποστολής ανά torrent. Ρυθμίστε σε -1 για απεριόριστη."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Τυχαία"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Ενεργή θύρα:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Έλεγχος ενεργής θύρας"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Από:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Έως:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Επίπεδο:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Κρυπτογράφηση"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Ανταλλαγή μεταξύ υπολογιστών"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"Η υπηρεσία αναζήτησης τοπικών υπηρεσιών βρίσκει τοπικούς υπολογιστές στο "
+"δίκτυό σας."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Ο κατανεμημένος πίνακας κατακερματισμού (DHT) πιθανώς να βελτιώσει τον "
+"αριθμό των ενεργών συνδέσεων."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Διαμοιραστές TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Όνομα υπολογιστή:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Θύρα:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Μέγεθος προσωρινής μνήμης (μπλοκ των 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Ο αριθμός των δευτερολέπτων που πρέπει να περάσει μετά την τελευταία εγγραφή "
+"στην προσωρινή μνήμη, για να γίνει εγγραφή στο δίσκο. Η προκαθορισμένη τιμή "
+"είναι 60 δευτερόλεπτα."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Λήξη προσωρινής μνήμης (δευτερόλεπτα):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Ρυθμίσεις"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Συνολικά μπλοκ των 16 KiB που γράφτηκαν στον δίσκο από την έναρξη αυτής της "
+"συνεδρίας."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Γραμμένα μπλοκ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Ο συνολικός αριθμός εκτελεσθέντων λειτουργιών εγγραφής από την έναρξη αυτής "
+"της συνεδρίας."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Εγγραφές:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Το πηλίκο (εγγεγραμμένα_μπλοκς - εγγραφές) / εγγεγραμμένα_μπλοκς συμβολίζει "
+"τον αριθμό των αποθηκευμένων λειτουργιών εγγραφής ανά μονάδα εγγραφής "
+"(μπλοκ), δηλ. ένα είδος λόγου προσωρινής μνήμης εγγραφής ώς προς την "
+"εγγράψιμη μνήμη."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Δείκτης προσωρινής μνήμης εγγραφής:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Ο αριθμός των μπλοκ που ζητήθηκαν από τη μηχανή bittorrent (από "
+"απομακρυσμένους υπολογιτές), και που εξυπηρετήθηκαν από το δίσκο ή την "
+"λανθάνουσα μνήμη."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Αναγνωσμένα μπλοκ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Ο αριθμός των μπλοκ που εξυπηρετήθηκαν από την λανθάνιυσα μνήμη."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Ανάγνωση μπλοκ δεδομένων:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Η αναλογία προσωρινής μνήμης ανάγνωσης."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Αναλογία προσωρινής μνήμης ανάγνωσης:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Ο συνολικός αριθμός λοευτουργιών ανάγνωσης που εκτελέστηκαν μέχρι την "
+"εκκίνηση αυτής της συνεδρίας."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Αναγνώσεις:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Ο αριθμός των μπλοκ των 16 KiB που βρίσκονται στην προσωρινή μνήμη. "
+"Περιλαμβάνει τη μνήμη εγγραφής και ανάγνωσης."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Μέγεθος προσωρινής μνήμης:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Μέγεθος προσωρινής μνήμης ανάγνωσης:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Βοηθήστε μας να βελτιώσουμε το Deluge στέλνοντας μας την έκδοση Python, την "
+"έκδοση PyGTK, το λειτουργικό σύστημα και τον τύπο επεξεργαστή. Σε καμία "
+"περίπτωση δεν στέλνονται άλλες πληροφορίες."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ναι, παρακαλώ στείλε στατιστικά ανώνυμα"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Τοποθεσία:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Αν το Deluge δεν μπορεί να βρει το αρχείο της βάσης δεδομένων σε αυτή την "
+"τοποθεσία, θα προσπαθήσει να εντοπίσει την τοποθεσία (κράτος) του "
+"υπολογιστή μέσω του DNS."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Θύρα δαίμονα:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Θύρα"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Αποδοχή απομακρυσμένων συνδέσεων"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Συνδέσεις"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Περιοδικός έλεγχος της ιστοσελίδας για νέες εκδόσεις"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Έκδοση:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Δημιουργός:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Ιστοσελίδα:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Email συγγραφέα:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Πληροφορίες"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Προσθήκη υπολογιστή"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "υπολογιστής:θύρα"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Γενικά</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Άκυρο"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Προσθήκη"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Αφαίρεση"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Προσθήκη πληροφορίων κατακερματισμού"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Πληροφορίες κατακερματισμού:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Ιχνηλάτες:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Προσθήκη υπολογιστή"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Προορισμός:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Νέα έκδοση"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Μετάβαση στην ιστοσελίδα"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Να μην εμφανίζεται στο μέλλον αυτό το παράθυρο διαλόγου"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Όνομα:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Σχόλια:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Όταν ολοκληρωθεί να μετακινηθεί στο:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Διακοπή διαμοίρασης στην αναλογία:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Αφαίρεση σε αναλογία"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Επεξεργασία ιχνηλατών"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Κορυφή"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Κάτω"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Προσθήκη Torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Πλήροφορίες _κατακερματισμού"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Προσθήκη σε _κατάσταση παύσης"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Προτεραιότητα πρώτων/τελευταίων τμημάτων"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Εφαρμογή σε όλα"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Επαναφορά στα προκαθορισμένα"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Εμφάνιση του Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Όριο ταχύτητας _λήψης"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Όριο ταχύτητας _αποστολής"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Έξοδος & τερματισμός δαίμονα"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Επεξεργασία ιχνηλατών"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Προσθήκη ομοτίμων"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Πρόσθεση ενός υπολογιστή με την IP του"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Επεξεργασία ιχνηλάτη"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Ιχνηλάτης:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Εισαγωγή απομακρυσμένης διαδρομής"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Διαδρομή:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Δημιουργία Torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Φάκε_λος"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Απομακ_ρυσμένη διαδρομή"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Αρχεία"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Διαμοιραστές Web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Μέγεθος κοματιού:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Ορισμός ιδιωτικής σημαίας"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Πρόσθεση αυτού του Torrent στη συνεδρία"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Επιλογές"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Αποθήκευση .torrent ως"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Παύση"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Συνέχιση"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Συνέχιση επιλεγμένων Torrent."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Επ_ιλογές"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Τοποθέτηση στην ουρά"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Ενημέρωση ιχνηλάτη"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Αφαίρεση Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Εξαναγκασμός επανελέγχου"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "ετικέτα"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Επιλογή όλων"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Παύση όλων"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Συνέ_χιση όλων"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Όριο _συνδέσεων"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Όριο _θυρίδων αποστολής"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Αυτόματη διαχείριση"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Προσθήκη ιχνηλάτη"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Προσθήκη URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Ανάπτυξη όλων"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Πελάτης BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Πελάτης BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Λήψη και διαμοιρασμός αρχείων μέσω BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Εντολή"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Κωδικός Χρήστη"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Από"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Προς"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Χρήση τυχαίων θυρών:"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Εισερχόμενο"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Εξερχόμενο"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Μέγιστος Αριθμός Συνδέσεων"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Μέγιστος Αριθμός Θυρίδων Αποστολής"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Μέγιστες Μισάνοιχτες Συνδέσεις"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Μέγιστες Προσπάθειες Σύνδεσης ανά Δευτερόλεπτο"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Καθορισμός Oρίου Eπίβαρου IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Αναλογία διαμοιρασμού"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Τύπος"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Εφαρμογή"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Λίστα IP του Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Κείμενο SafePeer (συμπιεσμένο)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Κείμενο PeerGuardian (ασυμπίεστο)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Λίστα αποκλεισμένων"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Μη έγκυρος ηγέτης"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Μη έγκυρος μαγικός κωδικός"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Μη έγκυρη έκδοση"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Ημέρες"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Έλεγχος για νέα λίστα κάθε:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Εισαγωγή λίστας αποκλεισμένων κατά την εκκίνηση"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Ρυθμίσεις</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Λήψη του αρχείου με τη λίστα αποκλεισμένων αν είναι απαραίτητο και εισαγωγή "
+"του αρχείου."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Έλεγχος λήψης και εισαγωγής"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Λήψη και εισαγωγή νέου αρχείου με τη λίστα αποκλεισμένων."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Εξαναγκασμός λήψης και εισαγωγής"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Η λίστα αποκλεισμένων είναι ενημερωμένη"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Επιλογές</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Τύπος:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Ημερομηνία:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Μέγεθος αρχείου:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Πληροφορίες</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Το torrent oλοκληρώθηκε"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Το torrent προστέθηκε"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Το torrent αφαιρέθηκε"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Εκτέλεση"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Συμβάν"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Προσθήκη εντολής</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Εντολές</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Αυτόματη προσθήκη"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Ο φάκελος προς παρακολούθηση δεν υπάρχει."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Η διαδρομή δεν υπάρχει."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Ιδιότητες φακέλου υπό παρακολούθηση"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Επιλογή φακέλου"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Ενεργοποίηση αυτού του φακέλου προς παρακολούθηση"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Φάκελος προς παρακολούθηση</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Διαγραφή .torrent μετά την προσθήκη"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Προσάρτηση επέκτασης μετά τη προσθήκη:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".προστέθηκε"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Ενέργεια αρχείου torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Η μεταφορά ολοκληρώθηκε</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Ετικέτα: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Ετικέτα</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Κύρια"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Μέγιστη ταχύτητα αποστολής:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Μέγιστος αριθμός συνδέσεων:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Μέγιστος αριθμός θυρίδων αποστολής:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Μέγιστη ταχύτητα λήψης:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Εύρος ζώνης δικτύου</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Αυτόματα διαχειριζόμενο:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Προσθήκη σε παύση:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Προσθήκη σε ουρά:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Ουρά</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Φάκελοι υπό παρακολούθηση:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "δευτερόλεπτα"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebUi"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Η διασύνδεση ιστοχώρου (Web) του Deluge δεν είναι εγκατεστημένη, \n"
+"παρακαλούμε εγκαταστήστε την και ξαναπροσπαθήστε"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Ενεργοποίηση διεπαφής δικτύου"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Ενεργοποίηση SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Θύρα ακρόασης:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Μη έγκυρη ετικέτα, έγκυροι χαρακτήρες: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Κενή ετικέτα"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Η ετικέτα υπάρχει ήδη"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Άγνωστη ετικέτα"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Άγνωστο torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Επιλογές _ετικέτας"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Αφαίρεση ετικέτας"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Προσθήκη ετικέτας"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Επιλογές ετικέτας"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Ετικέτα"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Επιλογές ετικέτας</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Εφαρμογή μέγιστων ρυθμίσεων ανά torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Μέγιστο"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Εφαρμογή ρυθμίσεων αναμονής:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 σειρά ανά ιχνηλάτη)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Αυτόματος ορισμός ετικέτας:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Προσθήκη ετικέτας"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Προσθήκη ετικέτας</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Χρησιμοποιήστε την πλευρική μπάρα για να προσθέσετε, επεξεργαστείτε και "
+"να αφαιρέσετε ετικέτες. <i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Ετικέτες</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Εμφάνιση ειδοποίησης που αναβοσβήνει"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Δεν έχουν ενεργοποιηθεί αναδυόμενες ειδοποιήσεις."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Εμφάνιση αναδυόμενης ειδοποίησης"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Η ηχητική ειδοποίηση είναι απενεργοποιημένη"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "Το pygame δεν είναι εγκατεστημένο"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Η ηχητική ειδοποίηση απέτυχε %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Επιτυχία ηχητικής ειδοποίησης"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Το Τόρεντ Τελείωσε"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Η λήψη του torrent \"%(name)s\" που περιλαμβάνει %(num_files)i αρχείο/α "
+"ολοκληρώθηκε."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Ειδοποιήσεις"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Επιλογή αρχείου ήχου"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Προέκυψε σφάλμα κατά την αποστολή του ενημερωτικού email: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Το email ειδοποίησης στάλθηκε."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Το torrent \"%(name)s\" ολοκληρώθηκε"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Αυτό το μήνυμα στάλθηκε για να σας ενημερώσει οτι το Deluge ολοκλήρωσε τη "
+"λήψη του \"%(name)s\", το οποίο περιέχει %(num_files)i αρχεία.\n"
+"Για να σταματήσετε να λαμβάνετε αυτές τις ειδοποιήσεις, απλά απενεργοποιήστε "
+"τις ενημερώσεις μέσω email στις προτιμήσεις του Deluge.\n"
+"\n"
+"Ευχαριστούμε,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Ενεργοποιήθηκε εικονίδιο που αναβοσβήνει"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Ενεργοποίηση αναδυόμενων παραθύρων"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Ήχος ενεργός"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Ειδοποιήσεις γραφικού περιβάλλοντος</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Παραλήπτες</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Ο εξυπηρετητής απαιτεί TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Ειδοποιήσεις Email</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Η συγκεκριμένη διαμόρφωση δεν συνεπάγεται και το ότι θα λαμβάνετε "
+"ειδοποιήσεις για όλα αυτά τα γεγονότα."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Συνδρομές"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Προσαρμογή Ήχου"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Αποσυμπιεστής"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Αποσυμπίεση σε:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Δημιουργία υποφακέλου ονόματος του torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Η επιλογή αυτή θα δημιουργήσει έναν υποφάκελο με το όνομα του Torrent μέσα "
+"από τον επιλεγμένο φάκελο εξαγωγής και θα τοποθετήσει εκεί τα αρχεία που θα "
+"εξαχθούν."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Χρονοπρογραμματιστής"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Μέγιστη ταχύτητα λήψης:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Μέγιστη ταχύτητα αποστολής:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Ενεργά torrent:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Λαμβάνοντα Ενεργά:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Τροφοδοτούντα Ενεργά:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Ρυθμίσεις λειτουργίας χαμηλής ταχύτητας</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Έξοδος"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Αποθήκευση"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Υπολογιστής:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Μετακίνηση"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Σύνδεση"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Ορισμός μέγιστου αριθμού συνδέσεων"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Ταχύτητα λήψης"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Ορισμός της μέγιστης ταχύτητας λήψης"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Ταχύτητα αποστολής"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Ορισμός της μέγιστης ταχύτητας αποστολής"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Κίνηση πρωτοκόλλου Λήψη/Αποστολή"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Σύνδεση"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Φίλτρα"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Όριο Σύνδεσης Λήψης"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Όριο Ταχύτητας Αποστολής"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Όριο Σύνδεσης"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Όριο Θυρών Αποστολής"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Ενημέρωση του Ιχνηλάτη"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Εξαναγκασμένος επανέλεγχος"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Λεπτομέρειες"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Γενικά"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Ιδιωτικό"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Αληθές"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Ενημέρωση για νέες εκδόσεις"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Μέγιστος αριθμός συνδέσεων:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Μέγιστη ταχύτητα λήψης (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Μέγιστη ταχύτητα αποστολής (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Μέγιστος αριθμός ημι-ανοικτών συνδέσεων:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Μέγιστος αριθμός προσπαθειών σύνδεσης ανά δευτερόλεπτο:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Μέγιστος αριθμός θυρίδων αποστολής:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Εξυπηρετητής"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Ανανέωση"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Ιστοσελίδα"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Αρχείο"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Προσθήκη σε Κατάσταση Παύσης"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Λαμβάνεται"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/en_AU.po b/deluge/i18n/en_AU.po
new file mode 100644
index 0000000..4e57aaa
--- /dev/null
+++ b/deluge/i18n/en_AU.po
@@ -0,0 +1,6224 @@
+# English (Australia) translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: English (Australia) <en_AU@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "All"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Active"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Checking"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Downloading"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Seeding"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Paused"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Queued"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Error"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Name"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progress"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "State"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Size"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Downloaded"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Uploaded"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Ratio"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Down Speed"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Up Speed"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Down Limit"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Up Limit"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Avail"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Added"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritise First/Last"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Auto Managed"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Pieces"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Warning"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Announce OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Announce Sent"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Downloads"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandwidth"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Queue"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Network"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Other"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Aland Islands"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "American Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarctica"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua and Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Belarus"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgium"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia and Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet Island"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "British Indian Ocean Territory"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodia"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameroon"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cape Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Cayman Islands"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Central African Republic"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Chad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Christmas Island"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Cocos (Keeling) Islands"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comoros"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Congo, The Democratic Republic of the"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook Islands"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Cote d'Ivoire"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cyprus"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Czech Republic"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Denmark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominican Republic"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Equatorial Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Ethiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkland Islands (Malvinas)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faroe Islands"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "France"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "French Guiana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "French Polynesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "French Southern Territories"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Germany"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Greece"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Greenland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard Island and McDonald Islands"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Holy See (Vatican City State)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungary"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Iceland"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Islamic Republic of"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraq"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ireland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isle of Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italy"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea, Democratic People's Republic of"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korea, Republic of"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Lao People's Democratic Republic"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Lebanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyan Arab Jamahiriya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lithuania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxembourg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonia, The Former Yugoslav Republic of"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldives"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshall Islands"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Micronesia, Federated States of"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Morocco"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Netherlands"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Netherlands Antilles"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "New Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "New Zealand"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolk Island"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Northern Mariana Islands"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norway"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinian Territory, Occupied"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua New Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Philippines"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Poland"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Russian Federation"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts and Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre and Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent and the Grenadines"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome and Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi Arabia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Solomon Islands"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "South Africa"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "South Georgia and the South Sandwich Islands"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spain"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard and Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Sweden"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Switzerland"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syrian Arab Republic"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, United Republic of"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad and Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkey"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks and Caicos Islands"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "United Arab Emirates"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "United Kingdom"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "United States"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "United States Minor Outlying Islands"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Virgin Islands, British"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Virgin Islands, U.S."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis and Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Western Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Daemon not running"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Filename"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Tier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Choose a file"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Choose a folder"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Save .torrent file"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent files"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "All files"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"A peer-to-peer file sharing program\n"
+"utilising the BitTorrent protocol."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Client:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Current Developers:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Past Developers or Contributors:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Invalid File"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Choose a .torrent file"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "is not a valid URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Downloading..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Download Failed"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Failed to download:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Details:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Username:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Password:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Other..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Not Connected"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Nodes"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Free Disk Space"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Yes"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "No"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priority"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Details"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_les"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Options"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Not Connected..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Unlimited"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Down"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Up"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Offline"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Online"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Connected"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Version"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Start Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Stop Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Unable to start daemon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Error Adding Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Username"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Level"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Enabled"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Select the Plugin"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "States"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackers"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "None"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Labels"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "No Label"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Client Version</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents Queued"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent Queued"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Set Unlimited"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "On"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Off"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Disable"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Address"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creating Torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Queued Torrents"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Remove"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automatically add torrents on connect"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_File"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Add Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Create Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Quit & _Shutdown Daemon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Quit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Edit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Connection Manager"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_View"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Toolbar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sidebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_bar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Columns"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_idebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Show _Zero Hits"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Show _Trackers"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Help"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Homepage"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Frequently Asked Questions"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Community"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Add torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Add Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Remove torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Remove Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pause the selected torrents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pause"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Resume the selected torrents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Resume"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Queue Torrent Up"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Queue Up"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Queue Torrent Down"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Queue Down"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferences"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Connection Manager"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forced"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Disabled"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Handshake"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Either"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Show session speed in titlebar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Focus window when adding torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Enable system tray icon"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimise to tray on close"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Start in tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Password protect system tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Move completed to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copy of .torrent files to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Delete copy of torrent file on remove"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Delete the copy of the torrent file created when the torrent is removed"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Download to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioritise first and last pieces of torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioritise first and last pieces of files in torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Add torrents in Paused state"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Always show"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Bring the dialogue to focus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "The maximum number of connections allowed. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Connections:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "The maximum upload slots for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "The maximum download speed for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Download Speed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "The maximum upload speed for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Upload Speed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignore limits on local network"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Rate limit IP overhead"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "The maximum upload slots per torrent. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"The maximum number of connections per torrent. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Random"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Active Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Test Active Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "From:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "To:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Level:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Encryption"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer Exchange"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery finds local peers on your network."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Distributed hash table may improve the amount of active connections."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Hostname:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Cache Size (16 KiB blocks):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache Expiry (seconds):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Settings"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocks Written:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"The total number of write operations performed since this session was "
+"started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Writes:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Write Cache Hit Ratio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocks Read:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "The number of blocks that were served from cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blocks Read Hit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "The cache hit ratio for the read cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Read Cache Hit Ratio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"The total number of read operations performed since this session was started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Reads:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Cache Size:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Read Cache Size:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Yes, please send anonymous statistics"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Location:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Allow Remote Connections"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Connections"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Periodically check the website for new releases"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Version:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Author:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Author E-mail:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Add Peer"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>General</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Cancel"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Add"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Remove"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Add Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackers:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Add Host"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destination:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "New Release"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Goto Website"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Do not show this dialogue in the future"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Name:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comments:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Move completed:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Stop seed at ratio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Remove at ratio"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Edit Trackers"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Top"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Bottom"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Add Torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Add In _Paused State"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritise First/Last Pieces"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Apply To All"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Revert To Defaults"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Show Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Download Speed Limit"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Upload Speed Limit"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Quit & Shutdown Daemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Edit Trackers"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Add Peer"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Add a peer by its IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Edit Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Enter Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Path:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Create Torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Fol_der"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Files"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseeds"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Piece Size:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Set Private Flag"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Add this torrent to the session"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Options"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Save .torrent as"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pause"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Resu_me"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Resume selected torrents."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opt_ions"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Queue"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Update Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Remove Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Force Re-check"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "label"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Select All"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pause All"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Resu_me All"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Connection Limit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Upload _Slot Limit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Auto Managed"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Add Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Add URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expand All"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent Client"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent Client"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Download and share files over BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Command"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Password"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "From"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "To"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Use Random Ports"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Inbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Outbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maximum Connections"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maximum Upload Slots"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximum Half-Open Connections"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maximum Connection Attempts per Second"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Rate Limit IP Overhead"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Share Ratio"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Type"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Apply"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP list (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blocklist"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Invalid leader"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Invalid magic code"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Invalid version"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Days"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Check for new list every:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Import blocklist on startup"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Settings</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Download the blocklist file if necessary and import the file."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Check Download and Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Download a new blocklist file and import it."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Force Download and Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blocklist is up to date"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Options</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Type:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Date:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "File Size:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent Complete"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent Added"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Execute"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Event"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Add Command</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Commands</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Watch folder does not exist."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Path does not exist."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Watch Folder Properties"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Select A Folder"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Enable this watch folder"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Watch Folder</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Delete .torrent after adding"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Append extension after adding:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent File Action</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Move Completed</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Label: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Label</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Main"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Max Upload Speed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Max Connections:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Max Upload Slots:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Max Download Speed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandwidth</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Auto Managed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Add Paused:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Queue to:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Queue</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Watch Folders:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "seconds"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Enable web interface"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Enable SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Listening port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Invalid label, valid characters:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Empty Label"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Label already exists"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Unknown Label"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Unknown Torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Label _Options"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Remove Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Add Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Label Options"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Label Options</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Apply per torrent max settings:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Apply Queue settings:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 line per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automatically apply label:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Add Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Add Label</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Labels</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Notification Blink shown"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Popup notification is not enabled."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Notification popup shown"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Sound notification not enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame is not installed"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Sound notification failed %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Sound notification Success"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Finished Torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Choose Sound File"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "There was an error sending the notification e-mail: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Notification e-mail sent."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Finished Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"This e-mail is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off e-mail notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Tray icon blinks enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Popups enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sound enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI Notifications</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Recipients</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Server requires TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-mail Notifications</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Subscriptions"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Sound Customisation"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extract to:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Create torrent name sub-folder"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Download Limit:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Upload Limit:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Active Torrents:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Active Downloading:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Active Seeding:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Slow Settings</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Logout"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Save"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Move"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Login"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Set Maximum Connections"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Download Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Set Maximum Download Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Upload Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Set Maximum Upload Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocol Traffic Download/Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Connect"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filters"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "D/L Speed Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "U/L Speed Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Connection Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Upload Slot Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Update Tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Force Recheck"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Details"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "General"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Private"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "True"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Be alerted about new releases"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximum Connections:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maximum Download Speed (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maximum Upload Speed (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximum Half-Open Connections:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maximum Connection Attempts per Second:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maximum Upload Slots:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Refresh"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "File"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Add In Paused State"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Download"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/en_CA.po b/deluge/i18n/en_CA.po
new file mode 100644
index 0000000..57e6482
--- /dev/null
+++ b/deluge/i18n/en_CA.po
@@ -0,0 +1,6224 @@
+# English (Canada) translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: English (Canada) <en_CA@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "All"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Active"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Checking"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Downloading"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Seeding"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Paused"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Queued"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Error"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Name"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progress"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "State"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Size"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Downloaded"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Uploaded"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Ratio"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Down Speed"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Up Speed"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Down Limit"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Up Limit"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Avail"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Added"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritize First/Last"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Auto Managed"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Pieces"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Warning"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Announce OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Announce Sent"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Downloads"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandwidth"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Queue"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Network"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Other"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Aland Islands"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "American Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarctica"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua and Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Belarus"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgium"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia and Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet Island"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "British Indian Ocean Territory"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodia"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameroon"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cape Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Cayman Islands"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Central African Republic"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Chad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Christmas Island"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Cocos (Keeling) Islands"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comoros"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Congo, The Democratic Republic of the"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook Islands"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Cote d'Ivoire"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cyprus"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Czech Republic"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Denmark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominican Republic"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Equatorial Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Ethiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkland Islands (Malvinas)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faroe Islands"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "France"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "French Guiana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "French Polynesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "French Southern Territories"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Germany"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Greece"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Greenland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard Island and McDonald Islands"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Holy See (Vatican City State)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungary"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Iceland"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Islamic Republic of"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraq"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ireland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isle of Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italy"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea, Democratic People's Republic of"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korea, Republic of"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Lao People's Democratic Republic"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Lebanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyan Arab Jamahiriya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lithuania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxembourg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonia, The Former Yugoslav Republic of"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldives"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshall Islands"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Micronesia, Federated States of"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Morocco"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Netherlands"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Netherlands Antilles"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "New Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "New Zealand"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolk Island"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Northern Mariana Islands"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norway"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinian Territory, Occupied"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua New Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Philippines"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Poland"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Russian Federation"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts and Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre and Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent and the Grenadines"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome and Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi Arabia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Solomon Islands"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "South Africa"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "South Georgia and the South Sandwich Islands"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spain"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard and Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Sweden"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Switzerland"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syrian Arab Republic"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, United Republic of"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad and Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkey"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks and Caicos Islands"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "United Arab Emirates"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "United Kingdom"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "United States"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "United States Minor Outlying Islands"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Viet Nam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Virgin Islands, British"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Virgin Islands, U.S."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis and Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Western Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Daemon not running"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Filename"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Tier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Choose a file"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Choose a folder"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Save .torrent file"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent files"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "All files"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Client:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Current Developers:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Past Developers or Contributors:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Invalid File"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Choose a .torrent file"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "is not a valid URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Downloading..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Download Failed"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Failed to download:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Details:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Username:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Password:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Other..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Not Connected"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Nodes"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Free Disk Space"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Yes"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "No"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priority"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Details"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_les"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Options"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Not Connected..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Unlimited"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Down"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Up"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Offline"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Online"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Connected"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Version"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Start Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Stop Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Unable to start daemon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Error Adding Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Username"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Level"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Enabled"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Select the Plugin"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "States"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackers"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "None"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Labels"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "No Label"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Client Version</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents Queued"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent Queued"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Set Unlimited"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "On"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Off"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Disable"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Address"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creating Torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Queued Torrents"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Remove"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automatically add torrents on connect"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_File"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Add Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Create Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Quit & _Shutdown Daemon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Quit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Edit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Connection Manager"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_View"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Toolbar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sidebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_bar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Columns"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_idebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Show _Zero Hits"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Show _Trackers"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Help"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Homepage"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Frequently Asked Questions"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Community"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Add torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Add Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Remove torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Remove Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pause the selected torrents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pause"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Resume the selected torrents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Resume"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Queue Torrent Up"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Queue Up"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Queue Torrent Down"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Queue Down"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferences"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Connection Manager"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forced"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Disabled"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Handshake"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Either"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Show session speed in titlebar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Focus window when adding torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Enable system tray icon"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimize to tray on close"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Start in tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Password protect system tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Move completed to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copy .torrent files to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Delete copy of torrent file on remove"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Delete the copy of the torrent file created when the torrent is removed"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Download to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioritise first and last pieces of torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioritize first and last pieces of files in torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Add torrents in Paused state"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Always show"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Bring the dialog to focus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "The maximum number of connections allowed. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Connections:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "The maximum upload slots for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "The maximum download speed for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Download Speed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "The maximum upload speed for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Upload Speed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignore limits on local network"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Rate limit IP overhead"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "The maximum upload slots per torrent. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"The maximum number of connections per torrent. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Random"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Active Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Test Active Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "From:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "To:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Level:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Encryption"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer Exchange"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery finds local peers on your network."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Distributed hash table may improve the amount of active connections."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Hostname:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Cache Size (16 KiB blocks):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache Expiry (seconds):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Settings"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocks Written:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"The total number of write operations performed since this session was "
+"started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Writes:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Write Cache Hit Ratio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocks Read:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "The number of blocks that were served from cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blocks Read Hit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "The cache hit ratio for the read cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Read Cache Hit Ratio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"The total number of read operations performed since this session was started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Reads:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Cache Size:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Read Cache Size:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Yes, please send anonymous statistics"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Location:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Allow Remote Connections"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Connections"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Periodically check the website for new releases"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Version:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Author:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Author Email:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Add Peer"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>General</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Cancel"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Add"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Remove"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Add Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackers:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Add Host"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destination:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "New Release"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Goto Website"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Do not show this dialog in the future"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Name:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comments:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Move completed:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Stop seed at ratio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Remove at ratio"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Edit Trackers"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Top"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Bottom"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Add Torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Add In _Paused State"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritise First/Last Pieces"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Apply To All"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Revert To Defaults"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Show Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Download Speed Limit"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Upload Speed Limit"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Quit & Shutdown Daemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Edit Trackers"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Add Peer"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Add a peer by its IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Edit Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Enter Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Path:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Create Torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Fol_der"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Files"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseeds"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Piece Size:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Set Private Flag"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Add this torrent to the session"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Options"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Save .torrent as"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pause"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Resu_me"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Resume selected torrents."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opt_ions"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Queue"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Update Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Remove Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Force Re-check"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "label"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Select All"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pause All"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Resu_me All"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Connection Limit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Upload _Slot Limit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Auto Managed"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Add Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Add URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expand All"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent Client"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent Client"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Download and share files over BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Command"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Password"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "From"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "To"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Use Random Ports"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Inbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Outbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maximum Connections"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maximum Upload Slots"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximum Half-Open Connections"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maximum Connection Attempts per Second"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Rate Limit IP Overhead"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Share Ratio"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Type"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Apply"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP list (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blocklist"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Invalid leader"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Invalid magic code"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Invalid version"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Days"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Check for new list every:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Import blocklist on startup"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Settings</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Download the blocklist file if necessary and import the file."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Check Download and Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Download a new blocklist file and import it."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Force Download and Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blocklist is up to date"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Options</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Type:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Date:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "File Size:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent Complete"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent Added"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Execute"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Event"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Add Command</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Commands</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Watch folder does not exist."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Path does not exist."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Watch Folder Properties"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Select A Folder"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Enable this watch folder"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Watch Folder</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Delete .torrent after adding"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Append extension after adding:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent File Action</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Move Completed</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Label: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Label</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Main"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Max Upload Speed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Max Connections:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Max Upload Slots:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Max Download Speed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandwidth</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Auto Managed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Add Paused:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Queue to:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Queue</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Watch Folders:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "seconds"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Enable web interface"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Enable SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Listening port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Invalid label, valid characters:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Empty Label"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Label already exists"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Unknown Label"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Unknown Torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Label _Options"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Remove Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Add Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Label Options"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Label Options</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Apply per torrent max settings:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Apply Queue settings:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 line per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automatically apply label:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Add Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Add Label</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Labels</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Notification Blink shown"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Popup notification is not enabled."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Notification popup shown"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Sound notification not enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame is not installed"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Sound notification failed %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Sound notification Success"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Finished Torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Choose Sound File"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "There was an error sending the notification email: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Notification email sent."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Finished Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Tray icon blinks enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Popups enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sound enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI Notifications</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Recipients</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Server requires TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Email Notifications</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"This configuration does not mean that you will actually receive "
+"notifications for all these events."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Subscriptions"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Sound Customization"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extract to:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Create torrent name sub-folder"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Download Limit:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Upload Limit:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Active Torrents:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Active Downloading:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Active Seeding:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Slow Settings</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Logout"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Save"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Move"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Login"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Set Maximum Connections"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Download Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Set Maximum Download Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Upload Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Set Maximum Upload Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocol Traffic Download / Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Connect"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filters"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "D/L Speed Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "U/L Speed Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Connection Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Upload Slot Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Update Tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Force Recheck"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Details"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "General"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Private"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "True"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Be alerted about new releases"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximum Connections:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maximum Download Speed (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maximum Upload Speed (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximum Half-Open Connections:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maximum Connection Attempts per Second:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maximum Upload Slots:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Refresh"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "File"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Add In Paused State"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Download"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/en_GB.po b/deluge/i18n/en_GB.po
new file mode 100644
index 0000000..e31fc02
--- /dev/null
+++ b/deluge/i18n/en_GB.po
@@ -0,0 +1,6287 @@
+# English (United Kingdom) translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2023-09-19 08:11+0000\n"
+"Last-Translator: Andi Chandler <Unknown>\n"
+"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Common Options"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Print this help message"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Print version information"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Set the config directory path"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "Output to specified logfile instead of stdout"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "Set the log level (none, error, warning, info, debug)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "Quieten logging output (Same as `--loglevel none`)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "Process Control Options"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "Pidfile to store the process id"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr "Do not daemonise (fork) this process"
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "Change to this user on startup (Requires root)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "Change to this group on startup (Requires root)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Daemon Options"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "IP address to listen for UI connections"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Port to listen for UI connections on"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "IP address to listen for BitTorrent connections"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr "Config keys to be unmodified by `set_config` RPC"
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "All"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Active"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Allocating"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Checking"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Downloading"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Seeding"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Paused"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Queued"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Error"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Name"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progress"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "State"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Size"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Downloaded"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Uploaded"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Remaining"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Ratio"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Down Speed"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Up Speed"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Down Limit"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Up Limit"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Max Connections"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Max Upload Slots"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Seeds"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Avail"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Seeds:Peers"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Added"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Download Folder"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Seeding Time"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Active Time"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Last Activity"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Finished Time"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Complete Seen"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Completed"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Shared"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritise First/Last"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Sequential Download"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Auto Managed"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Stop At Ratio"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Stop Ratio"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Remove At Ratio"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Move On Completed"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Move Completed Path"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr "Move On Completed Path"
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Owner"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Pieces"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Seed Rank"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "Super Seeding"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Warning"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Announce OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Announce Sent"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Downloads"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandwidth"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Queue"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Network"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Other"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plug-ins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Skip"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Low"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normal"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "High"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Aland Islands"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "American Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarctica"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua and Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Belarus"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgium"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia and Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet Island"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "British Indian Ocean Territory"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodia"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameroon"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cape Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Cayman Islands"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Central African Republic"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Chad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Christmas Island"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Cocos (Keeling) Islands"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comoros"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Congo, The Democratic Republic of the"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook Islands"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Cote d'Ivoire"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cyprus"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Czech Republic"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Denmark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominican Republic"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Equatorial Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Ethiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkland Islands (Malvinas)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faroe Islands"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "France"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "French Guiana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "French Polynesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "French Southern Territories"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Germany"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Greece"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Greenland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard Island and McDonald Islands"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Holy See (Vatican City State)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungary"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Iceland"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Islamic Republic of"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraq"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ireland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isle of Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italy"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea, Democratic People's Republic of"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korea, Republic of"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Lao People's Democratic Republic"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Lebanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyan Arab Jamahiriya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lithuania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxembourg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonia, The Former Yugoslav Republic of"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldives"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshall Islands"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Micronesia, Federated States of"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Morocco"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Netherlands"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Netherlands Antilles"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "New Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "New Zealand"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolk Island"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Northern Mariana Islands"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norway"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinian Territory, Occupied"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua New Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Philippines"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Poland"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Russian Federation"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts and Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre and Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent and the Grenadines"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome and Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi Arabia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Solomon Islands"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "South Africa"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "South Georgia and the South Sandwich Islands"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spain"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard and Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Sweden"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Switzerland"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syrian Arab Republic"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Taiwan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, United Republic of"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad and Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkey"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks and Caicos Islands"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "United Arab Emirates"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "United Kingdom"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "United States"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "United States Minor Outlying Islands"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Viet Nam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Virgin Islands, British"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Virgin Islands, U.S."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis and Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Western Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "UI Options"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr "Set the default UI to be run, when no UI is specified"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+"Alternative UI to launch, with optional UI args \n"
+" (default UI: *)"
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Web Server Options"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "IP address for web server to listen on"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Port for web server to listen on"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr "Set the base path that the UI is running on"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Force the web server to use SSL"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Force the web server to disable SSL"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Daemon does not exist"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Daemon not running"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Filename"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Tier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Choose a file"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Cancel"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Open"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Choose a folder"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Save .torrent file"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "_Save"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent files"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "All files"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Enter your password to show Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Enter your password to Quit Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "D: {download_rate} U: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Edit path"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Remove path"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Apply to selected"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Copyright %(year_start)s-%(year_end)s Deluge Team"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"A peer-to-peer file sharing program\n"
+"utilising the BitTorrent protocol."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Client:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Current Developers:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Past Developers or Contributors:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Add Torrents (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "Duplicate torrent(s)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+"You cannot add the same torrent twice. %d torrents were already added."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Invalid File"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Please wait for files..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "Unable to download files for this magnet"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Choose a .torrent file"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "is not a valid URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Downloading..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Download Failed"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Failed to download:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_No"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Yes"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Close"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Details:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Authenticate"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "C_onnect"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Username:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Password:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Edit Account"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Edit existing account"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Apply"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "New Account"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Create a new account"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Add"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Authentication Level:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Password Protected"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_OK"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Other..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Not Connected"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Connections (Limit)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Download Speed (Limit)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Upload Speed (Limit)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr "Protocol Traffic (Down:Up)"
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Nodes"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Free Disk Space"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "External IP Address"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "n/a"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Port Issue</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "No incoming connections, check port forwarding"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Download Speed Limit"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Set the maximum download speed"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Upload Speed Limit"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Set the maximum upload speed"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Incoming Connections"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Set the maximum incoming connections"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent}%"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Never"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Yes"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "No"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priority"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_All"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Details"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_les"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Options"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Trackers"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Not Connected..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Unlimited"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Down"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Up"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop the local daemon and restart Deluge."
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "Continue in Thin Client mode?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Change User Interface Mode"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Offline"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Online"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Connected"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Version"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Start Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Stop Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Disconnect"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Unable to start daemon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr "Check deluged package is installed and logs for further details"
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Incompatible Client"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Failed To Connect"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Edit Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Error Adding Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "Error Updating Host"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Username"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Level"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Enabled"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plug-in"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Attention"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "You must choose a language"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr "You must now restart the Deluge UI for the changes to take effect."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "Thinclient"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Standalone"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr "Switching Deluge Client Mode..."
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "Do you want to restart to use %s mode?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Select the Plug-in"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plug-in Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Server Side Error"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "An error occurred on the server"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Error Adding Account"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Authentication failed"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "An error occurred while adding account"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Error Updating Account"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "An error occurred while updating account"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Remove Account"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Error Removing Account"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Auhentication failed"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "An error occurred while removing account"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "States"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackers"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "None"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Labels"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "No Label"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "No Owner"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Client Version</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents Queued"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent Queued"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr "Torrent is shared between other Deluge users or not."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Remove the selected torrents?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Total of %s torrents selected"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Set Unlimited"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "On"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Off"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Disable"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Enable..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "Peer Upload Slots"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Set the maximum upload slots"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Stop Seed At Ratio"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Ownership Change Error"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "There was an error while trying changing ownership."
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Address"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "GTK Options"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creating Torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Queued Torrents"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Add Queued Torrents"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Remove"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "_Clear"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automatically add torrents on connect"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_File"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Add Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Create Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Quit & _Shutdown Daemon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Quit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Edit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Preferences"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Connection Manager"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_View"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Toolbar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sidebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_bar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Columns"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Find ..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_idebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Show _Zero Hits"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Show _Trackers"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "Show _Owners"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Help"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Homepage"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Frequently Asked Questions"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Community"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_About"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Add torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Add Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Remove torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Remove Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Filter"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pause the selected torrents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pause"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Resume the selected torrents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Resume"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Queue Torrent Up"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Queue Up"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Queue Torrent Down"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Queue Down"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferences"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Connection Manager"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Close"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Filter:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Clear the search"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "_Match Case"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forced"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Disabled"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Handshake"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "Full Stream"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Either"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 Auth"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP Auth"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "The standalone self-contained application"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "Thin Client"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Connect to a Deluge daemon (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Application Mode"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Show session speed in titlebar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Focus window when adding torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "Show a pieces bar in Status tab"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Completed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Downloading:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Waiting:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Missing:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "_Revert"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Revert colour to default"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Piece Colours"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Main Window"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Enable system tray icon"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "App Indicator"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Systray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimise to tray on close"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Start in tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Password protect system tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "System Tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Notify about new releases"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Updates"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "System Default"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Language</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Move completed to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copy of .torrent files to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Delete copy of torrent file on remove"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Delete the copy of the torrent file created when the torrent is removed"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Download to:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Download Folders"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioritise first and last pieces of torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioritise first and last pieces of files in torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Sequential download"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Add torrents in Paused state"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Pre-allocate disk space"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Pre-allocate the disk space for the torrent files"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Add Torrent Options"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Always show"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Bring the dialogue to focus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Add Torrents Dialogue"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Connection Attempts per Second:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Half-Open Connections:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "The maximum number of connections allowed. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Connections:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "The maximum upload slots for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Upload Slots:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "The maximum download speed for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Download Speed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "The maximum upload speed for all torrents. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Upload Speed:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignore limits on local network"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Rate limit IP overhead"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Global Bandwidth Limits"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "The maximum upload slots per torrent. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"The maximum number of connections per torrent. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+"The maximum number download speed per torrent. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "The maximum upload speed per torrent. Set -1 for unlimited."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Per-Torrent Bandwidth Limits"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "Queue to top"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "New Torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Seeding:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Total:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Ignore slow torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+"Torrents not transferring any data do not count towards download/seeding "
+"active count."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Prefer seeding torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr "Give preference to seeding torrents over downloading torrents."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Active Torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Share Ratio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "Time Ratio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Time (m):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr "Seeding Rotation"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Pause Torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Share Ratio Reached"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"The IP address of the interface to listen for incoming BitTorrent "
+"connections. Leave this empty if you want to use the default."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Incoming Address"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Random"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Uses random ports in range 49152 to 65525"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Active Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Test Active Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Incoming Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Outgoing Interface"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "From:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "To:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Outgoing Ports"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Outgoing:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Incoming:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Level:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Encryption"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer Exchange"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr "Exchanges peers between clients. (Disabling requires restart)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery finds local peers on your network."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Distributed hash table may improve the amount of active connections."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Network Extras"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Hostname:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "Proxy Hostnames"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr "Proxy Peers"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr "Proxy peer and web seed connections."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "Proxy Trackers"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Force Proxy Use"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "Hide Client Identity"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Force Proxy"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Cache Size (16 KiB blocks):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache Expiry (seconds):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Settings"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocks Written:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"The total number of write operations performed since this session was "
+"started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Writes:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Write Cache Hit Ratio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Write"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocks Read:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "The number of blocks that were served from cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blocks Read Hit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "The cache hit ratio for the read cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Read Cache Hit Ratio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"The total number of read operations performed since this session was started."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Reads:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Read"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Cache Size:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Read Cache Size:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Refresh"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Yes, please send anonymous statistics"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "System Information"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Location:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "GeoIP Database"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Associate with Deluge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Magnet Links"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Allow Remote Connections"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Connections"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Periodically check the website for new releases"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Delete"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Accounts"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Version:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Author:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Author E-mail:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Install"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Find More..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Remove the selected torrent(s)?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Include downloaded files"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(This is permanent!)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Add Peer"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Properties"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr "Max drop down rows"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>General</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Show path entry"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Show file chooser"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Show folder name"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Path Chooser Type"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Enable autocomplete"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Show hidden files"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Set new key"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr "Press this key to set new key accelerators to trigger auto-complete"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Autocomplete"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Save path"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Toggle hidden files"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Default path"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Shortcuts"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Select a Directory"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Saved paths"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "column"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Cancel"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Open"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Add"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Add the current entry value to the list"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Edit"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Edit the selected entry"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Remove"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Remove the selected entry"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Move the selected entry up"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Move the selected entry down"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Default"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "No default path set"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Open properties dialogue"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Add Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "From Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackers:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Add Host"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "Move Download Folder"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "Move the torrent(s) download folder."
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destination:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "New Release"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Goto Website"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "New Release Available!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Available Version:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Server Version"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Current Version:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Do not show this dialogue in the future"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Down Speed:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Up Speed:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Downloaded:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Uploaded:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Seeds:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Peers:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Availability:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Seed Rank:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "ETA Time:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Last Transfer:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Active Time:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "Complete Seen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Seeding Time:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Pieces:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Name:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Download Folder:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Added:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Total Size:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Total Files:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Hash:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Created By:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comments:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Owner:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Move completed:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Stop seed at ratio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Remove at ratio"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Bandwidth Limits"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Current Tracker:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Total Trackers:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Tracker Status:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Next Announce:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Private Torrent:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Edit Trackers"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Top"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Bottom"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Add Torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "Move Complete Folder"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Add In _Paused State"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritise First/Last Pieces"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Skip File Hash Check"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Preallocate Disk Space"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Preallocate the disk space for the torrent files"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "Maximum torrent download speed"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Maximum torrent upload speed"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Maximum torrent connections"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr "Maximum torrent upload slots"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Apply To All"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Revert To Defaults"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Show Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "_Pause Session"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "_Resume Session"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Download Speed Limit"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Upload Speed Limit"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Quit & Shutdown Daemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Edit Trackers"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "_Up"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "_Down"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Add Peer"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Add a peer by its IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Edit Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Enter Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Path:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Create Torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Fol_der"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Files"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseeds"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Piece Size:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Set Private Flag"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Add this torrent to the session"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Options"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Save .torrent as"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Open Download Folder"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pause"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Resu_me"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Resume selected torrents."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opt_ions"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Queue"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Update Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Remove Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Force Re-check"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "_Move Download Folder"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "label"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Select All"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pause All"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Resu_me All"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Connection Limit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Upload _Slot Limit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "Stop seed at _ratio"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Auto Managed"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr "_Super Seeding"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "_Change Ownership"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Add Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Add Trackers"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Add URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "From URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Deluge Daemons"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Auto-connect to selected Daemon"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "Auto-start localhost daemon (if required)"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Hide this dialogue"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Startup Options"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Open File"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "_Show Folder"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expand All"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "_Skip"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Low"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Normal"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_High"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Deluge Team"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent Client"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent Client"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Download and share files over BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Console Options"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+"These daemon connect options will be used for commands, or if console UI "
+"auto-connect is enabled."
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr "Deluge daemon IP address to connect to (default 127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr "Deluge daemon port to connect to (default 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "Deluge daemon username to use when connecting"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "Deluge daemon password to use when connecting"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Console Commands"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Description"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "The following console commands are available:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Command"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr "`%s` alias"
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr "an expression matched against torrent ids and torrent names"
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "set value for this key"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Value to set"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "one or more keys separated by space"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Also removes the torrent data"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "List the matching torrents without removing."
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "One or more torrent IDs"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr "Confirm with -c to remove the listed torrents (Count: %d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr "One or more torrent IDs. Use \"*\" to resume all torrents"
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr "One or more torrent IDs. Use \"*\" to pause all torrents"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Download folder for torrent"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Move the completed torrent to this folder"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "One or more torrent files, URLs or magnet URIs"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Lists available plugins"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Shows enabled plugins"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Enables a plugin"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Disables a plugin"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "Reload list of available plugins"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Install a plugin from an .egg file"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Do not show torrent status (Improves command speed)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr "Usage: connect <host[:port]> [<username>] [<password>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "Daemon host and port"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Password"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "The path to move the torrents to"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "The new state"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "One or more commands"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Show more information per torrent."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "Show more detailed information including files and peers."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr "Show torrents with state STATE: %s."
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "Same as --sort but items are in reverse order."
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr "One or more Torrent IDs. If none is given, list all"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Select Host"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Quit"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Delete Host"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "Error adding host"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Columns"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Width"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "General options"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "Ring system bell when a download finishes"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr "List complete torrents after incomplete regardless of sorting order"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr "Move selection when moving torrents in the queue"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Language"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Command Line Mode"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "Do not store duplicate input in history"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr "Store and load command line history in command line mode"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr "Third tab lists all remaining Torrents in command line mode"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr "Torrents per tab press"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Folders"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Download To"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Move completed to"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr "Copy of .torrent files to"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "Add Paused"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Pre-Allocate disk space"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Incomming Ports"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "From"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "To"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Use Random Ports"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Incoming Interface"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr "IP address of the interface to listen on (leave empty for default):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Inbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Outbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Global Bandwidth Usage"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maximum Connections"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maximum Upload Slots"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Maximum Download Speed (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Maximum Upload Speed (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximum Half-Open Connections"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maximum Connection Attempts per Second"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Rate Limit IP Overhead"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Per Torrent Bandwidth Usage"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Yes, please send anonymous statistics."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Daemon Port"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Allow remote connections"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Share Ratio"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Time Ratio"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Time (m)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr "Remove torrent (Unchecked pauses torrent)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Proxy Settings"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Type"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Hostname"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr "Proxy Type Help"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Cache Size (16 KiB blocks)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr "Cache Expiry (seconds)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Blocks Written"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "Writes"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr "Write Cache Hit Ratio"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Blocks Read"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr "Blocks Read hit"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Apply"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP list (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blocklist"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Invalid leader"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Invalid magic code"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Invalid version"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Days"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Check for new list every:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Import blocklist on startup"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Settings</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Download the blocklist file if necessary and import the file."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Check Download and Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "download a new blocklist file and import it."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Force Download and Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blocklist is up to date"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Options</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Type:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Date:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "File Size:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent Complete"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent Added"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent Removed"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Execute"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Event"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Add Command</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Commands</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "AutoAdd"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Watch folder does not exist."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Path does not exist."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Watch Folder Properties"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Select A Folder"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Enable this watch folder"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Watch Folder</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Delete .torrent after adding"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Append extension after adding:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent File Action</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Move Completed</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Label: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Label</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Main"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Max Upload Speed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Max Connections:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Max Upload Slots:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Max Download Speed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandwidth</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Auto Managed:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Add Paused:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Queue to:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Queue</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Watch Folders:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "seconds"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebUi"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Enable web interface"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Enable SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Listening port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Invalid label, valid characters:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Empty Label"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Label already exists"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Unknown Label"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Unknown Torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Label _Options"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Remove Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Add Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Label Options"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Label Options</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Apply per torrent max settings:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Apply queue settings:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 line per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automatically apply label:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Add Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Add Label</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Labels</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Notification Blink shown"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Popup notification is not enabled."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Notification popup shown"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Sound notification not enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame is not installed"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Sound notification failed %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Sound notification success"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Finished Torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Notifications"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Choose Sound File"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "There was an error sending the notification e-mail: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Notification e-mail sent."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Finished Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"This e-mail is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off e-mail notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Tray icon blinks enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Popups enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sound enabled"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI Notifications</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Recipients</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Server requires TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-mail Notifications</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Subscriptions"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Sound Customisation"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Extractor"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extract to:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Create torrent name sub-folder"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Scheduler"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Download Limit:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Upload Limit:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Active Torrents:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Active Downloading:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Active Seeding:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Slow Settings</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Logout"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Save"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Move"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Login"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Set Maximum Connections"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Download Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Set Maximum Download Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Upload Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Set Maximum Upload Speed"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocol Traffic Download/Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Connect"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filters"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "D/L Speed Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "U/L Speed Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Connection Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Upload Slot Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Update Tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Force Recheck"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Details"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "General"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Private"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "True"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Be alerted about new releases"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximum Connections:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maximum Download Speed (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maximum Upload Speed (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximum Half-Open Connections:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maximum Connection Attempts per Second:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maximum Upload Slots:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Refresh"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "File"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Add In Paused State"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Download"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/eo.po b/deluge/i18n/eo.po
new file mode 100644
index 0000000..ac3a7b3
--- /dev/null
+++ b/deluge/i18n/eo.po
@@ -0,0 +1,6164 @@
+# Esperanto translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Esperanto <eo@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Grando"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Elŝutrapido"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Alŝutrapido"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Samtavolanoj"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Elŝutoj"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Atendovico"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Reto"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Kromprogramoj"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detaloj"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Malsupren"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Supren"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Dosiero"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Aldoni torenton"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Redakti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torento"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Vidi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Ilobreto"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolumnoj"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Helpo"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Aldoni torenton"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Forigi torenton"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Paŭzigi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Reaktivigi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Supren en la atendovico"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Malsupren en la atendovico"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Agordoj"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Provu elŝuti la unuan kaj lastan pecojn unue"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Konektoj:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiva pordo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Provi aktivan pordon"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "De:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Al:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivelo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Konektado de samtavolanoj"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Ĝenerale</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Aldoni"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Forigi"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nomo:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "Adreso (URL):"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Tagoj"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Agordoj</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opcioj</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Dato:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Dosiergrando:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Elekti dosierujon"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Mark-agordoj"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Mark-agordoj</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimume"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Aldoni etikedon"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Aldoni etikedon</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etikedoj</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detaloj"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/es.po b/deluge/i18n/es.po
new file mode 100644
index 0000000..194249d
--- /dev/null
+++ b/deluge/i18n/es.po
@@ -0,0 +1,6240 @@
+# Spanish translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-10-11 17:47+0000\n"
+"Last-Translator: Fco. Javier Serrador <Unknown>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "k"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Opciones comunes"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Mostrar este mensaje de ayuda"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Mostrar información de la versión"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "Dirección IP que supervisar en busca de conexiones de IU"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Puerto que supervisar en busca de conexiones de IU"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "Dirección IP que supervisar en busca de conexiones BitTorrent"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Todos"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Activo(s)"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Comprobando"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Descargando"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Compartiendo"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pausado"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "En cola"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Error"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nombre"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progreso"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Estado"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Tamaño"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Descargado"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Subido"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Proporción"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "V.Descarga"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "V.Subida"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Límite de bajada"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Límite de subida"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Pares"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Disp"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Agregado"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Rastreador"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "T.Est."
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Priorizar primero/último"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Autogestionado"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Propietario"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Fragmentos"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Aviso"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Anuncio correcto"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anuncio enviado"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfaz"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Descargas"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Ancho de banda"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Cola"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Red"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Antememoria"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Otro"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Demonio"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Complementos"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normal"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistán"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Islas de Åland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Argelia"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Americana"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguila"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antártida"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua y Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaiyán"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Baréin"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladés"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bielorrusia"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Bélgica"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belice"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benín"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudas"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bután"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia y Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botsuana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Isla Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Territorio Británico del Océano Índico"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunéi"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Camboya"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Camerún"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canadá"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cabo Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Islas Caimán"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "República Centroafricana"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Chad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Isla de Navidad"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Islas de Cocos (Keeling)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comores"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Congo, República Democrática del"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Islas Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Costa de Marfil"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croacia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Chipre"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Chequia"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dinamarca"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Yibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "República Dominicana"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipto"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Guinea Ecuatorial"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopía"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Islas Malvinas (Falkland)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Islas Feroe"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiyi"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlandia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francia"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Guayana Francesa"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinesia francesa"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Territorios franceses del sur"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabón"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Alemania"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grecia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenlandia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Granada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bisáu"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haití"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Islas Heard y McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Santa Sede (Ciudad del Vaticano)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungría"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islandia"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Irán, República Islámica de"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isla de Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japón"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazajistán"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Corea, República Democrática Popular de"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Corea, República de"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirguistán"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos, República Democrática Popular de"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letonia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Líbano"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburgo"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonia, Antigua República Yugoslava de"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malaui"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malasia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivas"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Malí"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Islas Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinica"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauricio"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "México"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Micronesia, Estados Federados de"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Mónaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marruecos"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Birmania"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Naurú"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Países Bajos"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antillas holandesas"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nueva Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nueva Zelanda"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Níger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niué"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Islas Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Islas Marianas del Norte"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Noruega"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omán"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistán"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Paláu"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestina, Territorio ocupado de"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panamá"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papúa Nueva Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Perú"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipinas"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polonia"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Catar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunión"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Federación Rusa"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "San Bartolomé"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Santa Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "San Cristóbal y Nieves"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Santa Lucía"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "San Martín"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "San Pedro y Miquelón"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "San Vicente y las Granadinas"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Santo Tomé y Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arabia Saudita"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leona"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Eslovaquia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Eslovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Islas Salomón"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Sudáfrica"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Islas Georgia del Sur y Sandwich del sur"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "España"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudán"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard y Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Suazilandia"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suecia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Suiza"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Siria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Taiwán"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tayikistán"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, República Unificada de"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tailandia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor Oriental"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad y Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Túnez"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turquía"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistán"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Islas Turcas y Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ucrania"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Emiratos Árabes Unidos"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Reino Unido"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Estados Unidos"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Islas Periféricas Menores de Estados Unidos"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistán"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Islas Vírgenes Británicas"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Islas Vírgenes, EE.UU."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis y Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Sáhara Occidental"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "El demonio no está funcionando"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nombre de archivo"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Parte"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Elija un archivo"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Elija una carpeta"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Guardar archivo .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Archivos torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Todos los archivos"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Proporcione su contraseña para mostrar Deluge…"
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Proporcione su contraseña para salir de Deluge…"
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Derechos de autor %(year_start)s-%(year_end)s Equipo de Deluge"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Programa peer-to-peer para compartir archivos\n"
+"utilizando el protocolo BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Cliente:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Desarrolladores actuales:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Desarrolladores y Contribuidores Pasados:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Este programa es software libre: usted puede redistribuirlo y/o modificarlo "
+"conforme a los términos de la Licencia Pública General de GNU publicada por "
+"la Fundación para el Software Libre, ya sea la versión 3 de esta Licencia o "
+"(a su elección) cualquier versión posterior.\n"
+"\n"
+"Este programa se distribuye con el deseo de que le resulte útil, pero SIN "
+"GARANTÍAS DE NINGÚN TIPO; ni siquiera con las garantías implícitas de "
+"COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO DETERMINADO. Para más "
+"información, consulte la Licencia Pública General de GNU.\n"
+"\n"
+"Junto con este programa, se debería incluir una copia de la Licencia Pública "
+"General de GNU. De no ser así, visite <http://www.gnu.org/licenses/>.\n"
+"\n"
+"Adicionalmente, como excepción especial, los poseedores del copyright "
+"otorgan permiso para enlazar el código de porciones de este programa con la "
+"biblioteca OpenSSL. Usted debe obedecer la Licencia Pública General de GNU "
+"en todo lo que respecta al código que no sea de OpenSSL.\n"
+"\n"
+"Si modifica archivo(s) con esta excepción, puede que quiera extender esta "
+"excepción a su propia versión de los archivos, pero no está obligado a "
+"hacerlo. Si no desea hacerlo, borre esta excepción de su versión de la "
+"licencia. Si borra esta excepción de todos los archivos fuentes de su "
+"programa, entonces también puede borrarla de aquí."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Servidor:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Archivo no válido"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Elija un archivo .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL no válida"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "No es una dirección URL válida"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Descargando..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "La descarga falló"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Falló al descargar:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detalles:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nombre de usuario:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Protegido por contraseña"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Otros..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "No conectado"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nodos DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Espacio libre en disco"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Sí"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "No"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioridad"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Todo"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Estado"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalles"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Archivos"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Pares"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opciones"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "No conectado..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Ilimitada"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Bajada"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Subida"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Desconectado"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "En línea"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Conectado"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Estado"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Servidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versión"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Iniciar _Demonio"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Detener demonio"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "No es posible iniciar demonio!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Error añadiendo servidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Usuario"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivel"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Activado"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Complemento"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Seleccione el complemento"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Complementos Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Estados"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Rastreadores"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ninguno"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administrador"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiquetas"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Sin etiqueta"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Versión del cliente</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents en cola"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrents en cola"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Definir ilimitado"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Activado"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Desactivado"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Deshabilitar"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Dirección"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Cliente"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creando torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents en cola"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Eliminar"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Añadir torrents automáticamente al conectarse"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Archivo"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Añadir torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Crear torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "_Salir y detener demonio"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Salir"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Editar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Asistente de conexión"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Ver"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Barra de _herramientas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Barra lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Barra de estado"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Pest_añas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "Co_lumnas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Barra lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Mostrar _Zero visitas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Mostrar ras_treadores"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "Ay_uda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Página de inicio"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "Preguntas _Frecuentes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Preguntas frecuentes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Comunidad"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Añadir torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Añadir Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Eliminar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Eliminar el torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pausar los torrents seleccionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Reanudar los torrents seleccionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Reanudar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Subir torrent en la cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Subir en la cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Bajar torrent en la cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Bajar en la cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Asistente de conexión"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forzado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Desactivado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Negociado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Cualquiera"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Mostrar velocidad en la barra de título"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Ventana principal"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Habilitar icono en el área de notificación"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "Indicador de aplicación"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimizar al área de notificación al cerrar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Abrir minimizado en el área de notificación"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Proteger con contraseña el área de notificación"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Mover completados a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copiar archivos .torrent a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Eliminar copia del archivo torrent al eliminar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Eliminar copia del archivo torrent cuando el archivo torrent sea borrado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Descargar a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Priorizar primero y último fragmento del torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Priorizar primero y último fragmento de los archivos del torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Añadir torrents en estado pausado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Mostrar siempre"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Enfocar el diálogo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Número máximo de conexiones permitidas. Use -1 para ilimitadas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Conexiones:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"La cantidad máxima de puertos para todos los torrents. Use -1 para ilimitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Velocidad máxima de descarga para todos los torrents. Use -1 para ilimitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocidad de descarga:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Velocidad máxima de subida para todos los torrents. Use -1 para ilimitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocidad de carga:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorar límites en la red local"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Tasa límite de sobrecarga de IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Si está marcado, el límite de sobrecarga TCP/IP estimado se ajustará a los "
+"límites de la Tasa, para evitar que los límites excedan el total del tráfico."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"La cantidad máxima de puertos de subida por torrent. Use -1 para ilimitados."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "El número máximo de conexiones por torrent. Use -1 para ilimitadas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Aleatorio"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Puerto activo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Comprobar puerto activo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Desde:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Hasta:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivel:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Cifrado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocolo de asiganción de puerto NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Intercambio entre pares"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery encuentra pares locales en su red."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Una tabla hash distribuída puede mejorar la cantidad de conexiones activas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Byte TOS del compartidor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nombre del equipo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Puerto:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Tamaño del caché (bloques de 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"El número de segundos desde la última escritura cacheada en la caché de "
+"escritura hasta el momento en el que se fuerza su escritura en disco. Por "
+"defecto es 60 segundos."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Expiración del caché (segundos):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Configuración"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"El número total de bloques de 16KBs escritos en el disco desde el inicio de "
+"ésta sesión."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Bloques escritos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"El número total de operaciones de escritura ejecutadas desde el inicio de "
+"ésta sesión."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Escrituras:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"La media (bloques_escritos - escrituras) bloques_escritos representa el "
+"número de operaciones de escritura guardadas por el número total de "
+"operaciones de escritura, esto es, un tipo de media de arciertos de caché "
+"para la caché de escritura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Nivel de aciertos de escritura en caché:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"El número de bloques solicitados desde el motor BitTorrent (desde los "
+"pares), que fueron entregados desde el disco o la caché."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Bloques leidos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "El número de bloques que fueron servidos de la caché."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Acierto en lecturas de bloques:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "El nivel de aciertos para las lecturas de la caché."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Nivel de aciertos de las lecturas de la caché."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"El número total de operaciones de lectura ejecutadas desde el inicio de ésta "
+"sesión."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lecturas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"El número total de bloques de 16 KBs actualmente en la caché del disco. Esto "
+"incluye la caché de lectura y escritura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Tamaño del caché:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Tamaño del caché de lectura:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Ayúdenos a mejorar Deluge enviándonos su versión de Python, versión de "
+"PyGTK, Sistema Operativo y tipo de procesador. Absolutamente ninguna otra "
+"información es enviada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Si, enviar estadísticas anónimas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Ubicación:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Si Deluge no puede encontrar el archivo de base de datos en ésta ubicación, "
+"se recurriría al uso de DNS para resolver el país del ''peer''."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Puerto del demonio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Puerto"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Permitir conexiones remotas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Conexiones"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Revisar periódicamente el sitio web para nuevas versiones"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versión:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Página principal:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Correo electrónico del autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Añadir compartidor"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "nombre de máquina:puerto"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>General</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Añadir"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Eliminar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Añadir Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Rastreadores:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Agregar equipo"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destino:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nueva versión"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Ir al sitio web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Versión disponible:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Versión del servidor"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Versión actual:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "No mostrar este diálogo en el futuro"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nombre:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comentarios:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Mover completados:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Detener compartición en proporción:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Eliminar en proporción"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Editar rastreadores"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Arriba"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Abajo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Añadir torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Añadir en estado de _pausa"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Priorizar primeros/últimos fragmentos"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Aplicar a todos"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Revertir a predeterminados"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Mo_strar Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Límite de velocidad de descarga"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Límite de velocidad de subida"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Salir y apagar demonio"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Editar rastreadores"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Agregar Par"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Añadir par por su IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Editar rastreador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Rastreador:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Introduzca la ruta remota:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Ruta:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Crear torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Car_peta"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Ruta remota"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Archivos"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Comparticiones web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Tamaño de la parte:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Definir marca privada"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Añadir este torrent a la sesión"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opciones"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Guardar .torrent como"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pausar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Reanudar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Reanudar torrents seleccionados."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opc_iones"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Cola"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Act_ualizar el rastreador"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Elimina_r torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Forzar verificación"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiqueta"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Seleccionar todo"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pausar todo"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Rea_nudar todo"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Límite de _conexión"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Límite de puertos de _subida"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Autogestionado"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Añadir rastreador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Añadir URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expandir todo"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Cliente de BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Cliente BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Descargue y comparta archivos mediante BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Orden"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Contraseña"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Carpetas"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "De"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Hacia"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Utilizar puertos aleatorios"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Entrante"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Saliente"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Conexiones máximas"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Puertos máximos de subida"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Conexiones parcialmente abiertas máximas"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Máximos intentos de conexión por segundo"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Límite de Tasa de sobrecarga IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Proporción de compartición"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tipo"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Aplicar"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "La dirección IP «%s» tiene un formato incorrecto"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Lista IP de emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Archivo de texto de SafePeer (comprimido en zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Archivo de texto de PeerGuardian (descomprimido)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Lista de bloqueos"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Líder no válido"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Código mágico no válido"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versión no válida"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Días"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Comprobar listas nuevas cada:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importar lista de bloqueos al iniciar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Configuración</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Descargar el archivo de lista de bloqueos si es necesario e importar el "
+"archivo."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Verificar descarga e importarlo"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Descargar un nuevo archivo de lista de bloqueo e importarlo."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forzar descarga e importación"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "La lista de bloqueos está actualizada"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opciones</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipo:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Fecha:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Tamaño del archivo:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Información</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Lista blanca</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent completo"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent añadido"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Ejecutar"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Suceso"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Añadir orden</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Órdenes</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Opción incompatible"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Ruta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "La carpeta a vigilar no existe."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "La ruta no existe."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Propiedades de carpeta vigilada"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Si un archivo .torrent se añade a este directorio,\n"
+"se añadirá a la sesión."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Seleccionar una carpeta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Habilitar la vigilancia en esta carpeta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Carpeta vigilada</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Borrar archivo .torrent después de agregar"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Una vez que se añada el torrent a la sesión,\n"
+"se eliminará el archivo .torrent."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Agregar extensión después de agregar:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Acción de Archivo Torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Establecer carpeta de descargas"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "En esta carpeta se descargarán los datos del torrent."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Carpeta de descargas</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Mover descargas completas</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiqueta: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiqueta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Principal"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Propietario</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Velocidad de subida máxima:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Conexiones máximas:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Puertos de subida máximos:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Velocidad de descarga máxima:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Ancho de banda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Auto Administrado:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Añadir en pausa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Encolar en:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Cola</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Carpetas vigiladas:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "minutos"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 minuto"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 segundo"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "segundos"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Estadísticas"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Resolución"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Color de descarga:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Color de carga:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Gráfico de conexiones</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "Nodos DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Nodos DHT en antememoria:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "Torrents DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Colores de gráfico</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"No se ha instalado la interfaz web de Deluge.\n"
+"Instálela y vuelva a intentar la acción."
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Activar interfaz web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Activar SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Puerto que supervisar:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etiqueta inválida, caracteres válidos: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etiqueta vacía"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "La etiqueta ya existe"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etiqueta desconocida"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent desconocido"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opciones de etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Quita_r etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Añadir etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opciones de etiquetas"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opciones de etiquetas</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Aplicar preferencias máximas por torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Máximo"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Aplicar preferencias de cola:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 línea por rastreador)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aplicar automáticamente la etiqueta:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Añadir etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Añadir etiqueta</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Use la barra lateral para añadir, editar y eliminar etiquetas. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiquetas</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Mostrando notificación de parpadeo"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Las notificaciones emergentes no están habilitadas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Mostrando notificación emergente"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Notificación sonora no habilitada"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame no está instalado"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Notificación sonora falló %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Notificación sonora exitosa"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent finalizado"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Ha terminado la descarga del torrent «%(name)s», con %(num_files)i archivos."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Notificaciones"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Seleccione un archivo de sonido"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Hubo un error al enviar la notificación por email: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "El servidor no respondió correctamente al saludo HELO: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "El servidor rechazó la combinación usuario/contraseña: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Se ha enviado una notificación por correo."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent \"%(name)s\" finalizado"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Este mensaje es para informarle que Deluge ha terminado de descargar "
+"«%(name)s», que incluye %(num_files)i archivos.\n"
+"Para dejar de recibir estas alertas, basta con desactivarlas en las "
+"preferencias de Deluge.\n"
+"\n"
+"Atentamente,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Habilitado el destello de íconos de la bandeja"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Ventanas emergentes activadas"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sonido activado"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Notificaciones de IU</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Destinatarios</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "El servidor requiere TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Notificaciones por correo</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Esta configuración no significa que realmente recibirá notificaciones para "
+"todos estos eventos."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Suscripciones"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Personalización de sonido"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Extractor"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extraer en:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Crear subcarpeta con el nombre del torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Esta opción creará una subcarpeta con el nombre del torrent dentro de la "
+"carpeta de extracción seleccionada y pondrá los archivos extraídos allí."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Planificador"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Límite de descarga:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Límite de carga:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrents activos:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Descargas activas:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Sembrando:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Configuración lenta</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Cerrar sesión"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Guardar"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Anfitrión:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Mover"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Iniciar sesión"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Definir n.º máximo de conexiones"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Velocidad de descarga"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Establecer Máxima Velocidad de Descarga"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Velocidad de subida"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Establecer Máxima Velocidad de Subida"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocolo de Intercambio de Descarga/Subida"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Conectar"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtros"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Velocidad límite de descarga"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Velocidad límite de subida"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Límite de Conexiones"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Límite Máximo de Puestos de Subida"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Actualizar tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Forzar Nuevo Chequeo"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detalles"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "General"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privado"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Verdadero"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Ser notificado de nuevas versiones"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Conexiones máximas:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Velocidad máxima de descarga (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Velocidad máxima de subida (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Conexiones parcialmente abiertas máximas:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Intentos de conexión por segundo máximos:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Puertos de subida máximos:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Servidor"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Actualizar"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Archivo"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Se está cargando el torrent…"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "El torrent no es válido"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Añadir en estado de pausa"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Descargar"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "Tiempo estimado:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/et.po b/deluge/i18n/et.po
new file mode 100644
index 0000000..556f699
--- /dev/null
+++ b/deluge/i18n/et.po
@@ -0,0 +1,6187 @@
+# Estonian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Estonian <et@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Kõik"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktiivne"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Kontrollin"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Allalaadimine"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Jagamine"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pausitud"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Järjekorras"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Viga"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nimi"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progress"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Olek"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Suurus"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Alla laetud"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Üles laetud"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Suhe"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Alla kiirus"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Üles kiirus"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Masinad"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Saadavus"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Lisatud"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Jälgija"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "EETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Tähtsusta esimene/viimane"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automaatselt hallatud"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Tükke"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Hoiatus"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Teadaanne korras"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Teadanne saadetud"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Liides"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Allalaadimised"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Ülekandekiirus"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Järjekord"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Võrk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proksi"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Puhver"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Muu"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Deemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Pluginad"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Alandi saared"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albaania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Alžeeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Ameerika Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktika"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua ja Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentiina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armeenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Austraalia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Aserbaidžaan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahama"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrein"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Valgevene"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgia"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Boliivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia ja Hertsegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet' saar"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasiilia"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Briti India ookeani ala"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Roheneemesaared"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kaimanisaared"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Kesk-Aafrika Vabariik"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tšaad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Tšiili"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Hiina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Jõulusaar"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kookossaared"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komoorid"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo DV"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cooki saared"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Elevandiluurannik"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Horvaatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Küpros"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tšehhi Vabariik"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Taani"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikaani Vabariik"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egiptus"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvatoriaal-Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Eesti"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etioopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandi saared (Malviinid)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Fääri saared"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidži"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Soome"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Prantsusmaa"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Prantsuse Guajaana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Prantsuse Polüneesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Prantsuse Lõunaalad"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gruusia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Saksamaa"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Kreeka"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Gröönimaa"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard'i ja McDonald'i saared"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Püha Tool (Vatikan)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hongkong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungari"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indoneesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iraan"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Iirimaa"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Mani saar"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Iisrael"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Itaalia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Jaapan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordaania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kasahstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Põhja-Korea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Lõuna-Korea (Korea Vabariik)"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuveit"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kõrgõzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Läti"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Liibanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libeeria"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Liibüa"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Leedu"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luksemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macau"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedoonia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaisia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldiivid"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshalli saared"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritaania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mehhiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikroneesia Liiduriigid"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongoolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mosambiik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Birma"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namiibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Holland"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Hollandi Antillid"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Uus-Kaledoonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Uus-Meremaa"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolki saar"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Põhja-Mariaani saared"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norra"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omaan"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Belau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestiina okupeeritud ala"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Paapua Uus-Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peruu"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipiinid"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Poola"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumeenia"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Venemaa"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts ja Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint-Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre ja Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent ja Grenadiinid"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé ja Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi Araabia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seišellid"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakkia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Sloveenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Saalomoni saared"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somaalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Lõuna-Aafrika Vabariik"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Lõuna-Georgia ja Lõuna-Sandwichi saared"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Hispaania"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudaan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard ja Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Svaasimaa"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Rootsi"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Šveits"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Süüria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadžikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tansaania Ühendvabariik"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tai"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Ida-Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad ja Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tuneesia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Türgi"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Türkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks ja Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Araabia Ühendemiraadid"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Suurbritannia"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Ameerika Ühendriigid"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Ühendriikide hajasaared"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguai"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Usbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Briti Neitsisaared"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "USA Neitsisaared"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis ja Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Lääne-Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jeemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Sambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Deemon ei tööta"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Failinimi"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Järk"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Vali fail"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Kataloogi valimine"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Salvesta .torrent fail"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent failid"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Kõik failid"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klient:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Vigane fail"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Vali .torrent fail"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Vigane URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Allalaadimine..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Allalaadimine ebaõnnestus"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detailid:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Kasutajanimi:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Parool:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Muu..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Pole ühendatud"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT sõlmed"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Vaba kettaruum"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Jah"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Ei"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Tähtus"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Olek"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detailid"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fai_lid"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Masinad"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Valikud"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Pole ühendatud..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Piiramatu"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Alla"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Üles"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Võrguühenduseta"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Võrgus"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Ühendatud"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Olek"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versioon:"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Viga hosti lisamisel"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Kasutajanimi"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Tase"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Lubatud"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Vali plugin"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Eggs lisandprogramm"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Olekud"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Jälgijad"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Pole"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Pealdised"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Sildita"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " torrentit järjekorras"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " torrent järjekorras"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Piiramatu"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Sees"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Väljas"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Keela"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Aadress"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klient"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Torrenti loomine"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Järjekorras torrentid"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Eemalda"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Ühendamisel lisatakse torrentid automaatselt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fail"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Lisa torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Loo torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Sulge"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Redigeerimine"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Ühenduse haldur"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Vaade"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Tööriistariba"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Külgriba"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Olekuri_ba"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abid"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Veerud"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Külgriba"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Näita _null-staatuseid"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Näi_ta jälgijaid"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Abi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Kodulehekülg"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_KKK"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Korduma Kippuvad Küsimused"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Lisa torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Lisa torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Eemalda torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Eemalda torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Peata valitud torrentid"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Peata"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Jätka valitud torrenteid"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Jätka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Järjekorrasta torrent üles"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Liiguta üles"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Järjekorrasta torrent alla"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Liiguta alla"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Eelistused"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Ühenduse haldur"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Sunnitud"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Väljas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Käepigistus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "kumbki"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Näita sesiooni kiirust tiitelribal"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Luba süsteemse salve ikoon"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Sulgemisel minimeeri salve"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Alusta salves"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Parooliga kaitstud süsteemisalv"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Liiguta lõpetatud torrentid kausta:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ".torrent failid kopeeritakse:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Kustuta torrent faili koopia eemaldamisel"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Allalaadimise asukoht:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Torrenti esimesed ja viimased tükid eelisõigusega"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioritiseeri torrenti esimeste ja viimaste failide tükid"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Lisa torrentid peatatuna"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Näita alati"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Dialoog tuuakse esile"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Maksimaalselt lubatud ühenduste arv. Määra -1 piiramatu puhul."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Ühendused:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksimaalselt üleslaadimise pesi kõigile torrentitele. Määra -1 piiramatu "
+"puhul."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksimaalne allalaadimiskiirus kõigile torrentitele. Määra -1 piiramatu "
+"puhul."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Kiirus Alla:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksimaalne üleslaadimiskiirus kõigile torrentitele. Määra -1 piiramatu "
+"puhul."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Kiirus Üles:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Piirangute eiramine kohtvõrgus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Kui see on lubatud, ligikaudne TCP / IP üldkulu lubatud kiiruse piirajaid, "
+"et vältida koguliikluse ületamist"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Maksimaalselt üleslaadimiste pesi igale torrenti kohta. PiiramMäära -1 "
+"piiramatu puhul."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Maksimaalne ühenduste arv iga torrenti kohta. Määra -1 piiramatu puhul."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Segamini"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiivne port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testi aktiivset porti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Alates:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Kuni:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Tase:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Krüptimine"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universaalne isehäälestumine"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT pordi vastendus protokoll"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Lähtemasina vahetus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery otsib masinaid kohalikust võrgust."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Hajusräsitabel võib parandada aktiivsete ühenduste arvu."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Masina TOS-bait:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Hostinimi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Puhvri suurus (16 KiB blokid):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Puhvri aegumine (sekundit):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Seaded"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "16 kB blokkide koguarv, kettale salvestamise algusest"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blokke kirjutatud:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Kirjutamiste arv kokku alates sessiooni algusest."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Kirjutamisi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Bittorrenti mootori (masinate) poolt küsitud blokkide arv, mis serveeriti "
+"kettalt või puhvrist."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blokke loetud:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Puhvrist serveeritud blokkide arv."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Lugemiste arv kokku alates sessiooni algusest."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lugemisi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"16 KiB blokkide hetkearv puhvris. Kaasab mõlemaid, lugemise ja kirjutamise "
+"puhvreid."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Puhvri suurus:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Loetud puhvri suurus:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Aita kaasa Deluge täiustamisele ja saada oma Pythoni ja PyGTK versioonid "
+"ning operatsioonisüsteemi ja protsessori tüübid. Absoluutselt muud "
+"informatsiooni ei saadeta."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Jah, palun saada anonüümne statistika"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Asukoht:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Kui asukohta Deluge andmebaasist ei leita, kasutatakse masina riigi "
+"määramiseks DNS-i."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Deemoni port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Kaugühendused lubatud"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Ühendusi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Veebilehelt kontrollitakse perioodiliselt uusi väljalaskeid"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versioon:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Koduleht:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Autori e-post:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Lisa masin"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "masinanimi:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Üldine</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Katkesta"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Lisa"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Eemalda"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Lisa Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Jälgijad:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Lisa server"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Sihtkoht:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Uus väljalase"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Mine veebilehele"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Ära näitta tulevikus seda dialoogi"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nimi:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Kommentaarid:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Liiguta lõpetatud:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Peata jagmine alates suhtest:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Eemalda suhtega"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Muuda jälgijaid"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Üles"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Alla"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Lisa torrenteid"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Lisa _peatatuna"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Esimesed/viimased pakid eelisõigusega"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Rakenda kõigile"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Taasta vaikeväärtused"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Näita Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Allalaadimise kiirusepiirang"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Üleslaadimise kiirusepiirang"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Sulge & seiska deemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Jälgijate muutmine"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Lisa masin IP järgi"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Jälgija muutmine"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Sisesta võrguasukoht"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Asukoht:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Torrenti loomine"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Kaus_t"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Võ_rguasukoht"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Failid"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Veebilevitused"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Tüki suurus:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Aseta privaatne lipp"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Torrent lisatakse sessiooni"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Eelistused"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Salvesta torrent kohas"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pausi"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Jätka"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Jätka valitud torrenteid."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Val_ikud"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Järjekord"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Uuenda jälgijat"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Eemalda torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Kontrolli uuesti"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "sedel"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Vali kõik"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Peata kõik"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Jätka kõiki"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Ühenduse limiit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Üleslaadimispe_sade limiit"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automaatne juhtimine"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Lisa tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Lisa URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Laienda kõik"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrenti klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrenti klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Laadi alla ja levita faile BitTorrenti kaudu"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Käsk"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Parool"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Kasutajalt"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Saaja"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Juhuslikud pordid"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Sissetulev"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Väljuv"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maksimum ühenduste arv"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maksimum üles laadimis slotte"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maksimum pool-avatud ühendusi"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maksimum ühenduse katseid sekundis"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Jagamissuhe"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tüüp"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Rakenda"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP nimekiri (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Tekst (Zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Tekst (Kokkupakkimata)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokknimekiri"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Vigane liider"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Kehtetu võlukood"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versiooni viga"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Päevad"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Nimekirja uuendamise intervall:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Nimekiri imporditakse käivitamisel"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Sätted</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Lae must nimekiri, kui vaja, ja impordi see."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Kontrolli ja impordi"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Lae uus must nimekiri ja impordi see."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Lae uus ja impordi"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Must nimekiri on värske"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Valikud</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tüüp:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Kuupäev:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Faili suurus:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent lõpetatud"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent lisatud"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Käivita"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Sündmus"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Lisa käsk</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Käsud</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Tegumit ei eksisteeri"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Vali kaust"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Pealdis: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Pealdis</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Peamine"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maksimaalne üleslaadimise kiirus:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maks. ühendusi:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maksimum üleslaeadimis slotid:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maksimaalne laadimis kiirus:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Ülekandekiirus</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Järjekord</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekundit"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Luba veebiliides"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Luba SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Jälgitav port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Vigane silt, kehtivad märgid:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tühi silt"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Silt juba olemas"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Tundmatu silt"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Tundmatu torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Sildi valikud"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Eemalda silt"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "Lis_a silt"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Siltide valikud"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Silt"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Siltide valikud</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Rakenda igale torrendile maksimum sätted:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimaalne"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Nõustu Järjekorra sätetega"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(iga jälgija eraldi real)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automaatselt rakenda märgis:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Lisa silt"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Lisa silt</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Siltide lisamiseks, muutmiseks ja eemaldamiseks kasuta külgriba</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Sildid</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Helifaili valimine"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Hüpikaknad lubatud"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Heli lubatud"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Saajad</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Tellimused"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Paki lahti:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Loo torrendi nimeline alamkataloog"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"See seadistus loob alamkataloogi torrendi nimega valitud kataloogi ja paneb "
+"lahtipakitavad failid sinna."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Allalaadimise limiit"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Üleslaadimis limiit:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktiivsed torrentid:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Aeglustamise seaded</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Lahku"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Salvesta"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Liiguta"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Logi sisse"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Maksimaalne ühenduste arv"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Allalaadimis kiirus"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Maksimaalne allalaadimiskiirus"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Üleslaadimis kiirus"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Maksimaalne üleslaadimiskiirus"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protokolli liiklus alla- ja üleslaadimisel"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Ühenda"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtrid"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "D/L kiiruse limiit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Ü/A kiiruse piirang"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Ühenduse limiit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Üleslaadimis sloti limiit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Uuenda jälgijat"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Kontrolli uuesti"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detailid"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Üldine"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privaatne"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Tõene"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Ole teavitatud uutest väljalasetet"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maksimaalselt ühendusi:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maksimaalne allalaadimis kiirus (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maksimaalne üleslaadimise kiirus (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maksimaalselt pool-avatud ühendusi:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maksimaalne ühenduste arv sekundis:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maksimaalne üleslaadimiste pesad:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Värskenda"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fail"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Lisa peatatuna"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Kiirus Alla"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/eu.po b/deluge/i18n/eu.po
new file mode 100644
index 0000000..d18d61d
--- /dev/null
+++ b/deluge/i18n/eu.po
@@ -0,0 +1,6220 @@
+# Basque translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Basque <eu@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB (1 Kibibyte = 210 byte = 1.024 byte)"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB; Mebibyte"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB; Gibibyte"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K (Kilo-/Kibi-)"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M (Mega- / Mebi- )"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G (Giga- / Gibi- )"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s (Kibibyte segundoko)"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s (Mebibyte segundoko)"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s (Gibibyte segundoko)"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Denak"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Eraginda"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Egiaztatzen"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Jeisten"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Aletzen"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pausatuta"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Lerrokatuta"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Errorea"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Izena"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Garapena"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Egoera"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Neurria"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Jeitsita"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Igota"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Maila"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Deskarga-abiadura"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Igoera Abiadura"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Deskarga-muga"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Igoera Muga"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Hartzaileak"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Eskura"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Gehituta"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Aztarnaria"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "UED"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Lehentasuna Lehen/Azken Atalak"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatikoki kudeatuta"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Atalak"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Abisua"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Iragarpena ongi"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Iragarpena bidalita"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfazea"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Deskargak"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandazabalera"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Itxaronlerroa"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Sarea"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxya"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Katxea"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Besteak"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Pluginak"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Aland Uharteak"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Aljeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikar Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Angira (Karibe itsasoko lurraldea, Erresuma Batua)"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antartika"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua eta Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamak"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bielorrusia"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgika"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia-Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet Uhartea"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Indiako Ozeanoko Britainiar Lurraldea"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kanbodia"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cabo Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kaiman Uharteak"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Afrika Erdiko Errepublika"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Txad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Txile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Txina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Christmas Uhartea"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Cocos (Keeling) Uharteak"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolonbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komoreak"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongoko Errepublika Demokratikoa (lehen, Zaire)"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook Uharteak"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Boli Kosta"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroazia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Zipre"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Txekiar Errepublika"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danimarka"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikar Errepublika"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipto"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekuatore Ginea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkland Uharteak (Malvinak)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faroe Uharteak"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlandia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frantzia"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Frantziar Guiana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Frantziar Polinesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Hegoaldeko Lurralde Frantziarrak"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Alemania"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grezia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenlandia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Granada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Ginea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Ginea Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guiana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard Uhartea eta McDonald Uharteak"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Egoitza Santua (Vatikano Hiria Estatua)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduraa"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungaria"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islandia"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Islamiar Herkalderria"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Man Uhartea"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaika"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japonia"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea, Herriagintezko Herri Herkalderria"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Koreako Herkdalderria"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgyzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laosko Herriagintezko Herri Herkalderria"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letonia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanoa"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libiako Arabiar Jamahiriya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburgo"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Mazedonia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaisia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivak"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshall Uharteak"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinika"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Maurizio"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesiako Estatu Federatuak"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Herbehereak"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Herbeherear Antillak"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Kaledonia Berria"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Zelanda Berria"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolk Uhartea"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Iparraldeko Mariana Uharteak"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norvegia"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Belau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinar Lurraldea, Okupatua"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Ginea Berria"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipinak"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polonia"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Errumania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Errusiar Federazioa"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Bartolome"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts eta Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre eta Mikelune"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent eta Grenadinak"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome eta Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi Arabia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leona"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Eslovakia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Eslovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomon Uharteak"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Hego Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Hego Georgia eta Hego Sandwich Uharteak"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Espainia"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard eta Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swazilandia"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suedia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Suitza"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Siriako Arabiar Herkalderria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, Herkalderri Batua"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailandia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Ekialdea"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad eta Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunizia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks eta Caicos Uharteak"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukrainia"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Arabiar Emirerri Batuak"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Erresuma Batua"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Estatu Batuak"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Estatu Batuetako Kanpoaldeko Uharte Txikiak"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Virgin Uharteak, Britainarrak"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Virgin Uharteak, AEB"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis eta Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Mendebaldeko Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbawe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Daemon ez dabil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Fitxategi-izena"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Maila"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Hautatu fitxategia"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Hautatu karpeta"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Gorde .torrent fitxategia"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent-fitxategiak"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Fitxategi guztiak"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Fitxategiak pareen artean partekatzeko\n"
+"programa, BitTorrent protokoa erabiliz."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Bezeroa:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Oraingo Garatzaileak:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Lehengo Garatzaileak edo Laguntzaileak:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Programa hau software librea da; Free Software Foundation-ek argitaratutako "
+"GNUren Lizentzia Publiko Orokorrean jasotako baldintzak betez birbana "
+"eta/edo alda dezakezu, lizentziaren 3. bertsioan nahiz (nahiago baduzu) "
+"berriago batean oinarrituz. \n"
+"Programa erabilgarri izateko esperantzaz banatzen da, baina INOLAKO BERMERIK "
+"GABE; ezta MERKATURATZE edo ASMO JAKIN BATERAKO EGOKITZE berme inpliziturik "
+"ere. Ikusi GNUren Lizentzia Publiko Orokorra xehetasun gehiagorako. \n"
+"Programa honekin batera GNUren Lizentzia Publiko Orokorraren kopia bat jaso "
+"beharko zenuke; hala ez bada, bisitatu <http://www.gnu.org/licenses>. \n"
+"Gainera, salbuespen berezi gisa, copyrightaren jabeek baimena ematen dute "
+"programaren kode zatiak OpenSSL liburutegiarekin lotzeko. GNUren Lizentzia "
+"Publiko Orokorra bete beharra dago uneoro OpenSSLtik kanpo erabilitako kode "
+"guztiarekin. \n"
+"Salbuespen hau duten fitxategia(k) aldatzen badituzu, salbuespen berau heda "
+"dezakezu fitxategi(ar)en zure bertsiora, baina ez zaude hori egitera "
+"beharturik. Ez baduzu hala egin nahi, ezabatu salbuespenaren aipamena "
+"programaren iturburuko fitxategi guztietatik, eta baita hemendik ere."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Zerbitzaria:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent-a"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Fitxategi baliogabea"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Hautatu .torrent fitxategia"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL Baliogabea"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "ez da baliozko URL bat."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Jeisten..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Deskargak huts egin du"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Hutsegitea jeisterakoan:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Xehetasunak"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Erabiltzailea:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Pasahitza:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Besterik..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Konektatu gabe"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Elkarguneak"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Diskako Toki Askea"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Bai"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Ez"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Lehentasuna"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "E_goera"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Xehetasunak"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Agi_riak"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Hartzaileak"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "A_ukerak"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Konektatu gabe"
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Mugagabea"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Behera"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Gora"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Lineaz kanpo"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Online"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Konektatuta"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Egoera"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Hostalaria"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Bertsioa"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Abiarazi Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Gelditu Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Ezinezkoa daemon abiaraztea!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Akatsa Hostalaria gehitzerakoan"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Erabiltzaile-izena"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Maila"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Gaituta"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugina"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Hautatu Plugina"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Egoerak"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Aztarnariak"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Bat ere ez"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiketak"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Etiketarik ez"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Bezero Bertsioa</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrent-ak ilarara gehituta"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent-a ilarara gehituta"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Ezarri Mugagabea"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Eraginda"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Etenda"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Ezgaitu"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Helbidea"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Bezeroa"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Torrent-a sortzen"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Ilarara gehitutako torrent-ak"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Kendu"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Konektatzean gehitu torrent-ak automatikoki"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fitxategia"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Gehitu torrent-a"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Sortu torrent-a"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Utzi eta _Itzali Daemon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Utzi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Editatu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Elkarketa _Kudeatzailea"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent-a"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Ikusi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Tresnabarra"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Albobarra"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Egoera_barra"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "H_egatsak"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Zutabeak"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "A_lbobarra"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Erakutsi _Zero Kolpeak"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Erakutsi _Aztarnariak"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Laguntza"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Webgunea"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "SEG"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Sarri Egiten diren Galderak"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "H_erkidegoa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Gehitu torrent-a"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Gehitu torrent-a"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Kendu torrent-a"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Kendu torrent-a"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pausatu hautatutako torrent-ak"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausatu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Berrekin hautatutako torrent-ak"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Berrekin"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Gehitu torrent-a ilara hasierara"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Lerroan Gora"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Gehitu torrent-a ilara amaierara"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Lerroan Behera"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Hobespenak"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Elkarketa Kudeatzailea"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Behartuta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Ezgaituta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Erakutsi saio abiadura izenburu-barran"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Leiho fokua torrent bat gehitzerakoan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Gaitu sistema erretilu ikonoa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Ikonotu erretilura isterakoan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Hasi erretiluan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Babestu pasahitzez sistemaren erretilua"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Mugitze lana bete da horrantz:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopiatu .torrent fitxategiak hona:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Kentzerakoan ezabatu torrent fitxategiaren kopia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Ezabatu sortutako torrent fitxategiaren kopia torrent-a kentzerakoan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Jeitsi hona:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Eman lehentasuna torrentaren lehen eta azken atalari"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Eman lehentasuna torrenteko fitxategien lehen eta azken atalei"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Gehitu torrentak Pausatuta egoeran"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Betik erakutsi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Eraman elkarrizketa fokura"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Gehienez ahalbidetutako elkarketa zenbateko. Ezarri -1 mugagaberako."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Konexioak:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "Gehienezko igoera ahoa torrent guztientzat. Ezarri -1 mugagaberako."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Torrent guztientzako gehienezko deskarga-abiadura. Ezarri -1 muga gabeko "
+"abiadurarako."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Deskarga lastertasuna:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Gehienezko igoera abiadura torrent guztientzat. Ezarri -1 mugagaberako."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Kargatze lastertasuna:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ezikusi mugak tokiko sarean"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Neurri muga IP burugaina"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Hautatuta badago, estimatutako TCP/IP burugaina neurri mugatzaileek "
+"bideratzen dute, trafiko guztiarekin mugak gainditzea eragozteko"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Gehienezko igoera aho torrent bakoitzeko. Ezarri -1 mugagaberako."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Gehienezko elkarketa zenbatekoa torrent bakoitzeko. Ezarri -1 mugagaberako."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Zorizkoa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Eragindako Ataka:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Aztertu Eragindako Ataka:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Hemendik:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Hona:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Maila:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Enkriptaketa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "UPP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Ataka Mapaketa Protokoloa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Hartzaile Aldaketa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"Tokiko Zerbitzari Aurkitzaileak tokiko hartzaileak bilatzen ditu zure sarean."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Hash taula banatuak eragindako elkarketa kopurua hobetu dezake."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Hartzaile TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Ostalari-izena:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Ataka:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Katxe Neurria (16 KiB bloke)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Idaz katxean atal baten azken idaz katxetik segundu zenbatekoa, diskara "
+"behartuta jariotzen denean. Berezkoa 60 segundu da."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Katxe Epea (segundu):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Ezarpenak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Saio hau hasi denetik diskan idatzi diren 16 KiB-ko bloke zenbatekoa guztira."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Bloke Idatzita:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Saio hau hasi denetik egin diren idaz eragiketa zenbatekoa guztira."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Idazleak:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"(blocks_written - writes) / blocks_written mailak adierazten du idaz "
+"eragiketa guztietatik gordetako idaz eragiketa zenbatekoa, idaz katxerako "
+"katxe kolpe maila."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Idaz Katxe Kolpe Maila:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Bittorrrent gailutik (hartzaileengandik) eskabidetuak izan ziren bloke "
+"zenbatekoa, diskatik edo katxetik zerbitzatu zirenak."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Bloke Irakurrita:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Katxetik zerbitzatzen den bloke zenbatekoa."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Bloke Irakurketa Kolpea:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Katxe kolpe maila irakur katzerako."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Irakur Katxe Kolpe Maila:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Saio hau hasi denetik eginiko irakurketa eragiteka zenbatekoa guztira."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Irakurriak:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Orain diskako katxean dagoen 16 KiB-eko bloke zenbatekoa. Honek irakur eta "
+"idaz katxeak barnebiltzen ditu."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Katxe Neurria:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Irakur Katxe Neurria:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Lagundu diezaguzu Deluge hobetzen zure Python bertsioa, PyGTK bertsioa, SE "
+"edo prozesagailu motak bidaliz. Ez da beste argibiderik bidaltzen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Bai, mesedez bidali izengabeko estatistikak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Kokalekua:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Delugek ezin badu datu-base fitxategia kokaleku honetan aurkitu, DNSa "
+"erabiliko du parearen herrialdea ebazteko."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon ataka:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Ataka"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Ahalbidetu Hurruneko Elkarketak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Konexioak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Aldika egiaztatu webgunean argitalpen berririk dagoen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Bertisoa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Egilea:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Etxea:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Egile Post@:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Argibideak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Gehitu Hartzailea"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostalari-izen:ataka"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Orokorra</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Ezeztatu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Gehitu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Kendu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Gehitu Infohasha"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohasha"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Aztarnariak:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Gehitu Hostalaria"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Helmuga:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Argitalpen Berria"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Joan Webgunera"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Ez erakutsi elkarrizketa hau aurrerantzean"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Izena:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Aipamenak:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Mugitzea osatuta"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Gelditu ereitea maila honetan:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Ezabatu maila honetan:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "Editatu A_ztarnariak"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Goi-goian"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Behe-behean"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Gehitu torrent-ak"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "UR_L-a"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hasha"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Gehitu _Pausatuta Egoeran"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Lehentasuna Lehen/Azken Atalak"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Ezarri Denei"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Itzuli Berezkoetara"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Erakutsi Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Deskarga-abiaduraren muga"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Igoera Abiadura Muga"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Utzi eta Itzali Daemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Editatu Aztarnariak"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "Gehitu Hartzailea"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Gehitu hartzaile bat IP honetatik"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Editatu Aztarnaria"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Aztarnaria:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Sartu Hurruneko Helburua"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Helburua:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Sortu torrent-a"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Karpeta"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Hurruneko Helburua"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Agiriak"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Web-aleak"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Atal Neurria:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Ezarri Ikur Pribatua"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Gehitu torrent hau saiora"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Aukerak"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Gorde .torrent-a honela"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pausatu"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Ken_du"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Berrekin hautatutako torrent-ak."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Au_kerak"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Lerrokatu"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Eguneratu Aztarnaria"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Kendu torrent-a"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Behartu Berregiaztapena"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiketa"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Hautatu Denak"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pausatu Denak"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Berre_kin Denak"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Elkarketa Muga"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Igoera _Aho Muga"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Berez Kudeaketa"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Gehitu Aztarnaria"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Gehitu URL-a"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL-a:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Zabaldu Denak"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent Bezeroa"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent Bezeroa"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Deskargatu eta partekatu fitxategiak BitTorrent bidez"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Agindua"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Sar-hitza"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Hemendik"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Hona"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Erabili Zorizko Atakak"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Gehienezko Elkarketak"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Gehienezko Igoera Aho"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Elkarbanatze Maila"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Mota"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Aplikatu"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP zerrenda (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Testua (Zip sistemaz konprimitua)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian testua (konprimitu gabea)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Bloke-zerrenda"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Baliogabeko burua"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Balio gabeko kode magikoa"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Bertsio baliogabea"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Egun"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Noizero egin zerrenda berrien bilaketa:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Inportatu bloke-zerrenda hasterakoan"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Ezarpenak</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Deskargatu blokeatze-zerrenda, beharrezkoa bada, eta inportatu fitxategi hau."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Egiaztau deskarga eta inportatu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Deskargatu blokeatze-zerrendaren fitxategia eta inportatu berau."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Behartu deskarga eta inportatu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Bloke-zerrenda eguneratuta dago"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Aukerak</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Mota:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Eguna:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Fitxategi-tamaina:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Argibideak</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent-a osatu da"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent-a gehitu da"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Exekutatu"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Gertaera"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Gehitu agindua</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Aginduak</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Ikusi nahi den karpeta ez da existitzen"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Biderik ez dago."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Ikusteko karpetaren ezaugarriak"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Hautatu karpeta bat"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Gaintu ikusteko karpeta hau"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Ikusteko karpeta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Ezabatu .torrent-a gehitu ondoren"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Erantsi luzapena gehitu ondoren:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".gehituta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent fitxategiaren ekintza</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Mugitu osatuta dagoena</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiketa: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiketa</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Nagusia"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Kargatzeko lastertasun maximoa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Konexio maximoak:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Kargatzeko tarte maximoak:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Deskargatzeko lastertatusun maximoa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Banda-zabalera</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automatikoki kudeatuta:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Gehitu Pausatuta:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Itxaronilaran hortxe jarri:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Itxaronilaran jarri</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Ikusteko karpetak:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "segundu"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Delugeren web interfazea ez dago ezarrita, mesedez ezarri ezazu\n"
+"interfazea eta saiatu berriro"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Gaitu web interfazea"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Gaitu SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Aditze ataka:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etiketa baliogabea, karaktere baliogarriak:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Hutsik etiketa"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Dagoeneko badago etiketa hori"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etiketa ezezaguna"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent ezezaguna"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Etiketa_aukerak"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Ezabatu etiketa"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Gehitu etiketa"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Etiketa Aukerak"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiketa"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Etiketa Aukerak</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Ezarri torrent bakoitzeko ezarpen maximoak:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximoa"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Ezarri itxaronilarako ezarpenak:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>( lerro 1 aztarnari bakoitzeko)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Ezarri etiketa modu automatikoanl:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Gehitu etiketa"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Gehitu etiketa</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Erabili albo-barra etiketak gehitzeko, editatzeko eta ezabatzeko. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiketak</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Keinukako jakinarazpena agerian"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Laster-leiho jakinazpena, popup jakinarazpena, ez dago gaituta."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Jakinarazpen laster-leihoa agerian"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Soinu-jakinarazpena ez dago gaituta"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame ez dago instalatuta"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Soinu-jakinarazpenak huts egin du %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Soinu-jakinarazpena eginda"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent-a amaituta"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Hautatu soinu-fitxategia"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Errore bat egon da jakinarazpen mezua bidaltzean: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Jakinarazpen-mezua bidalita."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "\"%(name)s\" torrent-a amaituta"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Mezu hau Delugek \"%(name)s\" deskargatzen amaitu duela jakinarazteko da, "
+"bere baitan %(num_files)i fitxategi dituelarik.\n"
+"Alerta hauek jasotzeari uzteko, itzali e-posta bidezko jakinarazpenak "
+"Delugeren hobespenetan.\n"
+"\n"
+"Mila esker,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Keinukako erretilu-ikonoak gaituta"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Laster-leihoak, popup leihoak, gaituta"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Soinua gaituta"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>EI jakinarazpenak</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Ontziak</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Zerbitzariak TLS/SSL behar du"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-posta bidezko jakinarazpenak</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Konfigurazio honek ez du esan nahi gertaera guzti hauen jakinarazpenak "
+"jasoko dituzunik."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Harpidetzak"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Soinu-pertsonalizazioa"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Erauzi hona:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Sortu azpikarpeta torrent-aren izenarekin"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Aukera honek azpikarpeta bat sortuko du torrent-aren izena erabiliz "
+"hautatutako erauzte-karpetan, eta bertan jarriko ditu erauzitako fitxategiak."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Deskarga muga:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Karga muga:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrent aktiboak:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Deskarga aktiboa:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Ereite akitiboa:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Astiro Ezarpenak</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Saioa amaitu"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Gorde"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Hostalaria:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Mugitu"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Saioa hasi"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Ezarri konexio kopuru maximoa"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Deskarga-abiadura"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Ezarri gehienezko deskarga-abiadura"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Igoera Abiadura"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Ezarri Gehienezko Igoera Abiadura"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Deskargarako/kargarako protokoloa"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Elkarketatu"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Iragazkiak"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Elkarketa Muga"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Eguneratu Trackera"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Xehetasunak"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Orokorra"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Pribatua"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Egia"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Argitalpen berrien jakitun egon"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Gehienezko Elkarketa:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Gehienezko deskarga-abiadura (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Gehienezko Igoera Abiadrua (KiB/s)"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Gehienezko Elkarketa Erdi-Ireki:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Gehienezko Elkarketa Ahalegin Segunduko:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Gehienezko Igoera Aho:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Zerbitzaria"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url-a"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Agiria"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Jetsiera"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/fa.po b/deluge/i18n/fa.po
new file mode 100644
index 0000000..374a69a
--- /dev/null
+++ b/deluge/i18n/fa.po
@@ -0,0 +1,6172 @@
+# Persian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Persian <fa@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "کیلو‌بایت"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "مگا‌بایت"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "گیگا‌بایت"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "کیلو"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "مگا"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "گیگا"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "کیلوبایت بر ثانیه"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "مگا بایت بر ثانیه"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "گیگا بایت بر ثانیه"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "خطا"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "نام"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "پیشرفت"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "اندازه‌"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "بارگیری‌شده"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "بارگذاری‌شده"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "نسبت"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "سرعت دانلود"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "سرعت بالا"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "جفتها"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "ردیاب"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "زمان باقی مانده"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "مدیریت خودکار"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "تکه‌ها"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "اخطار"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "اعلان داده شد"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "اعلان ارسال شد"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "بارگیری‌ها"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "پهنای باند"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "صف"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "شبکه"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "غیره"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "افزونه‌ها"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "نام پرونده"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "پرونده‌های Torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "همه‌ی پرونده‌ها"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "نام‌کاربری:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "رمز عبور:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "غیره..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "اولویت"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "جزئیات"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "پر_ونده"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "نامحدود"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "پایین"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "بالا"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "نام کاربری"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "فعال"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "مدیر"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "خاموش"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "غیرفعال کردن‌"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "نشانی"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "پرونده"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "افزودن تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_خروج"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "ویرایش"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "نما"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_نوار ابزار"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "ستون"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "راهنما"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "اضافه کردن تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "افزودن یک تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "حذف تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "حذف تورنت"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "مکث"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "ادامه"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "بالا بردن تورنت در صف"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "پایین بردن تورنت در صف"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "تنظیمات‌"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "از کار افتاده"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "هر کدام"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "جابجایی کامل به:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "رونوشت پرونده .torrent به:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "دانلود در:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "اولویت بندی اولین و آخرین تکه‌های تورنت"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "اولویت بندی اولین و آخرین تکه از پرونده‌ها در تورنت"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "بیشینه اتصالات مجاز. رای مقدار نامحدود -1 را تنظیم کنید."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "اتصال‌ها"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"بیشینه شکاف‌های بارگذاشتن برای همه تورنت‌ها. برای مقدار نامحدود -1 را تنظیم "
+"کنید."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"بیشینه سرعت بارگیری برای همه تورنت‌ها.برای مقدار نامحدود -1 را تنظیم کنید."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "سرعت دانلود:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"بیشینه سرعت بارگذاشتن برای همه تورنت‌ها.برای مقدار نامحدود -1 را تنظیم کنید."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "سرعت آپلود:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "چشم‌پوشی از محدودیت‌ها بر روی شبکه محلی"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "تصادفی‌"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "درگاه فعال:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "آزمون درگاه فعال"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "از:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "به:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "سطح:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "خدمت کاشف محلی، نقاط محلی روی شبکه را برای شما پیدا می‌کند."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "جدول درهم توزیع‌شده می‌تواند باعث بهبود اتصالات فعال شود."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "نام میزبان:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "پورت:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "تنظیمات"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "درگاه‌"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "اتصال‌ها"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>کلیات</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "افزودن"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "حذف"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "اطلاعات هش:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "ردیاب‌ها:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "نام:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "توقف دانه‌پراکنی در نسبت:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "حذف در نسبت:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_ویرایش ردیاب"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "بالا"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "پایین"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "افزودن تورنت‌ها"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "اطلاعات_هش"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "اولویت اول/آخرین تکه"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "اعمال برای همه"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "رجوع به اطلاعات پیشفرض"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_دانلود با سرعت محدود"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_محدودیت سرعت آپلود"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "پرونده‌ها"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "گزینه‌ها"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "ادا_مه"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "ادامه تورنت‌های انتخاب شده."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "تظیم_ات"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_صف"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_به‌روزآوری ردیاب"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_حذف تورنت"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_بررسی مجدد اجباری"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "ادا_مه همه"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_محدودیت اتصال"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "محدودیت _شکاف آپلود"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_مدیریت خودکار"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "افزودن نشانی وب"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "نشانی اینترنتی:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "دستور"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "کلمه عبور"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "از"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "تا"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "استفاده تصادفی درگاه"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "ورودی"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "خروجی"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "بالاترین تعداد اتصال‌ها"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "ضریب اشتراک گذاری"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "نوع‌"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "لیست سیاه"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "راهبر نا معتبر"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "کد جادویی نامعتبر"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "نسخه نامعتبر"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "روزها"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "بررسی برای لیست جدید هر:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "واردکردن لیست سیاه در موقع شروع"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>تنظیمات</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "در صورت نیاز فایل لیست سیاه را دانلود و وارد نمایید."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "دانلود و وارد کردن یک لیست سیاه جدید."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "اجبار به دانلود و وارد کردن"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "لیست سیاه به روز است"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>گزینه‌ها</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "نوع:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "تاریخ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "اندازه فایل:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>اطلاعات</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "تورنت به اتمام رسید"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "تورنت اظافه شد"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "اجرا"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "رخداد"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>اضافه کردن دستور</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>دستورات</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "آدرس وجود ندارد."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "یک پوشه انتخاب کنید"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "پاک کردن فایل اصلی تورنت بعد از اضافه شدن"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".اضافه شد"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>انتقال به اتمام رسید</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "علامت گذاری: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>برچسب</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "اصلی"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "حداکثر سرعت آپلود"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "بیشینه اتصالات:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "بیشترین شکاف‌های آپلود:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "بیشینه سرعت دانلود"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>پهنای باند</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "مدیریت خودکار:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "ثانیه"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "فعال سازی رابط کاربری وب"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "پروتکل SSL فعال شود"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "ارزیابی پورت"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "برچسب نامعتبر، از بین [a-z0-9_-] انتخاب کنید."
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "برچسب خالی"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "برچسب در حال حاضر وجود دارد."
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "برچسب نامشخص"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "گزینه‌های برچسب"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "برچسب"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>گزینه‌های برچسب</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "اعمال تنظیمات صف:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "اعمال برچسب به صورت خودکار:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "افزودن برچسب"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>افزودن برچسب</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>استفاده از سایدبار برای اضافه کردن، ویرایش و حذف برچسب </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>برچسب‌ها</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "پنجره آگاه سازی فعال نیست"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "نمایش پنجره آگاه سازی"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "صدای آگاه سازی فعال نیست"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "صدای آگاه سازی با موفقیت همراه نبود %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "صدای آگاه سازی موفقیت آمیز بود"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "تورنت های به اتمام رسیده"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "انتخاب پرونده صوتی"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "در هنگام ارسال ایمیل آگاه سازی، خطایی رخ داد: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "ایمیل آگاه سازی ارسال شد."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "تورنتهای به اتمام رسیده \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "چشمک زدن آیکون نوار وظیفه فعال است"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "صدا فعال است"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Uآگاه سازی رابط کاربری</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>گیرنده ها</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "سرور درخواست TLS/SSL دارد"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>ایمیل آگاه سازی</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"این تنظیمات به این معنی نمیباشد که شما برای تمام این اتفاقات ایمیل دریافت "
+"خواهید کرد."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "عضویت ها"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "شخصی سازی صدا"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "استخراج به:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "ساخت زیر پوشه ای به نام فایل تورنت"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"این ویژگی پوشه ای در داخل فایل های خارج شده با نام فایل تورنت ایجاد میکند و "
+"فایل ها را در آن میگذارد."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "محدودیت دانلود:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "محدودیت آپلود:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "تورنت های فعال:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "دانلود های فعال:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>نمایش تنظیمات</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "خروج"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "ذخیره کردن"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "جابه‌جایی"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "ورود"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "اتصال"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "صافی‌ها"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "جزئیات‌"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "کلیات"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "خصوصی"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "بیشینه اتصالات:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "بیشینه سرعت بارگیری (کیلوبایت بر ثانیه):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "بیشینه سرعت بارگذاشتن (کیلوبایت بر ثانیه):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "بیشینه اتصالات نیمه باز:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "بیشینه شکاف‌های بارگذاشتن:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "کارگزار"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "نشانی وب"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "فایل"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "بارگیری"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/fi.po b/deluge/i18n/fi.po
new file mode 100644
index 0000000..c5a722e
--- /dev/null
+++ b/deluge/i18n/fi.po
@@ -0,0 +1,6204 @@
+# Finnish translation for deluge
+# Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2022-06-10 17:48+0000\n"
+"Last-Translator: Jiri Grönroos <Unknown>\n"
+"Language-Team: Finnish <fi@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Yleiset valinnat"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Tulosta tämä ohjeviesti"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Tulosta versiotiedot"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "Ohjaa tuloste määritettyyn lokitiedostoon stdoutin sijaan"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "Aseta lokituksen taso (none, error, warning, info, debug)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Taustaprosessin valinnat"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Kaikki"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktiivinen"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Tarkistetaan"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Ladataan"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Jaetaan"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Keskeytetty"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Jonossa"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Virhe"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nimi"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Edistyminen"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Tila"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Koko"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Ladattu"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Lähetetty"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Jäljellä"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Suhde"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Latausnopeus"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Lähetysnopeus"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Latausnopeuden rajoitus"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Lähetysnopeuden rajoitus"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Yhteyksiä enintään"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Jakopaikkoja enintään"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Vertaiset"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Jakajat"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Saat."
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Jakajia:vertaisia"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Lisätty"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Seurantapalvelin"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Latauskansio"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Jakoaika"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Aktiivisuusaika"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Viimeisin toiminta"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Aikaa jäljellä"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Jaettu"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Suosi ensimmäistä/viimeistä"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Peräkkäinen lataus"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automaattisesti hallittu"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Pysäytä suhteessa"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Pysäytyssuhde"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Poista suhteessa"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Siirrä valmistuneet -polku"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Omistaja"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Osat"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Varoitus"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Ilmoitus OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Ilmoitus lähetetty"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Käyttöliitymä"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Lataukset"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Kaistanleveys"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Jono"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Verkko"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Välityspalvelin"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Välimuisti"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Muut"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Taustaprosessi"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Liitännäiset"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Ohita"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Matala"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normaali"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Korkea"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Ahvenanmaa"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikan Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktis"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua ja Barbados"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentiina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Itävalta"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaidžan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahaman saaret"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Valkovenäjä"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgia"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudasaaret"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia ja Hertsegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botsvana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet'n saari"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasilia"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Brittiläinen Intian valtameren alue"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalamin sulttaanikunta"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kap Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Caymansaaret"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Keski-Afrikan tasavalta"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tšad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kiina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Joulusaari"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Cookinsaaret"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komorit"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongon demokraattinen tasavalta"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook-saaret"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Norsunluurannikko"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Kypros"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tšekin tasavalta"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Tanska"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominikaani"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikaaninen Tasavalta"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypti"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Päiväntasaajan Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Viro"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandin saaret (Malvinassaaret)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Färsaaret"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Suomi"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Ranska"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Ranskan Guayana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Ranskan Polynesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Ranskan eteläiset alueet"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Saksa"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Kreikka"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grönlanti"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heardin saari ja McDonaldin saaret"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vatikaanivaltio"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Unkari"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islanti"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Intia"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanti"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Mansaari"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaika"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japani"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Pohjois-Korea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Etelä-Korea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laosin demokraattinen tasavalta"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyan arabijamahiriya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Liettua"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonian tasavalta"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malesia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Malediivit"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshallinsaaret"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Meksiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesian liittovaltio"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mosambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Naurusaaret"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Alankomaat"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Alankomaiden Antillit"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Uusi-Kaledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Uusi-Seelanti"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolkinsaari"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Pohjois-Mariaanit"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norja"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestiinalaisalueet, miehitetyt"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua-Uusi-Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filippiinit"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Puola"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugali"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Venäjä"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts ja Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint-Pierre ja Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent ja Grenadiinit"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé ja Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi-Arabia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegali"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychellit"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomonsaaret"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Etelä-Afrikka"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Etelä-Georgia ja Eteläiset Sandwichinsaaret"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Espanja"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Huippuvuoret ja Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swazimaa"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Ruotsi"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Sveitsi"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syyrian arabitasavalta"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Taiwan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tansanian yhdistäytynyt tasavalta"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thaimaa"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Itä-Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad ja Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkki"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks- ja Caicos-saaret"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Yhdistyneet Arabiemiraatit"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Iso-Britannia"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Yhdysvallat"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Yhdysvaltain hajasaaret"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Brittien Neitsytsaaret"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "USA:n Neitsytsaaret"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis ja Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Länsi-Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Sambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Käyttöliittymän valinnat"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Web-palvelimen valinnat"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Pakota web-palvelin käyttämään SSL:ää"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Taustaprosessia ei ole olemassa"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Taustaprosessi ei ole käynnissä"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Tiedostonimi"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Taso"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Valitse tiedosto"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Peru"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Avaa"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Valitse kansio"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Tallenna .torrent-tiedosto"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "_Tallenna"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent-tiedostot"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Kaikki tiedostot"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Anna salasalanasi tuodaksesi Delugen esiin..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Anna salasanasi lopettaaksesi Delugen..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Muokkaa polkua"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Poista polku"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Toteuta valittuihin"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Tekijänoikeus %(year_start)s-%(year_end)s Deluge-tiimi"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"BitTorrent-yhteyskäytäntöä käyttävä\n"
+"vertaispohjainen tiedostonjako-ohjelma."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Asiakasohjelma:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Nykyiset kehittäjät:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Aiemmat kehittäjät ja avustajat:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Palvelin:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Lisää torrenteja (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Virheellinen tiedosto"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Odota tiedostoja..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Valitse .torrent-tiedosto"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Virheellinen verkko-osoite"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "on virheellinen osoite."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Ladataan..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Lataus epäonnistui"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Lataus epäonnistui:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_Ei"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Kyllä"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Sulje"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Yksityiskohdat:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Tunnistaudu"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "_Yhdistä"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Käyttäjänimi:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Salasana:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Muokkaa tiliä"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Muokkaa olemassa olevaa tiliä"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Toteuta"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Uusi tili"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Luo uusi tili"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Lisää"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Tunnistautumistaso:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Suojattu salasanalla"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_OK"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Muu…"
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Ei yhdistetty"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Yhteydet (raja)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Latausnopeus (raja)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Lähetysnopeus (raja)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT-solmut"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Vapaata levytilaa"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Ulkoinen IP-osoite"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Porttiongelma</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Ei saapuvia yhteyksiä, tarkista porttien edelleenlähetys"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Latausnopeuden rajoitus"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Aseta latauksen enimmäisnopeus"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Lähetysnopeuden rajoitus"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Aseta lähetyksen enimmäisnopeus"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Saapuvat yhteydet"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Aseta saapuvien yhteyksien enimmäismäärä"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent} %"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Ei koskaan"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Kyllä"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Ei"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Tärkeys"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Kaikki"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Tila"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "Yksityiskoh_dat"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Tiedostot"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Vertaiset"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Valinnat"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Seurantapalvelimet"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Ei yhdistetty..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Rajoittamaton"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Alas"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Ylös"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Yhteydetön tila"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Yhteydessä"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Yhdistetty"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Tila"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Verkkolaite"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versio"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Käynnistä taustaprosessi"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Pysäytä taustaprosessi"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Katkaise yhteys"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Taustaprosessin käynnistys epäonnistui!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Yhdistäminen epäonnistui"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Virhe lisättäessä isäntäkonetta"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Käyttäjänimi"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Taso"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Käytössä"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Liitännäinen"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Valitse kieli"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+"Käynnistä Delugen käyttöliittymä uudelleen, jotta muutokset tulevat voimaan."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Valitse liitännäinen"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Liitännäinen Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Palvelinpään virhe"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "Palvelimella tapahtui virhe"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Virhe tiliä lisättäessä"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Tunnistautuminen epäonnistui"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "Tiliä lisättäessä tapahtui virhe"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Virhe tiliä päivittäessä"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "Tiliä päivittäessä tapahtui virhe"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Poista tili"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Virhe tiliä poistaessa"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Tunnistautuminen epäonnistui"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "Tiliä poistaessa tapahtui virhe"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Tilat"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Seurantapalvelimet"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ei mikään"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Ylläpitäjä"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Nimikkeet"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Ei selitettä"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Ei omistajaa"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Sovelluksen versio</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrentteja jonossa"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent jonossa"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Poistetaanko valitut torrentit?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Rajoittamaton"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Päällä"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Pois käytöstä"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Poista käytöstä"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Ota käyttöön..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Aseta lähetyspaikkojen enimmäismäärä"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Lopeta jakaminen suhteessa"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Omistussuhteen muutoksen virhe"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Osoite"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Ohjelma"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "GTK-valinnat"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Luodaan torrent-tiedostoa"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrentit jonossa"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Lisää jonotetut torrentit"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Poista"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "_Tyhjennä"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Lisää torrentit automaattisesti yhdistäessä"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Tiedosto"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Lisää torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "L_uo torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Lopeta ja _sulje taustaprosessi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "Lo_peta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Muokkaa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Asetukset"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Yhteyksien hallinta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Näytä"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Työkalupalkki"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sivupalkki"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Tilapalkki"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Välilehdet"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Sarakkeet"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Etsi..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_ivupalkki"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Näytä _nollapisteosumat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Näytä _seurantapalvelimet"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "Näytä _omistajat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Ohje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Verkkosivusto"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ (useasti kysytyt)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Usein kysytyt kysymykset"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Yhteisö"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_Tietoja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Lisää torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Lisää torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Poista torrentti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Poista torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Suodatin"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Keskeytä valitut torrentit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Keskeytä"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Jatka valittuja torrentteja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Jatka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Siirrä ylös jonossa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Siirrä ylös jonossa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Siirrä alas jonossa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Siirrä alas jonossa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Asetukset"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Yhteyksien hallinta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Sulje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Suodatin:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Tyhjennä haku"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Pakotettu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Poissa käytöstä"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Kättely"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Jompikumpi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5-todennus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP-todennus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Yhdistä Deluge-taustaprosessiin (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Sovellustila"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Näytä istunnon nopeus tilapalkissa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Kohdista ikkunaan torrentia lisätessä"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Odottaa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Puuttuu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Palauta väri oletukseksi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Pääikkuna"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Näytä kuvake ilmoitusalueella"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "Sovellusilmaisin"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Ilmoitusalue"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Pienennä ilmoitusalueelle suljettaessa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Käynnistä ilmoitusalueelle pienennettynä"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Suojaa ilmoitusalueelle pienennetty Deluge salasanalla"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Ilmoitusalue"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Ilmoita uusista julkaisuista"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Päivitykset"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Järjestelmän oletus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Kieli</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Siirrä valmistuneet:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopioi .torrent-tiedostot:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Poista .torrent-tiedosto torrentin poiston yhteydessä"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Lataa kansioon:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Latauskansiot"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Aseta torrentin ensimmäiset ja viimeiset osat etusijalle"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Aseta torrentin tiedostojen ensimmäiset ja viimeiset osat etusijalle"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Lisää torrentit keskeytettyinä"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Ennakkovaraa levytila"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Ennakkovaraa levytila torrent-tiedostoille"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Lisää torrent -valinnat"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Näytä aina"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Tuo valintaikkuna eteen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Lisää torrentti -ikkuna"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Yhteysyrityksiä per sekunti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Puoliksi avoimet yhteydet:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Yhteyksien suurin sallittu määrä. Rajoittamaton: -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Yhteyksiä:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Suurin sallittu lähetyspaikkojen määrä kaikille torrenteille. Rajoittamaton: "
+"-1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Lähetyspaikkoja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Suurin sallittu latausnopeus kaikille torrenteille. Rajoittamaton: -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Latausnopeus:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Suurin sallittu lähetysnopeus kaikille torrenteille. Rajoittamaton: -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Lähetysnopeus:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Poista rajoitukset paikallisesta verkosta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Nopeusraja IP.n yläpuolella"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Jos·valittuna,·arvioitu·TCP/IP·on·pois·suljettu·nopeusrajoittimelta.Näin·vält"
+"ytään·rajojen·ylityksiltä·kokonaisliikenteessä."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Yleiset kaistanleveyden rajoitukset"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Suurin sallittu lähetyspaikkojen määrä torrentia kohden. Rajoittamaton: -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Suurin sallittu yhteyksien määrä torrentia kohden. Rajoittamaton: -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Torrent-kohtaiset kaistanleveyden rajoitukset"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "Jonota ylimmäksi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Uudet torrentit"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Yhteensä:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Aktiiviset torrentit"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Jakosuhde:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Aika (min):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Keskeytä torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Jakosuhde saavutettu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Saapuva osoite"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Satunnainen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Käytä satunnaisia portteja välillä 49152-65525"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiivinen portti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testaa aktiivinen portti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Saapuva portti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Lähtevä sovitin"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Alkaen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Päättyen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Lähtevät portit"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Lähtevä:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Saapuva:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Taso:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Salaus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT-porttikartoitusprotokolla"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Vertaistietojen vaihto (PEX)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Paikallinen etsintäpalvelu hakee paikallisia vertaisia verkostasi."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "DHT saattaa lisätä aktiivisten yhteyksien määrää."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Vertaisen TOS-tavu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Verkon lisäasetukset"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Palvelimen nimi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Portti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Pakota välityspalvelimen käyttö"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Pakota välityspalvelin"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Välimuistin koko (16 KiBin paloissa)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Määrä sekuntteina viimeisimmästä kirjoitetusta osasta välimuistissa. "
+"Välimuistista levylle. Oletus on 60 sekuntia."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Välimuisti vanhenee (sekuntia):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Asetukset"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Tämän istunnon käynnistyksen jälkeisten levylle kirjoitettujen 16 KiBin "
+"lohkojen yhteismäärä."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Lohkoja kirjoitettu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Suoritettujen kirjoitusoperaatioiden määrä tämän istunnon alusta."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Kirjoituksia:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Osumasuhde kirjoitetulle välimuistille:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Kirjoitettu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Lohkojen määrä bittorrentin moottorilta (vertaistuelta), jotka tarjotaan "
+"levyltä tai välimuistista."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Lohkoja luettu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Lohkojen määrä, jotka tarjotaan välimuistista."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Lohkon osumat:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Välimuistin osumasuhde luettuun välimuistiin."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Lue välimuistin osumasuhde:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Kaikki toiminnot istunnon alusta alkaen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Luettu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Luettu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"16KiB lohkojen määrä levyn välimuistissa. Mukaan lasketaan luku ja "
+"kirjoitusvälimuisti."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Välimuistin koko:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Lue välimuistin koko:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Päivitä"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Auta parantamaan Delugea lähettämällä käytössä olevat Python- ja PyGTK-"
+"versiotiedot sekä käyttöjärjestelmän ja prosessorin tyyppi. Mitään muita "
+"tietoja ei lähetetä."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Lähetä tilastotietoja nimettömästi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Järjestelmän tiedot"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Sijainti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Jos Deluge ei löydä tietokantatiedostoa tästä osoitteesta, se käyttää DNS:ää "
+"selvittääkseen vertaisen maan."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "GeoIP-tietokanta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Liitä Delugeen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Magneettilinkit"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Taustaprosessin portti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Portti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Salli etäyhteydet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Yhteydet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Tarkista säännöllisesti uuden version saatavuus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Poista"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Tilit"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Tekijä:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Kotisivu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Tekijän sähköpostiosoite:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Asenna"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Löydä enemmän..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Poistetaanko valitut torrentit?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Sisällytä ladatut tiedostot"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(Tätä ei voi perua!)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Lisää vertainen"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "isäntänimi:portti"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Ominaisuudet"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Yleisasetukset</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Näytä tiedostovalitsin"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Näytä kansion nimi"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Näytä piilotetut tiedostot"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Aseta uusi avain"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Oletuspolku"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Valitse kansio"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Peruuta"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Avaa"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Lisää"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Muokkaa"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Poista"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Oletus"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Oletuspolkua ei ole asetettu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Avaa ominaisuusikkuna"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Lisää Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "Infohashista"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Seurantapalvelimet:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Lisää palvelin"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Kohde:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Uusi julkaisu"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Mene verkkosivuille"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Uusi julkaisu saatavilla!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Saatavilla oleva versio:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Palvelimen versio"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Nykyinen versio:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Älä näytä tätä ilmoitusta tulevaisuudessa"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Latausnopeus:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Lähetysnopeus:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Ladattu:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Lähetetty:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Jakajia:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Vertaiset:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Saatavuus:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "Arvioitu valmistumisaika:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Aktiivisuusaika:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Jakoaika:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nimi:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Latauskansio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Lisätty:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Koko yhteensä:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Tiedostoja yhteensä:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Tiiviste:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Luonut:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Kommentit:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Omistaja:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Siirrä valmiit:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Lopeta jakaminen jakosuhteeseen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Poista, kun jakosuhde on"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Kaistanleveyden rajoitukset"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Seurantapalvelimen tila:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Yksityinen torrent:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Muokkaa seurantapalvelimia"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Ylhäällä"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Alhaalla"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Lisää torrenteja"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_Verkko-osoite"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Lisää _keskeytetyssä tilassa"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Suosi ensimmäisiä / viimeisiä osia"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Ohita tiedoston tiivisteen tarkistus"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Ennakkovaraa levytila"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Ennakkovaraa levytila torrent-tiedostoille"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Torrent-yhteyksien enimmäismäärä"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Käytä kaikkiin"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Palauta oletukset"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Näytä Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "_Keskeytä istunto"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "_Palauta istunto"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Lata_usnopeuden rajoitus"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Lähet_ysnopeuden rajoitus"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Lopeta ja sulje taustaprosessi"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Muokkaa seurantapalvelimia"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "_Ylös"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "_Alas"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Lisää vertainen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Lisää vertainen IP:n perusteella"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Muokkaa seurantapalvelinta"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Seurantapalvelin:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Anna etäpolku"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Etäpolku"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Polku:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Luo torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Kansio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Etäpolku"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Tiedostot"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Web-lähteet"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Osan koko:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Merkitse yksityiseksi"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Lisää tämä torrent avoimeen istuntoon"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Valinnat"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Tallena .torrent nimellä"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Avaa latauskansio"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Keskeytä"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Jatka"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Jatka valittuja torrenteja."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Aset_ukset"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Jono"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Päivitä seurantapalvelin"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Poista to_rrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Pakota uudelleen_tarkistus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "_Siirrä latauskansio"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "nimike"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Valitse k_aikki"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Keskeytä kaikki"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "_Jatka kaikkia"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Yhteysrajoitus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Lähetys_paikkojen rajoitus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automaattisesti hallittu"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "_Muuta omistajuutta"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Lisää seurantapalvelin"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Lisää seurantapalvelimia"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Lisää verkko-osoite"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "Verkko-osoitteesta"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "Osoite:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Deluge-taustaprosessit"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Piilota tämä ikkuna"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Käynnistyksen valinnat"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Avaa tiedosto"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "_Näytä kansio"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Laajenna kaikki"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "_Ohita"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Matala"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Normaali"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_Korkea"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Deluge-tiimi"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent-sovellus"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge-BitTorrent-sovellus"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Lataa ja jaa tiedostoja BitTorrentin avulla"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Konsolivalinnat"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Konsolikomennot"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Kuvaus"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Komento"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Listaa käytettävissä olevat liitännäiset"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Näytä käytössä olevat liitännäiset"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Ottaa liitännäisen käyttöön"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Poistaa liitännäisen käytöstä"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Asenna liitännäinen .egg-tiedostosta"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Salasana"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "Yksi tai useampi komento"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Lopeta"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Sarakkeet"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Leveys"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Yleiset asetukset"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Kieli"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Komentorivitila"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Kansiot"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Siirrä valmistuneet sijaintiin"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Ennakkovaraa levytila"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Mistä"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Mihin"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Käytä satunnaisia portteja"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Sisään"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Ulos"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Yleinen kaistankäyttö"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Suurin yhteksien määrä"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Suurin lataajien määrä"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Suurin puoliavointen yhteyksien määrä"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Suurin yhteysyritysten määrä sekunnissa"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Nopeusraja IP:n yläpuolella"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Torrent-kohtainen kaistankäyttö"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Kyllä, lähetä anonyymeja tilastoja."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Taustaprosessin portti"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Salli etäyhteydet"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Yhteensä"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Jakosuhde"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Aikasuhde"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Aika (min)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Välityspalvelimen asetukset"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tyyppi"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Välimuistin koko (16 KiB:in lohkoissa)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr "Välimuistin vanheneminen (sekuntia)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Käytä"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "OK"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Valitse kieli"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "IP-osoite \"%s\" on väärin muodostettu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule-IP-lista (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer-teksti (Zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian-teksti (Pakkaamaton)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian-P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Estolista"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Virheellinen IP-osoite"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Virheellinen aloitus"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Virheellinen eväste"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Virheellinen versio"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Päivää"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Tarkista uusi lista joka:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Tuo estolista käynnistyksen yhteydessä"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Asetukset</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Lataa ja tuo estolista tarvittaessa."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Tarkista lataus ja tuo"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Lataa uusi estolista ja tuo se"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Pakota lataus ja tuonti"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Estolista on ajan tasalla"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Valinnat</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tyyppi:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Päivämäärä:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Tiedoston koko:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Tietoa</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrentin lataus valmis"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent on lisätty"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent poistettu"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Suorita"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Tapahtuma"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Lisää komento</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Komennot</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Yhteensopimaton valinta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Automaattinen lisäys"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Kaksoisnapsauta muokataksesi"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Polku"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Tarkkailuhakemistoa ei ole olemassa."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Polkua ei ole olemassa."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Hakemiston tarkkailun asetukset"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Valitse kansio"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Ota käyttöön tämä tarkkailuhakemisto"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Tarkkaile hakemistoa</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Poista .torrent lisäämisen jälkeen"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Lisää pääte lisäämisen jälkeen:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrentin tiedostotoiminnot</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Aseta latauskansio"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Latauskansio</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Siirrä valmistuneet</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Nimiö: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Nimiö</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Pää"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "Tässä valittu käyttäjä tulee olemaan torrentin omistaja."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Omistaja</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Suurin lähetysnopeus:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Yhteyksiä enintään:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Lähetyspaikkoja enintään:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Suurin latausnopeus:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Kaista</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automaattisesti hallittu:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Lisää keskeytettynä:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Sijoitus jonossa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Jono</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Tarkkaile hakemistoja:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "minuuttia"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 minuutti"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 sekunti"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekuntia"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Tilastot"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Jakajat/vertaiset"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Latausväri:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Lähetysväri:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Yhteyksien kuvaaja</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Kaistanleveyden kuvaaja</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "DHT-solmut:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Välimuistissa olevat DHT-solmut:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "DHT-torrentit:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Jakajat / vertaiset</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Kuvaajan värit</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Web-käyttöliittymä"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Delugen Web-käyttöliittymä ei ole asennettu, asenna käyttöliittymä\n"
+"ja yritä uudelleen"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Ota web-käyttöliittymä käyttöön"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Ota SSL käyttöön"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Kuuntele porttia:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Virheellinen nimike, sopivat merkit: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tyhjä nimike"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Nimike on jo olemassa"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Tuntematon nimike"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Tuntematon torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Nimikeas_etukset"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Poista nimike"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Lisää nimike"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Nimikevalinnat"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Nimike"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Nimikevalinnat</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Käytä kunkin torrentin enimmäisasetuksina:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Enintään"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Käytä jonoasetuksia:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Toteuta kansioasetukset:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 rivi seurantapalvelinta kohden)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aseta nimike automaattisesti:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Lisää nimike"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Lisää nimike</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Käytä sivupalkkia nimikkeiden lisäämiseen, muokkaamiseen ja "
+"poistamiseen.</b>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Nimikkeet</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Ilmoitusvilkku näytetty"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Ponnahdusilmoitus ei ole käytössä"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "libnotify ei ole asennettuna"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Ponnahdusilmoitus näytetty"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Ääni-ilmoitus ei käytössä"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame ei ole asennettu"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Ääni-ilmoitus epäonnistui %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Ääni-ilmoitus onnistui"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent valmis"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Torrent \"%(name)s\" sisältäen %(num_files)i tiedosto(a) on valmistunut."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Ilmoitukset"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Valitse äänitiedosto"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Sähköposti-ilmoitusta lähettäessä tapahtui virhe: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Sähköposti-ilmoitus lähetetty."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent \"%(name)s\" valmistui"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Tällä sähköpostilla ilmoitetaan, että Deluge on saanut valmiiksi latauksen "
+"”%(name)s”, joka koostuu %(num_files)i tiedostosta.\n"
+"Jotta et saisi näitä ilmoituksia enää, kytke pois päältä sähköposti-"
+"ilmoitukset Delugen asetuksista.\n"
+"\n"
+"Terveisin,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Tarjotinikonin vilkkuminen käytössä"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Ponnahdusilmoitukset käytössä"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Äänet käytössä"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Käyttöliittymäilmoitukset</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Vastaanottajat</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Palvelin vaatii TLS:n/SSL:n"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Sähköposti-ilmoitukset</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Tämä asetus ei tarkoita että vastaanotat ilmoituksia kaikista näistä "
+"tapahtumista."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Tilaukset"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Äänten mukautus"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Purkamo"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Pura kohteeseen:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Luo alikansio torrentin nimellä"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Tämä valinta luo torrentin nimisen alikansion valittuun kansioon ja "
+"tallentaa tiedostot siihen."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Ajastin"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr "<b>Aikataulu</b>"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Latausraja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Lähetysraja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktiiviset torrentit:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Hitaat asetukset</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Tiedostoselain"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Takaisin"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Seuraava"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "Koti"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Luo"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Ohje"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Kirjaudu ulos"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Tallenna"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "Tietoja - Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Tekijänoikeus 2007-2018 Deluge-tiimi"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Lisää yhteys"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Isäntä:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Siirrä"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Selaa"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Muokkaa yhteyttä"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Kirjaudu"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Kirjautuminen epäonnistui"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Kirjoitit väärän salasanan"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Julkinen"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Aseta enimmäisyhteydet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Latausnopeus"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Aseta enimmäislatausnopeus"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Lähetysnopeus"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Aseta enimmäislähetysnopeus"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protokollaliikenne sisään/ulos"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Yhdistä"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Pysäytä taustaprosessi"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Katkaise yhteys"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Käynnistä taustaprosessi"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Vaihda oletussalasana"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Suodattimet"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Lataus/lähetysraja"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Lähetysnopeuden rajoitus"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Yhteyksien raja"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Jakopaikkojen rajoitus"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Päivitä seurantapalvelin"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Pakota uudelleentarkistus"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Laajenna kaikki"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Tiedot"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Kommentti:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Tila:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Siirrä valmistuneet:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Yleiset"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Yksityinen"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Ladataan"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Tosi"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Ilmoita uudesta versiosta"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Keskeytä torrent"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Asenna liitännäinen"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Asenna"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Selaa..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Lähetetään liitännäistäsi..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Yhteyksiä enintään:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Enimmäislatausnopeus (KiB/s)"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Enimmäislähetysnopeus (KiB/s)"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Puoliavointen yhteyksien enimmäismäärä:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Yhteysyritysten enimmäismäärä sekunnissa:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Lähetyspaikkojen enimmäismäärä:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Välimuistin koko (16 KiB:in lohkoissa):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Pakota välityspalvelimen käyttö"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Käytä satunnaista porttia"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Palvelun tyyppi"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "Vanha:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Uusi:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Vahvista:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Palvelin"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Istunnon aikakatkaisu:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Yksityinen avain:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Varmenne:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr "Haluatko päivittää sivun nyt käyttääksesi uutta kieltä?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Päivitä"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "Virheellinen salasana"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Salasanat eivät täsmänneet!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "Vanha salasanasi ei ollut oikein!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "Vaihto onnistui"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "Salasanasi vaihdettiin onnistuneesti!"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Lisää osoitteesta"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Evästeet"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Torrentin lataaminen epäonnistui"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Tiedosto"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Lähetetään torrentia..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Torrentin lähettäminen epäonnistui"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Torrent ei ole kelvollinen"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "Siirrä valmistuneet -kansio"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Latausnopeus enintään"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Lähetysnopeus enintään"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Lisää pysäytetyssä tilassa"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Lataus"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "Lisäyspäivä:"
diff --git a/deluge/i18n/fo.po b/deluge/i18n/fo.po
new file mode 100644
index 0000000..33fff5b
--- /dev/null
+++ b/deluge/i18n/fo.po
@@ -0,0 +1,6164 @@
+# Faroese translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Faroese <fo@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Sjálvfyrisitið"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Kø"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Áland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikanskt Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua og Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Avstralia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Eysturríki"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Aserbajdsjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamaoyggjar"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Barain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesj"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Hvítarussland"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgia"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belis"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Butan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia-Hersegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botsvana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet oyggjin"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasilia"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Bretskt-indiska sjóøki"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Grønhøvdaoyggjarnar"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Cayman oyggjarnar"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Miðafrikalýðveldið"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Kjad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Kili"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Jólaoyggjin"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosøyggjarnar"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komorooyggjarnar"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cookoyggjarnar"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kosta Rika"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Fílabeinsstrondin"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Kýpros"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Kekkia"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danmørk"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Domingo lýðveldið"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekvador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egyptaland"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvator Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estland"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandsoyggjarnar"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Føroyar"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finnland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frakland"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Fransk Guinea"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Fransk Polynesien"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Fraklands suður øki"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Týskland"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grikkaland"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grønland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Gujana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard- og McDonald-oyggjarnar"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vatikanríkið"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Ísland"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Islamiska lýveldi av"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Írland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isle of Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Ísrael"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jameika"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kasakstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenja"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea, Tað Demokratiska Folkalýveldi"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korea, Lýveldi"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuvait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgisia"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Lettland"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liktenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litava"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luksemborg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malavi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Maleisia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivuoyggjarnar"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshalloyggjarnar"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Móritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Móritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotta"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Meksiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesia, tær sameindu statirnir av"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mosambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar (Burma)"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Stórabretland"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Leitarar"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Flyt fullgjørd til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Sambindingar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Niðurtøkuferð:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Uppsendingarferð:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Alment</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Navn:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Steðga fræan við lutfallinum:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Tak burtur við lutfall"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Boð"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP-listi (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ógyldug útgáva"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dagar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Kanna eftir nýggjum lista hvønn:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Innstillingar</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Kostir</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Slag:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Dato:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Fílustødd:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrentur er fullgjørdur"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrentur lagdur til"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Inna"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Hending"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Legg stýriboð til</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Stýriboð</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Gilda vev-mrkamót"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Gilda SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Lrti portur:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tómt spjaldur"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Spjaldrið finnst longu"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Ókent spjaldur"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Ókendur torrentur"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Spjaldra k_ostir"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Tak spjalu_r burtur"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "Legg spj_aldir til"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Spjaldra kostir"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Spjaldur"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Spjaldra kostir</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Mest"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Nýt sjálvvirkandi spjaldur:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Leg til spjaldur"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Leg til spjaldur</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>spjøldur</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Niðurtøkumark:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Uppsendingarmark:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Virknir torrentar"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/fr.po b/deluge/i18n/fr.po
new file mode 100644
index 0000000..06e17a7
--- /dev/null
+++ b/deluge/i18n/fr.po
@@ -0,0 +1,6311 @@
+# French translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2021-02-15 18:51+0000\n"
+"Last-Translator: Jean-Marc <Unknown>\n"
+"Language-Team: French <fr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "o"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "Kio"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "Mio"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "Gio"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "Tio"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "Kio/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "Mio/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "Gio/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "Tio/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Options générales"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Afficher ce message d'aide"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Afficher les informations de version"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Définir le chemin du dossier de configuration"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "Options de contrôle de processus"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Options du démon"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "Adresse IP pour écouter les connexions UI"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Port pour écouter les connexions UI"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "Adresse IP d'écoute des connexions BitTorrent"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+"Nom ou adresse IP de l'interface réseau pour les connexions BitTorrent "
+"sortantes."
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Tous"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Actif"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Allocation"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Vérification"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "En Téléchargement"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Partage"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Suspendu"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "En file d’attente"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Erreur"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nom"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progression"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "État"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Taille"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Téléchargé"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Envoyé"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Restant"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Ratio"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Vitesse de réception"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Vitesse d'envoi"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limite de réception"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Limite d'envoi"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Connexions max."
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Ports max. d'émission"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Pairs"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Sources"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Utilité"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Sources : Pairs"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Ajouté"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Traceur"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Dossier de téléchargement"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Temps de partage"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Dernière activité"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Terminé"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Temps restant"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Partagé"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Privilégier premiers/derniers"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Téléchargement séquentiel"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Auto-géré"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Arrêter au ratio"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Supprimer au ratio"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Propriétaire"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Blocs"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Alertes"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Annonce valide"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Annonce envoyée"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Téléchargements"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bande passante"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "File d’attente"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Réseau"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Serveur mandataire"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Divers"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Démon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Modules"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Ignorer"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"Deluge ne peut pas trouver l'exécutable « deluged », vérifier que le paquet "
+"déluge est installé ou ajouté à votre PATH."
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Åland, îles"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanie"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algérie"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Îles Samoa Américaines"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorre"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarctique"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua-et-Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentine"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Arménie"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australie"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Autriche"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaïjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahreïn"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbade"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Biélorussie"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgique"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Bénin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudes"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhoutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivie"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnie-Herzégovine"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Île Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brésil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Territoire britannique de l'océan Indien"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgarie"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodge"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameroun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cap-Vert"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Îles Caïman"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "République Centrafricaine"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tchad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chili"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Chine"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Île Christmas"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Îles Cocos"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombie"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Les Comores"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "République Démocratique du Congo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Îles Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Côte d'Ivoire"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croatie"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Chypre"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "République tchèque"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danemark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominique"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "République dominicaine"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Équateur"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Égypte"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Guinée équatoriale"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Érythrée"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonie"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Éthiopie"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Îles Malouines"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Îles Féroé"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlande"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "France"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "La Guyane Française"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polynésie française"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Terres Australes Françaises"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambie"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Géorgie"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Allemagne"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grèce"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groënland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenade"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernesey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinée"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinée-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyane"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haïti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Îles Heard et McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Saint-Siège (État du Vatican)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong-Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hongrie"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islande"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Inde"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonésie"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, République islamique d'"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlande"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Île de Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israël"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italie"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaïque"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japon"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordanie"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Corée, République populaire démocratique de"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Corée, République de"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Koweït"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirghizstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Lettonie"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Liban"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libéria"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyenne, Jamahiriya arabe"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituanie"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxembourg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macédoine, ancienne République yougoslave de"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaisie"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldives"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malte"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Îles Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritanie"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Île Maurice"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexique"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "La Micronésie, états fédérés de"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavie"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolie"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroc"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Birmanie"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibie"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Népal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Pays-Bas"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antilles néerlandaises"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nouvelle-Calédonie"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nouvelle-Zélande"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niué"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Île Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Îles Mariannes du Nord"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norvège"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Territoire palestinien, occupé"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papouasie-Nouvelle-Guinée"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Pérou"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Philippines"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Pologne"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Porto-Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Île de la Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Roumanie"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Russie"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Sainte-Hélène"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint-Christophe-et-Niévès"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Sainte-Lucie"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint-Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre et Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint-Vincent-et-les-Grenadines"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Saint-Marin"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tomé-et-Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arabie Saoudite"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Sénégal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbie"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapour"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovaquie"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovénie"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Îles Salomon"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalie"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Afrique du Sud"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Géorgie du Sud et les Îles Sandwich du Sud"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Espagne"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri-Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Soudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard et Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suède"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Suisse"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syrie"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Taïwan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadjikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzanie"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thaïlande"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad et Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisie"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turquie"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Îles Turques-et-Caïques"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Ouganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Emirats Arabes Unis"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Royaume-Uni"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "États-Unis"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Îles mineures éloignées des États-Unis"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Ouzbékistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Vénézuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Îles Vierges britanniques"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Îles Vierges américaines"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis-et-Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Sahara occidental"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yémen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambie"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Options de l'interface utilisateur"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+"Définir l'interface utilisateur par défaut à exécuter, lorsqu'aucune "
+"interface utilisateur n'est spécifiée"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Options du serveur web"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "Adresse IP sur laquelle le serveur web doit écouter"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Port sur lequel le serveur web doit écouter"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+"Définissez le chemin de base sur lequel l'interface utilisateur s'exécute"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Forcer le serveur Web à utiliser SSL"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Forcer le serveur Web à désactiver SSL"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Le démon n'existe pas"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Le démon n'est pas en cours d'exécution"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nom de Fichier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Rangé"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Choisissez un fichier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Annuler"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Ouvrir"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Choisissez un répertoire"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Sauvegarder le fichier .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "Enregi_strer"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Fichiers torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Tous les fichiers"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Entrez votre mot de passe pour afficher Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Entrez votre mot de passe pour quitter Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Modifier le chemin"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Supprimer le chemin"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Appliquer aux sélectionnés"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Copyright %(year_start)s-%(year_end)s équipe Deluge"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Un programme de pair-à-pair de partage de fichiers\n"
+"utilisant le protocole BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Client:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Développeurs actuels:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Anciens développeurs ou contributeurs:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Serveur:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Ajouter des torrents (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "Torrent(s) en double"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+"Vous ne pouvez pas ajouter le même torrent deux fois. %d torrents ont déjà "
+"été ajoutés."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Fichier non valable"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Veuillez attendre les fichiers..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "Impossible de télécharger les fichiers pour ce magnet"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Sélectionner d'un .torrent à ouvrir"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL incorrecte"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "n'est pas une URL valide."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Téléchargement en cours..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Téléchargement échoué"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Échec du téléchargement:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_Non"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Oui"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Fermer"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Détails:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "S'authentifier"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "Se _connecter"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nom d'utilisateur :"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Mot de passe :"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Modifier le compte"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Modifier le compte existant"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "A_ppliquer"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Nouveau compte"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Créer un nouveau compte"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Ajouter"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Niveau d'authentification :"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Protégé par mot de passe"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_Valider"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Autres…"
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Non connecté"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Connexions (limite)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Vitesse de téléchargement (limite)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Vitesse de téléversement (limite)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nœuds DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Espace disque libre"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Adresse IP externe"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "n/a"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Problème de port</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Aucune connexion entrante, vérifiez la redirection de port"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Vitesse limite de téléchargement"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Définir la vitesse maximale de téléchargement"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Vitesse limite de téléversement"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Définir la vitesse maximale de téléversement"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Connexions entrantes"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Définir le nombre maximum de connexions entrantes"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent} %"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state} : {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Jamais"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Oui"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Non"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priorité"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Tous"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_État"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Détails"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Fichiers"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Pairs"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Options"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Traceurs"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Non connecté..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Illimité"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Reçu"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Émis"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"Un démon Deluge (deluged) est déjà en cours d'exécution.\n"
+"Pour utiliser le mode autonome, arrêtez le démon local et redémarrez Deluge."
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"Seul le mode client léger est disponible car libtorrent n'est pas installé.\n"
+"Pour utiliser le mode autonome, veuillez installer le paquet libtorrent."
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"Seul le mode client léger est disponible en raison d'une erreur "
+"d'importation inconnue.\n"
+"Pour utiliser le mode autonome, veuillez consulter les journaux pour plus de "
+"détails sur l'erreur."
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "Continuer en mode client léger ?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Changer le mode d'interface utilisateur"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Hors ligne"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "En ligne"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Connecté"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Statut"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Hôte"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Version"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Démarrer le démon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Arrêter le démon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "Se _déconnecter"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Incapable de démarrer le démon"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Client incompatible"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Échec de connexion"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Modifier l'hôte"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Erreur lors de l'ajout d'hôte"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "Erreur lors de la mise à jour de l'hôte"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Nom d'utilisateur"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Niveau"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Activé"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Greffon"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Attention"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Vous devez choisir une langue"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+"Vous devez redémarrer l'interface utilisateur de deluge pour que les "
+"changements prennent effet."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "Client léger"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Autonome"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "Voulez-vous redémarrer pour utiliser le mode %s ?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Séléctionner de Module"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Module Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Erreur côté serveur"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "Une erreur s'est produite sur le serveur"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Erreur d'ajout de compte"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Échec d'authentification"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "Une erreur s'est produite lors de l'ajout d'un compte"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Erreur de mise à jour du compte"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "Une erreur s'est produite lors de la mise à jour du compte"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Supprimer le compte"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+"Voulez-vous vraiment supprimer le compte avec le nom d'utilisateur "
+"« %(username)s » ?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Erreur de suppression de compte"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Échec d'authentification"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "Une erreur s'est produite lors de la suppression du compte"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "États"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Traceurs"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Aucun"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Étiquettes"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Aucune étiquette"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Aucun propriétaire"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Version du client</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents en file d'attente"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent rajouté à la queue"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr "Le torrent est partagé entre d'autres utilisateurs de Deluge ou non."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Supprimer les torrents sélectionnés ?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Total de %s torrents sélectionnés"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Mettre en illimité"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Activé"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Désactivé"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Désactiver"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Activation..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "Ports d'émission de pair"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Définir le nombre maximum de ports d'émission"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Arrêter le partage dès ce ratio atteint"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Erreur de changement de propriété"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "Une erreur s'est produite pendant le changement de propriété."
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresse"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "Options GTK"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+"Ajouter un ou plusieurs fichiers torrent, URL de torrent ou URI de magnet à "
+"une instance Deluge GTK en cours d'exécution"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Création d'un torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents en file d'attente"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Ajouter les torrents en file d'attente"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Supprimer"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "Eff_acer"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Ajouter automatiquement les torrents à la connexion"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fichier"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Ajouter un Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Créer un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Quitter & _Eteindre le démon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Quitter"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Editer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Préférences"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Gestionnaire de _connexion"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Affichage"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Barre d'ou_tils"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Panneau latérale"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Barre d'état"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "O_nglets"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Colonnes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Rechercher..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Barre _latérale"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Afficher les catégories _vides"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Afficher les _traceurs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "Afficher les pr_opriétaires"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Aide"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "Page d'_accueil"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Foire Aux Questions"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Communauté"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_À propos"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Ajouter un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Ajouter un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Supprimer le(s) torrent(s)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Supprimer le(s) torrent(s)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"Filtrer les torrents par nom.\n"
+"Ceci filtrera les torrents pour la sélection actuelle dans le panneau "
+"latéral."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Filtrer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Mettre en pause les torrents sélectionnés"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Mettre en pause"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Reprendre les torrents sélectionnés"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Reprendre"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Mettre le torrent dans la queue"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Déplacer vers le haut"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Déplacer le torrent vers le bas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Ajouter à la fin"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Préférences"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Gestionnaire de connexion"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Fermer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Filtre :"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Effacer la recherche"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "Res_pecter la casse"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forcé"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Désactivé"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Poignée de main"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "Flux complet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "L'un ou l'autre"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 (avec authentification)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP (avec authentification)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "L'application autonome"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "Client léger"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Connecter au démon Deluge (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Mode application"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Afficher la vitesse actuelle dans la barre de titre"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Afficher la fenêtre lors de l'ajout d'un torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Terminé :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Téléchargement :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "En attente :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Manquant :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "_Rétablir"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Revenir à la couleur par défaut"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Couleurs de bloc"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Fenêtre principale"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Activer l'icône de la zone de notification"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "Indicateur d'application"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Zone de notification"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimiser dans la zone de notification à la fermeture"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Démarrer dans la zone de notification"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Protéger par un mot de passe"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Zone de notification"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Être averti(e) des nouvelles versions"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Mises à jour"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Langue système"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Langue</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Déplacer les terminés vers:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copier les fichiers .torrent vers :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Supprimer la copie du fichier .torrent lors de sa suppression"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Supprimer la copie du fichier torrent créé quand le torrent est supprimé"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Télécharger vers:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Dossiers de téléchargement"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Télécharger en priorité les premiers et derniers blocs"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Télécharger en priorité le début et la fin des fichiers"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Téléchargement séquentiel"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Ajouter le torrent en mode pause"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Pré-allouer l'espace disque"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Pré-alloue l'espace disque pour les fichiers torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Ajouter des options de torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Toujours afficher"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Mettre la boîte de dialogue au premier plan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Tentatives de connexion par seconde :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Connexions semi-ouvertes :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Nombre maximum de connexions autorisées. Mettre -1 pour illimité."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Connexions:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "Nombre maximal de ports d'émission. Mettre -1 pour illimité."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Ports d'émission :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Vitesse maximale de réception pour tous les torrents. Mettre -1 pour "
+"illimitée."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Vitesse de réception:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Vitesse maximale d'envoi pour tous les torrents. Mettre -1 pour illimitée."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Vitesse de téléversement :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorer les limites sur le résau local"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Inclure les en-têtes IP dans la limite de bande passante"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Si l'option est cochée, les en-têtes TCP/IP estimés sont pris en compte dans "
+"la limitation de bande passante. Cela permet d'éviter que le trafic total "
+"dépasse la limite."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Limites globales de bande passante"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Le nombre maximal de ports d'envoi simultanés par torrent. Mettre -1 pour "
+"illimité."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Le nombre maximal de connexions par torrent. Mettre -1 pour illimité."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "Vitesse d'émission maximale par torrent. Mettre -1 pour l'illimité."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Limites de bande passante par torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Nouveaux torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Partage :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Total :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Ignorer les torrents lents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+"Privilégier le partage de torrents plutôt que le téléchargement de torrents."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Torrents actifs"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Ratio de partage :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Temps (min) :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Mettre le torrent en pause"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Ratio de partage atteint"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"L'adresse IP de l'interface pour écouter les connexions bittorrent "
+"entrantes. Laisser vide si vous souhaitez utiliser le réglage par défaut."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Adresse entrante"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Aléatoire"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Utilise des ports aléatoires compris entre 49152 et 65525"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Port actif:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Tester le port actif"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Port entrant"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"Nom ou adresse IP de l'interface réseau pour les connexions BitTorrent "
+"sortantes (laissez vide par défaut).\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Interface sortante"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "De:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "À :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Ports sortants"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Sortant :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Entrant :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Niveau:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Chiffrement"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocol de mappage de port NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Échange de client"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+"Échange des pairs entre les clients (la désactivation nécessite un "
+"redémarrage)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"L'explorateur des services locaux a trouvé des pairs sur votre réseau local."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"La DHT (Distributed Hash Table) peut améliorer le nombre de connexions "
+"actives."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Octect TOS pour les pairs :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nom d'hôte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "Masquer l'identité du client"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Taille du cache (blocs de 16 Kib) :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Le nombre de secondes entre la dernière écriture d'une pièce de la cache "
+"d'écriture et l'écriture forcée vers le disque de cette pièce. La valeur par "
+"défaut est de 60 secondes."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Expiration du cache (en secondes) :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Paramètres"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Le nombre total de blocs de 16BiB écrits au disque depuis le début de la "
+"session."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocs écrits:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Le nombre total d'opérations d'écritures effectuées depuis le début de la "
+"session."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Écritures :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Le ratio (blocs_écrits - écritures) / blocs_écrits représente le nombre "
+"d'écritures sauvegardés sur le nombre total d'écritures. C'est en fait une "
+"sorte de ratio de succès d'accès au cache d'écriture."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Ratio d'accès au cache d'écriture :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Écrire"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Le nombre de blocs qui sont demandés par le moteur bittorrent (provenant des "
+"pairs), qui ont été servis par le disque ou le cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocs lus :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Le nombre de blocs qui ont été servis par la cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Nombre de bloc lus :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Le ratio de succès d'accès au cache de lecture."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Ratio de bloc lus sur le cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Le nombre total d'opération de lectures qui ont été effectuées depuis le "
+"début de la session."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lectures:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Lire"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Le nombre de blocs de 16 KiB qui sont présentement dans la cache du disque, "
+"incluant la cache de lecture et la cache d'écriture."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Taille du cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Taille du cache de lecture :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "Actualise_r"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Aidez-nous à améliorer Deluge en envoyant votre version de Python, de PyGTK, "
+"de votre système et de votre processeur. Absolument aucune autre information "
+"n'est envoyée."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Oui, envoyer des statistiques anonymes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Informations système"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Emplacement :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Si Deluge ne peut pas trouver le fichier de base de données à cet "
+"emplacement, il va utiliser DNS pour identifier le pays du pair."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "Base de données GeoIP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Associer à Deluge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Liens magnet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Port du démon :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Autoriser les connexions à distance"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Connexions"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+"Vérifier régulièrement la présence d'un nouvelle version sur le site web"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Supprimer"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Comptes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Version :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Auteur :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Page d'accueil :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Adresse électronique de l'auteur :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informations"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Installer"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Rechercher plus de modules..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Supprimer le(s) torrent(s) sélectionné(s) ?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Inclure les fichiers téléchargés"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(Ceci est permanent !)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Ajouter un pair"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "nom_d_hote:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Propriétés"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Général</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Afficher l'entrée du chemin"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Afficher le sélecteur de fichier"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Afficher le nom de dossier"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Type de sélecteur de chemin"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Activer la saisie semi-automatique"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Afficher les fichiers masqués"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Définir une nouvelle touche"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+"Appuyer sur cette touche afin de définir de nouveaux raccourcis clavier pour "
+"déclencher la saisie semi-automatique"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Saisie semi-automatique"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Chemin d'enregistrement"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl + S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl + E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl + R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl + H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl + D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Chemin par défaut"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Raccourcis clavier"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Sélectionner un répertoire"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Chemins sauvegardés"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "colonne"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Annuler"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Ouvrir"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Ajouter"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Ajouter la valeur d'entrée actuelle à la liste"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Édition"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Modifier l'entrée sélectionnée"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Supprimer"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Supprimer l'entrée sélectionnée"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Déplacer l'entrée sélectionnée vers le haut"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Déplacer l'entrée sélectionnée vers le bas"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Par défaut"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Aucun chemin défini par défaut"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Ouvrir la fenêtre des propriétés"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Ajouter un info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Info_hash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Traceurs :"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Ajouter un hôte"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "Déplacer le dossier des téléchargements"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destination:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nouvelle version"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Aller au site Web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Nouvelle version disponible !"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Version disponible :"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Version du serveur"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Version actuelle :"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Ne plus afficher ce message à l'avenir"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Vitesse de téléchargement :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Vitesse de téléversement :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Téléchargé :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Téléversé :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Sources :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Pairs :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Disponibilité :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Rang de partage :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Dernier transfert :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Temps actif :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Temps de partage :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Pièces :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nom:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Dossier de téléchargement :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Ajouté :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Taille totale :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Fichiers totaux :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Hachage :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Créé par :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Commentaires :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Propriétaire :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Déplacer les fichiers terminés :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Arrêter le partage dès ce ratio atteint :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Supprimer quand le ratio est atteint"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Limites de la bande passante"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Traceur actuel :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Traceurs totaux :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "État du traceur :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Prochaine annonce :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Torrent privé :"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Modifier les traceurs"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "En Haut"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "En Bas"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Ajouter des torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Ajouter en _mode pause"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Privilégier les premiers/derniers blocs"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Ignorer l'analyse du fichier de hachage"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Pré-allouer l'espace disque"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Pré-allouer l'espace disque pour les fichiers torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "Vitesse de réception maximale du torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Vitesse de téléversement maximale du torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Connexions maximum du torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Appliquer à tous"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Revenir aux réglages par défaut"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Afficher Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "_Mettre la session en pause"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "_Reprendre la session"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Vitesse limite de _téléchargement"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Vitesse limite d'_envoi"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Quitter et éteindre le démon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Modifier les traceurs"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Ajouter un pair"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Ajouter un pair avec son IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Modifer le traceur"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Traceur :"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Entrer le chemin distant"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Chemin distant"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Chemin:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 Kio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 Kio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 Kio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 Kio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 Kio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 Mio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 Mio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 Mio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 Mio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 Mio"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Créer un torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Dossier"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Chemin distant"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Fichiers"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Sources web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Taille des pièces :"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Marquer comme Privé"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Ajouter ce torrent à la session"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Paramètres"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Sauvegarder le .torrent sous"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Ouvrir le dossier de téléchargement"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pause"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Repren_dre"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Reprendre les torrents sélectionnés"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opt_ions"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Mettre en attente"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Act_ualiser le traceur"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Supprimer le(s) torrent(s)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Forcer la re-vérification"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "étiquette"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Tout sélectionner"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Suspendre tout"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Tout reprendre"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Nombre de _connexions maximum"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Nombre d'_envois maximum"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "Arrêter le partage dès ce _ratio atteint :"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Gestion automatique"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "_Changer la propriété"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Ajouter un traceur"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Ajouter des traceurs"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Ajouter une URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "Depuis une URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Démons de Deluge"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Connexion automatique au démon sélectionné"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Masquer cette boîte de dialogue"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Options de démarrage"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Ouvrir le fichier"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "Afficher le do_ssier"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Tout décompresser"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "_Ignorer"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Normal"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "L'équipe de Deluge"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr "Deluge est un client BitTorrent multiplate-forme léger et libre."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Client BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Client BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Télécharge et partage des fichiers via BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "Nom d'utilisateur du démon Deluge à utiliser lors de la connexion"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "Mot de passe du démon Déluge à utiliser lors de la connexion"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Description"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Commande"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr "Alias « %s »"
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Valeur à définir"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Supprime également les données du torrent"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "Lister les torrents correspondants sans les supprimer."
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Télécharger le dossier pour le torrent"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Déplacer le torrent terminé dans ce dossier"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Liste les greffons disponibles"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Affiche les greffons activés"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Active un greffon"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Désactive un greffon"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "Recharger la liste des greffons disponibles"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Installer un greffon depuis un fichier .egg"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Ne pas afficher l'état du torrent (améliore la vitesse de commande)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Mot de passe"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "Le nouvel état"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "Une ou plusieurs commandes"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Afficher plus d'informations par torrent."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+"Afficher des informations plus détaillées, notamment les fichiers et les "
+"pairs."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Sélectionner l'hôte"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Quitter"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Supprimer l'hôte"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "Erreur lors de l'ajout de l'hôte"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Colonnes"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Largeur"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Options générales"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "Sonnerie du système à la fin du téléchargement"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Langue"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "Ne pas stocker de doublons dans l'historique"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+"Le troisième onglet répertorie tous les torrents restants en mode ligne de "
+"commande"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Dossiers"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Télécharger vers"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Pré-allouer de l'espace disque"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Ports entrants"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "De"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Destination"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Utiliser des ports aléatoires"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Interface entrante"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr "Adresse IP de l'interface à écouter (laissez vide par défaut) :"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"Nom ou adresse IP de l'interface réseau pour les connexions BitTorrent "
+"sortantes (laissez vide par défaut) :"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Entrant"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Sortant"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Utilisation globale de bande passante"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Connexions maximum"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Slots d'envoi maximum"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Vitesse de téléchargement maximale (kio/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Vitesse de téléchargement maximale (kio/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Connexions sémi-ouvertes maximales"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Tentatives de connexions maximales par seconde"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Inclure les entêtes IP dans la limite de bande passante"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Utilisation de bande passante par torrent"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Oui, veuillez envoyer des statistiques anonymes."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Autoriser les connexions à distance"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Total"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Taux de partage"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Temps (min)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Paramètres du serveur mandataire"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Type"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Nom d'hôte"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Blocs écrits"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "Écritures"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Blocs lus"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr "Lectures"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr "Taille du cache"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr "Lire la taille du cache"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Appliquer"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "Valider"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Choisir la langue"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr "IP {!white,blue!}%s{!status!}"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "L'adresse IP « %s » est mal formée"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Liste d'IP Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Texte SafePeer (zippé)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Texte PeerGuardian (non compressé)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "P2B PeerGuardian (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Liste de blocage"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Adresse IP incorrecte"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Leader invalide"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Code magique invalide"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Version invalide"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Jours"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Vérifier la présence d'une nouvelle liste tous les:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importer la liste de blocage au démarrage"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Préférences</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Télécharger le fichier de liste de blocage si nécessaire et importer le "
+"fichier."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Vérifier le téléchargement et l'importer"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Télécharger une nouvelle liste de blocage et l'importer."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forcer le téléchargement et importer"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "La liste de blocage est à jour"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Options</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Type :"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Date :"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Taille du fichier :"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informations</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Liste blanche</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent complet"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent ajouté"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent supprimé"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Exécuter"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Événement"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Ajouter une Commande</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Commandes</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Option incompatible"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Ajout Automatique"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Double-cliquer pour permuter"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Double-cliquer pour éditer"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Chemin"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Le dossier à surveiller n'existe pas."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Le chemin n'existe pas."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Propriétés du dossier surveillé"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Si un fichier .torrent est ajouté dans ce répertoire,\n"
+"il sera ajouté à la session."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Sélectionner un dossier"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Activer ce dossier surveillé"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Dossier surveillé</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Supprimer le ficher torrent après ajout"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Une fois le torrent ajouté à la session,\n"
+"le fichier .torrent sera supprimé."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Ajouter l'extension après l'ajout:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"Une fois le torrent ajouté à cette session,\n"
+"une extension sera ajoutée au .torrent\n"
+"et il restera dans le même répertoire."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".ajouté"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"Une fois le torrent ajouté à cette session,\n"
+"le .torrent sera copié dans le répertoire choisi\n"
+"et supprimé du dossier de surveillance."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+"Une fois le torrent supprimé de la session,\n"
+"supprimer également le fichier .torrent utilisé pour l'ajouter."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Action sur le fichier Torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Définir le dossier de téléchargement"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+"Ce dossier sera celui où les données des torrents seront téléchargées."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Dossier de téléchargement</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "Définir le dossier des fichiers terminés"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Déplacer les fichiers téléchargés</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Étiquette: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Étiquette</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Général"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "L'utilisateur sélectionné ici sera le propriétaire du torrent."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Propriétaire</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Vitesse maximale d'envoi :"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Nombre maximal de connexions :"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Nombre maximum d'envois simultanés :"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Vitesse maximale de téléchargement :"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bande passante</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Géré automatiquement:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Ajout suspendu:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Mettre en attente dans:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>File d'attente</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Dossiers surveillés:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "minutes"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 minute"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 seconde"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "secondes"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Statistiques"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Résolution"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Sources/pairs"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Couleur de téléchargement :"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Couleur de téléversement :"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Graphique de connexions</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Graphique de bande passante</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "Nœuds DHT :"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Nœuds DHT mis en cache :"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "Torrents DHT :"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Sources/pairs</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Couleurs de graphique</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Interface Web"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"L'interface web de Deluge n'est pas installée, veuillez installer "
+"l'interface et réessayez"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Activer l'interface web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Activer le SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Port d'écoute :"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etiquette invalide, caractères valides: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etiquette vide"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "L'étiquette existe déjà"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etiquette inconnue"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent inconnu"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Options du label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Retirer le label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Ajouter Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Options des étiquettes"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Texte"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Options des étiquettes</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Appliquer les paramètres maximum par torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Appliquer les paramètres de la file d'attente:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Appliquer les paramètres du dossier :"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 ligne par traceur)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Appliquer automatiquement l'étiquette:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Ajouter une étiquette"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Ajouter une étiquette</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Utiliser le panneau latéral pour ajouter, modifier ou supprimer des "
+"étiquettes.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Étiquettes</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Notification clignotante affichée"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "La notification par popup n'est pas activée."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "libnotify n'est pas installé"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Popup de notification affiché"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "La notification sonore n'est pas activée"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame n'est pas installé"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "La notification sonore a échoué %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "La notification sonore a réussi"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent terminé"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Le téléchargement du torrent « %(name)s » comportant %(num_files)i "
+"fichier(s) est terminé."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Notifications"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Choisissez un fichier son"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+"Une erreur est survenue lors de l'envoi du courriel de notification : %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "Le serveur n'a pas répondu correctement à la commande HELO : %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+"Le serveur a refusé la combinaison nom d'utilisateur/mot de passe : %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Courriel de notification envoyé."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent terminé « %(name)s »"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Vous recevez ce courriel parce que Deluge a terminé de télécharger "
+"\"%(name)s\", qui inclut %(num_files)i fichiers.\n"
+"Pour ne plus recevoir ces alertes, désactivez simplement la notification par "
+"courriel dans les préférences de Deluge.\n"
+"\n"
+"Merci,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Icône de notification clignotante activée"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Popups activés"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Son activé"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Notifications de l'interface utilisateur</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Destinataires</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Le server requiert TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Notifications par courriel</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Cette configuration ne signifie pas que vous recevrez des notifications pour "
+"chaque événements."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Abonnements"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Personnalisation sonore"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Extracteur"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extraire vers :"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Créer un sous-répertoire avec le nom du torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Cette option crée un sous répertoire en utilisant le nom du torrent. Ce sous "
+"répertoire est situé dans le répertoire sélectionné pour l'extraction des "
+"données."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Planificateur"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limite de téléchargement:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limite d'envoi:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrents actifs"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Téléchargements en cours:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Partages actifs :"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Limites</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Explorateur de fichiers"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Précédent"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Suivant"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "Accueil"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Créer"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Aide"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Se déconnecter"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Sauvegader"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "À propos de Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Copyright 2007-2018 L'équipe de Deluge"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Supprimer avec les données"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Ajouter une connexion"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Hôte:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "Impossible d'ajouter l'hôte : {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Déplacer"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Parcourir"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Modifier la connexion"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "Impossible de modifier l'hôte"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Nom d'utilisateur"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Échec d'authentification"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Vous avez saisi un mot de passe incorrect"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Public"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Dernier transfert"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Nombre maximum de connexions"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Vitesse de téléchargement"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 Kio/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 Kio/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 Kio/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 Kio/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 Kio/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Vitesse de téléchargement maximale"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Vitesse d'émission"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Vitesse d'émission maximale"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Trafic du protocole (réception/envoi)"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "Espace libre dans le dossier de téléchargement"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Connecter"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Arrêter le démon"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Se déconnecter"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Démarrer le démon"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Changer le mot de passe par défaut"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Nous recommandons de changer le mot de passe par défaut. <br><br>Souhaitez-"
+"vous le changer maintenant ?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "Hôte du traceur"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtres"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "Connexion restaurée"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "Connexion perdue"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "La connexion au serveur web a été perdue !"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "Perte de connexion au serveur web"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Vitesse limite de téléchargement"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Vitesse limite d'envoi"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Limite de connection"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limite d'envoi par pair"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Mettre à jour le traceur"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Forcer la re-vérification"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Tout développer"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Détails"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Commentaire :"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "État :"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Déplacer les fichiers terminés :"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Général"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privé"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Chargement"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Vrai"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Être averti des nouvelles versions"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Aidez-nous à améliorer Deluge en envoyant votre version de Python, de PyGTK, "
+"de votre système et de votre processeur. Absolument aucune autre information "
+"n'est envoyée."
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Mettre le torrent en pause"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Installer un greffon"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Installer"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr "Sélectionner un egg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr "Greffon Egg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Parcourir..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Téléversement de votre greffon..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Nombre maximum de connexions :"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Vitesse maximum de réception (Kio/s) :"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Vitesse maximale d'émission (Kio/s) :"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Nombre maximal de connexions semi-ouvertes :"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Nombre de tentatives de connexion par seconde :"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Nombre maximum de ports d'émission :"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Taille du cache (blocs de 16 Kio) :"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "En trouver plus"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Utiliser un port aléatoire"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Type de service"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr "Afficher les filtres avec zéro torrent"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr "Autoriser l'utilisation de plusieurs filtres en même temps"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Nouveau :"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Confirmer :"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Serveur"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Délai d'expiration de la session :"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr "Activer SSL (chemins relatifs au dossier de configuration Deluge)"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Clé privée :"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Certificat :"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+"Voulez-vous actualiser la page maintenant pour utiliser la nouvelle langue ?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Rafraîchir"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "Mot de passe non valide"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Vos mots de passe ne correspondent pas !"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "Votre ancien mot de passe était incorrect !"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "Changement réussi"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "Votre mot de passe a été modifié avec succès !"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Ajouter depuis une URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Cookies"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Impossible de télécharger le torrent"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fichier"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Infohash"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Téléversement de votre torrent..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Impossible de téléverser le torrent"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Torrent non valide"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Vitesse max. de téléchargement"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Vitesse max. de téélversement"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Ajouter en mode pause"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Réception"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "Temps restant estimé :"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
+
+#~ msgid "<b>Language</b>"
+#~ msgstr "<b>Langue</b>"
diff --git a/deluge/i18n/fy.po b/deluge/i18n/fy.po
new file mode 100644
index 0000000..aa217c6
--- /dev/null
+++ b/deluge/i18n/fy.po
@@ -0,0 +1,6166 @@
+# Frisian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Frisian <fy@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Flater"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Namme"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Foargong"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Steat"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Grutte"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Delhelle"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Uploaden"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Ratio"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Delhelsnelheid"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Uploadsnelheid"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Bskber"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Tafoecht"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Tiid plm"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Earste/lêst foarrang"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatysk beheard"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Dielen:"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Warskôging"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Oankondiging OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Oankondiging ferstjoerd"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Ynterface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Delhellingen"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bânbreedte"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Rij"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Netwurk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Oars"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Ynfoegtapassings"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Triemnamme"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Tier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "In triem kieze"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "In map kieze"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ".torrent triem bewarje"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent-triemen"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Alle triemen"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Details:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Brûkersnamme:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Wachtwurd:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Oars..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Net ferbûn"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Nodes"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ja"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nee"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioriteit"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Steat"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Details"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Triemen"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opsjes"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Omleech"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Omheech"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Brûkersnamme"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivo"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Ynskeakele"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Ynstekker"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Ynstekker kieze"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Ynstekker eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackers"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Neat"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Gjin label"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents yn rij"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent yn rij"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Oan"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Út"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Útskeakelje"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adres"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Torrent oanmeitsje..."
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents yn rij"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "Fuo_rtsmite"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Bestân"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "Torrent t_afoegje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "Torrent oanmeitsje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "Ofslute"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "Bij_wurkje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Ferbiningsbehearder"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "By_ld"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Ar_kbalken"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sydbalke"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Steat_balke"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolommen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Sydbalke"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Nul hits sjen litte"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "_Trackers sjen litte"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Help"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Faak stelde fragen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Torrent tafoegje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Torrent tavoegje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Torrent fuortsmite"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Torrent fuortsmite"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Selektearre torrents skoftsje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Skoftsje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Selektearre torrents ferfetsje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Ferfetsje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Torrent omheech yn rij"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Omheech yn rij"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Torrent omleech yn rij"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Omleech yn rij"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Foarkarren"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Ferbiningsbehearder"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forsearre"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Útskeakele"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Fûskjen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Beide"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Sesjesnelheid sjen litte yn titelbalke"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Systeemfak-byldkaai ynskeakelje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Yn systeemfak opstarte"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Systeemfak mei wachtwurd befeiligje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Foltôge ferplaatse nei:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ".torrent-triem kopiearje nei:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Delhelje nei:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Altyd sjen litte"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Finster selekteare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Ferbinings:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Delhelsnelheid:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Uploadsnelheid:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Willekeurich"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Ynstelde poartte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Poartte teste"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Fan:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Nei:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Fersiifering"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peerútwikseling"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Hostnamme:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Poarte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ja, statistyken opstjoere"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon poartte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Poartte"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Ferbiningen op ofstân tastean"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Ferbinings"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Om de safolle tiid website kontroleare op nij útjeftes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Ferzje:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Auteur:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Haadside:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Email auteur:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Ynfo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Peer tafoegje"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "host:poart"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Algemien</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Ôfbrekke"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Tafoegje"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Fuortsmite"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Infohash tafoegje"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackers:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Host tafoegje"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nije útjefte"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "Nei webside"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Dit finster yn'e takomst net sjen litte"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Namme:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Kommentaar:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Foltôge ferplaatse:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Seed stopje bij ratio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Fuortsmite bij ratio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "Trackers oanpasse"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Boppekant"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Ûnderkant"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Torrents tavoegje"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Pauzearre tafoegje"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Earste/lêste dielen foarrang"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Tapasse op alles"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Deluge _sjen litte"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Snelheidslimyt _delheljen:"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Snelheidslimyt _uploaden:"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Ofslute & deamon stopje"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Trackers oanpasse"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "In peer tafoegje troch IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Tracker oanpasse"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Paad op ofstân ynfiere"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Paad:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Torrent oanmeitsje"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Map"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Paad op ostân"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Triemen"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseeds"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Dielgrutte:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Privé-flag ynstelle"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Dizze torrent oan'e sesje tafoegje"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opsjes"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ".torrent bewarje as"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Ferfetsje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Selektearre torrents ferfetsje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opsjes"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "Rij"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Tracker bijwurkje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Torrent fuo_rtsmite"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Opnij kontroleare _forseare"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "label"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Alles selekteare"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Alles skoftsje"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Alles ferfetsje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Ferbiningsbeperking"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limyt uploadplakken"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatysk beheard"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Tracker tafoegje"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URL tafoegje"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Alles útklapp_e"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Wachtwurd"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Fan"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Nei"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Willekeurige poartte brûke"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Yngeand"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Útgeand"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maks ferbiningen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maks uploadplakken"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maks heal-iepene ferbiningen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maks ferbiningsoanfragen per sekonde"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Ratio"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Soart"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP list (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokkearlist"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ûnjildige ferzje"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opsjes</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Soart:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Ynfo</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "In map kieze"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maks uploadsnelheid:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maks ferbiningen:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maks uploadplakken:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maks delhelsnelheid:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bânbreedte</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Rij</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekonden"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Leech label"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Label bestiet al"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Net-bekind label"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Net-bekinde torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Label_opsjes"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Label fuo_rtsmite"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "L_abel tafoegje"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Labelopsjes"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Labelopsjes</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Heechste mooglik"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Rijynstellings tapasse:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 rigel per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automatysk label taheakje:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Label tafoegje"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Label taheakje</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>De sydbalke kin brûkt wurde om labels ta te heakjen, bij te wurkjen en "
+"fuort te smyten.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Labels</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Ofmelde"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Opslaan"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Ferplaatse"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Login"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Maks oantal ferbinings ynstelle"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Delhelsnelheid"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Maks delhelsnelheid ynstelle"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Uploadsnelheid"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Maks uploadsnelheid ynstelle"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Ferbine"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filters"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Dl snelheidslimyt"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Limyt uploadsnelheid"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Ferbiningsbeperking"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limyt uploadplakken"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Tracker bijwurkje"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Opnij kontroleare"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Details"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Algemien"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privé"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Wier"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Warskôgje bij nije útjeftes"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maks ferbiningen:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maks delhelsnelheid (Kib/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maks uploadsnelheid (Kib/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maks heal-iepene ferbiningen:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maks ferbiningsoanfragen per sekonde:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maks uploadplakken:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Triem"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Yn pauzearde steat tafoegje"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Delhelje"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ga.po b/deluge/i18n/ga.po
new file mode 100644
index 0000000..6d4ae43
--- /dev/null
+++ b/deluge/i18n/ga.po
@@ -0,0 +1,6164 @@
+# Irish translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Irish <ga@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/gl.po b/deluge/i18n/gl.po
new file mode 100644
index 0000000..15e6b37
--- /dev/null
+++ b/deluge/i18n/gl.po
@@ -0,0 +1,6240 @@
+# Galician translation for deluge
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-07-23 10:53+0000\n"
+"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
+"Language-Team: Galician <gl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+"X-Poedit-Language: Galician\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Todo"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Activo"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Comprobando"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Descargando"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Sementando"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pausados"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Na cola"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Erro"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nome"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progreso"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Estado"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Tamaño"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Descargados"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Enviados"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Taxa"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Velocidade de descarga"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Velocidade de envío"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Límite de descarga"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Límite de envío"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Pares"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Dispoñíbel"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Engadido"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Localizador"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Tempo estimado"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Priorizar primeira/última"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Xestión automática"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Partes"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Aviso"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Anuncio correcto"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anuncio enviado"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Descargas"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Largura de banda"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Cola"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Rede"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Caché"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Outros"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Engadidos"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistán"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Illas Aland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Alxeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Americana"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antártida"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antiga e Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "A Arxentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaidján"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bielorrusia"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Bélxica"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benín"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudas"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia e Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Illa Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "O Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Territorio Británico no Océano Índico"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Sultanato de Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "O Camerún"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canadá"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cabo Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Illas Caimán"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "A República Centroafricana"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "O Chad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "A China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Illa de Christmas"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Illas Cocos (Keeling)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comores"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "O Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Congo, República Democrática do"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Illas Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Costa do Marfil"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croacia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Chipre"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "República Checa"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dinamarca"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "A Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "A República Dominicana"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "O Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Exipto"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "O Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "A Guinea Ecuatorial"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Illas Malvinas"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Illas Feroe"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlandia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francia"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Güiana Francesa"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinesia Francesa"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Territorios Franceses do Sur"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "O Gabón"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Xeorxia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Alemaña"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Xibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grecia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenlandia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Granada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "A Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "A Guinea Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Güiana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Illa Heard e Illas McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Santa Sé (Cidade Estado do Vaticano)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungría"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islandia"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "A India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Irán"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraq (O)"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Illa de Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Xamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "O Xapón"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Illa de Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Xordania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakhstán"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Corea, República Democrática Popular de"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Corea, República de"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirguizstán"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "República Democrática Popular de Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letonia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "O Líbano"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "República Árabe Libia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburgo"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macau"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malasia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Illas Maldivas"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Illas Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "A Martinica"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauricio"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "México"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "A Micronesia, Estados Federados de"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Mónaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Illa de Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marrocos"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "O Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Os Países Baixos"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "As Antillas Holandesas"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nova Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nova Zelandia"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Níxer"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nixeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Illa Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Illas Marianas do Norte"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Noruega"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omán"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Paquistán"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Territorios Palestinos"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panamá"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papúa-Nova Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "O Paraguai"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "O Perú"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Illas Filipinas"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Illas Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polonia"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Porto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "A Reunión"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Rusia"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint-Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Santa Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts e Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Santa Lucía"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint-Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint-Pierre-et-Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "San Vicente e As Granadinas"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "San Tomé e Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arabia Saudí"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "O Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Illas Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Serra Leoa"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Eslovaquia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Eslovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Illas Salomón"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Suráfrica"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Xeorxia do Sur e as Illas Sandwich do Sur"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "España"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudán"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Illas Svalbard e Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swazilandia"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suecia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Suíza"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Siria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadjikistán"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailandia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trindad e Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turquía"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistán"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Illas Turcas e Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ucraína"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Os Emiratos Árabes Unidos"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "O Reino Unido"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Estados Unidos"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Illas Exteriores Menores dos EEUU"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "O Uruguai"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistán"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "O Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Illas Virxes, Británicas"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Illas Virxes, U.S."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Ilas de Wallis e Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "O Sáhara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "O Iemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "O daemon non se está executando"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nome do ficheiro"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Grupo"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Seleccionar un ficheiro"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Seleccionar un cartafol"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Gardar o ficheiro .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Ficheiros torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Todos os ficheiros"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Un aplicativo para compartir ficheiros de par a par\n"
+"usando o protocolo BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Cliente:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Actuais desenvolvedores:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Anteriores desenvolvedores ou contribuidores:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Este aplicativo é software libre, pódese redistribuír e/ou modificar baixo "
+"os termos da «GNU General Public License» publicada pola Free Software "
+"Foundation; en calquera das versión 3 da Licenza ou, baixo a túa escolla, en "
+"calquera das seguintes versións.\n"
+"\n"
+"Este aplicativo ponse a disposición de todos para que sexa útil mais SEN "
+"NINGUNHA GARANTIA, nin sequera con garantida de COMECIABILIDADE ou ACAER EN "
+"NINGÚN OBXECTIVO EN PARTICULAR. Olla a GNU General Public License para "
+"coñecer mellor os detalles. \n"
+"\n"
+"Deberías ter recibido unha copia da GNU General Public License con este "
+"aplicativo mais se non foi así tela dispoñíbel en "
+"<http://www.gnu.org/licenses>. \n"
+"\n"
+"Ademais, como un caso de excepción especial, os titulares do copyright dan "
+"permisos para ligar partes do código deste aplicativo coa librería OpenSSL. "
+"Estás na obriga de respectar a GNU General Public License en todos os "
+"aspectos para todo o código agás para o OpenSSL. \n"
+"\n"
+"Se modificas ficheiros con esa excepción, podes estender ese excepción ás "
+"versións dos ficheiros que modificaras mais non estás na obriga de cumprires "
+"tal. Se non desexas facelo elimina esta declaración de excepción de todas as "
+"fontes dos ficheiros do aplicativo e, despois, tamén de aquí."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Servidor:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ficheiro incorrecto"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Escoller un ficheiro .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL incorrecto"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "Non é unha URL válida."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Descargando..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Produciuse un fallo na descarga"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Fallou a descarga:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Información:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nome do usuario:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Contrasinal:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Outros..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Desconectado"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nodos DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Espazo libre no disco"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioridade"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "E_stado"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalles"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fic_heiros"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Pares"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opcións"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Non conectado..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Sen límite"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Descargar"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Subir"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Fóra de liña"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "En liña"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Conectado"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Estado"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Servidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versión"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Comezar o daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Deter o daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Non foi posíbel iniciar o daemon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Produciuse un erro ao engadir o servidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Nome de usuario"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Activado"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Engadido"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Seleccionar o engadido"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Engadido Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Estados"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Localizadores"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ningunha"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiquetas"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Sen etiqueta"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Versión do cliente</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents na cola"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent na cola"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Estabelecer ilimitado"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Activado"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Desactivado"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Enderezo"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Cliente"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creando un torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents na cola"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "Elimina_r"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Engadir automaticamente os torrents ao conectar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Ficheiro"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Engadir torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Crear torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Saír e _apagar o daemon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Saír"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Editar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Xestor de _conexión"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Ver"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Barra de ferramentas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "Barra _lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Barra de _estado"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Lapel_as"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Columnas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Barra _lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Mostrar _cero accesos"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Mostrar _localizadores"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Axuda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Páxina de inicio"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Preguntas frecuentes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Comunidade"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Engadir torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Engadir torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Eliminar o torrente"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Eliminar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pausar os torrents seleccionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Continuar os torrents seleccionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Continuar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Subir torrent na cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Subir na cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Baixar torrent na cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Baixar na cola"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Xestor de conexión"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Mostrar a velocidade da sesión na barra de título"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Enfocar a xanela cando se engadan torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Activar a icona na área de notificación"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimizar na área de notificación ao pechar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Iniciar na área de notificación"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Protexer a área de notificación con contrasinal"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Mover os completados a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copiar os ficheiros .torrent en:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Eliminar a copia do ficheiro torrent ao eliminar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Eliminar a copia do ficheiro torrent que se creou cando se elimine o torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Descargar en:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Priorizar a primeira e a última parte do torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Priorizar a primeira e a última parte dos ficheiros no torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Engadir os torrents en pausa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Mostrar sempre"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Poñer o foco sobre o diálogo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"Número máximo de conexións permitidas. Estabelecer -1 para ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Conexións:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Slots máximos de envío para todos os torrents. Estabelecer -1 para ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Velocidade máxima de descarga para todos os torrents. Estabelecer -1 para "
+"ilimitada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocidade de descarga:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Velocidade máxima de envío para todos os torrents. Estabelecer -1 para "
+"ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocidade de envío:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorar os límites na rede local"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Límite da taxa de sobrecarga IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Se se selecciona, a estimación da sobrecarga de TCP/IP obterase desde os "
+"limitadores da taxa para evitar que se excedan os límites co tráfico total"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Slots máximos de envío por torrent. Estabelecer -1 para ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Número máximo de conexións por torrent. Estabelecer -1 para ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Porto activo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Probar porto activo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Desde:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Até:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivel:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocolo de mapeamento de portos NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Intercambio de pares"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "O Servizo local de buscas (LSD) procura pares locais na súa rede."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Unha táboa hash distribuída pode mellorar a cantidade de conexións activas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Byte TOS de par:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nome do servidor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Porto:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Tamaño da caché (bloques de 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Número de segundos desde a última escritura na caché dunha parte do torrent "
+"até o momento en que se forza a escritura no disco. O valor predeterminado é "
+"de 60 segundos."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "A caché caduca en (segundos):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Configuracións"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Número total de bloques de 16 KiB escritos no disco desde que se iniciou "
+"esta sesión."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Bloques escritos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Número total de operacións de escritura realizadas desde que se iniciou esta "
+"sesión."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Escrituras:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"A proporción (bloques_escritos - escrituras) / bloques_escritos representa o "
+"número de operacións de escritura de gardado para o total das operacións de "
+"escritura, é dicir, unha especie de taxa de accesos á caché para a caché de "
+"escritura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Taxa de accesos á caché de escritura:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Número de bloques solicitados desde o motor do bittorrent (desde os pares), "
+"que se serviron desde o disco ou da memoria caché."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Bloques lidos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Número de bloques que se serviron desde a caché."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Eventos de lectura de bloques:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Taxa de accesos á caché para lectura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Taxa de accesos á caché de lectura:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Número total de operacións de lectura realizadas desde que se iniciou esta "
+"sesión."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lecturas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Número de bloques de 16 KiB actualmente na caché de disco. Isto inclúe tanto "
+"a lectura como a escritura na caché."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Tamaño da caché:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Tamaño da caché de lectura:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Axúdenos a mellorar Deluge enviándonos a súa versión de Python, PyGTK, "
+"sistema operativo e o tipo de procesador. Non se envía, absolutamente, "
+"ningunha outra información."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Si, enviar estatísticas anónimas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Localización:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Se Deluge non e quen de atopar o ficheiro da base de datos nese lugar, "
+"volverá utilizar o DNS para atopar o país do par."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Porto do daemon:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Porto"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Permitir conexións remotas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Conexións"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Comprobar periodicamente no sitio web se hai novas edicións"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versión:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Páxina principal:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Correo-e do autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Información"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Engadir un par"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "nomedoservidor:porto"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Xeral</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Engadir"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Eliminar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Engadir hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Información do «hash»:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Localizadores:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Engadir un servidor"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destino:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nova versión"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Ir á páxina web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Non mostrar este dialogo no futuro"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nome:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comentarios:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Mover os completados a:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Deter a sementeira na taxa:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Eliminar coa taxa"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Editar localizadores"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Enriba"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Abaixo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Engadir torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "información do «_hash»"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Engadir en _pausa"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Priorizar primeira/última partes"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Aplicar a todo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Reverter a predeterminados"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Mostrar Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Velocidade límite de _descarga"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Velocidade límite de _envío"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Saír e apagar o daemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Editar localizadores"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Engadir par"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Engadir un par polo seu IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Editar localizador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Localizador:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Introducir a ruta remota"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Ruta:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Crear un torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Cartafol"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Ruta remota"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Ficheiros"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Sementes web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Tamaño das partes:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Estabelecer marca privada"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Engadir este torrent á sesión"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opcións"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Gardar o .torrent como"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Deter"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Co_ntinuar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Continuar os torrents seleccionados."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opc_ións"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "C_ola"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Act_ualizar o localizador"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Eliminar torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Forzar unha nova comprobación"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiqueta"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Seleccionar todo"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pausar todos"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Con_tinuar todo"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Límite de _conexións"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Límite de _slots de envío"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Xestión automática"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Engadir un localizador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Engadir URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expandir todo"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Cliente de BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Cliente de BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Descarga e comparte ficheiros con BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Orde"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Contrasinal"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Utilizar portos aleatorios"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Número máximo de conexións"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Número máximo de slots de suba"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Taxa de compartición"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Aplicar"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Lista de IP de Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Texto SafePeer (comprimido en zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Texto de PeerGuardian (descomprimido)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Lista de bloqueados"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Líder incorrecto"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Código máxico incorrecto"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versión incorrecta"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Días"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Comprobar se hai unha lista nova cada:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importar a lista de bloqueados ao iniciar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Configuracións</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Descargar o ficheiro coa lista de bloqueados, se é necesario, e importar o "
+"ficheiro."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Comprobar a descarga e importar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Descargar un novo ficheiro coa lista de bloqueados e importalo."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forzar a descarga e importar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "A lista de bloqueados está actualizada"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opcións</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipo:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Tamaño do ficheiro:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Información</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent completado"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent engadido"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Executar"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Aviso"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Engadir orde</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Ordes</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Non hai cartafoles esculcados."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "A ruta non existe."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Propiedades dos cartafoles esculcados"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Seleccionar un cartafol"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Activar o esculcado de cartafoles"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Cartafoles esculcados</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Eliminar o .torrent despois de engadilo"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Pórlle a extensión despois de o engadir:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".engadido"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Ficheiro de acción Torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Mover os completados</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiqueta: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiqueta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Principal"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Velocidade máxima de envío:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Conexións máximas:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Slots máximos de envío:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Velocidade máxima de descarga:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Largura de banda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Xestionado automaticamente:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Engadir pausados:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Por na cola:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Cola</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Cartafoles esculcados:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "segundos"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"A interface web de Deluge non está instalada. Instala de novo\n"
+"a interface e volve a probar"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Activar a interface web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Activar SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Porto de escoita:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+"A etiqueta é incorrecta, só están permitidos os caracteres:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etiqueta baleira"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "A etiqueta xa existe"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etiqueta descoñecida"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent descoñecido"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opcións de etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Elimina_r etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Engadir etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opcións de etiquetas"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opcións de etiquetas</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Aplicar axustes máximos por torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Máximo"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Aplicar os axustes da cola:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 liña por localizador)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aplicar automaticamente a etiqueta:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Engadir etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Engadir etiqueta</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Usar a barra lateral para engadir, editar e eliminar etiquetas. </I>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiquetas</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Mostrar o sinal de notificación"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "As notificacións por menús emerxentes non están activadas."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Mostrar as notificacións emerxentes"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Notificación por son non activada"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame non está instalado"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Fallou a notificación cun son %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Notificación cun son correcta"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Rematou o Torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Escoller o ficheiro de son"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Houbo un erro ao enviar o a notificación por correo electrónico: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Notificación por correo electrónico enviado."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Rematou o Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Este correo electrónico é para te informar de que Deluge rematou a "
+"descargade \"%(name)s\", que inclúe os ficheiros %(num_files)i.\n"
+"Para parar de ter estas notificacións dálle a apagar as notificacións por "
+"correo electrónico nas preferencias de Deluge.\n"
+"\n"
+"Grazas,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "As notificacións polas iconas da bandexa están activadas"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Menús emerxentes activados"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sons activados"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Notificacións UI</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Destinatarios</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "O servidor precisa TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Notificacións por correo electrónico</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Esta configuración non significa que vaias a recibir notificacións para "
+"todos estes eventos."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Subscricións"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Personalización do son"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extraer en:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Crear un sub-cartafol co nome do torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Esta opción creará un subcartafol co nome do torrent dentro do cartafol "
+"seleccionado. Neste subcartafol extraerá os ficheiros."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Límite de descarga:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Límite de envío:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrents activos:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Descargas activas:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Sementeiras activas:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Configuración lenta</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Servidor:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Estabelecer o máximo de conexións"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Velocidade de descarga"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Estabelecer a velocidade máxima de descarga"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Velocidade de envío"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Estabelecer a velocidade máxima de envío"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Tráfico do protocolo descargar/enviar"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtros"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Actualizar Tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detalles"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Xeral"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privado"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Avisarme das novas edicións"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Conexións máximas:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Velocidade máxima de descarga (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Velocidade máxima de envío (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Conexións máximas semi-abertas:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Intentos máximos de conexión por segundo:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Slots máximos de envío:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Servidor"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Descarga"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/he.po b/deluge/i18n/he.po
new file mode 100644
index 0000000..7900c3d
--- /dev/null
+++ b/deluge/i18n/he.po
@@ -0,0 +1,6168 @@
+# Hebrew translation for deluge
+# Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Hebrew <he@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "הכל"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "בודק"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "מוריד"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "משתף"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "מושהה"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "ממתין"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "שגיאה"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "שם"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "התקדמות"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "מצב"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "גודל"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "ירד"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "הועלה"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "יחס"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "מהירות הורדה"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "מהירות העלאה"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "משתפים"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "זמינות"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "נוסף"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "טראקר"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "זמן משוער"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "דירוג ראשון/אחרון"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "ניהול אוטומטי"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "חלקים"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "אזהרה"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "קריאה תקינה"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "קריאה נשלחה"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "מנשק"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "הורדות"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "רוחב פס"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "בתהליך"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "רשת"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "פרוקסי"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "מטמון"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "אחר"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "שרת"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "תוספים"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "אפגניסטן"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "איי אולנד"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "אלבניה"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "אלג'יריה"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "סמואה האמריקאית"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "אנדורה"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "אנגולה"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "אנגואילה"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "אנטרקטיקה"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "אנטיגואה וברבודה"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "ארגנטינה"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "ארמניה"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "ארובה"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "אוסטרליה"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "אוסטריה"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "אזרביג'ן"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "בהמאס"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "בחריין"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "בנגלדש"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "ברבדוס"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "בלרוס"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "בלגיה"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "בליז"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "בנין"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "ברמודה"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "בהוטן"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "בוליביה"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "בוסניה הרצגובינה"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "בוטסוואנה"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "האי באווט"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "ברזיל"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "טריטוריית האוקיאנוס ההודי הבריטית"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "ברונאי דרוסלאלם"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "בולגריה"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "בורקינה פאסו"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "בורונדי"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "קמבודיה"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "קמרון"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "קנדה"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "כף ורדה"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "איי קיימן"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "הרפובליקה המרכז אפריקנית"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "צ'אד"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "צ'ילה"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "סין"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "איי חג המולד"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "איי קוקוס, קילינג"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "קולומביה"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "קומורוס"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "קונגו"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "קונגו, הרפובליקה הדמוקרטית של"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "איי קוק"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "קוסטה ריקה"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "חוף השנהב"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "קרואטיה"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "קובה"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "קפריסין"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "הרפובליקה הצ'כית"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "דנמרק"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "דג'יבוטי"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "דומיניקה"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "הרפובליקה הדומיניקנית"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "אקוודור"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "מצרים"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "אל סלבדור"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "גינאה המשוונית"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "אריתריאה"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "אסטוניה"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "אתיופיה"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "איי פוקלנד"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "איי פארו"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "פיג'י"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "פינלנד"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "צרפת"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "גינאה הצרפתית"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "פולינזיה הצרפתית"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "הטריטוריות הדרומיות של צרפת"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "גבון"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "גמביה"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "גיאורגיה"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "גרמניה"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "גאנה"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "גיברלטר"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "יוון"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "גרינלנד"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "גרנדה"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "גוואדלופ"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "גואם"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "גואטמלה"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "גאורנסי"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "גינאה"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "גינאה ביסאו"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "גויאנה"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "האיטי"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "האיים הרד ומקדונלד"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "וותיקן"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "הונדורס"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "הונג קונג"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "הונגריה"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "איסלנד"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "הודו"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "אינדונזיה"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "אירן, הרפובליקה האיסלמית של"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "עיראק"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "אירלנד"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "האי מאן"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "ישראל"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "איטליה"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "ג'מייקה"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "יפן"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "ג'רזי"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "ירדן"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "קאזחאסטן"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "קניה"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "קיריבטי"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "קוריאה, דמוקרטיית העם של"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "קוריאה, הרפובליקה של"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "כווית"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "קירגיסטאן"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "לאוס"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "לטביה"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "לבנון"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "לסותו"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "ליבריה"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "לוב"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "ליכטנשטיין"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "ליטא"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "לוקסמבורג"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "מאקאו"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "הרפובליקה היוגוסלבית לשעבר של מקדוניה"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "מדגסקר"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "מלאוי"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "מלזיה"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "מלדיב"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "מאלי"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "מלטה"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "איי מרשל"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "מרטיניק"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "מאוריטניה"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "מאוריציוס"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "מאיוט"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "מקסיקו"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "מיקרונזיה"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "מולדובה"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "מונקו"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "מונגוליה"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "מונטנגרו"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "מונסראט"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "מרוקו"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "מוזמביק"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "מיאנמאר"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "נמיביה"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "נאורו"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "נפאל"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "הולנד"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "אנטילים הולנדים"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "קלדוניה החדשה"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "ניו זילנד"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "ניקרגואה"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "ניז'ר"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "ניגריה"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "ניאו"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "האי נורפולק"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "איי מרינה הצפוניים"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "נורבגיה"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "עומן"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "פקיסטן"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "פלאו"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "הרשות הפלסטינאית"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "פנמה"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "פפואה גינאה החדשה"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "פארגוואי"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "פרו"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "פיליפינים"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "פיטקרן"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "פולין"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "פורטוגל"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "פורטו ריקו"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "קטאר"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "ריוניון"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "רומניה"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "הפדרציה הרוסית"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "רואנדה"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "סנט ברתלמי"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "סנט הלנה"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "סנט קיטס ונביס"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "סנטה לוסיה"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "סן מרטן"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "סנט פייר ומיקלון"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "סנט וינסנט והגרנדינים"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "סמואה"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "סאן מרינו"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "סאו תומה ופרינסיפה"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "ערב הסעודית"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "סנגל"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "סרביה"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "איי סיישל"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "סיירה ליאון"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "סינגפור"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "סלובקיה"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "סלובניה"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "איי שלמה"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "סומליה"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "דרום אפריקה"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "דרום ג'ורגיה ואיי דרום סנדביץ'"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "ספרד"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "סרי לנקה"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "סודן"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "סורינאם"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "סוולברד ויאן מאין"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "סווזילנד"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "שבדיה"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "שוויץ"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "הרפובליקה הערבית הסורית"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "טג'יקיסטאן"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "טנזניה, הרפובליקה המאוחדת של"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "תאילנד"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "טימור מזרח"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "טוגו"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "טוקלאו"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "טונגה"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "טרינידד וטובגו"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "טוניסיה"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "טורקיה"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "טורקמניסטאן"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "איי טורק וקייקוס"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "טובלו"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "אוגנדה"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "אוקראינה"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "איחוד האמירויות"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "הממלכה המאוחדת"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "ארצות הברית"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "האיים הקטנים מסביב לארצות הברית"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "אורוגואי"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "אוזבקיסטן"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "ואנואטו"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "ונצואלה"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "ויטנאם"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "איי הבתולה (בריטיים)"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "איי הבתולה (ארה\"ב)"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "ואליס ופוטונה"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "מערב סהרה"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "תימן"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "זמביה"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "זימבבואה"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "השרת לא מופעל"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "שם קובץ"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "בחר קובץ"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "בחר תיקייה"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "קמור קובץ .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "קבצי טורנט"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "כל הקבצים"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "שרת:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "טורנט"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "קובץ לא תקין"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "בחר קובץ טורנט"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "כתובת לא תקינה"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "הורדה נכשלה"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "פרטים:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "שם משתמש:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "סיסמה:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "אחר...‏"
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "לא מחובר"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Nodes"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "כן"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "לא"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "עדיפות"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_מצב"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_פרטים"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "קב_צים"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_מקורות"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_אפשרויות"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "ללא הגבלה"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "למטה"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "למעלה"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "מנותק"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "מקוון"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "מחובר"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "שרת מארח"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "שם משתמש"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "רמה"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "מופעל"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "תוסף"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "בחר את התוסף"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "טראקרים"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "ללא"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "מנהל"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "תויות"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " הטורנטים הועברו ברשימה"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " הטורנט הועבר ברשימה"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "קבע לבלתי מוגבל"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "פועל"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "כבוי"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "כיבוי"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "כתובת"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "תוכנה"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "יצירת טורנט"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "טורנטים בתהליך"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_הסרה"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "הוסף טורנטים אוטומטית בהתחברות"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_קובץ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_הוסף טורנט"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "י_צרת טורנט"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_סיים"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_עריכה"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "מנהל _החיבור"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_טורנט"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_תצוגה"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_סרגל כלים"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "סרגל _צד"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_שורת מצב"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "ל_שוניות"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_עמודות"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_סרגל צד"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "הצג _אפס התאמות"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "הצג _טראקרים"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_עזרה"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "שאלות נפוצות"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "הוסף טורנט"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "הוסף טורנט"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "הסר טורנט"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "הסר טורנט"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "השהה את הטורנטים הנבחרים"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "השהה"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "המשך את הטורנטים הנבחרים"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "המשך"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "העלה עדיפות"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "למעלה בתור"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "הורד עדיפות"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "למטה בתור"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "העדפות"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "מנהל החיבור"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "מאולץ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "כבוי"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "לחיצת יד"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "הפעל סמל במגש מערכת"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "הקטן למגש המערכת בסגירה"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "התחל במגש המערכת"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "הגן בסיסמה על הסמל במגש המערכת"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "העבר הורדות שהושלמו ל:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "העתקת קבצי .torrent ל:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "הורדה אל:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "קבע סדרי עדיפויות לחלקים הראשונים והאחרונים של הטורנט"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "תעדף את החלקים הראשון והאחרון של הקבצים בטורנט"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "הוסף טורנטים במצב מושהה"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "הצג תמיד"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "התמקד בחלון התוכנה"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "מספר החיבורים המקסימלי המותר. -1 עבור מהירות בלתי מוגבלת."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "חיבורים:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "מספר נקודות העלאה מקסימלי עבור כל הטורנטים. -1 עבור בלתי מוגבל"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "מהירות הורדה מקסימלית עבור כל הטורנטים. -1 עבור ללא הגבלה."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "מהירות הורדה:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "מהירות העלאה מקסימלית עבור כל הטורנטים. -1 עבור ללא הגבלה."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "מהירות העלאה:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "התעלם מהגבלות ברשת מקומית"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "מגבלת יחס של כמות IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "מקסימום נקודות העלאה לכל טורנט. -1 עבור בלתי מוגבל."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "מספר המקסימלי של חיבורים לכל טורנט. -1 עבור בלתי מוגבל."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "אקראי"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "יציאה פעילה:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "בדוק יציאה פעילה"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "מ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "ל:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "רמה:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "הצפנה"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "פרוטוקול מיפוי יציאות NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "חילופי מקורות"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "מגלה שירות מקומי מאתר מקורות ברשת המקומית שלך."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "טבלת גיבוב מבוזרת יכולה לשפר את כמות החיבורים הפעילים."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "שם מארח:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "יציאה:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "תוקף המטמון (שניות):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "הגדרות"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "כותב:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "קורא:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "גדול מטמון:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "גודל קריאת מטמון:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"עזרו לנו להשתפר על ידי שליחת גרסאות ה־Python וה־PyGTK שלכם, מערכת ההפעלה "
+"וסוג המעבד. כמובן ששום מידע נוסף לא נשלח."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "כן, שלח בבקשה סטטיסטיקות אנונימיות"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "מיקום:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"במידה ו־Deluge לא ימצא את קובץ מסד הנתונים במיקום הזה יתבצע שימוש ב־DNS כדי "
+"לבדוק את המדינה של המקור."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "יציאת השרת:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "מספר פורט"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "אפשר חיבורים מרוחקים"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "חיבורים"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "בדיקה תקופתית אחר גרסאות חדשות באתר הבית"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "גירסה:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "יוצר:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "דף הבית:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "כתובת דואל היוצר:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "מידע"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "הוסף מקור"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>כללי</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "הוסף"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "הסר"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "הוסף Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "טראקרים:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "הוסף מארח"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "יעד:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "גרסה חדשה"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_עבור לאתר"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "אל תציג את החלון שוב בעתיד"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "שם:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "הערות:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "העברת טורנטים שהושלמו:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "הפסק לשתף כשיחס השיתוף מגיע ל:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "הסרה ביחס שיתוף"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_ערוך טראקרים"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "הוספת טורנטים"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_כתובת"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "הוסף _במצב מושהה"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "העדף חלק ראשון/אחרון"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "החל לכולם"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "החזר לברירת מחדל"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_הצג"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_הגבלת מהירות הורדה"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_הגבלת מהירות העלאה"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "יצאה & כיבוי השרת"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "עריכת טראקרים"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "הוסף מקור על פי כתובת IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "עריכת טקראקר"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "טראקר:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "הזן נתיב מרוחק"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "נתיב:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "יצירת טורנט"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "תי_קיה"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "נתיב _מרוחק"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "קבצים"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "משתפי רשת"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "גודל החלק:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "קביעת דגל פרטי"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "הוסף את הטורנט להפעלה"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "אפשרויות"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "שמור .torrent בשם"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "המש_ך"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "המשך טורנטים נבחרים."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "אפש_רויות"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_העבר לתור"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_עדכן טראקר"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_הסר טורנט"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_הכרח בדיקה מחדש"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "תווית"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_בחר הכל"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_עצור הכל"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "המש_ך הכל"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "גבול _החיבור:"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "גבול _נקודות העלאה"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "מנוהל _אוטומטית"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "הוסף טראקר"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "הוסף כתובת"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "‏URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_הרחב הכל"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "פקודה"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "סיסמה"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "מאת"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "אל"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "שימוש ביציאות אקראיות"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "כלפי פנים"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "כלפי חוץ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "מס' חיבורים מקסימלי"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "מקסימום נקודות העלאה"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "מקסימום חיבורים חצי-פתוחים"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "מספר ניסיונות התחברות מקסימלי לשנייה"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "דרג את מגבלת כמות ה- IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "יחס שיתוף"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "סוג"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "החל"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "רשימת IP מאימיול (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer טקסט (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "טקסט PeerGuardian (לא־מכווץ)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "רשימת חסומים"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "leader לא תקין"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "קוד magic לא תקין"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "גרסה לא תקינה"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "ימים"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "חפש רשימה חדשה כל:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "ייבא רשימת חסומים עם ההפעלה"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>הגדרות</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "הורדת קובץ רשימת החסומים לפי הצורך וייבא אותה."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "בדוק הורדה ויבוא"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "הורד רשימת חסומים חדשה וייבא אותה."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "הכרח הורדה ויבוא"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "רשימת חסומים מעודכנת"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>אפשרויות</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "סוג:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "תאריך:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "גודל הקובץ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>מידע</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "טורנט הושלם"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "התווסף טורנט"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "הפעלה"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "אירוע"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>הוסף פקודה</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>פקודה</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "בחר תיקייה"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "מהירות העלאה מקסימלית:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "מספר חיבורים מקסימלי:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "מקסימום נקודות העלאה:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "מהירות הורדה מקסימלית:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>רוחב פס</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>עדיפות</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "שניות"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "הפעל מנשק דפדפן"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "הפעל SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "מאזין לפיתחה:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "טקסט לא חוקי. תווים חוקיים: [-_a-z0-9]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "תווית ריקה"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "התווית בר קיימת"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "תווית לא ידוע"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "טורנט לא ידוע"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_אפשרויות תווית"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_הסר תווית"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_הוסף תווית"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "אפשרויות תווית"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "תווית"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>אפשרויות תוית</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "החל הגדרות מקסימום עבור כל טורנט:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "מקסימום"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "החל הגדרות תור:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(שורה אחת לכל טקראקר)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "החל תווית אוטומטית:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "הוסף תווית"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>הוסף תווית</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>השתמש בסרגל הצד כדי להוסיף,לערוך ולמחוק תוויות. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>תוויות</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "חלץ אל:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "הגבלת הורדה:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "הגבלת העלאה:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "טורנטים פעילים:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>הגדרות איטיות</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "יציאה"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "שמור"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "מארח:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "העבר"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "כניסה"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "קבע את מספר החיבורים המקסימלי"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "קצב הורדה"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "קבע מהירות הורדה מקסימלית"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "קצב העלאה"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "קבע מהירות העלאה מקסימלית"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "תנועת ההעלאה/הורדה של הפרוטוקול"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "התחבר"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "פילטרים"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "עדכן טראקר"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "פרטים"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "כללי"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "פרטי"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "אמת"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "הודיעו לי כאשר יש גרסה חדשה"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "מקסימום חיבורים:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "מהירות הורדה מקסימלית (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "מהירות העלאה מקסימלית (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "מקסימום חיבורים חצי פתוחים:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "מספר ניסיונות התחברות מקסימלי לשנייה:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "מקסימום נקודות העלאה:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "שרת"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "רענון"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "כתובת"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "קובץ"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "הוסף במצב מושהה"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "הורדה"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/hi.po b/deluge/i18n/hi.po
new file mode 100644
index 0000000..f3dae8a
--- /dev/null
+++ b/deluge/i18n/hi.po
@@ -0,0 +1,6173 @@
+# Hindi translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2023-02-17 20:51+0000\n"
+"Last-Translator: Hemish <Unknown>\n"
+"Language-Team: Hindi <hi@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "सभी"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "सक्रिय"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "जाँच की जा रही है"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "डाउनलोड किया जा रहा है"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "सीड किया जा रहा है"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "ठहरा हुआ"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "पंक्तिबद्ध"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "त्रुटि"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "नाम"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "प्रगति"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "स्थिति"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "आकार"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "डाउनलोड की गयी"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "अपलोडेड"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "बाकी"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "अनुपात"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "अधो गति"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "उर्ध्व गति"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "पीयर्स"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Avail"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "जोड़ा गया"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "ट्रैकर"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "पूर्ण"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "इ टी ए (E T A)"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "साझा किए गए"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritize First/Last"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "अपने आप व्यवस्थित"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "मालिक"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "टुकड़े"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "चेतावनी"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "घोषणा ठीक है"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "घोषणा भेजा"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "इंटरफ़ेस"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "डाउनलोड्स"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "बेंडविड्थ"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "कतार"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "नेटवर्क"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "प्रॉक्सी"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "कैश"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "अन्य"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "डेमन"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "प्लग-इन्स"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "अभी नहीं"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "कम"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "सामान्य"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "उच्च"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "अफ़ग़ानिस्तान"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "ऑस्ट्रेलिया"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "ऑस्ट्रिया"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "अज़रबैजान"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "बांग्लादेश"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "बेलारूस"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "बेल्जियम"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "फ़ाइलनाम"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Tier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "एक फ़ाइल चुनें"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "एक फ़ोल्डर चुनें"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ".टॉरेन्ट फ़ाइल सुरक्षित करें"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "टॉरेंट फाइलें"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "सभी फ़ाइलें"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "डिल्यूज"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "सर्वरः"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "टॉरेंट"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "एक .torrent फाइल चुनें"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "विवरण:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "उपयोगक्ता का नाम:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "पासवर्ड:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "अन्य..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "जुड़ा हुआ नहीं है"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Nodes"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "हाँ"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "नहीं"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "प्राथमिकता"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "अवस्था (_S)"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "विवरण (_D)"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "फ़ाइलें (_l)"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "पीयर्स (_P)"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "विकल्प (_O)"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "असीमित"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "नीचे"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "ऊपर"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "होस्ट"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "उपयोगकर्ता का नाम"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "स्तर"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "सक्रिय"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "प्लगिन"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "प्लगिन चुने"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "प्लगिन एग्स (Eggs)"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "ट्रैकर्स"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "कोई नहीं"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "प्रशासक"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "लेबल"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "कोई लेबल नहीं"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " टॉरेन्ट्स कतार में"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " टॉरेन्ट कतार में"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "असीमित करें"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "चालू"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "बंद"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "निष्क्रिय करें"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "पता"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "क्लाएंट"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "टॉरेन्ट निर्माण कर रहा है"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "टॉरेन्ट्स कतार में"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "हटाएँ (_R)"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "कनेक्ट होने पर स्वतः ही टॉरेन्ट्स जोड़ें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "फ़ाइल (_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "टॉरेन्ट जोडें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "टॉरेन्ट बनाएं(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "बाहर (_Q)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "संशोधन (_E)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "कनेक्सन मैनेजर (_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "टॉरेन्ट (_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "देखें (_V)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "उपकरण-पट्टी (_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "किनारे की पट्टी (_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_bar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Columns"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "बाजूपट्टी (_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Show _Zero Hits"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "ट्रैकर्स दिखाएँ (_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_सहायता"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "बारम्बार पूछने वाले प्रश्न"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "टॉरेन्ट जोड़ें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "टॉरेन्ट जोड़ें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "टॉरेन्ट हटाएँ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "टॉरेन्ट हटाइये"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "चुने हुए टॉरेन्ट्स को विराम करें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "ठहरें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "चुने हुए टॉरेन्ट्स को रिज्यूम विराम करें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "पुनः आरम्भ करें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "टॉरेन्ट कतार में ऊपर करें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "कतार में ऊपर"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "टॉरेन्ट कतार में नीचे करें"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "कतार में नीचे"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "वरीयता"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "कनेक्शन प्रबंधक"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "बलपूर्वक किया"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "निष्क्रिय"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "हैंडशेक"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "अथवा"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "एचटीटीपी"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "titlebar में session गति दिखाएँ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "सिस्टम ट्रे icon सक्रिय करें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "बंद करने पर सिस्टम-ट्रे में डालो"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "ट्रे में शुरू करो"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "सिस्टम-ट्रे पासवर्ड से सुरक्षित करें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "पूर्ण हुए को यहाँ हटायें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ".torrent फाइल की नक़ल करें:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "डाउनलोड करें:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioritize first and last pieces of torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioritize first and last pieces of files in torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "हमेशा प्रदर्शित करें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "डायलोग को फोकस में लायें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "अधिकतम संबंधो की संख्या. असीमित के लिए -1 डालें."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "कनेक्संस"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "सभी टॉरेन्ट्स के लिए अधिकतम अपलोड स्लॉट्स. असीमित के लिए -1 डालें."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "सभी टॉरेन्ट्स के लिए अधिकतम डाउनलोड गति. असीमित के लिए -1 डालें."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "डाउनलोड गति:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "सभी टॉरेन्ट्स के लिए अधिकतम अपलोड गति. असीमित के लिए -1 डालें."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "अपलोड गतिः"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "लोकल नेटवर्क के लिए सीमाओं को नहीं मानिए"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Rate limit IP overhead"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"प्रत्येक टॉरेन्ट के लिए अपलोड स्लॉट्स की अधिकतम संख्या. असीमित के लिए -1 "
+"डालें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"प्रत्येक टॉरेन्ट के लिए संबंधो की अधिकतम संख्या. असीमित के लिए -1 डालें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "क्रमहीन"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "सक्रिय पोर्ट"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "सक्रिय पोर्ट जांचें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "प्रेषक:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "प्रति:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "स्तरः"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "एनक्रिप्शन"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "यु पी एन पी"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT पोर्ट मेपिंग प्रोटोकॉल"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "पीयर विनिमय"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "एल एस डी(LSD)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery finds local peers on your network."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "डी एच टी"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "वितरित hash टेबल सक्रिय संबंधो को बढ़ा सकता है"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "होस्टनेम:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "पोर्टः"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "सेटिंग्स"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "हाँ, कृपया गुमनाम आकडे भेज दें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "डीमॉन पोर्ट:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "पोर्ट"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "रिमोट कनेक्संस स्वीकारें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "संबंधन"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "नए रिलीज़ के लिए वेबसाईट को समय समय पर जांचते रहें"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "संस्करण:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "लेखकः"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "मुख पृष्ठः"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "लेखक ई-मेल:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "जानकारी"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "पीयर जोड़ें"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "होस्टनाम:पोर्ट"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>सामान्य</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "निरस्त करें"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "जोड़ें"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "हटाएँ"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Infohash जोड़ें"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "ट्रैकर्स:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "होस्ट जोड़ें"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "लक्ष्य:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "नया रिलीज़"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "वेबसाईट में जाएँ (_G)"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "यह डायलोग भविष्य में न दिखाएँ"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "नाम:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "टिप्पणियाँ:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "पूर्ण होने पर यहाँ ले जाएँ:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "सीड रोकें इस अनुपात पर"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "हटायें इस अनुपात पर"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_संशोधन ट्रैकर"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "ऊपर"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "निचला"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "टॉरेन्ट जोड़ें"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "यूआरएल(_U)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "विराम अवस्था में जोड़ें"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritize First/Last Pieces"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "सभी में लागू करें"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Revert To Defaults"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "डिल्युज दिखाएँ (_S)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_डाउनलोड"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_अपलोड की गति सीमा"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Quit & Shutdown Daemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "ट्रैकर्स संशोधन"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "कोई पीयर उसकी IP की सहायता से जोड़ें"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "ट्रैकर संशोधन"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "ट्रैकर:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "रिमोट पथ डालें"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "पथ:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "टॉरेन्ट बनाएं"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "फोल्_डर"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Remote पथ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "फ़ाइलें"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "वेबसीड्स"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Piece Size:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "सेट प्राइवेट फ्लैग"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "यह टॉरेन्ट सेशन में जोड़ें"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "विकल्प"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Save .torrent as"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Resu_me"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Resume selected torrents."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "वि_कल्प"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_कतार"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_अपडेट ट्रैकर"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_हटायें टॉरेन्ट"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "बलपूर्वक पुनः जांच"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "लेबल"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "सभी चुनें(_S)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "सभी विराम (_P)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Resu_me All"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_सम्बन्ध सीमा"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "अपलोड _Slot सीमा"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "स्व निर्धारित"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "ट्रैकर जोड़ें"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "यु आर एल जोड़ें"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "यू आर एल (URL):"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "सभी का विस्तार करें (_E)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "आदेश"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "पासवर्ड"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "से"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "प्रति"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "क्रमहीन पोर्ट उपयोग करें"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Inbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Outbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "अधिकतम कनेक्शन"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "अधिकतम अपलोड स्लॉट्स"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "अधिकतम आधे-खुले सम्बन्ध"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "प्रति सेकण्ड संबंधों के लिए अधिकतम प्रयास"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Rate Limit IP Overhead"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Share अनुपात"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "प्रकार"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "लागू करें"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP सूची (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "ब्लॉकलिस्ट"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "अवैध नेता"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "अवैध जादू कोड"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "अमान्य संस्करण"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "दिन"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "नए लिस्ट के लिए जांचें प्रत्येक:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "चालु होने पर ब्लॉकलिस्ट आयात करें"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>सेटिंग्स</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "आवश्यक हो तो ब्लॉकलिस्ट फ़ाइल डाउनलोड करें और फ़ाइल आयात करें."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "डाउनलोड और आयात जांचें"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "नया ब्लॉकलिस्ट फ़ाइल डाउनलोड करें और आयात करें."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "बलपूर्वक डाउनलोड और आयात"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>विकल्प</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "प्रकार:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "तिथि:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "निश्चित आकार:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>जानकारी</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "टोरेंट पुरा हुआ"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "टॉरेंट जुड़ गया"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "चालू करें"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "घटना"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>आदेश जोड़ें</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>आदेश</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "पाथ"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "पाथ मौजूद नहीं है"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "एक फ़ोल्डर चुनें"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "अधिकतम अपलोड गति:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "अधिकतम सम्बन्ध:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "अधिकतम अपलोड स्लॉट्सः"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "अधिकतम डाउनलोड गति:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>बैंडविड्थ</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>कतार</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "सेकण्ड"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "सुनने का पोर्ट:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "अवैध लेबल, मान्य चिन्ह:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "खाली लेबल"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "लेबल का अस्तित्व पहले से है"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "अज्ञात लेबल"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "अज्ञात टॉरेंट"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "लेबल विकल्प (_O)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "लेबल हटायें (_R)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "लेबल जोड़ें (_A)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "लेबल विकल्प"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "लेबल"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>लेबल के विकल्प</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "प्रत्येक टोरेन्ट की अधिकतम योजना लगाएं:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "अधिकतम"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "कतार सेटिंग्स लागू करें:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 line per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "अपने आप लेबल लगाएं"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "लेबल जोड़ें"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>लेबल जोड़ें</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>साइडबार का उपयोग जोड़ने, संशोधन तथा हटाने के लिए करें. <i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>लेबल</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame स्थापित नहीं है"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "ध्वनि सक्षम हैं"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "यहाँ निकालें:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "टॉरेंट के नाम का उप फोल्डर बनायें"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"यह विकल्प चुने गये फोल्डर के भीतर टॉरेंट के नाम का एक उप फोल्डर बनाकर फिर "
+"उसके अंदर निकाली गयी फिलों को रख देगा|"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "लॉग आउट"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "सुरक्षित करें"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "होस्टः"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "स्थानान्तर"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "ब्राउज़ करें"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "लॉगिन"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "मिश्रित"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "अधिकतम सम्बन्ध निर्धारित करें"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "डाउनलोड स्पीड"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "अधिकतम डाउनलोड गति निर्धारित करें"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "अपलोड स्पीड"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "अधिकतम अपलोड गति निर्धारित करें"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "प्रोटोकॉल ट्रैफिक डाउनलोड/अपलोड"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "जोड़ें"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "फ़िल्टर्स"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "D/L गति सीमा"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "U/L गति सीमा"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "सम्बन्ध सीमा"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "अपलोड स्लॉट सीमा"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "ट्रैकर अपडेट"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "बलपूर्वक पुनः जांच"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "सभी फैलाएँ"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "विवरण"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "टिप्पणीः"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "स्थिति:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "सामान्य"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "निजी"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "लोड हो रहा है"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "सत्य"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "नए रिलीज़ के लिए चौकस रहें"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "स्थापित करें"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "अधिकतम सम्बन्ध:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "अधिकतम डाउनलोड गति (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "अधिकतम अपलोड गति (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "अधिकतम आधे-खुले सम्बन्ध"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "संबंधो के लिए प्रति सेकण्ड अधिकतम प्रयत्न संख्या"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "अधिकतम अपलोड स्लौट:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "पुराना:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "नया:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "सर्वर"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "ताज़ा करें"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "अवैध पासवर्ड"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "यूआरएल"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "कुकी"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "फाइल"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "विराम (Paused) अवस्था में जोड़ें"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "डाउनलोड"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/hr.po b/deluge/i18n/hr.po
new file mode 100644
index 0000000..0b4b9a8
--- /dev/null
+++ b/deluge/i18n/hr.po
@@ -0,0 +1,6249 @@
+# Croatian translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2020-03-05 22:21+0000\n"
+"Last-Translator: gogo <trebelnik2@gmail.com>\n"
+"Language-Team: Croatian <hr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+"Language: hr\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Uobičajene mogućnosti"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Prikaži ovu poruku pomoći"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Prikaži inačicu"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Postavi putanju diektorija podešavanja"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Mogućnosti pozadinskog programa"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "IP adresa slušanja povezivanja korisničkog sučelja"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Ulaz slušanja povezivanja korisničkog sučelja"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "IP adresa slušanja BitTorrent povezivanja"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Svi"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktivno"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Provjeravanje"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Preuzimanje"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Dijeljenje"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pauzirano"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Red čekanja"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Greška"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Naziv torrenta"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Napredak"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Stanje"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Veličina"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Preuzeto podataka"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Poslano podataka"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Preostalo"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Omjer"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Brzina preuzimanja"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Brzina dijeljenja"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limit preuzimanja"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Limit dijeljenja"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Najviše povezivanja"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Točke"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Dijelitelji"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Dostupno"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Dijelitelji:Točke"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Dodano"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Pratitelj"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Mapa preuzimanja"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Vrijeme dijeljenja"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Aktivno vrijeme"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Posljednja aktivnost"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Vrijeme završetka"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Završeno"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Preostalo vrijeme"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Dijeljenjo"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritetno prvi/posljednji"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatsko upravljanje"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Zaustavi pri omjeru"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Omjer zaustavljanja"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Ukloni pri omjeru"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Premjesti završeno u"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Putanja premještanja završenih"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr "Putanja premještanja završenih"
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Vlasnik"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Dijelovi"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Rang dijeljenja"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Upozorenje"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Najava OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Najava poslana"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Sučelje"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Preuzimanja"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Propusnost"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Red čekanja"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Mreža"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Priručna memorija"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Ostalo"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Dodaci"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Nizak"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normalan"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Visok"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Alandski otoci"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanija"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Alžir"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Američka Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andora"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktika"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigva i Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenija"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australija"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austrija"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbajdžan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahami"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrein"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladeš"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bjelorusija"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgija"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudi (Bermudski otoci)"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Butan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivija"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna i Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Bocvana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Otok Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Britanski indijskooceanski teritoriji"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunej Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bugarska"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Zelenortska Republika (Zelenortski otoci)"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kajmanski otoci"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Srednjoafrička Republika"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Čad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Čile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Božićni Otok"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosovi otoci"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbija"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komori"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo, Demokratska Repubilika"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cookovo Otočje (Cookovi otoci, Kukovi otoci)"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kostarika"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Obala Bjelokosti"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Hrvatska"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cipar"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Češka Republika (Republika Češka)"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danska"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Džibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikanska Republika"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekvador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipat"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "San Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvatorska Gvineja"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritreja"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonija"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandski Otoci (Malvinski Otoci)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Farski Otoci"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidži"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finska"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francuska"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Francuska Gvajana (Francuska Gijana)"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Francuska Polinezija"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Francuski južni i antarktički teritoriji"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambija"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gruzija"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Njemačka"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Gana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grčka"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grenland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Gvatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Gvineja"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Gvineja Bisau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Gvajana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Otok Heard i otočje McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Sveta Stolica (Država Vatikanskog Grada)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Mađarska"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indija"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonezija"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Islamska Republika"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irska"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Mana (otok)"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Izrael"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italija"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamajka"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenija"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Koreja, Demokratska Narodna Republika"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Republika Koreja"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuvajt"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laoska Narodna Demokratska Republika"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvija (Letonija)"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libija (Libijska Arapska Džamahirija)"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Lihtenštajn"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litva"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luksemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonija, Bivša Jugoslovenska Republika"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malavi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malezija"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivi"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Maršalovi otoci"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinik"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritanija"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauricijus"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Meksiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronezije, Savezne Države"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolija"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Crna Gora"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Mianmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Nambija"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Nizozemska"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Nizozemski Antili"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nova Kaledonija"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Novi Zeland"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragva"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigerija"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Otok Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Sjevernomarijanski otoci"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norveška"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinski Teritorij, Okupiran"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Nova Gvineja"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paragvaj"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipini"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitkairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Poljska"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Portoriko"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumunjska"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Ruska Federacija"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Sveti Bartolomej"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Sveta Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Sveti Kristofor i Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Sveta Lucija"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Sveti Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Sveti Vincent i Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Sveti Vincent i Grenadini"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sveti Toma i Princip"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudijska Arabija"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Srbija"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Sejšeli"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sijera Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovačka"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenija"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salamunovi Otoci"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalija"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Južna Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Južna Georgija i otočje Južni Sandwich"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Španjolska"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Šri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard i Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Svazi"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Švedska"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Švicarska"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Sirija, Arapska Republika"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Tajvan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadžikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzanija, Ujedinjena Republika"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tajland"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad i Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunis"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turska"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Otoci Turks i Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukrajina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Ujedinjeni Arabski Emirati"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Ujedinjeno Kraljevstvo"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Sjedinjene Države"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Sjedinjene Američke Države Manjih Pacifičkih Otoka"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Urugvaj"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vijetnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Britanski Djevičanski otoci"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Američki Djevičanski Otoci"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis i Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Zapadna Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambija"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabve"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Daemon nije pokrenut"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Naziv datoteke"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Rang"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Odaberite datoteku"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Odaberite mapu"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Pohranite .torrent datoteku"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent datoteke"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Sve datoteke"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Upišite svoju lozinku za prikaz Delugea..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Upišite svoju lozinku za izlaz iz Delugea..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Uredi putanju"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Ukloni putanju"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Autorska pravo %(year_start)s-%(year_end)s Deluge Tim"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Peer-to-peer program za dijeljenje datoteka\n"
+"koji koristi BitTorrent protokol."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klijent:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Trenutni razvojni programeri:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Bivši razvojni programeri ili doprinositelji:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Ovaj program je slobodan softver; možete ga redistribuirati i/ili mijenjati "
+"pod uvjetima GNU Opće javne licence objavljene od Fondacije slobodnog "
+"softvera; ili inačice 3 Licence ili (po vašemu mišljenju) svake novije "
+"inačice.\n"
+"\n"
+"Ovaj program je distribuiran u nadi da će biti koristan ali BEZ IKAKVOG "
+"JAMSTVA; čak i bez podrazumijevanog jamstva ili POGODNOSTI ZA ODREĐENU "
+"NAMJENU. Pogledajte GNU Opću javnu licencu za više informacija.\n"
+"\n"
+"Trebali ste dobiti primjerak GNU Opće javne licence uz ovaj program; ako "
+"niste pogledajte <http://www.gnu.org/licenses>.\n"
+"\n"
+"Osim toga, kao posebna iznimka, nositelji autorskih prava daju dopuštenje za "
+"povezivanje dijelova koda programa sa OpenSSL knjižnicom. Morate se "
+"pridržavati GNU Opće javne licence u svim pogledima za svaki kôd korišten "
+"drugdje osim u OpenSSL-u.\n"
+"\n"
+"Ako mijenjate datoteku ili datoteke sa ovim izuzetkom, morate proširiti ovaj "
+"izuzetak na vašu inačicu datoteke ili datoteka, ali vi niste dužni to "
+"učiniti. Ako ne želite to učiniti obrišite izjavu o izuzetku iz vaše "
+"inačice. Ako obrišete izjavu o izuzetku sa svih izvornih datoteka u "
+"programu, stoga ju obrišite i ovdje."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Poslužitelj:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Pogrešna datoteka"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Izaberite .torrent datoteku"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Pogrešan URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "nije valjani URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Preuzimanje..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Preuzimanje neuspjelo"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Preuzimanje neuspjelo:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Pojedinosti:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Ovjeri"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Korisničko ime:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Lozinka:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Zaštićeno lozinkom"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Drugačija..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Nije spojeno"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Brzina preuzimanja (ograničena)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Brzina dijeljenja (ograničena)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT čvorišta"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Slobodno prostora na disku"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Ograničenje brzine preuzimanja"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Postavite najveću brzinu preuzimanja"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Ograničenje brzine dijeljenja"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Postavite najveću brzinu dijeljenja"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Nikada"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Da"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Ne"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritet"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Sve"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Stanje torrenta"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Pojedinosti"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Da_toteke"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Točke"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Mogućnosti"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Pratitelji"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Nije povezano..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Neograničena"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Brzina preuzimanja"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Brzina dijeljenja"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "Nastavi u načinu rada Osnovnog klijenta?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Nije spojen"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Spojen"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Spojen"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Stanje"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Računalo"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Inačica"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Pokreni daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Zaustavi daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Prekini povezivanje"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Nemoguće je pokrenuti daemon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Greška pri dodavanju računala"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Korisničko ime"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Razina"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Uključeno"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Dodatak"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "Osnovni klijent"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Samostalni"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Odaberite dodatak"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Dodaci Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Stanje torrenta"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Pratitelji"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ništa"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Nazivi"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Nema naziva"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Inačica klijenta</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrenti su na čekanju"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent je na čekanju"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Postavi neograničeno"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Uključi"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Isključi"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Onemogući"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Omogući..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "IP adresa"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Torrent klijent"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Izrada torrenta"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrenti na čekanju"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "Ob_riši"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automatski dodaj torrente prilikom spajanja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Datoteka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Dodajte torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Izradite torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Otkaži &_isključi Daemon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Zatvorite Deluge"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Uredi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Upravitelj veza"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Pogled"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Alatna traka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Bočna traka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Traka _stanja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "K_artice"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Stupci"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "B_očna traka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Prikaži više stanja torrenta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Prikažite _pratitelje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Pomoć"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Deluge web stranica"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_Često postavljana pitanja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Često postavljana pitanja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Zajednica"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Dodajte torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Dodajte torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Uklonite torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Uklonite torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pauzirajte odabrani torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pauziraj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Ponovo pokrenite odabrani torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Pokrenite torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Pomaknite torrent gore"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Pomaknite u redu gore"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Pomaknite torrent dolje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Pomaknite u redu dolje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Postavke"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Upravitelj povezivanja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Zatvori"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Isključeno"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 ovjera"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP ovjera"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "Samostalna samostojeća aplikacija"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "Osnovni klijent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Poveži se s Deluge pozadinskim programom (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Način rada aplikacije"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Prikaži brzinu u naslovnoj traci"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Fokusiraj prozor pri dodavanju torrenta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"Traka dijelova\n"
+"će povećati propusnost između klijnta i pozadinskog\n"
+"programa (ne primjenjuje se u samostalnom načinu rada)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "Prikaži traku dijelova u kartici stanja"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Završeno:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Preuzimanje:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Čekanje:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Nedostaje:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Vrati izvornu boju"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Boje dijelova"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Glavni prozor"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Uključi ikonu u traci sustava"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "App indikator"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Traka sustava"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Smanji u traku sustava pri zatvaranju"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Pokreni u traci sustava"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Zaštiti traku sustava lozinkom"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Traka sustava"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Obavijesti o novim izdanjima"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Nadopune"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Zadano sustavom"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Premjesti dovršene torrente u:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopije .torrent datoteka su spremljene u:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Obriši kopiju torrent datoteke prilikom uklanjanja"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Obriši kopiju torrent datoteke napravljenu kada se torrent ukloni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Preuzmi torrente u:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prvi i zadnji dijelovi torrenta su prioritetni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prvi i zadnji dijelovi datoteka u torrentu su prioritetni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Dodaj torrente u pauziranom stanju"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Dodaj mogućnosti torenta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Uvijek prikaži"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Fokusiraj se na dijalog"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Dodaj dijalog torrenta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Pokušaj povezivanja po sekundi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Poluotvorena povezivanja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"Maksimalan broj dopuštenih konekcija. Postavite na -1 za neograničeno."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Povezivanja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksimalni broj ulaza dijeljenja za sve torrente. Postavite na -1 za "
+"neograničeno."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Ulazi dijeljenja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"NAjveća brzina preuzimanja za sve torrente. Postavite na -1 za neograničeno."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Brzina preuzimanja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Najveća brzina dijeljenja za sve torrente. Postavite na -1 za neograničeno."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Brzina dijeljenja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Zanemari ograničenja na lokalnoj mreži"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Ocjeni gornje IP ograničenje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Ako je označeno, gornja TCP/IP procjena je izvučena iz limitera ocjena, da "
+"izbjegnete prekomjerno ograničenje ukupnog prometa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Globalno ograničenje propusnosti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Maksimalni broj ulaza za dijeljenje po torrentu. Postavi na -1 za "
+"neograničeno."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Maksimalni broj konekcija po torrentu. Postavi na -1 za neograničeno."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr "Najveći broj preuzimanja po torrentu. Postavite -1 za neograničeno."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Najveća brzina dijeljenja po torrentu. Postavite -1 za neograničeno."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Ograničenje propusnosti po torrentu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Dijeljenje:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Ukupno:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Zanemari spore torrente"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Preferiraj dijeljenje torenta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Omjer dijeljenja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "Omjer vremena dijeljenja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Vrijeme dijeljenja (m):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Pauziraj torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Dolazne adrese"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktivni ulaz:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testiraj aktivni ulaz"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Od:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Razina:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Univerzalno ukopčaj i igraj"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protokol za pridruživanje NAT ulaza"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Razmjena točki"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"Lokalni servis za otkrivanje, pronalazi lokalne točke na vašoj mreži."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Distribuirana tablica jedinstvenih vrijednosti raspršivanja može poboljšati "
+"broj aktivnih konekcija."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TOS Bajt točke:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Naziv računala:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Ulaz:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "Proxy pratitelji"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Veličina priručne memorije (16 KiB blokova):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Broj sekundi od posljednjeg zapisa priručne memorije u dijelu zapisa "
+"priručne memorije, kada je prisilno zapisana na disk. Zadano je 60 sekundi."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Priručna memorija istječe (sekundi):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Postavke"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Ukupan broj od 16 KiB blokova zapisanih na disk od kada je sesija pokrenuta."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Zapisano blokova:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Ukupan broj od zapisanih operacija koje se izvode od kada je sesija "
+"pokrenuta."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Zapisa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Omjer (blokova_zapisano - zapisa) / blokova_zapisano prikazuje broj "
+"pohranjenih operacija zapisa po ukupnom zapisu informacija, npr. vrsta "
+"pogođenih omjera priručne memorije za zapis priručne memorije."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Omjer pogodaka zapisa priručne memorije:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Broj blokada zahtjevanih iz bittorrent pogona (iz točaka), koji su posluženi "
+"iz diska ili priručne memorije."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blokova očitano:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Broj blokova koji su posluženi iz priručne memorije."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blokirano očitanih pogodaka:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Omjer pogodaka priručne memorije za čitanje priručne memorije."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Omjer pogodaka čitanja priručne memorije:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Konačan broj izvedenih operacija čitanja od kada je ova sesija pokrenuta."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Očitano:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Broj od 16 KiB blokova trenutno je u priručnoj memoriji. To uključuje i "
+"čitanje i pisanje u priručnoj memorij."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Veličina priručne memorije:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Veličina čitanja priručne memorije:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Osvježi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Pomozite nam poboljšati Deluge tako što ćete nam poslati svoju inačicu "
+"Pythona, inačicu PyGTK, operacijski sustav i tipove procesora. Apsolutno "
+"nikakve druge informacije se ne šalju."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Da, molim šalji anonimnu statistiku"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Informacije sustava"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Lokacija:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Ako Deluge ne može pronaći datoteku baze podataka na toj lokaciji, ponovno "
+"će koristiti DNS da riješi zemlju točke."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon ulaz:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Dozvoli udaljene veze"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Povezivanja"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Povremeno provjeri web stranicu za novu inačicu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Računi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Inačica:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Početna stranica:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "E-pošta autora:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informacije"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Instaliraj"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Potraži više..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Dodajte točku"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "naziv poslužitelja:ulaz"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Svojstva"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Općenito</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Prikaži skrivene datoteke"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Automatsko završavanje"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Spremi putanju"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Prikaži skrivene datoteke"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Zadana putanja"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Prečaci"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Odaberi mapu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Putanje spremanja"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "stupac"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Odustani"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Otvori"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Dodaj"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Dodaj vrijednost trenutnog unosa na popis"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Uredi"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Uredi odabrani unos"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Ukloni"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Ukloni odabrani unos"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Pomakni odabrani unos gore"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Pomakni odabrani unos dolje"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Zadano"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Nema postavljenih zadanih putanja"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Otvori dijalog svojstva"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Dodajte Info-jedinstvenu-vrijednost"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Jedinstvena vrijednost:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Pratitelji:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Dodajte računalo"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Odredište:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Novo izdanje Delugea"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Idite na web stranicu"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Dostupno je novo izdanje!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Dostupna inačica:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Inačica poslužitelja"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Trenutna inačica:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Ne prikazujte ovaj dijalog u budućnosti"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Brzina preuzimanja:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Brzina dijeljenja:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Preuzeto:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Poslano:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Dijelitelji:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Točke:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Dostupnost:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Rang dijeljenja:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "Preostalo vrijeme:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Posljednji prijenos:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Aktivno vrijeme:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Vrijeme dijeljenja:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Dijelova:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Naziv:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Mapa preuzimanja:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Dodano:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Ukupna veličina:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Ukupno datoteka:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Jedinstvena vrijednost:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Stvorio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Komentari:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Vlasnik:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Premjesti završeno:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Zaustavi dijeljenje pri omjeru:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Ukloni pri omjeru"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Ograničenje propusnosti"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Trenutni pratitelj:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Ukupno pratitelja:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Stanje pratitelja:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Sljedeće objavljivanje:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Privatni torrent:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Uredite pratitelje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Na vrh"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Na dno"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Dodajte torrente"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_jedinstvene-vrijednosti"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Dodaj u _pauziranom stanju"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prvi/Zadnji dijelovi su prioritetni"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Najveća brzina dijeljenja torrenta"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Primjeni na sve"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Vrati na početno"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Prikaži Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Ograničenje brzine preuzimanja"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Ograničenje brzine dijeljenja"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Otkažite & isključite Daemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Uredi pratitelje"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Dodajte točku"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Dodajte točku po IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Uredite pratitelje"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Pratitelj:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Dodajte udaljenu putanju"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Putanja:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Izradite torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Ma_pa"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Udaljena putanju"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Datoteke"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Web dijelitelji"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Veličina dijela:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Postavi privatnu zastavicu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Dodajte ovaj torrent u sesiju"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Mogućnosti"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Spremi .torrent kao"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pauzirajte torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Po_krenite torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Ponovno pokrenite odabrane torrente."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Mog_ućnosti torrenta"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Red čekanja"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Osvježite pratitelje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Uklonite torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Forsirana provjera"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "naziv"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Odaberi _sve torrente"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pauziraj sve torrente"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Pokr_enite sve torrente"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Ograničenje veza"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limit _ulaza dijeljenja"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatsko upravljanje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Dodajte pratitelje"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Dodajte pratitelje"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Dodajte URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Prikaži sve"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent klijent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent klijent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Preuzimajte i dijelite datoteke putem BitTorrenta"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Opis"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Naredba"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Ne prikazuje stanje torrenta (Poboljšava brzinu naredbi)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Lozinka"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Zatvori"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Širina"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Mape"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr "Kopije .torrent datoteka su spremljene u"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Od"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Koristi naizmjenično odabrane ulaze"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Najveća brzina preuzimanja (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Najveća brzina dijeljenja (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Ukupno"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Udio u Dijeljenju"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Vrsta"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Odaberite jezik"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "IP adresa \"%s\" je neispravnog oblika"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP popis (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer tekst (zipano)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian tekst (nekomprimirano)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr "Raspon blokiranih IP adresa / Raspon dopuštenih IP adresa"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Popis blokiranih IP adresa"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Neispravne IP adrese"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Neispravni vođa"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Neispravni magičan kôd"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Pogrešna inačica"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "dana"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Provjeri za novi popis svakih:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Uvezi popis blokiranih IP adresa prilikom pokretanja"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Postavke</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Preuzmi popis blokiranih IP adresa i ako je potrebno uvezi ga."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Ažuriraj preuzmi i uvezi"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Preuzmi novi popis blokiranih IP adresa i uvezi ga."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forsiraj preuzimanje i uvezi"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Popis blokiranih IP adresa je ažuriran"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Mogućnosti</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Vrsta:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Datum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Veličina datoteke:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informacije</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Popis dopuštenih</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent preuzet"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent dodan"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent uklonjen"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Izvrši"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Događaj"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Dodajte naredbu</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Naredbe</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Nekompatibilna mogućnost"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+"\"Nadgledana mapa\" mapa i \"Kopije .torrent datoteka su spremljene u\" mapa "
+"ne mogu biti iste!"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Auto dodavanje"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Nadgledana mapa ne postoji."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Putanja ne postoji."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Postavke nadgledane mape"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Odaberite mapu"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Omogući ovu nadgledanu mapu"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Nadgledana mapa<b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Obriši .torrent nakon dodavanja"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Dodaj proširenje nakon dodavanja:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".dodano"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"Jednom kada je torent dodan u sesiju,\n"
+".torrent datpteka će se kopirati u odabranu\n"
+"mapu i obrisati se iz nadgledane mape."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Radnja torrent datoteke<b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Premjestite zvršeno</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Naziv: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Naziv<b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Glavno"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Najveća brzina dijeljenja:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maksimalno veza:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maksimalno ulaza dijeljenja:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Najveća brzina preuzimanja:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Raspon</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automatsko upravljanje:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Dodaj Pauzirano:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Red čekanja na:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Na čekanju</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>NNadgledana mapa:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "minuta"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 minuta"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 sekunda"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekunda"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Stanje"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Razlučivost"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Dijelitelji/Točke"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Boja preuzimanje:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Boja slanja:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Graf povezivanja</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Graf propusnosti</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "DHT čvorovi:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Predspremljeni DHT čvorovi:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "DHT torenti:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Dijelitelji / Točke</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Boje grafa</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebUi"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge web sučelje nije instalirano, molimo instalirajte\n"
+"sučelje i pokušajte ponovno"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Omogući web sučelje"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Omogući SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Nadzirani ulaz:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Pogrešan naziv, valjani znakovi:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Prazan naziv"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Naziv već postoji"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Nepoznat naziv"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Nepoznat torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Mogućnosti_naziva"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Ukloni naziv"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Dodaj naziv"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Postavke naziva"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Naziv"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Postavke naziva</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Primjenite po torrentu maks. postavke:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Primjeni postavke reda čekanja:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Primjeni postavke mape:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 redak po pratitelju)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automatski dodaj naziv:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Dodajte naziv"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Dodajte naziv</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Koristite bočnu traku za dodavanje, uređivanje i uklanjanje naziva. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Nazivi</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Blinkanje obavijesti prikazano"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Obavijest skočnog prozora nije omogućena."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Obavijest skočnog prozora prikazana"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Zvučna obavijest nije omogučena"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame nije i9nstaliran"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Zvučna obavijest nije uspjela %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Zvučna obavijest uspjela"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Završeno preuzimanje torrenta"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Torrent \"%(name)s\" koji sadrži %(num_files)i datoteka je završio "
+"preuzimanje."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Obavijesti"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Odaberite zvučnu datoteku"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Dogodila se greška prilikom slanja obavijesti na e-poštu: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "Poslužitelj nije ispravno odgovorio na pozdrav dobrodošlice: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "Poslužitelj nije prihvatio kombinaciju korisničkog imena/lozinke: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Obavijesna e-pošta je poslana."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Završeno preuzimanje torrenta \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Ova e-pošta vas obaviještava da je Deluge završio sa preuzimanjem Torrenta "
+"\"%(name)s\", što uključuje %(num_files)i files.\n"
+"Za zaustavljanje primanja ovih obavijesti, jednostavno isključite e-poštu "
+"obavijesti u postavkama Delugea.\n"
+"\n"
+"Hvala Vam,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Blinkanje ikone u traci sustava omogućeno"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Skočni prozor omogućen"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Zvuk omogućen"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Obavijesti korisničkog sučelja</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Primatelji</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Poslužitelj zahtijeva TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-pošta obavijesti</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Ova postavka ustvari ne znači da ćete primiti obavijest za sve ove događaje."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Pretplate"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Zvučne postavke"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Raspakiravanje"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Otpakiraj u:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Izradite naziv pod-mape po torrentu"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Ova mogućnost će stvoriti pod-mapu koristeći naziv torrenta unutar odabranog "
+"raspakiranog direktorija i staviti otpakirane datoteke tamo."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Raspored"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limit preuzimanja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limit dijeljenja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktivni torrenti:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktivno preuzimanje:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktivno dijeljenje:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Spore postavke</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Preglednik datoteka"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Natrag"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Naprijed"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Stvori"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Pomoć"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Odjava"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Spremi"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Ukloni s podacima"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Dodaj povezivanje"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Računalo:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "Nemoguće dodavanje računala: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Pomakni"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Pregledaj"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Uredi povezivanje"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "Nemoguće uređivanje računala"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Prijava"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Prijava neuspjela"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Upisali ste neispravnu lozinku"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Javni"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Posljednji prijenos"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Postavi maksimalan broj veza"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Brzina preuzimanja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Postavi najveću brzinu preuzimanja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Brzina dijeljenja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Postavi najveću brzinu dijeljenja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protokol prometa preuzimanje/dijeljenje"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "Slobodan prostor u mapi preuzimanja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Poveži se"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Zaustavi pozadinski program"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Prekini povezivanje"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Pokreni pozadinski program"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Promijeni zadanu lozinku"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Preporučljiva je promjena zadane lozinke.<br><br>Želite li ju odmah "
+"promijeniti?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "Poslužitelj pratitelja"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtri"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "Povezivanje je obnovljeno"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "Povezivanje je prekinuto"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "Pvezivanje s web poslužiteljem je prekinuto!"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "Pvezivanje s web poslužiteljem je prekinuto"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Ograničenje brzine O/P"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Ograničenje brzine O/D"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Osvježi pratitelja"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Prisilno provjeri"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Proširi sve"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Pojedinosti"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Komentar:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Stanje:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Općenito"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Osobno"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Provjeri je li dostupna nova inačica Delugea"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Pauziraj torrent"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Instaliraj"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maksimalan broj veza:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Najveća brzina preuzimanja (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Najveća brzina dijeljenja (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maksimum poluotvorenih veza:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maksimum pokušaja veze u sekundi:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maksimalni broj ulaza za dijeljenje:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "Potraži više"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Poslužitelj"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Najveća brzina preuzimanja"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Najveća brzina dijeljenja"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Preuzmi"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
+
+#~ msgid "<b>Language</b>"
+#~ msgstr "<b>Jezik</b>"
diff --git a/deluge/i18n/hu.po b/deluge/i18n/hu.po
new file mode 100644
index 0000000..f4acc75
--- /dev/null
+++ b/deluge/i18n/hu.po
@@ -0,0 +1,6173 @@
+# Hungarian translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Hungarian <hu@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Összes"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktív"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Ellenőrzés"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Letöltés"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Feltöltés"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Megállítva"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Várakozik"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Hiba"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Név"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Folyamat"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Állapot"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Méret"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Letöltve"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Feltöltött"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Arány"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Letöltés sebessége"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Feltöltés sebessége"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Letöltési korlát"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Feltöltési korlát"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Partnerek"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Elérhető"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Hozzáadva"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Hátralévő idő"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Első/Utolsó szelet prioritása magasabb"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatikusan kezelt"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Szeletek"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Figyelmeztetés"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Bejelentés rendben"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Bejelentés elküldve"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfész"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Letöltések"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Sávszélesség"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Letöltési sor"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Hálózat"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Gyorsítótár"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Egyéb"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Kiszolgáló"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Bővítmények"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganisztán"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Aland-szigetek"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albánia"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algéria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikai Szamoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktisz"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua és Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentína"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Örményország"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Ausztrália"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Ausztria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbajdzsán"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahama-szigetek"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrein"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Banglades"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Fehéroroszország"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgium"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda-szigetek"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhután"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolívia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosznia-Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet-sziget"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazília"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Brit Indiai-óceáni Terület"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Szultanátus"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgária"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodzsa"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Zöld-foki Köztársaság"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kajmán-szigetek"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Közép-afrikai Köztársaság"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Csád"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kína"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Karácsony-sziget"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kókusz (Keeling)-szigetek"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comore-szigetek"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongó"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongói Demokratikus Köztársaság"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook-szigetek"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Elefántcsontpart"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Horvátország"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Ciprus"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Cseh Köztársaság"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dánia"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Dzsibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikai Köztársaság"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egyiptom"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Egyenlítői Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Észtország"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiópia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkland-szigetek (Malvinas)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Feröer-szigetek"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidzsi-szigetek"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finnország"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Franciaország"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Francia Guyana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Francia Polinézia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Francia Déli Területek"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Grúzia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Németország"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghána"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltár"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Görögország"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grönland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Bissau-Guinea"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard-sziget és McDonald-szigetek"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Szentszék (Vatikán városállam)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Magyarország"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Izland"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonézia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iráni Iszlám Köztársaság"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Írország"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Man-sziget"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Izrael"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Olaszország"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japán"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordánia"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazahsztán"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Koreai Demokratikus Népköztársaság"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Koreai Köztársaság"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuvait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgizisztán"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laoszi Népi Demokratikus Köztársaság"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Lettország"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libéria"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Líbiai Arab Jamahiriya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Lichtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litvánia"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makaó"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedónia Volt Jugoszláv Köztársaság"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaszkár"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malajzia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldív-szigetek"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Málta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshall-szigetek"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritánia"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexikó"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronéziai Szövetségi Államok"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongólia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegró"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokkó"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Mianmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namíbia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepál"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Hollandia"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Holland Antillák"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Új-Kaledónia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Új-Zéland"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigéria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolk-sziget"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Északi Mariana-szigetek"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norvégia"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omán"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakisztán"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palesztin Megszállt Területek"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Pápua Új-Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Fülöp-szigetek"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn-szigetek"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Lengyelország"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugália"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Románia"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Oroszországi Föderáció"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthélemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Szent Ilona"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts és Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre és Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent és a Grenadine-szigetek"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Szamoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome és Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Szaúd-Arábia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Szenegál"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Szerbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles-szigetek"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Szingapúr"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Szlovákia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Szlovénia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salamon-szigetek"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Szomália"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Dél-afrikai Köztársaság"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Déli-Georgia és Déli-Sandwich-szigetek"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spanyolország"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Srí Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Szudán"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Spitzbergák és Jan Mayen-sziget"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Szváziföld"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Svédország"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Svájc"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Szíriai Arab Köztársaság"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tádzsikisztán"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzániai Egyesült Köztársaság"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thaiföld"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Kelet-Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau-szigetek"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad és Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunézia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Törökország"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Türkmenisztán"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks- és Caicos-szigetek"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukrajna"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Egyesült Arab Emírségek"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Egyesült Királyság"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Amerikai Egyesült Államok"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Amerikai Egyesült Államok kisebb külső szigetek"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Üzbegisztán"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnám"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Brit Virgin-szigetek"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Amerikai Virgin-szigetek"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis és Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Nyugat-Szahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "A démon nem fut"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Fájlnév"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Szint"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Válasszon egy fájlt"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Válasszon mappát"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ".torrent fájl mentése"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent fájlok"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Minden fájl"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Kliens:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Jelenlegi fejlesztők:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Szerver:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Érvénytelen fájl"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Válassz .torrent fájlt"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Érvénytelen URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "érvénytelen URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Letöltés..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Letöltés sikertelen"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Részletek:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Felhasználónév:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Jelszó:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Egyéb..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Nem kapcsolódott"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT csomópontok"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Szabad lemezterület"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Igen"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nem"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Elsőbbség"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Állapot"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Részletek"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fáj_lok"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Partnerek"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Beállítások"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Nincs csatlakozva..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Korlátlan"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Le"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Fel"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Kapcsolat nélkül"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Csatlakozva"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Kapcsolódva"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Státusz"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Hoszt"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Verzió"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Démon _indítása"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Démon _leállítása"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Hiba a Host hozzáadásakor"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Felhasználónév"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Szint"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Bekapcsolva"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Bővítmény"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Bővítmény kiválasztása"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Bővítmény fájlok"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Állapotok"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackerek"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Egyik sem"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Adminisztrátor"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Címkék"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Nincs címke"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Kliensverzió</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrentek sorbaállítva"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent sorbaállítva"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Korlátlan beállítása"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Be"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Ki"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Tiltás"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Cím"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Kliens"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Torrent készítése"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Sorbaállított torrentek"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Eltávolítás"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Kapcsolódáskor torrentek automatikus hozzáadása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fájl"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "Torrent _hozzáadása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "Torrent _létrehozása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Kilépés és kiszolgáló _leállítása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Kilépés"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Szerkesztés"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Kapcsolat kezelő"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Nézet"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Eszköztár"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Oldalsáv"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Állapot_sor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Abla_kok"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Oszlopok"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Oldalsáv"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Mutasd a _nulla találatot"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "_Trackerek mutatása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Súgó"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Honlap"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Gyakran Ismételt Kérdések"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Közösség"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Torrent hozzáadása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Torrent hozzáadása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Torrent eltávolítása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Torrent eltávolítása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Kiválasztott torrentek megállítása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Megállít"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Kiválasztott torrentek visszaállítása"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Folytatás"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Feljebb a listán"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Eggyel feljebb"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Lejjebb a listán"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Eggyel lejjebb"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Beállítások"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Kapcsolat kezelő"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Erőltetett"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Kikapcsolva"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Kézfogás"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Valamelyik"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Munkamenet sebességének megjelenítése az állapotsorban"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Ikon megjelenítése az értesítési területen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Bezáráskor kicsinyítés a tálcára"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Indítás a tálcán"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Tálca jelszavas védelme"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Kész áthelyezése:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ".torrent fájlok másolása ide:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Letöltés ide:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "A torrent első és utolsó darabja fontosabb"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Az első és az utolsó darabot töltse először"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Torrentek hozzáadása szünetelt állapotban"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Mindig mutasd"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Párbeszéd előtérbe helyezése"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Megengedett kapcsolatok maximális száma. Korlátlanhoz -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Kapcsolatok:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Feltöltési szálak maximális száma az összes torrenthez. Korlátlanhoz -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "A torrentek maximális letöltési sebessége. Korlátlanhoz -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Letöltési sebesség:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "A torrentek maximális feltöltési sebessége. Korlátlanhoz -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Feltöltési sebesség:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Korlátok figyelmen kívül hagyása helyi hálózaton"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "IP címek arányának felső korlátja"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Ha be van jelölve, a becsült TCP/IP felső korlátja az arány-korlátozásokból "
+"lesz meghatározva, hogy kivédje a teljes forgalom korlátjának elérését."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Feltöltési szálak maximális száma torrentenként. Korlátlanhoz -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Kapcsolatok maximális száma torrentenként. Korlátlanhoz -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Véletlen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktív port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Aktív port tesztelése"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Feladó:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Címzett:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Szint:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Titkosítás"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer csere (PEX)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Az LSD helyi partnereket keres a hálózatodon."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Trackeren kívüli kliensek engedélyezése."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Kiszolgálónév:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Gyorsítótár mérete (16 KiB tömbök):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Gyorsítótár lejár (másodpercben):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Beállitások"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Kiírt blokkok:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Gyorsítótár mérete:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Segíts minket azzal, hogy elküldöd a Python, PyGTK verziószámod, az OS- és "
+"processzortípusod. Semmilyen más információ nem kerül elküldésre."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Igen, küldök anonim statisztikákat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Hely:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Kiszolgáló port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Távoli kapcsolatok engedélyezése"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Kapcsolatok"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Rendszeresen ellenőrizd a weboldalt az új kiadásokért"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Verzió:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Szerző:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Honlap:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Szerző e-mail címe:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Infó"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Peer hozzáadása"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hosztnév:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Általános</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Mégse"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Hozzáad"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Eltávolítás"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Infohash hozzáadása"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackerek:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Host felvétele"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Cél:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Új kiadás"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Ugrás a weboldalra"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Ezt a párbeszédet ne mutasd a jövőben"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Név:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Megjegyzések:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Befejezett mozgatása:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Feltöltés megállítása ilyen aránynál:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Eltávolítás, ha az arány eléri"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "Tracker _szerkesztése"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Első"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Utolsó"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Torrentek hozzáadása"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Hozzádás _szünetelt állapotban"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Első és utolsó szelet fontosabb"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Mindre alkalmaz"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Alapbeállítások visszaállítása"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Deluge _mutatása"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Letöltési sebesség korlát"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Feltöltési sebesség korlát"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Kilépés és a kiszolgáló leállítása"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Trackerek szerkesztése"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "Peer _hozzáadása"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Peer hozzáadása IP alapján"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Tracker szerkesztése"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Add meg a távoli útvonalat"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Útvonal:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Torrent létrehozása"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Könyv_tár"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Távoli útvonal"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Fáljok"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webfeltöltések"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Darabok mérete:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Privát flag beállítása"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Ezen torrent hozzáadása a munkamenethez"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Beállítások"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ".torrent mentése másként"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Vissza_térés"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Kiválasztott torrentek folytatása"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Be_állítások"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Várólista"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Tracker _frissítése"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Torrent _eltávolítása"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Erőltetett újraellenőrzés"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "címke"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Mindent kijelöl"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Mindet _megállít"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Összes _folytatása"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Kapcsolat korlát"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Feltöltési _szál korlát"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatikusan beállított"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Tracker hozzáadása"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URL hozzáadása"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Összes _kibontása"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent kliens"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent kliens"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Fájlok letöltése és megosztása BitTorrenten keresztül"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Parancs"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Jelszó"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Feladó"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Címzett"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Portok véletlenszerű használata"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Bejövő"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Kimenő"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maximális kapcsolatok"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maximum feltöltési szálak"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximum félig nyitott Kapcsolatok"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Másodpercenkénti maximum kapcsolódási kísérletek"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "IP címek arányának felső korlátja"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Megosztási arány"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tipus"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Alkalmaz"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP lista (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Tömörítetlen)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokklista"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Helytelen vezető"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Helytelen varázskód"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Érvénytelen verzió"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Napok"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Új lista keresése minden:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Blokklista betöltése induláskor"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Beállítások</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Blokklista fájl letöltése ha szükséges, és betöltés."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Letöltés ellenőrzése és betöltés"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Új blokklista letöltése és betöltése."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Letöltés erőltetése és betöltés"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "A feketelista naprakész"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Beállítások</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Típus:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Dátum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Fájlméret:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent kész"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent hozzáadva"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Végrehajtás"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Esemény"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Parancs hozzáadása</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Parancsok</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Az elérési út nem létezik"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Válasszon egy mappát"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "A .torrent fájl törlése a hozzáadás után"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Kiterjesztés hozzáfűzése a hozzáadás után:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrentfájl művelet</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Befejezett áthelyezése</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Címke: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Címke</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Fő"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Max. feltöltési sebesség:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maximális kapcsolatok száma:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Max. feltöltési szálak:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Max. letöltési sebesség:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Sávszélesség</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automatikusan kezelt:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Hozzádás szünetelt állapotban"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Besorolva:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Sor</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "másodperc"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Webes felület engedélyezése"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL engedélyezése"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Érvénytelen címke, használható karakterek:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Üres címke"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "A címke már létezik"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Ismeretlen címke"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Ismeretlen torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Címke _beállítások"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Cimke _eltávolítása"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "Címke _hozzáadása"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Címke beállítások"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Címke"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Címke beállítások</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Torrentenkénti maximális érték alkalmazása"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Letöltési sor beállításai:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 sor trackerenként)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Címke automatikus alkalmazása:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Címke hozzáadása"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Címke hozzáadása</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Használd az oldalsávot a címkék hozzáadásához, szerkesztéséhez és "
+"eltávolításához. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Címkék</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "A hangjelzés nem engedélyezett"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "A pygame nincs telepítve"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "A hangjelzés sikertelen: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "A hangjelzés sikeres"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Befejezett torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Válasszon egy hangfájlt"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Hiba történt az értesítő e-mail küldésénél: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Az értesítő e-mail elküldve."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Befejezett torrent: \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Tálca ikon villogtatása engedélyezve"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Felugrók engedélyezve"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Hang engedélyezve"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI értesítések</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Címzettek</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "A szerver TLS/SSL titkosítást igényel"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-mail értesítések</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Feliratkozások"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Hang beállítások"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Kibontás ide:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Alkönyvtár létrehozása a torrent nevével"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Az opciót engedélyezve létrejön egy alkönyvtár a torrent nevével a "
+"kiválasztott célkönyvtárban, és a kicsomagolt fájlok odakerülnek."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Letöltési határ:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Feltöltési határ:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktív torrentek:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktív letöltés:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktív feltöltés:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Lassú Beállítások</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Kijelentkezés"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Mentés"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Áthelyezés"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Bejelentkezés"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Maximális kapcsolatok száma"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Letöltési sebesség"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Maximum letöltési sebesség beállítása"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Feltöltési sebesség"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Maximum feltöltési sebesség beállítása"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Le- és feltöltési protokollok"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Csatlakozás"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Szűrők"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Le- és feltöltése sebességkorlát"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Feltöltési sebességkorlát"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Kapcsolat Limit"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Feltöltési szálak korlátozása"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Tracker frissítése"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Erőltetett újraellenőrzés"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Részletek"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Általános"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privát"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Igaz"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Figyelmeztessen, ha új verzió jelent meg"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Kapcsolatok maximális száma:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maximális letöltési sebesség (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maximális feltöltési sebesség (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximum félig-nyitott kapcsolatok:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Másodpercenkénti maximum kapcsolódási kísérlet"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maximum feltöltési szálak:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Kiszolgáló"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Frissítés"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fájl"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Hozzáadás szünetelt állapotban"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Letöltés"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/id.po b/deluge/i18n/id.po
new file mode 100644
index 0000000..22af8f2
--- /dev/null
+++ b/deluge/i18n/id.po
@@ -0,0 +1,6164 @@
+# Indonesian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Indonesian <id@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/detik"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Semua"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Mengunduh"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Menyebarkan"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Kesalahan"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nama"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Perkembangan"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Ukuran"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Terunduh"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Terunggah"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Rasio"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Kecepatan Unduh"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Kecepatan Unggah"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peer"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Tersedia"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritaskan Awal/Akhir"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Potongan"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Waspada"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Unduh"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Lebar Pita"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Antrian"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Jaringan"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugin"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nama berkas"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Lapis"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Bekas torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Semua berkas"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Pilih berkas .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Kata Sandi:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Lainnya..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Tidak Terhubung"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritas"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Tidak terbatas"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Unduh"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Unggah"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Tingkatan"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Aktif"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Label"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrent Mengantri"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent Mengantri"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Atur Tak Terbatas"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Non-aktifkan"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Alamat"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klien"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Berkas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Edit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Tampilan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Bantuan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Tambah torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Tambah Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Hapus torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "HapusTorrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Tunda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Lanjutkan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Naikkan Antrian"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Turunkan Antrian"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Pengaturan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Paksa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Non-aktif"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Jabat tangan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Aktifkan ikon system tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimalkan ke tray ketika ditutup"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Pindahkan yang telah selesai ke:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Koneksi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Kecepatan mengunduh:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Kecepatan mengunggah:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Acak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Port Aktif:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Dari:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Ke:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Enkripsi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Koneksi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Umum</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Tambah"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Hapus"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Jangan tampilkan halaman ini di kemudian hari"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nama:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Hentikan penyebaran pada rasio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Singkirkan pada rasio"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Berkas"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Kata Sandi"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Dari"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Sampai"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Koneksi Maksimal"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Jumlah Maksimum Koneksi Setengah Terbuka"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Jumlah Maksimum Percobaan Koneksi per Detik"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Rasio Berbagi"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Terapkan"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versi Tidak Sah"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Cek daftar terbaru setiap:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Pengaturan</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Tanggal:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Ukuran Berkas:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "detik"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Label tidak sah, karakter yang sah:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Label Kosong"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Label Tak Dikenal"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent Tak Dikenal"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Pengaturan Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Pengaturan Label</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Terapkan aturan per torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimal"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Terapkan Aturan antrian:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 baris per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Otomatis pasang label:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Tambah Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Tambah Label<b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Label</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Keluar"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Simpan"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Masuk"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Kecepatan Mengunduh"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Kecepatan Mengunggah"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Hubungkan"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Saringan"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detil"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Umum"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Perbaharui"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Berkas"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Tambahkan Dalam Kondisi Tertunda"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Unduh"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/is.po b/deluge/i18n/is.po
new file mode 100644
index 0000000..5b2cbf3
--- /dev/null
+++ b/deluge/i18n/is.po
@@ -0,0 +1,6176 @@
+# Icelandic translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Icelandic <is@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/sek"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/sek."
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/sek."
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Allt"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Athugar"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Hala niður"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Deili"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Í biðstöðu"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Í biðröð"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Villa"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nafn"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Framvinda"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Staða"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Stærð"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Niðurhalað"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Upphalað"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Hlutfall"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Niðurhalshraði"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Hraði upp"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Jafningjar"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Avail"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Bætt við"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Sporrekjandi"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ÁKT"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Setja forgang fyrst/síðast"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Stjórnast sjálfvirkt"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Hlutar"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Viðvörun"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Tilkynning í lagi"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Tilkynning send"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Viðmót"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Niðurhöl"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandvídd"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Röð"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Netkerfi"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Staðgengill"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Annað"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Púki"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Hliðarforrit"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Heiti skjals"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Bindi"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Veldu skrá"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Veldu möppu"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Vista .torrent skjal"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Straumskjöl"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Öll skjöl"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Þjónn:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Straumur"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Veldu .torrent skjal"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Smáatriði:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Notandanafn:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Aðgangsorð:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Annað..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Ekki tengd(ur)"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT greinar"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Já"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nei"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Forgangur"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Staða"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Nánar"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "S_krár"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Jafningjar"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Valkostir"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Ótakmarkað"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Niður"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Upp"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Hýsill"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Notandanafn"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Stig"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Virkt"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Hliðarforrit"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Veldu hliðarforritið"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Hliðarforritaegg"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Sporrekjendur"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ekkert"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Kerfis"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Merki"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Enginn merkimiði"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " straumar í biðröð"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " straumur í biðröð"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Stilla sem ótakmarkað"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Kveikt"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Slökkt"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Gera óvirkt"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Veffang"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Biðill"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Bý til straum"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Straumar í biðröð"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Fjarlægja"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Bæta við straumum sjálfkrafa við tengingu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Skrá"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Bæta við straumi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Búa til straum"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Hætta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Breyta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Tengingastjórnandi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Straumur"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Skoða"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Tækjastika"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Hliðarstika"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Stöðu_stika"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Fl_ipar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Súlur"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Hl_iðarstika"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Sýna _núll hæfni"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Sýna _sporrekjendur"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Hjálp"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Algengar Spurningar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Bæta við straumi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Bæta við straumi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Fjarlægja straum"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Fjarlægja straum"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Setja valda strauma í biðstöðu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Gera hlé"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Byrja aftur á völdum straumum"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Byrja aftur"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Setja straum í biðröð upp"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Röð upp"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Setja straum í biðröð niður"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Röð niður"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Kjörstillingar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Tengingastjóri"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Neytt"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Óvirkt"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Handatak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Annað hvort"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Sýna hraða dvalar á titilstiku"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Virkja táknmynd í kerfisbakka"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minnka niður í bakka við lokun"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Byrja í bakka"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Setja aðgangsorð á kerfisbakka"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Flytja klárað í:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Afrit af .torrent skjölum til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Hala niður í:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Setja fyrstu og síðustu hluta straums í forgang"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Setja fyrstu og síðastu hluta skjala í straumi í forgang"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Sýna alltaf"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Færa samtalið í forgrunn"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Hámarksfjöldi leyfðra tenginga. Settu -1 fyrir ótakmarkað."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Tengingar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Hámarksfjöldi upphalshólfa fyrir alla strauma. Settu -1 fyrir ótakmarkað."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Hámarks niðurhalshraði fyrir alla strauma. Settu -1 fyrir ótakmarkað."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Niðurhalshraði:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "Hámarks upphalshraði fyrir alla strauma. Settu -1 fyrir ótakmarkað."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Upphalshraði:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Hundsa takmörk á staðbundnu netkerfi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Regla um IR (IP) hámark"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"ef hakað er í hér mun áætluð regla um RSG/IR (TCP/IP) hámark verða dregin "
+"frá gengistakmörkunum, til að forðast það að fara framyfir takmörk í "
+"staðbundinni umferð"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Hámarksfjöldi upphalshólfa á hvern straum. Settu -1 fyrir ótakmarkað."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Hámarksfjöldi tenginga á hvern straum. Settu -1 fyrir ótakmarkað."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Af Handahófi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Virkt tengi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Prófa virkt tengi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Frá:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Stig:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Dulritun"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "AToS"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Algilt tengja og spila (UPnP)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NHF-TSR (nat-pmp)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NHF TengisSkráningarReglur (nat-pmp)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Viðskipti jafningja"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "TDT (lsd)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"Uppgötvun staðarþjónustu finnur staðbundna jafningja í netkerfi þínu."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Dreifð hakktafla gæti bætt fjölda virkra tenginga."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TÞ (TOS) bæti deilanda:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nafn þjóns:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Tengi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Stillingar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Hjálpaðu okkur að bæta Deluge með því að senda okkur upplýsingar um Python "
+"útgáfu, PyGTK útgáfu, stýrikerfi og örgjörva. Alls engar aðrar upplýsingar "
+"eru sendar."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Já, vinsamlegast sendu nafnlausa tölfræði"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Púkatengi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Tengi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Leyfa fjartengingar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Tengingar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Leita reglulega eftir nýjum útgáfum á heimasíðunni."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Útgáfa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Höfundur:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Heimasíða:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Tölvupóstfang höfundar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Upplýsingar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Bæta við jafningja"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "nafn þjóns:tengi"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Almennt</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Hætta við"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Bæta við"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Fjarlægja"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Bæta við upplýsingahakki"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Upplýsingahakk:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Sporrekjendur:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Bæta við þjóni"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Áfangastaður:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Ný útgáfa"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Heimsækja vefsíðu"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Ekki sýna þetta samtal í framtíðinni"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nafn:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Athugasemdir:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Flutningi lokið:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Hætta að deila við hlutfall:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Fjarlægja við hlutfall"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Breyta sporrekjendum"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Efst"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Neðst"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Bæta við straumum"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_Slóð"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Upplýsinga_hakk"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Bæta við í_Biðstöðu"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Setja fyrstu/síðustu hluta í forgang"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Taka til allra"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Hverfa aftur til upprunastillinga"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Sýna Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Hámarks niðurhalshraði"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Hámarks upphalshraði"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Hætta og slökkva á púka"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Breyta sporrekjendum"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Bæta við jafningja eftir IR(IP)"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Breyta sporrekjanda"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Sporrekjandi:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Færið inn fjartengda leið"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Leið:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Búa til straum"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Ma_ppa"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Fjartengd leið"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Skjöl"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Vefdeilendur"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Stærð hluta:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Setja einkastöðuveifu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Bæta þessum straum í dvölina"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Valkostir"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Vista .torrent sem"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Byrja_aftur"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Byrja aftur á völdum straumum."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Valmögu_leikar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Röð"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Uppfæra sporrekjanda"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Fjarlægja straum"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Neyða til endurathugunar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "Merkimiði"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Velja allt"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Setja alla í biðstöðu"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Byrja_aftur á öllum"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Hámark tengingar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Hámarksfjöldi upphals_hólfa"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Sjálfstjórnað"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Bæta við sporrekjanda"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Bæta við slóð"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "Slóð:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Breiða úr öllum"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Aðgangsorð"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Frá"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Til"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Nota tengi af handahófi"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Á leið inn"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Á leið út"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Mesti fjöldi tenginga"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Mesti fjöldi upphalshólfa"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Hámark hálf-opinna tenginga"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Hámark tilrauna til tengingar á sekúndu"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Gildistakmörkun IR (ip)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Hlutfall deilingar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Gerð"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Staðfesta"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "IPtölulisti Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer texti (í zip formati)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian texti (óþjappaður)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Útilokunarlisti"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Óglidur leiðandi"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Ógildur töfrakóði"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ógild útgáfa"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dagar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Leita eftir nýjum lista hverja:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Flytja inn bannlista við ræsingu:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Stillingar</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Hala niður bannlistaskjal ef nauðsyn krefur og flytja inn skjalið."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Athuga niðurhal og innflutning"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Hala niður nýju bannlistaskjali og flytja það inn."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Neyða til niðurhals og innflutnings"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b> Valkostir</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Gerð:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Dagsetning:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Stærð skjals:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Upplýsingar</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Veldu möppu"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Hámarks upphalshraði:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Hámarksfjöldi tenginga:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Hámarksfjöldi upphalshólfa"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Hámarks niðurhalshraði:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandvídd</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Í röð</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekúndur"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Ógilt merki, gildir stafir: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tómt merki"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Merkimiði er áður til"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Óþekkt merki"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Óþekktur straumur"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Merkimiða_valkostir"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Fjarlægja merkimiða"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Bæta við merkimiða"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Merkimiðavalkostir"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Merki"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Merkimiðavalkostir</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Virkja hámarksstillingar fyrir hvern straum:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Hámark"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Virkja biðraðarstillingar:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 lína á hvern sporrekjanda)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Virkja merkimiða sjálfvirkt:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Bættu við merkimiða"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Bæta við merkimiða</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Notaðu hliðarstikuna til að bæta við, breyta og fjarlægja merkimiða. "
+"</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Merkimiðar</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Villa við að senda tilkynningu í tölvupósti: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Útskráning"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Vista"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Hýsill:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Flytja"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Innskráning"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Setja hámark tenginga"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Niðurhalshraði"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Setja hámarks niðurhalshraða"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Upphalshraði"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Setja hámarks upphalshraða"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Reglu-umferð upphal/niðurhal"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Tengjast"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Síur"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "N/H hraðatakmörk"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "U/H hraðatakmörk"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Takmörk tengingar"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Hámark upphalshólfa"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Uppfæra sporrekjanda"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Neyða til endurskoðunar"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Upplýsingar"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Almennt"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Einka"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Rétt"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Láttu mig vita um nýjar útgáfur"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Hámarksfjöldi tenginga:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Hámarks niðurhalshraði (KíB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Hámarks upphalshraði (KíB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Hámark hálfopinna tenginga:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Hámarksfjöldi tengingatilrauna á sekúndu:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Hámarksfjöldi upphalshólfa:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Þjónn"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Endurskoða"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Slóð"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Skjal"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Bæta við í biðstöðu"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Hala niður"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/it.po b/deluge/i18n/it.po
new file mode 100644
index 0000000..d571b2b
--- /dev/null
+++ b/deluge/i18n/it.po
@@ -0,0 +1,6216 @@
+# Italian translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Italian <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Tutto"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Attivo"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Controllo in corso"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "In scaricamento"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "In condivisione"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "In pausa"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "In coda"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Errore"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nome"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Avanzamento"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Stato"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Dimensione"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Scaricati"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Inviato"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Rapporto"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Velocità di Scaricamento"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Velocità d'invio"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limite download"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Limite Velocità"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Disp"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Aggiunto"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Tempo rimanente"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Priorità Primo/Ultimo"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Gestito automaticamente"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Parti"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Attenzione"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Annuncio OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Annuncio Inviato"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfaccia"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Scaricamenti"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Banda"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Coda"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Rete"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Altro"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Demone"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Isole Aland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Americane"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antartide"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua e Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Le Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bielorussia"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgio"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia-Erzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Isola Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasile"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Territorio Britannico dell'Oceano Indiano"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Sultanato del Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambogia"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameroon"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Capo Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Isole Cayman"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Repubblica Centroafricana"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Ciad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Cile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Cina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Isola Christmas"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Isole Cocos e Keeling"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comore"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Repubblica Democratica del Congo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Isole di Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Costa d'Avorio"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croazia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cipro"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Repubblica Ceca"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danimarca"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Gibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Repubblica Dominicana"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egitto"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Guinea Equatoriale"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Isole Falkland (Malvine)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Isole Faroe"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Isole Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlandia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francia"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Guiana Francese"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinesia Francese"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Terre Australi e Antartiche Francesi"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Germania"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibilterra"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grecia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenlandia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Granada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupa"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Isole Heard e McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Stato del Vaticano"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungheria"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islanda"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraq"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isola di Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israele"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Giamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Giappone"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Giordania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakistan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Corea del Nord"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Corea del Sud"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Lettonia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libano"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Lussemburgo"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malesia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldive"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Isole Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinica"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Messico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Stati Federati della Micronesia"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Principato di Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marocco"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambico"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Paesi Bassi"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antille Olandesi"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nuova Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nuova Zelanda"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Isola Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Isole Marianne Settentrionali"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norvegia"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Territori Occupati Palestinesi"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Nuova Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Perù"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filippine"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Isole Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polonia"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portogallo"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Porto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Riunione"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Federazione Russa"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint-Barthélemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Sant'Elena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts e Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Santa Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint-Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre e Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent e Grenadine"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome e Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arabia Saudita"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovacchia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Isole Salomone"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Sud Africa"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Georgia del Sud e le Isole Sandwich del Sud"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spagna"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard e Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Svezia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Svizzera"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Siria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tagikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tailandia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor Est"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad e Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turchia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Isole Turks e Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ucraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Emirati Arabi Uniti"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Gran Bretagna"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Stati Uniti"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Isole Minori Esterne degli Stati Uniti"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Isole Vergini Britanniche"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Isole Vergini Americane"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis e Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Sahara Occidentale"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "ll demone non è in esecuzione"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nome file"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Ordine"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Scegliere un file"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Scegliere una cartella"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Salva file .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "File torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Tutti i file"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Un programma di condivisione file peer-to-peer\n"
+"che utilizza il protocollo BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Client:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Sviluppatori attuali:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Sviluppatori o Collaboratori precedenti:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "File non valido"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Scegliere un file .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL non valido"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "non è un URL valido."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Scaricamento..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Scaricamento Fallito"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Impossibile scaricare:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Dettagli:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nome Utente:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Password:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Altro..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Non Connesso"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nodi DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Spazio Disco Libero"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Sì"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "No"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priorità"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Stato"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Dettagli"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_le"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Nodi"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opzioni"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Non connesso..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Nessun limite"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Download:"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Upload:"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Non in linea"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "In linea"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Connesso"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Stato"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versione"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Avvia il demone"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Ferma il demone"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Impossibile avviare il demone!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Errore aggiungendo l'host"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Note utente"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Livello"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Selezionare il plugin"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Stato"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackers"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Niente"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Amministratore"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etichette"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Nessuna etichetta"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Versione client</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents in coda"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent in cod"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Nessun Limite"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Attivo"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Disattivo"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Disabilita"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Indirizzo"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creazione Torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrent in Coda"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Rimuovi"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Aggiungi automaticamente torrent alla connessione"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_File"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Aggiungi torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Crea Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Demone di Chiusura &_Spegnimento"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Esci"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Modifica"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Gestore Connessione"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Visualizza"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Barra degli _strumenti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Barra laterale"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Barra di stato"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "S_chede"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Colonne"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_idebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Mostra _zero corrispondenze"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Mostra _Tracker"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "A_iuto"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Pagina iniziale"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Domande Frequenti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Comunità"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Aggiungi torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Aggiungi torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Rimuovi torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Rimuovi torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Metti in pausa i torrent selezionati"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Riprendi i torrent selezionati"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Riprendi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Accoda il torrent in alto"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Sposta in sù nella coda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Accoda il torrent in basso"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Accoda il torrent giù"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferenze"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Gestione Connessione"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forzato"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Disabilitato"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Accordo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Entrambi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Mostrare velocità sessione nella barra del titolo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Abilitare l'icona nell'area di notifica"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimizzare nell'area di notifica alla chiusura"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Avviare nell'area di notifica"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Area di notifica protetta da password"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Sposta i download completati in:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copia dei file .torrent in:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Cancella le copie dei file .torrent quando rimuovi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Cancella la copia cel file torrent quando il torrent è rimosso"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Scarica in:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Priorità ai primi e ultimi pezzi del torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Priorità alle parti iniziali e finali dei file nei torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Aggiungi torren in stato di Pausa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Mostra sempre"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Porta in primo piano"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"Il numero massimo di connessioni permesse. Impostare a -1 per illimitate"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Connessioni:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Il numero totale massimo di slot per l'invio. Impostare a -1 per illimitato."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"La velocità massima di scaricamento per tutti i torrent. Impostare a -1 per "
+"illimitata."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocità di Ricezione:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"La velocità massima di invio per tutti i torrent. Impostare a -1 per "
+"illimitata."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocità di Upload:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignora i limiti della rete locale"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Limita l'overhead IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Se abilitato, l'overhead TCP/IP stimato viene scalato di limiti di banda, "
+"per evitare che sommato al traffico superino i limiti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Il numero massimo di slot di invio per torrent. Impostare a -1 per "
+"illimitato."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Il numero massimo di connessioni per torrent. Impostare a -1 per illimitato."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Casuale"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Porta attiva:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Controlla porta attiva"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Da:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "A:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Livello:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Cifratura"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocollo port mapping NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Scambio di nodi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "LSD ha trovato peers locali sulla tua rete"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"La tabella degli hash distribuita può migliorare la quantità di connessioni "
+"attive."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TOS Byte dei peer:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nome host:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Porta:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Dimensione della Cache (blocchi da 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Il numero di secondi dall'ultima scrittura posta in cache su una porzione di "
+"cache di scrittura, a quando è forzatamente pulita dal disco. Lo standard è "
+"60 secondi."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Scadenza Cache (secondi):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Il numero totale di blocchi da 16 KiB scritti sul disco da quando la "
+"sessione è iniziata."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocchi Scritti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Il numero totale di operazioni di scrittura effettuate da quando la sessione "
+"è iniziata."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Scritture:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Il rapporto (blocks_written - writes) / blocks_written rappresenta il numero "
+"delle operazioni salvate per le operazioni totali di scrittura, es. un "
+"genere di cache dell'hit di rapporti per la cache di scrittura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Scrivi la Cache del Rapporto:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Il numero dei blocchi che sono stati richiesti dal motore BitTorrent (dai "
+"peers), che sono stati serviti dal disco o dalla cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocchi letti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Il numero dei blocchi che sono stati serviti dalla cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Numero di blocchi letti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "La cache del rapporto per la cache di lettura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Leggi la Cache del Rapporto"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Il numero totale di operazioni di scrittura effettuate da quando la sessione "
+"è iniziata."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Letture:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Il numero di blocchi da 16 KiB attualmente nella cache del disco. Include "
+"sia la cache di lettura che quella di scrittura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Dimensione Cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Dimensione della Cache di lettura:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Aiutaci a migliorare Deluge inviandoci la tua versione di Python, PyGTK, "
+"l'OS e il tipo di processore. Non saranno assolutamente inviate altre "
+"informazioni."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Sì, invia le statistiche anonime"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Luogo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Se Deluge non riesce a trovare il file del database in questa posizione "
+"ricorrerà ai DNS per scoprire la nazione del peer."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Porta del Demone:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Porta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Abilita connessioni remote"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Connessioni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Controlla periodicamente il sito per nuove versioni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versione:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autore:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Pagina principale:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Email dell'autore:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informazioni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Aggiungi peer"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "nomehost:porta"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Generale</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Annulla"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Aggiungi"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Rimuovi"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Aggiungere Info hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Tracker"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Aggiungi host"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destinazione:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nuova versione"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Vai Al Sito Web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Non mostrare questa finestra in futuro"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nome:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Commenti:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Muovi completi:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Ferma seed al rapporto:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Rimuovi al rapporto"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Modifica tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "In cima"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "In fondo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Aggiungi Torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Aggiungi In Stato di _Pausa"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Priorità ai Primi/Ultimi Pezzi"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Applica a tutti"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Ripristina Impostazioni Predefinite"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Mostra Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Limite velocità di _scaricamento"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Limite velocità di _invio"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Chiudi & Spegni Demone"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Modifica i trackers"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Aggiungi Peer"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Aggiungi peer dal suo IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Modifica Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Inserire un percorso remoto"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Percorso:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Crea torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Car_tella"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Percorso Remoto"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "File"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseeds"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Dimensione parti:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Imposta flag privato"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Aggiungi questo torrent alla sessione"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opzioni"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Salva .torrent come..."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pausa"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Ripren_di"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Riprendi i torrent selezionati."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Op_zioni"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "A_ccoda"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Aggiorna tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Rimuovi torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Forza Ri-controllo"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etichetta"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Seleziona tutto"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Metti Tutti in _Pausa"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Ripre_ndi Tutti"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Limite Connessione"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limite slot di invio"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Gestito Automaticamente"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Aggiungi Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Aggiungi URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Espandi tutto"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Client BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Client BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Scarica e condivide i file via BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Comando"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Parola d'ordine"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Da"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "A"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Usa porte casuali"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "In entrata"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "In uscita"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Connessioni massime"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Numero Massimo di slot in Upload"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Numero Massimo di Connessioni Semi-Aperte"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Massimi tentativi di connessione per secondo"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Limita anche l'Overead TCP/IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Rapporto condivisione"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tipo"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Applica"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Elenco IP Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer in formato testo (compresso)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian in formato testo (non compresso)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blocklist"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Leader non valido"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Magic code non valido"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versione non valida"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Giorni"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Controlla per una nuova lista ogni:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importa la lista nera all'avvio"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Impostazioni</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Se necessario scarica a lista nera e importa il file"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Controlla il Download e Importa"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Scarica una nuova lista nera e importala"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forza Download e Importa"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "La blocklist è aggiornata"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opzioni</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipo:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Dimensione File:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informazioni</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent completato"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent Aggiunto"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Esegui"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Evento"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Aggiungi Comando</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Comandi</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "La cartella da controllare non esiste"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Il percorso non esiste."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Controlla le proprietà della cartella"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Scegli una cartella"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Abilita questo controllore della cartella"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Conntrolla Cartella</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Cancella .torrent dopo aggiunta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Allega l'estensione dopo l'aggiunta:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".aggiunto"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Azione del file torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Spostamento Completato</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etichetta: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etichetta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Principale"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Velocità Massima di Upload:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Connessioni Massime:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Slots Massimi di Upload:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Massima Velocità di Download:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Banda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Gestito Automaticamente:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Aggiungi in Pausa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Accoda a:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Coda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Controlla Cartelle</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "secondi"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"L'interfaccia web di Deluge non è installata, per favore installa\n"
+"l'interfaccia e riprova"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Abilita l'interfaccia web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Abilita SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Porta di ascolto:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etichetta non valida, i caratteri validi sono: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etichetta Vuota"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Etichetta già esistente"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etichetta Sconosciuta"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent Sconosciuto"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opzioni Etichetta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Rimuovi etichetta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Aggiungi etichetta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opzioni Etichette"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etichetta"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opzioni etichetta</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Applica le impostazioni di massima al torrent"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Massimo"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Applica le impostazioni di coda:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "1 linea per tracker"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Applica automaticamente l'etichetta:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Aggiungi etichetta"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Aggiungi etichetta</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Usa la barra laterale per aggiungere, modificare e rimuovere le "
+"etichette. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etichette</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Visualizza notifiche lampeggiangi"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Notifiche a popup non abilitate"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Notifiche a popup mostrate"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Notifiche sonore non attivate"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame non è installato"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Il suono di notifica non funziona %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Il suono di notifica ha funzionato correttamente"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent Completati"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Scegli il File Sonoro"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "C'è stato un erroe nell'invio dell'email di notificha: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Email di notifica inviata."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Completato Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Quest'email è per informarti che Deluge ha finito di scaricare \"%(name)s\", "
+"che include i file %(num_files)i.\n"
+"Per bloccare il ricevimento di questi messaggi, disattiva la notifica delle "
+"email nelle preferenze di deluge.\n"
+"\n"
+"Grazie.\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Icona dell'area di notifica lampeggiante abilitata"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Popup abilitati"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sonoro abilitato"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Notifiche dell'UI</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Destinatari</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Il server richiede TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Notifiche Email</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Questa configurazione non significa che ora tu non riceverai notifiche per "
+"tutti questi eventi"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Sottoscrizioni"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Personalizzazione dell'audio"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Estrai in:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Crea sotto-cartella con il nome del file torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Selezionando questa opzione verrà creata una sotto-cartella usando il nome "
+"dei file torrent senza estrarre la cartella selezionata e inserendo il nome "
+"esatto dei file."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limite di Download:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limite di Upload:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrent attivi:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Download Attivi:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Seed Attivi:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Impostazioni pesanti</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Logout"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Salva"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Ospite:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Sposta"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Login"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Imposta numero massimo di connessioni"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Velocità di scaricamento"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Imposta velocità massima di download"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Velocità di invio"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Imposta velocità massima di upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocollo traffico Download/Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Connetti"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtri"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Limite velocità D/L"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Limite velocità U/L"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Limite connessione"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limite slot d'invio"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Aggiorna tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Forza ricontrollo"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Dettagli"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Generale"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privato"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Vero"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Segnalare i nuovi rilasci"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Connessioni massime:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Velocità di scaricamento massima (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Velocità di invio massima (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Numero massimo di connessioni semi-aperte:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Numero massimo di tentativi di connessione al secondo."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Numero massimo di slot di invio:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Aggiorna"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "File"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Aggiungi in Pausa"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Download"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/iu.po b/deluge/i18n/iu.po
new file mode 100644
index 0000000..e331044
--- /dev/null
+++ b/deluge/i18n/iu.po
@@ -0,0 +1,6164 @@
+# Inuktitut translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Inuktitut <iu@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ja.po b/deluge/i18n/ja.po
new file mode 100644
index 0000000..576dd21
--- /dev/null
+++ b/deluge/i18n/ja.po
@@ -0,0 +1,6171 @@
+# Japanese translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Japanese <ja@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "kiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "全て"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "チェック中"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "ダウンロード中"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "シーディング"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "休止中"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "キュー済み"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "エラー"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "名前"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "進捗"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "状態"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "サイズ"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "ダウンロード済み"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "アップロード済み"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "共有比"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "下り速度"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "上り速度"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "ピア"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "可用性"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "追加"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "トラッカー"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "残り時間"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "最初と最後を優先"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "自動管理"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "ピース"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "警戒"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "アナウンス OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "アナウンス済み"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "インターフェイス"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "ダウンロード"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "帯域幅"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "キュー"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "ネットワーク"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "プロキシ"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "キャッシュ"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "その他"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "デーモン"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "プラグイン"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "アフガニスタン"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "オーランド諸島"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "アルバニア"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "アルジェリア"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "アメリカ領サモア"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "アンドラ"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "アンゴラ"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "アングィラ島"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "南極"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "アンティグア・バーブーダ"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "アルゼンチン"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "アルメニア"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "アルバ島"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "オーストラリア"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "オーストリア"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "アゼルバイジャン"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "バハマ"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "バーレーン"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "バングラディシュ"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "バルバドス"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "ベラルーシ"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "ベルギー"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "ベリーズ"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "ベナン"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "バミューダ諸島"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "ブータン"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "ボリビア"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "ボスニア・ヘルツェゴビナ"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "ボツワナ"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "ブーヴェ島"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "ブラジル"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "イギリス領インド洋地域"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "ブルネイ・ダルサラーム"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "ブルガリア"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "ブルキナファソ"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "ブルンジ"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "カンボジア"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "カメルーン"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "カナダ"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "カーボベルデ"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "ケイマン諸島"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "中央アフリカ"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "チャド"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "チリ"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "中国"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "クリスマス島"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "ココス (キーリング) 諸島"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "コロンビア"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "コモロ"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "コンゴ共和国"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "コンゴ民主共和国"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "クック諸島"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "コスタリカ"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "コートジボアール"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "クロアチア"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "キューバ"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "キプロス"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "チェコ"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "デンマーク"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "ジブチ"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "ドミニカ国"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "ドミニカ共和国"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "エクアドル"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "エジプト"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "エルサルバドル"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "赤道ギニア"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "エリトリア"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "エストニア"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "エチオピア"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "フォークランド (マルビナス) 諸島"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "フェロー諸島"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "フィジー"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "フィンランド"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "フランス"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "フランス領ギアナ"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "フランス領ポリネシア"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "フランス領南方・南極地域"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "ガボン"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "ガンビア"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "グルジア"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "ドイツ"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "ガーナ"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "ジブラルタル"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "ギリシャ"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "グリーンランド"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "グレナダ"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "グアドループ"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "グァム"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "グアテマラ"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "ガーンジー"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "ギニア"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "ギニアビサウ"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "ガイアナ"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "ハイチ"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "ハード島およびマクドナルド諸島"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "バチカン"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "ホンジュラス"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "香港"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "ハンガリー"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "アイスランド"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "インド"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "インドネシア"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "イラン"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "イラク"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "アイルランド"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "マン島"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "イスラエル"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "イタリア"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "ジャマイカ"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "日本"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "ジャージー"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "ヨルダン"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "カザフスタン"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "ケニア"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "キリバス"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "北朝鮮"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "韓国"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "クウェート"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "キルギスタン"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "ラオス"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "ラトビア"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "レバノン"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "レソト"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "リベリア"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "リビア"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "リヒテンシュタイン"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "リトアニア"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "ルクセンブルク"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "マカオ"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "マケドニア"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "マダガスカル"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "マラウィ"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "マレーシア"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "モルジブ"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "マリ"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "マルタ"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "マーシャル諸島"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "マルティニーク"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "モーリタニア"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "モーリシャス"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "マヨット"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "メキシコ"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "ミクロネシア"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "モルドバ"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "モナコ"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "モンゴル"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "モンテネグロ"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "モントセラト"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "モロッコ"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "モザンビーク"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "ミャンマー"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "ナミビア"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "ナウル"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "ネパール"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "オランダ"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "オランダ領アンティル"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "ニューカレドニア"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "ニュージーランド"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "ニカラグア"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "ニジェール"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "ナイジェリア"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "ニウエ"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "ノーフォーク島"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "北マリアナ諸島"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "ノルウェー"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "オマーン"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "パキスタン"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "パラウ"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "パレスチナ"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "パナマ"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "パプアニューギニア"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "パラグアイ"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "ペルー"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "フィリピン"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "ピトケアン諸島"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "ポーランド"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "ポルトガル"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "プエルトリコ"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "カタール"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "レユニオン"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "ルーマニア"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "ロシア"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "ルワンダ"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "サン・バルテルミー島"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "セントヘレナ"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "セントクリストファー・ネイビス"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "セントルシア"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "セント・マーチン"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "サンピエールおよびミクロン島"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "セントビンセント・グレナディーン"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "サモア"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "サンマリノ"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "サントメ・プリンシペ"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "サウジアラビア"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "セネガル"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "セルビア"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "セイシェル"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "シエラレオネ"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "シンガポール"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "スロバキア"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "スロベニア"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "ソロモン諸島"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "ソマリア"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "南アフリカ"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "サウスジョージア・サウスサンドウィッチ諸島"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "スペイン"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "スリランカ"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "スーダン"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "スリナム"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "スヴァールバル諸島およびヤンマイエン島"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "スワジランド"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "スウェーデン"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "スイス"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "シリア"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "タジキスタン"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "タンザニア"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "タイ"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "東ティモール"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "トーゴ"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "トケラウ"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "トンガ"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "トリニダード・トバゴ"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "チュニジア"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "トルコ"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "トルクメニスタン"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "タークス・カイコス諸島"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "ツバル"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "ウガンダ"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "ウクライナ"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "アラブ首長国連邦"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "イギリス"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "アメリカ合衆国"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "アメリカ合衆国外諸島"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "ウルグアイ"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "ウズベキスタン"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "バヌアツ"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "ベネズエラ"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "ベトナム"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "イギリス領バージン諸島"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "アメリカ領バージン諸島"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "ワリー・エ・フトゥーナ諸島"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "西サハラ"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "イエメン"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "ザンビア"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "ジンバブエ"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "デーモンが起動していません"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "ファイル名"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "列"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "ファイルを選択してください"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "フォルダを選択してください"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "トレントファイルの保存"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "トレントファイル"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "全てのファイル"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "クライアント:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "現在の開発者:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "かつての開発者や貢献者:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "サーバ:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "トレント"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "無効なファイル"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "トレントファイルの選択"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "無効な URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "正しい URK ではありません。"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "ダウンロード中..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "ダウンロード失敗"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "ダウンロードに失敗しました:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "詳細:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "ユーザ名:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "パスワード:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "その他..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "接続していません"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT ノード"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "いいえ"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "優先度"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "状態(_S)"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "詳細(_D)"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "ファイル(_L)"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "ピア(_P)"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "オプション(_O)"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "接続されていません..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "無制限"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "下"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "上"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "オフライン"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "オンライン"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "接続中"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "ホスト"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "バージョン"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "デーモンを起動(_S)"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "デーモンを停止(_S)"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "デーモンを起動できません!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "ホストの追加エラー"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Username"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "レベル"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "有効"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "プラグイン"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "プラグインの選択"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "トラッカー"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "なし"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "管理"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "ラベル"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "ラベルなし"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>クライアントバージョン</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " トレントキュー済み"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " トレントキュー済み"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "無制限"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "オン"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "オフ"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "無効"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "アドレス"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "クライアント"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "トレントを作成しています"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "キュー済みトレント"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "削除(_R)"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "接続しているトレントを自動的に追加"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "ファイル(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "トレントの追加(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "トレントの作成(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "終了(_Q)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "編集(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "接続マネージャ(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "トレント(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "表示(_V)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "ツールバー(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "サイドバー(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "ステータスバー(_B)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "タブ(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "カラム(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "サイドバー(_I)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "ヒットしないものも表示(_Z)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "トラッカーを表示(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "ヘルプ(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "ホームページ(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "FAQ(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "よくある質問と回答(FAQ)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "コミュニティー(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "トレントを追加します"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "トレントの追加"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "トレントを削除"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "トレントの削除"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "選択したトレントを休止します"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "休止"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "選択したトレントを再開します"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "再開"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "トレントのキューを上げます"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "キューを上げる"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "トレントのキューを下げます"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "キューを下げる"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "設定"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "接続マネージャ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "強制"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "無効"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "ハンドシェイク"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "どちらか"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "セッション速度をタイトルバーに表示する"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "システムトレイにアイコンを表示する"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "閉じたらトレイに最小化する"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "最小化で開始する"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "システムトレイ保護パスワード"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "完了後に移動する:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "トレントファイルをコピー:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "ダウンロード場所:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "トレントの最初と最後のピースを優先する"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "トレント内のファイルの最初と最後のピースを優先します"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "トレントを休止状態で追加する"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "常に表示する"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "ダイアログにフォーカスを合わせる"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "最大許容接続数 (-1は無制限)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "接続数:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "全トレントの最大アップロードスロット数 (-1は無制限)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "全トレントの最大ダウンロード速度 (-1は無制限)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "ダウンロード速度:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "全トレントの最大アップロード速度 (-1は無制限)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "アップロード速度:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "ローカルネットワークでは制限しない"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "IP オーバーヘッドをレート制限に含めない"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"チェックマークをつけると、全体のトラフィック量によって制限を超えてしまわないように、測定された TCP/IP オーバーヘッドをレート制限に含みません。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "各トレントの最大アップロードスロット数 (-1は無制限)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "各トレントの最大接続数 (-1は無制限)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "ランダム"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "使用ポート"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "使用ポートをテスト"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "From:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "To:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "レベル:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "暗号化"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play を使用します"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT ポートマッピングプロトコルを使用します"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "ピア交換"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery はローカルネットワーク上のピアを検出します。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "DHT はアクティブな接続数の改善が見込めるかもしれません。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "ピア TOS バイト:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "ホスト名:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "ポート:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "キャッシュサイズ (16 KiB ブロック):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr "最後にキャッシュされた書き込みからキャッシュをフラッシュするまでの秒数です。デフォルトは 60 秒です。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "キャッシュ期限 (秒):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "セッティング"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "セッションが開始されてからディスクに書き込まれたブロック (16KiB) の総数です。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "書き込みブロック:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "このセッションが開始されてから実行された総書き込み回数です。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "書き込み:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"(書き込みブロック - 書き込み) ÷ 書き込みブロック "
+"で表される総書き込み数内での保存された書き込み数の比率、簡単にいうと書き込みキャシュのキャッシュヒット率の一つです。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "書き込みキャッシュヒット率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr "Bittorrent エンジン (ピア) から要求され、ディスクまたはキャッシュから供給されたブロック数です。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "読み込みブロック:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "キャッシュから供給されたブロック数です。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "読み込みヒットブロック:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "読み込みキャッシュのキャッシュヒット率です。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "読み込みキャッシュヒット率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "セッションが開始されてから実行された総読み込み回数です。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "読み込み:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr "ディスクキャッシュにある現在の書き込みおよび読み込みキャッシュブロック (16KiB) 数です。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "キャッシュサイズ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "読み込みキャッシュサイズ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Deluge の改良を助けるために、使用している Python と PyGTK のバージョン、OS "
+"とプロセッサーのタイプを送ります。他の情報は絶対に送りません。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "はい、匿名の統計を送ります"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "場所:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr "Deluge がこの場所にデータベースファイルを見つけられなかった場合は、ピアの国籍解決のために DNS を使用します。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "デーモンポート:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "リモート接続を許可する"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "接続数"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "定期的に新しいリリースをチェックする"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "バージョン:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "作者:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "ホームページ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "作者のEメール:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "情報"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "ピアの追加"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "ホスト名:ポート"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>全般</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "追加"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "削除"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "ハッシュ情報の追加"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "ハッシュ情報:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "トラッカー:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "ホストの追加"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "移動先:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "最新版"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "ウェブサイトへ(_G)"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "このダイアログを今後表示しない"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "名前:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "コメント:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "完了後移動:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "シード停止比:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "この比率で削除する"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "トラッカーの編集(_E)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "上端"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "下端"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "トレントの追加"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "URL(_U)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "ハッシュ情報(_H)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "休止状態で追加する(_P)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "最初/最後のピースを優先する"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "全てに適用"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "デフォルトに戻す"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Delugeの表示(_S)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "ダウンロード速度制限(_D)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "アップロード速度制限(_U)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "デーモンをシャットダウンして終了"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "トラッカーの編集"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "ピアを IP アドレスで追加します"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "トラッカーの編集"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "トラッカー:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "リモートパスを入力してください"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "パス:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "トレントの作成"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "フォルダ(_D)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "リモートパス(_R)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "ファイル"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Web シード"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "ピースサイズ:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "プライベートフラグを設定する"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "このトレントをこのセッションに追加する"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "オプション"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "トレントファイルを名前をつけて保存"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "再開(_M)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "選択したトレントを再開します。"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "オプション(_I)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "キュー(_Q)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "トラッカーの更新(_U)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "トレントの削除(_R)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "強制再チェック(_F)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "ラベル"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "全て選択(_S)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "全て休止(_P)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "全て再開(_M)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "接続数制限(_C)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "アップロードスロット数制限(_S)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "自動管理(_A)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "トラッカーの追加"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URLの追加"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "全て展開(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent クライアント"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "コマンド"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Password"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "From"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "To"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "ランダムポートを使用する"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "インバウンド"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "アウトバウンド"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "最大接続数"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "最大アップロードスロット数"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "最大半開接続数"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "最大接続数 (毎秒)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "IP オーバーヘッドをレート制限に含めない"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "共有比"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "タイプ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "適用"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP list (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (非圧縮)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "ブロックリスト"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "無効なリーダー"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "無効なマジックコード"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "無効なバージョン"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "日"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "新しいリストのチェック間隔:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "起動時にブロックリストをインポートする"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>設定</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "必要ならブロックリストファイルをダウンロードし、ファイルをインポートします"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "ダウンロードのチェックとインポート"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "新しいブロックリストファイルをダウンロードおよびインポートします"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "強制ダウンロードとインポート"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "ブロックリストは最新です"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>オプション</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "タイプ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "日付:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "ファイルサイズ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>情報</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "トレント完了時"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "トレント追加時"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "コマンド実行"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "イベント"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>コマンドの追加</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>コマンド</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "パスが存在しません。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "フォルダの選択"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "ラベル: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>ラベル</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "最大アップロード速度:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "最大接続数:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "最大アップロードスロット:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "最大ダウンロード速度:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>帯域幅</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>キュー</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "秒"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge web インターフェイスがインストールされていません。\\n\n"
+"インターフェイスをインストールしてから再度お試しください"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Web インターフェイスを有効にする"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL を有効にする"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "待ち受けポート:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "不正なラベルです。使用できる文字:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "空のラベルです"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "ラベルはすでに存在します"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "未知のラベルです"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "未知のトレントです"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "ラベルオプション(_O)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "ラベルの削除(_R)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "ラベルの追加(_A)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "ラベルオプション"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "ラベル"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>ラベルオプション</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "各トレントに最大設定を適用する:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "最大"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "キュー設定を適用する:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 行に 1 トラッカー)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "ラベルに自動適用する:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "ラベルの追加"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>ラベルの追加</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>ラベルの追加、編集、および削除はサイドバーで行います。</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>ラベル</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "ポップアップ通知が有効ではありません"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "サウンド通知が有効ではありません"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame がインストールされていません"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "サウンド通知に成功しました"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "サウンドファイルを選択"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "通知メールの送信中にエラーが発生しました: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "通知メールを送信しました。"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent \"%(name)s\" が完了しました"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "ポップアップを有効化"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "サウンドを有効化"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI 通知</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>メール通知</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "購読"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "展開先:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "トレント名のサブフォルダを作成する"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr "このオプションは選択された展開先フォルダ内にトレント名のサブフォルダを作成し、展開したファイルをそこに格納します。"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "ダウンロード制限:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "アップロード制限:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "アクティブトレント数:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>制限設定</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "ログアウト"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "保存"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "ホスト:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "移動"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "ログイン"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "最大接続数の設定"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "下り速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "最大ダウンロード速度の設定"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "上り速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "最大アップロード速度の設定"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "ダウンロード/アップロードプロトコルのトラフィック"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "接続"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "フィルタ"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "DL 速度制限"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "UL 速度制限"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "接続制限"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "アップロードスロット数制限"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "トラッカーの更新"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "強制再チェック"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "詳細"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "一般"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "プライベート"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "True"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "最新版があれば警告する"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "最大接続数:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "最大ダウンロード速度 (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "最大アップロード速度 (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "最大半開接続数:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "最大接続試行回数 (毎秒)"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "最大アップロードスロット数:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "更新"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "ファイル"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "休止状態を追加"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "ダウンロード"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ka.po b/deluge/i18n/ka.po
new file mode 100644
index 0000000..f3fd634
--- /dev/null
+++ b/deluge/i18n/ka.po
@@ -0,0 +1,6229 @@
+# Georgian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Georgian <ka@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "კბ"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "მბ"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "გბ"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "კ"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "მ"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "გ"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "კბ/წმ"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "მბ/წმ"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "გბ/წმ"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "ყველა"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "აქტიური"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "მოწმდება"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "იტვირთება"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "სიდირდება"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "შეჩერებული"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "რიგშია"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "შეცდომა"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "სახელი"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "პროგრესი"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "ზომა"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "ჩამოტვირთული"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "ატვირთული"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "შეფარდება"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "ჩამოტვირთვის სიჩქარე"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "ატვირთვის სიჩქარე"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "ჩამოტვირთვის ლიმიტი"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "ატვირთვის ლიმიტი"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "პირები"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "გამოსადეგი"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "დაემატა"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "ტრეკერი"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "დარჩენილი დრო"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "პირველი/ბოლო ნაწილის პრიორიტირება"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "ავტო მართული"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "ნაჭრები"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "გაფრთხილება"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "ანონსი კარგია"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "განცხადება გაიგზავნა"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "ინტერფეისი"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "ჩამოტვირთვები"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "გამტარუნარიანობა"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "რიგი"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "ქსელი"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "პროქსი"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "კეში"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "სხვა"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "დაემონი"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "მოდულები"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "ავღანეთი"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "ალანდის კუნძულები"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "ალბანეთი"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "ალჟირი"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "ამერიკული სამოა"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "ანდორა"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "ანგოლა"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "ანგილა"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "ანტარქტიდა"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "ანტიგუა და ბარბუდა"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "არგენტინა"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "სომხეთი"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "არუბა"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "ავსტრალია"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "ავსტრია"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "აზერბაიჯანი"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "ბაჰამის კუნძულები"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "ბაჰრეინი"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "ბანგლადეში"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "ბარბადოსი"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "ბელარუსია"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "ბელგია"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "ბელიზი"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "ბენინი"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "ბერმუდი"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "ბუტანი"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "ბოლივია"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "ბოსნია და ჰერცოგოვინა"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "ბოცვანა"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "ბუვეს კუნძული"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "ბრაზილია"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "ბრიტანეთის ინდოეთის ოკეანის ტერიტორია"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "ბრუნეი დარესალამი"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "ბულგარეთი"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "ბურკინა ფასო"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "ბურუნდი"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "კამბოჯა"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "კამერუნი"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "კანადა"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "კაპე ვერდე"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "კაიმანის კუნძულები"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "ცენტრალური აფრიკის რესპუბლიკა"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "ჩადი"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "ჩილე"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "ჩინეთი"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "აღდგომის კუნძულები"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "ქოქოსის (ქილინგ) კუნძულები"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "კოლუმბია"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "კომოროსი"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "კონგო"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "კონგო, დემოკრატიული რესპუბლიკა"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "კუკის კუნძულები"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "კოსტა რიკა"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "კოტ დიუარი"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "ხორვატია"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "კუბა"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "კვიპროსი"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "ჩეხეთის რესპუბლიკა"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "დანია"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "ჯიბუტი"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "დომინიკა"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "კომინიკის რესპუბლიკა"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "ეკვადორი"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "ეგვიპტე"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "ელ სალვადორი"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "ეკვატორული გვინეა"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "ერითრეა"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "ესტონეთი"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "ეთიოპია"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "ფოლკლენდის კუნძულები (მალვინის)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "ფარერის კუნძულები"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "ფიჯი"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "ფინეთი"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "საფრანგეთი"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "ფრანგული გვინეა"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "საფრანგეთის პოლინეზია"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "საფრანგეთის სამხრეთი ტერიტორიები"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "გაბონი"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "გამბია"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "საქართველო"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "გერმანია"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "განა"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "გიბრალტარი"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "საბერძნეთი"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "გრენლანდია"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "გრენადა"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "გვადალუპე"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "გუამი"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "გვატემალა"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "გუერნსი"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "გვინეა"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "გვინეა-ბისაუ"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "გვიანა"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "ჰაიტი"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "ჰერდის კუნძული და მაკდონალდის კუნძულები"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "წმინდა საყდარი (ვატიკანის ქალაქი-სახელმწიფო)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "ჰონდურასი"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "ჰონგკონგი"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "უნგრეთი"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "ისლანდია"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "ინდოეთი"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "ინდონეზია"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "ირანის ისლამური რესპუბლიკა"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "ერაყი"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "ირლანდია"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "მანის კუნძული"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "ისრაელი"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "იტალია"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "იამაიკა"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "იაპონია"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "ჯერსი"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "იორდანია"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "ყაზახეთი"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "კენია"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "კირიბატი"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "კორეის სახალხო დემოკრატიული რესპუბლიკა"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "კორეის რესპუბლიკა"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "ქუვეითი"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "ყირგიზეთი"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "ლაოს სახალხო დემოკრატიული რესპუბლიკა"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "ლატვია"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "ლიბანი"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "ლესოტო"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "ლიბერია"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "ლიბიის არაბული ჯამაჰირია"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "ლიხტენშტეინი"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "ლიტვა"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "ლუქსემბურგი"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "მაკაო"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "მაკედონია, ყოფილი იუგოსლავიური რესპუბლიკა"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "მადაგასკარი"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "მალავი"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "მალაიზია"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "მალდივები"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "მალი"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "მალტა"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "მარშალის კუნძულები"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "მარტინიკე"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "მავრიტანია"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "მაურიციუსი"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "მაიოტი"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "მექსიკა"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "მიკრონეზია, ფედერაციული შტატები"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "მოლდოვა"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "მონაკო"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "მონღოლეთი"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "მონტენეგრო"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "მონსერა"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "მაროკო"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "მოზამბიკი"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "მიანმარი"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "ნამიბია"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "ნაურუ"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "ნეპალი"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "ჰოლანდია"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "ნიდერლანდის ანტილები"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "ახალი კალედონია"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "ახალი ზელანდია"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "ნიკარაგუა"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "ნიგერი"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "ნიგერია"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "ნიუე"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "ნორფოლკის კუნძული"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "ჩრდილო მარიანას კუნძულები"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "ნორვეგია"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "ომანი"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "პაკისტანი"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "პალაუ"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "პალესტინის ტერიტორია, ოკუპირებული"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "პანამა"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "პაპუა ახალი გვინეა"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "პარაგვაი"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "პერუ"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "ფილიპინები"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "პიტიკაირნი"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "პოლონეთი"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "პორტუგალია"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "პუერტო რიკო"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "კატარი"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "რეუნიონ"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "რუმინეთი"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "რუსეთის ფედერაცია"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "რუანდა"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "წმინდა ბართელმი"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "წმინდა ელენე"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "წმინდა კიტსი და ნევისი"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "წმინდა ლუსია"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "წმინდა მარტინი"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "წმინდა პიერი და მიქელონი"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "წმინდა ვინცენტი და გრენადირები"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "სამოა"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "სან მარინო"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "საო ტომე და პრინციპე"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "საუდის არაბეთი"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "სენეგალი"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "სერბია"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "სეიშელები"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "სიერა ლეონე"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "სინგაპური"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "სლოვაკეთი"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "სლოვენია"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "სოლომინის კუნძულები"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "სომალი"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "სამხრეთი აფრიკა"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "სამხრეთი ჯორჯია და სამხრეთი სენდვიჩის კუნძულები"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "ესპანეთი"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "შრი ლანკა"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "სუდანი"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "სურინამი"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "შპიცბერგენი და იან-მაიენი"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "სვაზილენდი"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "შვეცია"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "შვეიცარია"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "სირიის არაბული რესპუბლიკა"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "ტაჯიკეთი"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "ტანზანია, გაერთიანებული რესპუბლიკა"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "ტაილანდი"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "ტიმორ-ლესტე"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "ტოგო"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "ტოკელაუ"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "ტონგა"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "ტრინიდადი და ტობაგო"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "ტუნისი"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "თურქეთი"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "თურქმენეთი"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "თარქსის და ქაქოსის კუნძულები"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "ტუვალუ"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "უგანდა"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "უკრაინა"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "არაბეთის გაერთიანებული ემირატები"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "გაერთიანებული სამეფო"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "შეერთებული შტატები"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "აშშ-ს კუთვნილი მცირე გარე კუნძულები"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "ურუგვაი"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "უზბეკეთი"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "ვანაუტუ"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "ვენესუელა"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "ვიეტნამი"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "ქალწულის კუნძულები, ბრიტანეთი"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "ქალწულის კუნძულები, ა.შ.შ"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "ვალისი და ფუტუნა"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "დასავლეთ სახარა"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "იემენი"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "ზამბია"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "ზიმბაბვე"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "დაემონი არ არის გაშვებული"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "ფაილის სახელი"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "სართული"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "ფაილის არჩევა"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "საქაღალდის არჩევა"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ".torrent ფაილის შენახვა"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "ტორენტ ფაილები"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "ყველა ფაილი"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "დელუჯი"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"პირიდან-პირამდე ფაილების გასაზიარებელი პროგრამა\n"
+"რომელიც იყენებს BitTorrent პროტოკოლს."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "კლიენტი:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "ახლანდელი დეველოპერები:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "ძველი დეველოპერები ან მონაწილეები:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"ეს პროგრამა არის თავისუფალი პროგრამული უზრუნველოყფა; თქვენ შეგიძლიათ იგი "
+"გაავრცელოთ ან/და შეცვალოთ Free Software Foundation-ის მიერ გამოქვეყნაბული "
+"GNU General Public License ლიცენზიით; ან მესამე ვერსიით, ან უფრო ახალი "
+"ვერსიით (თქვენი არჩევანის მიხედვით)\n"
+"\n"
+"ეს პროგრამა ვრცელდება იმ იმედით რომ ის ვინმეს გამოადგება, მაგრამ მას არ "
+"მოყვება არანაირი გარანტია; მეტი დეტალებისთვის იხილეთ GNU General Public "
+"License ლიცენზია. \n"
+"\n"
+"თქვენ ამ პროგრამასთან ერთად უნდა მიგეღოთ GNU General Public License-იის "
+"ასლი; თუ არ მიგიღიათ იხილეთ <http://www.gnu.org/licenses>. \n"
+"\n"
+"ამასთან ერთად, სპეციალური გამონაკლსის სახით, საავტორო უფლებების მფლობელები "
+"იძლევიან ამ პროგრამის კოდის ბმულისe copგyright holders give permission to "
+"link the code of portions of this program with the OpenSSL library. You must "
+"obey the GNU General Public License in all respects for all of the code used "
+"other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "სერვერი:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "ტორენტი"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "არასწორი ფაილი"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ".torrent ფაილის არჩევა"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "არასწორი ბმული"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "არ არის სწორი ბმული"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "ჩამოტვირთვა..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "ჩამოტვირთვა ჩაიშალა"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "ჩამოტვირთვა ჩაიშალა:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "დეტალები:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "მომხმარებლის სახელი:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "პაროლი:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "სხვა..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "დაკავშირებული არ არის"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT კვანძები"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "თავისუფალი ადგილი დისკზე"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "პრიორიტეტი"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_სტატუსი"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_დეტალები"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "ფაი_ლები"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_პირები"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_პარამეტრები"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "არ არის დაკავშირებული..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "ლიმიტის გარეშე"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "დაბლა"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "ზევით"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "კავშირგარეშე"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "ხაზზე"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "დაკავშირებული"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "სტატუსი"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "ჰოსტი"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "ვერსია"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "დაემონის _დაწყება"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "დაემონის _გაჩერება"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "დაემონის დაწყება ვერ მოხერხდა!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "ჰოსტის დამატებისას დაფიქსირდა შეცდომა"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "მომხმარებელი"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "ჩართულია"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "მოდული"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "აირჩიეთ მოდული"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "მოდულის Egg-ები"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "მდგომარეობა"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "ტრეკერები"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "არცერთი"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "იარლიყები"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "უიარლიყო"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>კლიენტის ვერსია</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " ტორენტები რიგშია"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " ტორენტები რიგშია"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "ულიმიტოს დაყენება"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "ჩართული"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "გამორთული"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "გამორთვა"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "მისამართი"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "კლიენტი"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "ტორენტის შექმნა"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "რიგში მდგომი ტორენტები"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_წაშლა"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "ტორენტების ავტომატურად დამატება შექმნისას"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_ფაილი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "ტორენტის _დამატება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "ტორენტის _შექმნა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "გამოსვლა & დაემონის _გათიშვა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "გასვლა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "რ_ედაქტირება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_კავშირის მმართველი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_ტორენტი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_ხედი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "ხელსაწყოთა _პანელი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_გვერდითა ზოლი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "სტატუსის _ზოლი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "ჩ_ანართები"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_სვეტები"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "გვერდ_ითა ზოლი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "_Zero მოხვედრებების ჩვენება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "_ტრეკერების ჩვენება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_დახმარება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_ვებ-საიტი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_ხ.დ.კ."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "ხშირად დასმული კითხვები"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_საზოგადოება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "ტორენტის დამატება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "ტორენტის დამატება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "ტორენტის წაშლა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "ტორენტის წაშლა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "არჩეული ტორენტების დაპაუზება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "პაუზა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "ყველა არჩეული ტორენტის გაგრძელება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "გაგრძელება"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "ტორენტის რიგში მაღლა ატანა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "რიგში მაღლა ატანა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "ტორენტის რიგში დაბლა ჩამოტანა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "რიგში დაბლა ჩამოტანა"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "პარამეტრები"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "კავშირის მმართველი"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "გამორთული"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "სესიის სიჩქარის ჩვენება სათაურის ზოლში"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "სისტემური არის ხატულა"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "დახურვისას სისტემურ არეში მინიმიზაცია"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "გაშვება სისტემურ არეში"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "სისტემური არის პაროლით დაცვა"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "დასრულებულის გადატანა:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ".torrent ფაილების კოპირება:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "ტორენტ ფაილის წაშლა მონაცემების წაშლისას"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "ტორენტ ფაილის ასლის წაშლა მონაცემების წაშლისას"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "ჩამოტვირთვის საქაღალდე:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "პრიორიტეტის მინიჭება ტორენტის პირველი და ბოლო ნაწილისთვის"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "ტორენტის პირველი და ბოლო ნაწილების პრიორიტირება"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "ტორენტების დამატება დაპაუზებულ მდგომარეობაში"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "ყოველთვის ჩვენება"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "დიალოგის ფოკუსირება"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "კავშირების მაქსიმალური რაოდენობა. დააყენეთ -1 ლიმიტის მოსახსნელად."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "კავშირები:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"ატვირთვის სლოტების მაქსიმალური რაოდენობა. დააყენეთ –1 ლიმიტის მოსახსნელად."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"ყველა ტორენტის ჩამოტვირთვის მაქსიმალური სიჩქარე. დააყენე თ -1 ლიმიტის "
+"მოსახსნელად."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "ჩამოტვირთვის სიჩქარე:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"მაქსიმალური ატვირთვის სიჩქარე ყველა ტორენტისათვის. დააყენეთ -1 ლიმიტის "
+"მოსახსნელად."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "ატვირთვის სიჩქარე:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "ლიმიტების იგნორირება ლოკალურ ქსელში"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "IP ოვერჰედის გამტარუნარიონობის ლიმიტი"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"თუ მონიშნულია, დაახლოებითი TCP/IP ოვერჰედი იცლება სიხშირის ლიმიტერებისგან, "
+"რათა მოხდეს საერთო ტრაფიკის ლიმიტის გადაცილების თავიდან აცილება"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"მაქსიმალური ატვირთვის სლოტები თითო ტორენტისთვის. დააყენეთ -1 ლიმიტის "
+"მოსახსნელად."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"მაქსიმალური კავშირების რაოდენობა თითო ტორენტზე. მიუთითეთ -1 ლიმიტის "
+"მოსახსნელად."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "აქტიური პორტი:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "აქტიური პორტის ტესტირება"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "საიდან:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "სადამდე:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "დონე:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT პორტების მინიჭების პროტოკოლი"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "პირების გაცვლა–გამოცვლა"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"ლოკალური მომსახურების აღმომჩენი პოულობს ლოკალურ პურებს თქვენს ქსელში."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"გავრცელების ჰეშ ცხრილმა შესაძლოა გაზარდოს აქტიური შეერთებები რაოდენობა."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "პირის TOS ბიტი:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "ჰოსტის სახელი:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "პორტი:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "კეშის ზომა (16 კბ-იანი ბლოკი):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"ჩაწერის კეშში ბოლო ჩაწერიდან გასული დრო სანამ ის იძულებით გაიწმინდება "
+"დისკიდან. ნაგულისხმევი არის 60 წამი."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "კეშის ამოწურვა (წამები):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "პარამეტრები"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"სესიის დაწყებიდან დისკზე ჩაწერილი 16 კბ-იანი ბლოკების საერთო რაოდენობა."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "ჩაწერილი ბლოკები:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "სესიის დაწყებიდან შესრულებული ჩაწერის ოპერაციების საერთო რაოდენობა."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "ჩაწერები:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr "შეფარდება"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "ჩაწერის კეშის Hit შეფარდება:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"იმ ბლოკების რაოდენობა რომლებიც მოთხოვნილი იქნა bittorrent-ის ძრავიდან "
+"(პირებიდან) და გამოყენებული იქნა დისკიდან ან კეშიდან."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "წაკითხული ბლოკები:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "იმ ბლოკების რაოდენობა რომლებიც კეშიდან იქნა აღებული."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "ბლოკების წაკითხვის მოხვედრებები:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "კეშის მოხვედრებების შეფარდება წაკითხვის კეშისთვის"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "კითხვის კეშის Hit შეფარდება:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"სესიის დაწყების შემდეგ შესრულებული ჩაწერის ოპერაციების საერთო რაოდენობა."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "წაკითხვები:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"16 კბ-იანი ბლოკების რაოდენობა რომლებიც ახლა არიან დისკის კეშში. ეს შეიცავს "
+"როგორც კითხვის ასევე წერის კეშს."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "კეშის ზომა:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "კითხვის კეშის ზომა:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"დაგვეხმარეთ Deluge-ს გაუმჯობესებაში თქვენი Python-ის და PyGTK ვერსიების, "
+"ოპერაციული სისტემის და პროცეროს ტიპების გამოგზავნით. ამათ გარდა არ იგზავნება "
+"არანაირი ინფორმაცია."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "დიახ, გთხოვთ გაიგზავნოს ანონიმური სტატისტიკა"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "მდებარეობა:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"თუ Deluge-მ ამ მდებარეობაში ვერ იპოვა მონაცემთა ბაზა ის გამოიყენებს DNS-ს "
+"რათა გაარკვიოს პირების ქვეყნები."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "დაემონის პორტი:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "პორტი"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "დისტანციური კავშირების დაშვება"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "კავშირები"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "ვებ-საიტის პერიოდულად შემოწმებვა ახალი ვერსიებისთვის"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "ვერსია:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "ავტორი:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "ვებსაიტი:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "ავტორის ელ-ფოსტა:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "ინფო"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "პირის დამატება"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>მთავარი</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "დამატება"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "ამოღება"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "ინფოჰეშის დამატება"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "ინფოჰეში:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "ტრეკერები:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "ჰოსტის დამატება"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "დანიშნულება:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "ახალი გამოშვება"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "ვებ-საიტზე _გადასვლა"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "აღარ მაჩვენო ეს დიალოგი შემდეგში"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "სახელი:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "კომენტარები:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "დასრულებულის გადატანა:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "სიდირების შეჩერება შეფარდებისას:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "წაშლა შეფარდებაზე"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "ტრეკერების _რედაქტირება"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "თავში"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "ბოლოში"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "ტორენტების დამატება"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_ბმული"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "ინფო _ჰეში:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "_დაპაუზებულ მდგომარეობაში დამატება"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "პირველი/ბოლო ნაწილების პრიორიტირება"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "ყველაზე მორგება"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "ნაგულისხმევებზე დაბრუნება"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "დელუჯის _ჩვენება"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_ჩამოტვირთვის სიჩქარის ლიმიტი"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_ატვირთვის სიჩქარის ლიმიტი"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "გამოსვლა & დაემონის _გათიშვა"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "ტრეკერების რედაქტირება"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "პირის _დამატება"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "პირის დამატება IP-ის გამოყენებით"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "ტრეკერის რედაქტირება"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "ტრეკერი:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "შეიყვანეთ დისტანციური მდებარეობა"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "მდებარეობა:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "ტორენტის შექმნა"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "საქა_ღალდე"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_დისტანციური მდებარეობა"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "ფაილები"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "ვებ-სიდები"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "ნაჭრის ზომა:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "პირადად მონიშვნა"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "დაემატოს ეს ტორენტი სესიას"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "პარამეტრები"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ".torrent-ის შენახვა როგორც"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_შეჩერება"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "გაგრძე_ლება"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "არჩეული ტორენტების გაგრძელება."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "პარამ_ეტრები"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_რიგი"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "ტრეკერის _განახლება"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "ტორენტის _წაშლა"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "გადამოწმების _იძულება"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "იარლიყი"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "ყველას _მონიშვნა"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "ყველას _დაპაუზება"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "ყველას _გაგრძელება"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_კავშირის ლიმიტი"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "ატვირთვის _სლოტების ლიმიტი"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_ავტომატურად მართული"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "ტრეკერის დამატება"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "ბმულის დამატება"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "ბმული:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "ყველას _გაშლა"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent კლიენტი"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "BitTorrent კლიენტი Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "ჩამოტვირთეთ და გააზიარეთ ფაილები BitTorrent-ის გამოყენებით"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "ბრძანება"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "პაროლი"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "საიდან"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "შემთხვევითი პორტების გამოყენება"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "ზიარი რეიტინგი"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "ტიპი"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP სია (GZip ფორმატში)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer ტექსტი (Zip ფორმატში)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (შეკუმშვის გარეშე)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip ფორმატში)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "ბლოკირების სია"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "არასწორი ლიდერი"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "არასწორი მაგიური კოდი"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "არასწორი ვერსია"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "დღე"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "ახალი სიის შემოწმება ყოველ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "ბლოკირების სიის შემოტანა ჩართვისას"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>პარამეტრები</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "თუ საჭიროა ბლოკირების სიის ფაილის ჩამოტვირთვა და მისი შემოტანა."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "ჩამოტვირთვის შემოწმება და შემოტანა"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "ბლოკირების სიის ახალი ფაილის ჩამოტვირთვა და შემოტანა."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "ჩამოტვირთვის და შემოტანის იძულება"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "ბლოკირების სია განახლებულია"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>პარამეტრები</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "ტიპი:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "თარიღი:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "ფაილის ზომა:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>ინფო</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "ტორენტი დასრულდა"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "ტორენტი დაემატა"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "შესრულება"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "მოვლენა"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>კომენტარის დამატება</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "ბრძანებები"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "სათვალყრურო საქაღალდე არ არსებობს."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "მდებარეობა არ არსებობს."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "სათვალყურო საქაღალდის თვისებები"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "საქაღალდის არჩევა"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "ამ საქაღალდეზე თვალყურის ჩართვა"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>სათვალყურო საქაღალდე</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ".torrent-ის წაშლა დამატების შემდეგ"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "გაფართოების მინიჭბეა დამატების შემდეგ:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>ტორენტ ფაილის მოქმედება</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>დასრულებულის გადატანა</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "იარლიყი: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>იარლიყი</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "მთავარი"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "ატვირთვის მაქს. სიჩქარე:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "მაქს. კავშირები:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "ატვირთვის მაქს. სლოტები:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "ჩამოტვირთვის მაქს. სიჩქარე:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>გამტარუნარიანობა</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "ავტო მართული:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "დაპაუზებულის დამატება:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "რიგში:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>რიგი</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>სათვალყურო საქაღალდეები:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "წამები"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge-ს ვებ ინტერფეისი არ აყენია, გთხოვთ დააყენეთ\n"
+"ინტერფეისი და ცადეთ ხელახლა."
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "ვებ ინტერფეისის ჩართვა"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL-ს გააქტიურება"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "სასმენი პორტი:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "არასწორი იარლიყი, მართებული სიმბოლოები:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "ცარიელი იარლიყი"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "იარლიყი უკვე არსებობს"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "უცნობი იარლიყი"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "უცნობი ტორენტი"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "იარლიყის _პარამეტრები"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "იარლიყის _წაშლა"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "იარლიყის _დამატება"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "იარლიყის პარამეტრები"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "იარლიყი"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>იარლიყის პარამეტრები</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "თითო ტორენტის მაქს. პარამეტრების მორგება:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "მაქსიმალური"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "რიგის პარამეტრების მორგება:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 ტრეკერი თითო ხაზზე)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "იარლიყის ავტომატურად მორგება:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "იარლიყის დამატება"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>იარლიყის დამატება</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>იარლიყების დასამატებლად, დასარედაქტირებლად და წასაშლელად გამოიყენეთ "
+"გვერდითა ზოლი.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>იარლიყები</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "შეტყობინების ციმციმი ნაჩვენებია"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "ამომხტარი შეტყობინება არ არის ჩართული."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "შეტყობინების ფანჯარა ნაჩვენებია"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "ხმოვანი შეტყობინება არ არის ჩართული."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame არ არის დაინსტალირებული"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "ხმოვანი შეტყობინება ჩაიშალა %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "ხმოვანი შეტყობინება წარმატებით განხორციელდა"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "დასრულებული ტორენტი"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "ხმოვანი ფაილის არჩევა"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "შეტყობინების ელ-ფსოტის გაგზავნისას დაფიქსირდა შეცდომა: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "შეტყობინების ელ-ფოსტა გაიგზავნა."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "\"%(name)s\" ტორენტი დასრულდა"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"ეს ელ-ფოსტა გამოგზავნილია იმის გამო რომ Deluge-მ დაასრულა \"%(name)s\" "
+"ტორენტის ჩამოტვირთვა, ის შეიცავს %(num_files)i ფაილს.\n"
+"თუ აღარ გსურთ წერილების მიღება, უბრალოდ გამორთეთ ისინი Deluge-ს "
+"პარამეტრებიდან.\n"
+"გმადლობთ,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "სისტემური არის ხატულის ციმციმი ჩართულია"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "ამომხტარი ფანჯრები ჩართულია"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "ხმები ჩართულია"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>ინტერფეისის შეტყობინებები</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>მიმღებთა სია</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "სერვერი მოითხოვს TLS/SSL-ს"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>ელ-ფოსტით შეტყობინება</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"ეს კონფიგურაცია არ ნიშნავს რომ თქვენ მართლა მიიღეებთ შეტყობინებებს ყველა ამ "
+"მოქმედებებისთვის."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "გამოწერები"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "ხმის გამართვა"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "ამოარქივება აქ:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "ტორენტის სახელის ქვე-საქაღალდის შექმნა"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"ეს პარამეტრი არჩეული ამოსაარქივებელი საქაღალდის ქვეშ შექმნის ტორენტის "
+"სახელის მქონე ქვე-საქაღალდეს და იქ ამოაარქივებს ფაილებს."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "ჩამოტვირთვის ლიმიტი:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "ატვირთვის ლიმიტი:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "აქტიური ტორენტები:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "აქტიური ჩამოტვირთვა:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "აქტიური სიდირება:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>ნელი პარამეტრები</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "გამოსვლა"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "ჰოსტი:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "შესვლა"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "მაქსიმალური კავშირების დაყენება"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "ჩამოტვირთვის სიჩქარე"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "ატვირთვის მაქსიმალური სიჩქარის დაყენება"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "ატვირთვის სიჩქარე"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "ჩამოტვირთვის მაქსიმალური სიჩქარის დაყენება"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "პროტოკოლის გამტარუნარიოანობა ჩამოტვირთვა/ატვირთვა"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "ფილტრები"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "დეტალები"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "პირადი"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "შეტყობინება ახალი ვერსიის გამოსვლისას"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "მაქსიმალური კავშირები:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "ჩამოტვირთვის მაქსიმალური სიჩქარე (კბ/წმ):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "ატვირთვის მაქსიმალური სიჩქარე (კბ/წმ):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "მაქსიმალური ნახევრად ღია კავშირები:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "კავშირების მცდელობა ერთ წამში:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "ატვირთვის მაქსიმალური სლოტები:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "სერვერი"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "ჩამოტვირთვა"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/kk.po b/deluge/i18n/kk.po
new file mode 100644
index 0000000..03531f5
--- /dev/null
+++ b/deluge/i18n/kk.po
@@ -0,0 +1,6200 @@
+# Kazakh translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Kazakh <kk@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "КиБ"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "МиБ"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "Гиб"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "КиБ/с"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Барлық"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Белсенді"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Тексеру"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Жүктелуде"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Таратылуда"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Аялдап тұр"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Кезекте"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Қате"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Аты"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Барысы"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Күйі"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Көлемі"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Жүктелген"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Таратылған"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Рейтинг"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Жүктеп алу жылдамдығы"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Тарату жылдамдығы"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Қатысушылар (пир)"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Қол жетімді"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Қосылған"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Трекер"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Қалған уақыт"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Бірінші мен соңғы бөліктердің басымдылығын арттыру"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Автоматты басқару"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Бөліктер"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Назар аударыңыз"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Анонс сәтті орындалды"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Анонс жіберілді"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Сыртқы түрі (интерфейс)"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Жүктемелер"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Каналдың өткізу қабілеттілігі"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Кезекке"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Желі"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Прокси"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Кэш"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Басқа"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Қызмет"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Кеңейтулер"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Ауғанстан"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Аланд аралдары"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Албания"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Алжир"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Шығыс Самоа (АҚШ)"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Андорра"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Ангола"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ангвилла"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Антарктика"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Антигуа және Барбуда"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Аргентина"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Армения"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Аруба"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Австралия"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Австрия"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Әзірбайжан"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Багам аралдары"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Бахрейн"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Барбадос"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Беларусь"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Бельгия"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Белиз"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Бенин"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Бермуд аралдары"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Боливия"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Босния және Герцеговина"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Ботсвана"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Буве аралдары"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Бразилия"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Үнді мұхитындағы Ұлыбритания аймағы"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Бруней Даруссалам"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Болгария"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Буркина Фасо"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Бурунди"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Камбоджа"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Камерун"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Канада"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Кабо-Верде"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Кайман аралдары"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Орталық Африка Республикасы"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Чад"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Чили"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Қытай"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Рождество аралы"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Кокос аралдары"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Колумбия"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Комор аралдары"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Конго"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Конго Демократиялық Республикасы"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Кук аралдары"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Коста Рика"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Кот-д'Ивуар"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Хорватия"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Куба"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Кипр"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Чехия"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Дания"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Джибути"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Доминика"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Доминикан Республикасы"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Эквадор"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Мысыр"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Сальвадор"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Экваториалдық Гвинея"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Эритрея"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Эстония"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Эфиопия"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Фолкленд (Мальвин) аралдары"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Фарер аралдары"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Фиджи"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Финляндия"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Франция"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Францияның Гвианасы"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinezia franceză"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Францияның солтүстік аймақтары"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Габон"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Гамбия"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Грузия"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Германия"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Гана"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Гибралтар"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Грекия"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Гренландия"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Гренада"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Гваделупа"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Гуам"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Гватемала"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Гернси"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Гвинея"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Гвинея-Бисау"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Гайана"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Гаити"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Хеард пен Макдональд аралдары"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Ватикан"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Гондурас"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Гонконг"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Венгрия"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Исландия"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Үндістан"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Индонезия"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Иран Исламдық Республикасы"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Ирак"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ирландия"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Мэн аралы"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Израиль"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Италия"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Ямайка"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Жапония"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Джерси"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Иордания"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Қазақстан"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Кения"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Кирибати"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Корея (Солтүстік)"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Корея Республикасы"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Кувейт"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Қырғызстан"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Лаос Халық Демократиялық Республикасы"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Латвия"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Ливан"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Лесото"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Либерия"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Ливия Араб Джамахириясы"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Лихтенштейн"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Литва"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Люксембург"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Макао"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Македония"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Мадагаскар"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Малави"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Малайзия"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Мальдив аралдары"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Мали"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Мальта"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Маршалл аралдары"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Мартиника"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Мавритания"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Маврикий"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Мариотт"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Мексика"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Микронезия"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Молдова"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Монако"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Монғолия"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Черногория"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Монсеррат"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Марокко"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Мозамбик"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Мьянма"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Намибия"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Науру"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Непал"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Нидерланды"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Нидерландияның Антиль аралдары"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Жаңа Каледония"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Жаңа Зеландия"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Никарагуа"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Нигер"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Нигерия"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Ниуэ"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Норфолк аралы"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Солтүстік Марианна Аралдары"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Норвегия"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Оман"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Пәкістан"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Палау"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Палестина жері"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Панама"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Папуа - Жаңа Гвинея"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Парагвай"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Перу"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Филиппин"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Питкэрн аралдары"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Польша"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Португалия"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Пуэрто-Рико"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Катар"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Реюньон"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Румыния"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Ресей"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Руанда"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Сен-Бартелемей"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Әулие Елена ар."
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Сент-Китс және Невис"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Сент-Люсия"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Сент-Мартин"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Сен-Пьер және Микелон"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Сент-Винсент және Гренадинар"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Самоа"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Сан-Марино"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Сан-Томе және Принсипи"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Сауд Арабиясы"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Сенегал"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Сербия"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Сейшел аралдары"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Сьерра-Леоне"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Сингапур"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Словакия"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Словения"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Соломон аралдары"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Сомали"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Оңтүстік Африка"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Оңтүстік Джорджия мен Оңтүстік Сендвия аралдары"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Испания"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Шри-Ланка"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Судан"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Суринам"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Шпицберген мен Ян Майен"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Свазиленд"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Швеция"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Швейцария"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Сирия Араб Республикасы"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Тәжікстан"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Танзания"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Тайланд"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Тимор-Лесте"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Того"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Токелау"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Тонга"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Тринидад және Тобаго"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Тунис"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Түркия"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Түрікменстан"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Теркс және Кайкос аралдары"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Тувалу"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Уганда"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Украина"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Біріккен Араб Әмірліктері"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Ұлыбритания"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "АҚШ"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "АҚШ-ң Сыртқы Кішкене аралдары"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Уругвай"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Өзбекстан"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Вануату"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Венесуэла"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Вьетнам"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Виргин аралдары (Ұлыбритания)"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Виргин аралдары (АҚШ)"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Уоллис және Футуна"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Батыс Сахара"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Йемен"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Замбия"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Зимбабве"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Қызмет жүктелмеген"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Файл аты"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Деңгей"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Файлды таңдаңыз"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Буманы таңдаңыз"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ".torrent файлын сақтау"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Торрент файлдары"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Барлық файлдар"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Сервер:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Торрент"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Жарамсыз файл"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ".torrent файлын таңдаңыз"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Жарамсыз URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Жүктеу сәтсіз аяқталды"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Толық ақпарат:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Пайдаланушы аты:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Құпия сөз:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Басқа..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Қосылмаған"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT тораптары"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Иә"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Жоқ"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Басымдылығы"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Күйі"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Толық ақпарат"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Файл_дар"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "Қатысу_шылар (пир)"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "Ба_птаулар"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Шектеусіз"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Жүктеу"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Тарату"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Желіге қосылмаған"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Желіге қосылған"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Қосылған"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Күйі"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Хосты"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Нұсқа"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Қызметті іс_ке қосу"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Қызметті _тоқтату"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Қызметті іске қосу мүмкін емес"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Хост қосу қатесі"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Пайдаланушы аты"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Деңгейі"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Қосулы"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Кеңейту"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Кеңейтуді таңдаңыз"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Eggs кеңейтуі"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Трекерлер"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Жоқ"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Администратор"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Белгілер"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Белгісі жоқ"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Торренттер кезекке тұрғызылды"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Торрент кезекке тұрғызылды"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Шектеусіз етіп орнату"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Қосулы"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Ажыратылған"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Сөндіру"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Адресі"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Клиент"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Торрент құрылуда"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Кезектегі торренттер"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Жою"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Қосылған кезде торрентерді автоматты түрде қосу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Файл"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "Торрентті _қосу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "Торрентті қ_ұру"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Шығу және қызметті _тоқтату"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Шығу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Өзгерту"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Қо_сылыстар менеджері"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Торрент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "Сырт _көрініс"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Сай_мандар панелі"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Бүйір панелі"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Күйлер _жолақшасы"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Бетбелгілер"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "Баға_налар"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Бүйір панелі"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "_Нөлдік элементтерін көрсету"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "_Трекерлерді көрсету"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Көмек"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Үй парағы"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Жиі Қойылатын Сұрақтар (FAQ)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Қоғамдастық"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Торрентті қосу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Торрентті қосу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Торрентті өшіру"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Торрентті жою"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Таңдалған торренттерді аялдату"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Аялдату"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Таңдалған торренттерді жалғастыру"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Жалғастыру"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Торрентті жоғарыға жылжыту"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Жоғары"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Торрентті төменге жылжыту"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Төмен"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Баптаулар"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Қосылыстар менеджері"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Мәжбүрленген"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Сөндірілген"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Байланысты орнату"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Екеуі де"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Жылдамдықты терезенің бас бөлігінде көрсету"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Суреттемені мәлімдеу аумағында көрсету"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Терезе жабылған кезде мәлімдеу аумағына орау"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Бағдарлама ашылған кезде жүйелік трейге орау"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Мәлімдеу аумағын құпия сөзбен қорғау"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Аяқталғандарды осы жерге жылжыту:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ".torrent файлдарды осы жерге көшіру:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Жою кезінде торрент файлдың көшірмесін жою"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Торрент жойылатын кезде құрылған торрент файлдың көшірмесін жою."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Жүктемелер сақталатын орын:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Бірінші мен соңғы бөліктердің басымдылығын арттыру"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+"Торренттегі файлдардың бірінші мен соңғы бөліктердің басымдылығын арттыру"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Торренттерді аялдатылған күйде қосу"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Әрқашан көрсету"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Сұхбат терезесін алдына шығару"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Қосылыстардың максимал саны. Шектелмеген үшін -1 енгізңіз."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Байланыстар:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Барлық торренттер үшін тарату слоттардың максимал саны. Шектелмеген үшін -1 "
+"енгізңіз."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Барлық торренттер үшін максимал жүктеп алу жылдамдығы. Шектелмеген үшін -1 "
+"енгізңіз."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Жүктеу жылдамдығы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Барлық торренттер үшін максималды тарату жылдамдығы. Шектелмеген үшін -1 "
+"енгізңіз."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Тарату жылдамдығы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Локалды желі шектеулерін елемеу"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Жылдамдықты IP протоколының ерекшеліктерін ескеріп шектеу"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Қосылған болса, жалпы трафик шегінен асып кетпеу үшін, TCP/IP ерекшеліктері "
+"жылдамдық шектеушілермен ескерілетін болады"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Әрбір торрент үшін тарату слоттардың максимал саны. Шектелмеген үшін -1 "
+"енгізңіз."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Әрбір торрент үшін қосылыстардың максимал саны. Шектелмеген үшін -1 енгізңіз."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Кездейсоқ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Белсенді порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Белсенді портты тексеру"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Қайдан:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Қайда:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Деңгей:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Шифрлеу"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT порттарды қайта бағыттау протоколы"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Қатысушылармен (пир) алмасу"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery желіңізде локалды пирлерді табады."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Таралған хеш-кесте (DHT) белсенді қосылыстар санын арттыра алады."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Қатысушының (пир) TOS байты:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Хост аты:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Кэш көлемі (блок 16 КиБ):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Кэш өмір сүру уақыты (секундпен):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Баптаулар"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Сеанс басталғалы дискіге 16 КиБ көлемді жазылған блоктардың толық саны."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Жазылған блоктар саны:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Сеанс басталғалы орындалған жазу амалдардың толық саны."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Жазу амалдар саны:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"\"(жазылған блоктар - жазу амалдар) / жазылған блоктар\" формула бойынша "
+"есептелінетін сан, жазу амалдарының сақталынғандардың, толық санына "
+"қатынасы, яғни жазу кэштің тиімділігін көрсетеді."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Кэшке түсіп қалу ықтималдылығы (пайызбен):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Bittorrent қозғалтқышы (engine) сұраған, дисктен немесе кэштен оқылған "
+"блоктар саны."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Оқылған блоктар:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Кэштен оқылған блоктар саны."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Кэштен оқылған блоктар:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Оқу кэштің нәтижелік коэффициенті."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Кэштен оқылған блоктар (пайызбен):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Сеанс басталғалы орындалған оқу амалдардың толық саны."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Оқу амалдары:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Дискілік кэштегі 16 КиБ көлемді блоктар саны. Оқу және жазу кэштерін қамтиды."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Кэш көлемі:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Оқу кэш көлемі:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Сіз, өзіңіздің Python, PyGTK, операциялық жүйеніздің нұсқалары мен процессор "
+"түрі туралы мәліметтерді бізге жіберу арқылы, Deluge жобасына көмек көрсете "
+"аласыз. Одан басқа ешбір ақпарат жіберілмейді."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Иә, анонимды статистиканы жіберіп отыруға рұқсат беремін"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Орналасуы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Егер Deluge көрсетілген жерде мәліметтер қоры файлын таппаса, қатысушылардың "
+"(пир) елін анықтау үшін DNS қолданылатын болады."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Қызмет порты:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Порты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Басқа жерден қосылуға рұқсат беру"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Қосылыстар"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Веб сайттан жаңа нұсқалардың пайда болуын тексеріп отыру"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Нұсқа:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Автор:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Үй парағы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Автордың E-mail-ы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Мәлімет"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Қатысушыны (пир) қосу"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "хост аты:порт"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Жалпы</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Бас тарту"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Қосу"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Өшіру"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Мәліметтер хешін қосу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Мәліметтер хеші:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Трекерлер:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Хостты қосу"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Қайда:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Жаңа ңұсқа"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Веб сайтқа өту"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Бұл терезені келесіде көрсетпеу"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Аты:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Пікірлер:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Аяқталғандарды осы жерге жылжыту:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Осы рейтингтен асқан кезде, таратуды тоқтату:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Келесі рейтингке жеткенде, жою"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "Трекерлерді _өзгерту"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Жоғарыға"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Төмен"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Торренттерді қосу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL сілтеме"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Хеш ту_ралы ақпарат"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "А_ялдатылған күйде қосу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Бірінші мен соңғы бөліктердің басымдылығын арттыру"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Барлығы үшін іске асыру"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Қалыпты баптауларды қайтару"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Deluge _көрсету"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Жүктеп алу жылдамдығын шегі"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Тарату жылдамдығын шегі"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Шығу және қызметті тоқтату"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Трекерлерді өзгерту"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "Қатысушыны қ_осу"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Қатысушыны (пир) оның IP адресі бойынша қосу"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Трекерді өзгерту"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Трекер:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Қашықтаған орналасу жерін енгізіңіз"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Орналасу жері:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Торрентті құру"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Бума"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Қашықтаған орналасу жері"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Файлдар"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Веб-таратушылар (веб-сидтер)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Бөлік көлемі:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Жекешелік жалаушасын қою"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Торрентті осы сеансқа қосу"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Баптаулар"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ".torrent файлын басқашалай сақтау"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Жалғ_астыру"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Белгіленген торренттерді жалғастыру."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Баптаулар"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Кезек"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Трекерді жаңарту"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Торрентті _жою"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Мәліметтерді текс_еріп шығу"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "белгі"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Барлығын таң_дау"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Барлығын ая_лдату"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Барлығын _жалғастыру"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Қосылыстар санның шегі"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Тарату _слоттар санның шегі"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Автоматты басқарылады"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Трекерді қосу"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URL сілтемені қосу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL сілтемесі:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Барлығын _жаю"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Команда"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Құпия сөз"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Қайдан"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Қайда"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Кездейсоқ порттарды қолдану"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Кіріс"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Шығыс"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Байланыс саны максимумы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Тарату слоттар максимумы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Жартылай ашық байланыстар максимумы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Секундына байланыс орнату талап саны максимумы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "IP хаттамасының ерекшеліктерін ескеріп, жылдамдықты шектеу"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Рейтинг"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Түрі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Іске асыру"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP тізімі (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer мәтіні (zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian мәтіні (сығылмаған)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Қара тізім (Blocklist)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Басы дұрыс емес"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Неверный отпечаток"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Қате нұсқасы"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Күн"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Жаңа тізімді уақыт өте тексеру:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Қара тізімді бағдарлама қосылу кезінде импорттау"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Баптаулар</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Қара тізімді керек болса, жүктеп алып, импорттау."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Тексеріп алып, импорттау"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Жаңа қара тізім файлын жүктеп алып, импорттау."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Жүктеп алуды мен импорттауды мәжбүрлі түрде орындау"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Қара тізім ескірген жоқ"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Баптаулар</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Түрі:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Күні:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Файл көлемі:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Ақпарат</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Торрент аяқталды"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Торрент қосылды"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Орындау"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Оқиға"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Команданы қосу</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Командалар</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Көрсетілген орналасу жері жоқ."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Буманы таңдаңыз"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Қосқаннан кейін .torrent файлын жою"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Жылжыту аяқталды</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Белгі: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Белгі</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Негізгі"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Таратудың максимал жылдамдығы:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Қосылыстар максимал саны:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Тарату слоттардың максимал саны:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Жүктеп алудың максимал жылдамдығы:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Каналдың өткізу қабілеттілігі</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Кезек</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "секунд"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge веб интерфейсі орнатылмаған, оны\n"
+"орнатып қайтадан байқап көріңіз"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Веб интерфейсті қосу"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL қолдану"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Тыңдалатын порт:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Қате белгі, рұқсат етілетін символдар: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Бос белгі"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Белгі бар болып тұр"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Белгісіз белгі"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Белгісіз торрент"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Белгі _баптаулары"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Белгіні _жою"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "Белгіні _қосу"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Белгі баптаулары"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Белгі"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Белгі баптаулары</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Торрент үшін максималды баптаулар:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Максимал"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Кезек баптауларын қолдану:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(әр трекер бөлек жолда)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Осы белгіні автоматты түрде қолдану:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Белгіні қосу"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Белгіні қосу</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Бүйір панелді белгілерді қосу, түзету немесе өшіру үшін қолданыңыз. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Белгілер</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame орнатылмаған"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Аяқталған торренттер"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Дыбыс файлын таңдаңыз"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Мәлімдеме электрондық хаты жіберілді"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "\"%(name)s\" торренті аяқталды"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Deluge осы хатпен, құрамында %(num_files)i файлы бар \"%(name)s\" жүктеуін "
+"аяқтағаны жайлы мәлімдейді.\n"
+"Осындай мәлімдемелерді алмау үшін, Deluge баптауларында, электронды поштамен "
+"мәлімдеу баптауын алып тастаңыз.\n"
+"\n"
+"Рахмет,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI мәлімдемелері</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Алушылар</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Сервер TLS/SSL талап етеді"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Электрондық хат мәлімдемелері</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Жазылулар"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Осы жерге шығару:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Құрамдас буманы торрент атымен атап, құру"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Бұл баптау, таңдалған бумада торрент атымен аталған, жаңадан құрылған "
+"құрамдас буманың ішіне файлдарды шығаруға мүмкіндік береді."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Жүктеу шегі:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Тарату шегі:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Белсенді торренттер:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Шектеулер</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Жүйеден шығу"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Сақтау"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Хост аты:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Жылжыту"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Кіру"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Максимал қосылыстар санын орнату"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Жүктеп алу жылдамдығы"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Жүктеп алудың максимал жылдамдығын орнату"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Тарату жылдамдығы"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Таратудың максимал жылдамдығын орнату"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Жүктеп алу/тарату трафигін тексеріп отыру"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Байланыс құру"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Сүзгілер"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Жүктеп алу жылдамдық шегі"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Тарату жылдамдық шегі"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Байланыстар шегі"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Тарату слоттар шегі"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Трекерді жаңарту"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Тексеріп шығу"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Көбірек білу"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Жалпы"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Жеке"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Ақиқат"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Бағдарламаның жаңа нұсқаларының жетімдігі туралы хабарлау"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Қосылыстардың максимал саны:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Максималды жүктеп алу жылдамдығы (КиБ/с):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Максималды тарату жылдамдығы (КиБ/с):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Жартылай ашық қосылыстардың максимал саны:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Бір секунд ішіндегі орнатылатын қосылыстардың максимал саны:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Тарату слоттардың максимал саны:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Сервері"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Жаңарту"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Файл"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Аялданған түрде қосу"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Жүктеп алу"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/km.po b/deluge/i18n/km.po
new file mode 100644
index 0000000..c5c28fa
--- /dev/null
+++ b/deluge/i18n/km.po
@@ -0,0 +1,6172 @@
+# Khmer translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Khmer <km@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "កំហុស"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "ព្រមាន"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "ឈ្មោះ​អ្នកប្រើ៖"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "ពាក្យ​សម្ងាត់៖"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "បាន​បើក"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "ពី៖"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "ឈ្មោះ​ម៉ាស៊ីន​៖"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "ច្រក៖"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "ការកំណត់"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "មិន​បាន​បើក​សំឡេង​ការ​ផ្ដល់​ដំណឹង"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "មិន​បាន​ដំឡើង pygame"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "ថូរិន​រួចរាល់"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "ជ្រើស​ឯកសារ​សំឡេង"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "បាន​ផ្ញើ​អ៊ីមែល​ផ្ដល់​ដំណឹង។"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "បាន​បញ្ចប់​ថូរិន \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"អ៊ីមែល​នេះ​ជា​ការ​ផ្ដល់​ដំណឹង​ថា Deluge បាន​បញ្ចប់​ការ​ទាញ​យក \"%(name)s\" "
+"ដែល​មាន​ឯកសារ %(num_files)i ហើយ។\n"
+"ដើម្បី​ឈប់​ទទួល​ការ​ផ្ដល់​ដំណឹង​នេះ "
+"អ្នក​អាច​បិទ​ការ​ផ្ដល់​ដំណឹង​តាម​អ៊ីមែល​នៅ​ក្នុង​ការកំណត់​ចំណូល​ចិត្ត​នៃ "
+"Deluge ។\n"
+"\n"
+"អរគុណ,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "បាន​បើក​សំឡេង"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>អ្នក​ទទួល</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "ម៉ាស៊ីន​បម្រើ​ត្រូវការ TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "ការកែ​តម្រូវ​សំឡេង"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/kn.po b/deluge/i18n/kn.po
new file mode 100644
index 0000000..63fc239
--- /dev/null
+++ b/deluge/i18n/kn.po
@@ -0,0 +1,6164 @@
+# Kannada translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Kannada <kn@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "ಕಿಲೋಬೈಟ್ಸ್/ಸೆಕೆಂಡ್"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "ದೋಷ"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "ಹೆಸರು"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "ಪ್ರಗತಿ"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "ಗಾತ್ರ"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "ಅಪ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "ಅನುಪಾತ"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "ಡೌನ್ಲೋಡ್ ವೇಗ"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "ಅಪ್ಲೋಡ್ ವೇಗ"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ಬೇಕಾಗುವ ಸಮಯ"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "ಸ್ವಯಂನಿರ್ವಹಿತ"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "ವಿಭಾಗ"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "ಎಚ್ಚರಿಕೆ"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "ಪ್ರಕಟಣೆ ಸರಿಯಾಗಿದೆ"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "ಪ್ರಕಟಣೆ ಕಳುಹಿಸಲಾಗಿದೆ"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "ಸರದಿ"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "ಇತರೆ"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "ಅಪ್ಲೋಡ್"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "ಮಟ್ಟ"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "ಟ್ಯ್ರಾಕರ್ಸ್"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "ಕಾರ್ಯನಿರ್ವಾಹಕ"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "ವಿಳಾಸ"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "ಕಕ್ಷಿ"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "ಟೊರೆಂಟ್ ಸೇರಿಸು"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "ಟೊರೆಂಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕು"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿಲ್ಲಿಸು"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "ಪುನರಾರಂಭಿಸು"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "ಡೌನ್ಲೋಡ್ ಸರದಿ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "ಬಲವಂತವಾಗಿ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "ಹಸ್ತಲಾಘವ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "ಇವೆರಡರಲ್ಲಿ ಒಂದು"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "ಪೂರ್ಣಗೊಂಡವುಗಳನ್ನು ಸ್ಥಳಾಂತರಿಸಲು ಸ್ಥಳ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "ಸಂಪರ್ಕಗಳು:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "ಡೌನ್‌ಲೋಡಿನ ವೇಗ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "ಅಪ್‌ಲೋಡಿನ ವೇಗ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "ಸಂಪರ್ಕ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>ಸಾಮಾನ್ಯ</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "ಸೇರಿಸು"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "ತೆಗೆದುಹಾಕು"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "ನಿಲ್ಲಿಸುವ ವೇಗದ ಅನುಪಾತ:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "ತೆಗೆದುಹಾಕಲು ಅನುಪಾತ:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "ಟಾರೆಂಟನ್ನು ಸೇರಿಸು"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "ಯುಆರ್ಎಲ್(_U)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "ಎಲ್ಲದಕ್ಕೂ ಅನ್ವಯಿಸಿ"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "ಖಾಸಗಿಯಾಗಿ ವರ್ಗೀಕರಿಸು"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "ಆದ್ಯತೆಗಳು"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "ಆಯ್ಕೆಗಳು(_i)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "ಯುಆರ್ಎಲ್ ಸೇರಿಸು"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "ಜಾಲವಿಳಾಸ:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "ಗುಪ್ತಪದ"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "ಇಲ್ಲಿಂದ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "ಇಲ್ಲಿಗೆ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "ಒಳಬರುವ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "ಹೊರಹೋಗುವ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "ಗರಿಷ್ಠ ಸಂಪರ್ಕಗಳು"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "ಗರಿಷ್ಠ ಅಪ್ಲೋಡ್ ವಿಭಾಗಗಳು"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "ಹೊಸ ಪಟ್ಟಿಗಾಗಿ ಪ್ರತಿ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "ವಿಧ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>ವಿವರಣೆ</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "ಗರಿಷ್ಟ ಸಂಪರ್ಕಗಳು:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "ಸೆಕೆಂಡುಗಳು"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "ಹೆಸರಿನ ಆಯ್ಕೆಗಳು"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "ಶೀರ್ಷಿಕೆ"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>ಹೆಸರಿನ ಆಯ್ಕೆಗಳು</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "ಹೆಸರುಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "‌ಹೆಸರನ್ನು ಸೇರಿಸು"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>ಹೆಸರನ್ನು ಸೇರಿಸು</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>ಹೆಸರುಗಳು</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "ನಿರ್ಗಮಿಸು"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "ಉಳಿಸು"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "ವರ್ಗಾಯಿಸು"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "ಪ್ರವೇಶಿಸು"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "ಸೇರಿಕೊ"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "ವಿವರಗಳು"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "ಸಾಮಾನ್ಯ"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "ಖಾಸಗಿ"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "ಕಡತ"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿಲ್ಲಿಸಿದ ಸ್ಥಿತಿಯಲ್ಲಿ ಸೇರಿಸು"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "ಡೌನ್ಲೋಡ್"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ko.po b/deluge/i18n/ko.po
new file mode 100644
index 0000000..5666272
--- /dev/null
+++ b/deluge/i18n/ko.po
@@ -0,0 +1,6168 @@
+# Korean translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Korean <ko@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "모두"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "검사중"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "다운로드중"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "배포중"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "일시정지됨"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "대기중"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "오류"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "이름"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "진행 상황"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "상태"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "크기"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "다운로드"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "업로드"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "비율"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "다운 속도"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "업 속도"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "피어"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "유효성"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "추가됨"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "트래커"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "남은시간"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "처음/마지막을 우선함"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "자동 관리"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "조각 개수"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "경고"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "알림 정상"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "알림 보냄"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "인터페이스"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "다운로드"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "대역폭"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "대기열"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "네트워크"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "프록시"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "캐시"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "기타"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "데몬"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "부가 기능"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "아프가니스탄"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "올란드제도"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "알바니아"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "알제리"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "아메리칸사모아"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "안도라"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "앙골라"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "앵귈라"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "남극"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "앤티가바부다"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "아르헨티나"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "아르메니아"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "아루바"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "오스트레일리아"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "오스트리아"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "아제르바이잔"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "바하마"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "바레인"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "방글라데시"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "바베이도스"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "벨라루스"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "벨기에"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "벨리즈"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "베냉"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "버뮤다"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "부탄"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "볼리비아"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "보스니아헤르체고비나"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "보츠와나"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "부베 섬"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "브라질"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "영국령인도양식민지"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "브루나이 왕국"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "불가리아"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "부르키나파소"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "부룬디"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "캄보디아"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "카메룬"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "캐나다"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "카보베르데"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "케이맨 제도"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "중앙아프리카공화국"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "차드"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "칠레"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "중국"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "크리스마스섬"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "코코스 제도"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "콜롬비아"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "코모로"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "콩고"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "콩고민주공화국"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "쿡아일랜드"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "코스타리카"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "코트디부아르"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "크로아티아"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "쿠바"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "키프로스"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "체코"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "덴마크"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "지부티"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "도미니카"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "도미니카공화국"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "에콰도르"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "이집트"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "엘살바도르"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "적도기니"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "에리트레아"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "에스토니아"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "에티오피아"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "포클랜드 제도"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "페어로우섬"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "피지"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "필란드"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "프랑스"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "프랑스령기아나"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "프랑스령 폴리네시아"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "프랑스령 남부와 남극지역"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "가봉"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "감비아"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "그루지아"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "독일"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "가나"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "지브롤터"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "그리스"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "그린란드"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "그레나다"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "카리브"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "괌"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "과테말라"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "건지"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "기니"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "기니비사우"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "가이아나"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "아이티"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "허드 제도와 맥도널드 제도"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "교황청 (바티칸 시국)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "온두라스"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "홍콩"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "헝가리"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "아이슬란드"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "인도"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "인도네시아"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "이란"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "이라크"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "아일랜드"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "맨섬"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "이스라엘"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "이탈리아"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "자메이카"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "일본"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "저지"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "요르단"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "카자흐스탄"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "케냐"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "키리바시"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "조선민주주의인민공화국"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "대한민국"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "쿠웨이트"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "키르기스스탄"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "라오스"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "라트비아"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "레바논"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "레소토"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "라이베리아"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "리비아"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "리히텐슈타인"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "리투아니아"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "룩셈부르크"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "마카오"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "마케도니아"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "마다가스카르"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "말라위"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "말레이시아"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "몰디브"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "말리"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "몰타"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "마셜제도"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "마르티니크"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "모리타니"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "모리셔스"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "마요트"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "멕시코"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "마이크로네시아 연방"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "몰도바"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "모나코"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "몽골"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "몬테네그로"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "몬세라트산"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "모로코"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "모잠비크"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "미얀마"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "나미비아"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "나우루"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "네팔"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "네덜란드"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "네덜란드령 앤틸리스"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "뉴칼레도니아"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "뉴질랜드"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "니카라과"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "니제르"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "나이지리아"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "니우이"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "노퍽섬"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "북 마리아나 제도"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "노르웨이"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "오만"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "파키스탄"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "팔라우"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "팔레스타인 유엔인도주의업무조정국"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "파나마"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "파푸아뉴기니"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "파라과이"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "페루"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "필리핀"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "피트케인"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "폴란드"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "포르투칼"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "푸에르토리코"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "카타르"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "레위니옹"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "루마니아"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "러시아"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "르완다"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "생 바르텔레미"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "생 헬레나"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "생 키츠네비스"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "생 루시아"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "생 마틴"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "생 페에르미켈론"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "생 빈센트 그레나딘"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "사모아"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "산마리노"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "상투메프린시페"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "사우디아라비아"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "세네갈"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "세르비아"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "세이셸"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "시에라리온"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "싱가포르"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "슬로바키아"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "슬로베니아"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "솔로몬 제도"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "소말리아"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "남아프리카공화국"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "사우스조지아 사우스샌드위치 제도"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "스페인"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "스리랑카"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "수단"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "수리남"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "스발바르 얀마옌 제도"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "스와질란드"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "스웨덴"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "스위스"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "시리아 아랍 공화국"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "타지키스탄"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "탄자니아"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "타이"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "통티모르"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "토고"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "토켈라우"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "통가"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "트리니다드토바고"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "튀니지"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "터키"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "투르크메니스탄"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "터크스 케이커스 제도"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "투발루"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "우간다"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "우크라이나"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "아랍에미리트"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "영국"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "미국"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "미국령 군소 제도"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "우루과이"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "우즈베키스탄"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "바누아투"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "베네수엘라"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "베트남"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "영국려여 버진 제도"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "미국령 버진아일랜드"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "월리스푸투나제도"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "서사하라"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "예멘"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "잠비아"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "짐바브웨"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "실행중인 데몬이 없습니다"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "파일이름"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "순위"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "파일 선택"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "폴더 선택"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ".torrent 파일 저장"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "토런트 파일"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "모든 파일"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "서버:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "토런트"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "알수 없는 파일"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ".torrent 파일 선택"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "알수 없는 URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "다운로드 실패"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "상세 정보:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "사용자 이름:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "암호:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "사용자 지정"
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "연결되지 않음"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT 노드"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "예"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "아니오"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "우선순위"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "상태(_S)"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "상세 정보(_D)"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "파일(_L)"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "피어(_P)"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "옵션(_O)"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "무제한"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "다운"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "업"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "오프라인"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "온라인"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "연결됨"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "호스트"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "호스트 추가 오류"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "사용자이름"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "수준"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "사용"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "부가 기능"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "부가 기능 선택"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "부가 기능 에그"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "트래커"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "없음"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "관리"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "꼬리표"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "미지정"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " 토런트 대기열"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " 토런트 대기열"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "무제한으로 설정"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "켬"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "끔"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "사용 안함"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "주소"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "클라이언트"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "토런트 생성중"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "토런트 대기열"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "제거(_R)"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "자동으로 토런트 추가 & 연결"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "파일(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "토런트 추가(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "토런트 생성(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "종료(_Q)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "편집(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "연결 관리자(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "토런트(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "보기(_V)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "도구 모음(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "탐색창(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "상태표시줄(_B)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "탭(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "열(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "탐색창(_I)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "대상이 없어도 표시(_Z)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "트래커 목록 표시(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "도움말(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "자주 묻는 질문"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "토런트 추가"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "토런트 추가"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "토런트 제거"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "토런트 제거"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "선택된 토런트 중지"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "중지"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "선택된 토런트 재시작"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "재시작"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "토런트 대기순위 높이기"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "대기순위 높이기"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "토런트 대기순위 낮추기"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "대기순위 낮추기"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "기본 설정"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "연결 관리자"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "강제"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "비활성"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "핸드쉐이크"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "모두 허용"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "창 제목에 세션 속도 표시"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "시스템 알림 영역에 아이콘 표시"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "닫으면 알림 영역으로 최소화"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "알림 영역에서 시작"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "알림 영역에 있을때 암호로 보호"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "완료되면 다음 위치로 옮김:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "다음 위치로 .torrent 파일 복사:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "기본 다운로드 위치:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "토런트의 처음과 마지막 조각을 우선함"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "토런트에 포함된 파일의 조각들중 처음과 마지막 조각을 더 우선하여 다운로드합니다"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "중지된 상태로 토런트 추가"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "항상 보이기"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "대화상자에 포커스를 맞춤"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "허용할 최대 연결 개수 입니다. 무제한은 -1로 설정."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "연결:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "전체 토런트의 최대 업로드 슬롯수입니다. 무제한은 -1로 설정."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "전체 토런트의 최고 다운로드 속도입니다. 무제한은 -1로 설정."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "다운로드 속도:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "전체 토런트의 최고 업로드 속도입니다. 무제한은 -1로 설정."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "업로드 속도:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "로컬 네트워크에서는 제한을 무시"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "IP 오버헤드의 비율을 제한"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr "체크하면 비율 제한 장치에 의해, 예상되는 TCP/IP 오버헤드를 포함한 총 소통량이 제한을 초과하지 않도록 합니다."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "토런트 하나당 최대 업로드 슬롯수입니다. 무제한은 -1로 설정."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "토런트 하나당 연결 가능한 최대 개수입니다. 무제한은 -1로 설정."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "무작위"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "활성 포트:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "포트 활성화 검사"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "범위:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "~"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "수준:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "암호화"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "범용 플러그 앤 플레이"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT 포트 맵핑 프로토콜"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "피어 교환"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery로 당신과 동일한 네트워크에 속한 피어를 찾을 수 있습니다."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "해시 테이블을 분산하면 활성 연결수를 향상시킬수 있습니다."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "피어 TOS 바이트:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "호스트명:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "포트:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "캐시 크기 (16 KiB 블럭):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr "쓰기 캐시는 마지막으로 캐시된 조각을 기록한후 수초가 경과되면 강제로 디스크로부터 해제됩니다. 60초가 기본값입니다."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "캐시 해제 (초):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "설정"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "세션이 시작된 이후 디스크에 기록한 16 KiB 블럭의 총 개수."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "기록한 블럭 개수:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "세션이 시작된 이후 수행된 쓰기 작업의 총 횟수."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "쓰기 횟수:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"비율 (기록한_블럭_개수 - 쓰기_횟수) / 기록한_블럭_개수는 전체 쓰기 작업중 쓰기 작업으로 저장한 횟수를 나타냅니다. 즉 쓰기 "
+"캐시를 위한 일종의 캐시 적중률."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "쓰기 캐시 적중률:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr "비트토런트 엔진(피어들)의 요청으로 디스크나 캐시로부터 전달받은 블럭의 개수."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "읽기 블럭 개수:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "캐시에서 전달 받은 블럭의 개수."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "사용된 읽은 블럭 개수:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "읽기 캐시의 캐시 적중률."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "읽기 캐시 적중률:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "세션이 시작된 이후 수행된 읽기 작업의 총 횟수."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "읽기 횟수:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr "디스크 캐시에 존재하는 16KiB 블럭의 개수. 읽기와 쓰기 캐시가 모두 포함되어 있습니다."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "캐시 크기:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "읽기 캐시 크기:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Deluge의 개선을 돕기 위해 Python과 pyGTK의 버전, OS와 프로세서의 종류를 제작자에게 보냅니다. 이외의 어떠한 정보도 "
+"전송하지 않습니다."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "네, 익명으로 통계를 보내겠습니다."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "위치:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr "만약 Deluge가 이 위치에서 데이터베이스 파일을 찾지 못하면 차선으로 DNS를 이용하여 피어의 국가 결정합니다."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "데몬 포트:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "포트"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "원격 접속 허용"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "연결 수"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "정기적으로 웹사이트를 확인하여 새로운 배포판이 있는지 확인"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "버전:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "저작자:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "홈페이지:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "저작자 이메일:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "정보"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "피어 추가"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "호스트이름:포트"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>일반</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "취소"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "추가"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "제거"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "해시정보 추가"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "해시정보:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "트래커:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "호스트 추가"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "설명:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "새로운 릴리즈"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "웹사이트로 이동(_G)"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "다음부터 이 대화상자를 보이지 않음"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "이름:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "설명:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "완료되면 옮김:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "다음 비율에서 배포 중지:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "비율에 도달하면 제거"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "트래커 수정(_E)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "최상단"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "최하단"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "토런트 추가"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "URL(_U)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "해시 정보(_H)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "중지된 상태로 추가(_P)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "처음/마지막 조각을 우선"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "전체에 적용"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "기본값으로 되돌리기"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Deluge 표시(_S)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "다운로드 속도 제한(_D)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "업로드 속도 제한(_U)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "데몬 끝내기 & 종료"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "트래커 수정"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "이 IP를 피어로 추가"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "트래커 수정"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "트래커:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "원격 경로 입력"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "경로:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "토런트 생성"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "폴더(_D)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "원격 경로(_R)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "파일"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "웹배포"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "조각의 크기:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "비공개 플래그 설정"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "이 토런트를 세션에 추가"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "옵션"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ".torrent 파일 저장"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "재시작(_M)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "선택된 토런트 재시작."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "옵션(_I)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "대기 순위(_Q)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "트래커 업데이트(_U)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "토런트 제거(_R)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "강제 재검사(_F)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "라벨"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "모두 선택(_S)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "모두 중지(_P)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "모두 재시작(_M)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "연결 제한(_C)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "업로드 슬롯 제한(_S)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "자동 관리(_A)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "트래커 추가"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URL로 추가"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "모두 펼치기(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "명령"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "암호"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "처음"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "마지막"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "무작위 포트 사용"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "들여오기"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "내보내기"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "최대 연결수"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "최대 업로드 슬롯수"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "최대 단방향 연결수"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "최대 초당 연결 시도 횟수"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "IP 오버헤드 비율 제한"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "공유 비율"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "종류"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "적용"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP list (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "차단목록"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "리더가 올바르지 않습니다."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "매직 코드가 올바르지 않습니다."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "버전이 올바르지 않습니다."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "일"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "목록을 갱신할 주기:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "시작시 차단목록 가져오기"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>설정</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "필요한 경우에만 차단목록 파일을 다운로드하여 가져옵니다."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "확인후 다운로드하여 가져오기"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "새로운 차단목록 파일을 다운로드하여 가져옵니다."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "무조건 다운로드하여 가져오기"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "차단목록은 최신입니다"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>옵션</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "종류:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "날짜:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "파일 크기:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>정보</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "토런트 완료"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "토런트 추가"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "실행"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "조건"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>명령 추가</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>명령</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "폴더 선택"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "최고 업로드 속도:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "최대 연결수:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "최대 업로드 슬롯수:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "최고 다운로드 속도:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>대역폭</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>대기열</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "초"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "웹 인터페이스 사용"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL 사용"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "수신 대기 포트:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "잘못된 라벨, 유효한 문자:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "빈 라벨"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "이미 존재하는 라벨입니다"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "알 수 없는 라벨"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "알 수 없는 토런트"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "라벨 옵션(_O)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "라벨 제거(_R)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "라벨 추가(_A)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "라벨 옵션"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "라벨"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>라벨 옵션</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "개개의 토런트에 최대 설정 사용:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "최대"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "대기열 설정 사용:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(트래커당 한 줄)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "자동으로 라벨 적용:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "라벨 추가"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>라벨 추가</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>탐색창에서 라벨을 추가, 수정, 제거할 수 있습니다. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>라벨</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "여기에 풀기:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "토런트 이름으로 하위 폴더 생성"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr "토런트의 이름으로 하위 폴더를 생성하고 생성된 폴더에다 압축을 해제합니다."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "다운로드 제한:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "업로드 제한:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "활성 토런트 수:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>저속 설정</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "로그아웃"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "저장"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "호스트:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "이동"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "로그인"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "최대 연결수 설정"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "다운로드 속도"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "최고 다운로드 속도 설정"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "업로드 속도"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "최대 업로드 속도 설정"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "프로토콜 소통량 다운로드/업로드"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "연결"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "필터"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "업/다운 속도 제한"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "업/다운 속도 제한"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "연결 제한"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "업로드 슬롯 제한"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "추적자 업데이트"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "강제 재검사"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "상세 정보"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "일반"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "비공개"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "적용"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "새 버전이 배포되면 알림"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "최대 연결 개수:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "최고 다운로드 속도 (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "최고 업로드 속도 (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "최대 단방향 연결 개수:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "최대 초당 연결 시도 횟수:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "최대 업로드 슬롯 수:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "서버"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "새로 고침"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "파일"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "중지된 상태로 추가"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "다운로드"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ku.po b/deluge/i18n/ku.po
new file mode 100644
index 0000000..e07b61e
--- /dev/null
+++ b/deluge/i18n/ku.po
@@ -0,0 +1,6164 @@
+# Kurdish translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Kurdish <ku@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nav"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Mezinahî"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Leza Daxistinê"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Daxistin"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Tor"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Yên Din"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Pêvek"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Şîfre:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Wekî din..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Hûragahî"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Bêsînor"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Jêr"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Jor"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Navê bikarhêner"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Pel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "Torrentê _lêzêde bike"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Derketin"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Sererastkirin"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Nîşandan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Darikê amûran"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Sitûn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Alîkarî"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Torrentê lêzêde bike"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Torrentê Rake"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Behndan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Bidomîne"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Vebijark"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Ji:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Ast:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Lêzêdekirin"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Rakirin"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Pel"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Torrentê Rake"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Şîfre"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Peldankekê Hilbijêre"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Kîtekît"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Pêşkêşker"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ky.po b/deluge/i18n/ky.po
new file mode 100644
index 0000000..9391ed8
--- /dev/null
+++ b/deluge/i18n/ky.po
@@ -0,0 +1,6164 @@
+# Kirghiz translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Kirghiz <ky@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Ката"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Эскертүү"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/la.po b/deluge/i18n/la.po
new file mode 100644
index 0000000..a4248af
--- /dev/null
+++ b/deluge/i18n/la.po
@@ -0,0 +1,6164 @@
+# Latin translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Latin <la@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nomen"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Magnitudo"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Socii"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Omna data"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Sic"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Non"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Emptor"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocitas arcessendi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocitas dandi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Coniunctiones"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Arcessere"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/languages.py b/deluge/i18n/languages.py
new file mode 100644
index 0000000..5673c71
--- /dev/null
+++ b/deluge/i18n/languages.py
@@ -0,0 +1,114 @@
+#
+# This file is public domain.
+#
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'en-us'
+
+
+# Deferred translation
+def _(message):
+ return message
+
+
+# Languages we provide translations for, out of the box.
+LANGUAGES = {
+ 'af': _('Afrikaans'),
+ 'ar': _('Arabic'),
+ 'ast': _('Asturian'),
+ 'az': _('Azerbaijani'),
+ 'bg': _('Bulgarian'),
+ 'be': _('Belarusian'),
+ 'bn': _('Bengali'),
+ 'br': _('Breton'),
+ 'bs': _('Bosnian'),
+ 'ca': _('Catalan'),
+ 'cs': _('Czech'),
+ 'cy': _('Welsh'),
+ 'da': _('Danish'),
+ 'de': _('German'),
+ 'el': _('Greek'),
+ 'en': _('English'),
+ 'en_AU': _('English (Australia)'),
+ 'en_CA': _('English (Canada)'),
+ 'en_GB': _('English (United Kingdom)'),
+ 'eo': _('Esperanto'),
+ 'es': _('Spanish'),
+ 'es-ar': _('Argentinian Spanish'),
+ 'es-mx': _('Mexican Spanish'),
+ 'es-ni': _('Nicaraguan Spanish'),
+ 'es-ve': _('Venezuelan Spanish'),
+ 'et': _('Estonian'),
+ 'eu': _('Basque'),
+ 'fa': _('Persian'),
+ 'fi': _('Finnish'),
+ 'fr': _('French'),
+ 'fy': _('Frisian'),
+ 'ga': _('Irish'),
+ 'gl': _('Galician'),
+ 'he': _('Hebrew'),
+ 'hi': _('Hindi'),
+ 'hr': _('Croatian'),
+ 'hu': _('Hungarian'),
+ 'ia': _('Interlingua'),
+ 'id': _('Indonesian'),
+ 'is': _('Icelandic'),
+ 'it': _('Italian'),
+ 'iu': _('Inuktitut'),
+ 'ja': _('Japanese'),
+ 'ka': _('Georgian'),
+ 'kk': _('Kazakh'),
+ 'km': _('Khmer'),
+ 'kn': _('Kannada'),
+ 'ko': _('Korean'),
+ 'ku': _('Kurdish'),
+ 'la': _('Latin'),
+ 'lb': _('Luxembourgish'),
+ 'lt': _('Lithuanian'),
+ 'lv': _('Latvian'),
+ 'mk': _('Macedonian'),
+ 'ml': _('Malayalam'),
+ 'mn': _('Mongolian'),
+ 'ms': _('Mayaly'),
+ 'my': _('Burmese'),
+ 'nb': _('Norwegian Bokmal'),
+ 'ne': _('Nepali'),
+ 'nds': _('Low German'),
+ 'nl': _('Dutch'),
+ 'nn': _('Norwegian Nynorsk'),
+ 'os': _('Ossetic'),
+ 'pa': _('Punjabi'),
+ 'pl': _('Polish'),
+ 'pms': _('Piedmontese'),
+ 'pt': _('Portuguese'),
+ 'pt_BR': _('Brazilian Portuguese'),
+ 'ro': _('Romanian'),
+ 'ru': _('Russian'),
+ 'sk': _('Slovak'),
+ 'sl': _('Slovenian'),
+ 'si': _('Sinhalese'),
+ 'sq': _('Albanian'),
+ 'sr': _('Serbian'),
+ 'sr-latn': _('Serbian Latin'),
+ 'sv': _('Swedish'),
+ 'sw': _('Swahili'),
+ 'ta': _('Tamil'),
+ 'te': _('Telugu'),
+ 'th': _('Thai'),
+ 'tl': _('Tagalog'),
+ 'tlh': _('Klingon'),
+ 'tr': _('Turkish'),
+ 'tt': _('Tatar'),
+ 'udm': _('Udmurt'),
+ 'uk': _('Ukrainian'),
+ 'ur': _('Urdu'),
+ 'vi': _('Vietnamese'),
+ 'zh_CN': _('Chinese (Simplified)'),
+ 'zh_HK': _('Chinese (Hong Kong)'),
+ 'zh-hans': _('Simplified Chinese'),
+ 'zh-hant': _('Traditional Chinese'),
+ 'zh_TW': _('Chinese (Taiwan)'),
+}
+
+del _
diff --git a/deluge/i18n/lb.po b/deluge/i18n/lb.po
new file mode 100644
index 0000000..21b4fe1
--- /dev/null
+++ b/deluge/i18n/lb.po
@@ -0,0 +1,6164 @@
+# Luxembourgish translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Luxembourgish <lb@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Allgemeng</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Astellungen</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent fäerdeg"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent bäigefügt"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Ausféieren"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Event"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Befehl bäifügen</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Ën Dossier"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Web UI aktivéieren"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL aktivéieren"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limit beim Roflueden:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limit beim héichlueden:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktive Torrents"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Lues Astellungen</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/lt.po b/deluge/i18n/lt.po
new file mode 100644
index 0000000..24dd860
--- /dev/null
+++ b/deluge/i18n/lt.po
@@ -0,0 +1,6224 @@
+# Lithuanian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Lithuanian <lt@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Visi"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktyvūs"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Tikrinama"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Parsiunčiama"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Skleidžiama"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pristabdyta"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Eilėje"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Klaida"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Pavadinimas"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Eiga"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Būsena"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Dydis"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Parsiųsta"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Išsiųsta"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Santykis"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Atsiuntimo greitis"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Išsiuntimo greitis"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Parsiuntimo riba"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Išsiuntimo riba"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Siuntėjai"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Pasiekiamumas"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Pridėta"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Sekimo serveris"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Likęs laikas"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Pirmenybė pirmai/paskutiniai daliai"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Valdoma automatiškai"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Dalys"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Dėmesio!"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Atnaujinimas sėkmingas"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Atnaujinimas nusiųstas"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Išvaizda"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Atsiuntimai"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Duomenų srautas"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Eilė"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Tinklas"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Tarpinis serveris"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Podėlis"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Kita"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Tarnyba"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Įskiepiai"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistanas"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Alando salos"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanija"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Alžyras"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikos Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andora"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Angilija"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktis"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antikva ir Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armėnija"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australija"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austrija"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaidžanas"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamai"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bachreinas"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladešas"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbadosas"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Baltarusija"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgija"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belizas"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Beninas"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudai"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Butanas"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivija"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnija ir Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botsvana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Buvė sala"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazilija"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Indijos vandenyno britų sritis"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunėjaus Darusalamas"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgarija"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundis"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerūnas"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Žaliasis Kyšulys"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kaimanų salos"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Centrinės Afrikos Respublika"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Čadas"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Čilė"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kinija"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Kalėdų sala"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosų (Keelingo) salos"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbija"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komorai"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongas"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo Demokratinė Respublika"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Kuko salos"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kosta Rika"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Dramblio Kaulo Krantas"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatija"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Kipras"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Čekijos Respublika"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danija"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Džibutis"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikos Respublika"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekvadoras"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egiptas"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Salvadoras"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Pusiaujo Gvinėja"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrėja"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estija"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopija"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklando (Malvinų) salos"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Farerų salos"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidžis"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Suomija"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Prancūzija"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Prancūzijos Gviana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Prancūzijos Polinezija"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Prancūzijos pietų ir antarkties sritys"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabonas"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambija"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gruzija"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Vokietija"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Gana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltaras"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Graikija"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grenlandija"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Gvadelupė"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guamas"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Gvatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Gernsis"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Gvinėja"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Bisau-Gvinėja"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Gajana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haitis"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heardo ir McDonaldo salos"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Šventasis Sostas (Vatikano Miesto Valstybė)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Hondūras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Honkongas"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Vengrija"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islandija"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indija"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonezija"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Irano Islamo Respublika"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irakas"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Airija"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Meno sala"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Izraelis"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italija"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaika"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japonija"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Džersis"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordanija"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazachija"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenija"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribatis"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korėjos Liaudies Demokratinė Respublika"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korėjos Respublika"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuveitas"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgizija"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laoso Liaudies Demokratinė Respublika"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvija"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanas"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotas"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberija"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libija"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Lichtenšteinas"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lietuva"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Liuksemburgas"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonija, buvusi Jugoslavijos Respublika"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskaras"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malavis"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaizija"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldyvai"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Malis"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Maršalo salos"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinika"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritanija"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauricijus"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Majotas"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Meksika"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronezijos Federacinės Valstijos"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monakas"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolija"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Juodkalnija"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montseratas"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokas"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambikas"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Mianmaras"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibija"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepalas"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Olandija"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Olandijos Antilai"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Naujoji Kaledonija"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Naujoji Zelandija"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragva"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Nigeris"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigerija"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niujė"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolko sala"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Šiaurės Marianų salos"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norvegija"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omanas"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistanas"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinos teritorija, okupuota"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Naujoji Gvinėja"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paragvajus"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipinai"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitkernas"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Lenkija"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugalija"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rikas"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Kataras"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunionas"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumunija"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Rusijos Federacija"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Švento Baltramiejaus sala"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Šv. Elenos sala"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Sent Kitsas ir Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Šventoji Liucija"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Šventasis Martynas"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Sen Pjeras ir Mikelonas"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Šv. Vincentas ir Grenadinai"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marinas"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "San Tomė ir Prinsipė"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudo Arabija"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegalas"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbija"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seišeliai"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Siera Leonė"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapūras"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakija"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovėnija"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Saliamono salos"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalis"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Pietų Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Pietų Gruzija ir pietų Sandvičo salos"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Ispanija"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Šri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudanas"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinamas"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbardo ir Jan Majen salos"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Svazilendas"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Švedija"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Šveicarija"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Sirijos Arabų Respublika"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadžikistanas"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzanijos Jungtinė Respublika"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tailandas"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Rytų Timoras"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togas"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidadas ir Tobagas"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisas"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkija"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmėnija"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Terkso ir Kaikoso salos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Jungtiniai Arabų Emyratai"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Jungtinė Karalystė"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Jungtinės Amerikos Valstijos"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "JAV mažosios aplinkinės salos"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Urugvajus"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekija"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venesuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnamas"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Mergelių salos, Jungtinė Karalystė"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Mergelių salos, JAV"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Volisas ir Futūna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Vakarų Sachara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemenas"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambija"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabvė"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Tarnyba nepaleista"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Failo vardas"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Sujungėjas"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Pasirinkite failą"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Pasirinkite aplanką"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Išsaugoti .torrent failą"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torentų failai"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Visi failai"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"„Peer-to-peer“ failų dalinimosi programa\n"
+"naudojanti BitTorrent protokolą."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klientas:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Dabartiniai kūrėjai:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Ansktesni kūrėjai ir tie kurie prisidėjo:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Serveris:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torentas"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Netinkamas failas"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Pasirinkite .torrent failą"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Netinkamas URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "netinkamas URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Parsiunčiama..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Parsiųsti nepavyko"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Parsiųsti nepavyko:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Išsamiau:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Naudotojo vardas:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Slaptažodis:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Kita..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Neprisijungta"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT mazgai"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Laisva disko vieta"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Taip"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Ne"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritetas"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Būsena"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Išsamiau"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fai_lai"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "Siuntėjai"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Parinktys"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Neprisijungta..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Neribojama"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Parsiuntimas"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Išsiuntimas"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Atsijungęs"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Prisijungęs"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Prisijungta"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Būsena"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Mazgas"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versija"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Paleisti tarnybą"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Sustabdyti tarnybą"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Tarnybos paleisti nepavyko!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Klaida pridedant kompiuterį"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Naudotojas"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Lygis"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Įjungtas"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Įskiepis"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Pasirinkite įskiepį"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Įskiepio priedai"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Būsenos"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Sekimo serveriai"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Joks"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administratorius"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Žymės"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Nėra žymos"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Kliento versija</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torentai eilėje"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torentas eilėje"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Nustatyti neribojamą"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Įjungta"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Išjungta"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Išjungti"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresas"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klientas"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Torento kūrimas"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torentai eilėje"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Pašalinti"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automatiškai įkelti torentus prisijungus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Failas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Pridėti torentą"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "Su_kurti torentą"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Baigti ir _išjungti tarnybą"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "Iš_eiti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Keisti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Susijungimų valdymas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torentas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Rodymas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Įrankių _juosta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "Šoninė _juosta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Būsenos _juosta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Kortelės"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Stulpeliai"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Šoninė _juosta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Rodyti _tuščias kategorijas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Rodyti _sekimo serverius"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Žinynas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Namų puslapis"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_DUK"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Dažniausiai užduodami klausimai"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Bendruomenė"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Pridėti torentą"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Pridėti torentą"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Pašalinti torentą"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Pašalinti torentą"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Sustabdyti pasirinktus torentus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pristabdyti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Pratęsti pasirinktus torentus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Pratęsti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Perkelti torentą eilėje aukštyn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Eilėje aukštyn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Perkelti torentą eilėje žemyn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Eilėje žemyn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Nustatymai"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Susijungimų valdymas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Priverstinis"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Išjungtas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Susijungimo patvirtinimas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Vienas iš galimų"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Rodyti sesijos greitį lango pavadinime"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Pridedant torrent fokusuoti langą"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Įjungti sistemos dėklo piktogramą"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Užveriant nukelti į sistemos dėklą"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Paleisti sistemos dėkle"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Apsaugoti sistemos dėklą slaptažodžiu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Parsiųstus failus perkelti į:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopijuoti .torrent failus į:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Šalinant pašalinti ir torrent failo kopiją"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Pašalinti „torrent“ failo kopiją, kuri buvo sukurta pašalinus torrentą"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Parsiųsti į:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Padidinti pirmų ir paskutinių torento dalių prioritetą"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Padidinti pirmų ir paskutinių torento failo dalių prioritetą"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Torentus pridėti pristabdytoje būsenoje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Visada rodyti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Parodyti virš kitų langų"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Maksimalus susijungimų kiekis. „-1“ yra neribotas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Susijungimai:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "Maks. išsiuntimo kanalų kiekis visiems torentams. -1 yra neribotas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "Maks. parsiuntimo greitis visiems torentams. -1 yra neribotas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Parsiuntimo greitis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "Maksimalus išsiuntimo greitis visiems torentams. „-1“ yra neribotas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Išsiuntimo greitis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Nepaisyti vietinio tinklo apribojimų"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Greičio limito IP išlaidos"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Jei pažymėta, numatomos TCP/IP išlaidos yra atimamos iš greičio limitų, kad "
+"būtų išvengta visuotinių srauto limitų."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Maks. išsiuntimo kanalų kiekis vienam torentui. -1 yra neribotas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Maks. susijungimų kiekis vienam torentui. -1 yra neribotas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Atsitiktinis"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktyvus prievadas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Patikrinti aktyvų prievadą"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Nuo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Iki:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Lygis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Šifravimas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT prievadų peradresavimas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Keitimasis siuntėjais"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"Vietinių tarnybų paieška randa siuntėjus ir skleidėjus vietiniame tinkle."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "DHT gali padidinti susijungimų ir šaltinių skaičių."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Siuntėjo TOS baitas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Serverio pavadinimas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Prievadas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Podėlio dydis (16 KiB dydžio atkarpomis)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Sekundžių skaičius, rodantis, kiek laiko praeis nuo paskutinės dalies rašymo "
+"į atmintį iki tol, kol ji bus įrašyta į diską. Pagal nutylėjimą 60 sekundžių."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Podėlio galiojimo laikas (sekundėmis):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Nustatymai"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Bendras 16KiB dydžio atkarpų skaičius, įrašytų į diską nuo tada, kai ši "
+"sesija prasidėjo."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Įrašyta atkarpų:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Skaičius nuo sesijos pradžios padarytų rašymo veiksmų."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Rašymo veiksmų:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Santykis „(įrašyta atkarpų - rašymų) / įrašyta atkarpų“ parodo išsaugotų "
+"rašymo veiksmų santykį su visais išsaugotais rašymo veiksmais iš visų rašymo "
+"operacijų."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Rašymo podėlio užklausų santykis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Užklaustų iš torent variklio blokų kiekis (iš siuntėjų), kurie buvo "
+"aptarnauti iš disko ar podėlio."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Perskaityta atkarpų:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Blokų, aptarnautų iš podėlio, kiekis."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blokų skaitymo užklausos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Podėlio užklausų reitingas skaitymo podėliui."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Skaitymo podėlio užklausų reitingas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Bendras atliktų skaitymo operacijų skaičius nuo seanso pradžios."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Skaitymo veiksmų:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Šiuo metu podėlyje esančių 16 KB blokų skaičius, įskaitant ir skaitymo, "
+"rašymo podėlį."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Podėlio dydis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Skaitymo podėlio dydis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Padėkite mums dar labiau patobulinti Deluge informuodami apie jūsų naudojamą "
+"Python versiją, PyGTK versiją, operacinės sistemos ir procesoriaus tipus. "
+"Jokia kita informacija nebus siunčiama."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Taip, siųsti anoniminę statistiką"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Vieta:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Jei Deluge nepavyks rasti duomenų bazės bylos šioje vietoje, ji naudosis DNS "
+"paslauga vartotojo šaliai nustatyti."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Tarnybos prievadas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Prievadas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Leisti nuotolinius prisijungimus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Susijungimai"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Periodiškai ieškoti atnaujinimų interneto puslapyje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versija:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autorius:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Namų puslapis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Autoriaus el. paštas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informacija"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Pridėti dalyvį"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "serveris:prievadas"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Bendra</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Atšaukti"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Įkelti"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Pašalinti"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Pridėti maišos kodą"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Informacijos maiša:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Sekimo serveriai:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Pridėti serverį"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Paskirties vieta:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nauja versija"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Eiti į puslapį"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Ateityje neberodyti šio lango"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Pavadinimas:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Komentarai:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Perkelti baigtus:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Baigti skleisti pasiekus santykį:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Pašalinti pasiekus santykį"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Keisti sekimo serverius"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Viršus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Apačia"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Pridėti torentus"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "_Informacijos maiša"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Įkelti susta_bdytoje būsenoje"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritetas pirmoms/paskutinėms dalims"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Pritaikyti visiems"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Atstatyti pradines parinktis"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Rodyti _Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Pa_rsiuntimo greičio riba"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Išsiuntimo greičio riba"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Išeiti ir sustabdyti tarnybą"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Keisti sekimo serverius"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Pridėti siuntėją"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Įkelti dalyvį pagal jo IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Keisti sekimo serverį"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Sekimo serveris:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Įveskite nutolusį adresą"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Kelias:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Sukurti Torentą"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Aplankas"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Nutolęs adresas"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Failai"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Žiniatinkliu platinami failai"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Dalies dydis:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Nustatyti „privačiu“"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Įkelti šį torentą į siuntimus"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Parinktys"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Išsaugoti .torrent kaip"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pristabdyti"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Pra_tęsti"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Pratęsti pasirinktus torentus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Par_inktys"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Eilė"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Atnaujinti serverį"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Pašalinti to_rentą"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Priverstinai patikrinti"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "žyma"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Pasirinkti visus"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Sustabdyti visus"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Pra_tęsti visus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Susijungimų kiekio riba"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Išsiuntimo _kanalų riba"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "Valdoma _automatiškai"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Pridėti sekimo serverį"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Pridėti URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Išskleisti visus"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent klientas"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent klientas"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Parsiųsti ir dalintis failais per BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Komanda"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Slaptažodis"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Iš"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Į"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Naudoti atsitiktinius prievadus"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Įeinantis"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Išeinantis"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maks. susijungimų skaičius"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maks. išsiuntimo kanalų kiekis"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maks. dalinų susijungimų kiekis"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maks. prisijungimų skaičius per sekundę"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Greičio Limito IP išlaidos"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Dalinimosi santykis"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tipas"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Pritaikyti"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "eMule IP sąrašas (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer tekstas (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Tekstas (Nesuspaustas)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokuotų sąrašas"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Neteisinga pradžia"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Neteisingas magiškas kodas"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Neteisinga versija"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dienas (-ą)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Ieškoti naujo sąrašo kas:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Paleidžiant įkelti blokavimo sąrašą"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Nustatymai</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Jei reikia, parsiųsti blokavimo sąrašą ir importuoti failą."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Patikrinti parsiuntimą ir importuoti"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Parsiųsti naują blokavimo sąrašą ir jį importuoti."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Priverstinai parsiųsti ir importuoti"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blokavimo sąrašas yra naujausias"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Parinktys</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipas:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Failo dydis:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informacija</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torentas baigtas"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torentas pridėtas"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Vykdyti"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Įvykis"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Pridėti komandą</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Komandos</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Stebimas aplankas neegzistuoja."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Tokio kelio nėra."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Stebimo aplanko savybės"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Pasirinkite aplanką"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Įjungti šį stebimą aplanką"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Stebimas aplankas</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Pridėjus ištrinti .torrent"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Pridėjus, pridėti plėtinį:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".pridėta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent failo veiksmas</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Perkelti baigtą</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Žymė: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Žymė</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Pagrindinis"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maks. išsiuntimo greitis:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maks. susijungimų kiekis:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maks. išsiuntimo kanalų kiekis:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maks. parsiuntimo greitis:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Duomenų srautas</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automatiškai prižiūrimi:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Pridėti pristabdytą:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Įdėti į eilę:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Eilė</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Stebimi aplankai:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekundės"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge naudotojo sąsają neįdiegta, įdiekite ją\n"
+"ir bandykite dar kartą"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Įjungti web sąsają"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Įjungti SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Klausomas prievadas:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Neteisinga žymė, tinkami simboliai: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Išvalyti žymę"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Žymė jau yra"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Nežinoma žymė"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Nežinomas torentas"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Žymės _parinktys"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "P_ašalinti žymę"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Pridėti žymę"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Žymių parinktys"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Žymė"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Žymės nustatymai</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Pritaikyti torento maksimalias parinktis:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimumas"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Pritaikyti eilės parinktis:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(viena eilutė vienam serveriui)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Nustatyti žymę automatiškai:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Pridėti žymę"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Pridėti žymę</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Norėdami pakeisti, įkelti ar pašalinti žymes, naudokite šoninę juostą. "
+"</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Žymės</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Rodomas mirksintis pranešimas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Iššokantis pranešimas išjungtas."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Iššokantys pranešimai rodomi"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Garsinis pranešimas neįjungtas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame neįdiegtas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Garsinis pranešimas nepavyko %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Garsinis pranešimas sėkmingas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrentas parsiųstas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Pasirinkite garso failą"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Siunčiant pranešimo el. laišką įvyko klaida: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Pranešimo el. laiškas išsiųstas."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrentas „%(name)s“ parsiųstas"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Šis laiškas skirtas pranešti jums jog Deluge parsiuntė „%(name)s“, kuriame "
+"yra %(num_files)i failai.\n"
+"Norėdamik atsisakyti šių pranešimų, paprasčiausiai išjunkite pranešimus el. "
+"paštu, Deluge nustatymuose.\n"
+"\n"
+"Dėkui,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Mirksinti programų dėklo piktograma įgalinta"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Iššokantys langai įjungti"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Garsai įjungti"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI pranešimai</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Gavėjai</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Serveris reikalauja TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Pranešimai el. paštu</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Šis nustatymas nereiškia jog jūs tikrai gausite pranešimus apie kiekvieną "
+"įvykį."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Prenumeratos"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Garso derinimas"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Išskleisti į:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Sukurti poaplankį torento vardu"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Šis pasirinkimas leis sukurti torento vardo poaplankį pasirinktame "
+"išskleidimo aplanke ir sudėti išskleistus failus ten."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Parsisiuntimo riba:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Išsiuntimo riba:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktyvūs torentai:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Parsiunčiami:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Skleidžiami:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Lėtinantys nustatymai</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Atsijungti"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Išsaugoti"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Mazgas:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Perkelti"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Prisijungti"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Nustatyti maksimalų prisijungimų skaičių"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Parsiuntimo greitis"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Nustatyti didžiausią atsiuntimo greitį"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Išsiuntimo greitis"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Nustatyti didžiausią išsiuntimo greitį"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protokolo judėjimas Parsiuntimas/Išsiuntimas"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Prisijungti"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtrai"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Parsiuntimo Greičio Limitas"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Išsiuntimo Greičio Limitas"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Prisijungimo limitas"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Išsiuntimo Vietų Limitas"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Atnaujinti Trackerį"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Privalomai Pertikrinti"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Išsami informacija"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Bendri"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privatus"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Taip"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Perspėti apie atnaujinimus"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maks. prisijungimų kiekis:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maks. parsiuntimo greitis (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maks. išsiuntimo greitis (KiB/s)"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maks. dalinų susijungimų kiekis:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maks. bandymų susijungti kiekis per sekundę:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maks. išsiuntimo kanalų kiekis:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Serveris"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Atnaujinti"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Failas"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Įkelti kaip sustabdytą"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Siuntimas"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/lv.po b/deluge/i18n/lv.po
new file mode 100644
index 0000000..da35853
--- /dev/null
+++ b/deluge/i18n/lv.po
@@ -0,0 +1,6207 @@
+# Latvian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2022-08-03 16:14+0000\n"
+"Last-Translator: Coool <Unknown>\n"
+"Language-Team: Latvian <lv@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+"Iestatīt žurnāla līmeni (nežurnalēt, kļūda, brīdinājums, informācija, "
+"atkļūdošana)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Visi"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktīvs"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Pārbauda"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Lejupielādē"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Piedāvā"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pauzēts"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Gaida rindā"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Kļūda"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nosaukums"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progress"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Stāvoklis"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Izmērs"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Lejupielādēts"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Augšupielādēts"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Attiecība"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Lejupielādes ātrums"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Augšupielādes ātrums"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Apakšējā robeža"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Augšējā robeža"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Dalībnieki"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Pieej."
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Pievienots"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Trakeris"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Atlikušais laiks"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritāte sākumam/beigām"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automātiski pārvaldīts"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Gabaliņi"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Brīdinājums"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Ziņojums kārtībā"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Paziņojums nosūtīts"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Saskarne"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Lejupielādes"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Caurlaidība"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Rinda"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Tīkls"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Starpniekserveris"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Kešatmiņa"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Citi"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Serviss"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Spraudņi"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistāna"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Ālandu salas"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albānija"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Alžīrija"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikas Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andora"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Angilja"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktīda"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigva un Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentīna"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armēnija"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Austrālija"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austrija"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaidžāna"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamu salas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahreina"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladeša"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbadosa"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Baltkrievija"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Beļģija"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Beliza"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benina"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudu salas"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Butāna"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolīvija"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnija un Hercogovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botsvāna"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Buvē sala"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazīlija"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Indijas Okeāna Britu Teritorija"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Bruneja"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgārija"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkinafaso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerūna"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanāda"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kaboverde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kaimanu salas"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Centrālāfrikas Republika"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Čada"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Čīle"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Ķīna"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Ziemsvētku Sala"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosu (Kīlinga) Salas"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbija"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komoras"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo Demokrātiskā Republika"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Kuka salas"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kostarika"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Ziloņkaula krasts"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Horvātija"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Kipra"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Čehija"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dānija"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Džibutī"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikānas Republika"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekvadora"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Ēģipte"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Salvadora"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvatoriālā Gvineja"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritreja"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Igaunija"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopija"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Folklenda (Malvinu) Salas"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Fēru Salas"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidži"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Somija"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francija"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Franču Gviāna"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Franču Polinēzija"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Franču Dienvidu Teritorijas"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabona"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambija"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gruzija"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Vācija"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Gana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltārs"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grieķija"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grenlande"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Gvandelupa"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guāma"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Gvatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Gērnsija"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Gvineja"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Gvineja-Bisava"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Gajāna"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Hērda un Makdonalda salas"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vatikāns"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Hondurasa"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Honkonga"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungārija"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islande"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indija"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonēzija"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Irāna"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irāka"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Īrija"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Menas Sala"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Izraēla"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Itālija"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaika"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japāna"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Džērsija"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordānija"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazahstāna"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenija"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Ziemeļkoreja"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Dienvidkoreja"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuveita"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgizstāna"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laosa"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvija"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libāna"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libērija"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Lībija"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Lihtenšteina"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lietuva"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luksemburga"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Maķedonija"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskāra"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malavī"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaizija"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivu salas"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Māršala Salas"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinika"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritānija"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Maurīcija"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Majota"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Meksika"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronēzijas Federatīvās Valstis"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldāvija"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monāko"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolija"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Melnkalne"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Monserata"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroka"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambika"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Mjanma"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namībija"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepāla"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Nīderlande"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Nīderlandes Antiļu salas"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Jaunkaledonija"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Jaunzēlande"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragva"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Nigēra"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigērija"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolkas Sala"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Ziemeļu Marianas salas"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norvēģija"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omāna"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistāna"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestīna"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Jaungvineja"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paragvaja"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipīnas"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitkērna"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polija"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugāle"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puertoriko"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katara"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reinjona"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumānija"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Krievijas Federācija"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Svētā Bartalameja sala"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Sv. Helēnas sala"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts and Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Sentlūsija"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Senmartēna sala"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Senpjēra un Mikelona"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Sentvinsenta un Grenadīnas"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Sanmarīno"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Santome un Prinsipi"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saūda Arābija"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegāla"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbija"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seišeļu salas"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sjerraleone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapūra"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovākija"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovēnija"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Zālamana Salas"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somālija"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Dienvidāfrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Dienviddžordžija un Dienvidsendviču salas"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spānija"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Šrilanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudāna"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinama"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbāra un Jana Majena sala"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Svazilenda"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Zviedrija"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Šveice"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Sīrija"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadžikistāna"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzānija"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Taizeme"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Austrumtimora"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidāda un Tobāgo"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisija"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turcija"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistāna"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turku un Kaikosu Salas"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tivalī"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Apvienotie Arābu Emirāti"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Apvienotā Karaliste"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Savienotās Valstis"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Amerikas Savienoto Valstu mazās pieguļošās salas"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Urugvaja"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistāna"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venecuēla"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vjetnama"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Britu Virdžinu salas"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "ASV Virdžīnu Salas"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Volisa salas un Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Rietumsahāra"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemena"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambija"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabve"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Process ir neaktīvs"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Faila nosaukums"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Pakāpe"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Izvēlieties failu"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Izvēlieties mapi"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Saglabāt .torrent failu"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent faili"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Visi faili"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Ievadiet paroli, lai redzētu Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Ievadiet paroli, lai izietu no Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Rediģēt ceļu"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Izņemt ceļu"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Autortiesības %(year_start)s-%(year_end)s Deluge komanda"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Vienādranga failu apmaiņas programma,\n"
+"kura izmanto BitTorrent protokolu."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klients:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Pašreizējie izstrādātāji:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Iepriekšējie izstrādātāji vai atbalstītāji:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Serveris:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torents"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Nederīgs fails"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Izvēlieties .torrent failu"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Nederīga saite"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "nav derīga saite."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Lejupielādē..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Neizdevās lejupielādēt"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Neizdevās lejupielādēt:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Sīkāka informācija:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Lietotājvārds:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Parole:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Aizsargāts ar paroli"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Citi..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Nepievienots"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT mezgli"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Brīvā vieta diskā"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Jā"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nē"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritāte"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Visi"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Statuss"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Sīkāka informācija"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fai_li"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Dalībnieki"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opcijas"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Nav savienots..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Neierobežots"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Lejup"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Augšup"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Nesaistē"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Tiešsaistē"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Savienots"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Statuss"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Saimniekdators"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versija"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Sākt dzinēju"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Apturēt Dzinēju"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Nebija iespējams palaist dzinēju!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Kļūda, pievienojot saimnieku"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Lietotājvārds:"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Līmenis"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Aktivizēts"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Spraudnis"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Izvēlieties spraudni"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Eggs spraudnis"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Stāvoklis"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trakeri"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Nekas"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administrators"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiķetes"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Bez etiķetes"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Klienta versija</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torenti rindā"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " torrents rindā"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Neierobežot"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Ieslēgts"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Izslēgts"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Izslēgt"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adrese"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klients"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Veido torrentu"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torenti rindā"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Izņemt"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automātiski pievienot torentus pieslēdzoties"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fails"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Pievienot torentu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "Iz_veidot torentu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Iziet un _izslēgt dzinēju"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Aizvērt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "R_ediģēt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Savienojumu pārvaldnieks"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Skatīt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Rīkjosla"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sānjosla"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Stat_usa josla"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Šķirkļi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolonnas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Sānu _josla"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Rādīt tukšās sadaļas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Rādīt t_rakerus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Palīdzība"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Mājas lapa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_BUJ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Bieži uzdotie jautājumi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Kopiena"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Pievienot torentu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Pievienot torentu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Izņemt torentu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Izņemt torentu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pauzēt izvēlētos torrentus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pauzēt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Atsākt izvēlētos torentus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Atsākt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Pārvietot torentu augšup"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Pārvietot rindā uz augšu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Pārvietot torentu lejup"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Pārvietot rindā uz leju"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Iestatījumi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Savienojumu pārvaldnieks"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Piespiedu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Atslēgts"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Sasveicināšanās"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Jebkurš"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Rādīt sesijas ātrumu virsraksta joslā"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Fokusēt logu, kad pievieno torentu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Aktivizēt sistēmas joslas ikonu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Aizverot logu, minimizēt kā sistēmas joslas ikonu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Palaisties sistēmas joslā"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Aizsargāt sistēmas joslas ikonu ar paroli"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Pārvietot pabeigtos uz:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopēt .torrent failus uz:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Dzēst torenta faila kopiju, kad torents tiek izņemts"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Dzēst izveidoto torenta faila kopiju, kad torents tiek izņemts"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Saglabāt iekš:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioritāte ir torenta sākuma un beigu gabaliņiem"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+"Iestatīt augstāku prioritāti pirmajiem un pēdējiem torenta gabaliņiem"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Pievienot torentus pauzētā stāvoklī"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Rādīt vienmēr"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Fokusēt dialoglodziņu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Maksimālais savienojumu skaits. -1 nozīmē neierobežots."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Savienojumi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksimālais augšupielādes pieslēgvietu skaits. -1 nozīmē neierobežots."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Augšupielādes vietas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksimālais visu torrentu lejupielādes ātrums. -1 nozīmē neierobežots."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Lejupielādes ātrums:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksimālais kopējais visu torrentu augšupielādes ātrums. -1 nozīmē "
+"neierobežots."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Augšupielādes ātrums:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorēt ierobežojumus lokālā tīklā"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Ierobežot IP virstēriņu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Lai nepārsniegtu ātruma ierobežojumu, atskaitīt aptuveno TCP/IP virstēriņu "
+"no kopējā satiksmes limita."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Maksimālais augšupielādes pieslēgvietu skaits uz torrentu. -1 nozīmē "
+"neierobežots."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Maksimālais savienojumu skaits uz torrentu. -1 nozīmē neierobežots."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "Maksimālais augšupielādes ātrums uz torentu. -1 nozīmē neierobežots."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Nejaušs"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktīvais ports:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Pārbaudīt aktīvo portu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "No:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Līdz:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Līmenis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Šifrēšana"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Standarts Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Tīkla adrešu translēšanas protokols"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Dalībnieku datu apmaiņa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "Vietējo pakalpojumu atklājējs"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Lokālo pakalpojumu atklājējs atrod lokālos dalībniekus jūsu tīklā."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Dalītā kontrolsummu tabula var uzlabot kopējo aktīvo pieslēgumu skaitu."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Dalībnieka TOS baits:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Saimniekdatora nosaukums:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Ports:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Kešatmiņas izmērs (16 KiB blokos):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Sekunžu skaits kopš pēdējās ierakstīšanas no kešatmiņas diskā. "
+"Noklusējums:60 sekundes"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Kešatmiņas novecosana (sekundes):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Iestatījumi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "Kopējais 16KiB bloku skaits, kas ierakstīts kopš sesijas sākuma."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Bloki ierakstīti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Kopējais ieraksta operāciju veikšanu skaits kopš sesijas sākuma."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Rakstījumi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Attiecība (ierakstītie bloki - ierakstu reizes) / bloku ieraksti attēlo "
+"skaitu, kas ietaupīts ieraksta operācijās t.i. savdabīga kešatmiņas "
+"izmantošanas attiecība priekš ierakstīšanas kešatmiņas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Rakstīšanas kešatmiņas izmantošanas attiecība:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Bloku skaits, kas pieprasīti bittorenta dzinējam (no devējiem), kas "
+"pasniegti no diska vai kešatmiņas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Bloki nolasīti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Bloku skaits, kas pasniegti no kešatmiņas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Bloku lasīšanas izmantošana:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Kešatmiņas izmantošanas attieciba lasīšanas kešatmiņai."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Lasīšanas kešatmiņas izmantošanas attiecība:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Kopējais lasīšanās operāciju skaits kopš sesijas sākuma."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lasījumi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"16 KiB bloku skaits diska kešatmiņā. Ietver abus: gan lasīšanu, gan "
+"lasīšanas kešatmiņu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Kešatmiņas izmērs:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Lasīšanas kešatmiņas izmērs:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Palīdziet mums uzlabot Deluge, nosūtot mums savu Python versiju, PyGTK "
+"versiju, operētājsistēmas un procesora tipu. Nekāda cita informācija netiks "
+"nosūtīta."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Jā, lūdzu, nosūtīt anonīmu statistiku"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Atrašanās vieta:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Ja Deluge nevar atrast vietu datu bāzē, viņa izmanto DNS lai noteiktu valsti."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Servisa ports:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Ports"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Atļaut attālinātos pieslēgumus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Savienojumi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+"Periodiski pārbaudīt tīmekļa vietni, vai nav pieejama jaunāka versija"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versija:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autors:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Mājaslapa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Autora e-pasts:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Pievienot dalībnieku"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "saimniekdatora nosaukums:ports"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Vispārēji</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Ceļa izvēles tips"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Saglabāt ceļu"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Noklusētais ceļš"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Atcelt"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Pievienot"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Aizvākt"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Pievienot infosummu"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infosumma:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trakeri:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Pievienot saimniekdatoru"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Mērķis:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Jauns programmas laidiens"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Iet uz tīmekļa vietni"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Turpmāk nerādīt šo dialoglodziņu"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nosaukums:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Komentāri:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Pārvietot pabeigtos failus uz:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Pārtraukt dalīt, kad samērs:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Izņemt pēc samēra sasniegšanas"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "R_ediģēt trakerus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Augšā"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Apakšā"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Pievienot torentus"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_Saite"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Pievienot pauzētā stāvoklī"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritāte sākuma un beigu gabaliņiem"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Pielietot visiem"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Atgriezt uz noklusējuma"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Rādīt Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Lejupielā_des ātruma limits"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Augš_upielādes ātruma limits"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Iziešana un servisa slēgšana"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Rediģēt trakerus"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Pievienot dalībnieku"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Pievienot dalībnieku pēc tā IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Rediģēt trakeri"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Trakeris:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Ievadīt attālo ceļu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Ceļš:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Izveidot torentu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Mape"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Attālais ceļš"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Faili"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Tīmekļa devēji"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Gabaliņu izmērs:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Iestatīt privātā torenta karodziņu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Pievienot šo torentu sesijai"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opcijas"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Saglabāt .torrent kā"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pauzēt"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Atsākt"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Atsākt izvēlētos torentus."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opc_ijas"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Novietojums rindā"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Atja_unināt trakeri"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Izņemt torentu"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Piespiedu _failu pārbaude"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiķete"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Izvēlēties vi_sus"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pauzēt visus"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "_Atsākt visus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Savienojumu limits"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Augšupielādes _pieslēgvietu skaita limits:"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "Automātiski pārvaldīts"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Pievienot trakeri"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Pievienot saiti"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "Saite:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Izpl_est visu"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent klients"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent klients"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Lejupielādēt un dalīties ar failiem caur BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Komanda"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Parole"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "No"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Uz"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Izmantot nejaušus portus"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Ienākošs"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Izejošs"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maksimālais savienojumu skaits"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maksimālais augšupielādes slotu skaits"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maksimālais pusatvērto savienojumu skaits"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maksimālais savienošanās mēģinājumu skaits sekundē"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Noteikt IP pārpalikuma robežu"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Dalīšanas attiecība"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tips"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP saraksts (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer teksts (Zip formātā)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian teksts (nesaspiests)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Bloķēšanas saraksts"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Kļūdains sākums"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Kļūdains kods"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Kļūdaina versija"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "dienām"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Pārbaudīt, vai nav jauns saraksts, ik pēc:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importēt bloķēšanas sarakstu darbu uzsākot"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Iestatījumi</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Lejupielādēt un importēt bloķēšanas sarakstu, ja nepieciešams."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Pārbaudīt lejupielādi un importēt"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Lejupielādēt un importēt jaunu bloķēšanas sarakstu."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Piespiedu lejupielāde un imoportēšana"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Bloķēšanas saraksts ir atjaunināts"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opcijas</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tips:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Datums:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Faila izmērs:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informācija</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torents pabeigts"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torents pievienots"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torents izņemts"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Izpildīt"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Notikums"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Pievienot komandu</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Komandas</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Pievienot automātiski"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Ceļš"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Sekošanas mape neeksistē."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Norādītā vieta neeksistē."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Sekošanas mapes īpašības"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Izvēlēties mapi"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Aktivizēt sekošanu mapei"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Sekošanas mape</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Dzēst .torrent pēc pievienošanas"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Pievienot paplašinājumu pēc pievienošanas:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torenta faila darbības</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Pārvietot pabeigtos</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiķete: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiķete</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Galvenā"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maksimālais augšupielādes ātrums:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maksimālais savienojumu skaits:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maksimālais augšupielādes pieslēgvietu skaits:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maksimālais lejupielādes ātrums:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Caurlaidība</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automātiski pārvaldīts:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Pievienot pauzētu:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Rindā:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Rinda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Sekošanas mape:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekundes"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Tīmekļa saskarne"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Nav instalēta Deluge tīkla saskarne, lūdzu, instalējiet\n"
+"saskarni un mēģiniet vēlreiz."
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Aktivizēt tīmekļa saskarni"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Aktivizēt SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Izmantot portu:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Nederīga etiķete, izmantojiet rakstzīmes:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tukša etiķete"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Etiķete jau eksitē"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Nezināma etiķete"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Nezināms torents"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Etiķetes _opcijas"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Noņemt etiķeti"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Pievienot etiķeti"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Etiķetes opcijas"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiķete"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Etiķetes opcijas</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Pielietot torentu maksimālos iestatījumus:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimums"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Pielietot rindas iestatījumus:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 līnija katram trakerim)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automātiski pievienot etiķeti:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Pievienot etiķeti"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Pievienot etiķeti</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Izmantojiet sānjoslu, lai pievienotu, rediģētu vai noņemtu etiķetes. "
+"</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiķetes</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Paziņojumu mirgošana"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Izlecošais paziņojums nav aktivizēts."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Izlecošais paziņojums tiek rādīts"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Skaņas paziņojumi nav aktivizēti"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame nav instalēts"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Skaņas paziņojums neizdevās %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Skaņas paziņojums veiksmīgs"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Pabeigts torrents"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr "Torrents \"%(name)s\" ar %(num_files)i faili(em) ir lejupielādēts."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Paziņojumi"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Izvēlieties skaņas failu"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Gadījās kļūda, sūtot paziņojuma e-pastu: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Paziņojuma e-pasts nosūtīts."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Pabeigts \"%(name)s\" torrents"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Šis epasts paziņo ka Deluge pabeigusi \"%(name)s\", kas satur %(num_files)i "
+"datnes.\n"
+"Lai vairs nesaņemtu šādus paziņojumus, vienkārši izsledziet epasta "
+"paziņojumus Deluge's uzstādījumos.\n"
+"\n"
+"Paldies,\n"
+"Jūsu Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Aktivizēta sistēmas joslas ikonas mirgošana"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Aktivizēti izlecošie paziņojumi"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Skaņa aktivizēta"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Saskarnes paziņojumi</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Saņēmēji</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Serveris pieprasa TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-pasta paziņojumi</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Šī konfigurācija nenozīmē, ka tiešām saņemsiet paziņojumus par visiem šiem "
+"notikumiem."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Abonēšana"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Skaņu izvēle"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Atspiedējs"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Atspiest uz:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Izveidot apakšmapi ar torenta nosaukumu"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Izvēlētajā mapē tiks izveidota apakšmape ar torenta nosaukumu un tajā tiks "
+"izvietoti atspiestie faili."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Plānotājs"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Lejupielādes ierobežojums:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Augšupielādes ierobežojums:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktīvie torenti:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktīvas lejupielādes:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktīvas dalīšanas:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Lēnie iestatījumi</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Beigt darbu"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Saglabāt"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Saimniekdators:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Pārvietot"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Pieteikšanās"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Iestatīt maksimālo savienojumu skaitu"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Lejupielādes ātrums"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Iestatīt maksimālo lejupielādes ātrumu"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Augšupielādes ātrums"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Iestatīt maksimālo augšupielādes ātrumu"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Lejup/augšup protokola satiksme"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Pieslēgties"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtri"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "A/L ātruma robeža"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "A/L ātruma robeža"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Savienojumu limits"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Augšupielādes pieslēgvietu skaita robeža"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Atjaunot trakeri"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Piespiedu pārbaude"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Sīkāka informācija"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Vispārēji"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privāts"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Patiess"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Paziņot par jaunām versijām"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maksimālais savienojumu skaits:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maksimālais lejupielādes ātrums (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maksimālais augšupielādes ātrums (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maksimālais pusatvērto savienojumu skaits:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maksimālais savienošanās mēģinājumu skaits sekundē:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maksimālais augšupielādes pieslēgvietu skaits:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Serveris"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fails"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Pievienot apturētā stāvoklī"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Lejupielāde"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/mk.po b/deluge/i18n/mk.po
new file mode 100644
index 0000000..c660982
--- /dev/null
+++ b/deluge/i18n/mk.po
@@ -0,0 +1,6205 @@
+# Macedonian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Macedonian <mk@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "М"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Сите"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Активни"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Проверување"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Симнување"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Паузиран"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Во редица"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Грешка"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Име"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Напредок"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Состојба"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Големина"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Симнати"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Качени"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Сооднос"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Брзина на симнување"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Брзина на качување"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Ограничена брзината на симнување"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Ограничена брзината на качување"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Пријатели"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Достапно"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Додадено"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Следач"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ЕТА"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Приоритизирај Прв/Последен"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Автоматско менаџирање"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Предупредување"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Објавата е успешна"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Објавата е испратена"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Интерфејс"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Симнувања"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Проток"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Редица"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Мрежа"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Прокси"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Кеш"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Друго"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Даемон"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Приклучоци"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Авганистан"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Аландски острови"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Албанија"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Алжир"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Американска Самоа"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Андора"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Ангола"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ангвила"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Антарктик"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Антигва и Барбуда"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Аргентина"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Ерменија"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Аруба"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Австралија"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Австрија"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Азербејџан"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Бахами"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Бахреин"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Барбадос"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Белорусија"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Белгија"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Белизе"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Бенин"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Бермуда"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Боливија"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Босна и Херцеговина"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Боцвана"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Буве Остров"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Бразил"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Британско-индиска Океанска Територија"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Брунеи Дарусалам"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Бугарија"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Буркина Фасо"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Бурунди"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Камбоџа"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Камерун"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Канада"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Капе Верде"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Кајмански Острови"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Централно Афроканска Република"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Чад"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Чиле"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Кина"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Велигденски Острови"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Острови Кокос (Килинг)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Колумбија"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Коморски острови"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Конго"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Конго, Демократска Република"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Кук Острови"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Коста Рика"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Брег на Слоновата Коска"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Хрватска"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Куба"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Кипар"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Чешка"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Данска"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Џибути"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Доминика"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Доминиканска Република"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Еквадор"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Египет"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Ел Салвадор"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Екваторска Гвинеја"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Еритреа"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Естонија"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Етиопија"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Фолкландси Острови (Малвини)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Фарски Острови"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Фиџи"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Финска"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Франција"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Француска Гвајана"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Француска Полинезија"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Француска Јужна Територија"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Габон"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Гамбија"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Грузија"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Германија"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Гана"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Гибралтар"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Грција"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Гренланд"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Гренада"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Гвадалупе"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Гуам"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Гватемала"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Гурнзи"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Гвинеја"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Гвинеја-Бисау"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Гвајана"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Хаити"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Хердски Острови и МекДоналд Острови"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Ватикан"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Хондурас"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Хонг Конг"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Унгарија"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Исланд"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Индија"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Индонезија"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Иран, Исламска Република"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Ирак"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ирска"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Остров Ман"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Израел"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Италија"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Јамајка"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Јапонија"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Џерси"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Јордан"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Казакстан"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Кениа"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Кирибати"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Кореа, Демократска Народна Република"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Кореа, Република"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Кувајт"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Киргистан"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Лао Народна Демократска Република"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Латвија"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Либан"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Лесото"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Либерија"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Либија"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Лихтенштајн"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Литванија"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Луксембург"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Макао"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Македонија"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Мадагаскар"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Малави"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Малезија"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Малдиви"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Мали"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Малта"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Маршалски Острови"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Мартиник"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Мавританија"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Маурициус"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Мајоте"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Мексико"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Микронезија, Федеративни Држави"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Молдавија"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Монако"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Монголија"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Црна Гора"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Монсерат"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Мароко"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Мозамбик"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Мјанмар"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Намибија"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Науру"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Непал"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Холандија"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Холандски Антили"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Нова Каледонија"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Нов Зеланд"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Никарагва"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Нигер"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Нигерија"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Ниуе"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Норфолк"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Северна Мариана Острови"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Норвешка"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Оман"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Пакистан"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Палау"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Палестина, Окупирана Територија"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Панама"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Папуа Нова Гвинеја"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Парагвај"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Перу"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Филипини"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Питкаирн"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Полска"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Португалија"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Порто Рико"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Катар"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Реунион"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Романија"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Руска Федерација"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Руанда"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Свети Бартелемеј"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Света Хелена"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Свет Китс и Невис"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Света Луција"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Свети Мартин"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Свет Пјер и Микелон"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Свет Винсент и Гренадините"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Самоа"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Сан Марино"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Сао Томе и Принципе"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Саудиска Арабија"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Сенегал"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Србија"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Сејшели"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Сиера Леоне"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Сингапур"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Словачка"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Словенија"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Соломонски Острови"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Сомалија"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Јужна Африка"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Јужна Џорџија и Јужни Сендвич Острови"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Шпанија"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Шри Ланка"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Судан"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Суринаме"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Свалбард и Јан Мајен"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Свазиленд"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Шведска"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Швајцарија"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Сирија"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Таџикистан"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Танзанија"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Тајланд"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Тимор-Лесте"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Того"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Токелау"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Тонга"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Тринидад и Тобаго"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Тунис"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Турција"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Туркменистан"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Туркс и Каикос Острови"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Тувалу"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Уганда"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Украина"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Обединети Арабски Емирати"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Обединето Кралство"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "САД"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "САД мали острови"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Уругвај"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Узбекистан"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Вануату"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Венецуела"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Виетнам"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Вирџин Острови, Британски"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Вирџин Острови, САД"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Валис и Футуна"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Западна Сахара"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Јемен"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Замбија"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Зимбабве"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Даемонот не е вклучен"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Име на датотека"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Ниво"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Изберете датотека"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Изберете папка"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Зачувај ја .torrent датотеката"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Торент датотеки"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Сите датотеки"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Внесете ја лозинката за да Ви се прикаже Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Внесете ја лозинката за да излезете од Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Програма за споделување на датотеки од-пријател-до-пријател\n"
+"користејќи го BitTorrent протоколот."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Клиент:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Активни развивачи:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Претходни развивачи и придонесувачи:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Сервер:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Торент"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Невалидна датотека"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Одберете .torrent датотека"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Невалидна адреса"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "не е валидна адреса."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Симнување..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Симнувањето не успеа"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Неуспешно симнување:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Детали:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Корисничко име:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Лозинка:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Заштитено со лозинка"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Друго..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Неповрзан"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT јазли"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Слободен простор на дискот"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Приоритет"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Сите"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Статус"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Детали"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Да_тотеки"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Пријатели"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Опции"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Неповрзан..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Неограничено"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Надолу"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Нагоре"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Без мрежа"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "На мрежа"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Поврзан"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Хост"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Верзија"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Грешка при додавањето на хостот"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Корисничко име"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Вклучено"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Приклучок"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Изберете приклучок"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Eggs на приклучокот"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Состојби"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Следачи"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ниеден"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Натписи"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Нема натпис"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Верзија на клиентот</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Торентите се подредени"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Торентот е подреден"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Постави неограничено"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Вклучено"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Исклучено"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Исклучи"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Адреса"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Клиент"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Креирање на торент"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Подредени торенти"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Отстрани"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Автоматски додај торенти на секое поврзување"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Датотека"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "Додади _Торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Креирај торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Напушти"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Уреди"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Менаџер на врски"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Поглед"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Алатник"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Страничник"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Статус_поле"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Т_абови"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Колони"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Ст_раничник"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Покажи _Нула погодоци"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Покажи _Тракери"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Помош"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Често Поставувани Прашања"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Додај торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Додај Торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Отстрани торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Отстрани Торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Паузирај го избраниот торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Пауза"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Обнови ги избраните торенти"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Продолжи"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Подреди Торент Погоре"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Подреди Погоре"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Подреди Торент Подолу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Подреди Подолу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Параметри"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Менаџер на врски"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Оневозможено"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Покажи брзина на сесија во насловот"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Фокусирај го прозорецот кога се додава торент"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Прикажи икона во системската лента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Минимизирај во системска лента на отворање"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Започни во системската лента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Системската икона е заштитена со лозинка"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Премести ги завршените во:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Копии од .torrent датотеките во:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Отстрани ја копијата од torrent датотеката при отстранување"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Отстрани ја копијата од torrent датотеката при отстранување на торентот"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Симни во:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Приоритизирај ги првите и крајните делови од торентот"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Приоритизирај ги првите и крајните делови од датотеките во торентот"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Додај торенти во паузирана состојба"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Покажи секогаш"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Фокусирај го дијалогот"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Максимум дозволени врски. Постави -1 за неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Врски:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максимум позиции за качување за сите торенти. Постави -1 за неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"максимум брзина за преземање за сите торенти. Постави -1 за неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Брзина на симнување:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максимум брзина за качување за сите торенти. Постави -1 за неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Брзина на качување:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Игнорирај лимити на локалната мрежа"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Оцени лимити на IP overhead"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Ако е штиклирано, пресметаниот TCP/IP overhead е исцеден од лимитерите на "
+"стапка, за избегнување на надминување на лимитот на целосниот сообраќај"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Максимум позиции за качување по торент. Постави -1 за неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Максимален број на врски по торент. Постави -1 за неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Максимална брзина на качување по торент. Поставете -1 за неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Активна Порта:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Тестирај активна порта"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Од:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "До:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Ниво:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Уневарзален Приклучи и Пушти"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Пријателска Размена"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "Дистрибуирана хеш табела"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Дистрибуирана хаш табела за подобрување на активните врски"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TOS бајт на пријателот:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Име на хост:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Порта:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Големина на кеш (16KiB-ни блокови):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Време во секунди од последното кеширано запишување во дел од запишуваниот "
+"кеш до присилното пишување на диск. Стандардно е 60 секунди."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Истекување на кешот (секунди):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Поставки"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Вкупниот број на 16 KiB блокови запишани на диск од самиот почеток на "
+"сесијата."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Блокови запишани:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Вкупниот број на извршени операции за запишување од самиот почеток на "
+"сесијата."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Запишувања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Ратио (блокови запишани - записи) / блокови запишани претставува број на "
+"зачувани операции за запишување по вкупно операции за запишување, пр. вид на "
+"кеш за кешот за запишување."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Кеш за запишување ратио на погодоци:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Број на блокови кои беа побарани од bittorrent енџинот (од пријателите), "
+"сервирани од дискот или кешот."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Блокови прочитани:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Број на блокови кои беа сервирани од кешот:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Погодоци на блоковите за читање:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Ратио на погодоците на кешот за читањето."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Ратио на погодоци на кешот за читање:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Вкупен број на операции на читање од почетокот на сесијата."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Отчитувања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Број на 16 KiB блокови моментално на кешот на дискот. Ова вклучува и кеш за "
+"пишување и читање."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Големина на кешот:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Големина на кешот за читање:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Помогнете ни да го подобриме Deluge со испраќање на вашата Python верзија, "
+"PyGTK верзија, ОС и тип на процесор. Никаква друга информација нема да биде "
+"пратена."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Да, испрати анонимна статистика"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Локација:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Ако Deluge не успее да пронајде датотека со база на податоци на оваа локациј "
+"ќе побара информација користејќи DNS за пронаоѓање на земјата на пријателот."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Даемон порта:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Порта"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Дозволи оддалечени врски"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Врски"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Периодично проверувај ја веб-страната за нови изданија"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Верзија:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Автор:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Домашна страна:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Емаил на авторот:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "инфо"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Додај Пријател"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "хост:порт"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Генерално</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Додај"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Отстрани"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Додади Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Следачи:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Додај хост"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Дестинација:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Нова верзија"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Оди кон вебсајт"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Во иднина не го покажувај овој диалог"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Име:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Коментари:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Премести завршени:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Сопри го сидувањето при однос:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Отстрани на однос"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Уреди тракери"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Горен дел"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Долен дел"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Додади торенти"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_Адреса"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Додади во _паузирана состојба"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Приоритизирај ги првиот/последниот дел"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Постави за сите"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Врати на стандардно"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Покажи Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Ограничена брзина на симнување"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Ограничена брзина на качување"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Излези и исклучи даемон"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Уреди следачи"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Додади пријател по IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Уреди Тракери"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Следач:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Внеси оддалечена патека"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Патека:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Креирај Торент"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Пап_ка"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Оддалечена патека"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Датотеки"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Веб-сејачи"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Големина на дел:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Постави приватно знаме"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Додај го овој торент кон сесијата"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Опции"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Зачувај .torrent како"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Продол_жи"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Продолжи ги селектираните торенти."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Оп_ции"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "Во _редица"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Освежи Тракер"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Отстрани Торент"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "П_рисили повторна проверка"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "натпис"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Избери сѐ"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Паузирај ги сите"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Продол_жи ги сите"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Лимит на врска"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Лимит на _Upload место"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Aвтоматско менаџирање"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Додади следач"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Додади адреса"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Прошири Сите"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent клиент"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent клиент"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Преземете и споделувајте датотеки преку BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Наредба"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Лозинка"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Од"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Користи случајни порти"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Сооднос на делење"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Тип"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP листа (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer текст (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian текст (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Блоклиста"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Невалиден водач"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Невалиден магичен код"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Невалидна верзија"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Денови"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Провери за нова листа секои:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Увези блоклиста на секое стартување"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Поставувања</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Симни ја блоклистата ако е потребно и внеси ја датотеката"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Провери симни и внеси"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Симни нова блоклиста и увези ја"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Присили го симнувањето и увези"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Блоклистата е свежа"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Опции</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Тип:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Датум:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Големина на датотека:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Информации</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Торентот заврши"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Торентот е додаден"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Изврши"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Настан"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Додај наредба</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Наредби</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Автоматско додавање"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Папката за надгледување не постои."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Патеката не постои."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Својства на папките за надгледување"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Одбери папка"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Вклучи ја оваа папка за надгледување"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Папка за надгледување</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Избриши ја .torrent датотеката по додавањето"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Припој ја наставката по додавањето:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".додадена"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Дејство нан торент датотеката</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Помести ги завршените</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Натпис: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Натпис</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Максимална брзина на качување:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Максимален број на врски:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Максимален број на лежишта за качување:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Максимална брзина на симнување:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Проток</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Автоматски управувано:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Додади паузирани:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Подреди до:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Редица</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Папки за надгледување:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "секунди"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Веб-интерфејсот на Deluge не е инсталиран, Ве молиме инсталирајте го и "
+"пробајте повторно."
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Овозможи веб-интерфејс"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Овозможи SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Порта за слушање:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Невалиден натпис, валидни карактери:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Празен натпис"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Натписот веќе постои"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Непознат натпис"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Непознат торент"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Опции за натписи"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Избриши натпис"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Додај натпис"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Опции за натписите"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Натпис"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Опции за натписите</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Примени ги максималните поставувања по торент:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Максимум"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Додај поставувања за редица:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 линија за секој следач)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Автоматско додавање на натпис:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Додај натпис"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Додај натпис</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Користете ја страничната лента да додавате, изменувате и бришете натписи. "
+"</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Натписи</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Известувањата преку скокачки прозорец не се вклучени"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Прикажано е известување преку скокачки прозорец"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Звучните известувања не се вклулени"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame не е инсталиран"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Звучното известување не успеа %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Звучното известување успеа"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Торентот заврши"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Торентот \"%(name)s\" кој вклучува %(num_files)i датотеки заврши со "
+"симнување."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Известувања"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Избери датотека со звук"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Грешка при праќање на електронската порака со известување: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Електронската порака со известување е испратена"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Торентот \"%(name)s\" заврши"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Оваа електронска порака е да Ве информираме дека Deluge заврши со симнување "
+"на \"%(name)s\", што вклучува %(num_files)i датотеки. За да престанете да "
+"гои добивате овие известувања, исклучете ги известувањата преку електронски "
+"пораки во „параметри“ од менито на Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Овозможи трепкање на иконата во системската лента"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Овозможи скокачки прозорци"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Овозможи звук"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Известувања во кориснички интерфејс</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Примачи</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Серверот бара TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Известувања по електронска пошта</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Оваа конфигурација не значи дека ќе добивате известувања за секој од овие "
+"настани."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Претплати"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Приспособувања за звук"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Отпакувач"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Отпакувај во:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Креирај под-папка со името на торентот"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Оваа опција ќе креира под-папка со името на торентот во избраната папка за "
+"отпакување и ќе ги стави отпакуваните датотеки во неа."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Распоредувач"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Ограничување на симнувањето:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Ограничување на качувањето:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Активни торенти:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Активни симнувања:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Бавни поставувања</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Одјави се"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Хост:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Најави се"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Постави максимум врски"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Брзина на симнување"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Постави максимална брзина за симнување"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Брзина на качување"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Постави максимална брзина за качување"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Протокол сообраќај Download/Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Филтри"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Детали"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Приватен"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Известувања за нови изданија"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Максимум врски:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "максимум брзина на симнување (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Максимум брзина на качување (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Максимум полуотворени врски:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Максимум обиди за конекција во секунда:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Максимум Позиции за Качување:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Сервер"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Преземи"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ml.po b/deluge/i18n/ml.po
new file mode 100644
index 0000000..a41fc65
--- /dev/null
+++ b/deluge/i18n/ml.po
@@ -0,0 +1,6164 @@
+# Malayalam translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Malayalam <ml@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "പിശക്"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "മുന്നറിയിപ്പ്"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "ഡൗണ്‍ലോഡ് സ്പീഡ്"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "അപ്‌ലോഡ് സ്പീഡ്"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>ലേബലുകള്‍</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/mo.po b/deluge/i18n/mo.po
new file mode 100644
index 0000000..1699872
--- /dev/null
+++ b/deluge/i18n/mo.po
@@ -0,0 +1,6164 @@
+# Moldavian translation for deluge
+# Copyright (c) 2023 Rosetta Contributors and Canonical Ltd 2023
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2023-03-07 14:10+0000\n"
+"Last-Translator: Vlad Nenea <Unknown>\n"
+"Language-Team: Moldavian <mo@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Фишиер"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Редактаре"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Аспект"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Информацие"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Паӂинэ де интернет"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_Ынтребэрь фреквенте"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Ынтребэрь фреквенте"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Комунитате"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_Деспре програм"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Информацие"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ms.po b/deluge/i18n/ms.po
new file mode 100644
index 0000000..84b905e
--- /dev/null
+++ b/deluge/i18n/ms.po
@@ -0,0 +1,6227 @@
+# Malay translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Malay <ms@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Semua"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktif"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Sedang Disemak"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Sedang Dimuat Turun"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Benihan"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Rehat"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Gilir"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Ralat"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nama:"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Perkembangan"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "State"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Saiz"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Telah Dimuat Turun"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Dimuatnaik"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Nisbah"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Kelajuan Muat turun"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Kelajuan Muat nail"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Had Muat Turun"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Had Muat Naik"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Rakan"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Avail"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Added"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Penjejak"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Utamakan Pertama/Akhir"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Diurus secara automatik"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Cebisan-cebisan"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Amaran"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Hebah OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Hebahan dihantar"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Antaramuka"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Muat Turun"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandwidth"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Baris Gilir"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Rangkaian"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proksi"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Lain-lain"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugin"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Kepulauan Aland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Amerika"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antartika"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua dan Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Belarus"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgium"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Kepulauan Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Wilayah Lautan India British"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kemboja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameroon"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cape Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kepulauan Cayman"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Republik Afrika Tengah"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Chad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Kepulauan Christmas"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kepulauan Cocos (Keeling)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comoros"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Republik Demokrat Congo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Kepulauan Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Cote d'Ivoire"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cyprus"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Republik Czech"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Denmark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Republik Dominica"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Mesir"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Equatorial Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Ethiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Kepulauan Falkland (Malvinas)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Kepulauan Faroe"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Perancis"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "French Guiana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "French Polynesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Wilayah Selatan Perancis"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Jerman"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Greece"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Greenland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Kepulauan Heard dan Kepulauan McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Holy See (Vatican City State)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungari"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Iceland"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Republik Islam Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraq"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ireland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isle of Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Itali"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Jepun"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Republik Rakyat Demokratik Korea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Republik Korea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Lao People's Democratic Republic"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Lubnan"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyan Arab Jamahiriya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lithuania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxembourg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macau"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonia, Bekas Republik Yugoslavia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldives"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Kepulauan Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Negeri-negeri Bersekutu Micronesia"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maghribi"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Belanda"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Netherlands Antilles"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "New Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "New Zealand"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Pulau Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Kepulauan Mariana Utara"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norway"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Kawasan Diduduki Palestian"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua New Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipina"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Poland"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugis"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Persekutuan Rusia"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts dan Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre and Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent dan Grenadines"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome dan Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arab Saudi"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapura"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Kepulauan Solomon"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Afrika Selatan"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "South Georgia dan Kepulauan Sandwich Selatan"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Sepanyol"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard dan Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Sweden"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Switzerland"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Republik Arab Syria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Republik Bersatu Tanzania"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad dan Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turki"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Kepulauan Caicos dan Turks"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Emiriah Arab Bersatu"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "United Kingdom"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Amerika Syarikat"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Pulau Kecil yang Jauh dari Amerika Syarikat"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Kepulauan Virgin, British"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Kepulauan Virgin, Amerika Syarikat"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis dan Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Sahara Barat"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yaman"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Daemon tidak berjalan"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Filename"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Tier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Pilih satu fail"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Pilih satu folder"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Simpan fail .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Fail torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Semua fail"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Merupakan program perkongsian fail\n"
+"rakan-ke-rakan menggunakan\n"
+"protokol BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klien:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Pembangun Semasa:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Pembangun atau Penyumbang Terdahulu:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Program ini adalah perisian bebas; anda boleh mengedarkannya dan/atau "
+"mengubahsuainya dibawah terma Pelesenan Awam Am GNU yang diterbitkan oleh "
+"Free Software Foundation; sama ada versi 2 dari lesen, atau (mengikut "
+"pilihan anda) mana-mana versi terkini. \n"
+"\n"
+"Program ini diedarkan dengan harapan ianya akan berguna, TANPA SEBARANG "
+"JAMINAN; termasuk juga KESESUAIAN UNTUK DIPASARKAN, JAMINAN KUALITI, atau "
+"JAMINAN ATAS APA JUA SEBAB. Sila lihat GNU General Public License untuk "
+"maklumat lanjut. \n"
+"\n"
+"Anda seharusnya menerima satu salinan Lesen Awam Am GNU bersama-sama dengan "
+"program ini; jika tidak, rujuk <http://www.gnu.org/licenses>. \n"
+"\n"
+"Jika ada pengecualian khas, pemegang hakcipta boleh memberi keizinan untuk "
+"pautkan sebahagian kod program ini dengan pustaka OpenSSl. Tetapi anda mesti "
+"mematuhi Lesen Awam Am GNU dam semua kod yang digunakan selain dari OpenSSL. "
+"\n"
+"\n"
+"Jika anda ubahsuai fail tanpa pengecualian ini, anda boleh tambah "
+"pengecualian ini kedalam versi fail anda, tetapi anda tidak diwajibkan "
+"membuatnya. Jika anda hendak melakukannya, padam penyataan pengecualian ini "
+"dari versi anda. Jika anda padam penyataan pengecualian ini dari semua fail "
+"sumber didalam program, maka padam ia disini."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Pelayan:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Fail tidak sah"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Pilih fail torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL tidak sah"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "bukan URL yang sah."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Memuat turun..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Muat-turun Gagal"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Gagal dimuat turun:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Butiran:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nama pengguna:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Kata laluan:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Lain-lain..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Tidak Bersambung"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nod DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Ruang Cakera Bebas"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ya"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Tidak"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Keutamaan"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Perincian"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fa_il"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Pilihan"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Tidak Bersambung..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Tak terhad"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Turun"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Naik"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Luar Talian"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Dalam talian"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Tersambung"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versi"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Mula Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Henti Daemon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Tidak boleh mula daemon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Ralat Menambah Hos"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Username"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Tahap"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Dibolehkan"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Pilih Plugin"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Keadaan"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Penjejak"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Tiada"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Pentadbir"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Label"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Tiada Label"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Versi Klien</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents Queued"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent Queued"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Set Tidak Terhad"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "On"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Padam"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Matikan"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Alamat"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klien"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Mencipta Torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Queued Torrents"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Buang"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Tambah torrent secara automatik bila sambung"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fail"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Tambah Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Cipta Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Keluar & _Matikan Daemon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Keluar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Edit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Pengurus Sambungan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Papar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Toolbar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sidebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_bar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolum"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_idebar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Papar _Zero Hits"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Papar _Tracker"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Bantuan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Laman Sesawang"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Frequently Asked Questions"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Komuniti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Tambah torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Tambah Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Buang torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Buang Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Tangguh torrent terpilih"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Jeda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Resume torrent terpilih"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Sambung"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Queue Torrent Ke Atas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Queue keatas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Queue Torrent Ke Bawah"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Queue Bawah"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Keutamaan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Pengurus Sambungan"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Dipaksakan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Tidak dibolehkan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Jabat tangan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Keduanya"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Tunjukan kelajuan sesi pada bar tajuk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Enable system tray icon"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimize to tray on close"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Start in tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Password protect system tray"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Pindah siap ke:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Salinan fail .torrent kepada:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Padam salinan fail torrent bila buang"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Padam salinan fail torrent yang dicipta semasa torrent dibuang"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Muat Turun ke:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Utamakan cebisan awal dan akhir torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Utamakan cebisan awal dan akhir fail dalam torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Tambah torrent dalam keadaan Selang"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Sentiasa ditunjuk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Bawa dialog ke fokus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Maksimum connection dibenarkan. Set -1 untuk tak terhad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Sambungan:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Had slot muat naik maksimum untuk semua torrent. Set -1 untuk tak terhad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Had kelajuan muat turun maksimum untuk semua torrent. Set -1 untuk tak "
+"terhad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Kelajuan Muat Turun"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Had kelajuan muat naik maksimum untuk semua torrent. Set -1 untuk tidak "
+"terhad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Kelajuan Muat Naik"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Mengabaikan had pada rangkaian tempatan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Kadar had overhead IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Had slot muat naik maksimum per torrent. Set -1 untuk tak terhad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Bilangan connection maksimum per torrent. Set -1 untuk tak terhad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Rambang"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Active Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Periksa Port Aktif"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Dari:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Kepada:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Level:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Penyulitan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Tukar Rakan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Jelajah Servis Tempatan mencari rakan tempatan dalam jaringan anda."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Hash table teragih boleh meningkatkan jumlah sambungan aktif."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Bit TOS Peer:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nama hos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Saiz cache (blok 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Bilangan saat dari penulisan cache terakhir ke cebisan dalam cache tulis, "
+"bila ia dikosongkan secara paksa ke cakera. Lalai adalah 60 saat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Luput Cache (saat):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Tetapan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Jumlah bilangan blok 16 KiB yang ditulis ke cakera semenjak sesi ini "
+"dimulakan."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blok yang ditulis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Jumlah bilangan operasi tulis dilakukan semenjak sesi ini dimulakan."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Tulis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Nisbah block_written / (block_written - writes) yang mewakili bilangan "
+"operasi tulis tersimpan per jumlah operasi tulis, cth. merupakan nisbah kena "
+"cache untuk cache tulis."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Nisbah Kena Cache Tulis:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Bilangan blok yang dipinta dari enjin bittorrent (dari rakan), yang mana "
+"dilayan dari cakera atau cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Baca Blok:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Bilangan blok yang dilayan dari cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Kena Baca Blok:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Nisbah kena cache dari cache baca."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Nisbah Kena Cache Baca:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Jumlah bilangan operasi baca dilakukan semenjak sesi ini dimulakan."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Baca:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Nombor blok 16 KiB sekarang berada pada cache cakera. Ini termasuk cache "
+"membaca dan menulis"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Saiz Cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Baca Saiz Cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Bantu kami mempertingkatkan Deluge sengan menghantar versi Python, versi "
+"PyGTK, OS dan jenis pemproses. Tiada maklumat lain yang akan dihantar selain "
+"itu."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ya, tolong hantar statistik anonymus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Lokasi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Jika Deluge tidak menjumpai pangkalan data di lokasi ini ia akan kembali "
+"mengunakan DNS untuk memutuskan rakan negara."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Port daemon:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Benar Sambungan Jarak Jauh"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Sambungan-sambungan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Secara berkala memeriksa laman web untuk keluaran baru"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Pengarang:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Homepej:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Emel Pengarang:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Tambah Peer"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Umum</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Batal"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Tambah"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Buang"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Tambah Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Penjejak:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Tambah Host"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destinasi"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Keluaran Baru"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Pergi ke Website"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Jangan papar dialog ini dimasa akan datang"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nama:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Komen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Alih yang selesai:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Berhenti seed pada nisbah:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Singkirkan pada nisbah"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Edit Trackers"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Atas"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Bawah"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Tambah Torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Tambah dalam _Masa Jeda"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Utamakan Kepingan Pertama/Akhir"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Gunakan Atas Semua"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Tukar kepada Asal"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Show Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Had laju muat turun"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Had laju muat atas"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Keluar & Tutup Daemon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Edit Trackers"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Tambah Rakan"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Tambah satu peer mengikut IPnya"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Edit Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Masuk Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Laluan:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Cipta Torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Fol_der"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Remote Path"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Fail-fail"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "SemaianWeb"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Saiz kepingan"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Tetap Bendera Peribadi"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Tambah torrent ini pada sesi"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Pilihan"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Simpan .torrent sebagai"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Jeda"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Sam_bung"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Mulakan semula torrent."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Pilih_an"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Queue"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Update Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Buang Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Paksa Periksa Semula"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "label"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Pilih Semua"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Hentikan semua sementara"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Mula_kan Semua"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Had Sambungan"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Had Slot_Muat Naik"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Diurus Automatik"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Tambah Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Tambah URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expand Semua"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Klient BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Klien BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Muat turun dan kongsi fail melalui BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Perintah"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Kata laluan"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Dari"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Ke"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Gunakan Port Secara Rawak"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Inbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Outbound"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Sambungan Maksimum"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Slot Muatnaik Maksimum"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Sambungan Separuh-buka Maksimum"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Cubaan Maksimum Setiap Saat"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Rate Limit IP Overhead"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Kadar Kongsi"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Type"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Guna"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "List IP Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Teks SafePeer (Zipped)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Teks PeerGuardian (Uncompressed)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Senarai Sekatan"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Leader tidak sah"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Kod magik salah"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versi salah"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Hari"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Periksa untuk senarai baru setiap hari"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Import senaraiblok bila startup"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Aturan</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Muaturun fail blocklist jika perlu dan import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Periksa Muaturun dan Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Muaturun fail senaraiblok baru dan import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Paksa Muaturun dan Import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Senarai-sekatan telah dikemas-kini"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Pilihan</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Jenis:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Tarikh:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Saiz fail"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent Siap"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent Ditambah"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Lakukan"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Peristiwa"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Tambahkan Perintah</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Perintah</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Folder pantau tidak wujud."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Laluan tidak wujud."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Ciri Folder Pantau"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Pilih Folder"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Benarkan folder pantau ini"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Folder Pantau</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Padam .torrent selepas menambah"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Tambah sambungan selepas menambah:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Tindakan Fail Torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Alih Fail Siap</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Label: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Label</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Utama"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Kelajuan Maksima Upload:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Sambungan Maksima:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Slot Muatnaik Maksima:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Kelajuan Maksima Download:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Jalur lebar</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Diurus Sendiri:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Tambah Dijeda:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Baris gilir ke:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Queue</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Folder Pantau:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "saat"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Antaramuka sesawang Deluge tidak dipasang, sila pasang\n"
+"antaramuka dan cuba lagi"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Membolehkan paparan web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Membolehkan SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Mendengar port:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Label tidak sah, aksara sah:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Label Kosong"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Label telah wujud"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Label tidak diketahui"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent tidak diketahui"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Pilihan_Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Buang Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Tambah Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Label Pilihan"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Label Pilihan</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Tetapkan setiap torrent penetapan maksima"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Laksana tetapan Baris Gilir:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 baris setiap penjejak)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Tetapkan label secara automatik:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Tambah Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Tambah Label</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Gunakan sidebar untuk menambah, menyunting dan membuang label</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Label</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Kelipan Pemberitahuan dipaparkan"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Pemberitahuan timbuk dilumpuhkan."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Tetingkap timbul pemberitahuan dipaparkan"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Pemberitahuan bunyi dilumpuhkan"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame tidak dipasang"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Pemberitahuan bunyi %s gagal"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Pemberitahuan bunyi Berjaya"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent Selesai"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Pilih Fail Bunyi"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Terdapat ralat semasa menghantar emel pemberitahuan: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Emel pemberitahuan dihantar."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent \"%(name)s\" selesai"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Emel ini maklumkan anda yang mana Deluge selesai memuat turun \"%(name)s\",, "
+"termasuklah %(num_files)i fail .\n"
+"Untuk hentikan peringatan ini, matikan pemberitahuan emel didalam keutamaan "
+"Deluge.\n"
+"\n"
+"Terima kasih\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Kelipan ikon talam dibenarkan"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Tingkap timbul dibenarkan"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Bunyi dibenarkan"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Pemberitahaun UI</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Penerima</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Pelayan memerlukan TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Pemberitahuan Emel</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Konfigurasi ini tidak bermakna anda sebenarnya menerima pemberitahuan untuk "
+"semua peristiwa ini."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Langganan"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Suaian Bunyi"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Ekstrak ke:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Cipta nama sub-folder torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Pilihan ini akan cipta sub-folder menggunakan nama torrent pada folder "
+"ekstrak yang dipilih dan meletakkan fail yang diekstrak ke sana"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Had Muat Turun"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Had Muat Naik"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrent aktif:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Muat Turun Aktif:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Penyemaian Aktif:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b> Tetapan Perlahan</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Logkeluar"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Simpan"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Hos:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Pindah"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Lomasuk"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Set Sambungan Maksima"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Kelajuan Muat Turun"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Set Kelajuan Muat Turun Maksima"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Kelajuan Muat Naik"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Set Kelajuan Muat Naik Maksima"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocol Traffic Download/Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Sambungkan"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filters"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Had Kelajuan MuatTurun"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Had Laju Muat Naik"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Had Sambungan"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Had Slot Muat Naik"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Kemaskini Tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Paksa Recheck"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Keterangan"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Umum"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Persendirian"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Benar"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Ingatkan mengenai keluaran terbaru"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximum Connections:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Kelajuan Muat turun Maksimum (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Kelajuan Muat naik Maksimum (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximum Half-Open Connections:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Cubaan maksimum sambungan per saat:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Slot Muat naik Maksimum:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Segar Semula"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fail"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Tambah dalam keadaan Pause"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Muaturun"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/nap.po b/deluge/i18n/nap.po
new file mode 100644
index 0000000..5c4ca92
--- /dev/null
+++ b/deluge/i18n/nap.po
@@ -0,0 +1,6172 @@
+# Neapolitan translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Neapolitan <nap@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Errore"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Attenzione"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Annuncio OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Annuncio mannato"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+"C'è stato n'errore pe' tramente ca se mannava l'e-mail 'e notificha: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "E-mail 'e notifica mannata."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Completato Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Chest'e-mail è pe' le nfurmà ca 'o Deluge ave fernuto 'e scarrecà "
+"\"%(name)s\", ca nclude %(num_files)i file.\n"
+"P' 'a fernì 'e ricevere sti mmasciate, stutate l'ozzione 'e notifica int' 'e "
+"preferenze 'e Deluge.\n"
+"\n"
+"Grazie,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/nb.po b/deluge/i18n/nb.po
new file mode 100644
index 0000000..a21eb78
--- /dev/null
+++ b/deluge/i18n/nb.po
@@ -0,0 +1,6186 @@
+# Norwegian Bokmal translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Norwegian Bokmal <nb@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Alle"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Undersøker"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Laster ned"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Deler"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Stoppet midlertidig"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Lagt i kø"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Feil"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Navn"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Fremdrift"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Tilstand"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Størrelse"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Nedlastet"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Lastet opp"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Forholdstall"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Nedhastighet"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Opphastighet"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Noder"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Tilgjengelighet"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Lagt til"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Tid igjen"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioriter første/siste"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Behandles automatisk"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Biter"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Advarsel"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Kunngjøring OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Kunngjøring sendt"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Grensesnitt"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Nedlasting"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Båndbredde"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Kø"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Nettverk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Mellomtjener"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Hurtiglager"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Annet"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Bakgrunnsprosess"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Programutvidelser"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Åland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algerie"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikansk Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktis"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua og Barbados"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Østerrike"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Aserbadsjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Hviterussland"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgia"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia-Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvetøya"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Det britiske området i Indiahavet"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodsja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kapp Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Caymanøyene"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Den sentralafrikanske republikk"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tsjad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Juleøya"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokos (Keeling) øyene"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komorene"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo, Den demokratiske republikk"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cookøyene"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Elfenbenskysten"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Kypros"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tsjekkia"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danmark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Den Dominikanske Republikk"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvatorial-Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estland"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandsøyene"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Færøyene"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finnland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frankrike"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Fransk Guyana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Fransk Polynesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "De franske sørterritorier"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Tyskland"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Hellas"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grønland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard- og McDonald-øyene"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vatikanstaten"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hongkong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kasakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Nord-Korea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Sør-Korea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgisistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivene"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshalløyene"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesiaføderasjonen"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mosambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Burma"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Nederland"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "De nederlandske Antillene"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Ny-Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "New Zealand"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolkøya"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Nord-Marianene"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norge"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestina"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Ny-Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filippinene"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairnøyene"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polen"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Russland"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint-Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "St. Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts og Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint-Pierre og Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent og Grenadinene"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé og Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi-Arabia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychellene"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomonøyene"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Sør-Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Sør-Georgia og Sør-Sandwichøyene"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spania"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard og Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Sverige"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Sveits"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadsjikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Øst-Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad og Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Tyrkia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks- og Caicosøyene"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "De forente arabiske emirater"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Storbritannia"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Amerikas forente stater"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "USAs ytre småøyer"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Usbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "De britiske Jomfruøyene"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "De amerikanske Jomfruøyene"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis- og Futunaøyene"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Vest-Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Nissen kjører ikke"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Filnavn"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Gruppering"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Velg en fil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Velg en mappe"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Lagre .torrent-filen"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent-filer"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Alle filtyper"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Tjener:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ugyldig fil"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Velg en fil av type .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Ugyldig adresse (URL)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Nedlasting mislyktes"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detaljer:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Brukernavn:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Passord:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Annet ..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Ikke tilkoblet"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT-noder"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ja"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nei"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritet"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detaljer"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_ler"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Noder"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Alternativer"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Ubegrenset"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Ned"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Opp"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Frakoblet"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Tilkoblet"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Tilkoblet"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Vert"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Feil ved innlasting av vert"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Brukernavn"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivå"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Aktiv"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Programtillegg"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Velg programutvidelsen"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Utvidelser (Python eggs)"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackere"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ingen"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Admin"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiketter"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Ingen etikett"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrenter i kø"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent i kø"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Sett ubegrenset"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "På"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Av"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Deaktiver"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresse"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klient"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Oppretter torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrenter i kø"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Fjern"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Legg til torrenter automatisk ved tilkobling"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fil"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Legg til torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Lag torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Avslutt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Endre"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Tilkoblingshåndterer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Vis"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Verktøylinje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sidelinje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_linje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "F_aner"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolonner"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_idelinje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Vis _Null Treff"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Vis _trackere"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Hjelp"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Ofte stilte spørsmål"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Legg til torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Legg til Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Fjern torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Fjern Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pause valgte torrenter"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pause"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Fortsett valgte torrenter"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Gjenoppta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Flytt torrent opp i kø"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Opp i kø"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Flytt torrent ned i kø"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Ned i kø"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Brukervalg"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Tilkobingshåndterer"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Tvungen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Avslått"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Håndtrykk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Enten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Vis sesjonens fart i tittellinjen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Vis ikon i systemkurven"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimer til systemkurv ved lukking"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Start i systemkurv"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Passordbeskytt systemkurv"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Flytt ferdige til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Lagre kopi av .torrent-filer i:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Last ned til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioriter første og siste bit av torrenten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioriter første og siste bit av hver fil i torrenten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Legg til torrenter i pauset tilstand"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Vis alltid"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Sett dialogen i fokus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Høyeste antall tillatte tilkoblinger. Sett til -1 for uendelig."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Tilkoblinger:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Høyeste antall opplastingsplasser for alle torrenter. Sett til -1 for "
+"uendelig."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksimal nedlastingshastighet for alle torrenter. Sett til -1 for uendelig."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Nedlastingshastighet:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Høyeste opphastighet for samtlige torrenter. Sett til -1 for uendelig."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Opplastingshastighet:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorer begrensninger i lokalt nettverk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Ekskluder protokolltrafikk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Hvis dette alternativet velges, vil bånbredden TCP/IP-protokollen bruker, "
+"være medregnet for total tillatt båndbredde."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Høyeste antall opplastingsplasser per torrent. Sett til -1 for uendelig"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Høyeste antall tilkoblinger per torrent. Sett til -1 for uendelig."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Tilfeldig"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiv Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Test aktiv port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Fra:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivå:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Kryptering"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal \"Plug&Play\""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT portmappingsprotokoll"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Nedlasterutveksling"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Lokalt tjenestesøk finner lokale nedlastere i ditt nettverk."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Distribuert hashtabell kan forbedre mengden av aktive tilkoblinger"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Nedlaster TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Vertsnavn:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Hurtiglagerstørrelse (16 KiB blokker)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Antall sekunder fra siste mellomlagrede skrivning til den blir tvunget "
+"skrevet til disk. Standarden er 60 sekunder."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Mellomlager løpetid (sekunder):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Innstillinger"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Det totale antall 16 KiB-blokker skrevet til disk siden denne sesjonen ble "
+"startet."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blokker skrevet:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Det totale antall skriveoperasjoner utført siden denne sesjonen ble startet."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Skrivinger:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr "Ratioen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Nummeret av blokkeringer som ble forespurt fra bittorrent motoren (fra "
+"peers), som var servert fra disk eller buffer."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blokker lest:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Nummeret av blokkeringer som ble servert av buffer."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lesninger:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Hurtiglagerstørrelse:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Størrelse på lesemellomlager:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Hjelp oss å forbedre Deluge ved å sende oss informasjon om din Python-"
+"versjon, PyGTK-versjon, operativsystem og prosessortype. Ingen annen "
+"informasjon vil bli sendt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ja takk, send anonym statistikk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Plassering:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Hvis Deluge ikke finner databasefilen ved denne plasseringen vil den falle "
+"tilbake til DNS for å finne en peers land."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Bakgrunnsprosess-port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Tillat fjern-tilkoblinger"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Tilkoblinger"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Sjekk nettstedet periodisk for nye utgivelser"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versjon:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Forfatter:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Hjemmeside:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Forfatterens e-post:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Legg til deltaker"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "vertsnavn:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Generelt</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Legg til"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Fjern"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Legg til infohash (unik kode)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash (unik kode):"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackere:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Legg til vert"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Mål:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Ny utgivelse"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Gå til nettsted"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Ikke vis denne dialogen i framtiden"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Navn:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Kommentarer:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Flytt ferdige:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Stopp deling ved delingsforhold:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Fjern ved delingsforhold"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "R_ediger Trackere"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Øverst"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Nederst"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Legg til torrenter"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Sjekksum"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Legg til i _pauset tilstand"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioriter første/siste bit"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Bruk på alle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Gjenopprett standardverdier"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Vis Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Begrens _nedlastingshastighet"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Begrens _opplastingshastighet"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Avslutt & stopp bakgrunnsprosess"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Rediger trackere"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Legg til deltaker fra IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Rediger tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Oppgi ekstern sti"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Sti:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Lag torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Mappe"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Sti til annet sted"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Filer"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Web-delere"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Delstørrelse:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Aktiver Privat-flagget"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Legg til denne torrenten i arbeidsøkten"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Alternativer"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Lagre .torrent som"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Fortsett"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Fortsett valgte torrenter"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Alternativer"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Kø"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Oppdater Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Fjern Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Kontroller på nytt"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etikett"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Velg alle"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pause alle"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Fortsett alle"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Begrens antall tilkoblinger"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Maks _opplastingsplasser"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatisk håndtert"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Legg til tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Legg til URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Utvid alle"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Kommando"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Passord"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Fra"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Til"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Bruk tilfeldige porter"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Inngående"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Utgående"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maksimalt antall tilkoblinger"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maksimalt antall opplastingsplasser"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maks halvåpne tilkoblinger"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maks tilkoblingsforsøk per sekund"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Ekskluder protokolltrafikk"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Delingsforhold"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Type"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Bruk"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IPliste (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Tekst (Zippet)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Tekst (Ikke komprimert)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokkeringsliste"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Ugyldig leder"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Ugyldig magikode"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ugyldig versjon"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dager"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Se etter ny liste hver:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importer blokkliste ved oppstart"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Innstillinger</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Last ned blokkeringsliste hvis nødvendig og importer denne."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Sjekk nedlasting og importer"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Last ned ny blokkeringsliste og importer denne."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Tving nedlasting og importer"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blokkeringsliste er nyeste"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Alternativer</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Type:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Dato:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Filstørrelse:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent ferdig"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent lagt til"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Kjør"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Hendelse"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Legg til kommando</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Kommandoer</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Velg en mappe"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maks opplastingshastighet:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maks antall tilkoblinger:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maks antall opplastingsplasser:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maks nedlastingshastighet:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Båndbredde</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Kø</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekunder"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Tillat webgrensesnitt"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Benytt SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Lytteport:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Ugyldig merkelapp, gyldige tegn: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tom merkelapp"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Merkelappen finnes allerede"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Ukjent merkelapp"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Ukjent torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Merkelappinnstillinger"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Fjern merkelapp"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Legg til merkelapp"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Innstillinger for merkelapper"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Merkelapp"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Innstillinger for merkelapper</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Bruk per torrent maks-innstillinger:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimalt"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Bruk kø-innstillinger:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 linje per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Bruk merkelapp automatisk:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Legg til merkelapp"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Legg til merkelapp</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Bruk sidelinjen for å legge til, endre og fjerne merkelapper. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Merkelapper</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Pakk ut til:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Opprett torrent-navn undermappe"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Dette alternativet vil opprette en undermappe med navnet til torrenten "
+"innenfor valgte utpakkingsmappe, og legge de utpakkede filene der."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Nedlastingsgrense"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Opplastingsgrense"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktive torrenter:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Trege innstillinger</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Utlogging"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Lagre"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Vert:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Flytt"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Innlogging"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Sett maks tilkoblinger"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Nedlastingshastighet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Sett maksimum nedlastingshastighet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Opplastningshastighet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Sett maksimum opplastingshastighet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protokolltrafikk ned/opp"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Koble til"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtere"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Hastighetsgrense ned"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Hastighetsgrense opp"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Tilkoblingsgrense"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Antall tilkoblinger for opplasting"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Oppdater Tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Tving ny sjekk"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detaljer"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Generelt"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privat"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Sann"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Varsle meg om nye utgaver"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Høyeste antall tilkoblinger:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Høyeste nedlastingshastighet (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Høyeste opplastningshastighet (KiB/s)"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Høyeste antall halvåpne tilkoblinger:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Høyeste antall tilkoblingsforsøk per sekund:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Høyeste antall opplastningsplasser:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Oppdater"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fil"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Legg til i pauset tilstand"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Nedlastning"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/nds.po b/deluge/i18n/nds.po
new file mode 100644
index 0000000..fd8d34f
--- /dev/null
+++ b/deluge/i18n/nds.po
@@ -0,0 +1,6164 @@
+# Low German translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Low German <nds@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Größe"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Down Speed"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Up Speed"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Downloads"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Netzwerk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Details"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Datei"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Torrent hinzufügen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Edit"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Anzeige"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Toolbar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Spalten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Füge Torrent hinzu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Torrent wegmaken"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Paus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Wiedermaken"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiver Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Von:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Nach:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer Exchange"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Tofögen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Wegdoon"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Share Ratio"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Wähle einen Ordner"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Details"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/nl.po b/deluge/i18n/nl.po
new file mode 100644
index 0000000..85b19f6
--- /dev/null
+++ b/deluge/i18n/nl.po
@@ -0,0 +1,6199 @@
+# Dutch translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2021-12-23 05:43+0000\n"
+"Last-Translator: Sam van Kampen <sam@tehsvk.net>\n"
+"Language-Team: Dutch <nl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Dit Help-bericht afdrukken"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Versie-informatie afdrukken"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Alle"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Controleren"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Downloaden"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Seeden"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Gepauzeerd"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "In Wachtrij"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Fout"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Naam"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Voortgang"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Status"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Grootte"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Binnengehaald"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Geüpload"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Verhouding"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Downloadsnelheid"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Uploadsnelheid"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Beschikbaar"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Toegevoegd"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Resterend"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Verhoog prioriteit Eerste/Laatste"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatisch beheerd"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Stukken"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Opgelet"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Aankondiging OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Aankondiging verzonden"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Downloads"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandbreedte"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Wachtrij"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Netwerk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Overige"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Ålandseilanden"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanië"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algerije"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikaans-Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antartica"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua en Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentinië"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenië"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australië"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Oostenrijk"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbeidzjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahama's"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrein"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Wit-Rusland"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "België"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnië-Herzogevina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet-eiland"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazilië"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Brits Territorium in de Indische Oceaan"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgarije"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameroen"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kaapverdië"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kaaimaneilanden"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Centraal-Afrikaanse Republiek"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tsjaad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chili"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Kersteiland"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokoseilanden (Keeling)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komoren"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Congo, Democratische Republiek"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook Eilanden"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Ivoorkust"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatië"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cyprus"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tsjechische Republiek"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Denemarken"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominicaanse Republiek"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypte"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Equatoriaal Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estland"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Ethiopië"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandeilanden (Malvinas)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faeröereilanden"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frankrijk"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Frans-Guyana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Frans-Polynesië"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Franse Zuidelijke- en Antarctische Gebieden"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgië"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Duitsland"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Griekenland"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinee-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haïti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heardeiland en McDonaldeilanden"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vaticaanstad"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hongarije"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Ijsland"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesië"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Islamitische Republiek"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ierland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Man (eiland)"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israël"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italië"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordanië"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazachstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Noord-Korea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Zuid-Korea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Koeweit"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgizië"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Democratische Volksrepubliek Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letland"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberië"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libië"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Lichtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litouwen"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonië"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Maleisië"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldiven"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshall-eilanden"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritanië"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Micronesië"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavië"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolië"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Birma"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibië"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Nederland"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Nederlandse Antillen"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nieuw-Caledonië"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nieuw-Zeeland"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolkeiland"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Noordelijke Marianen"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Noorwegen"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestina"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papoea-Nieuw-Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filippijnen"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairneilanden"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polen"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Roemenië"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Rusland"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Sint-Bartholomeus"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Sint-Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts en Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Santa Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Sint-Maarten"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint-Pierre en Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Sint-Vincent en de Grenadines"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tomé en Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saoedi-Arabië"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Servië"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychellen"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slowakije"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenië"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomoneilanden"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalië"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Zuid-Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Zuid-Georgië en de Zuidelijke Sandwicheilanden"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spanje"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard en Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Zweden"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Zwitserland"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syrië"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadzjikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, Verenigde Republiek"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Oost-Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad en Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunesië"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkije"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turkse- en Caicoseilanden"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Oeganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Oekraïne"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Verenigde Arabische Emiraten"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Groot-Brittanië"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Verenigde Staten"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Kleine Pacifische eilanden van de Verenigde Staten"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Oezbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Maagdeneilanden, Britse"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Maagdeneilanden, V.S."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis en Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "West Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Deamon draait niet"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Bestandsnaam"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Rij"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Kies een bestand"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Kies een map"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Sla .torrent bestand op"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrentbestanden"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Alle bestanden"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ongeldig bestand"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Kies een .torrent-bestand"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Ongeldige URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Downloaden mislukt"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Details:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Gebruikersnaam:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Wachtwoord:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Overig..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Niet verbonden"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Nodes"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ja"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nee"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioriteit"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Details"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Bestanden"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opties"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Onbeperkt"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Naar beneden"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Naar boven"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Offline"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Online"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Verbonden"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Fout bij toevoegen van host"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Gebruikersnaam"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivo"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Ingeschakeld"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Selecteer de Plugin"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin eieren"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackers"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Geen"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Beheerder"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Labels"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Geen label"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents in de rij geplaatst"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent in de rij geplaatst"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Zet op ongelimiteerd"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Aan"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Uit"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Deactiveren"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adres"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Torrent maken"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents in de wachtrij"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "Ve_rwijderen"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automatisch torrents toevoegen bij het maken van de verbinding"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Bestand"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Torrent toevoegen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "Torrent _Aanmaken"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "Af_sluiten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "B_ewerken"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Verbindingsbeheerder"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "Weerga_ve"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Knoppenbalk"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Zijpaneel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_balk"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abbladen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolommen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Z_ijpaneel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Toon _Zero Hits"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Toon _Trackers"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Help"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Veelgestelde vragen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Torrent toevoegen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Torrent toevoegen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Verwijder torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Torrent verwijderen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Geselecteerde torrents pauzeren"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pauzeren"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Geselecteerde torrents verderzetten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Hervatten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Torrent in wachtrij omhoog"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Omhoog in wachtrij"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Torrent in wachtrij omlaag"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Omlaag in wachtrij"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Instellingen"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Connectie Manager"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Geforceerd"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Uitgeschakeld"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Handdruk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Beide"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Toon sessie snelheid in titelbar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Systeemvakpictogram inschakelen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Naar systeemvak minimaliseren bij afsluiten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Start in het systeemvak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Door wachtwoord beschermd systeemvak"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Verplaats gedownloade bestanden naar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopie van .torrent-bestanden naar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Downloaden naar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Geef voorrang aan eerste en laatste stukjes van torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Geef voorrang aan eerste en laatste stukjes van bestanden in torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Torrent toevoegen in gepauzeerde stand"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Altijd tonen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Breng het dialoog naar voren"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"Het maximale aantal toegestane verbindingen. Zet op -1 voor onbeperkt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Verbindingen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"De maximale upload plaatsen voor alle torrens. Gebruik -1 voor ongelimiteerd."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"De maximale downloadsnelheid voor alle torrents. Zet op -1 voor onbeperkt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Downloadsnelheid:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"De maximale uploadsnelheid voor alle torrents. Zet op -1 voor onbeperkt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Uploadsnelheid:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Limieten negeren op locale netwerk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Beperk IP overhead samen met doorvoersnelheid."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Wanneer aangevinkt wordt de geschatte TCP/IP overhead afgetrokken van de "
+"gelimiteerde doorvoersnelheid. Dit is om te voorkomen dat de limieten worden "
+"overschreden met het totale dataverkeer."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"De maximale upload plaatsen per torrens. Gebruik -1 voor ongelimiteerd"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Het maximum aantal verbindingen per torrent. Zet op -1 voor onbeperkt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Willekeurig"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Actieve poort:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Actieve poort testen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Van:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Tot:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Niveau:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Versleuteling"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer-uitwisseling"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Lokale Service Ontdekker heeft lokale peers op je netwerk gevonden."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Gedistributeerde hashtabel kan het aantal actieve verbindingen verbeteren."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Hostnaam:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Poort:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Cache Grootte (16 KiB blokken):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Het aantal seconden na de laatste wijziging waarna de cache naar de harddisk "
+"wordt geschreven. Standaard is 60 seconden."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache verval (seconden):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Instellingen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Het aantal blokken van 16 KiB dat naar de harddisk is geschreven sinds deze "
+"sessie begon."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blokken geschreven:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Het aantal leesoperaties dat is uitgevoerd sinds deze sessie begon."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Geschreven:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"De verhouding (geschreven_blokken - schrijfoperaties) / geschreven_blokken "
+"stelt het aantal opgeslagen schrijfoperaties op het totale aantal "
+"schrijfoperaties voor."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Schrijf cache treffer verhouding"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Het aantal blokken aangevraagd via de bittorrent engine die geserveerd "
+"werden vanaf de schijf of cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blokken gelezen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Het aantal blokken dat werd gelezen vanuit de cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blokken gelezen uit cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "De cache hit ratio voor de leescache"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Lees cache treffer verhouding"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Het totale aantal leesoperaties dat is uitgevoerd sinds het begin van deze "
+"sessie."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Gelezen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Aantal 16 KiB-blokken in het cachegeheugen. Dit omvat zowel de lees als "
+"schrijf cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Cache grootte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Lees cache grootte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Help ons Deluge te verbeteren door ons uw Python-versie, PyGTK-versie, OS en "
+"processor types te sturen. Geen andere informatie wordt verzonden."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ja, verstuurd anonieme statistieken"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Locatie:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Als Deluge geen database kan vinden op deze locatie zal er gebruik worden "
+"gemaakt van DNS om het land te bepalen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon poort:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Poort"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Verbindingen op afstand toestaan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Verbindingen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Controleer de website regelmatig voor nieuwe versies"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versie:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Auteur:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "E-mailadres van de auteur:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informatie"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Voeg Peer Toe"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:poort"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Algemeen</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Toevoegen"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Verwijder"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Voeg Infohash toe"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackers:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Host toevoegen"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Doel:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nieuwe Uitgave"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Ga naar Website"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Deze dialoog in de toekomst niet tonen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Uploadsnelheid:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Binnengehaald:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Geüpload:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Naam:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Commentaar:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Voltooid verplaatsen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Seeden stoppen bij ratio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Verwijder op ratio"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "Trackers b_ewerken"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Bovenkant"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Onderkant"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Torrents Toevoegen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Toevoegen in ge_pauzeerde status"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioriteit op eerste/laatste delen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Toepassen Op Alle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Terugzetten Naar Standaardinstellingen"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Deluge _tonen"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Download snelheidslimiet"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Upload snelheidslimiet"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Verlaten & Daemon Afsluiten"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Bewerk trackers"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Voeg een peer toe met zijn IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Tracker Bewerken"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Geef een pad op afstand"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Pad:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Torrent aanmaken"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Map"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Extern Pad"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Bestanden"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseeds"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Stukjes grootte:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Stel Prive vlag in"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Deze torrent aan de sessie toevoegen"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opties"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Sla .torrent op als"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Voortzetten"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Geselecteerde torrents voortzetten."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opt_ies"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Wachtrij"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Tracker vernie_uwen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Torrent ve_rwijderen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Hercontrole _Forceren"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "label"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Alles _selecteren"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pauzeer alles"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "_Alle Voortzetten"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Connectielimiet"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Upload _Slot Limiet"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatisch Beheerd"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Tracker Toevoegen"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URL toevoegen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Alles uit klappen"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Opdracht"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Van"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Tot"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Gebruik willekeurige poorten"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Inkomend"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Uitgaand"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maximum connecties"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maximum aantal uploadslots"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximale half-openstaande connecties"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maximum aantal verbindingspogingen per seconde"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Beperk IP overhead samen met doorvoersnelheid."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Deelverhouding"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Type"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Toepassen"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP lijst (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Tekst (gezipt)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Tekst (zonder compressie)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokkeerlijst"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Foutieve leider"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Ongeldige magische code"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ongeldige versie"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dagen"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Naar nieuwe lijst controleren iedere:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Bij opstarten blokkeerlijst importeren"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Instellingen</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Indien noodzakelijk het blokkeerlijst-bestand downloaden en het bestand "
+"importeren."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Download en Import controleren"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Een nieuwe blokkeerlijst downloaden en importeren."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Download en Import forceren"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blokeerlijst is up to date"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opties</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Type:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Datum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Bestandsgrootte:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent compleet"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent toegevoegd"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Uitvoeren"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Gebeurtenis"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Voeg opracht toe</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Opdrachten</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Kies een map"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maximale Upload-snelheid:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maximum verbindingen:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maximum aantal uploadslotes:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maximale Download-snelheid"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandbreedte</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Wachtrij</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "seconden"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Schakel webinterface in"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Schakel SSL in"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Luisterpoort:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Ongeldig label, geldige tekens: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Leeg label"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Label bestaat reeds"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Onbekend label"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Onbekende torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Label _Opties"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Verwijder Label"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "Label _Toevoegen"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Label Opties"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Label"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Label Opties</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Per torrent maximale instellingen toepassen:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Wachtrij-instellingen toepassen:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 regel per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Label automatisch toepassen:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Label toevoegen"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Label toevoegen</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Gebruik de zijbalk om labels toe te voegen, te wijzigen en te "
+"verwijderen.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Labels</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+"Er heeft een fout plaatsgevonden tijdens het zenden van de notificatie "
+"email: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Uitpakken naar:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Maak een submap met de naam van de torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Deze optie maakt een submap met de naam van de torrent binnen de "
+"geselecteerde extractiemap en plaatst de uitgepakte bestanden daar."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Download limiet"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Upload limiet"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Actieve Torrents:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Dal Instellingen</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Uitloggen"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Opslaan"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Verplaatsen"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Inloggen"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Stel maximaal aantal verbindingen in"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Download snelheid"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Stel maximale downloadsnelheid in"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Upload snelheid"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Stel maximale uploadsnelheid in"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocol dataverkeer Download/Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Verbinden"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filters"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Limiet downloadsnelheid"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Limiet uploadsnelheid"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Verbindingslimiet"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Upload plaatsen limiet"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Tracker vernieuwen"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Forceer controle"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Details"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Standaard"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Besloten"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Ja"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Laat het weten wanneer er nieuwe versies zijn"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximaal aantal verbindingen:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maximale downloadsnelheid (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maximale uploadsnelheid (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximum half-open verbindingen:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maximum connectie pogingen per seconde"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maximale upload plaatsen"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Verversen"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Bestand"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Toevoegen in gepauseerde status"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Download"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/nn.po b/deluge/i18n/nn.po
new file mode 100644
index 0000000..618123c
--- /dev/null
+++ b/deluge/i18n/nn.po
@@ -0,0 +1,6180 @@
+# Norwegian Nynorsk translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Alle"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Sjekkar"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Lastar ned"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Deler"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pausa"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Lagd i kø"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Feil"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Namn"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Framgang"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Storleik"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Nedlasta"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Opplasta"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Tilhøve"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Nedlastingshastigheit"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Opplastingshastigheit"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Nedlastingsavgrensing"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Opplastingsavgrensing"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Mottakarar"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Lagd til"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Tid att"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatisk handsaming"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Åtvaring"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Kunngjering OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Kunngjering sendt"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Grensesnitt"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Nedlastingar"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandbreidde"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Kø"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Nettverk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Mellomtenar"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Mellomlager"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Anna"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Programtillegg"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Åland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algerie"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikansk Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktis"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua og Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austerrike"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Aserbajdsjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Kviterussland"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgia"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia-Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvetøya"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Det britiske territoriet i Indiahavet"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodsja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kapp Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kaymanøyane"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Den sentralafrikanske republikk"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tsjad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Juleøya"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosøyane"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komorane"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Den demokratiske republikken Kongo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cookøyane"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Elfenbeinskysten"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Kypros"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tsjekkia"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danmark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Den dominikanske republikk"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvatorial-Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estland"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandsøyane"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Færøyane"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frankrike"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Fransk Guyana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Fransk Polynesia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Dei franske sørterritoria"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Tyskland"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Hellas"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grønland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard- og McDonaldøyane"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vatikanstaten"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hongkong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran, Den islamske republikk"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Øya Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordan"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kasakhstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea, Den demokratiske folkerepublikk"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Sør-Korea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgisistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxembourg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonia, Den tidlegare jugoslaviske republikken"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivane"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshalløyane"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexico"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesiaføderasjonen"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marokko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mosambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Nederland"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Dei nederlandske Antillane"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Ny-Caledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "New Zealand"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolkøya"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Nord-Marianane"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Noreg"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestina"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Ny-Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filippinane"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairnøyane"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polen"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Russland"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthélemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts og Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint-Pierre og Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent og Grenadinane"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé og Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudi-Arabia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychellane"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomonøyane"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Sør-Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Sør-Georgia og Sør-Sandwichøyane"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spania"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard og Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Sverige"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Sveits"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadsjikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Aust-Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad og Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Tyrkia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks- og Caicosøyane"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Dei sameinte arabiske emirata"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Storbritannia"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "USA"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "USAs ytre småøyar"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Usbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Jomfruøyane, Dei britiske"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Jomfruøyane, Dei amerikanske"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis- og Futunaøyane"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Vest-Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Tenesten køyrer ikke"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Filnamn"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Klasse"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Vel ei fil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Vel ei mappe"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Lagra .torrent-fil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrentfiler"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Alle filer"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Eit node-til-node fildelingsprogram\n"
+"som nyttar BitTorrent-protokollen."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klient:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Noverande utviklarar:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Tidlegare utviklarar og bidragsytarar:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Tenar:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ugyldig fil"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Vel ei .torrent-fil"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Ugyldig URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "er ikkje ein gyldig URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Lastar ned …"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Nedlastinga feila"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Klarte ikkje lasta ned:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detaljar:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Brukarnamn:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Passord:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Anna ..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Ikkje tilkopla"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT-nodar"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Ledig diskplass"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritet"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_ler"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Alternativ"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Ikkje tilkopla..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Uavgrensa"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Ned"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Opp"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Fråkopla"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Tilkopla"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Tilkopla"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Vert"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versjon"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Verksam"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Programtillegg"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Vel programtillegg"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Tilstandar"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackerar"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Inga etikett"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Klientversjon</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrentar sett i kø"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent sett i kø"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "På"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Av"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresse"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klient"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrentar i kø"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Fjern"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fil"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Innstillingar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Vis ikon i systemtrauet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Flytt ferdige til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopi av .torrent-filer til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Last ned til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioriter fyrste og siste bit av torrenten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioriter fyrste og siste bit av kvar fil i torrenten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Vis alltid"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Tilkoplingar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Nedlastingshastigheit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Opplastingshastigheit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiv Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Test vald port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Frå:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Til:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivå:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Vertsnamn:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Innstillingar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Mellomlagerstorleik:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ja, ver ven og send anonym statistikk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Tilkoplingar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Sjekk vevsida etter nye utgjevingar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Utgåve:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Forfattar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Heimeside:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "E-post til forfattar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Generelt</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Legg til infohash (unik kode)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash (unik kode):"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackerar:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Mål:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Namn:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Stopp deling ved forhold:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Fjern ved forhold"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Endra Trackerar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Øvst"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Nedst"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Legg til torrentar"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Sjekksum"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Legg til i _pausa tilstand"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritér fyrste/siste bit"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Bruk på alle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Still attende til standardinnstillingar"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Ne_dlastingsfart-avgrensing"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Opplastingsfart-avgrensing"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Val"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Hald Fram"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Hald fram valde torrentar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Alternat_iv"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Kø"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Oppdater Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Fje_rn Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Sjekk på ny"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etikett"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Vel alle"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Set alle på pause"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Hald fram alle"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Tilkoplingsavgrensing"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Mak_s opplastingsplassar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatisk handsama"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Legg til URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent-klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent-klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Last ned og del filer over BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Kommando"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Bruk tilfeldige portar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blokkeringsliste"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Ugyldig magikode"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Ugyldig versjon"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dagar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Sjå etter ny liste kvar:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Legg inn blokkeringsliste ved oppstart"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Innstillingar</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Last ned blokkeringslista om naudsynt og legg den inn."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Sjekk nedlasting og importer"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Tving nedlasting og importer"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blokkeringslista er oppdatert"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Alternativ</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Skriv:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Dato:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Filstorleik:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informasjon</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent ferdig"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent lagt til"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Køyr"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Hending"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Legg til kommando</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Kommandoar</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Stien finst ikkje."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Vel ei mappe"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Handling for torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etikett: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etikett</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maks opplastingshastigheit:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maks tilkoplingar:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maks opplastingsplassar:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maks nedlastingshastigheit:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandbreidde</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Set i kø til:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Kø</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge sitt vevgrensesnitt er ikkje installert, ver så venleg å installera\n"
+"grensesnittet og prøv igjen"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Bruk SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Lytteport:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Ugyldig etikett, gyldige teikn er: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tom etikett"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Etiketten finst allereie"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Ukjend etikett"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Ukjend torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Legg til etikett"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Etikettval"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etikett"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Etikettval</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Bruk per torrent maks-innstillingar:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Bruk kø-innstillingar:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 linje per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Legg automatisk til etikett:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Legg til etikett"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Legg til etikett</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Nytt sidelinja for å leggja til, endra og fjerna etikettar. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etikettar</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Sprettopp-påminning er ikkje verksam."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame er ikkje installert"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Lydpåminning feila %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Lydpåminning var vellukka"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Vel lydfil"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Det oppstod ein feil ved sending av påminning via e-post: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "E-post med påminning sendt."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Denne e-posten kjem for å informera deg om at Deluge nett har lasta ned "
+"\"%(name)s\", som inneheld %(num_files)i filar.\n"
+"For å unngå å motta fleire av desse e-postane, er det berre å skru av "
+"påminning via e-post i Deluge sine innstillingar.\n"
+"\n"
+"Takk,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Lyd aktivert"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Mottakarar</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Tenaren krev TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Påminningar på e-post</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Denne konfigurasjonen inneber ikkje at du faktisk vil få påminningar om alle "
+"desse hendingane."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Tingingar"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Lydtilpassing"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Pakk ut til:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Lag undermappe med torrentnamn"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Denne operasjonen vil lage ei undermappe ved hjelp av torrenten sitt namn "
+"inni den valgte utpakkingmappa og legge dei utpakka filene der."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Nedlastingsgrense:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Opplastingsgrense:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktive torrentar:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktive nedlastingar:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktive opplastingar:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Trege innstillingar</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Vert:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Sett maks nedlastingshastigheit"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Sett maks opplastingshastigheit"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protokolltrafikk for nedlasting/opplasting"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Få varsling når det kjem nye utgåver"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/oc.po b/deluge/i18n/oc.po
new file mode 100644
index 0000000..3d87848
--- /dev/null
+++ b/deluge/i18n/oc.po
@@ -0,0 +1,6171 @@
+# Occitan (post 1500) translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Occitan (post 1500) <oc@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "Kio"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "Mio"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "Gio"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "Kio/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "Mio/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "Gio/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Totes"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Activat"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Verificacion"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Telecargament en cors"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Partiment"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "En pausa"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "En fila d'espèra"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Error"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nom"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progression"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Estat"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Talha"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Telecargat"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Mandat"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Ratio"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Velocitat de telecargament"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Velocitat d'emission"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Pars"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Utilitat"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Apondut"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracador"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Primièr/darrièr prioritaris"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Gerit automaticament"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Avertiment"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Anonci valid"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anonci mandat"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfàcia"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Telecargaments"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Benda passanta"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Metre en fila d'espèra"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Ret"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Servidor mandatari (proxy)"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Amagatal"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Autra"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Demòni"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Moduls extèrnes"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Åland, illas"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Argeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Americanas"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andòrra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angòla"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antartida"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua e Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Austràlia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Àustria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaitjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladèsh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bielorussia"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgica"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudas"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Botan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolívia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bòsnia e Ercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Illa Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Territòris britanics de l'ocean indian"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Sultanat de Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambòtja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Cameron"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canadà"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cap Verd"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Illas Caiman"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Republica Centrafricana"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Chad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Illa Cristmas"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Illas Cocos (Keeling)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colómbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comòras"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Còngo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Republica Democratica de Còngo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Illas Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Còsta Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Còsta d'Evòri"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croàcia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Chipre"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Republica chèca"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danemarc"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Giboti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Republica dominicana"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Eqüator"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipte"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Lo Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Guinèa Eqüatoriala"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrèa"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estònia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiòpia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Illas Maldivas"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Illas Feròe"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlàndia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "França"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Guiana francesa"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinesia francesa"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Tèrras australas francesas"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gàmbia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Alemanha"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grècia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenlàndia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalope"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinèa"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinèa Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haití"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard, Illa e McDonald, Illas"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Santa Ses (Estat de la Ciutat de Vatican)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ongria"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islàndia"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Índia"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraq"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Illa de Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israèl"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Itàlia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japon"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Cazacstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Corèa, Republica populara democratica de"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Corèa, Republica de"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kowait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirghizstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Lao, Republica democratica populara"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letònia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Liban"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libèria"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libiana, Jamahiriyya aràbia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituània"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemborg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedònia, anciana Republica iogoslava de"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malàisia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivas"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Illas Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinica"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritània"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Maurici"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Maiòta"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexic"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Micronesia, Estats Federats de"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldàvia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Mónegue"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marròc"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Moçambic"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Birmania"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Païses Basses"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antilhas neerlandesas"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nòva Caledònia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nòva Zelanda"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Nigèr"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigèria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfòlk, Illa"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Illas Marianas del Nòrd"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norvègia"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Paquistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestina, Territòris ocupats"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papoa-Nòva Guinèa"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguai"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peró"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipinas"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Illas Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polonha"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reünion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romania"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Federacion de Russia"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Santa Elena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Sant Kitts e Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Santa Lúcia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Sant Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Sant Pèire e Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Sant Vincenç e las Grenadinas"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Sant Marin"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé e Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arabia Saudita"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seichèlas"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapor"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Eslovaquia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Eslovènia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Illas Salamon"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Africa del Sud"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Georgia del Sud e las illas Sandwich del Sud"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Espanha"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sodan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard e illa Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suècia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Soïssa"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Republica aràbia de Siria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tatgiquistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, Republica Unida de"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tailàndia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor Èste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Tògo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tònga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinitat e Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turquia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turcmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Illas Turcas e Caïcas"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Oganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ucraïna"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Emirats Arabis Units"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Reialme Unit"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Estats Units d’America"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Illas menoras aluenhadas dels Estats Units d'America"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguai"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Ozbequistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Veneçuèla"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Illas verges britanicas"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Illas verges dels Estats Units"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis e Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Sahara occidental"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Iemèn"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Demòni pas aviat"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nom del fichièr"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Ordenat"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Causissètz un fichièr"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Causissètz un dorsièr"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Salvar lo fichièr .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Fichièrs torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Totes los fichièrs"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Client:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Servidor :"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent :"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Fichièr invalid"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Seleccionar un .torrent de dobrir"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL invalida"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Telecargament…"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Telecargament fracassat"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detalhs:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nom d'utilizaire :"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Senhal :"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Autres..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Pas connectat(-ada)"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nosèls DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritat"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "E_stat"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalhs"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Fichièrs"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Pars"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opcions"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Illimitat"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Davalar"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Montar"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Desconnectat"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "En linha"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Connectat"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Estatut"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Òste"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Version"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Error al moment de l'apondon de l'òste"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Activat"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Modul extèrne"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Seleccionar lo Modul"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Modul Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Tracadors"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Pas cap"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiquetas"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Pas cap d'etiqueta"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents en fila d'espèra"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent apondut a la coa"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Metre en illimitat"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Activat"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Desactivat"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adreça"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creacion d'un torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Suprimir"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fichièr"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Apondre un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Crear un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Quitar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Edicion"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Gestionari de _connexion"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Afichatge"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Barra d'_espleches"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "Barra _laterala"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Barra d'estat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "O_nglets"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Colomnas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Panèl lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Far veire las categorias _voidas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Afichar los _tracadors"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Ajuda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Questions frequentas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Comunautat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Apondre un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Apondre un torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Suprimir lo torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Suprimir lo torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Metre en pausa los torrents seleccionats"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Contunhar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Metre lo torrent dins la coa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Desplaçar cap amont"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Apondre a la fin"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferéncias"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Gestionari de connexion"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Reduire dins la barra de notificacions a la tampadura"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Desplaçar los acabats cap a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Telecargar cap a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Apondre lo torrent en mòde pausa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Connexions:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocitat de recepcion:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocitat de transferiment:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Pòrt actiu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testar lo pòrt actiu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Dempuèi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Cap a:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivèl:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Escambi de pars"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nom d'òste :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Pòrt :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Paramètres"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Escrituras:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blòts legits:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Nombre de blòts legits:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lecturas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Talha de l'escondedor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Emplaçament :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Pòrt del demòni:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Connexions"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Version:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Site Web :"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informacion"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>General</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Apondre un òste"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destinacion:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Version novèla"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Anar al site Web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nom:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comentaris:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Desplaçar los fichièrs completats:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Arrestar lo mandadís al ratio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Suprimir a aqueste ratio"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Modificar los tracadors"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Amont"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Aval"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Apondre de torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Apondre en _mòde pausa"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Aplicar a totes"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Afichar Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Quitar e atudar lo demòni"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Modificar los tracadors"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracador:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Entrar lo camin distant"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Camin:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Crear un torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Dorsièr"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Camin distant"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Partiments Web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Talha de las pèças:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Marcar coma Privat"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opcions"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opc_ions"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Metre en espèra"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Suprimir lo torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiqueta"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Seleccionar tot"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Metre tot en _pausa"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Nombre de _connexions maximum"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Gestion automatica"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Apondre un tracador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Apondre una URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL :"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Desplegar tot"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Client BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Client BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Recep e parteja de fichièrs via BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Comanda"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Utilizar de pòrts aleatòris"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Lista d'IP Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Tèxte SafePeer (Compressat)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Tèxte PeerGuardian (Pas compressat)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Filtre d'exclusion"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Leader invalid"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Còdi magic invalid"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Version invalida"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Jorns"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Verificar la preséncia d'una novèla lista cada:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importar la lista de blocatge a l'aviada"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Paramètres</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Telecargar lo fichièr de lista de blocatge se necessari e importar lo "
+"fichièr."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Verificar lo telecargament e l'importar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Telecargar una novèla lista de blocatge e l'importar."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forçar lo telecargament e importar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "La lista de blocatge es a jorn"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opcions</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipe :"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data :"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Talha del fichièr :"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informacions</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent complet"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent apondut"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Executar"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Eveniment"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Apondre una Comanda</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Comandas</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Seleccionatz un dorsièr"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiqueta: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiqueta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "General"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Velocitat maximala de mandadís:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Nombre maximal de connexions:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Velocitat maximala de telecargament:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Benda passanta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Fila d'espèra</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "minutas"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 minuta"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 segonda"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "segondas"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Resolucion"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Fonts/Pars"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Activar l'interfàcia web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Activar lo SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Pòrt d'escota :"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etiqueta invalida, caractèrs valids:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etiqueta voida"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "L'etiqueta existís ja"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etiqueta desconeguda"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent desconegut"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opcions del labèl"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Levar l'etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Apondre una etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opcions d'etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Labèl"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opcions d'etiquetas</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Aplicar los paramètre maximum per torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Aplicar los paramètres de la fila d'espèra:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 linha per tracador)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aplicar automaticament l'etiqueta:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Apondre una etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Apondre una etiqueta</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Utilizar lo panèl lateral per apondre, modificar o suprimir "
+"d'etiquetas.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiquetas</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Causissètz un fichièr de son"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Son activat"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Extractor"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extraire cap a :"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Crear un sosrepertòri amb lo nom del torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Aquesta opcion va crear un sosrepertòri en utilizant lo nom del torrent. "
+"Aqueste sosrepertòri serà situat dins lo repertòri seleccionat per "
+"l'extraccion de las donadas."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limit de telecargament :"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limit de cargament :"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrents actius"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Limits</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Òste:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Nombre maximum de connexions"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Velocitat de telecargament"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Velocitat de telecargament maximala"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Velocitat d'emission"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Velocitat d'emission maximala"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Trafic del protocòl (recepcion/mandadís)"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtres"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privat"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximum de connexions:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/pl.po b/deluge/i18n/pl.po
new file mode 100644
index 0000000..509c218
--- /dev/null
+++ b/deluge/i18n/pl.po
@@ -0,0 +1,6197 @@
+# Polish translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2023-11-06 18:51+0000\n"
+"Last-Translator: Cas <Unknown>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Wszystkie"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktywne"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Alokowane"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Sprawdzane"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Pobierane"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Wysyłane"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Wstrzymane"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Zakolejkowane"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Błędne"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nazwa"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Postęp"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Stan"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Rozmiar"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Pobrano"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Wysłano"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Pozostało"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Ułamek"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Szybkość pobierania"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Szybkość wysyłania"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limit Pobierania"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Limit Wysyłania"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Maksymalnie Połączeń"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Maksymalnie Slotów Wysyłania"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Uczestnicy"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Posiadacze"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Dostępność"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Posiadaczy:Uczestników"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Dodano"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Folder pobrania"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Razem wysyłano czasu"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Razem aktywności czasu"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Ostatnia aktywność"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Zakończono o"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Ostatnio widziano cały o"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Zakończono o"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Pozostało"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Współdzielony"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Kolejkuj Pierwszy/Ostatni"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Sekwencyjne pobieranie"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatycznie zarządzany"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Zatrzymaj na ułamku"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Ułamek do zatrzymania"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Usuń na ułamku"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Przenieś po zakończeniu"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Właściciel"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Fragmentów"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Cyklów seedowania"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "Początkowe seedowanie"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Ostrzeżenie"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Aktualizacja powiodła się"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Żądanie aktualizacji wysłane"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfejs"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Pobierane"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Przepustowość"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Kolejka"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Sieć"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Pośrednik sieciowy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Bufor podręczny"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Inne"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Demon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Wtyczki"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Nie pobieraj"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Niski priorytet"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Średni priorytet"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Wysoki priorytet"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Wyspy Alandzkie"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algieria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Amerykańskie"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andora"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktyda"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua i Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentyna"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbejdżan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Wyspy Bahama"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrajn"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesz"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Białoruś"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgia"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudy"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Boliwia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bośnia i Hercegowina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Bostwana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Wyspa Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazylia"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Brytyjskie Terytorium Oceanu Indyjskiego"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Sułtanat Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bułgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Republika Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodża"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Republika Zielonego Przylądka"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kajmany"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Republika Środkowej Afryki"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Czad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Chiny"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Wyspa Bożego Narodzenia"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Wyspy Kokosowe"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komory"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Demokratyczna Republika Konga"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Wyspy Cooka"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kostaryka"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Wybrzeże Kości Słoniowej"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Chorwacja"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cypr"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Czeska Republika"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dania"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Dżibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominikana"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Republika Dominikańska"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekwador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Salwador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Gwinea równikowa"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Erytrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandy"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Wyspy Owcze"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidżi"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlandia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francja"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Gujana Francuska"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinezja Francuska"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Francuskie Terytoria Południowe i Antarktyczne"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gruzja"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Niemcy"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grecja"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grenlandia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Gwadelupa"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Gwatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Gwinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Gwinea Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Gujana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Wyspa Heard i Wyspy McDonalda"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Watykan"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Węgry"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islandia"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indie"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonezja"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlandia"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Wyspa Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Izrael"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Włochy"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamajka"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japonia"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazachstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Korea Północna"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Korea Południowa"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwejt"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Ludowa Republika Demokratyczna Laosu"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Łotwa"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Liban"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litwa"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luksemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makau"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Republika Macedonii"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malezja"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Malediwy"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Wyspy Marshalla"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martynika"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauretania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Majotta"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Meksyk"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronezja"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Mołdawia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Czarnogóra"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Birma"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Holandia"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antyle Holenderskie"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nowa Kaledonia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nowa Zelandia"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Wyspa Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Mariany Północne"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norwegia"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Terytorium Palestyńskie, okupowane"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua-Nowa Gwinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paragwaj"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipiny"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polska"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugalia"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Portoryko"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumunia"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Rosja"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint-Barthélemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Święta Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts i Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre i Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent i Grenadyny"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Wyspy Świętego Tomasza i Książęca"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arabia Saudyjska"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seszele"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Słowacja"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Słowenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Wyspy Salomona"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "RPA"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Georgia Południowa i Sandwich Południowy"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Hiszpania"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard i Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Suazi"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Szwecja"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Szwajcaria"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadżykistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tajlandia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor Wschodni"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trynidad i Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunezja"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turcja"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks i Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Zjednoczone Emiraty Arabskie"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Wielka Brytania"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Stany Zjednoczone"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Dalekie Wyspy Mniejsze Stanów Zjednoczonych"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Urugwaj"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Wenezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Wietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Brytyjskie Wyspy Dziewicze"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Wyspy Dziewicze Stanów Zjednoczonych"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis i Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Sahara Zachodnia"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Demon nie jest uruchomiony"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nazwa pliku"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Grupa"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Wybierz plik"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Wybierz katalog"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Zapisz plik .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Pliki .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Wszystkie pliki"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Wprowadź hasło, aby pokazać Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Wprowadź hasło, aby zamknąć Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klient:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Bieżący deweloperzy:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Poprzedni deweloperzy lub kontrybutorzy:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Serwer:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Niewłaściwy plik"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Wybierz plik .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Nieprawidłowy adres URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "nie jest poprawnym URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Pobieranie..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Błąd pobierania"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Plik do pobrania:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Szczegóły:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Użytkownik:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Hasło:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Zabezpieczone hasłem"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Inna..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Niepołączony"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Węzły DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Wolna Przestrzeń Dyskowa"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Tak"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nie"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priorytet"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Wszystko"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Stan"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Szczegóły"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "P_liki"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Uczestnicy"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opcje"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Nie połączono..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Bez limitu"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Pob."
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Wys."
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Offline"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Online"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Połączono"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Wersja"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Nie można uruchomić usługi!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Błąd przy dodawaniu hosta"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Nazwa użytkownika"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Poziom"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Włączone"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Wtyczka"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Wybierz wtyczkę"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Pliki *.egg pluginów"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Stany"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackery"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Brak"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administracja"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etykiety"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Brak etykiety"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Wersja Klienta</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrentów w kolejce"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent dodany do kolejki"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Ustaw brak ograniczenia"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Włączone"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Wyłączony"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Wyłącz"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adres"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klient"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Tworzenie torrenta"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrenty w kolejce"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Usuń"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automatycznie dodaj torrenty przy połączeniu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "P_lik"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Dodaj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Stwórz torrenta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "Wy_jdź"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Edycja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Menadżer połączeń"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Widok"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Pasek narzędzi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "Panel _boczny"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Pasek _stanu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Zakładki"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolumny"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Boczny panel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Wyświetl puste kategorie"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Pokaż _trackery"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Pomoc"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Strona domowa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Najczęściej zadawane pytania"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Dodaj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Dodaj plik torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Usuń torrenta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Usuń torrenta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Wstrzymaj wybrane torrenty"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Wstrzymaj"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Wznów wybrane torrenty"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Wznów"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Przenieś o jedno miejsce w kolejce w górę"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Przenieś o jedno miejsce w kolejce w górę"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Przenieś o jedno miejsce w kolejce w dół"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Przenieś o jedno miejsce w kolejce w dół"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Opcje"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Menadżer połączeń"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Wymuszenie"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Wyłączone"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Uzgadnianie"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Obydwa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Pokaż prędkość dla sesji w pasku tytułu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Pokaż ikonę w obszarze powiadamiania"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimalizowanie do obszaru powiadamiania po zamknięciu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Uruchamiaj w obszarze powiadamiania"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Zabezpiecz obszar powiadamiania hasłem"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Przenieś zakończone do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Zapisz kopię plików .torrent w:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Pobierz do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Pobieraj najpierw pierwsze i ostatnie części plików"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Pobieraj najpierw pierwsze i ostatnie części plików"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Dodaj torrenty jako Wstrzymane"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Zawsze pokazuj"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Okienko na wierzchu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Maksymalna ilość możliwych połączeń. Ustaw -1 dla braku ograniczeń."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Liczba połączeń:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksymalna ilość połączeń wychodzących dla wszystkich plików torrent. Ustaw -"
+"1 dla braku ograniczeń."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksymalna prędkość pobierania dla wszystkich plików .torrent. Ustaw -1 dla "
+"braku ograniczeń."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Prędkość pobierania:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maksymalna prędkość wysyłania dla wszystkich plików .torrent. Ustaw -1 dla "
+"braku ograniczeń."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Prędkość wysyłania:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorowanie limitów w sieci lokalnej"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Wlicz narzut protokołu IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Jeśli zaznaczone, szacunkowy narzut protokołu TCP/IP jest odejmowany od "
+"limitów przepustowości by zapobiec ich przekroczeniu przez całkowity ruch."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Maksymalna ilość połączeń wychodzących na torrent. Ustaw -1 dla braku "
+"ograniczeń."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Maksymalna liczba połączeń na torrent. Ustaw -1 dla braku ograniczeń."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Maksymalna prędkość wysyłania dla każdego torrenta. Ustaw -1 aby wyłączyć "
+"limit."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Losowe"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktywny port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testuj port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Od:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Poziom:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Szyfrowanie"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Uniwersalne Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protokół mapowania portów NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Wymiana partnerów"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Usługa wyszukująca znajduje pobierających w twojej sieci lokalnej."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Rozproszona tablica skrótów (DHT) może pomóc zwiększyć ilość aktywnych "
+"połączeń."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Bajt TOS dla uczestników"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nazwa hosta:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Rozmiar cache (bloków 16 KiB)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Wygaśnięcie cache (w sekundach)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Zapisane bloki:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Zapisów:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Odczytane bloki:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Liczba bloków podanych z cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Rozmiar Cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Rozmiar Cache Odczytu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Pomóż nam ulepszać Deluge wysyłając nam numer wersji Pythona, PyGTK, "
+"systemu oraz typ procesora. Żadne inne informacje nie są wysyłane."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Tak, wysyłaj anonimowe statystyki"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Położenie:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Jeśli Deluge nie będzie mógł znaleźć pliku bazy danych pod tą ścieżką, użyje "
+"DNS-u, aby ustalić kraj uczestnika."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Port demona:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Zezwól na połączenia zdalne"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Połączeń"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Okresowo sprawdzaj stronę w poszukiwaniu nowych wersji"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Wersja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Strona domowa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "E-mail Autora:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informacje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Dodaj Peera"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "nazwa hosta:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Ogólne</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Dodaj"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Usuń"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Dodaj Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackery:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Dodaj hosta"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Położenie:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nowa wersja"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Idź do strony domowej"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Nie pokazuj więcej tego okienka"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nazwa:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Komentarze:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Przenieś zakończone:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Przestań rozsiewać przy współczynniku:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Usuń, gdy ratio osiągnie wartość"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Edycja trackerów"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Góra"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Dół"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Dodaj torrenty"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Dodaj jako _wstrzymane"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Kolejkuj Pierwsze/Ostatnie fragmenty"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Zastosuj do wszystkich"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Przywróć ustawienia domyślne"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Pokaż Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Limit prędkości _pobierania"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Limit prędkości _wysyłania"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Zakończ i wyłącz demona"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Edycja trackerów"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Dodaj adres IP uczestnika"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Edycja Trackera"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Wprowadź zdalną ścieżkę"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Ścieżka:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Stwórz torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Fol_der"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Zdalna ścieżka"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Pliki"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Serwery rozsiewające"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Rozmiar części:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Ustaw jako prywatny"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Dodaj ten torrent do sesji"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opcje"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Zapisz .torrent jako"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Wstrzymaj"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Wz_nów"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Wznów zaznaczone torrenty"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "O_pcje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Kolejka"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Aktualizuj informacje o trackerze"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Usuń torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Wymuś _sprawdzenie"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etykieta"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Zaznacz wszystko"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Wstrzymaj wszystkie"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Wz_nów wszystkie"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Limit p_ołączeń"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limit dla p_ołączeń wychodzących"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "Zarządzany _automatycznie"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Dodaj tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Dodaj URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Rozwiń _wszystko"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Klient BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Klient BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Pobieraj i udostępniaj pliki poprzez BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Polecenie"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Hasło"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Od"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Do"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Użyj losowych portów"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Przychodzące"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Wychodzące"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maksymalna liczba połączeń"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maksymalna liczba połączeń wychodzących"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maksymalna liczba połączeń półotwartych"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maksymalna liczba prób połączeń na sekundę"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Wlicz narzut protokołu IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Współczynnik udostępniania (ratio)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Typ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Zastosuj"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Lista Emule IP (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Tekst SafePeer (Zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Tekst PeerGuardian (Nieskompresowany)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Lista zablokowanych"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Błędny prowadnik"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Niepoprawny kod magiczny"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Nieprawidłowa wersja"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dni"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Sprawdź czy jest nowa lista co:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importuj listę zablokowanych przy starcie"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Ustawienia</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Pobierz plik z listą zablokowanych jeżeli to konieczne i importuj go."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Sprawdź czy jest nowa lista i importuj"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Pobierz nowy plik z listą zablokowanych i importuj go."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Wymuś pobranie listy i importuj"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blocklista jest zaaktualizowana"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opcje</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Typ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Rozmiar pliku:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informacje</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent ukończony"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent dodany"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent został usunięty"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Uruchom"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Zdarzenie"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Dodaj polecenie</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Polecenia</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Dodaj automatycznie"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Obserwowany folder nie istnieje"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Ścieżka nie istnieje."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Preferncje obserwowanego folderu"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Wybierz katalog"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Obserwowany folder</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Usuń plik .torrent po dodaniu"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Dołącz rozszerzenie po dodaniu:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".dodano"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Przenieś pobrane</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etykieta: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etykieta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Główny"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maks prędkość wysyłania"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maksymalna liczba połączeń:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maks liczba połączeń wychodzących"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maks prędkość pobierania"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Łącze</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Zarządzany automatycznie:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Dodaj Wstrzymane:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Zakolejkuj do:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Kolejka</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Foldery do Obserwowania:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekund"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebUi"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Interfejs sieciowy Deluge nie jest zainstalowany, zainstaluj go \n"
+"i spróbuj ponownie"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Aktywuj interfejs sieciowy"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Włącz SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Port nasłuchujący:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Niepoprawna etykieta. Poprawne znaki: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Pusta etykieta"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Etykieta już istnieje"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Nieznana etykieta"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Nieznany torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opcje etykiet"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Usuń etykietę"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Dodaj etykietę"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opcje etykiety"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etykieta"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opcje etykiety</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Zastosuj dla każdego torrenta ustawienia maks."
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maksimum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Zastosuj ustawienia kolejki:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 linia na tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automatycznie zastosuj etykietę:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Dodaj etykietę"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Dodaj etykietę</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Użyj bocznego panelu żeby dodać, edytować i usuwać etykiety. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etykiety</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Przypominanie migotaniem ikony"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Wyskakujące powiadomienie jest wyłączone."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Wyskakujące powiadomienie pokazane"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Dźwiękowe powiadomienia wyłączone"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame nie jest zainstalowany"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Nie można odtworzyć powiadomienia dźwiękowego: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Dźwiękowe powiadomienie o zakończeniu"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Zakończony torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Torrent \"%(name)s\" zawierający %(num_files)i plik(ów) został pobrany."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Powiadomienia"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Wybierz plik z dźwiękiem"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Wystąpił błąd podczas wysyłania powiadomienia email: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Powiadomienie e-mail zostało wysłane."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Zakończenie Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Otrzymałeś tą wiadomość ponieważ Deluge skończył pobieranie \"%(name)s\", "
+"składającego się z %(num_files)i plików.\n"
+"Jeśli chcesz przestać otrzymywać wiadomości takie jak ta, wyłącz opcję "
+"powiadomień w preferencjach Deluge.\n"
+"\n"
+"Dzięki,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Mruganie ikonką w tray-u"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Wyskakujące okienka aktywne"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Dźwięk włączony"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Powiadomienia</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Adresaci</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Serwer wymaga TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Powiadomienia email</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Subskrypcje"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Preferencje Dźwięku"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Rozpakuj do:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Stwórz podfolder o nazwie torrentu"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Ta opcja stworzy podfolder używając nazwy torrenta w folderze zaznaczonym do "
+"rozpakowania i wstawi tam rozpakowane pliki"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Harmonogram"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limit pobierania:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limit wysyłania"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktywne Torrenty:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktywne Pobieranie:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktywne Wysyłanie:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Ograniczona szybkość</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Wyloguj się"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Zapisz"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Host:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Przenieś"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Zaloguj się"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Ustaw maksymalną liczbę połączeń"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Prędkość pobierania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Ustaw maksymalną prędkość pobierania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Prędkość wysyłania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Ustaw maksymalną prędkość wysyłania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Prędkość pobierania/wysyłania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Połącz"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtry"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Limit prędkości Pob./Wys."
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Limit prędkości Wys,/Pob."
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Limit połączeń"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limit dla połączeń wychodzących"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Odśwież informacje o trackerze"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Wymuś sprawdzanie"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Szczegóły"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Ogólne"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Prywatne"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Tak"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Informuj o nowych wydaniach"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maksymalna liczba połączeń:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maksymalna prędkość pobierania (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maksymalna prędkość wysyłania (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maksymalna liczba półotwartych połączeń:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maksymalna liczba prób połączeń na sekundę:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maksymalna ilość połączeń wychodzących:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Serwer"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Odśwież"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Adres URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Plik"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Dodaj jako wstrzymany"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Szybk. pobierania"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/pms.po b/deluge/i18n/pms.po
new file mode 100644
index 0000000..a72d65d
--- /dev/null
+++ b/deluge/i18n/pms.po
@@ -0,0 +1,6164 @@
+# Piemontese translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Piemontese <pms@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/pt.po b/deluge/i18n/pt.po
new file mode 100644
index 0000000..27ef213
--- /dev/null
+++ b/deluge/i18n/pt.po
@@ -0,0 +1,6219 @@
+# Portuguese translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Portuguese <pt@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Tudo"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Ativos"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "A verificar"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "A receber"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "A enviar"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Em pausa"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Na fila"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Erro"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nome"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Evolução"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Estado"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Tamanho"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Recebido"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Enviado"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Rácio"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Velocidade de receção"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Velocidade de envio"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limite de receção"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Limite de envio"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Disponibilidade"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Adicionado"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Dar prioridade ao primeiro/último"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Gestão automática"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Partes"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Aviso"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Anúncio aceite"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anúncio enviado"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Transferências"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Largura de banda"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Fila"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Rede"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Outras"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Serviço"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afeganistão"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Ilhas Aland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albânia"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Argélia"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Americana"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antártida"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antígua e Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Arménia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Austrália"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Áustria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbeijão"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrein"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bielorrússia"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Bélgica"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benim"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Butão"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolívia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bósnia Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Ilha Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Território Inglês do Oceano Índico"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgária"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Camboja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Camarões"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canadá"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cabo Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Ilhas Caimão"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "República Centro Africana"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Chade"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Ilhas Natal"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Ilhas Cocos (Keeling)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colômbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comores"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "República Democrática do Congo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Ilhas Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Costa do Marfim"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croácia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Chipre"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "República Checa"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dinamarca"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "República Dominicana"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Equador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egito"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Guiné Equatorial"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritreia"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estónia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiópia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Ilhas Malvinas (Falkland)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Ilhas Faroé"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlândia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "França"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Guiana Francesa"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinésia Francesa"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Terras Austrais e Antárticas Francesas"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabão"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gâmbia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Geórgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Alemanha"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Gana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grécia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Gronelândia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Granada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guiné"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guiné Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guiana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Ilha Heard e Ilhas McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Santa Sé (Estado da Cidade do Vaticano)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungria"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islândia"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Índia"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonésia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "República Islâmica do Irão"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraque"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Ilha de Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Itália"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japão"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordânia"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Cazaquistão"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Quénia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "República Popular Democrática da Coreia"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "República da Coreia"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Quirguistão"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "República Democrática Popular do Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letónia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Líbano"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libéria"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Jamairia da Líbia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituânia"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburgo"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macau"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Antiga República Jugoslava da Macedónia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagáscar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malásia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivas"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Ilhas Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinica"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritânia"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Maurícia"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "México"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Estados Federados da Micronésia"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldávia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Mónaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongólia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Monserrate"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marrocos"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Moçambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namíbia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Holanda"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antilhas Holandesas"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nova Caledónia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nova Zelândia"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicarágua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Níger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigéria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Ilha Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Marianas Setentrionais"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Noruega"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omã"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Paquistão"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Território Ocupado Palestiniano"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panamá"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Nova Guiné"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguai"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipinas"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Ilhas Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polónia"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Porto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunião"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Roménia"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Federação Russa"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "São Bartolomeu"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Santa Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "São Cristóvão e Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Santa Lúcia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "São Pedro e Miquelão"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "São Vicente e Granadinas"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "São Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé e Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arábia Saudita"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Sérvia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seicheles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Serra Leoa"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapura"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Eslováquia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Eslovénia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Ilhas Salomão"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somália"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "África do Sul"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Ilhas Geórgia do Sul e Sandwich do Sul"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Espanha"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudão"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard e Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Suazilândia"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suécia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Suíça"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "República Árabe da Síria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadjiquistão"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "República Unida da Tânzania"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tailândia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidade e Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunísia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turquia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turquemenistão"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Ilhas Turks e Caico"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ucrânia"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Emirados Árabes Unidos"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Reino Unido"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Estados Unidos da América"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Ilhas Menores Distantes dos Estados Unidos"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguai"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbequistão"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietname"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Ilhas Virgens Britânicas"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Ilhas Virgens Americanas"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis e Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Saara Ocidental"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Iémen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zâmbia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabue"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "O serviço não está em execução"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nome do ficheiro"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Tier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Escolha o ficheiro"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Escolha a pasta"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Gravar .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Ficheiros .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Todos os ficheiros"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Um programa de partilha peer-to-peer\n"
+"que utiliza o protocolo BitTorrent"
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Cliente:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Programadores atuais:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Programadores ou contributos anteriores:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Esta aplicação é um programa livre. Pode modificá-lo e/ou redistribui-lo nos "
+"termos da GNU General Public License conforme publicada pela Free Software "
+"Foundation; tanto na versão 3 da licença, ou (por opção sua) qualquer versão "
+"posterior.\n"
+"\n"
+"Este programa é disponibilizado no intuito de ser útil, mas NÃO POSSUI "
+"QUALQUER GARANTIA; nem mesmo a garantia imlícita de COMERCIALIZAÇÃO OU "
+"ADEQUAÇÃO A UM OBJETIVO PARTICULAR. Consulte a GNU General Public License "
+"para mais detalhes.\n"
+"\n"
+"É provável que tenha recebido uma cópia da GNU General Public License com "
+"este programa; se tal não ocorreu, consulte <http://www.gnu.org/licenses>\n"
+"No entanto, como exceção, os detentores dos direitos de autor dão permissão "
+"para vincular o código deste programa com a biblioteca OpenSSL. Tem que "
+"cumprir a GNU General Public License para todo o código utilizado sem ser o "
+"da OpenSSL.\n"
+"\n"
+"Se modificar o código ao abrigo desta exceção, pode aplicar esta exceção à "
+"sua versão do código, sendo que a tal não é obrigado. Se não o fizer, "
+"elimine esta declaração de exceção da sua versão. Se eliminar a exceção de "
+"todo o código modificado, elimine-o aqui também."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Servidor:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ficheiro inválido"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Escolha o ficheiro .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL inválido"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "não é um URL válido"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "A receber..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Falha ao receber"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Falha ao receber:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detalhes:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Utilizador:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Senha:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Outras..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Não Conectado"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nós DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Espaço livre em disco"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Sim"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Não"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioridade"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "E_stado"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalhes"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_cheiros"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opções"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Não Conectado..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Ilimitado"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Receber"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Enviar"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Desligado"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Ligado"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Conectado"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Estado"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Servidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versão"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Iniciar serviço"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Parar _serviço"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "incapaz de iniciar o serviço!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Erro ao adicionar servidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Nome do usuário"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nível"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Ativo"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plugin"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Selecione o plugin"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Estados"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackers"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Nada"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administrador"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiquetas"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Sem etiqueta"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Versão do cliente</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents na fila"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent na fila"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Definir como ilimitado"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Ligado"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Desligado"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Desativado"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Endereço"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Cliente"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "A criar torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents na fila"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Remover"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Ao ligar, adicionar torrents automaticamente"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Ficheiro"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Adicionar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Criar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Sair e de_sligar serviço"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Sair"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Editar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Gestor de ligações"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Ver"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Barra de ferramen_tas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "Barra _lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Barra de estado"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Sep_aradores"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Colunas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Barra lat_eral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Mostrar resultados _nulos"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Mostrar _trackers"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Ajuda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Página inicial"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Perguntas frequentes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Comunidade"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Adicionar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Adicionar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Remover torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Remover torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pausar os torrents selecionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Retomar os torrents selecionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Retomar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Mover o torrent para cima"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Mover para cima"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Mover o torrent para baixo"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Mover para baixo"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferências"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Gestor de ligações"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forçado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Desativado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Acordo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Algum"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Mostrar velocidade na barra de título"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Ativar ícone na área de notificação"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimizar para a área de notificação ao fechar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Iniciar na área de notificação"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Área de notificação protegida por senha"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Mover terminados para:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copiar ficheiros .torrent para:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Ao remover, eliminar cópia do ficheiro torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Ao remover o torrent, eliminar a cópia do ficheiro torrent criado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Transferir para:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Dar prioridade às primeiras e últimas partes do torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+"Dar prioridade às primeiras e últimas partes dos ficheiros no torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Adicionar torrents em pausa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Mostrar sempre"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Trazer a caixa de diálogo para a frente"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "N.º máximo de ligações permitidas (-1 para ilimitado)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Ligações:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "N.º máximo de slots para os torrents. (-1 para ilimitado)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Velocidade máxima de transferência para todos os torrents (-1 para ilimitada)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocidade de receção:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Velocidade máxima de envio para todos os torrents (-1 para ilimitada)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocidade de envio:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorar limites na rede local"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Avaliar limites de tráfego IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Se ativa, o tráfego TCP/IP é retirado a partir dos limitadores de "
+"quantidade, para evitar exceder os limites no tráfego total"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "N.º máximo de slots de envio por torrent (-1 para ilimitado)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "N.º máximo de ligações por torrent. (-1 para ilimitado)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Aleatório"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Porta ativa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testar porta ativa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "De:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Para:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nível:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Criptografia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocolo de mapeamento NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Troca de peers"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "O Local Service Discovery encontra os peers na sua rede"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "A tabela hash pode melhorar o valor de ligações ativas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nome da máquina:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Porta:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Tamanho da cache (blocos de 16 KB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"O número de segundos desde a última escrita em cache para uma parte na cache "
+"de escrita, para obrigar a envir para a cache. Omissão é 60 segundo"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache expira (segundos):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Definições"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"O número de blocos de 16 KB escritos no disco desde o inicio da sessão"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocos escritos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "O número de operações de escrita desde o inicio da sessão"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Escritas:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"O rácio (Blocos escritos - escritas) / Blocos escritos representa o número "
+"de operações de escritas gravadas por total de operações de escrita. "
+"Exemplo: um tipo de rácio na cache para a cache de escrita"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Rácio para cache de escrita:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"O número de blocos que foram pedidos pelo motor bittorrent (dos peers) e que "
+"foram servidos pelo disco ou cache"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocos lidos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "O número de blocos que foram servidos pela cache"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Blocos lidos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "O rácio para a cache de leitura"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Rácio para cache de leitura:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "O número de operações de leitura desde o inicio da sessão"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Leituras:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"O número de blocos de 16 KB existentes na cache do disco. Inclui a cache de "
+"leitura e de escrita"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Tamanho de cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Tamanho da cache de leitura:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Ajude a melhorar o Deluge enviando-nos a sua versão Python, PyGTK, SO e o "
+"tipo de processador. Nenhuma informação pessoal será enviada"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Sim, enviar estatísticas anónimas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Localização:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Se o Deluge não encontrar a base de dados nesta localização, utilizará o "
+"serviço DNS para encontrar o país dos peers"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Porta do serviço:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Porta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Permitir ligações remotas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Ligações"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Procurar atualizações periodicamente"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versão:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Página inicial:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Endereço do autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informações"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Adicionar peer"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "servidor:porta"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Geral</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Adicionar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Remover"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Adicionar Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackers:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Adicionar servidor"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destino:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nova versão"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "Ir para a página _web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Não voltar a mostrar a mensagem"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nome:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comentários:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Mover terminados:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Parar envio no rácio:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Remover no rácio"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Editar trackers"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Topo"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Base"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Adicionar torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Adicionar torrents em _pausa"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Dar prioridade às primeiras e últimas partes"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Aplicar a tudo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Restaurar pré-definições"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Mostrar Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Limitar veloci_dade de receção"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Limitar velocidade de _envio"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Sair e desligar o serviço"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Editar trackers"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Adicionar peer"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Adicionar peer através do IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Editar tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Indique o caminho remoto"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Caminho:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Criar torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Pas_ta"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Caminho _remoto"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Ficheiros"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Fontes web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Tamanho da parte:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Definir como privado"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Adicionar este torrent à sessão"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opções"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Gravar .torrent como"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pausa"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Reto_mar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Retomar torrents selecionados"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Opções"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Fila"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "At_ualizar tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Remover torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Forçar nova verificação"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiqueta"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Selecionar tudo"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Parar todos"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Reto_mar tudo"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Limite da ligação"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limite do _slot de envio"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "Gestão _automática"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Adicionar tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Adicionar URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expandir tudo"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Cliente bittorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Receber e partilhar ficheiros via bittorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Comando"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Senha"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "De"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Até"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Utilizar portas aleatoriamente"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Entrada"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Saída"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Máximo de Conexões"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Quantidade máxima de envios simultâneos"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Máximo de conexões pendentes"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Máximo de tentativas de conexões por segundo"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Taxa limite IP de tráfego"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Compartilhamento de Ratio"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tipo"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Aplicar"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Lista de IP's do Emule (Gzip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer (zipado)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian (não comprimido)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Lista de bloqueios"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Líder inválido"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Código mágico inválido"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versão inválida"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dias"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Verificar nova lista a cada:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importar lista de bloqueios ao iniciar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Definições</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Se necessário, transferir lista de bloqueios e importar o ficheiro"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Verificar transferência e importar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Transferir uma nova lista de bloqueio e importar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forçar transferência e importação"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "A lista de bloqueios está atualizada"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opções</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipo:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Tamanho do ficheiro:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informações</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent terminado"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent adicionado"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Executar"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Evento"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Adicionar comando</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Comandos</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "A pasta vigiada não eiste"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "O caminho não existe"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Propriedades da pasta vigiada"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Selecione a pasta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Ativar monitorização desta pasta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Vigiar pasta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Eliminar .torrent após adição"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Acrescentar extensão após adição:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".adicionado"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Ação do ficheiro torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Mover terminados</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiqueta: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiqueta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Principal"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Velocidade máxima de envio:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "N.º máximo de ligações:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "N.º máximo de slots de envio:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Velocidade máxima de receção:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Largura de banda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Gestão automática:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Adicionar em pausa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Fila para:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Fila</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Pastas vigiadas:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "segundos"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"A interface web do Deluge não está instalada\n"
+"Instale-a e tente novamente"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Ativar interface web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Ativar SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Porta de receção:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etiqueta inválida, caracteres válidos: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etiqueta vazia"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "A etiqueta já existe"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etiqueta desconhecida"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent desconhecido"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opções de etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Remover etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Adicionar etiqueta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opções de etiquetas"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opções de etiquetas</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Aplicar definições máximas por torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Máximo"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Aplicar definições de fila:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 linha por tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aplicar etiqueta automaticamente:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Adicionar etiqueta"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Adicionar etiqueta</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Utilize a barra lateral para adicionar, editar e remover etiquetas</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiquetas</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Notificação intermitente"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "As notificações estão inativas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Notificação emergente"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "A notificação sonora está inativa"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame não está instalado"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Falha da notificação sonora %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Notificação sonora foi bem sucedida"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent terminado"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Escolha o ficheiro de som"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Ocorreu um erro ao enviar a notificação: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "A notificação foi enviada!"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Terminado o torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Esta mensagem serve para o informar que o Deluge terminou a receção de "
+"\"%(name)s\", constituido por %(num_files)i ficheiros\n"
+"Para deixar de receber estes alertas, desligue as notificações nas "
+"preferências do Deluge\n"
+"\n"
+"Obrigado,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Intermitência na área de notificação ativa"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Alertas ativos"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sons ativos"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Notificações</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Destinatários</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "O servidor requer TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Notificações eletrónicas</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Esta configuração não implica a receção de notificações para todos os eventos"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Subscrições"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Personalização de sons"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extrair para:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Criar subpasta com o nome do torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Esta opção cria uma subpasta com o nome do torrent, na pasta de extração "
+"selecionada, e coloca os ficheiros nessa pasta"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limite da receção:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limite do envio:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrents ativos:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Recções ativas:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Envios ativos:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Definições de ligações lentas</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Sair"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Salve"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Servidor:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Mover"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Autenticar"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Definir n.º máximo de ligações"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Velocidade de receção"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Definir velocidade máxima de receção"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Velocidade de envio"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Definir velocidade máxima de envio"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocolo de receção/envio"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Conectar"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtros"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Limite de velocidade D/L"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Limite de velocidade U/L"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Limite de conexão"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limite de envios"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Atualizar Tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Forçar Reverificação"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detalhes"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Geral"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privado"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Verdadeiro"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Informações sobre novas versões"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "N.º máximo de ligações:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Velocidade máxima de receção (KB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Velocidade máxima de envio (KB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "N.º máximo de ligações parcialmente abertas:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "N.º maximo de tentativas de ligação por segundo:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "N.º máximo de slots de envio:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Servidor"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Actualizar"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Ficheiro"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Adicionar no estado Pausado"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Baixar"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/pt_BR.po b/deluge/i18n/pt_BR.po
new file mode 100644
index 0000000..9850f3e
--- /dev/null
+++ b/deluge/i18n/pt_BR.po
@@ -0,0 +1,6234 @@
+# Brazilian Portuguese translation for deluge
+# Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Todos"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Ativo"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Verificando"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Baixando"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Semeando"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pausado"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Na fila"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Erro"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nome"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progresso"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Estado"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Tamanho"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Baixado"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Enviado"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Proporção"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Velocidade de download"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Velocidade de upload"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limite de download"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Limite de upload"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peers"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Disponibilidade"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Adicionado"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Rastreador"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Tempo estimado"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Priorizar o primeiro e o último"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Auto-gerenciado"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Partes"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Atenção"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Anúncio OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anúncio Enviado"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interface"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Downloads"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Largura de banda"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Fila"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Rede"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Cache"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Outro"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Servidor (Daemon)"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plug-ins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afeganistão"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Ilhas Aland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albânia"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Argélia"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Americana"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ilhas Anguillas"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antártida"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antígua e Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armênia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Austrália"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Áustria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijão"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Barein"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Belarus"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Bélgica"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Butão"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolívia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bósnia e Herzegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botsuana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Ilhas Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasil"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Território britânico do Oceano Índico"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgária"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Camboja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Camarões"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canadá"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Cabo Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Ilhas Cayman"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "República Centro-Africana"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Chade"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Ilha do Natal"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Ilhas Coco"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colômbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comores"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "República Democrática do Congo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Ilhas Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Costa do Marfim"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croácia"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Chipre"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "República Tcheca"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dinamarca"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "República Dominicana"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Equador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egito"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Guiné Equatorial"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritréia"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estônia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiópia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Ilhas Malvinas"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Ilhas Faroe"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlândia"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "França"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Guiana Francesa"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polinésia Francesa"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Terras Austrais e Antárticas Francesas"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabão"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gâmbia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Geórgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Alemanha"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Gana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grécia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenlândia"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Granada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guiné"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guiné-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guiana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Ilha Heard e Ilhas McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Santa Sé (Vaticano)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Hungria"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islândia"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Índia"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonésia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "República Islâmica do Irã"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Iraque"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Ilha de Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Itália"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japão"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordânia"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "República do Casaquistão"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Quênia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Quiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "República Democrática Popular da Coréia"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "República da Coréia"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Quirguistão"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "República Democrática Popular do Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letônia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Líbano"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libéria"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Líbia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituânia"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburgo"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macau"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "A Antiga República Iugoslava da Macedônia"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malaui"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malásia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivas"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Ilhas Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinica"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritânia"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Maurício"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "México"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Federação dos Estados da Micronésia"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldávia"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Mônaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongólia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marrocos"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Moçambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Mianmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namíbia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Holanda"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antilhas Holandesas"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nova Caledônia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nova Zelândia"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicarágua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Níger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigéria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Ilha Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Ilhas Marianas do Norte"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Noruega"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omã"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Paquistão"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Território Palestino Ocupado"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panamá"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Nova Guiné"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguai"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipinas"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Ilhas Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polônia"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Porto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Catar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romênia"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Federação Russa"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "São Bartolomeu"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Santa Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "São Cristóvão e Névis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Santa Lúcia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "São Pierre e Miquelão"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "São Vicente e Granadinas"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé e Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arábia Saudita"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Sérvia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seicheles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Serra Leoa"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Cingapura"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Eslováquia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Eslovênia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Ilhas Salomão"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somália"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "África do Sul"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Ilhas Geórgia do Sul e Sandwich do Sul"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Espanha"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudão"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard e Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Suazilândia"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suécia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Suíça"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "República Árabe da Síria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajiquistão"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "República Unida da Tanzânia"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tailândia"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad e Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunísia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turquia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turcomenistão"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Ilhas Turcas e Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ucrânia"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Emirados Árabes Unidos"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Reino Unido"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Estados Unidos"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Ilhas ao Largo dos Estados Unidos"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguai"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbequistão"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnã"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Ilhas Virgens Britânicas"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Ilhas Virgens dos Estados Unidos"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis e Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Saara Ocidental"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Iêmen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zâmbia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbábue"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "O serviço não está em execução"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nome do arquivo"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Camada"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Escolha um arquivo"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Escolha um diretório"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Salvar arquivo .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Arquivos torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Todos os arquivos"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Entre com a senha para mostrar Deligue..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Entre com sua senha para fechar Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Um programa de troca de arquivos rede-a-rede\n"
+"utilizando o protocolo BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Cliente:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Desenvolvedores atuais:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Desenvolvedores ou contribuidores passados:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Este programa é programa livre: você pode redistribuí-lo e/ou modificá-lo "
+"sob os termos da Licença Pública Geral GNU como publicado pela Fundação Free "
+"Software; pela versão 3 da licença, ou (pela sua opção) qualquer versão "
+"posterior. \n"
+"\n"
+"Este programa é distribuido na esperança de que seja útil, mas SEM QUALQUER "
+"GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO "
+"PARA UM PROPÓSITO PARTICULAR. Veja a Licença Pública Geral para maiores "
+"detalhes. \n"
+"\n"
+"Você deveria ter recebido uma cópia da Licença Pública Geral GNU junto com "
+"este programa; se não, veja <http://www.gnu.org/licenses>. \n"
+"\n"
+"Em adição, como uma exceção especial, os detentores dos direitos autorais "
+"dão permissão para vincular o código de partes deste programa com a "
+"biblioteca OpenSSL. Você deve obedecer à Licença Púclica Geral GNU em todos "
+"os aspectos para todo o código utilizado que não seja OpenSSL. \n"
+"\n"
+"Se você modificar arquivo(s) com esta exceção, você pode estender esta "
+"exceção para a sua versão do arquivo(s), mas você não é obrigado a fazê-lo. "
+"Se você não desejar fazê-lo, exclua essa declaração de exceção de sua "
+"versão. Se você excluir esta declaração de exceção de todos os arquivos de "
+"origem do programa, em seguida, também excluí-lo aqui."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Servidor:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Arquivo inválido"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Escolha um arquivo .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL inválida"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "não é uma URL válida."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Baixando..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Falha ao baixar"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Falha ao baixar:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detalhes:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nome do usuário:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Senha:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Protegido por senha"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Outro..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Não conectado"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nós DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Espaço livre em disco"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Sim"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Não"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioridade"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Tudo"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "E_stado"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalhes"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Ar_quivos"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Pares"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opções"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Não conectado..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Ilimitado"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Abaixo"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Acima"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Desconectado"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Disponível"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Conectado"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Estado"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Servidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versão"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Iniciar _serviço"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Parar _serviço"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Não foi possível inicializar o serviço!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Erro ao adicionar servidor"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Nome do Usuário"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nível"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Plug-in"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Selecione o plug-in"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Eggs do plug-in"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Estados"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Rastreadores"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Nenhum"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administrador"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Rótulos"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Sem rótulo"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Versão do cliente</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents na fila"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent enfileirado"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Remover limite"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Ativado"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Desativado"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Desabilitar"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Endereço"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Cliente"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Criando torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrents na fila"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Remover"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Adicionar torrents automaticamente ao conectar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Arquivo"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Adicionar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Criar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Sair & de_sligar serviço"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "Sai_r"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Editar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Gerenciador de _conexões"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Ver"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Barra de _ferramentas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Barra lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Barra de status"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Abas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Colunas"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "B_arra lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Mostrar _Vazios"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Mos_trar rastreadores"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "A_juda"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Página oficial"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Dúvidas frequentes"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Comunidade"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Adicionar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Adicionar torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Remover torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Remover torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pausar os torrents selecionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Retomar os torrents selecionados"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Continuar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Subir torrent na fila"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Subir na fila"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Descer torrent na fila"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Descer na fila"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferências"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Gerenciador de conexões"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forçado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Desativado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Aperto de mão"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Ambos"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Mostrar velocidade da sessão na barra de títulos"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Focar janela ao adicionar torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Habilitar ícone na área de notificação"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimizar para área de notificação ao fechar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Iniciar na área de notificação"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Proteger ícone da área de notificação com senha"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Mover download concluído para:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copiar arquivos .torrent para:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Excluir a cópia do arquivo torrent ao remover"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Excluir a cópia do arquivo torrent criado quando o torrent for removido"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Baixar para:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Priorizar a primeira e o última parte do download"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Priorizar primeira e última parte dos arquivos no torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Adicionar torrents em modo pausado"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Sempre mostrar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Trazer a caixa de diálogo para frente"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "O número máximo de conexões permitido. Defina -1 para ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Conexões:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Número máximo de slots de upload para todos os torrents. Defina -1 para "
+"ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"A velocidade máxima de download para todos os torrents. Defina -1 para "
+"ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Velocidade de download:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"A velocidade máxima de upload para todos os torrents. Defina -1 para "
+"ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Velocidade de upload:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorar limites na rede local"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Taxa de limite sobrecarga IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Se checado, a estimada sobrecarga TCP/IP é sugada das taxas de limitadores, "
+"para evitar exceder os limites do tráfego total"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "O máximo de slots de upload por torrent. Defina -1 para ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "O número máximo de conexões por torrent. Defina -1 para ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "Velocidade máxima de upload por torrent. Defina -1 para ilimitado."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Aleatório"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Porta ativa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testar porta ativa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "De:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Para:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nível:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Criptografia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Plug and Play universal"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocolo de mapeamento de portas NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Troca de pares"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Serviço de Descoberta Local encontra outros usuários na sua rede."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "THD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"A tabela de mapeamento distribuída pode melhorar a quantidade de conexões "
+"ativas."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Byte de compartilhamento"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nome de máquina:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Porta:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Tamanho do cacge (blocos de 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"O número de segundos desde a última gravação em cache para uma peça no cache "
+"de gravação, para quando é descarregado para o disco com força. O padrão é "
+"60 segundos."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache expira em (segundos):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Preferências"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"O número total de blocos com 16 KiB gravados no disco desde que esta sessão "
+"foi iniciada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocos escritos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"O número total de operações realizadas desde que esta sessão foi iniciada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Escritos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"A razão (blocos_escritos - escritas) / blocos_escritos representa o número "
+"de operações de escritas salvas pelo total de operações de escrita, por "
+"exemplo, um tipo de razão de acerto do cache para o cache de escrita."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Taxa de escrita em cache com êxito"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"O número de blocos que foram solicitados pelo motor bittorrent (dos peers), "
+"que foram servidos a partir do disco ou cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocos lidos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "O Número de Blocos que Serviram para o Cache."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Leitura de blocos com êxito:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "A taxa de leitura para o cache de leitura."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Taxa de leitura de cache com êxito"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"O Número Total de Operações Realizadas desde que a Sessão Foi Iniciada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Lidos:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"O número de blocos com 16 KiB atualmente no cache de disco. Isso inclui "
+"tanto cache de leitura quanto cache de escrita."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Tamanho do cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Ler tamanho do cache:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Ajude-nos a melhorar o Deluge enviando informações sobre sua versão do "
+"Python, do PyGTK, o tipo de sistema operacional e do processador. Nenhuma "
+"outra informação será enviada."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Sim, enviar estatísticas anônimas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Localização:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Se o Deluge não pode encontrar o arquivo de banco de dados nesse local, ele "
+"voltará a usar o DNS para achar o país do peer."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Porta do serviço:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Porta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Permitir conexões remotas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Conexões"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Verificar se há novas versões periodicamente"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versão:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Página do projeto:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "E-mail do autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informações"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Adicionar Peer"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "servidor:porta"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Geral</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Adicionar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Remover"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Adicionar vestígios de informação"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Vestígios de informação"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Rastreadores:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Adicionar servidor"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destino:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Novo lançamento"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Ir para a Página na Internet"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Não mostrar mais esta caixa de diálogo"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nome:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comentários:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Mover completos:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Interromper distribuição quando atingir proporção:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Remover ao atingir proporção"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Editar rastreadores"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Topo"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Em baixo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Adicionar torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Adicionar _pausado"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Priorizar a primeira e a última Parte"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Aplicar a Todos"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Reverter para o padrão"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Mostrar Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Limite de velocidade de download"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Limite de velocidade de upload"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Sair e encerrar o serviço"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Editar rastreadores"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Adicionar Peer"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Adicionar peer pelo IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Editar rastreador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Rastreador:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Informe um caminho remoto"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Caminho:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Criar torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Di_retório"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Diretório remoto"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Arquivos"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Fontes Web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Tamanho da parte:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Marcar como privado"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Adicionar este torrent para esta seção"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opções"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Salvar torrent como"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pausar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Con_tinuar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Continuar os torrents selecionados."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Op_ções"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Fila"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Atualizar rastreador"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Remover torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Forçar verificação"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "rótulo"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Selecionar todos"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pausar todos"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Con_tinuar todos"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Limite de Conexão"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limite de _slots para enviar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Auto-gerenciado"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Adicionar rastreador"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Adicionar URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expandir todos"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Cliente BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Cliente BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Baixar e compartilhar arquivos pelo BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Comando"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Senha"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "De"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Para"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Usar portas aleatórias"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Recebidas"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Efetuadas"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Conexões máximas"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Limite de vagas de Upload"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Limite de Conexões Semi-Abertas"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Limite de Tentativas de Conexões por Segundo"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Limite da taxa de sobrecarga de IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Taxa de compartilhamento"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tipo"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Aplicar"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Lista de IPs do Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Texto SafePeer (compactado)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Texto PeerGuardian (não compactado)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "P2B PeerGuardian (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Lista de bloqueios"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Líder inválido"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Código mágico inválido"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versão inválida"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dias"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Verificar se há uma nova lista a cada:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importar lista bloqueada ao iniciar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Configurações</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Baixar a lista de bloqueados se necessário e importar o arquivo."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Verificar download e importar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Baixar uma nova lista de bloqueios e importá-la"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Forçar download e importar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Lista de bloqueio está atualizada"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opções</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tipo:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Tamanho do arquivo:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informações</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent finalizado"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent adicionado"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Executar"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Evento"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Adicionar comando</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Comandos</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Auto Adicionar"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "A pasta Watch não existe."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "O caminho não existe."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Propriedades da pasta watch"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Selecione uma pasta"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Habilitar pasta Watch"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Pasta Observada</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Apagar .torrent após adicionado"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Incluir extensão após adicionado"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".Adicionado"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Ação do Arquivo Torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Mover Completado</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Rótulo: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Rótulo</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Principal"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Velocidade máxima para enviar:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Limite de conexões:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Número máximo de slots para enviar:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Velocidade máxima para baixar:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Largura de banda</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Auto gerenciamento:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Adicionar pausado:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Fila para:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Fila</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Pastas Watch:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "segundos"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Interface de Usuário de Rede"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"A interface web do Deluge não está instalada, por favor instale\n"
+"a interface e tente de novo"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Habilitar interface web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Habilitar SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Ouvindo porta:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Nome inválido, caracteres válidos:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Rótulo vazio"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Rótulo já existe"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Rótulo desconhecido"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent desconhecido"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opções de rótulo"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Remover rótulo"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Adicionar Rótulo"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opções de rótulos"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Rótulo"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opções de rótulos</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Aplicar configurações máximas por torrent."
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Máximo"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Aplicar opções de fila:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(uma linha por rastreador)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aplicar rótulo automaticamente:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Adicionar Rótulo"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Adicionar Rótulo</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Use esta barra lateral para adicionar, editar e remover rótulos. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Rótulos</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Alerta de notificação mostrado"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Janela de notificação está desativada."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Janela de notificação mostrada"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Sons de notificação estão desabilitados"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame não está instalado"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Som de notificação falhou %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Som de notificação de sucesso"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent finalizado"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"O Torrent \"%(name)s\" incluindo %(num_files)i arquivo(s) foram baixados."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Notificações"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Escolher o arquivo de som"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Houve um erro ao enviar o e-mail de notificação: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "E-mail de notificação enviado."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torrent finalizado \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Este e-mail foi enviado para informar que o Deluge terminou de baixar "
+"\"%(name)s\", que inclue %(num_files)i arquivos.\n"
+"Para parar de receber estes alertas, simplesmente desligue a notificação por "
+"e-mail nas preferências do Deluge.\n"
+"\n"
+"Obrigado,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Tray icon habilitado"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Popups habilitados"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Som habilitado"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Notificações na IU</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Destinatários</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Servidor requer TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Notificações de e-mail</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Está configuração não signaifica que você receberá notificações para todos "
+"estes eventos"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Assinaturas"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Customização de som"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Descompactador"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extrair para:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Criar sub-pasta com nome do torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Essa opção criará uma sub-pasta usando o nome do torrent dentro da pasta "
+"selecionada para extrair e coloca os arquivos extraídos lá."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Agendador"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limite de download:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limite de upload:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrents ativos:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Downloads Ativos:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Seeding Ativos:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Definições Lentas</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Desconectar"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Salvar"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Servidor:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Mover"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Nome de usuário"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Definir número máximo de conexões"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Velocidade de download"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Definir velocidade máxima de download"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Velocidade de upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Definir velocidade máxima de upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Tráfego de download/upload do protocolo"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Conectar"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtros"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Limite de velocidade do Download"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Velocidade limite de upload"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Limite de conexão"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limite de vagas de upload"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Atualizar rastreador"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Forçar verificação"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detalhes"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Geral"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privado"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Verdadeiro"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Seja alertado sobre novas versões"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Limite de conexões:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Velocidade máxima de download (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Velocidade máxima de upload (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Máximo de conexões semi-abertas:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Máximo de tentativas de conexão por segundo:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Máximo de slots para upload:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Servidor"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Atualizar"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Arquivo"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Adicionar em Estado Pausado"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Download"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ro.po b/deluge/i18n/ro.po
new file mode 100644
index 0000000..bf47fb1
--- /dev/null
+++ b/deluge/i18n/ro.po
@@ -0,0 +1,6208 @@
+# Romanian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Romanian <ro@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Toate"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Activ"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Se face verificarea"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Se descarcă"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Partajare"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "În stare de pauză"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Pus în coadă"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Eroare"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Nume"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Progres"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Stare"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Dimensiune"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Descărcat"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Uploadat"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Raţie"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Viteză descărcare"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Viteză încărcare"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limită descărcare"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Parteneri"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Disponibilitate"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Adăugat"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Timp estimat"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Acordă prioritate primelor/ultimelor bucăți"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Administrat automat"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Bucăți"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Avertisment"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Anunţ OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Anunţ trimis"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Interfață"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Descărcări"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Lățime de bandă"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Coadă"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Reţea"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Prestocare"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Altele"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Demon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Module"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Insulele Aland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Samoa Americană"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarctica"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua și Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladeș"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Belarus"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgia"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia și Herțegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Insula Bouvet"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazilia"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Teritoriul Britanic din Oceanul Indian"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Darussalam"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Cambodia"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Camerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Canada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Capul Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Insulele Cayman"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Republica Centrafricană"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Ciad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "China"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Insula Crăciunului"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Insulele Cocos (Keeling)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Columbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Comoros"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Congo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Republica Democrată Congo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Insulele Cook"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Coasta de Fildeș"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Croația"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Cuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cipru"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Cehia"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danemarca"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Republica Dominicană"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Guinea Ecuatorială"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonia"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Insulele Falkland (Malvine)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Insulele Feroe"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlanda"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Franța"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Guiana Franceză"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Polynesia Franceză"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Teritoriile franceze de sud"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgia"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Germania"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grecia"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Groenlanda"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadalupa"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guineea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guineea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guiana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Insulele Heard şi McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vatican"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungaria"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islanda"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonezia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Republica Islamică Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Insula Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italia"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japonia"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Iordania"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazahstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenia"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Republica Democrată Poapulară Coreea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Republica Coreea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kârgâzstan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Republica Populară Democrată Lao"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letonia"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Liban"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libia"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Lituania"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedonia, fosta Republică Iogoslavă"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagascar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaesia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldive"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Insulele Marshall"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinica"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauritania"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexic"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Micronesia, Statele Federale ale"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Muntenegru"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroc"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambic"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Mianmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Olanda"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Antilele Olandeze"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Noua Caledonie"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Noua Zeelandă"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Insula Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Insulele Mariane de Nord"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norvegia"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Teritoriile Palestiniene, Ocupate"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Noua Guinee"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguai"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipine"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polonia"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugalia"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "România"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Federația Rusă"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Sfântul Bartolomeu"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Sfânta Elena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Sfântul Cristofor și Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Sfânta Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Insula Sfântul Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre și Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Sfântul Vincențiu și Grenadine"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé și Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Arabia Saudită"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbia"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelles"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovacia"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Insulele Solomon"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Africa de Sud"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Georgia de Sud și Insulele Sandwich de Sud"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spania"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Suriname"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard și Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Elveţia"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Suedia"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Elveţia"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Siria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania, Republica Unită"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tailanda"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad și Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisia"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turcia"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Insulele Turks și Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ucraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Emiratele Arabe Unite"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Marea Britanie"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Statele Unite"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Insulele de Coasta ale Statelor Unite"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguai"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Insulele Virgine Britanice"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Insulele Virgine (SUA)"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis și Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Sahara de Vest"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbave"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Serviciul nu rulează"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Nume fişier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Strat"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Alegeți un fișier"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Alegeți un dosar"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Salvare fişier .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Fişiere torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Toate fişierele"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Client:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Dezvlotatori actuali:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Dezvoltatori anteriori sau contribuitori:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Fișier invalid"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Alege un fişier .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL incorect"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "nu este un URL valid."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Descarc..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Descărcarea a eșuat"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Descărcare eșuată"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detalii:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Nume utilizator:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Parolă:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Alta..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Neconectat"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Noduri DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Spațiu liber pe disc"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Da"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nu"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritate"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Statut"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detalii"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "F_ișiere"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Parteneri"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Opțiuni"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Neconectat..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Nelimitat"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Desc"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Înc"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Deconectat"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Conectat"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Conectat"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Stare"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Gazdă"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Versiune"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Pornește demon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Oprește demon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Nu s-a putut adăuga gazda"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Nume"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivel"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Activat"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Modul"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Selectați modulul"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Ouă modul"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Stări"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackere"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Niciuna"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administrator"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etichete"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Fără etichetă"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Versiune client</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrent-ele sunt așezate în coadă"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent-ul este așezat în coadă."
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Nelimitat"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Activat"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Dezactivat"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Dezactivează"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresă"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Client"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Creează torent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrente aflate în coadă"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "Ște_rge"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Adaugă automat torrentele la conectare"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Fișier"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Adaugă torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Creează torent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Ieșire"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Editare"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Manager de _conexiuni"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Vizualizare"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Bară de unel_te"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Panou lateral"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Bară de _stare"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_File"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Coloane"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Bară _laterală"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Afișează acțiunile cu _zero sarcini"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Afişează _tracker-e"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Ajutor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Întrebări frecvente"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Comunitate"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Adaugă torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Adaugă torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Şterge torrentul"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Elimină torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pune torrentele selectate în starea de pauză"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pauză"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Repornește torrentele selectate"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Reia"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Mută torrent-ul în sus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Coada Sus"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Mută torrent-ul în jos"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Coada Jos"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Preferinţe"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Manager de conexiuni"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Forţată"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Dezactivat"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Conectare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Oricare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Afișează viteza sesiunii în bara de titlu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Activează iconiţa din zona de notificare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimizează în zona de notificare la închidere"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Pornește în zona de notificare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Protejează cu parolă zona de notificare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Mută descărcările complete în:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Copiază fişiere .torrent în:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Șterge copia fișierului torent la eliminare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Șterge copia fișierului torent creat când torentul este eliminat"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Descarcă în:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prima și ultima partea a torrent-ului au prioritate"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+"Mărește prioritatea primelor și ultimelor părți ale fișierelor din torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Adăugați torente puse pe pauză"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Afișează întotdeauna"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Adaugă dialogul în prim plan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Numărul maxim de conexiuni permise. Setați -1 pentru nelimitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Conexiuni:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Numărul maxim de sloturi de încărcare pentru toate torentele. Stabiliți -1 "
+"pentru nelimitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Viteza maxima de descărcare pentru toate torentele. Setați -1 pentru "
+"nelimitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Viteză de descărcare:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Viteza maxima de încărcare pentru toate torentele. Setați -1 pentru "
+"nelimitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Viteza de încărcare:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignoră limitele existente în rețeaua locală."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Surplus limită rată IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Dacă este activat, surplusul estimat TCP/IP este ignorat de limitarea "
+"lățimii de banda, pentru a evita depășirea traficului total"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Numărul maxim de sloturi de încărcare per torent. Setați -1 pentru "
+"nelimitate."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Numărul maxim de conexiuni per torent. Setați -1 pentru nelimitat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Aleator"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Port Acvtiv:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Verifica Portul Activ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "De la:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Către:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivel:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Criptare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Protocolul de alocare a porturilor NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Schimb între parteneri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "Găsire parteneri în reţea"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"Local Service Discovery ajută la găsirea partenerilor din rețeaua locală."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Tabela hash distribuita ar putea imbunatati numarul de conexiuni active."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Limita TOS Byte a partenerului:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Nume gazdă:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Mărimea de prestocare (blocuri de 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Numărul de secunde de la ultima piesă prestocată în memoria temporară, până "
+"în momentul în care este forțat curățată de pe disk. Valoarea implicită este "
+"60 de secunde."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Prestocarea expiră în (secunde):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Setări"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Numărul total de blocuri de 16 KiB scrise pe disk de la începutul sesiunii."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Blocuri scrise:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Numărul total de operațiuni de scriere de când a început sesiunea."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Scrieri:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Rația (blocuri_scrise - scrieri) / blocuri_scrise reprezintă numărul de "
+"operațiuni de scriere salvate din totalul operațiunilor de scriere, ex: un "
+"fel de raport al folosirii spațiului de prestocare pentru scriere."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Rația spațiului de prestocare pentru scriere:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Numărul de blocuri ce au fost cerute de către motorul bittorent (de la "
+"parteneri), care au fost servite de disk sau de spațiul de prestocare."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Blocuri citite:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+"Numărul de blocuri care au fost servite de către spațiul de prestocare."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Rezultatul blocurilo citite:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Rația spațiului de prestocare pentru citire."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Rația spațiului de prestocare pentru citire:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Numărul total de operațiuni de citire de când a început sesiunea."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Citiri:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Numărul de blocuri de 16 KiB care se află momentan în spațiul de prestocare. "
+"Acestea includ și blocurile alocate pentru scris și cele pentru citit."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Mărime spațiu de prestocare:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Dimensiunea spațiului de prestocare pentru citit:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Ajutați-ne să îmbunătățim Deluge trimițându-ne informații despre versiunea "
+"PyGTK-ulu, sistemului de operare și procesorului pe care îl folosiți. "
+"Absolut nici o informație suplimentară nu va fi trimisă."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Da, vreau să trimit statistici anonime"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Locație:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Dacă Deluge nu poate găsi fișierul bazei de date la această locație va "
+"reveni la utilizarea DNS pentru a rezolva partenerii de conexiune ai țării."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Portul demonului:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Permite conexiuni din altă locaţie"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Conexiuni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Verifică periodic dacă au apărut noi versiuni"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Versiune:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Pagină web:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Email-ul autorului:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informații"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Adăugare partener"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "gazdă:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Setări generale</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Anulează"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Adaugă"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Elimină"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Adăugare Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackere:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Adaugă gazdă"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Destinație:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Versiune nouă"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "Du-te la pa_gina de web"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Nu mai arăta dialogul ăsta pe viitor"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Nume:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Comentarii:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Mută transferurile complete în:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Oprește torentul la rația de:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Şterge la raţia de"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "Modifica Track_ere"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Sus"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Jos"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Adaugă torrente"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Adaugă în stare de pauză"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Primele/ultimele bucăți au prioritate"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Aplică pentru toate"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Revenire la setările prestabilite"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "A_fișează Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Limita de _descărcare"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Limita de î_ncărcare"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Ieși și închide demonul"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Modifica Trackerele"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Adaugă un partener după IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Modifică tracker:"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Introduceţi adresa distantă"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Cale:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Creează torent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Fol_der"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Ad_resă distantă"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Fişiere"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Însămânţători web"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Marime Parti:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Marcați-l ca privat"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Adaugă acest torrent la sesiune"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Opțiuni"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Salvează fişierul .torrent ca"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pauză"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Repor_nește"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Repornește torrentele selectate."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Opț_iuni"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "Coa_dă"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Act_ualizare Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Ste_rge Torent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Verifică _forțat"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etichetă"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Selectează tot"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "În_trerupe toate"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Repor_neşte tot"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Limită _conexiuni"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limită _sloturi upload"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Administrat automat"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Adaugă tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Adăugare URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Măr_ește toate"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Client BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Client BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Descarcă și partajează fișiere prin BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Comandă"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Parolă"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "De la"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Către"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Folosește porturi aleatoare"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Intrare"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Ieşire"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Număr maxim de conexiuni"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Slot-uri maxime pentru upload"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Număr de conexiuni deschise"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Încercări maxime de conectare per secundă"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Depășire raport IP limită"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Raţie partajare"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tip"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Aplică"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Lista IP Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer text (comprimat cu Zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian text (necomprimat)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blocklist"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Leader nevalid"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Cod magic nevalid"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Versiune nevalidă"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Zile"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Verfică dacă a apărut o nouă versiune la fiecare:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importă lista neagră la pornire"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Setări</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Descarcă lista neagră dacă e necesar și importă fișierul."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Verifică descărcările și importul"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Descarcă o nouă listă neagră și încarc-o."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Descărcare forțată și importare"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Lista neagră este actualizată"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Opțiuni</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tip:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Data:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Dimensiune fișier:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Informații</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torent finalizat"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torent adăugat"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Execută"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Eveniment"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Adaugă comandă</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Comenzi</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Calea nu există."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Selectează un dosar"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Urmărește dosar</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Șterge .torrent după adăugare"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Adaugă extensie după adăugare:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Acțiune fișier torent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Mutare completă</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etichetă: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etichetă</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Principal"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Viteza maximă de încărcare:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maxim de conexiuni:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Sloturi maxime pentru încărcare:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Viteză maximă de descărcare:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Lățime de bandă</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Coadă</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "secunde"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Interfața web Deluge nu este instalată, te rog instalează \n"
+"interfața și încearcă din nou"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Activează interfața web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Activează SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Port de ascultat:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Etichetă invalidă, caracterele valide sunt:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Etichetă necompletată"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Eticheta deja există"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Etichetă necunoscută"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torent necunoscut"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Opțiuni etichetă"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Ște_rge eticheta"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Adaugă etichetă"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Opțiuni Etichete"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etichetă"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Opțiuni etichete</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Aplică setări maxime per torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maxim"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Aplică setările cozii:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(o linie per tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Aplică eticheta automat:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Adaugă etichetă"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Adăugare etichetă</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Folosiți bara laterală pentru a adăuga, edita și șterge etichete. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etichete</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Notificare popup nu este activată."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Notificare popup afișată"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Notificare sunet dezactivată"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame nu este instalat"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Notificare sunet eșuată %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Notificare sunet Succes"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torent finalizat"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Alegere fişier de sunet"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Eroare la trimiterea emailului de notificare: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Email de notificare trimis."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Torent finalizat \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Acest email este pentru a vă informa că Deluge a finalizat descărcarea "
+"\"%(name)s\", care include %(num_files)i fișiere.\n"
+"Pentru a opri aceste notificări, opriți notificările prin email în "
+"preferințele Deluge.\n"
+"\n"
+"Mulțumesc,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sunet activat"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Notificări IU</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Destinatari</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Serverul necesită TTL/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Notificări email</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Această configurație nu înseamnă ca vei primi notificări pentru toate "
+"evenimentele."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Abonamente"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Personalizare sunet"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extage în:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Crează sub-dosar cu numele torrentului"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Acestă opțiune va creea un sub-dosar folosind numele torrentului în dosarul "
+"de extragere selectat și va plasa fișierele extrase în acesta."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Limită de descărcare:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Limită de încărcare:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torente active:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Descărcări active:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Setări încete</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Deconectare"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Salvează"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Gazdă:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Mută"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Autentificare"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Setează numărul maxim de conexiuni"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Viteză de descărcare"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Setează viteza maximă de descărcare"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Viteză de încărcare"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Setează viteza maximă de încărcare"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Trafic protocol Download/Upload"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Connectează"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtre"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Limită descărcare/încărcare"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Limită viteză incărcare/descărcare"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Limită conexiune"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Limită sloturi încărcare"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Actualizare tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Forțare reverificare"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detalii"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "General"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privat"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Adevărat"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Avertizează-mă când apar noi versiuni"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Numărul maxim de conexiuni:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Viteza maximă de descărcare (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Viteza maximă de încărcare (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Număr maxim de conexiuni semi-deschise:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Numărul maxim de încercări de conectare pe secundă:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Numărul maxim de sloturi pentru încărcare:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Actualizare"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Fişier"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Adaugă in stare de pauză"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Descarcă"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/ru.po b/deluge/i18n/ru.po
new file mode 100644
index 0000000..5142278
--- /dev/null
+++ b/deluge/i18n/ru.po
@@ -0,0 +1,6357 @@
+# Russian translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2022-09-09 17:58+0000\n"
+"Last-Translator: adem <adem4ik@gmail.com>\n"
+"Language-Team: Russian Launchpad Translators <lp-l10n-"
+"ru@lists.launchpad.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+"Language: ru\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "Б"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "КиБ"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "МиБ"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "ГиБ"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "ТиБ"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "К"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "Г"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+# ❗Это сокращение KiB/s, см. ф. fspeed в deluge/common.py
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "К/c"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "КиБ/с"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "М/с"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "МиБ/с"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "Г/с"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "ГиБ/с"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "Т/с"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "ТиБ/с"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Общие параметры"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Показать эту справку"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Показать информацию о версии"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Установить путь каталога настроек"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "Вывод в указанный файл журнала вместо stdout"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+"Установить уровень журналирования (нет, ошибки, предупреждения, информация, "
+"отладка)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+"Включить ротацию журналов событий. Можно указать максимальный размер журнала "
+"(по умолчанию %(const)s). Количество журналов — 5."
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "Отключить журналирование событий (то же, что и `--loglevel none`)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+"Профилировать %(prog)s с помощью cProfile. Вывод направляется в стандартный "
+"вывод, если не указано имя файла."
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "Параметры управления процессом"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "Pid-файл для хранения ID процесса"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr "Работать не в фоновом режиме (не выполнять системный вызов fork)"
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+"Переключиться на этого пользователя при запуске (требуются права "
+"администратора)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+"Переключиться на эту группу при запуске (требуются права администратора)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Параметры службы"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "Прослушиваемый IP-адрес для соединений с интерфейсом"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Порт, прослушиваемый для соединений с UI"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "Прослушиваемый IP-адрес для соединений БитТоррент"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+"Имя сетевого интерфейса или адрес IP для исходящий соединений BitTorrent"
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+"Параметры конфигурации, которые не будут изменены при удалённом вызове "
+"`set_config`"
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Все"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Активен"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Размещение"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Проверка"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Загрузка"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Раздача"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "На паузе"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "В очереди"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Ошибка"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Название"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Прогресс"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Состояние"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Размер"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Загружено"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Отдано"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Осталось"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Рейтинг"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Загрузка"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Отдача"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Порог загрузки"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Порог отдачи"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Максимум соединений"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Максимум слотов раздачи"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Пиры"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Сиды"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Доступно"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Сиды:пиры"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Добавлен"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Трекер"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Каталог для загрузок"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Время раздачи"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Время активности"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Последняя активность"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Время окончания"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Замечен целиком"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Завершено"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Ост. время"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Общее"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Приоритет первой/последней"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Последовательная загрузка"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Автоматический режим"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Остановить при рейтинге"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Рейтинг остановки"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Удалить при рейтинге"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Перемещение по завершению"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Путь для перемещения завершённых"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr "Путь для перемещения завершённых"
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Владелец"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Части"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Ранг раздачи"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "Супер-раздача"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Внимание"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Анонс успешно выполнен"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Анонс отправлен"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Интерфейс"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Загрузки"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Полоса пропускания"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Очередь"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Сеть"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Прокси"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Кэш"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Прочее"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Служба"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Модули"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Пропустить"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Низкий"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Обычный"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Высокий"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"Deluge не может найти исполняемый файл `deluged`, проверьте, что пакет "
+"`deluged` установлен или добавьте его в PATH"
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Афганистан"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Аландские острова"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Албания"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Алжир"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Восточное Самоа"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Андорра"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Ангола"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ангилья"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Антарктида"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Антигуа и Барбуда"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Аргентина"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Армения"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Аруба"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Австралия"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Австрия"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Азербайджан"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Багамские острова"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Бахрейн"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Барбадос"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Беларусь"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Бельгия"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Белиз"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Бенин"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Бермудские острова"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Боливия"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Босния и Герцеговина"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Ботсвана"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Остров Буве"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Бразилия"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Британская территория в Индийском океане"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Бруней Даруссалам"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Болгария"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Буркина-Фасо"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Бурунди"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Камбоджа"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Камерун"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Канада"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Кабо-Верде"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Каймановы острова"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Центральноафриканская Республика"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Чад"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Чили"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Китай"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Остров Рождества"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Кокосовые острова (Острова Килинг)"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Колумбия"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Коморские острова"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Конго"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Демократическая Республика Конго"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Острова Кука"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Коста-Рика"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Кот-д'Ивуар"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Хорватия"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Куба"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Кипр"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Чешская Республика"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Дания"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Джибути"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Доминика"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Доминиканская Республика"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Эквадор"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Египет"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Сальвадор"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Экваториальная Гвинея"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Эритрея"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Эстония"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Эфиопия"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Фолклендские (Мальвинские) острова"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Фарерские острова"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Фиджи"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Финляндия"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Франция"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Французская Гвиана"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Французская Полинезия"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Французские Южные Территории"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Габон"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Гамбия"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Грузия"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Германия"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Гана"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Гибралтар"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Греция"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Гренландия"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Гренада"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Гваделупа"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Гуам"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Гватемала"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Гернси"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Гвинея"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Гвинея-Бисау"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Гайана"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Гаити"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Остров Херд и острова МакДональд"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Ватикан (Папский Престол)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Гондурас"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Гонконг"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Венгрия"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Исландия"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Индия"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Индонезия"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Исламская Республика Иран"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Ирак"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ирландия"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Остров Мэн"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Израиль"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Италия"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Ямайка"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Япония"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Остров Джерси"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Иордания"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Казахстан"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Кения"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Кирибати"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Корейская Народно-Демократическая Республика"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Республика Корея"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Кувейт"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Киргизия"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Лаосская Народно-Демократическая Республика"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Латвия"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Ливан"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Лесото"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Либерия"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Ливийская Арабская Джамахирия"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Лихтенштейн"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Литва"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Люксембург"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Мокао"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Македония"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Мадагаскар"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Малави"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Малайзия"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Мальдивские острова"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Мали"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Мальта"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Маршалловы острова"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Мартиника"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Мавритания"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Маврикий"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Майотта"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Мексика"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Федеративные Штаты Микронезии"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Молдавия"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Монако"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Монголия"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Черногория"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Монтсеррат"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Марокко"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Мозамбик"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Мьянма"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Намибия"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Науру"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Непал"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Нидерланды"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Нидерландские Антилы"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Новая Каледония"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Новая Зеландия"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Никарагуа"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Нигер"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Нигерия"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Ниуэ"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Остров Норфолк"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Северные Марианские острова"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Норвегия"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Оман"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Пакистан"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Палау"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Палестинская территория, оккупированная"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Панама"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Папуа - Новая Гвинея"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Парагвай"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Перу"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Филиппины"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Питкэрн"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Польша"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Португалия"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Пуэрто-Рико"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Катар"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Реюньон"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Румыния"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Российская Федерация"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Руанда"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Сен-Бартелемей"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Остров Святой Елены"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Сент-Китс и Невис"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Сент-Люсия"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Сент-Мартин"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Сен-Пьер и Микелон"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Сент-Винсент и Гренадины"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Самоа"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Сан-Марино"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Сан-Томе и Принсипи"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Саудовская Аравия"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Сенегал"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Сербия"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Сейшельские Острова"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Сьерра-Леоне"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Сингапур"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Словакия"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Словения"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Соломоновы Острова"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Сомали"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Южно-Африканская Республика"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Южная Джорджия и Южные Сандвичевы Острова"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Испания"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Шри-Ланка"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Судан"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Суринам"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Шпицберген и Ян-Майен"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Свазиленд"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Швеция"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Швейцария"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Сирийская Арабская Республика"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Тайвань"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Таджикистан"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Объединённая Республика Танзания"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Таиланд"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Восточный Тимор"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Того"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Токелау"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Тонга"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Тринидад и Тобаго"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Тунис"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Турция"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Туркменистан"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Острова Тёркс и Кайкос"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Тувалу"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Уганда"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Украина"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Объединённые Арабские Эмираты"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Великобритания"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Соединённые Штаты Америки"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Внешние малые острова (США)"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Уругвай"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Узбекистан"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Вануату"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Венесуэла"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Вьетнам"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Виргинские острова (Британия)"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Виргинские острова (США)"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Острова Уоллис и Футуна"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Западная Сахара"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Йемен"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Замбия"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Зимбабве"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Параметры интерфейса"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+"Установить пользовательский интерфейс для запуска по умолчанию, когда "
+"пользовательский интерфейс не указан"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+"Альтернативный интерфейс для запуска с необязательными аргументами \n"
+" (стандартный интерфейс: *)"
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Параметры веб-сервера"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "IP-адрес для прослушивания веб-сервером"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Порт для прослушивания веб-сервером"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+"Установить базовый путь, по которому работает пользовательский интерфейс"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Требовать использование SSL от веб-сервера"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Требовать отключение SSL от веб-сервера"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Служба не существует"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Служба не выполняется"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Имя файла"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Уровень"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Выберите файл"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Отмена"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Открыть"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Выберите папку"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Сохранить файл .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "_Сохранить"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Торрент-файлы"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Все файлы"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Введите ваш пароль, чтобы показать Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Введите пароль, чтобы выйти из Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "З: {download_rate} О: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Изменить путь"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Удалить путь"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Применить выбранное"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Copyright %(year_start)s-%(year_end)s Deluge Team"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Программа для обмена файлами\n"
+"по пиринговому протоколу БитТоррент"
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Клиент:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Текущие разработчики:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Прошлые разработчики и участники:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Эта программа является свободным программным обеспечением; Вы можете "
+"распространять и/или изменять её согласно правилам лицензии GNU General "
+"Public License, опубликованной Фондом Свободного Программного обеспечения; "
+"как под версией 3 лицензии, так и (по желанию) под более поздней. \n"
+"\n"
+"Эта программа распространяется в надежде что будет полезной, но БЕЗ КАКИХ-"
+"ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или "
+"ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. Обратитесь к тексту лицензии GNU General "
+"Public License для получения подробностей. \n"
+"\n"
+"Вы должны были получить копию лицензии GNU General Public License вместе с "
+"программой; если это не так, обратитесь к <http://www.gnu.org/licenses>. \n"
+"\n"
+"В дополнение, в виде специального исключения, обладатели авторских прав дают "
+"разрешение для использование некоторыми частями кода программы библиотеки "
+"OpenSSL. Вы должны придерживаться лицензии GNU General Public License во "
+"всех отношениях, ели код не использует OpenSSL. \n"
+"\n"
+"Если вы измените файл(ы) с этим исключением, вы можете расширить это "
+"исключение для вашей версии файла(ов), но вы не обязаны это делать. Если вы "
+"не хотите сделать это, удалите это заявление об исключении из вашей версии. "
+"Если вы удалите это заявление об исключении из всех исходных файлы "
+"программы, то так же удалите её."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Сервер:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Торрент"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Добавить торренты (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "Дублировать торрент(ы)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr "Вы не можете добавить этот торрент дважды. %d торренты уже добавлены"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Неверный файл"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Пожалуйста, дождитесь файлов..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "Не удалось загрузить файлы для этой магнет-ссылки"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Выберите файл .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Неверный URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "не является верным адресом."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Загрузка..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Ошибка загрузки"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Не удалось загрузить:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_Нет"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Да"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Закрыть"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Подробности:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Авторизоваться"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "П_одключить"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Имя пользователя:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Пароль:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Править учётную запись"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Изменить существующую учётную запись"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Применить"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Новая учётная запись"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Создать новую учётную запись"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Добавить"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Уровень аутентификации:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Защищено паролем"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_ОК"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Прочее..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Не подключён"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Соединения (порог)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Скорость загрузки (порог)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Скорость отдачи (порог)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr "Трафик по протоколу (загружено/отдано)"
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Узлы DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Свободное место на диске"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Внешний адрес IP"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "н/д"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Проблема с портом</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Нет входящих соединений, проверьте перенаправление порта"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Ограничение скорости загрузки"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Установить максимальную скорость загрузки"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Ограничение скорости отдачи"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Установить максимальную скорость ротдачи"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Входящие соединения"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Установить максимум входящих соединений"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent} %"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Никогда"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Да"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Нет"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Приоритет"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Всё"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Состояние"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Подробности"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Фай_лы"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Пиры"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Параметры"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Трекеры"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Не подключено..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Без ограничений"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Вниз"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Вверх"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"Служба Deluge (deluged) уже запущена.\n"
+"Для использования автономного режима, остановите локальную службу и "
+"перезапустите Deluge."
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"Доступен только режим тонкого клиента, потому что libtorrent не установлен.\n"
+"Для использования автономного режима, пожалуйста установите пакет libtorrent."
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"Доступен только режим тонкого клиента из-за неизвестной ошибки импорта "
+"(Import Error).\n"
+"Для использования автономного режима смотрите подробности об ошибке в "
+"журнале событий."
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "Продолжить в режиме тонкого клиента?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Изменить режим пользовательского интерфейса"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Не в сети"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "В сети"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Подключено"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Статус"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Хост"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Версия"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "З_апустить службу"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "О_становить службу"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Отсоединить"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Не удаётся запустить службу!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+"Проверьте установлен ли пакет deluged и журналы для получения дополнительной "
+"информации"
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Несовместимый клиент"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+"Автозапуск локальной службы отключён. Смотрите «Параметры запуска» в "
+"«Управлении подключениями»."
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Не удалось подключиться"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Изменить хост"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Ошибка при добавлении узла"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "Ошибка обновления хоста"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Имя пользователя"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Уровень"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Включён"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Модуль"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Внимание"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Необходимо выбрать язык"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+"Необходимо перезапустить пользовательский интерфейс deluge для того, чтобы "
+"изменения вступили в силу."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "Тонкий клиент"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Автономный"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr "Переключение клиентского режима Deluge..."
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "Хотите перезапустить deluge, чтобы использовать режим «%s»?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Выберите модуль"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Дополнение Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Ошибка на стороне сервера"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "На сервере произошла ошибка"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Ошибка при добавлении аккаунта"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Сбой аутентификации"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "Произошла ошибка при добавлении аккаунта"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Ошибка обновления аккаунта"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "Произошла ошибка при обновлении аккаунта"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Удалить аккаунт"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+"Действительно удалить учётную запись с именем пользователя «%(username)s»?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Ошибка удаления аккаунта"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Сбой аутентификации"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "Произошла ошибка при удалении учётной записи"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Состояния"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Трекеры"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Нет"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Администратор"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Метки"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Без метки"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Нет владельца"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Версия клиента</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Задания помещены в очередь"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Задание помещено в очередь"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr "Торрент общий для других пользователей Deluge или нет."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Удалить выбранные торренты?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Выбрано торрентов — %s"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Неограниченно"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Вкл."
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Откл."
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Отключить"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Включить..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "Слоты отдачи для пира"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Установить максимум слотов раздачи"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Остановить раздачу при рейтинге"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Ошибка смены владельца"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "Произошла ошибка при смене владельца"
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Адрес"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Клиент"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "Параметры GTK"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+"Добавить один или несколько торрент-файлов, ссылки на торренты или магнет-"
+"ссылки в запущенный экземпляр Deluge GTK"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Создание торрента"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Задания в очереди"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Добавить торренты в очередь"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Удалить"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "_Очистить"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Автоматически добавлять задания при подключении"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Файл"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Добавить торрент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Создать торрент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Выйти и _остановить службу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "В_ыход"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Правка"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Параметры"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Управление _подключениями"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "Т_оррент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Вид"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Панель _инструментов"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Боковая панель"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Строка состояния"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Вкладки"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Колонки"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Найти..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Боковая панель"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Отображать _пустые элементы"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Показывать _трекеры"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "Показывать _владельцев"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Справка"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Домашняя страница"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_Частые вопросы"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Часто задаваемые вопросы"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Сообщество"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_О программе"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Добавить торрент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Добавить торрент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Удалить торрент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Удалить торрент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"Отфильтровать торренты по имени.\n"
+"Это отфильтрует торренты, выбранные на боковой панели."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Фильтр"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Приостановить выбранные торренты"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Приостановить"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Возобновить выбранные торренты"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Возобновить"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Переместить торрент вперёд"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "К началу очереди"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Переместить торрент назад"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "К концу очереди"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Параметры"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Управление подключениями"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Закрыть"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Фильтр:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Очистить поиск"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "У_читывать регистр"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Принудительно"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Отключено"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Рукопожатие"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "Весь поток"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Оба"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 Аутентификация"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP-аутентификация"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "Автономное приложение"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "Тонкий клиент"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Подключаться к службе Deluge (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Режим приложения"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Отображать скорости загрузки и раздачи в заголовке окна"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Сделать окно активным при добавлении торрента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"Панель частей\n"
+"увеличит использование канала между клиентом\n"
+"и службой (это не относится к автономному режиму)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "Показывать панель частей на вкладке «Состояние»"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Завершён:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Загружается:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Ожидающие:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Отсутствующие:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "_Восстановить"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Восстановить цвет по умолчанию"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Цвета частей"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Главное окно"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Показывать значок в области уведомлений"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "App Indicator"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Системный трей"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Сворачивать Deluge в область уведомлений при закрытии"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Сворачивать Deluge в область уведомлений при запуске"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Защитить паролем значок в области уведомлений:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Системный трей"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Уведомлять о новых выпусках"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Обновления"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Системный по умолчанию"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Язык</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Перемещать загруженные файлы в:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Копировать файлы .torrent в:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Удалять копию торрент-файла при удалении торрента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Удалить созданный файл .torrent при удалении торрента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Загружать в:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Папки для загрузок"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Приоритет у первой и последней частей торрента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+"Приоритет у первой\r\n"
+"и последней частей файлов торрента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Последовательная загрузка"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+"Когда включено, части будут выбираться\n"
+"последовательно, а не сначала самые редкие.\n"
+"\n"
+"Последовательная загрузка отрицательно влияет\n"
+"на распространение частей в раздаче. Её следует\n"
+"использовать в редких случаях."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Добавлять торренты в приостановленном состоянии"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Резервировать место на диске"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Резервировать место на диске для загружаемых файлов"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Добавление торрента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Всегда отображать"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Сделать диалоговое окно активным"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Диалоговое окно «Добавить торренты»"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Попыток соединения в секунду:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Полуоткрытые соединения:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Максимум допустимых соединений. «-1» — неограниченно."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Соединения:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "Максимум допустимых соединений отдачи. «-1» — неограниченно."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Слоты отдачи:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Максимальная скорость приёма для всех торрентов. -1 означает без ограничений."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Скорость загрузки:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "Максимум скорости отдачи для всех торрентов. «-1» — без ограничений."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Скорость отдачи:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Игнорировать ограничения в локальной сети"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Ограничивать скорость с учётом издержек протокола IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Если включено, приблизительные издержки TCP/IP учитываются ограничителями "
+"скорости, чтобы избежать превышения суммарного трафика"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Глобальные ограничения пропускной способности"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Максимум слотов отдачи на торрент. «-1» — без ограничений."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Максимальное количество соединений на торрент. -1 означает неограниченное."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Максимальная скорость загрузки для торрента. Установите -1 для "
+"неограниченной."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "Максимум скорости отдачи на торрент. «-1»  — без ограничений."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Ограничения пропускной способности для торрента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "Добавлять в начало очереди"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Новые торренты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Раздачи:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Всего:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Игнорировать медленные торренты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+"Торренты, не передающие данные, не учитываются в количестве активных "
+"загрузок и раздач."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Приоритет раздающих торрентов"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr "Предпочесть раздающие торренты вместо скачиваемых."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Активные торренты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Рейтинг раздачи:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "Коэффициент времени:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Длительность (мин):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr "Чередование раздачи"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Приостановить торрент"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Рейтинг раздачи достигнут"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"IP-адрес интерфейса для прослушивания входящих bittorrent соединений. "
+"Оставьте это поле пустым, если хотите использовать значение по умолчанию."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Входящий адрес"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Случайно"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Использует случайные порты из диапазона от 49152 до 65525"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Активный порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Проверить активный порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Входящий порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"Имя сетевого интерфейса или IP-адрес для исходящих BitTorrent соединений. "
+"(Оставьте пустым для значений по умолчанию.)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Исходящий интерфейс"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "От:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "По:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Исходящие порты"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Исходящее:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Входящее:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Уровень:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Шифрование"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Протокол перенаправления портов NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Обмен узлами"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr "Обмен участниками между клиентами. (Отключение требует перезапуска)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"Обнаружение локальных служб (Local Service Discovery) находит участников в "
+"локальной сети."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Распределённая хэш-таблица (DHT) может увеличить количество активных "
+"соединений."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Байт узла:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Дополнительные сетевые параметры"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Имя хоста:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "Использовать прокси для имён хостов"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+"Имена хостов следует пытаться разрешать через прокси\n"
+"вместо использования локальной службы DNS."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr "Использовать прокси для пиров"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr "Использовать прокси для соединений с узлами и веб-раздачами."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "Использовать прокси для трекеров"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Использовать прокси принудительно"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "Скрывать данные клиента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+"Попытаться скрыть данные клиента и использовать прокси только для входящих "
+"соединений."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Прокси принудительно"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Размер кэша (блоков по 16 КиБ):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Время (в секундах) от последней кэшированной записи части в кэше записи до "
+"того, как принудительно сбрасывать кэш этой части на диск. По умолчанию 60 "
+"секунд."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Время жизни кэша (секунд):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Параметры"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Количество блоков по 16 КиБ, записанных на диск с начала текущего сеанса."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Блоков записано:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Общее число операций записи, выполненных с начала текущего сеанса."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Операций записи:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Соотношение «(блоков_записано - операций_записи) / блоков_записано» "
+"представляет собой отношение количества сэкономленных операций записи к их "
+"общему количеству, т. е. коэффициент эффективности кэша записи."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Коэффициент эффективности кэша записи:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Запись"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Количество блоков, запрошенных у движка BitTorrent (от узлов) и полученных с "
+"диска или из кэша."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Блоков считано:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Количество блоков, считанных из кэша."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Считано блоков из кэша:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Коэффициент эффективности кэша чтения."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Коэффициент эффективности кэша чтения:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Общее количество операций чтения, выполненных с начала текущего сеанса."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Операций чтения:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Чтение"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Количество блоков по 16 КиБ, находящихся сейчас в дисковом кэше. Включает "
+"кэш чтения и записи."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Размер кэша:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Размер кэша чтения:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "О_бновить"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Помогите нам сделать Deluge лучше, отправляя сведения об используемых "
+"версиях Python, PyGTK, а также о типах ОС и процессора. Никакая другая "
+"информация не отправляется."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Отправлять анонимную статистику"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Информация о системе"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Расположение:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Если Deluge не сможет найти файл базы данных по указанному пути, страны "
+"узлов будут определяться через DNS."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "База данных GeoIP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Ассоциировать с Deluge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Магнет-ссылки"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Порт службы:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Разрешить удалённые соединения"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Соединения"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Периодически проверять веб-сайт на наличие обновлений"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Удалить"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Учётные записи"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Версия:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Автор:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Домашняя страница:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Эл. почта автора:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Информация"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Установить"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Найти ещё на веб-сайте Deluge..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Удалить выбранный торрент(ы)?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Включая загруженные файлы"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(Это необратимо!)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Добавить узел"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "имя_узла:порт"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Свойства"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr "Макс. количество строк в выпадающем списке"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Общие</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Показывать поле для ввода пути"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Показывать кнопку для выбора папки"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Показывать название папки"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Тип выбора пути"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Использовать автодополнение"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Показывать скрытые файлы"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Назначить комбинацию"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr "Нажмите для назначения новой комбинации клавиш для автодополнения"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Автодополнение"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Сохранить путь"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Показать скрытые файлы"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Путь по умолчанию"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Комбинации клавиш"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Выберите папку"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Сохранённые пути"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "столбец"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Отменить"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Открыть"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Добавить"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Добавить путь из поля ввода в список"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Изменить"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Изменить выбранный путь"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Удалить"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Удалить выбранный путь"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Переместить выбранный путь выше"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Переместить выбранный путь ниже"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "По умолчанию"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Путь по умолчанию не задан"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Открыть диалоговое окно «Свойства»"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Добавить хэш данных"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "По хешу данных"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Хэш данных:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Трекеры:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Добавить хост"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "Изменить папку загрузки"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "Изменить папку загрузки торрента(ов)."
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Назначение:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Новая версия"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Перейти на веб-сайт"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Доступна новая версия!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Доступная версия:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Версия сервера"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Текущая версия:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Больше не показывать это окно"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Скорость загрузки:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Скорость отдачи:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Загружено:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Отдано:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Сиды:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Пиры:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Доступно:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Ранг раздачи:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "Оставшееся время:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Последняя активность:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Время активности:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "Замечен целиком:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Время раздачи:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Частей:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Название:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Папка загрузки:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Добавлен:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Общий размер:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Файлов:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Хеш:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Создан в:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Комментарии:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Владелец:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Перемещать завершённые"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Останавливать раздачу при рейтинге:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Удалять при рейтинге"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Ограничения пропускной способности"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Текущий трекер:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Всего трекеров:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Статус трекера:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Следующий анонс:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Приватный торрент:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Изменить трекеры"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "В начало"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "В конец"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Добавить торренты"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_Ссылка"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "_Хеш данных"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "Папка для завершённых загрузок"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "При_остановить после добавления"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Приоритет у первой/последней частей"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Пропустить проверку хеша"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Резервировать место на диске"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Резервировать место на диске для загружаемых файлов"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "Максимальная скорость загрузки торрентов"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Максимальная скорость раздачи торрентов"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Максимальное количество соединений для торрента"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr "Максимальное количество слотов раздачи для торрента"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Применить ко всем"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Восстановить параметры по умолчанию"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Показать Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "П_риостановить сеанс"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "_Возобновить сеанс"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Ограничение скорости _загрузки"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Oграничение скорости отдачи"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Выйти и остановить службу"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Изменить трекеры"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "_Вверх"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "В_низ"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Добавить узел"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Добавить узел по IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Изменить трекер"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Трекер:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Введите удалённый путь"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Удалённый путь"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Путь:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 КиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 КиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 КиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 КиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 КиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 МиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 МиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 МиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 МиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 МиБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Создать торрент"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Папка"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Удалённый путь"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Файлы"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Веб-сиды"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Размер части:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Установить флаг приватности"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Добавить торрент в очередь"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Параметры"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Сохранить .torrent как"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Открыть папку загрузки"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Приостановить"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Возобновить"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Возобновить выбранные торренты."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "П_араметры"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "О_чередь"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "О_бновить трекер"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Удалить торрент"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "П_ерепроверить данные"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "И_зменить папку загрузки"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "метка"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Выделить всё"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Приостановить все"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Возобновит_ь все"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "О_граничение соединений"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Ограничение слотов раз_дачи"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "О_становить раздачу при рейтинге"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Автоматическое управление"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr "С_упер-раздача"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "С_менить владельца"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Добавить трекер"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Добавить трекеры"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Добавить ссылку"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "Ссылка"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "Ссылка:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Службы Deluge"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Автоматически подключаться к выбранной службе"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "Автоматически запускать локальную службу, если она ещё не запущена"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Не показывать это диалоговое окно"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Параметры запуска"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Открыть файл"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "_Показать папку"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Развернуть всё"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "П_ропустить"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Низкий"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "О_бычный"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_Высокий"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Команда Deluge"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+"Deluge — небольшой свободный кросс-платформенный клиент файлообменной сети "
+"BitTorrent."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+"Deluge предоставляет общие возможности для клиентов сети BitTorrent, такие "
+"как шифрование протокола, DHT, поиск участников в локальной сети (LPD), "
+"обмен участниками (PEX), UPnP, NAT-PMP, поддержка прокси, веб-раздачи, "
+"ограничение скорости глобально и для отдельных торрентов. Deluge активно "
+"использует библиотеку libtorrent, поэтому он имеет обширный набор "
+"возможностей."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+"Deluge спроектирован для работы как в качестве обычного автономного "
+"настольного приложения, так и в качестве клиент-сервера. В режиме тонкого "
+"клиента служба Deluge обрабатывает всю активность в сети BitTorrent и может "
+"работать на машинах без мониторов с пользовательскими интерфейсами, "
+"подключающимися удалённо с любой другой платформы."
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent клиент"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "BitTorrent клиент Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Загружайте и обменивайтесь файлами в сети BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Параметры командной строки"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+"Эти параметры подключения к службе будут использоваться для команд, или "
+"если\n"
+"включено автоматическое подключение текстового пользовательского интерфейса."
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+"Подключаться к службе Deluge по IP-адресу ip_addr (по умолчанию 127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr "Подключаться к порту port службы Deluge (по умолчанию 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "Использовать имя пользователя user при подключении к службе Deluge"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "Использовать пароль pass при подключении к службе Deluge"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Команды командной строки"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Описание"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "Доступны следующие команды командной строки:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Команда"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr "То же, что и `%s`"
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Использование: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr "выражение, сопоставляемое с идентификаторами и именами торрентов"
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "установить значение для этого ключа"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Устанавливаемое значение"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "один или несколько ключей, разделённых пробелом"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Также удалить загруженные файлы"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "Перечислить совпадающие торренты без удаления."
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "Один или несколько идентификаторов торрентов"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+"Используйте ключ -c для подтверждения удаления перечисленных торрентов "
+"(количество: %d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr "Использование: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+"Один или несколько идентификаторов торрентов. Используйте \"*\" для "
+"возобновления всех торрентов"
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+"Один или несколько идентификаторов торрентов. Используйте \"*\" для "
+"приостановки всех торрентов"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Каталог для загрузки торрента"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Перемещать загруженный торрент в этот каталог"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "Один или несколько торрент-файлов, ссылки или магнет-ссылки"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Перечислить имеющиеся модули"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Показать включённые модули"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Включить модуль"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Отключить дополнение"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "Перезагрузить список имеющихся модулей"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Установить модуль из .egg файла"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+"Необработанные значения скорости загрузки и раздачи (без суффикса КиБ/с) "
+"(полезно для сценариев, желающих выполнять собственную обработку)"
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Не показывать состояния торрентов (улучшает скорость команды)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr "Использование: connect <host[:port]> [<username>] [<password>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "Хост и порт службы"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Пароль"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "Путь для перемещения торрентов"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "Новое состояние"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "Одна или несколько комманд"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "Использование: config [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Показывать больше информации о торренте."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "Показывать более подробную информацию, включая файлы и узлы."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr "Показать торренты с состоянием STATE: %s."
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "То же, что и --sort, но элементы расположены в обратном порядке."
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+"Один или несколько идентификаторов торрентов. Если ничего не указано, "
+"перечислить все"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Выбор хоста"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Выйти"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Удалить хост"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+"Добавление хоста (стрелки вверх и вниз для навигации, Esc для отмены)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "Ошибка добавления хоста"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Столбцы"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Ширина"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Общие параметры"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "Подавать системный звуковой сигнал при окончании загрузки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+"Перечислять загруженные торренты после загружающихся независимо от порядка "
+"сортировки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr "Перемещать выделение при перемещении торрентов в очереди"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Язык"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Режим командной строки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "Не сохранять повторяющийся ввод в истории"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr "Сохранять и загружать историю ввода в режиме командной строки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+"Третье нажатие Tab в режиме командной строки перечисляет все оставшиеся "
+"торренты"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr "Торрентов на нажатие Tab"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Папки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Загружать в"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Перемещать загруженные в"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr "Копировать файлы .torrent в"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "Добавлять приостановленными"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Резервировать место на диске"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Входящие порты"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "От"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "До"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Использовать случайные порты"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Входящий интерфейс"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+"IP-адрес интерфейса для прослушивания (оставьте пустым для использования "
+"значения по умолчанию):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"Имя сетевого интерфейса или IP-адрес для исходящих BitTorrent соединений "
+"(оставьте пустым для использования значения по умолчанию):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Входящий"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Исходящий"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Глобальные ограничения пропускной способности"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Максимум соединений"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Максимум слотов отдачи"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Максимальная скорость загрузки (КиБ/с)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Максимальная скорость отдачи (КиБ/с)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Максимум полуоткрытых соединений"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Максимум попыток соединения в секунду"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Ограничивать скорость с учётом издержек протокола IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Ограничения пропускной способности для торрента"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Отправлять анонимную статистику."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Порт службы"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Разрешить удалённые соединения"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Всего"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Рейтинг раздачи"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Коэффициент времени"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Длительность (мин)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr "Удалять торрент (если не выбрано, приостанавливать торрент)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Параметры прокси"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Тип"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Имя хоста"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr "Подсказка по типам прокси"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Размер кэша (блоков по 16 КиБ)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr "Срок действия кэша (секунд)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Блоков записано"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "Операций записи"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr "Коэффициент эффективности кэша записи"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Блоков считано"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr "Считано блоков из кэша"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr "Операций чтения"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr "Коэффициент эффективности кэша чтения"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr "Размер кэша"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr "Размер кэша чтения"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Применить"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "OK"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Выберите язык"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr "IP {!white,blue!}%s{!status!}"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "IP-адрес «%s» имеет неверный формат"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Список IP Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Текст SafePeer (сжатый)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Текст PeerGuardian (несжатый)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+"Диапазоны заблокированных IP-адресов / Диапазоны разрешённых IP-адресов"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Чёрный список"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Неверный IP-адрес"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Неверный заголовок"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Неверный отпечаток"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Неверная версия"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Дней"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Проверять список каждые:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Импортировать чёрный список при запуске"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Параметры</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Скачать при необходимости чёрный список и импортировать файл."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Проверить и загрузить"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Скачать новый файл чёрного списка и импортировать его."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Принудительно загрузить и импортировать"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Чёрный список последней версии"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Параметры</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Тип:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Дата:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Размер файла:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Информация</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Белый список</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Задание выполнено"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Добавлен торрент"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Торрент удалён"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Выполнить"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Событие"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Добавить команду</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Команды</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Несовместимые параметры"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+"Каталоги «Папка для слежения» и «Копировать файлы .torrent в» не могут "
+"совпадать!"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Автодобавление"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Двойное нажатие для переключения"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Двойное нажатие для изменения"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Путь"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Отслеживаемая папка не существует."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Путь не существует."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Параметры отслеживаемой папки"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Если в этот каталог добавить файл .torrent,\n"
+"он будет добавлен в сеанс."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Выберите папку"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Отслеживать эту папку"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Папка для слежения</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Удалить файл .torrent после добавления"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Как только торрент будет добавлен в сеанс,\n"
+"файл .torrent будет удалён."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Дописать расширение после добавления:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"Как только торрент будет добавлен в сеанс,\n"
+"к файлу .torrent будет добавлено расширение,\n"
+"и он останется в том же каталоге."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".добавлен"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"Как только торрент будет добавлен в сеанс,\n"
+"файл .torrent будет скопирован в выбранный каталог\n"
+"и удалён из папки для слежения."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+"Как только торрент будет удалён из сеанса,\n"
+"также будет удалён файл .torrent, который\n"
+"использовался для его добавления."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Действие над торрент-файлом</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Указать папку для загрузок"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "В эту папку будут загружаться данные торрентов."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Папка для загрузок</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "Указать папку для перемещения завершённых загрузок"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Перемещение завершённых загрузок</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Метка: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Метка</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Основное"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "Выбранный здесь пользователь будет владельцем торрента."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Владелец</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Максимальная скорость отдачи:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Максимум соединений:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Максимум слотов отдачи:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Максимальная скорость загрузки:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Ограничения</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Автоматически управляемые:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Добавить приостановленным:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Добавить к:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Очередь:</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Папки для слежения:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "мин"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 минута"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 секунда"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "секунд(ы)"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Статистика"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Разрешение"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Сиды/пиры"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Цвет загрузки:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Цвет раздачи:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>График соединений</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>График пропускной способности</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "Узлы DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Кэшированные узлы DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "Торренты DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Сиды/пиры</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Цвета графиков</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Веб-интерфейс"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge веб интерфейс не установлен, установите его\n"
+"интерфейс и попробуйте снова"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Включить веб-интерфейс"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Использовать SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Прослушиваемый порт:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+"Неверная метка. Допустимые символы: латиница (A-Z), арабские цифры (0-9), "
+"дефис, подчёркивание."
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Пустая метка"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Метка уже существует"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Неизвестная метка"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Неизвестный торрент"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Параметры метки"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Удалить метку"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Добавить метку"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Параметры метки"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Метка"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Параметры метки</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Применить настройки, максимальные для каждого торрента:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Максимум"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Применить настройки очереди:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Применить параметры папки:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(каждый трекер на отдельной строке)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Автоматически применять метку:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Добавить метку"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Добавить метку</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Используйте боковую панель для добавления, правки и удаления меток. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Метки</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Показывать мигающее уведомление"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Всплывающее уведомление не включено."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "Библиотека libnotify не установлена"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr "Не удалось показать всплывающее уведомление"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Показать всплывающее уведомление"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Звуковое уведомление не включено"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame не установлено"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Звуковое оповещение не удалось %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Звуковое оповещение успешно"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Торрент завершён"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Загрузка торрента \"%(name)s\", содержащего %(num_files)i файл(а/ов), "
+"завершена."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Уведомления"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Выберите звуковой файл"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Ошибка при отправке уведомления на электронную почту: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "Сервер неверно ответил на приветствие HELO: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "Сервер отклонил комбинацию имени пользователя и пароля: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Уведомление на электронную почту отправлено."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Завершён торрент \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Этим письмом информируем вас, что Deluge закончил загрузку %(name)s, которая "
+"включает %(num_files)i файлов.\n"
+"Чтобы прервать получение этих сообщений, просто отключите уведомление по "
+"электронной почте в настройках Deluge.\n"
+"\n"
+"Спасибо,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Мигающий значок в области уведомлений включён"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Всплывающие уведомления включены"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Звук включён"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Уведомления интерфейса</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Получатели</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Сервер требует TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Email уведомления</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Эта конфигурация не означает, что вы действительно будете получать "
+"уведомления о всех этих событиях."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Подписки"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Изменение звуков"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Распаковщик"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Извлечь в:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Создать подпапку с названием торрента"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Если включено, файлы будут помещены в папку с названием торрента, созданную "
+"внутри выбранной папки."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Планировщик"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr "<b>Расписание</b>"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Ограничение загрузки:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Ограничение отдачи:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Активные торренты:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Активные загрузки:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Активные раздачи:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Ограничения:</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Файловый браузер"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Назад"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Вперёд"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "Домашняя папка"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Создать"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Справка"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Выйти"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Сохранить"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "О Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Copyright 2007-2018 Команда Deluge"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Удалить с загруженными данными"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Добавить подключение"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Хост:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "Не удалось добавить хост: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Переместить"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Обзор"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Изменить подключение"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "Не удалось изменить хост"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Войти"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Ошибка входа"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Введён неверный пароль"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Публичный"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Последняя активность"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "Смешанный"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Установить максимум соединений"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Скорость загрузки"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 КиБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 КиБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 КиБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 КиБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 КиБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Установить максимальную скорость загрузки"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Скорость отдачи"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Установить максимум скорости отдачи"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Трафик протокола - Загрузка/Отдача"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "Свободное место в папке для загрузки"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Соединиться"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Остановить службу"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Отключиться"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Запустить службу"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Изменить пароль по умолчанию"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Рекомендуется изменить пароль по умолчанию.<br><br>Изменить его сейчас?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "Хост трекера"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Фильтры"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "Соединение восстановлено"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "Соединение потеряно"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "Соединение с веб-сервером потеряно!"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "Потеряно соединение с веб-сервером"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Ограничение скорости закачки"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Ограничение скорости загрузки"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Ограничение соединений"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Ограничение слотов раздачи"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Обновить трекер"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Перепроверить принудительно"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Развернуть всё"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Подробности"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Комментарий:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Статус:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Перемещать завершённые:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Общее"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Приватный"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Загружается"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Истина"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Уведомлять о выходе новых версий"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Помогите нам сделать Deluge лучше, отправляя сведения об используемых "
+"версиях Python, PyGTK, а также о типах ОС и процессора. Никакая другая "
+"информация не отправляется."
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Приостановить торрент"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Установить модуль"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Установить"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr "Выберите egg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr "Модуль Egg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Обзор..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Ваш модуль загружается..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Максимум соединений:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Максимальная скорость приёма (КБ/с):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Максимальная скорость отдачи (КиБ/с):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Максимум полуоткрытых соединений:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Максимум попыток соединения в секунду:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Максимум слотов отдачи:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Размер кэша (блоков по 16 КиБ):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Использовать прокси принудительно"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "Найти ещё"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Использовать случайный порт"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Тип обслуживания (ToS)"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr "Показывать фильтры с нулевым числом торрентов"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr "Разрешить использование нескольких фильтров одновременно"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr "Пароль веб-интерфейса"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "Старый:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Новый:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Подтвердите:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Сервер"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Время ожидания сеанса"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr "Включить SSL (пути относ. папки конфиг. Deluge)"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Закрытый ключ:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Сертификат:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr "Язык веб-интерфейса изменён"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+"Вы хотите обновить страницу сейчас, чтобы сразу использовать новый язык?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Обновить"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "Неверный пароль"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Введённые пароли не совпадают!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "Введён неверный старый пароль!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "Успешно изменено"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "Ваш пароль был изменён успешно!"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Добавить по ссылке"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Куки"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Не удалось скачать торрент"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Файл"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Хэш данных"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Загрузка торрента…"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Не удалось загрузить торрент"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Недействительный торрент"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "Каталог для перемещения завершённых загрузок"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Макс. ск. загрузки"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Макс. скор. отдачи"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Добавить остановленным"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr "Супер-раздача"
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Загрузка"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "Оставшееся время:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "Дата добавления:"
diff --git a/deluge/i18n/si.po b/deluge/i18n/si.po
new file mode 100644
index 0000000..fdaad79
--- /dev/null
+++ b/deluge/i18n/si.po
@@ -0,0 +1,6209 @@
+# Sinhalese translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Sinhalese <si@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "සියලු"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "සක්‍රීය"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "පිරික්සමින්"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "බාගත වෙමින්"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "seed වෙමින්"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "විරාමයක් දී ඇත"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "පෙළගැසූ"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "දෝෂයකි"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "නම"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "ප්‍රගතිය"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "ප්‍රමාණය"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "භාගත වූ"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "උඩුගත කළ"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "අනුපාතය"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "බාගත වේගය"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "උඩගත වේගය"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "බාගත සීමාව"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "උඩුගත සීමාව"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "තුල්‍යයන්"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Avail"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "එක් කරන ලදි"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "හඹායන්නා"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ඉතිරිව ඇති කාලය"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "ප්‍රමුඛතාව මුල්/අවසාන"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "ස්වයංක්‍රිය පාලනය"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "අවවාදයයි"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "නිවේදනය සාර්ථකයි"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "නිවේදනය යැව්වා"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "අතුරුමුහුණත"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "බාගැනුම්"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "කලාප පරාසය (Bandwidth)"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "පෙළ"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "ජාලය"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "ප්‍රොක්සිය"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "කැච්"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "වෙනත්"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Daemon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Plugins"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "ඇෆ්ගනිස්ථානය"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "අලෑන්ඩ් දූපත්"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "ඇල්බේනියාව"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "ඇල්ජීරියාව"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "ඇමරිකානු සැමෝවා"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "ඇන්ඩෝරාව"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "ඇන්ගෝලාව"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "ඇන්ගියුලාව"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "ඇන්ටාක්ටිකාව"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "ඇන්ටිගුවා සහ බාර්බඩා"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "අර්ජන්ටිනාව"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "ආර්මේනියාව"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "අරුබාව"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "ඔස්ට්‍රේලියාව"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "ඔස්ට්‍රියාව"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "අසර්බයිජානය"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "බහමාස්"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "බහරේනය"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "බංග්ලාදේශය"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "බාර්බඩෝස්"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "බෙලාරුස්"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "බෙල්ජියම"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "බෙලිසිය"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "බෙනින්"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "බර්මියුඩාව"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "භුතානය"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "බොලීවියාව"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "බොස්නියාව සහ හෙසෙගවිනා"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "බොට්ස්වානා"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "බොවෙට් දිවයින"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "බ්‍රසීලය"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "බ්‍රිතාන්‍යයේ ඉන්දියානු සාගර බල ප්‍රදේශය"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "බෘනායි දරුස්සලාම්"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "බල්ගේරියාව"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "බර්කිනා ෆාසෝ"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "බුරුන්ඩි"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "කාම්බෝජියාව"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "කැමරූන්"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "කැනඩාව"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "කේප් තුඩුව"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "කේමන් දූපත්"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "මධ්‍යම අප්‍රිකානු ජනරජය"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "චැඩ්"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "චිලී"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "චීනය"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "ක්‍රිස්ම්ස් දූපත"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "කොකෝවා (කීලිං) දූපත්"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "කොලොම්බියාව"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "කොමොරොස්"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "කොන්ගෝව"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "කොන්ගෝ ප්‍රජාතන්ත්‍රවාදී ජනරජය"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "කුක් දූපත්"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "කොස්ටා රිකා"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "කොට් ඩි'ඉවොයර්"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "ක්‍රොඒෂියාව"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "කියුබාව"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "සයිප්‍රසය"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "චෙක් ජනරජය"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "ඩෙන්මාකය"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "ජිබුටි"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "ඩොමිනිකාව"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "ඩොමිනිකන් ජනරජය"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "ඉක්වදෝරය"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "ඊජිප්තුව"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "එල් සැල්වදෝරය"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "එක්වටෝරියල් ගිනියා"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "එරිත්‍රියාව"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "එස්ටෝනියාව"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "ඉතියෝපියාව"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "ෆෝක්ලන්ඩ් දූපත් (මල්විනාස්)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "ෆැරෝයි දූපත්"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "ෆීජි"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "ෆින්ලන්තය"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "ප්‍රංශය"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "ප්‍රංශ ගයනාව"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "ප්‍රංශ පොලිනීසියාව"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "ප්‍රංශ දකුණු බලප්‍රදේශය"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "ගැබෝනය"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "ගැම්බියාව"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "ජොර්ජියාව"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "ජර්මනිය"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "ඝානාව"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "ජිබ්‍රොල්ටා"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "ග්‍රීසිය"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "ග්‍රීන්ලන්තය"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "ග්‍රෙනාඩා"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "‍ගෝඩිලෝප්"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "ගුවාම්"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "ගෝතමාලාව"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "ගුඑර්නසි"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "ගිනියා"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "ගිනියා - බිසව්"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "ගුයානා"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "හයිටි"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "හර්ඩ් දූපත සහ මැක්ඩොනල්ඩ් දූපත්"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "ශුද්ධ වූ බැලීම ( වතිකානු නගර ජනපදය )"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "හොන්ඩුරාස්"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "හොං කොං"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "හංගේරියාව"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "අයිස්ලන්තය"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "ඉන්දියාව"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "ඉන්දුනීසියාව"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "ඉරාන ඉස්ලාමීය ජනරජය"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "ඉරාකය"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "අයර්ලන්තය"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "අයිස්ල් ඔෆ් මෑන්"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "ඊශ්‍රායලය"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "ඉතාලිය"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "ජැමෙයිකාව"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "ජපානය"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "ජර්සි"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "ජොර්දානය"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "කසකස්තානය"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "කෙන්යාව"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "කිරිබටි"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "කොරියානු ප්‍රජාතාන්ත්‍රික ජනරජය"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "කොරියානු ජනරජය"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "කුවේටය"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "කිර්ගිස්තානය"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "ලාඕ ප්‍රජාතාන්ත්‍රික ජනරජය"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "ලැට්වියාව"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "ලෙබනනය"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "ලෙසතෝව"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "ලිබේරියාව"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "ලිබියානු අරාබි ජමහිරිය"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "ලීච්ටෙන්ස්ටයින්"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "ලිතුවේනියාව"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "ලක්සම්බර්ග්"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "මැකාවෝ"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "මැසිඩෝනියාව,"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "මැඩගස්කරය"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "මලාවී"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "මැලේසියාව"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "මාලදිවයින"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "මාලි"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "මොල්ටාව"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "මාෂල් දූපත්"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "මාටිනික්"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "මවුරිටේනියා"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "මොරිෂස්"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "මයෝ"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "මෙක්සිකෝව"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "මයික්‍රොනීසියානු සමූහාණ්ඩුව"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "මෝල්ඩෝවා"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "මොනකෝව"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "මොංගෝලියාව"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "මොන්ටෙන්ග්‍රෝව"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "මොන්ට්සෙරට්"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "මොරොක්කෝව"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "මොසැම්බික්"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "මියන්මාරය"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "නැමීබියාව"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "නාවුරු"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "නේපාලය"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "නෙදර්ලන්තය"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "නෙදර්ලන්ත ඇන්ටිලීස්"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "නිව් සෙලිඩෝනියාව"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "නවසීලන්තය"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "නිකරගුවාව"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "නයිජර්"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "නයිජීරියාව"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "නිඌ"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "නෝෆෝක් දූපත"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "උතුරු මරියානා දූපත්"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "නෝර්වේ"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "ඕමානය"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "පකිස්තානය"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "පාවුලු"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "පලස්තීනියානු බල ප්‍රදේශය, සන්තක"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "පැනමාව"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "පැපුවා නිව් ගිනියාව"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "පැරගුවේ"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "පේරු"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "පිලිපීනය"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "පිට්කෙයාන්"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "පෝලන්තය"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "පෘතුගාලය"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "පෝටො රිකෝ"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "කටාරය"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "රියුනියන්"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "රොමේනියාව"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "රුසියානු සමූහාණ්ඩුව"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "ර්වන්ඩා"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "සාන්ත බාතලෙමේය"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "සාන්ත හෙලේනා"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "ශාන්ත කිට්ස් සහ නෙවිස්"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "ශාන්ත ලුසියා"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "ශාන්ත මාටින්"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "සාන්ත පියරෙ ඇන්ඩ් මැක්‍ලන්"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "සාන්ත වින්සන්ට් සහ ද ග්‍රිනැඩින්ස්"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "සැමෝවා"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "සැන් මරීනෝ"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "සාඕ ටොමේ සහ ප්‍රින්සිපේ"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "සවුදි අරාබිය"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "සෙනගාලය"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "සර්බියාව"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "සී ශෙල්ස්"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "සියෙරා ලියොන්"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "සිංගප්පූරුව"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "ස්ලෝවැකියාව"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "ස්ලෝවේනියා"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "සොලමන් දූපත්"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "සෝමාලියාව"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "දකුණු අප්‍රිකාව"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "දකුණු ජොර්ජියාව සහ දකුණු සැන්විච් දූපත්"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "ස්පාඤ්ඤය"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "ශ්‍රී ලංකාව"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "සුඩානය"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "සුරිනේම්"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "ස්වල්බාඩ් සහ ජන් මයෙන්"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "ස්වාසිලන්තය"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "ස්වීඩනය"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "ස්විට්සර්ලන්තය"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "සිරියානු අරාබි ජනරජය"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "ටජිකිස්තානය"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "ටැන්සානියා එක්සත් ජනරජය"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "තායිලන්තය"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "ටිමෝර්-ලෙස්ටේ"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "ටෝගෝව"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "ටොකෙලෝව"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "ටොන්ගා"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "ට්‍රිනිඩෑඩ් සහ ටොබේගෝ"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "ටියුනීසියාව"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "තුර්කිය"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "ටර්ක්මනිස්ථාන්"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "ටර්ක්ස් සහ කයිකොස් දූපත්"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "ටුවාලු"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "උගන්ඩාව"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "යුක්රේනය"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "එක්සත් අරාබි එමිර් රාජ්‍යය"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "එක්සත් රාජධානිය"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "එක්සත් ජනපදය"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "එක්සත් ජනපදයේ දුරින් පිහිටි කුඩා දූපත්"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "උරුගුවේ"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "උස්බකිස්තානය"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "වැනෝටු"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "වෙනිසියුලාව"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "වියට්නාමය"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "වර්ජින් දූපත්, බ්‍රිතාන්‍යය"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "වර්ජින් දූපත්, එ.ජ."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "වෝලිස් සහ ෆුටුනා"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "බටහිර සහරා"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "යේමනය"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "සැම්බියාව"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "සිම්බාබ්වේ"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "පසුබිම් ක්‍රියාවලි ධාවකය ධාවනය නොවේ"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "ගොනු නම"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "ස්ථරය"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "ගොනුවක් තෝරන්න"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "බහාලුමක් තෝරන්න"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ".torrent ගොනුව සුරකින්න"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "ටොරන්ට් ගොනු"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "සියළුම ගොනු"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"තුල්‍යයන් අතර වැඩසටහන බෙදාගැනීම\n"
+"BitTorrent protocol භාවිත කිරීම"
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "සේවාලාභියා:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "දැනට සිටින සංවර්ධකයන්"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "පෙර සිටි සංවර්ධකයන්"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"මෙම වැඩසටහන නිදහස් මෘදුකාංගයකි. ඔබට මෙය GNU General Public License යටතේ "
+"සංස්කරණය කිරීමට හෝ නැවත බෙදා දීමට හැක. \n"
+"මෙම වැඩසටහන සමඟ ඔබට GNU General Public License හි පිටපතක් ලැබිය යුතුය. "
+"නොලබිනිනම් <http://www.gnu.org/licenses> බලන්න."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "සේවාදායකය:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "ටොරන්ට් ලයිබ්රි"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "ටොරන්ට්"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "වලංගු නැති යොමුව"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ".torrent ගොනුවක් තෝරන්න."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "වලංගු නොවන URL එකකි"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "වලංගු නොවන URL එකකි."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "බාගත කරමින්..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "බාගත කිරීම අසාර්ථක වුනි"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "බාගත කිරීම අසාර්ථක වුනි"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "තොරතුරු"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "පරිශිලක නම:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "මුරපදය:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "මුරපදයක් යොදා ඇත"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "වෙනත්..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "සම්බන්ධ කර නොමැත"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT නෝඩ"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "නිදහස් තැටි අවකාශය"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "ප්‍රමුඛත්වය"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "සියළු (_A)"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_තත්වය"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_විස්තර"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_ගොනු"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Peers"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_විකල්ප"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "සම්බන්ධ වී නොමැත"
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "අසීමිත"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "පහළ"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "ඉහළට"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "නොබැඳි"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "සබැඳි"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "සම්බන්ධ වුණු"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "තත්වය"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "ධාරකය"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "වෙලුම"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Daemon අරඹන්න"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Daemon නවත්වන්න"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "deamon ආරම්භ කිරීමට නොහැකි විනි."
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "සත්කාරකයා එක් කිරීමේදී දෝෂයක්"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "සක්‍රීයයි"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "ප්ලගීන"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Plugin එක තෝරන්න"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "ස්වභාවයන්"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "ට්‍රැකර් (tracker)"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "කිසිවක් නැත"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "ලේබල් මගින්"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "ලේබල නැත"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>සේවාලාභියාගේ අනුවාදය </i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrents පෙළගැසී ඇත."
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrents පෙළගැසී ඇත."
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "සීමා රහිත ලෙස සකසන්න"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "ක්‍රියා කරවීම"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "නවත්වන්න"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "ලිපිනය"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "සේවාලාභියා"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Torrent නිර්මාණය"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "පෙළගැස්වූ Torrents"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_ඉවත්කරන්න"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "එක් කරන්න torrents ස්වයංක්‍රියව සම්බන්ධවීමට"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_ගොනුව"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_torrent එක්කරන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_ Torrent නිර්මාණය කරන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Daemon වෙතින් ඉවත්වන්න සහ _වැඩ නවත්වන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_සංස්කරණය"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_සම්බන්ධතා කළමනකරු"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_පෙන්වන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_මෙවලම් තීරුව"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "පැති තීරුව"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "තත්ව_තීරුව"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_abs"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_තීරු"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "පැති_තීරුව"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "පෙන්වන්න _Zero Hits"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "පෙන්වන්න _ ලුහුබඳින්නන්"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_උපකාර"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_නිවාස පිටුව"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "නිතර නඟන ප්‍රශ්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_සමූහය"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "torrent එක් කරන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Torrent එක් කරන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "torrent ඉවත්කරන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Torrent ඉවත්කරන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "තෝරාගත් torrents මදක් නවත්වන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "මදක් නවත්වන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "තෝරාගත් torrents නැවත අරඹන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "නැවත අරඹන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Torrent ඉහලට පෙළගස්වන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "ඉහලට පෙළගස්වන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Torrent පහලට පෙළගස්වන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "පහලට පෙළගස්වන්න"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "අභිමත"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "සම්බන්ධතා කළමනාකරු"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "titlebar හි සැසි වේගය පෙන්වන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "torrent එක්කිරිමේදී කවුළුව කේන්ද්‍රගත කරන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "පද්ධති තැටි අයිකනය සක්‍රීය කරන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "වැසීමේදී තැටියට හකුළන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "තැටිය තුලදී අරඹන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "මුරපද සුරැකි පද්ධති තැටිය"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "සම්පූර්ණ කරන ලද්ද ගෙනයා යුත්තේ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "වෙත .torrent ගොනු පිටපත් කරන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "ඉවත්කිරිම මඟින් ටොරන්ට් ගොනුවේ පිටපත මකාදමන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "ටොරන්ටුව ඉවත්කිරීමේදී ඇති වූ ටොරන්ට් ගොනුවෙහි පිටපත් මකාදමන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "වෙත බාගන්න:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "මුල් සහ අවසාන ටොරන්ට් කොටස් පෙළගස්වන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "මුල් සහ අවසාන ටොරන්ට් ගොනු වල කොටස් පෙළගස්වන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "මදකට නතර කර ඇති අවස්ථාවේදී ටොරන්ටු එක් කරන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "සැමවිටම පෙන්වන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "සංවාදය අවධානයට ගන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "ඉඩ දියහැකි උපරිම සම්බන්දතා ගණන. 1 සිට අනන්තය දක්වා සකසන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "සම්බන්ධතා:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"සියළුම torrents සඳහා උඩුගත කිරීමට ඉඩ දිය හැකි උපරිම කට්ටල ගණන.1 සිට අනන්තය "
+"දක්වා සකසන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"සියළුම torrents සඳහා භාගත කල හැකි උපරිම වේගය.1 සිට අනන්තය දක්වා සකසන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "බාගත වේගය:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"සියලුම torrents සඳහා උපරිම උඩුගතකිරීමේ වේගය. අපරිමිතය සඳහා 1-පිහිටුවන්න."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "උද්ගාමක වේගය:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "ප්‍රාදේශීය ජාලයේ නොතැකි සිමාවන්"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "සීමාවට ඉහලින් පිහිටි IP අගයන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"පරික්ෂා කර අවසානනම්, මුළු තද බදය ඉක්මවා යාම වලක්වා ගැනීම සඳහා තක්සේරු කරන ලද "
+"TCP/IP උපරිමය ශ්‍රීඝ‍්‍රතා අනුපාතිකයන් මගින් පාලනය කරණු ලැබේ."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"torrent එකකට උපරිම උඩුගත කිරීම් කට්ටල. අපරිමිත අගය සඳහා 1 ආදේශ කරන්න."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "torrent එකකට උපරි සබඳතා සංඛ්‍යාව.අපරිමිත අගය සඳහා 1 ආදේශ කරන්න."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "සක්‍රීය පෙණු"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "පරීක්ෂණ සක්‍රීය පෙණුව"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "යවන්නා:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "වෙත:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "මට්ටම:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "සර්වත්‍ර පේනුව-සවිකිරීම සහ ක්‍රියාකරවීම"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT පෙණුව අනුරුපණයෙහි මූලලේඛනය"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer හුවමාරුව"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+"ප්‍රාදේශීය සේවා අනාවරණය මඟින් ඔබේ ජාලයෙහි ප්‍රාදේශීය peers සොයාගෙන ඇත."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "ව්‍යාප්ත හෑෂ් වගුව මඟින් සක්‍රිය සබඳතා ප්‍රමාණය වැඩි දියුණු කරයි."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "peer TOS බයිටය:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "ධාරක නාමය:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "පේනුව:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Cache ප්‍රමාණය (16 කිලෝ බයිට් කොටස්):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Cache ඉකුත්වීම (තත්පර):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "සැකසුම්"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"මෙම සැසිය ආරම්භයේ සිට තැටියෙහි ලියැවුණු සම්පුර්ණ16 කිලෝ බයිට් කොටස් සංඛ්‍යාව."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "ලියැවුණු කොටස්:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"මෙම සැසිය ආරම්භයේ සිට සම්පුර්ණ ලිවීම් සිදුකෙරුණු ක්‍රියාත්මක වීම් සංඛ්‍යාව."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "ලිවීම්:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"අනුපාතය (ලියන - ලියැවුණ_කොටස්)/ලියැවුණ_කොටස් නියෝජනය කරනවා සුරැකි ලිවීම් "
+"සිදුකෙරුණු ක්‍රියාත්මක වීම් සංඛ්‍යා, උදා.cache ලිවීම් සඳහා cache hit "
+"අනුපාතිකය වැ.නි"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "ලියන Cache Hit අනුපාතය:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"තැටිය හෝ cache මඟින් භාරදුන්, bittorrent එන්ජිම මඟින් ඉල්ලාසිටි කොටස් "
+"ගණන(peers වෙතින්)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "කියවූ කොටස්:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "cache මඟින් භාරදුන් බාරදුන් කොටස් ගණන."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Hit ලෙස කියවෙන ලද කොටස් ගණන:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "The read cache සඳහා cache hit අනුපාතිකය."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Read Cache Hit අනුපාතිකය:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"මෙම සැසිය ආරම්භයේ සිට සම්පුර්ණ කියවීම් සිදුකෙරුණු ක්‍රියාත්මක වීම් සංඛ්‍යාව."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "කියවීම්:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Disk cache හි ඇති සම්පුර්ණ 16 කිලෝ බයිට් කොටස් සංඛ්‍යාව. මේ සඳහා කියවුන හා "
+"ලියවුන cache අදාළ වේ."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Cache තරම:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Read Cache තරම:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"ඔබගේ Python සංස්කරණය, PyGTK සංස්කරණය, කාරක පද්ධතිය සහ සකසනයේ මාදිලිය එවීම "
+"මඟින් Deluge වැඩි දියුණු කිරීම සඳහා උපකාර කරන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "ඔව්, කරුණාකර නිර්නාමික සංඛ්‍යාලේඛන එවන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "පිහිටීම:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"මෙම පිහිටිමෙහි පරිඝනක දත්ත ගබඩා ගොනුව Deluge ට සොයා ගත නොහැකි වුවහොත් peer "
+"අයත් රට විසඳා ගැනීමට එය නැවතත් DNS භාවිතයට යොමුවේ."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Daemon පෙණුව:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "දුරස්ථ සබඳතා අනුමත කරන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "සබඳතා"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "නව නිකුත් කිරීම් සඳහා කලින් කල වෙබ් අඩවිය පරීක්ෂා කරන්න"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "සංස්කරණය:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "කර්තෘ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "නිවාස පිටුව:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "කර්තෘ විද්‍යුත් තැපෑල:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "තොරතුරු"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Peer එක්කරන්න"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:පෙණුව"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>සාමාන්‍ය</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "infohash එක් කරන්න"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "පථය:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "ධරකයෙකු එක් කරන්න"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "ගමනාන්තය:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "නව නිකුත්කිරීම්"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_ජාල අඩවියට පිවිසෙන්න"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "මෙම දෙබස අනාගතයේදී දර්ශනය නොකරන්න"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "නාමය:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "සටහන්:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "ගෙනයාම සම්පුර්ණයි:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "seed නැවත්වියයුතු අනුපාතය:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "ඉවත් කරන අනුපාතය"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_ලුහුබඳින්නන් සංස්කරණය කරන්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "ඉහළ"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "පහළ"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Torrents එක්කරන්න"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "_hash තොරතුරු"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "In_Paused තත්වයට එක් කරන්න"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "පළමු/අවසාන කොටස් ලෙස පෙළ ගස්වන්න"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "සියල්ලටම යොදන්න"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "මුලික තත්වයට නැවත සකසන්න"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Deluge පෙන්වන්න"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_භාගත කිරීමේ වේග සීමාව"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_උඩුගත කිරීමේ වේග සීමාව"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "පිටවී Daemon නවත්වන්න"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "හඹායන්නා සංස්කරණය කරන්න"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Peer එක්කරන්න"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "peer එහි IP මඟින් එක්කරන්න"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "පථය සංස්කරණය කරන්න"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "ලුහුබැඳීම්"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "දුරස්ථ පථයට ඇතුළු වන්න"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "පථය:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Torrent නිර්මාණය කරන්න"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_ෆෝල්ඩරය"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_දුරස්ථ පථය"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "ජාලseeds"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "කොටසක තරම:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "පෞද්ගලික හැගවීමක් තනන්න"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "මෙම torrent එක සැසියකට එක කරන්න"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "තේරීම්"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ".torrent මෙසේ සුරකින්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_මදක් නවත්වන්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_ආපසු අරඹන්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "තෝරාගත් ටොරන්ටු නැවත අරඹන්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_ විකල්ප"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_පෙළ"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_ලුහුබඳින්නන් යාවත්කාලින කරන්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Torrent ය ඉවත්කරන්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_නැවත පරික්ෂා කිරීමට බලපෑම් කරන්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "ලේබලය"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_සියල්ල තෝරන්න"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_සියල්ල මඳකට නවතන්න"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "සියල්ල_නැවත අරඹන්න"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_ සබඳතා සීමාව"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "_උඩුගත කිරීම් විවර සිමාව"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_ස්වයං පාලනයවූ"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "හඹායන්නා එක් කරන්න"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URL එක එක් කරන්න"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "සම්බන්දකය (URL):"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_සියල්ල විහිදන්න"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent අනුග්‍රාහකයා"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent අනුග්‍රාහකයා"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "BitTorrent හරහා ගොනු බාගත කිරීම සහ බෙදාහැරීම සිදුකරන්න"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "විධානය"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "අහඹු පෙණු භාවිත කරන්න"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "ඉමියුල් IP ලැයිස්තුව (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "සුරක්ෂිත තුල්‍යයාගේ වගන්තිය (Zip කරන ලද)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "තුල්‍ය භාරකාරයාගේ වගන්තිය (දිගහරිනලද)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "තුල්‍ය භාරකාරයාගේ P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "අවහිර කල ලේඛනය"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "වලංගු නොවෙන නායකයා"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "වලංගු නොවෙන magic code"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "වලංගු නොවෙන අනුවාදය"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "දින"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "සෑම නව ලැයිස්තුවක්ම පිරික්සන්න"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "අවහිර ලැයිස්තුව ආරම්භක ස්ථානයට ආනයන කරන්න"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>කට්ටල අංග</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "අවශ්‍යනම් අවහිර ලැයිස්තුව ආනයනය හෝ භාගත කරගන්න"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "භාගත කිරීම සහ ආනයනය කිරීම් පිරික්සන්න"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "නව අවහිර ලැයිස්තුවක් බාගත කර එය ආනයන කරන්න"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "ඉක්මනින් භාගත කරන්න සහ ආනයන කරන්න"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "අවහිර ලැයිස්තුව අද දිනට යාවත් කාල කරන්න"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>විකල්ප</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "ආකාරය:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "දිනය:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "ගොණුවෙහි ප්‍රමාණය"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>තොරතුරු</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent සම්පූර්ණයි"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent එක් කරන ලදී"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "ක්‍රියාත්මක කරන්න"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "සිදුවීම"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>විධානය එකතු කරන්න</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>විධාන</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "සොයන ගොණුව අඩංගු නොවේ"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "දී ඇති මාර්ගය අඩංගු නොවේ"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "බහළුම සැකසුම් නරඹන්න"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "බහාළුමක් තෝරන්න"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "මෙය සක්‍රීය කර බහාළුම් නරඹන්න"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>බහළුම නරඹන්න</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ".torrent ගොණුව එකතු කිරීමෙන් අනතුරුව මක දමන්න"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "එකතුකිරීමෙන් පසුව විස්තාරණය අමුණන්න"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent ගොණු ක්‍රියාව</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>සම්පූර්ණ කරන ලද්ද ගෙනයන්න</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "ලේබලය: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>ලේබලය</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "ප්‍රධාන"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "උපරිම උඩුගත කල හැකි වේගය:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "උපරිම සබැදුම:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "උපරිම උඩුගත කට්ටල:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "උපරිම භාගතකල හැකි වේගය:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>කලාප පළල</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "ස්වයංක්‍රිය පාලනය කිරීම:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "නැවතීම එකතු කරන්න:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "පෙළට:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>පෙළ</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>බහළුම් නරඹන්න:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge අන්තර්ජාල අතුරු අතුරු මුහුණත පිහුටුවා නැත, කරුණාකර \n"
+"අතුරුමුහුණත පිහුටුවා නැවත උත්සාහ කරන්න"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "අන්තර්ජාල අතුරු මුහුණත සක්‍රීය කරන්න"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL සක්‍රීය කරන්න"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "ඇහුම්කන්දෙන පේනුව:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "වැරදි නම් කිරීමක්, වලංගු සංකේත: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "හිස් ලේබලය"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "ලේබලය දැනටමත් ඇත"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "නොදන්නා ලේබලයක්"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "නොදන්නා ටොරන්ටුවක්"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "ලේබල_විකල්ප"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_ලේබලය ඉවත්කරන්න"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_ලේබලයක් එකතු කරන්න"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "විකල්ප ලේබල"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "ලේබලය"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>විකල්ප ලේබල</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "ටොරන්ටුවක් සඳහා යෙදිය යුතු උපරිම සැකසුම්:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "උපරිම"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "පෙළ සැකසුම් යොදන්න:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(ට්‍රැකර් (tracker)කෙනෙකුට එක පේලියක්)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "ස්වයන්ක්‍රියව ලේබල යොදන්න:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "ලේබල එකතු කරන්න"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>ලේබල එකතු කරන්න</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>ලේබල එකතුකිරීම්,සංස්කරණය කිරීම් සහ ඉවත්කිරීම් පැතිපුවරුව භාවිතා කරන්න. "
+"</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>ලේබල</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "නිවේදනය ක්‍ෂණයකින් පෙනුණි."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "පොප් අප් නිවේදන සක්‍රීය කර නැත"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "පොප් අප් නිවේදන පෙන්වයි"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "ශබ්ද නිවේදන සක්‍රීය කර නැත"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "පයිතන් ක්‍රීඩා පිහිටුවා නැත"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "ශබ්ද නිවේදන පෙන්වීම අසමත් %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "ශබ්ද නිවේදන සාර්ථකයි"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent අවසානයි"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "දැනුම්දීම්"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "ශබ්ද ගොණුවක් තෝරන්න"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "නිවේදන විද්‍යුත් ලිපිය යැවීමේදී දෝෂයක් ඇත:%s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "නිවේදන විද්‍යුත් ලිපිය යැවිනි."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "භාගතකර අසවානයි \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"මෙම විද්‍යුත් ලිපිය මඟින් ඔබට Deluge මගින් \"%(name)s\", භාගත කරමින් පැවතුනු "
+"%(num_files)i ගොණුව භාගත කර අවසාන බව දැනුම් දෙයි.\n"
+"මෙම දැනුම් දීම් ලැබීම නැවතීම සඳහා Deluge හි ඇති නිවේදන විද්‍යුත් ලිපි වරණය "
+"ඉවත් කරන්න.\n"
+"\n"
+"ඔබට ස්තුතියි,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "ට්‍රේ අයිතම බ්ලින්ක් සක්‍රීයයි"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "පොප් අප් නිවේදන සක්‍රීයයි"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "ශබ්දය සක්‍රීයයි"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>පරිශීලක අතුරු මුහුණත නිවේදන</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>ප්‍රතිග්‍රාහකයින්</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "සර්වරයට TLS/SSL ඕනෑ කරනවා"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>විද්‍යුත් තැපැල් නිවේදන</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"මෙම වින්‍යාසයන් මගින් ඔබට සත්‍ය වශයෙන්ම සෑම \tසිදුවීමකදිම නිවේදන ලබා දෙන බව "
+"අර්ථ නොදක්වයි."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "උපලේඛනයන්"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "ශබ්ද පරිපාලනය"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "දිගහැරීමට:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "torrent නමින් උප බහාළුමක් තනන්න"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"මෙම විකල්පය මගින් තෝරාගන්නා ලද බහළුමෙහි දිග හරින ලද ගොණු ස්ථාපිත කිරීමසඳහා "
+"torrent නමින් උප බහාළුමක් නිර්මාණය කරගනියි."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "බාගත සීමාව"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "උද්ගාමක සීමාව:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "සජීවී Torrents:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "සජීවී භාගත කිරීම්:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "සජීවී Seeding:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>සෙමින් සැකසුම්</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "ධාරකයා:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "උපරිම සම්බන්ධතාවයක් සකසන්න."
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "භාගත කිරීමේ වේගය"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "උපරිම භාගත කිරීමේ වේගයක් සකසන්න"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "උඩුගත කිරීමේ වේගය"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "උපරිම උඩුගත කිරීමේ වේගයක් සකසන්න"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protocol තදබදය උඩුගත කිරීම/භාගත කිරීම"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "පෞද්ගලික"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "නව නිකුත් කිරීම් සම්බන්ධව විමසීමෙන් සිටින්න"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "උපරිම සබඳතා:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "උපරිම භාගත කිරීමේ වේගය (කිලෝ බයිට්/ තත්පරයට):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "උපරිම උඩුගතකිරීමේ වේගය (කිලෝ බයිට් /තත්පරයට):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "උපරිම අඩක්-විවෘත සබඳතා:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "තත්පරයට උපරිම සබඳතා ප්‍රයත්නයන්:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "උපරිම උඩුගත කිරීමේ විවරයන්:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/sk.po b/deluge/i18n/sk.po
new file mode 100644
index 0000000..c5dadee
--- /dev/null
+++ b/deluge/i18n/sk.po
@@ -0,0 +1,6197 @@
+# Slovak translation for deluge
+# Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Slovak <sk@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Všetky"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktívne"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Kontroluje sa"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Preberané"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Seedované"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pozastavené"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Vo fronte"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Chyba"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Názov"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Priebeh"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Stav"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Veľkosť"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Prebraté"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Odoslaný"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Pomer"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Preberanie"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Odosielanie"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Limit preberania"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Limit odosielania"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Peeri"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Prospech"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Pridané"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Zostáva"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Uprednostniť prvé/posledné"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatické spravovanie"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Časti"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Upozornenie"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Ohlásenie OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Ohlásenie odoslané"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Rozhranie"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Prenosy"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Šírka pásma"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Fronta"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Sieť"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Vyrovnávacia pamäť"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Iné"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Démon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Zásuvné moduly"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Alandy"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albánsko"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Alžírsko"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Americká Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andora"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktída"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua a Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentína"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Arménsko"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Austrália"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Rakúsko"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbajdžan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamy"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrajn"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladéš"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Bielorusko"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgicko"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudy"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhután"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolívia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna a Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvetov ostrov"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazília"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Britské indickooceánske územie"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunej"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulharsko"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kapverdy"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kajmanské ostrovy"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Stredoafrická republika"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Čad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Čile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Čína"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Vianočný ostrov"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosové ostrovy"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komory"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Demokratická republika Kongo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cookove ostrovy"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kostarika"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Pobrežie slonoviny"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Chorvátsko"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cyprus"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Česká republika"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Dánsko"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Džibutsko"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikánska republika"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekvádor"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Salvádor"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Rovníková Guinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estónsko"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiópia"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkandské ostrovy (Malvíny)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faerské ostrovy"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidži"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Fínsko"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francúzsko"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Francúzska Guyana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Francúzka Polynézia"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Francúzske južné a antarktické územia"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gruzínsko"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Nemecko"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltár"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grécko"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grónsko"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heardov ostrov a MacDonaldove ostrovy"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Svätá stolica (Vatikánsky mestský štát)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Maďarsko"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "India"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonézia"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Irán"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Írsko"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Ostrov Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Izrael"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Taliansko"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamajka"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japonsko"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordánsko"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazachstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Keňa"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Severná Kórea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Kórejská republika"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuvajt"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgizsko"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Lotyšsko"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Libéria"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Líbya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Lichtenštajnsko"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litva"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxembursko"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Macedónsko"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Magadaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malajzia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maledivy"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Maršalove ostrovy"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinik"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauretánia"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Maurícius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronézia"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavsko"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolsko"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Čierna Hora"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Mjanmarsko (Barma)"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namíbia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepál"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Holandsko"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Holandské Antily"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nová Kaledónia"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nový Zéland"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigéria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Ostrov Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Severné Mariánske ostrovy"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Nórsko"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Omán"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestínske územie, okupované"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua - Nová Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguaj"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipíny"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairnove ostrovy"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Poľsko"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugalsko"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Portoriko"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumunsko"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Rusko"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Svátý Bartolomej"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Svätá Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Svätý Krištof a Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Svätá Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Turčiansky Svätý Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Svätý Pierre a Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Svätý Vincent a Grenadíny"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Maríno"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Svätý Tomáš a Princov ostrov"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudská Arábia"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Srbsko"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychelly"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovensko"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovinsko"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Šalamúnove ostrovy"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somálsko"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Juhoafrická republika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Južná Georgia a Južné Sandwichove ostrovy"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Španielsko"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Srí Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudán"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Špicbergy a Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swazijsko"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Švédsko"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Švajčiarsko"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Sýria"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadžikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzánia"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thajsko"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Východný Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad a Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisko"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turecko"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkménsko"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Ostrovy Turks a Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukrajina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Spojené Arabské Emiráty"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Veľká Británia"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "USA"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Menšie odľahlé ostrovy USA"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Britské panenské ostrovy"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Americké paneské ostrovy"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis a Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Západná Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Démon nie je spustený"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Názov súboru"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Úroveň"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Vyberte súbor"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Vyberte priečinok"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Uložiť súbor .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent súbory"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Všetky súbory"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Peer-to-peer zdieľací program\n"
+"využívajúci protokol BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klient:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Aktuálni vývojári:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Predošlí vývojári alebo prispievatelia:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Neplatný súbor"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Vyberte súbor s príponou .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Neplatná URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "nie je platnou URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Preberá sa..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Preberanie neúspešné"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Zlyhalo preberanie:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Podrobnosti:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Užívateľské meno:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Heslo:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Iné..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Nepripojený"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT uzly"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Voľné miesto na disku"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Áno"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nie"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Priorita"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Stav"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Podrobnosti"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Sú_bory"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "P_eerovia"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Možnosti"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Nepripojené..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Neobmedzené"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Preberanie"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Odosielanie"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Nepripojený"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Pripojený"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Pripojené"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Stav"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Host"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Verzia"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Spustiť démona"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Zastaviť démona"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Nedá sa spustiť démon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Chyba počas pridávania Hostu"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Meno používateľa"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Úroveň"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Povolený"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Modul"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Zvoliť rozšírenie"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Rozšírenie Vajíčka"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Stavy"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackery"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Žiadne"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administrátor"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Štítky"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Bez štítku"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Verzia klienta</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrenty vo fonte"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent vo fronte"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Nastav neobmedzene"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Zapnuté"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Vypnuté"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Vypnúť"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adresa"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klient"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Vytváram torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrenty vo fronte"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "O_dstrániť"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Automaticky pridaj torrenty po spojení"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Súbor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Pridať torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Vytvoriť torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Zavrieť a _ukončiť démona"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Ukončiť"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Upraviť"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Správca spojení"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Zobraziť"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Panel nástrojov"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Bočný panel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Stavový _riadok"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Záložky"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Stĺpce"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Bočný _panel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Zobraziť _prázdne skupiny"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Zobraziť _trackery"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Pomocník"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Domovská stránka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_Často kladené otázky"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Často kladené otázky"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Komunita"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Pridať torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Pridá torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Odstrániť torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Odstráni torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pozastaviť označené torrenty"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pozastaviť"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Pokračovať označené torrenty"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Pokračovať"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Vyššie vo fronte"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Vyššie vo fronte"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Nižšie vo fronte"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Nižšie vo fronte"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Nastavenia"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Správca spojení"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Vynútené"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Vypnuté"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Začiatok spojenia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Oboje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Zobrazovať rýchlosť v titulku okna"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Povoliť ikonu v systémovom paneli"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimalizovať do panelu pri zatvorení"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Spustiť na paneli"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Chrániť systémový panel heslom"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Presuň dokončené do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kópia .torrent súborov do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Vymazať kópiu torrent súboru po odstránení"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Vymazať kópiu vytvoreného torrent súboru, keď sa odstráni torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Prebrať do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Uprednostniť prvé a posledné diely torrentu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Uprednostniť prvé a posledné diely torrentu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Pridať torrenty v pozastavenom stave"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Zobraziť stále"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Preniesť okno do popredia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"Maximálny počet povolených spojení. Nastavením -1 zrušíte obmedzenie."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Spojenia:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maximálny počet slotov odosielania všetkých torrentov. Nastavením -1 zrušíte "
+"obmedzenie."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maximálna celková rýchlosť preberania. Nastavením -1 zrušíte obmedzenie."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Rýchlosť preberania:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Maximálna rýchlosť odosielania všetkých torrentov. Nastavením -1 zrušíte "
+"obmedzenie."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Rýchlosť odosielania:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignoruj obmedzenia pre lokálnu sieť"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Obmedzenie IP výdavkov"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Ak je zaškrtnuté, odhadované TCP/IP výdavky sú čerpané z obmedzovačov tempa "
+"tak, aby sa predošlo prekročeniu obmedzenia celkovej dátovej prevádzky."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Maximálny počet slotov odosielania pre torrent. Nastavením -1 zrušíte "
+"obmedzenie."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Maximálny počet spojení na torrent. Nastavte -1 pre neobmedzené."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Náhodne"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktívny port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testovať aktívny port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Od:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Uroveň:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Šifrovanie"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT protokol pre mapovanie portov"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer Exchange"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery hľadá peerov na lokálnej sieti."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Distribovaná hašovacia tabuľka môže zlepšiť počet aktívnych spojení."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Peer TOS Byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Názov hostiteľa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Veľkosť (16 KiB bloky):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Uplynutie pamäti (sekundy):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Nastavenia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "Celkový počet 16 KiB blokov zapísaných na disk od začiatku sedenia."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Zapísané bloky:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Celkový počet zapisovacích operácií vykonaných od začiatku sedenia."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Zápisy:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Načítané bloky:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Počet blokov, ktoré boli podané z vyrovnávacej pamäti."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Celkový počet čítacích operácií vykonaných od začiatku sedenia."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Načítavania:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Počet 16 KiB blokov aktuálne v diskovej vyrovnávacej pamäti. Toto zahŕňa "
+"čítaciu aj zapisovaciu vyrovnávaciu pamäť."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Veľkosť v. pamäte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Veľkosť čítacej pamäti:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Pomôžte nám zlepšiť Deluge poskytnutím vašich informácií o verzii Python, "
+"verzii PyGTK, OS a type procesora. Absolútne žiadne ďalšie informácie nebudú "
+"odoslané."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Áno, prosím pošli anonýmne štatistiky"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Umiestnenie:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Ak Deluge nemôže nájsť súbor databázy na tomto umiestnení, použije DNS na "
+"rozpoznanie krajín účastníkov."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Port démona:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Povoliť vzdialené spojenia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Spojenia"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Pravidelne kontrolovať webstránku kvôli aktualizáciam"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Verzia:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Autor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Domovská stránka:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Autorov E-mail:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Informácie"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Pridať peera"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "názov_hostiteľa:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Všeobecné</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Zrušiť"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Pridať"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Odstrániť"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Pridať Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackery:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Pridať hostiteľa"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Cieľ:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nová verzia"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Prejsť na webstránku"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Nezobrazovať v budúcnosti toto okno"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Názov:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Komentár:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Presunúť prebraté:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Zastaviť seedovanie pri pomere:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Odstrániť pri pomere"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Upraviť trackery"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Najvyššie"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Najnižšie"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Pridať torrenty"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Pridať v _pozastavenom stave"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Uprednostniť prvé/posledné diely"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Použiť na všetky"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Vrátiť predvolené nastavenia"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Zobraziť program Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Limit rýchlosti _preberania"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Limit rýchlosti _odosielania"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Zastaviť a vypnúť démona"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Upraviť trackery"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Pridať peera"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Pridať peera zadaním IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Upraviť tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Zadať vzdialenú cestu"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Cesta:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Vytvoriť torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Priečinok"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Vzdialená cesta"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Súbory"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseedi"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Veľkosť časti:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Nastaviť príznak „súkromný“"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Pridať tento torrent do relácie"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Možnosti"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Uložiť .torrent ako"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pozastaviť"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Pokr_ačovať"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Pokračovať označené torrenty"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "Voľ_by"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Zaradiť do poradia"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Aktualizovať tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Odstrániť torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Vynútiť _kontrolu"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "štítok"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "_Vybrať všetky"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pozastaviť všetko"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Pok_račovať všetky"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Limit spojení"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Limit s_lotov pre odosielanie"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatické spravovanie"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Pridať tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Pridať URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Rozbaliť všetky"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent klient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Preberanie a zdieľanie súborov cez BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Príkaz"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Heslo"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Od"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Do"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Použiť náhodné porty"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Prichádzajúce"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Odchádzajúce"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Maximum pripojení"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Maximum slotov pre odosielanie"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Maximálny počet polootvorených spojení"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Maximálny počet pokusov o pripojenie za sekundu"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Obmedzenie IP výdavkov"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Pomer zdieľania"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Typ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Použiť"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Zoznam IP Emule (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer text (Zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian text (nekomprimovaný)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Zoznam blokovaní"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Neplatný vodca"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Neplatný magický kód"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Neplatná verzia"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "dní"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Skontrolovať aktualizácie každých:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importovať blocklist po spustení"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Nastavenia</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Prebrať súbor blocklist-u ak je potrebné a importovať ho."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Skontrolovať aktuálnosť a importovať"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Prebrať nový súbor blocklist-u a importovať ho."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Vynútiť prebratie a importovať"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Zoznam blokovaných účastníkov je aktuálny"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Možnosti</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Typ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Dátum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Veľkosť súboru:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent bol dokončený"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent pridaný"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Vykonať"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Udalosť"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Pridať príkaz</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Príkazy</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Sledovacia zložka neexistuje."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Cesta neexistuje."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Vlastnosti sledovacej zložky"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Vybrať priečinok"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Povoliť túto sledovaciu zložku"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Sledovacia zložka</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Vymazať .torrent po pridaní"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Pridať príponu po pridaní:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".pridany"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Akcia pre Torrent súbor</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Premiestnenie dokončených</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Menovka: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Menovka</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Hlavné"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Maximálna rýchlosť odosielania:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Maximum spojení:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Maximum slotov pre odosielanie:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Maximálna rýchlosť preberania:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Šírka pásma</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automaticky spravované:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Pridať pozastavené:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Zaradiť do fronty:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Fronta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Sledovacie zložky:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekúnd"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Webové rozhranie programu Deluge nie je nainštalované,\n"
+"prosím, nainštalujte rozhranie a skúste to znovu."
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Povoliť webové rozhranie"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Povoliť SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Port pre prichádzajúce spojenia:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Nesprávny štítok, dostupné znaky: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Prázdny štítok"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Štítok už existuje"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Neznámy štítok"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Neznámy torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Možnosti štítkov"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Odstrániť štítok"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Pridať štítok"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Nastavenie štítka"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Štítok"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Možnosti štítkov</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Použiť maximálne nastavenia pre torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximum"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Použiť nastavenia fronty:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 riadok = 1 tracker)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Automaticky použiť štítok:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Pridať štítok"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "Pridať štítok"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Použite bočný panel na pridanie, upravenie alebo zmazanie štítkov. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Štítky</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Blikanie oznámenia zobrazené"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Vyskakovacie okno oznámenia nie je zapnuté."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Vyskakovacie okno oznámenia zobrazené"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Zvukové oznámenie nie je zapnuté"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame nie je nainštalovaný"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Zvukové oznámenie zlyhalo %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Zvukové oznámenie úspešné"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Dokončený Torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Zvoľte zvukový súbor"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Nastala chyba pri odosielaní oznamovacieho emailu: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Oznamovací email odoslaný."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Dokončený Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Tento email Vás informuje o tom, že program Deluge dokončil preberanie "
+"\"%(name)s\", ktorý obsahuje %(num_files)i súborov.\n"
+"Na zastavenie prijímania týchto upozornení, jednoducho vypnite emailové "
+"oznámenie v nastaveniach programu Deluge.\n"
+"\n"
+"Ďakujeme,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Blikanie ikony na paneli zapnuté"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Vyskakovacie okná zapnuté"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Zvuk zapnutý"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Oznámenia rozhrania</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Príjemcovia</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Server vyžaduje TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Emailové oznámenia</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Táto konfigurácia neznamená, že práve prijímete oznámenia o všetkých týchto "
+"udalostiach."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Podpisy"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Prispôsobenie zvuku"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Rozbaliť do:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Vytvoriť podzložku s názvom torrentu"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Táto možnosť vytvorí podzložku s názvom torrentu vo vybranej extrahovacej "
+"zložke, v ktorej budú uložené rozbalené súbory."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Obmedzenie preberania:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Obmedzenie odosielania:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktívne torrenty"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktívne preberané:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktívne seedované:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Pomalé nastavenia</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Odhlásiť sa"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Uložiť"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Hostiteľ:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Presunúť"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Prihlásiť sa"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Nastaviť maximálny počet spojení"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Rýchlosť preberania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Nastaviť maximálnu rýchlosť preberania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Rýchlosť odosielania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Nastaviť maximálnu rýchlosť odosielania"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Komunikácia protokolu - preberanie/odosielanie"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Pripojiť"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtre"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Obmedzenie sťahovania"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Obmedzenie odosielania"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Obmedzenie spojenia"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Obmedzenie slotov na odosielanie"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Aktualizovať tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Vynútiť kontrolu"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Podrobnosti"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Všeobecné"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Súkromné"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Zapnuté"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Upozorňovať na aktualizácie"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Maximum spojení:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Maximálna rýchlosť preberania (KB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Maximálna rýchlosť odosielania (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Maximálny počet polootvorených spojení:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Maximálny počet pokusov o spojenie za sekundu:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Maximálny počet slotov pre odosielanie:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Obnoviť"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Adresa"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Súbor"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Pridaj v pozastavenom stave"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Sťahovanie"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/sl.po b/deluge/i18n/sl.po
new file mode 100644
index 0000000..6a0f9f6
--- /dev/null
+++ b/deluge/i18n/sl.po
@@ -0,0 +1,6201 @@
+# Slovenian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Slovenian <sl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Vsi"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Dejaven"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Preverjanje"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Prejemanje"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Sejanje"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "V premoru"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "V čakalni vrsti"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Napaka"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Ime"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Napredek"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Stanje"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Velikost"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Prejeto"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Poslano"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Razmerje"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Hitrost prejemanja"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Hitrost pošiljanja"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Omejitev prejemanja"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Omejitev pošiljanja"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Soležniki"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Razpoložljivost"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Dodano dne"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Sledilnik"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "PČP"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Začni s prvimi/zadnjimi"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Samodejno upravljanje"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Kosi"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Opozorilo"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Najava je v redu"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Najava poslana"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Vmesnik"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Prejemi"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Pasovna širina"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Čakalna vrsta"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Omrežje"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Posredniški strežnik"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Predpomnilnik"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Drugo"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Ozadnji program"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Vstavki"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Otočje Aland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanija"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Alžirija"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Ameriška Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andora"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Angvila"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktika"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigva in Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenija"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Avstralija"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Avstrija"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbajdžan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahami"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrajn"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladeš"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Belorusija"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgija"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermudi"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Butan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivija"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna in Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Bocvana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvetov otok"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brazilija"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Britanska ozemlja v Indijskem oceanu"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunej"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bolgarija"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Zelenortski otoki"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kajmanski otoki"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Srednjeafriška republika"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Čad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Čile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kitajska"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Božični otoki"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosovi (Keelingovi) otoki"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolumbija"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komori"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Demokratična republika Kongo"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cookovi otoki"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kostarika"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Slonokoščena obala"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Hrvaška"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Ciper"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Češka"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danska"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Džibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikanska republika"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekvador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egipt"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvatorialna Gvineja"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritreja"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonija"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopija"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandski otoki (Malvini)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Ferski otoki"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fidži"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finska"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Francija"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Francoska Gvajana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Francoska Polinezija"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Francoska južna ozemlja"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambija"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gruzija"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Nemčija"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Gana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grčija"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grenlandija"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Gvadelup"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Gvatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Gvineja"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Gvineja Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Gvajana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Otok Heard in otočje McDonald"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Vatikan"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Madžarska"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Islandija"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indija"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonezija"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irska"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Otok Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Izrael"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italija"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamajka"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japonska"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordanija"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazahstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenija"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Severna Koreja"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Južna Koreja"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuvajt"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgizistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Latvija"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesoto"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberija"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libija"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litva"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luksemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonija"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malavi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malezija"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivi"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshallovi otoki"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinik"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mavretanija"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mehika"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronezija"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavija"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongolija"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Črna gora"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Maroko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Mjanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibija"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Nizozemska"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Nizozemski Antili"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nova Kaledonija"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nova Zelandija"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragva"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigerija"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Otok Norfolk"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Severni Marianski otoki"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norveška"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinsko ozemlje, okupirano"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Nova Gvineja"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paragvaj"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipini"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Poljska"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugalska"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Portoriko"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romunija"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Rusija"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Sveta Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts in Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Sveta Lucija"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre in Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent in Grenadine"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Zahodna Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome in Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudova Arabija"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Srbija"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Sejšeli"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovaška"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenija"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomonovi otoki"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalija"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Južna Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Južna Georgia in Južni Sandwichevi otoki"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Španija"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Šrilanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard in Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Svazi"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Švedska"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Švica"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Sirija"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadžikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzanija"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tajska"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Timor-Leste"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad in Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunizija"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turčija"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Otoki Turks in Caicos"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukrajina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Združeni arabski emirati"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Velika Britanija"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Združene države Amerike"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Manjši zunanji otoki Združenih držav Amerike"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Urugvaj"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Britanski Deviški otoki"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Ameriški Deviški otoki"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis in Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Zahodna Sahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambija"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabve"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Ozadnji program ni zagnan"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Ime datoteke"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Stopnja"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Izberite datoteko"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Izberite mapo"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Shrani datoteko .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Datoteke Torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Vse datoteke"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Program za deljenje datotek,\n"
+"ki uporablja protokol BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Odjemalec:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Trenutni razvijalci:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Bivši razvijalci:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Strežnik:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Neveljavna datoteka"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Izberite datoteko .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Neveljaven naslov URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "ni veljaven naslov URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Prejemanje ..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Prejemanje ni uspelo"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Napaka pri prejemanju:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Podrobnosti:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Uporabniško ime:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Geslo:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Zaščiteno z geslom"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Drugo ..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Brez povezave"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Vozlišča DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Nezaseden prostor na disku"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Da"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Ne"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prednost"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Vse"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Stanje"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Podrobnosti"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Da_toteke"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Soležniki"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Možnosti"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Ni povezave ..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Neomejeno"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Prejemanje"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Pošiljanje"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Nedosegljiv"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Dosegljiv"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Povezan"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Stanje"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Gostitelj"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Različica"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Zaženi ozadnji program"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Zau_stavi ozadnji program"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Ozadnjega programa ni mogoče zagnati!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Napaka med dodajanjem gostitelja"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Uporabniško Ime"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivo"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Omogočeno"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Vstavek"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Izberite vstavek"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Datoteke Egg"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Stanja"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Sledilniki"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Brez"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Oznake"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Brez oznake"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Različica odjemalca</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " torrentov v čakalni vrsti"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " torrent v čakalni vrsti"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Nastavi na neomejeno"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Vključeno"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Izključeno"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Onemogoči"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Naslov"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Odjemalec"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Ustvarjanje torrenta"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrenti v čakalni vrsti"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "Odst_rani"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Ob vzpostavitvi povezave samodejno dodaj torrente"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Datoteka"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Dodaj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Ustvari torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "_Končaj in izklopi ozadnji program"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Končaj"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "Ur_edi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Upravljalnik _povezav"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Pogled"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Orodna vrstica"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Stranska vrstica"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Vrstica stanja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Zavihki"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Stolpci"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Stranska vrstica"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Pokaži stanja, ki ne vsebujejo torrentov"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Pokaži _sledilnike"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "Pomo_č"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Spletna stran"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Pogosto zastavljena vprašanja"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Skupnost"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Dodaj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Dodaj torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Odstrani torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Odstrani torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Začasno ustavi trenutno izbrane torrente"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Premor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Nadaljuj trenutno izbrane torrente"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Nadaljuj"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Premakni v čakalni vrsti navzgor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Premakni navzgor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Premakni v čakalni vrsti navzdol"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Premakni navzdol"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Možnosti"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Upravljalnik povezav"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Vsiljen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Izključeno"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Preverjanje istovetnosti"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Katerokoli"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "V nazivni vrstici pokaži hitrost seje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Omogoči ikono sistemske vrstice"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Ob zaprtju pomanjšaj v sistemsko vrstico"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Zaženi v sistemski vrstici"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Zaščiti sistemsko vrstico z geslom"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Premakni dokončane v:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopije datotek .torrent v:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Ob odstranitvi izbriši kopijo datoteke torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Izbriši kopijo datoteke torrent, ko je torrent odstranjen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Prejmi v:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Začni s prvimi in zadnjimi kosi torrenta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Najprej prenesi prve in zadnje kose torrenta"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Dodaj torrente v stanju premora"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Vedno prikaži"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Postavi okno v žarišče"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Največje dovoljeno število povezav. Za neomejeno nastavite na -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Povezave:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Največje število mest za pošiljanje za vse torrente. Za neomejeno nastavite "
+"na -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Najvišja hitrost prejemanja za vse torrente. Za neomejeno nastavite na -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Hitrost prejemanja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Najvišja hitrost pošiljanja za vse torrente. Za neomejeno nastavite na -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Hitrost pošiljanja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Na krajevnem omrežju prezri omejitve"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Upoštevaj prekoračitev TCP/IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Če je to polje označeno, se prekoračitev TCP/IP odšteje od omejitev. S tem "
+"se prepreči prekoračitev skupnega prometa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Največje število mest za pošiljanje na torrent. Za neomejeno nastavite na -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Največje število povezav na torrent. Za neomejeno nastavite na -1."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Naključno"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Dejavna vrata:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Preizkusi dejavna vrata"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Od:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Do:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivo:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Šifriranje"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Port Mapping Protocol"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Peer Exchange"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery poišče krajevne soležnike na vašem omrežju."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Distributed Hash Table lahko poveča količino dejavnih povezav."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TOS-bajt soležnika:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Ime gostitelja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Vrata:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Velikost predpomnilnika (16 KiB bloki):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Število sekund od zadnjega zapisa v predpomnilnik, preden se le-ta vsiljeno "
+"počisti na disk. Privzeto je 60 sekund."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Potek predpomnilnika (v sekundah):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Nastavitve"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "Skupno število 16 KiB blokov, zapisanih na disk od začetka seje."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Zapisani bloki:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Skupno število izvedenih pisanj od začetka seje."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Število pisanj:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Razmerje ((zapisani_bloki - pisanj) / zapisani_bloki) predstavlja število "
+"shranjenih zapisov na skupno število zapisov oz. število zadetkov pisalnega "
+"predpomnilnika."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Razmerje pisalnega predpomnilnika:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Število blokov, ki jih je zahteval pogon bittorrent (ali soležniki), "
+"prebranih iz diska ali predpomnilnika."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Na zahtevo prebrani bloki:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Število blokov, prebranih z diska ali predpomnilnika."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Prebrani bloki:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Razmerje zadetkov za bralni predpomnilnik."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Razmerje bralnega predpomnilnika:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Skupno število izvedenih branj od začetka seje."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Število branj:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Število 16 KiB blokov, ki so trenutno v predpomnilniku diska. Le-ta "
+"vključuje bralni in pisalni predpomnilnik."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Predpomnilnik:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Bralni predpomnilnik:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Pomagajte nam izboljšati Deluge tako, da nam pošljete podatki o različici "
+"Pythona in PyGTK, vrsti operacijskega sistema in procesorja. Poslani ne bodo "
+"nobeni drugi podatki."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Da, prosim, pošlji brezimno statistiko"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Mesto:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Če Deluge na temu mestu ne najde podatkovne zbirke, bo državo soležnika "
+"prepoznal z uporabo strežnika DNS."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Vrata ozadnjega programa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Vrata"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Dovoli oddaljene povezave"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Povezave"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Obveščanje o novih različicah"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Različica:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Avtor:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Spletna stran:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "E-poštni naslov avtorja:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Podatki"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Dodaj soležnika"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "gostitelj:vrata"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Splošno</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Dodaj"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Odstrani"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Dodaj razpršilo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Razpršilo:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Sledilniki:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Dodaj gostitelja"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Cilj:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Nova različica"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "Pojdi na _spletno stran"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Tega pogovornega okna v prihodnje ne pokaži"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Ime:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Opombe:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Premakni dokončane:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Ustavi sejanje pri delilnem razmerju:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Odstrani pri delilnem razmerju"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "Ur_edi sledilnike"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Na vrh"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Na dno"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Dodaj torrente"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Razpršilo"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Dodaj v stanju _premora"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Začni s prvimi/zadnjimi kosi"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Uveljavi za vse"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Povrni privzeto"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Pokaži Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Omejitev hitrosti prejemanja"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Omejitev hitrosti _pošiljanja"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Končaj in izklopi ozadnji program"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Uredi sledilnike"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Dodaj soležnika"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Dodaj soležnika z njegovim naslovom IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Uredi sledilnik"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Sledilnik:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Vnesite oddaljeno pot"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Pot:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Ustvari torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Mapa"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Oddaljena pot"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Datoteke"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Spletni sejalci"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Velikost kosa:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Nastavi zasebno zastavico"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Dodaj torrent k seji"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Možnosti"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Shrani datoteko .torrent kot"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Premor"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Na_daljuj"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Nadaljuj izbrane torrente."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Možnosti"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "Postavi v čakalno _vrsto"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Osveži sledilnike"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Odst_rani torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Vsili ponovno preverjanje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "oznaka"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Izberi _vse"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Premor vseh"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Na_daljuj vse"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Omejitev števila povezav"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Omejitev _mest za pošiljanje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Samodejno upravljanje"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Dodaj sledilnik"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Dodaj URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Razširi vse"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Odjemalec za BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge, odjemalec za BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Prejemajte in delite datoteke preko protokola BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Ukaz"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Geslo"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Od"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Za"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Uporabi naključna vrata"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Vhodno"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Izhodno"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Največje število povezav"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Največje število povezav oddajanja"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Največje število na pol odprtih povezav"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Največje število poskusov povezav v sekundi"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Delilno razmerje"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tip"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Uveljavi"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Seznam Emule IP (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Besedilo SafePeer (Zip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Besedilo PeerGuardian (nestisnjeno)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Črni seznam"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Neveljaven povzetek"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Neveljavna čarobna koda"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Neveljavna različica"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "dni"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Preveri za nov seznam vsakih:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Uvozi črni seznam ob zagonu"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Nastavitve</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Če je potrebno, datoteko s črnim seznamom prenese in uvozi."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Preveri prejem in uvoz"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Prenese nov črni seznam in ga uvozi."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Vsili prejem in uvoz"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Črni seznam je posodobljen"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Možnosti</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Vrsta:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Datum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Velikost datoteke:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Podatki</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent je dokončan"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent je dodan"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Izvedi"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Dogodek"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Dodaj ukaz</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Ukazi</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Opazovana mapa ne obstaja."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Pot ne obstaja."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Lastnosti opazovane mape"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Izberite mapo"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Omogoči to opazovano mapo"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Opazovana mapa</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Po dodajanju izbriši datoteko .torrent"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Po dodajanju dodaj pripono:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".dodano"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Datoteka .torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Premakni dokončano</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Oznaka: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Oznaka</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Glavno"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Najvišja hitrost pošiljanja:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Največje število povezav:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Največje število mest za pošiljanje:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Najvišja hitrost prejemanja:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Pasovna širina</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Samodejno upravljanje:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Dodaj v stanju premora:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Dodaj v čakalno vrsto:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Čakalna vrsta</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Opazovane mape:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekund"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Spletni vmesnik programa Deluge ni nameščen.\n"
+"Prosimo, namestite ga in poskusite znova"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Omogoči spletni vmesnik"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Omogoči SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Vrata za poslušanje:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Neveljavna oznaka, veljavni znaki: [a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Prazna oznaka"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Oznaka že obstaja"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Neznana oznaka"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Neznan torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Možnosti _oznake"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Odstrani oznako"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Dodaj oznako"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Možnosti oznake"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Oznaka"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Možnosti oznake</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Uveljavi omejitve glede na torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Omejitve"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Uveljavi nastavitve čakalne vrste:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 vrstica na sledilnik)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Samodejno uveljavi oznako:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Dodaj oznako"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Dodaj oznako</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Za dodajanje, urejanje ali odstranjevanje oznak uporabite stransko "
+"vrstico. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Oznake</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Utripanje obvestil je prikazano"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Obveščanje s pojavnim oknom ni omogočeno."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Pojavno okno je prikazano"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Obvestilo z zvokom ni omogočeno"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "Program pygame ni nameščen"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Obvestilo z zvokom ni uspelo %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Obvestilo z zvokom je bilo uspešno"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Prejemanje torrenta je končano"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Obvestila"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Izberite zvočno datoteko"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Med pošiljanjem obvestilne e-pošte je prišlo do napake: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Obvestilna e-pošta poslana."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Prejemanje torrenta \"%(name)s\" je končano"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Ta e-pošta vas obvešča, da je Deluge končal s prejemanjem torrenta "
+"\"%(name)s\", ki vsebuje %(num_files)i datotek.\n"
+"Če ne želite več prejemati teh obvestil, jih lahko izključite v nastavitvah "
+"programa Deluge.\n"
+"\n"
+"Hvala,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Utripanje ikone sistemske vrstice omogočeno"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Pojavna okna so omogočena"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Zvok je omogočen"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Obvestila uporabniškega vmesnika</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Prejemniki</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Strežnik potrebuje TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Obvestila po elektronski pošti</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Te nastavitve ne pomenijo, da boste prejeli obvestila za vse te dogodke."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Naročnine"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Prilagajanje zvoka"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Razširi v:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Ustvari podmapo z imenom torrenta"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Ta možnost bo ustvarila podmapo z imenom torrenta in v izbrano mapo "
+"razširila datoteke."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Razporejevalnik"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Omejitev prejemanja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Omejitev pošiljanja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Dejavni torrenti:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Dejavni prejemi:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Dejavna sejanja:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Nastavitve</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Odjava"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Shrani"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Gostitelj:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Prestavi"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Prijava"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Nastavi največje število povezav"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Hitrost prejemanja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Nastavi najvišjo hitrost prejemanja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Hitrost pošiljanja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Nastavi najvišjo hitrost pošiljanja"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Promet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Priklopi"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filtri"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Osveži sledilnik"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Podrobnosti"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Splošno"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Zasebno"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Obveščanje o novih različicah"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Največje število povezav:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Najvišja hitrost prejemanja (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Najvišja hitrost pošiljanja (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Največje število napol odprtih povezav:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Največje število poskusov povezav na sekundo:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Največje število mest za pošiljanje:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Strežnik"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Osveži"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Datoteka"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Dodaj v stanju premora"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Prejemanje"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/sr.po b/deluge/i18n/sr.po
new file mode 100644
index 0000000..59f9c2a
--- /dev/null
+++ b/deluge/i18n/sr.po
@@ -0,0 +1,6227 @@
+# Serbian translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Serbian <sr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "К"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Сви"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Покренут"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Провера"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Преузимање"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Сејање"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Паузиран"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "У реду"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Грешке"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Назив"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Напредовање"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Стање"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Величина"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Преузето"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Послато"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Однос"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Брзина пријема"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Брзина слања"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Ограничење пријема"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Ограничење слања"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Парњаци"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Доступно"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Додат"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Пратилац"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Време"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Првенство првом/последњем"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Само управљани"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Парчићи"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Упозорење"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Објава је у реду"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Објава је послата"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Сучеље"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Преузимања"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Проток"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Ред"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Мрежа"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Посредник"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Остава"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Остало"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Услужник"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Прикључци"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Авганистан"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Аландска острва"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Албанија"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Алжир"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Америчка Самоа"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Андора"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Ангола"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ангила"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Антарктик"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Антигва и Барбуда"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Аргентина"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Јерменија"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Аруба"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Аустралија"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Аустрија"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Азербејџан"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Бахами"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Бахреин"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Барбадос"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Белорусија"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Белгија"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Белизе"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Бенин"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Бермуди"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Боливија"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Босна и Херцеговина"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Боцвана"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Острво Був"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Бразил"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Британска Индијска Океанска Територија"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Брунеји Дар-Ес-Салам"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Бугарска"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Буркина Фасо"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Бурунди"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Камбоџа"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Камерун"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Канада"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Зеленортска острва"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Кајманска острва"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Централноафричка Република"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Чад"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Чиле"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Кина"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Божићна острва"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Кокосова острва"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Колумбија"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Комори"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Конго"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Конго, Демократска република"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Кукова острва"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Костарика"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Обала Слоноваче"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Хрватска"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Куба"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Кипар"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Република Чешка"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Данска"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Џибути"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Доминика"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Доминиканска Република"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Еквадор"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Египат"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Салвадор"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Екваторијална Гвинеја"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Еритреја"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Естонија"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Етиопија"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Фокландска острва (Малвини)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Фарска острва"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Фиџи"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Финска"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Француска"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Француска Гвајана"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Француска Полинезија"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Француске Јужне Територије"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Габон"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Гамбија"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Грузија"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Немачка"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Гана"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Гибралтар"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Грчка"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Гренланд"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Гренада"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Гвадалупе"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Гиам"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Гватемала"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Гвернси"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Гвинеја"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Гвинеја Бисао"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Гвајана"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Хаити"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Хердова и Мекдоналдова острва"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Ватикан Град Држава (Света столица)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Хондурас"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Хонг Конг"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Мађарска"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Исланд"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Индија"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Индонезија"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Иран, Исламска Република"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Ирак"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ирска"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Острво Ман"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Израел"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Италија"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Јамајка"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Јапан"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Џерси"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Јордан"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Казакистан"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Кенија"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Кирибати"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Кореја, Демократска Народна Република"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Кореја, Република"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Кувајт"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Киргистан"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Лао Народна Демократска Република"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Летонија"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Либан"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Лесото"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Либерија"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Либијска Арапска Џамахирија"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Лихенштајн"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Литванија"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Луксембург"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Макао"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Македонија, Бивша Југословенска Република"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Мадагаскар"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Малави"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Малезија"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Малдиви"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Мали"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Малта"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Маршалска острва"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Мартиник"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Мауританија"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Маурицијус"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Мајот"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Мексико"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Микронезија, Федералне Државе"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Молдавија"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Монако"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Монголија"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Црна Гора"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Монсерат"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Мароко"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Мозамбик"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Бурма"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Намибија"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Науру"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Непал"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Холандија"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Холандски Антили"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Нова Каледонија"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Нови Зеланд"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Никарагва"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Нигер"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Нигерија"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Ниуе"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Норфолк острво"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Северна Маријанска острва"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Норвешка"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Оман"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Пакистан"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Палау"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Палестинска Територија, Окупирана"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Панама"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Папуа Нова Гвинеја"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Парагвај"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Перу"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Филипини"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Питкарн"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Пољска"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Португал"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Порторико"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Катар"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Реунион"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Румунија"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Руска Федерација"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Руанда"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Сент Бартелеми"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Света Јелена"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Свети Китс и Невис"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Света Луција"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Свети Мартен"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Свети Пјер и Микелон"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Свети Винсент и Гренадини"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Самоа"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Сан Марино"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Сао Томе и Принципе"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Саудијска Арабија"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Сенегал"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Србија"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Сејшели"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Сјера Леоне"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Сингапур"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Словачка"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Словенија"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Соломонска острва"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Сомалија"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Јужноафричка Република"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Јужна Џорџија и Јужна Сендвичка острва"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Шпанија"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Шри Ланка"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Судан"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Суринам"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Свалбард и Јан Мајен"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Свазиленд"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Шведска"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Швајцарска"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Сиријска Арапска Република"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Таџикистан"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Танзанија, Сједињена Република"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Тајланд"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Источни Тимор"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Того"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Токелау"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Тонга"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Тринидад и Тобаго"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Тунис"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Турска"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Туркменистан"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Туркс и Каикос острва"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Тувалу"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Уганда"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Украjина"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Уједињени Арапски Емирати"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Велика Британија"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Сједињене Америчке Државе"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Спољна ивична острва САД"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Уругвај"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Узбекистан"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Вануату"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Венецуела"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Вијетнам"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Британска Девичанска острва"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Америчка Девичанска острва"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Валис и Футуна"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Западна Сахара"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Јемен"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Замбија"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Зимбабве"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Услужник није покренут"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Назив датотеке"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Наслагач"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Изаберите датотеку"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Изаберите фасциклу"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Сачувај датотеку „.torrent“"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Датотеке торента"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Све датотеке"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Упишите лозинку да прикажете Делуге..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Упишите лозинку да изађете из Делугеа..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Делуге"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Ауторска права %(year_start)s-%(year_end)s Тим Делугеа"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Програм за размену датотека од парњака\n"
+"до парњака који користи протокол Бит-Торента."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Клијент:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Тренутни програмери:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Претходни програмери или доприносиоци:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Овај програм је слободан софтвер; можете га расподељивати и/или мењати под "
+"условима Гнуове опште јавне лиценце коју је објавила Задужбина слободног "
+"софтвера; издања 3 лиценце или (по вашем избору) било којег новијег издања.\n"
+"\n"
+"Овај програм се расподељује у нади да ће бити користан, али БЕЗ ИКАКВЕ "
+"ГАРАНЦИЈЕ; чак и без примењене гаранције ТРЖИШНЕ ВРЕДНОСТИ или "
+"ПРИЛАГОЂЕНОСТИ ОДРЕЂЕНОЈ НАМЕНИ. Погледајте Гнуову Општу јавну лиценцу за "
+"више детаља.\n"
+"\n"
+"Требали сте да примите примерак Гнуове Опште јавне лиценце уз овај програм; "
+"ако нисте, видите: <http://www.gnu.org/licenses>.\n"
+"\n"
+"Поред тога, као посебан изузетак, носиоци ауторских права дају дозволу за "
+"повезивање кода делова овог програма са ОпенССЛ библиотеком. Морате "
+"испоштовати Гнуову Општу јавну лиценцу у свим аспектима за сав код коришћен "
+"изван ОпенССЛ-а.\n"
+"\n"
+"Ако измените датотеку(е) са овим изузетком, можете проширити овај изузетак "
+"на ваше издање датотеке(а), али нисте у обавези да то учините. Ако не желите "
+"то да урадите, избришите ову изјаву изузетка из вашег издања. Ако избришете "
+"ову изјаву изузетка из свих изворних датотека у програму, онда је такође и "
+"овде избришите."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Сервер:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "библторент:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Торент"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Неисправна датотека"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Изаберите „.torrent“ датотеку"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Неисправна адреса"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "није исправна адреса."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Преузимам..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Преузимање није успело"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Нисам успео да преузмем:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Детаљи:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Корисник:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Лозинка:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Заштита лозинком"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Остало..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Неповезан"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Број ДХТ чворова"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Слободан простор на диску"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Да"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Не"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Првенство"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Све"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Стање"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Појединости"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Датотеке"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Парњаци"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Опције"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Неповезан..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Неограничено"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Преузимање"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Слање"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Ван мреже"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "На мрежи"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Повезан"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Стање"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Домаћин"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Издање"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Покрени услужника"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Заустави услужника"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Не могу да покренем услужника!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Грешка додавања домаћина"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Корисничко име"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Ниво"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Укључено"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Прикључак"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Одаберите прикључак"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Јаја прикључка"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Стања"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Пратиоци"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ништа"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Администратор"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Натписи"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Нема натписа"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Издање клијента:</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " торенти у реду"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Торент у реду"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Постави неограничено"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Укључено"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Искључено"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Онемогући"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Адреса"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Клијент"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Стварање торента"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Торенти у реду"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Уклони"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Сам додај торенте приликом повезивања"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Датотека"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Додај торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Направи торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Изађи и _угаси услужника"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Изађи"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Уреди"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Управник _веза"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Преглед"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Трака _алата"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Бочна површ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Трака _стања"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Језичци"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Колоне"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Бо_чна површ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Прикажи _нулте резултате"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Прикажи _пратиоце"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "По_моћ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Матична страница"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_ЧПП"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Често постављана питања"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Заједница"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Додајте торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Додај торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Уклоните торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Уклоните торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Паузирајте изабране торенте"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Паузирај"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Наставите са изабраним торентима"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Настави"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Померите на горе торент у реду чекања"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Помери горе"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Померите на доле торент у реду чекања"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Помери доле"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Поставке"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Управник веза"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Захтевана"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Онемогућено"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Руковање"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Оба"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Прикажи брзину сесије на траци наслова"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Прозор у први план приликом додавања торента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Укључи иконицу у фиоци система"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Смањи у фиоку при затварању"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Покрени у фиоци"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Заштити лозинком фиоку система"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Премести завршене у:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Умножи „.торент“ датотеке у:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Обриши умножак датотеке торента при уклањању"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Обришите умножак датотеке торента која је направљена приликом уклањања "
+"торента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Преузми у:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Дај првенство првом и последњем делићу торента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Дајте првенство првом и последњем делићу датотека у торенту"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Додај торенте у паузираном стању"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Увек прикажи"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Принеси прозорче у први план"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Највећи дозвољени број веза. Вредност -1 значи неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Везе:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Највећи број утичница за слање за све торенте. Вредност -1 значи "
+"неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Утичнице слања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Највећа брзина преузимања за све торенте. Вредност -1 значи неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Брзина преузимања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "Највећа брзина слања за све торенте. Вредност -1 значи неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Брзина слања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Занемари ограничења на локалној мрежи"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "ИП преоптерећење ограничења протока"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Ако је изабрано, процењено ТЦП/ИП преоптерећење се одвлачи из ограничавача "
+"протока, како се ограничење не би превазишло укупним саобраћајем"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Највећи број утичница за слање по торенту. Вредност -1 значи неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Највећи број веза по торенту. Вредност -1 значи неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "Највећа брзина слања за торент. Вредност -1 значи неограничено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Насумично"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Радни прикључник:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Провери радни прикључник"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Од:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "До:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Ниво:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Шифровање"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "УПнП"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Универзално прикључивање и пуштање"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "НАТ-ПМП"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "НАТ протокол мапирања прикључника"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Размена парњака"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "ЛСД"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Месно откривање услуге налази месне парњаке на вашој мрежи."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "ДХТ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Расподељена хеш табела може побољшати број радних веза."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "ТОС бајт парњака:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Назив домаћина:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Прикључник:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Величина оставе (блокови од 16 KiB):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Број секунди од последњег причуваног писања на комаду у остави писања, до "
+"тренутка када је насилно изручен на диск. Основно је 60 секунди."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Остава се празни (у секундама):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Подешавања"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Укупан број блокова од 16 KiB записаних на диск од почетка ове сесије."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Записаних блокова:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Укупан број обављених радњи писања од почетка ове сесије."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Писања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Однос (записаних_блокова — писања) / записани_блокови представљају број "
+"сачуваних операција писања од укупних операција писања, односно неку врсту "
+"односа посете остави за оставу писања."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Однос посете остави писања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Број блокова који су затражени од погона битторента (од парњака), који су "
+"послужени са диска или из оставе."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Читање блокова:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Број блокова који су послужени из оставе."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Покушај читања блокова:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Однос посете остави за оставу читања."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Однос посете остави читања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Укупан број обављених радњи читања од почетка ове сесије."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Читања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Број 16 KiB-них блокова тренутно у остави диска. Ту спадају и остава читања "
+"и писања."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Величина оставе:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Величина оставе читања:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Помозите нам да унапредимо Делуге тако што ћете нам послати издање Питона, "
+"„PyGTK“-а и оперативног система и тип процесора. Никакви други подаци нам "
+"нису потребни."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Да, пошаљи анонимне резултате"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Место:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Ако Делуге не може да нађе датотеку базе података на овом месту пребациће се "
+"на коришћење ДНС-а како би дознао државу парњака."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Прикључник услужника:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Дозволи удаљене везе"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Везе"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Повремено провери има ли на сајту новог издања"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Издање:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Аутор:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Матична страница:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Ел. пошта аутора:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Подаци"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Додај парњака"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "домаћин:прикључник"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Опште</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Додај"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Уклони"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Додај хеш података"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Хеш података:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Пратиоци:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Додај домаћина"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Одредиште:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Ново издање"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Иди на веб страницу"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Не приказуј више ово прозорче"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Назив:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Напомене:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Премести завршене:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Прекини сејање при односу:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Уклони при односу"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Уреди пратиоце"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Врх"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Дно"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Додајте торенте"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_Адреса"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Хеш _података"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Додај у _паузираном стању"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Дај првенство првом/последњем делу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Примени на све"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Врати на основно"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "Прикажи _Делуге"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Ограничење брзине _преузимања"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Ограничење брзине _слања"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Изађи и угаси услужника"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Уредите пратиоце"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Додај парњака"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Додај парњака према његовој ИП"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Уреди пратиоца"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Пратилац:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Унеси удаљену путању"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Путања:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Направите торент"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "_Фасцикла"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Удаљена путања"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Датотеке"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Веб сејачи"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Величина дела:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Постави приватну ознаку"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Додај овај торент у сесију"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Опције"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Сачувај „.torrent“ као"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Паузирај"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Настави"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Наставите са изабраним торентима."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Опције"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Ред чекања"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Освежи пратиоца"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "Уклони _торент"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Приморај поновну проверу"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "натпис"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Изабери _све"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Паузирај све"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "_Настави све"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "Ограничење _везе"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Ограничење _утичнице за слање"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Самостално управљан"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Додај пратиоца"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Додај адресу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "Адреса:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Рашири све"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Клијент Бит-Торента"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Делуге клијент Бит-Торента"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Преузимајте и делите датотеке преко Бит-Торента"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Наредба"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Лозинка"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Од"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "За"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Користи насумичне прикључнике"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Долазна"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Одлазна"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Највише веза"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Највише места за слање"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Највише полуотворених веза"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Највише покушаја повезивања у секунди"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Однос дељења"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Примени"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Списак ИП Е-муле (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Текст Безбедног парњака (компресован)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "Текст Чувара парњака (некомпресован)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "Чувар парњака П2Б (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Списак блокирања"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Неисправан вођа"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Неисправан чаробни код"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Неисправно издање"
+
+# Провери има ли новог списка сваког: 4.... дана
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "дана"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Провери има ли новог списка сваког:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Увези списак блокирања при покретању"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Подешавања</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Преузмите датотеку списка блокирања ако је неопходно и увезите је."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Провери преузимање и увоз"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Преузмите нови списак блокирања и увезите га."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Приморај преузимање и увоз"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Списак блокирања је ажуриран"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Опције</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Врста:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Датум:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Величина датотеке:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<б>Подаци</б>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Торент је преузет"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Торент је додат"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Торент је уклоњен"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Извршавање"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Догађај"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Додајте наредбу</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Наредбе</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Самододавање"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Фасцикла надгледања не постоји."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Путања не постоји."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Својства фасцикле надгледања"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Изаберите фасциклу"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Укључи ову фасциклу надгледања"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Фасцикла надгледања:</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Обриши „.torrent“ након додавања"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Прикачи проширење након додавања:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Радња датотеке торента</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Премештање завршених</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Натпис: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Натпис</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Главно"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Најв. брзина слања:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Најв. веза:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Најв. утичница за слање:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Најв. брзина преузимања:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Проток</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Само-управљани:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Додај паузиране:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Стави на:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Стављање у ред</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Фасцикле надгледања:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "секунди"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "ВебКС"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Веб сучеље Делугеа није инсталирано, инсталирајте га и\n"
+"пробајте поново"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Укључи сучеље веба"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Укључи ССЛ"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Прикључник ослушкивања:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Неисправан натпис, исправни знаци су:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Празан натпис"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Натпис већ постоји"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Непознат натпис"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Непознат торент"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Опције _натписа"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Уклони натпис"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Додај натпис"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Опције натписа"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Натпис"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Опције натписа</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Највећа подешавања по торенту:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Највеће"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Примени подешавања реда:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(1 ред по пратиоцу)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Самостално примени натпис:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Додај натпис"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Додајте натпис</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Користите бочну површ да додате, измените и уклоните натписе. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Натписи</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Приказ трептаја обавештења"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Облачић обавештења није укључен."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Приказ облачића обавештења"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Звучно обавештавање није укључено"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "Није инсталиран „pygame“"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Звучно обавештење није успело „%s“"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Звучно обавештење је успело"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Завршен торент"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Завршено је преузимање торента „%(name)s“ који садржи %(num_files)i датотеке."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Обавештења"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Изаберите звучну датотеку"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Дошло је до грешке слања ел. поште са обавешењем: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Ел. пошта са обавештењем је послата."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Завршено је преузимање торента „%(name)s“"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Овом ел. поштом вас обавештавамо да је Делуге преузео „%(name)s“ у "
+"потпуности, са укупно %(num_files)i датотеке.\n"
+"Да престанете да примате ова обавештења, једноставно искључите обавештавање "
+"ел. поштом у подешавањима Делугеа.\n"
+"\n"
+"Хвала вам,\n"
+"Делуге."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Укључи трептање иконице у фиоци"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Укључи облачиће"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Укључи звук"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Обавештења сучеља</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Примаоци</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Сервер захтева ТЛС/ССЛ"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Обавештења ел. поште</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Ово подешавање не значи да ћете заправо и примати обавештења за све ове "
+"догађаје."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Претплате"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Прилагођавање звука"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Распакивач"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Распакуј у:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Направи садржану фасциклу према називу торента"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Ова опција ће направити подфасциклу користећи назив торента у изабраној "
+"фасцикли за распакивање и ставити распаковане датотеке у њу."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Заказивач"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Ограничење преузимања:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Ограничење слања:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Активни торенти:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Активних преузимања:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Активних сејања:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Подешавања спорости</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Одјава"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Сачувај"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Домаћин:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Премести"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Пријава"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Поставите највише веза"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Брзина преузимања"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Поставите највећу брзину преузимања"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Брзина слања"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Поставите највећу брзину слања"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Протокол саобраћаја преузимања/слања"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Повежи се"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Филтери"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Ограничење места за слање"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Детаљи"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Опште"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Приватно"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Обавести ме о новим издањима"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Највећи број веза:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Највећа брзина преузимања (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Највећа брзина слања (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Највише полуотворених веза:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Највећи број покушаја повезивања у секунди:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Највише утичница за слање:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Сервер"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Освежи"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Урл"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Датотека"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Додај у паузираном стању"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Preuzmi"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/sv.po b/deluge/i18n/sv.po
new file mode 100644
index 0000000..18f82f2
--- /dev/null
+++ b/deluge/i18n/sv.po
@@ -0,0 +1,6329 @@
+# translation of deluge.po to Swedish
+# translation of PACKAGE.
+# Copyright (C) 2006 - 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Daniel Nylander <po@danielnylander.se>, 2007.
+# Josef Andersson <l10nl18nsweja@gmail.com>, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2021-07-23 20:55+0000\n"
+"Last-Translator: Anders Jonsson <Unknown>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+"Language: sv\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Vanliga alternativ"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Skriv ut detta hjälpmeddelande"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Skriv ut versionsinformation"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Ställ in katalogsökväg för config"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "Utmatning till angiven loggfil istället för stdout"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "Ange loggnivå (ingen, fel, varning, info, felsök)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+"Aktivera loggfilrotation, med valfri högsta loggfilstorlek, standard: "
+"%(const)s (logfilrotationsräkning är 5)"
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "Avsluta loggningsutmatningen (samma som `--loglevel none`)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+"Profil %(prog)s med cProfile. Utmatningar till stdout om inte ett filnamn är "
+"angivet"
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "Processkontrollalternativ"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "Pidfile för att lagra process ID"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr "Demonisera inte (förgrena) denna process"
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "Byt till den här användaren vid uppstart (kräver root)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "Byt till den här gruppen vid uppstart (kräver root)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Demon alternativ"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "IP-adress för att lyssna på användargränssnittsanslutningar"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Port för att lyssna på användargränssnittsanslutningar"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "IP-adress för att lyssna på BitTorrent-anslutningar"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+"Namnet på nätverksgränssnittet eller IP-adressen för utgående BitTorrent-"
+"anslutningar."
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr "Konfigurer nycklarna för att avmodifieras av `set_config` RPC"
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Alla"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Aktiv"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Allokerar"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Kontrollerar"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Hämtar"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Distribuerar"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Pausad"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Köad"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Fel"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Namn"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Förlopp"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Tillstånd"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Storlek"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Hämtat"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Skickat"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Återstående"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Förhållande"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Hämtningshastighet"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Sändningshastighet"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Hämtningsgräns"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Sändningsgräns"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Max. antal anslutningar"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Högst antal sändningsplatser"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Noder"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Distributörer"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Tillgänglighet"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Distributörer:Noder"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Tillagd"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Bevakare"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Hämtningsmapp"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Distributionstid"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Aktiv tid"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Senaste aktivitet"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Slutförd tid"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Senast sedd"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Slutförd"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Tid kvar"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Delad"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Prioritera första/sista"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Sekventiell hämtning"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Automatiskt hanterad"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Stoppa vid förhållandet"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Stoppa vid förhållande"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Ta bort vid förhållandet"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Flytta den när den är klar"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Flytta färdig till sökväg"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr "Flytta färdiga till sökväg"
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Ägare"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Delar"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Distributiörsrankning"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "Superdistribuering"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Varning"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Annonsering OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Annonsering skickad"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Gränssnitt"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Hämtningar"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bandbredd"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Kö"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Nätverk"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Buffert"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Övriga"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Demon"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Insticksmoduler"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Hoppa över"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Låg"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normal"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Hög"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"Deluge kan inte hitta körbara \"deluged\", kontrollera att deluged-paketet "
+"är installerat, eller lagt till i din SÖKVÄG."
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Åland"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albanien"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeriet"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerikanska Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antarktis"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua och Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenien"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australien"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Österrike"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbajdzjan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Vitryssland"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgien"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnien Hercegovina"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Botswana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvetön"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brasilien"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Brittiska territoriet i Indiska oceanen"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgarien"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kambodja"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Kap Verde"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Caymanöarna"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Centralafrikanska republiken"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Tchad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Chile"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Kina"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Julön"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokosöarna"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Colombia"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komorerna"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo, demokratiska republiken"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cooköarna"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Costa Rica"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Elfenbenskusten"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Kroatien"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Kuba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Cypern"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Tjeckien"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danmark"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Djibouti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Samväldet Dominica"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominikanska Republiken"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ecuador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Egypten"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvatorialguinea"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritrea"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estland"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiopien"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falklandsöarna"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Färöarna"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finland"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Frankrike"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Franska Guyana"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Franska Polynesien"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Franska sydterritorierna"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambia"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Georgien"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Tyskland"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Ghana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Gibraltar"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Grekland"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grönland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Guinea"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Guinea-Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard- och McDonaldsöarna"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Heliga stolen (Vatikanstaten)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Ungern"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Island"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Indien"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Indonesien"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Iran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Irland"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Isle of Man"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Israel"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Italien"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaica"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japan"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Jordanien"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakstan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Nordkorea"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Sydkorea"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuwait"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kirgizistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Laos"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Lettland"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Libanon"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberia"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libyen"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Liechtenstein"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Luxemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Macao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonien"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malawi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malaysia"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldiverna"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marshallöarna"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinique"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Mauretanien"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Mexiko"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronesiens federerade stater"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldavien"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monaco"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Mongoliet"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Marocko"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambique"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Burma"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibia"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Holland"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Nederländska Antillerna"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Nya Kaledonien"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Nya Zeeland"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nicaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Niger"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolköarna"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Norra Marianaöarna"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norge"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Oman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Palestinska territoriet, ockuperade"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Nya Guinea"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filippinerna"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polen"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portugal"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Puerto Rico"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Qatar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Réunion"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Rumänien"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Ryssland"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Rwanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint-Barthélemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Christopher och Nevis"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre och Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent och Grenadinerna"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "São Tomé och Príncipe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Saudiarabien"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Serbien"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seychellerna"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapore"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakien"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenien"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Salomonöarna"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somalia"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Sydafrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Sydgeorgien och Sydsandwichöarna"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Spanien"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard och Jan Mayen"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Swaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Sverige"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Schweiz"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Syrien"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Taiwan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tadzjikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzania"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Thailand"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Östtimor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad och Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunisien"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Turkiet"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks- och Caicosöarna"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Förenade Arabemiraten"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Storbritannien"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "USA"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Förenta staternas mindre öar i Oceanien och Västindien"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Brittiska Jungfruöarna"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Amerikanska Jungfruöarna"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis och Futuna"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Västsahara"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Jemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambia"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabwe"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Användargränssnitt-alternativ"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+"Ange standardgränssnittet som ska köras, när inget användargränssnitt är "
+"angivet"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+"Alternativ UI att starta, med valfri ui args \n"
+" (standard användargränssnitt: *)"
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Webbserveralternativ"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "IP-adress för webbserver att lyssna på"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Port för webbserver att lyssna på"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr "Ange bassökvägen som användargränssnittet körs på"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Tvinga webbservern att använda SSL"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Tvinga webbservern att inaktivera SSL"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Demon existerar inte"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Demon är inte igång"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Filnamn"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Part"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Välj en fil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Avbryt"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Öppna"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Välj en mapp"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Spara .torrent-fil"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "_Spara"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrenter"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Alla filer"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Ange ditt lösenord för att visa Deluge…"
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Ange ditt lösenord för att avsluta Deluge…"
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "N: {download_rate} U: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Redigera sökväg"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Ta bort sökväg"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Tillämpa på vald"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Copyright %(year_start)s-%(year_end)s Deluge Team"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Ett icke-hierarkiskt-fildelningsprogram\n"
+"som använder bittorrentprotokollet."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Klient:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Nuvarande utvecklare:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Tidigare utvecklare eller medarbetare:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Detta program är fri programvara; du kan ge ut det eller ändra programmet "
+"under villkoren i GNU General Public License som getts ut av Free Software "
+"Foundation; antingen version 3 av licensen, eller (om du så vill) en senare "
+"version. \n"
+"\n"
+"Detta program ges ut i hopp om att det ska vara användbart, men UTAN NÅGON "
+"GARANTI; utan ens den indirekta garantin om SÄLJBARHET eller LÄMPLIGHET FÖR "
+"ETT VISST ÄNDAMÅL. Se GNU General Public License för mer detaljer. \n"
+"\n"
+"Du ska ha fått en kopia av GNU General Public License med detta program; om "
+"inte, var god se <http://www.gnu.org/licenses>. \n"
+"\n"
+"Dessutom, som ett speciellt undantag, ger upphovsrättsägarna tillstånd att "
+"länka koden för delar av det här programmets OpenSSL-bibliotek. Du måste "
+"lyda GNU General Public License på alla sätt för all kod som använts förutom "
+"koden för OpenSSL. \n"
+"\n"
+"Om du modifierar filer med detta undantag, kan du utvidga undantaget till "
+"dina versioner av filerna, men du är inte tvungen att göra detta. Om du "
+"känner att du inte vill göra det, radera detta meddelande från din version. "
+"Om du raderar detta meddelande från alla källkodsfiler i programmet, kan du "
+"också radera det här."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Server:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Lägg till torrenter (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "Duplicera torrent/torrenter"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+"Du kan inte lägga till samma torrent två gånger. %d torrenter var redan "
+"tillagda."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Ogiltig fil"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Vänta på filer..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "Det går inte att hämta filer för denna magnet"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Välj en .torrent-fil"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Ogiltig URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "är inte en giltig URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Hämtar…"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Hämtningen misslyckades"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Hämtningen misslyckades:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_Nej"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Ja"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Stäng"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Detaljer:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Autentisera"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "A_nslut"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Användarnamn:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Lösenord:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Redigera konto"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Redigera befintligt konto"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Tillämpa"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Nytt konto"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Skapa nytt konto"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Lägg till"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Autentiseringsnivå:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Lösenordsskyddad"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_OK"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Övrigt…"
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Inte ansluten"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Anslutningar (gräns)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Hämtningshastighet (gräns)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Sändningshastighet (gräns)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr "Protokolltrafik (ner:upp)"
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT-noder"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Ledigt diskutrymme"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Extern IP-adress"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "inte tillgängligt"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Portproblem</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Inga inkommande anslutningar, kontrollera port vidarebefordran"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Hastighetsbegränsning för hämtning"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Ange högsta hämtningshastighet"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Begränsning för sändningshastighet"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Ange högsta sändningshastighet"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Inkommande anslutningar"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Ange högst antal inkommande anslutningar"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent}%"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Aldrig"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Ja"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Nej"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Prioritet"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Alla"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Status"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Detaljer"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Fi_ler"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Noder"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "A_lternativ"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Bevakare"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Inte ansluten…"
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Obegränsad"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Nedåt"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Uppåt"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"En Deluge-demon (deluged) körs redan.\n"
+"För att använda fristående läge, stoppa lokala demonen och starta om Deluge."
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"Endast tunt klientläge är tillgängligt på grund av att libtorrent inte är "
+"installerat.\n"
+"För att använda fristående läge, installera libtorrent-paketet."
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"Endast tunt klientläge är tillgängligt på grund av okänt importfel.\n"
+"För att använda fristående läge, se loggar för felinformation."
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "Fortsätt i tunt klientläge?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Ändra användargränssnittsläge"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Frånkopplad"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Ansluten"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Ansluten"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Status"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Värd"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Version"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Starta demon"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Stoppa demon"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Koppla från"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Kunde inte starta demon!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+"Kontrollera om deluged paketet är installerat och loggar för ytterligare "
+"detaljer"
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Inkompatibel klient"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+"Att automatiskt starta demonen lokalt är inte aktiverat. Se ”Alternativ” "
+"under ”Anslutningshanteraren”."
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Misslyckades att ansluta"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Redigera värd"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Fel vid tillägg av värd"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "Fel vid uppdatering av värd"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Användarnamn"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Nivå"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Aktiverad"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Insticksmodul"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Observera."
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Du måste välja ett språk"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+"Du måste starta om Deluges användargränssnitt för att ändringarna ska ta "
+"effekt."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Självständig"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr "Växlar Deluge klientläge..."
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "Vill du starta om för att använda %s läge?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Välj insticksmodul"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Insticksmodulägg"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Serverfel"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "Ett fel uppstod på servern"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Fel då konto lades till"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Autentisering misslyckades"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "Ett fel uppstod vid tilläggning av konto"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Fel vid uppdatering av konto"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "Ett fel uppstod vid uppdatering av konto"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Ta bort konto"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+"Är du säker på att du vill ta bort kontot med användarnamnet "
+"\"%(username)s\"?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Fel vid borttagning av konto"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Autentisering misslyckades"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "Ett fel uppstod vid borttagning av konto"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Tillstånd"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Bevakare"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Ingen"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Administratör"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiketter"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Ingen etikett"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Ingen ägare"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Klientversion</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " köade torrenter"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " torrent köad"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr "Torrent delas med andra Deluge-användare, eller inte."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Ta bort markerade torrenter?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Totalt %s markerade torrenter"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Obegränsat"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "På"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Av"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Inaktivera"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Aktivera…"
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "Sändningsplatser för nod"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Ange högst antal sändningplatser"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Sluta distribuera vid förhållande"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Fel vid ändring av ägandeskap"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "Fel vid försök att ändra ägandeskap."
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adress"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Klient"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "GTK-alternativ"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+"Lägg till en eller flera torrentfiler, torrentadresser eller magnet-URI till "
+"en aktuell Deluge GTK-förekomst"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Skapar torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Köade torrenter"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Lägg till köade torrenter"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Ta bort"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "_Rensa"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Lägg automatiskt till torrenter vid uppkoppling"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Arkiv"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Lägg till torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Skapa torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Avsluta & _stäng av demon"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Avsluta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Redigera"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Inställningar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Uppkopplingshanterare"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Visa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Verktygsfält"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Sidopanel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Status_fält"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "_Flikar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Kolumner"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Sök…"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "S_idopanel"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Visa _noll träffar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Visa _bevakare"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "Visa _ägare"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Hjälp"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Webbplats"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_Vanliga frågor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Vanliga frågor"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Gemenskap"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_Om"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Lägg till torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Lägg till torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Ta bort torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Ta bort torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"Filtrera torrenter efter namn.\n"
+"Detta kommer att filtrera torrenter efter aktuellt val i sidopanelen."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Filtrera"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Pausa valda torrenter"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Pausa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Återuppta valda torrenter"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Återuppta"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Flytta torrent uppåt i kön"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Köa uppåt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Flytta torrent nedåt i kön"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Köa nedåt"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Inställningar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Anslutningshanterare"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Stäng"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Filter:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Töm söktexten"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "_Matcha skiftläge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Tvingad"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Inaktiverad"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Handskakning"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "Full ström"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Antingen"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 tillstånd"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP tillstånd"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "Det självständiga, fristående programmet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "Tunn klient"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Anslut till en Deluge-demon (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Programläge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Visa sessionshastighet i namnlisten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Fokusera fönster när torrenter läggs till"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"Delraden\n"
+"kommer att öka bandbredden som används mellan klienterna\n"
+"och demonen (tillämpas inte i självständigt läge)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "Visa delar i statusfliken"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Slutförda:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Hämtar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Väntar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Saknar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "_Återgå"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Återställ färg till standard"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Färg på delar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Huvudfönster"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Visa ikon i aktivitetsfältet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "Programindikator"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Aktivitetsfält"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Minimera till aktivitetsfältet vid stängning"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Starta minimerat till aktivitetsfält"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Lösenordsskydda aktivitetsfält"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Aktivitetsfält"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Avisera om nya utgåvor"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Uppdateringar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Systemstandard"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Språk</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Flytta slutförda till:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Kopiera .torrentfiler till:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Radera kopia av torrentfilen vid borttagning"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Radera kopian av torrentfilen som skapades när torrenten tas bort"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Hämta till:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Hämtningsmappar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Prioritera första och sista delarna av torrenten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Prioritera första och sista delarna av filer i torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Sekventiell hämtning"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+"Om aktiverad så kommer delväljaren att plocka delar i\n"
+"sekvens istället för de mest sällsynta först.\n"
+"\n"
+"Att aktivera sekventiell hämtning kommer att påverka del-\n"
+"distributionen negativt i svärmen. Det bör användas\n"
+"sparsamt."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Lägg till torrenter i pausat tillstånd"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Förallokera diskutrymme"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Förallokera diskutrymme för torrenterna"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Lägg till torrentalternativ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Alltid synlig"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Låt dialog få fokus"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Lägg till torrentdialog"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Anslutningsförsök per sekund:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Halvöppna anslutningar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Högst antal tillåtna anslutningar. Ange -1 för obegränsat antal."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Anslutningar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Högst antal sändningsplatser för alla torrenter. Ange -1 för obegränsat."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Sändningsplatser:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Högsta hämtningshastigheten för alla torrenter. Ange -1 för obegränsad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Hämtningshastighet:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Högsta sändningshastigheten för alla torrenter. Ange -1 för obegränsad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Sändningshastighet:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Ignorera begränsningar i lokalt nätverk"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Begränsa hastigheten för IP-overhead"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Om kryssad kommer estimerad TCP/IP-overhead att tas från frekvensgränserna "
+"för att undvika att gränserna överstigs med totala trafiken"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Global bandbreddsbegränsningar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Högst antal sändningsplatser per torrent. Ange -1 för obegränsat antal."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Högst antal anslutningar per torrent. Ange -1 för obegränsat antal."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr "Den högsta hämtningshastigheten per torrent. Ange -1 för obegränsad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "Högsta sändningshastighet per torrent. Ange -1 för obegränsad."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Bredbandsbegränsning per torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "Köa överst"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Nya torrenter"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Distribuerar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Totalt:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Ignorera långsamma torrenter"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+"Torrenter som inte överför någon data räknas inte för hämtning/delning aktiv "
+"räkning."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Föredra delningstorrenter"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr "Ge preferens till delningstorrenter över hämtningstorrenter."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Aktiva torrenter"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Delningsförhållande:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "Tidsförhållande:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Tid (m):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr "Delningsrotation"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Pausa torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Delningsförhållande uppnådd"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"IP-adressen till det gränssnitt som ska lyssna efter inkommande "
+"bittorrentanslutningar. Lämna fältet blankt för att använda standardvärdet."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Inkommande adress"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Slumpmässig"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Använder slumpmässiga portar i intervallet 49152 till 65525"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Aktiv port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Testa aktiv port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Inkommande port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"Namnet på nätverksgränssnittet eller IP-adressen för utgående BitTorrent-"
+"anslutningar. (Lämna tomt för standard.)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Utgående gränssnitt"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Från:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Till:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Utgående portar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Utgående:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Inkommande:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Nivå:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Kryptering"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT portmappningsprotokoll"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Distributörsutbyte"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr "Utbyter noder mellan klienter. (Inaktivering kräver omstart)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery hittar lokala noder på ditt nätverk."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Distribuerad hash-tabell kan förbättra mängden aktiva anslutningar."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Nod-TOS-byte:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Extra nätverksinställningar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Värdnamn:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "Proxyvärdnamn"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+"Värdnamn ska försökas lösas genom\n"
+"proxy istället för genom den lokala DNS-tjänsten"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr "Proxynoder"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr "Använd proxy för anslutningar gällande noder och webbdistribution."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "Proxybevakare"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Tvinga proxy-användning"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "Dölj klientidentitet"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+"Försök att gömma klientidentitet och använd endast proxy för inkommande "
+"anslutningar."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Tvinga proxy"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Buffertstorlek (16 KiB block):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Antal sekunder från den senast sparade skrivningen till en del i "
+"skrivcachen, tills då den skrivs till hårddisken. Standard är 60 sekunder."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Buffertförfall (sekunder):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Inställningar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Totalt antal 16 KiB block som skrivits till disk sedan denna session "
+"startades."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Block skrivna:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Totalt antal skrivoperationer som utförts sedan denna session startades."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Skrivningar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Förhållandet (block_skrivna - skrivningar) / block_skrivna representerar "
+"antalet sparade skrivoperationer per totala skrivoperationer, det vill säga, "
+"en typ av förhållande för cacheuppslagning av skrivcachen."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Träfförhållande för skrivbuffert:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Skriv"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Antal block som begärdes från bittorrent-motorn (från noder som servades "
+"från disk eller buffert."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Block lästa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Antalet block som hämtades från buffert."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Lästräffar för block:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Träfförhållande för läsbuffert."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Träfförhållande för läsbuffert:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Totalt antal läsoperationer som utförts sedan denna session startades."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Läsningar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Läs"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Antal 16 KiB block för närvarande i bufferten. Detta inkluderar både läs- "
+"och skrivbuffert."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Buffertstorlek:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Läsbuffertstorlek:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Uppdatera"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Hjälp oss att förbättra Deluge genom att skicka oss information om din "
+"Pythonversion, PyGTK-version, OS- och processortyp. Absolut ingen annan "
+"information sänds."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Ja, sänd anonym statistik"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Systeminformation"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Plats:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Om Deluge inte kan hitta databasfilen på denna plats kommer Deluge att "
+"återgå till att använda DNS för att matcha nodernas land."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "GeoIP-databas"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Associera med Deluge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Magnetlänkar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Demon-port:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Port"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Tillåt fjärranslutningar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Anslutningar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Kontrollera regelbundet webbplatsen efter uppdateringar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Ta bort"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Konton"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Version:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Upphovsman:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Webbplats:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Upphovsmannens e-postadress:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Info"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Installera"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Hitta fler klienter…"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Ta bort markerad(e) torrent(er)?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Omfatta hämtade filer"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(Detta är permanent!)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Lägg till nod"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "värdnamn:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Egenskaper"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr "Högst antal utfällningsrader"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Allmänt</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Visa sökväg"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Visa filväljaren"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Visa mappnamn"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Sökvägsväljartyp"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Aktivera automatisk komplettering"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Visa dolda filer"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Ange ny tangent"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+"Tryck ned denna tangent för ange nya tangentkortkommandon att starta "
+"automatisk komplettering"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Autokomplettera"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Spara sökväg"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Växla dolda filer"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Standardsökväg"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Snabbkommandon"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Välj en katalog"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Sparade sökvägar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "kolumn"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Öppna"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Lägg till"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Lägg till aktuellt inmatningsvärde i listan"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Redigera"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Redigera den markerade posten"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Ta bort"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Ta bort den valda posten"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Flytta den markerade posten uppåt"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Flytta den markerade posten nedåt"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Standard"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Ingen standardsökväg angiven"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Öppna egenskapsdialogen"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Lägg till Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "Från Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Bevakare:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Lägg till värddator"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "Flytta hämtningsmappen"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "Flytta hämtningsmappen för torrenterna."
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Mål:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Ny utgåva"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Gå till webbplats"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Ny utgåva tillgänglig!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Tillgänglig version:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Serverversion"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Aktuell version:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Visa inte denna dialog i framtiden"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Hämtningshastighet:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Sändningshastighet:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Hämtat:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Skickat:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Distributörer:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Noder:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Tillgänglighet:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Distributörsrankning:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "Beräknad ankomsttid:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Senaste överföring:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Aktiv tid:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "Senast sedd:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Distributörstid:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Delar:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Namn:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Hämtningsmapp:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Tillagd:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Totalstorlek:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Totala antalet filer:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Hash:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Skapad av:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Kommentarer:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Ägare:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Flytta slutförda:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Sluta distribuera vid förhållande:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Ta bort vid förhållande"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Bandbreddsbegränsningar"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Aktuell bevakare:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Totalt antal bevakare:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Bevakarstatus:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Nästa annonsering:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Privat torrent:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Redigera bevakare"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Överst"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Nederst"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Lägg till torrenter"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "Flytta mappen för slutförda"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Lägg till i _pausat tillstånd"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Prioritera första/sista delarna"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Hoppa över filhashkontroll"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Förallokera diskutrymme"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Förallokera diskutrymmet för torrenterna"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "Högsta hämtningshastighet"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Högsta sändningshastighet för torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Högst antal torrentanslutningar"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr "Högst antal torrentsändningsplatser"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Tillämpa till alla"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Gå tillbaka till grundinställningar"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Visa Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "_Pausa session"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "_Återuppta session"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "Hastighetsgräns för _hämtning"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Hastighetsgräns för _sändning"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Avsluta & stäng demon"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Redigera bevakare"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "_Upp"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "_Ner"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Lägg till nod"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Lägg till nod efter IP-nummer"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Redigera bevakare"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Bevakare:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Ange fjärrsökväg"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Fjärrsökväg"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Sökväg:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Skapa torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Ma_pp"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Fjärrsökväg"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Filer"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webbdistributioner"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Delstorlek:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Sätt privat flagga"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Lägg till denna torrent till sessionen"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Inställningar"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Spara .torrent som"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Öppna hämtningsmappen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Pausa"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Återuppta"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Återuppta valda torrenter."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Inställningar"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Kö"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Uppdatera bevakare"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Ta bort torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Tvinga återkontroll"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "_Flytta hämtningsmappen"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etikett"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Markera _alla"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "_Pausa alla"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "_Återuppta alla"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Kopplingsbegränsning"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Begränsning för sändnings_platser"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "Sluta distribuera vid _förhållande"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Automatiskt hanterad"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr "_Superdistribuering"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "_Ändra ägarskap"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Lägg till bevakare"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Lägg till bevakare"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Lägg till URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "Från webbadress"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Deluge demoner"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Automatisk anslutning till vald Daemon"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "Starta automatiskt localhost demon (om det krävs)"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Dölj den här dialogrutan"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Uppstartsalternativ"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Öppna fil"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "_Visa mapp"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Expandera alla"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "_Hoppa över"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Låg"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Normal"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_Hög"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Deluge arbetsgruppen"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr "Deluge är en lätt, fri, plattformsoberoende BitTorrent-klient."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+"Deluge innehåller de vanliga funktionerna för BitTorrent-klienter som "
+"protokollkryptering, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), "
+"UPnP, NAT-PMP, Proxy-stöd, webbdelning, globala och per torrent "
+"hastighetsgränser. Eftersom Deluge utnyttjar biblioteket libtorrent har den "
+"en omfattande lista över funktionerna."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+"Deluge har utformats för att köras som både en vanlig fristående stationär "
+"applikation och som en klient-server. I tunt klientläge hanterar en Deluge-"
+"demon alla BitTorrent-aktiviteter som kan köras på huvudlösa maskiner med "
+"användargränssnitt som fjärransluts från någon annan plattform."
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Bittorrentklient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge bittorrentklient"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Hämta och dela filer över bittorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Konsolalternativ"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+"Dessa demon-anslutningsalternativen kommer att användas för kommandon, eller "
+"om automatisk anslutning till konsolanvändargränssnitt är aktiverad."
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr "IP-adress för Deluge demon att ansluta till (standard: 127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr "Port för Deluge demon att ansluta till (standard: 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "Användare för Deluge demon att använda när du ansluter"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "Lösenord för Deluge demon att använda när du ansluter"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Konsolkommandon"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Beskrivning"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "Följande konsolkommandon är tillgängliga:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Kommando"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr "\"%s\" alias"
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Användning: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr "ett uttryck matchat mot torrent ids och torrentnamn"
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "Ange värde för denna nyckel"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Värde att ange"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "en eller flera nycklar separerade av mellanrum"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Tar också bort torrentdata"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "Lista de matchande torrenterna utan att ta bort."
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "En eller flera torrent-id"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr "Bekräfta med -c för att ta bort de listade torrenterna (antal: %d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr "Användning: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+"En eller flera torrent ids. Använd \"*\" för att återuppta alla torrenter"
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+"En eller flera torrent ids. Använd \"*\" för att pausa alla torrenter"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Hämta mapp för torrent"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Flytta den färdiga torrenten till den här mappen"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "En eller flera torrentfiler, webbadresser eller magnet-URI-filer"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Listar tillgängliga insticksmoduler"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Visar aktiverade insticksmoduler"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Aktiverar en insticksmodul"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Inaktiverar en insticksmodul"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "Ladda om listan över tillgängliga insticksmoduler"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Installera en insticksmodul från en .egg-fil"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+"Råvärden för sändning/hämtningshastigheter (utan KiB/s-suffix) (användbart "
+"för skript som vill göra egna analyser)"
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Visa inte torrentstatus (förbättrar kommandohastighet)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr "Användning: connect <host[:port]> [<username>] [<password>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "Demon värd och port"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Lösenord"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "Sökvägen att flytta torrenten till"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "Den nya statusen"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "En eller flera kommandon"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "Använd: config [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Visa mer information per torrent."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "Visa mer detaljerad information inklusive filer och noder."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr "Visa torrenter med status STATE: %s."
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "Samma som --sort men artiklarna är i omvänd ordning."
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr "En eller flera torrent ids. Om inget ges, lista alla"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Välj värd"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Avsluta"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Ta bort värd"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+"Lägg till värd (upp och ner pilar för att navigera, Esc för att avbryta)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "Det gick inte att lägga till värd"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Kolumner"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Bredd"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Allmänna alternativ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "Ring systemklockan när en hämtning slutar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+"Lista kompletta torrenter efter ofullständiga oavsett sorteringsordning"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr "Flytta markering när du flyttar torrenter i kön"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Språk"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Kommandoradsläge"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "Spara inte dubbla inmatningar i historiken"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr "Spara och ladda kommandoradshistorik i kommandoradsläge"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr "Tredje fliken listar alla återstående torrenter i kommandoradsläge"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr "Torrenter per flik tryck"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Mappar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Hämta till"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Flytta färdig till"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr "Kopia av .torrent-filer till"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "Lägg till pausad"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Fördela diskutrymme"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Inkommande portar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Från"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Till"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Använd slumpmässiga portar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Inkommande gränssnitt"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+"IP-adressen för gränssnittet att lyssna på (lämna tomt för standard):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"Namnet på nätverksgränssnittet eller IP-adressen för utgående BitTorrent-"
+"anslutningar. (Lämna tomt för standard.):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Inkommande"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Utgående"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Global bredbandsanvändning"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Högst antal anslutningar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Högst antal sändningsplatser"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Högsta hämtningshastighet (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Högsta sändningshastighet (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Högst antal halvöppna anslutningar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Högst antal anslutningsförsök per sekund"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Frekvensgräns för IP-overhead"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Bredbandsanvändning per torrent"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Ja, skicka anonyma statistik."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Demon port"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Tillåt fjärranslutningar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Totalt"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Delningsförhållande"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Tidsförhållande"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Tid (m)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr "Ta bort torrent (Avmarkerad pausar torrent)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Proxyinställningar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Typ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Värdnamn"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr "Proxytyp hjälp"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Cache-storlek (16 KiB-block)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr "Cache löper ut (sekunder)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Block skrivna"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "Skriver"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr "Träfförhållande för skrivbuffert"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Block lästa"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr "Lästräffar för block"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr "Läsningar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr "Träfförhållande för läsbuffert"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr "Cache-storlek"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr "Läs cachestorlek"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Tillämpa"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "OK"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Välj språk"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr "IP {!white,blue!}%s{!status!}"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "IP-adressen ”%s” har fel format"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP-lista (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer-text (zippad)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian-text (okomprimerad)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr "Blockerade IP-intervall /Vitlistade IP-intervall"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Blockeringslista"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Dålig IP-adress"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Ogiltig ledare"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Felaktig magisk kod"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Felaktig version"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Dygn"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Kontrollera efter ny lista varje:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Importera blockeringslista vid uppstart"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Inställningar</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Hämta blockeringslistan om nödvändigt och importera filen."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Kontrollera hämtning och import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Hämta en ny blockeringslista och importera den."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Tvinga hämtning och import"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Blockeringslistan är uppdaterad"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Alternativ</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Typ:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Datum:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Filstorlek:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Info</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Vitlista</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent slutförd"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent tillagd"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent borttagen"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Kör"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Händelse"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Lägg till kommando</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Kommandon</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Inkompatibelt alternativ"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+"Katalogerna för ”Bevakad mapp” och ”Kopiera .torrenter till” kan inte vara "
+"samma!"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "AutoAdd"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Dubbelklicka för att växla"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Dubbelklicka för att redigera"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Sökväg"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Bevakad mapp finns inte."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Sökvägen finns inte."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Inställningar för bevakad mapp"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Om en .torrentfil läggs till i denna katalog,\n"
+"kommer den att läggas till i sessionen."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Välj en mapp"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Aktivera denna bevakade mapp"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Bevakad mapp</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Radera .torrent efter att den lagts till"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"När en torrent är tillagd till sessionen,\n"
+"kommer .torrent att tas bort."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Bifoga tillägg efter att den lagts till:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"När en torrent är tillagd till sessionen,\n"
+"kommer ett tillägg att läggas till .torrent-filen\n"
+"och den kommer att finnas kvar i samma katalog."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".tillagd"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"När en torrent är tillagd till sessionen,\n"
+"kommer .torrent-filen att kopieras till vald katalog\n"
+"och tas bort från den bevakade mappen."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+"När en torrent är tillagd till sessionen,\n"
+"ta också bort .torrent-filen som använts för att lägga till den."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrentfilåtgärd</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Ange hämtningsmapp"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "Den mapp till vilken torrent-data hämtas till."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Hämtningsmapp</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "Ange mappen flytta slutförda"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Flytta slutförd</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etikett: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etikett</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Övergripande"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "Användaren vald här kommer att bli torrentens ägare."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Ägare</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Max sändningshastighet:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Max anslutningar:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Högst antal uppladdningsplatser:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Max hämtningshastighet:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bandbredd</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Automatiskt hanterad:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Lägg till pausad:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Köa till:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Kö</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Bevakade mappar:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "minuter"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 minut"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 sekund"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "sekunder"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Statistik"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Upplösning"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Distributörer/Noder"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Hämtningsfärg:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Sändningsfärg:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Anslutningsdiagram</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Bandbreddsdiagram</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "DHT-noder:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Cachade DHT-noder:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "DHT-torrenter:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Distributörer / Noder</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Diagramfärger</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Webbanvändargränssnitt"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluges webbgränssnitt är inte installerat, installera\n"
+"gränssnittet och försök igen"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Aktivera webbgränssnitt"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Aktivera SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Lyssningsport:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Ogiltig etikett, giltiga tecken är:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Tom etikett"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Etiketten existerar redan"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Okänd etikett"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Okänd torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Etikett_alternativ"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Ta bort etikett"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Lägg till etikett"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Etikettalternativ"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etikett"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "bevakare1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Etikettalternativ</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Verkställ max. inställningar per torrent:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Maximala"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Verkställ köinställningar:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Verkställ mappinställningar:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(en rad per bevakare)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Lägg till etikett automatiskt:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Lägg till etikett"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Lägg till etikett</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Använd sidopanelen för att lägga till, redigera och ta bort "
+"etiketter.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiketter</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Aviseringsblinkning visas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Poppupp-avisering inte aktiverad."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "libnotify är inte installerad"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr "Det gick inte att poppupp-anmälan"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Poppupp-avisering visas"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Ljudavisering inte aktiverad"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame är inte installerad"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Misslyckades med ljudavisering %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Ljudavisering lyckades"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Slutförde torrent"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Torrenten ”%(name)s” omfattande %(num_files)i fil(er) har laddats ner."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Aviseringar"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Välj ljudfil"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Det uppstod ett fel vid skickande av aviseringsmeddelandet: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "Server svarade inte korrekt på HELO hälsning: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "Server vägrade användarnamn/lösenords-kombination: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Aviseringsmeddelandet skickat."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Slutförde torrent ”%(name)s”"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Detta e-postbrev är till för att informera dig om att Deluge har slutfört "
+"hämtning ”%(name)s”, vilket inkluderar %(num_files)i filer.\n"
+"För att sluta få dessa meddelanden, stäng av e-postaviseringar i Deluges "
+"inställningar.\n"
+"\n"
+"Tack,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Blinkningar för aktivitetfältsikon aktiverad"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Poppupper aktiverade"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Ljud aktiverat"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Användargränssnittsaviseringar</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Mottagare</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Servern kräver TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-postaviseringar</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Denna konfiguration innebär inte att du kommer få aviseringar för alla dessa "
+"händelser."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Prenumerationer"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Ljudanpassning"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Extraherare"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Extrahera till:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Skapa undermapp med torrentens namn"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Detta alternativ kommer att skapa en undermapp namngiven efter torrenten i "
+"den valda extraheringsmappen och lägga de extraherade filerna där."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Schemaläggare"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr "<b>Schema</b>"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Hämtningsgräns:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Sändningsgräns:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Aktiva torrenter:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Aktiva hämtningar:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Aktiva distributioner:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Långsamma inställningar</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Filhanterare"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Bakåt"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Framåt"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "Hem"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Skapa"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Hjälp"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Logga ut"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Spara"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "Om Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Copyright 2007-2018 Deluge Team"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Ta bort med data"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Lägg till anslutning"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Värd:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "Det går inte att lägga till värd: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Flytta"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Bläddra"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Redigera anslutning"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "Det går inte att redigera värd"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Logga in"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Inloggning misslyckades"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Lösenordet som du angav är felaktigt"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Publikt"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Senaste överföring"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "Blandad"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Ange högst antal anslutningar"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Hämtningshastighet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Ange högsta hämtningshastighet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Sändningshastighet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Ange högsta sändningshastighet"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Protokolltrafik hämtning/sändning"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "Fritt utrymme i hämtningsmappen"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Anslut"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Stoppa demon"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Koppla från"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Starta demon"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Ändra standardlösenordet"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Vi rekommenderar att ändra standardlösenordet.<br><br>Vill du ändra det nu?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "Bevakarvärd"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Filter"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "Anslutning återställd"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "Förlorad anslutning"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "Anslutningen till webbservern har förlorats!"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "Förlorad anslutning till webbserver"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Hastighetsgräns för hämtning"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Hastighetsgräns för uppladdning"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Anslutningsgräns"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Begränsning för sändningsplatser"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Uppdatera bevakare"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Tvinga kontroll"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Expandera alla"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Detaljer"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Status:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Flytta slutförda:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Allmänt"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Privat"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Läser in"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Sant"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Bli notifierad om nya versioner"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Hjälp oss att förbättra Deluge genom att skicka oss din Pythonversion, PyGTK-"
+"version, OS- och processortyp. Absolut ingen annan information sänds."
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Pausa torrent"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Installera insticksmodul"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Installera"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr "Välj ett ägg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr "Insticksmodulägg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Bläddra..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Skickar din insticksmodul…"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Högst antal anslutningar:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Högsta hämtningshastighet (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Högsta sändningshastighet (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Högst antal halvöppna anslutningar:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Högst antal uppkopplingsförsök per sekund:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Högst antal sändningsplatser:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Cachestorlek (16 KiB block):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Tvinga användning av proxy"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "Hitta fler"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Använd slumpmässig port"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Tjänstetyp"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr "Visa filter med noll torrenter"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr "Tillåt användning av flera filter samtidigt"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr "Lösenord för webbgränssnittet"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "Gammal:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Ny:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Bekräfta:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Server"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Sessionstidsgräns:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+"Aktivera SSL (sökvägar i förhållande till Deluge-konfigurationsmappen)"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Privat nyckel:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Certifikat:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr "Språket ändrat för webbgränssnittet"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr "Vill du uppdatera sidan nu för att använda det nya språket?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Uppdatera"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "Ogiltigt lösenord"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Dina lösenord stämmer inte överens!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "Ditt gamla lösenord var felaktigt!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "Ändring lyckades"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "Ditt lösenordet har ändrats!"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Lägg till från webbadress"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Webbadress"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Kakor"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Det gick inte att hämta torrent"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Arkiv"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Infohash"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Skickar din torrent…"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Det gick inte att skicka torrent"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Inte en giltig torrent"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "Mappen flytta slutförda"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Max. hämtningshastighet"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Max. sändningshastighet"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Lägg till i pausat läge"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr "Superdistributör"
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Hämta"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "Tid kvar:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "Tillagd:"
+
+#~ msgid "<b>Language</b>"
+#~ msgstr "<b>Språk</b>"
diff --git a/deluge/i18n/ta.po b/deluge/i18n/ta.po
new file mode 100644
index 0000000..015c304
--- /dev/null
+++ b/deluge/i18n/ta.po
@@ -0,0 +1,6164 @@
+# Tamil translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Tamil <ta@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "பெயர்"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "முன்னேற்றம்"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "பதிவிறக்கங்கள்"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "வரிசை"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "வலையமைப்பு"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "ஏனையவை"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "சொருகுபொருள்கள்"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "கடவுச்சொல்:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "கீழ்"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "மேல்"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "வாங்கி"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "கோப்பு (_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_டோர்றேன்ட் ஐ சேர்க்கவும்"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "(_E)திருத்து"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_உதவி"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "டோர்றேன்ட் ஐ சேர்க்கவும்"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "டோர்றேன்ட் ஐ நீக்கவும்"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "தற்காலிகமாக நிறுத்து"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "மீண்டும் துவக்க"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "டோர்றேன்ட் - களை மேல் நோக்கி வரிசைப்படுத்துக"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "டோர்றேன்ட் - களை கீழ் நோக்கி வரிசைப்படுத்துக"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "விருப்பங்கள்"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "இணைப்புகள்"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "சேர்க்கவும்"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "நீக்கவும்"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "கோப்புக்கள்"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/te.po b/deluge/i18n/te.po
new file mode 100644
index 0000000..357d260
--- /dev/null
+++ b/deluge/i18n/te.po
@@ -0,0 +1,6164 @@
+# Telugu translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Telugu <te@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/th.po b/deluge/i18n/th.po
new file mode 100644
index 0000000..f953960
--- /dev/null
+++ b/deluge/i18n/th.po
@@ -0,0 +1,6164 @@
+# Thai translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2020-09-13 15:30+0000\n"
+"Last-Translator: Tharawut Paripaiboon <Unknown>\n"
+"Language-Team: Thai <th@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/วินาที"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/วินาที"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/วินาที"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/วินาที"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/วินาที"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/วินาที"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/วินาที"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/วินาที"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "ตัวเลือกทั่วไป"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "ผิดพลาด"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "ดาวน์โหลดแล้ว"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "ความเร็วดาวน์โหลด"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ประมาณเวลาเสร็จ"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "คำเตือน"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Announce OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Announce Sent"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "ลง"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "ไม่ใช้"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "เพิ่มทอเรนต์"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "เพิ่มงาน"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "ลบงาน"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "พักงาน"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "ทำงานต่อ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "การเชื่อมต่อ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "เพิ่มงาน"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "ลบงาน"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "รายละเอียด"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "ดาวน์โหลด"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "ใช้เวลาประมาณ:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "วันที่ถูกเพิ่ม:"
diff --git a/deluge/i18n/tl.po b/deluge/i18n/tl.po
new file mode 100644
index 0000000..db38679
--- /dev/null
+++ b/deluge/i18n/tl.po
@@ -0,0 +1,6164 @@
+# Tagalog translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Tagalog <tl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Magdagdag ng Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Tanggalin ang Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Ipagpatuloy"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Magdagdag"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/tlh.po b/deluge/i18n/tlh.po
new file mode 100644
index 0000000..646e1a2
--- /dev/null
+++ b/deluge/i18n/tlh.po
@@ -0,0 +1,6164 @@
+# Klingon translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Klingon <tlh@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/tr.po b/deluge/i18n/tr.po
new file mode 100644
index 0000000..69dee56
--- /dev/null
+++ b/deluge/i18n/tr.po
@@ -0,0 +1,6349 @@
+# Turkish translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2021-01-31 17:21+0000\n"
+"Last-Translator: BouRock <Unknown>\n"
+"Language-Team: Turkish <tr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Genel Seçenekler"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Bu yardım iletisini yazdır"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Sürüm bilgisini yazdır"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Yapılandırma dizini yolunu ayarla"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "Standart çıktı yerine belirtilen günlük dosyasına çıktı al"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "Günlük seviyesini ayarla (yok, hata, uyarı, bilgi, hata ayıklama)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+"İsteğe bağlı en fazla günlük dosyası boyutuyla günlük dosyası dönüşünü "
+"etkinleştir, varsayılan: %(const)s (Günlük dosyası dönüş sayısı 5'tir)"
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "Günlük çıktısını sessize al (`--loglevel none` ile aynı)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+"cProfile ile Profil %(prog)s. Bir dosya adı belirtilmedikçe standart çıktıya "
+"çıktı alınır"
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "İşlem Denetim Seçenekleri"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "İşlem kimliğini saklamak için Pidfile"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr "Bu işlemi (ayrılma) daemonize etmeyin"
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "Başlangıçta bu kullanıcıyla değiştir (root gerektirir)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "Başlangıçta bu gruba değiştir (root gerektirir)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Arka Plan Programı Seçenekleri"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "Arayüz bağlantılarını dinlemek için IP adresi"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Arayüz bağlantılarını dinlemek için bağlantı noktası"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "BitTorrent bağlantılarını dinlemek için IP adresi"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr "Giden BitTorrent bağlantıları için ağ arayüzü adı veya IP adresi."
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+"`set_config` RPC tarafından değiştirilmeyecek yapılandırma anahtarları"
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Tümü"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Etkin"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Ayırılıyor"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Denetleniyor"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "İndiriliyor"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Gönderiliyor"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Duraklatıldı"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Kuyrukta"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Hata"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Ad"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "İlerleme"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Durum"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Boyut"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "İndirilen"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Gönderilen"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Kalan"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Oran"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "İndirme Hızı"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Gönderme Hızı"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "İndirme Sınırı"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Gönderme Sınırı"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "En Fazla Bağlantı"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "En Fazla Gönderme Yuvası"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Kişiler"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Gönderimler"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Mevcut"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Gönderimler:Kişiler"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Eklenen"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "İzleyici"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "İndirme Klasörü"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Gönderim Süresi"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Etkin Süre"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Son Etkinlik"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Bitiş Zamanı"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Tam Görülme"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Tamamlandı"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "TBS"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Paylaşılan"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "İlk/Son'a Öncelik Ver"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Sıralı İndirme"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Otomatik Yönetilen"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Oranda Durdur"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Durdurma Oranı"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Oranda Kaldır"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Tamamlandığında Taşı"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Tamamlananı Taşıma Yolu"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr "Tamamlandığında Taşınacağı Yol"
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Sahibi"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Parça"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Gönderim Sırası"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "Süper Gönderim"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Uyarı"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Duyuru TAMAM"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Duyuru Gönderildi"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Arayüz"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "İndirmeler"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Bant Genişliği"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Kuyruk"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Ağ"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Vekil Sunucu"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Önbellek"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Diğer"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Arka Plan Programı"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Eklentiler"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Atla"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Düşük"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Normal"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Yüksek"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"Deluge, `deluged` çalıştırılabilir dosyayı bulamıyor, deluged paketinin "
+"yüklendiğini ya da YOLUNUZA eklendiğini denetleyin."
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Aland Adaları"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Arnavutluk"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Cezayir"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Amerika Samoası"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andora"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Antartika"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua ve Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Arjantin"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Ermenistan"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Avustralya"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Avusturya"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaycan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamalar"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahreyn"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladeş"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Beyaz Rusya"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belçika"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Butan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivya"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna Hersek"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Bostvana"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Bouvet Adası"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Brezilya"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Britanya Hint Okyanusu Toprakları"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Brunei Sultanlığı"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Bulgaristan"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Burkina Faso"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Burundi"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Kamboçya"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Kamerun"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Kanada"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Verde Burnu"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Kayman Adaları"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Orta Afrika Cumhuriyeti"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Çad"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Şili"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Çin"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Christmas Adası"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Kokos (Keeling) Adaları"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Kolombiya"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Komorlar"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Kongo"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Kongo Demokratik Cumhuriyeti"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Cook Adaları"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Kosta Rika"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Fildişi Sahili"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Hırvatistan"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Küba"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Kıbrıs"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Çekya"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Danimarka"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Cibuti"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Dominika"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Dominik Cumhuriyeti"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Ekvador"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Mısır"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "El Salvador"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Ekvator Ginesi"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Eritre"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Estonya"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Etiyopya"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Falkland Adaları (Malvinalar)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Faroe Adaları"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Fiji"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Finlandiya"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Fransa"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Fransız Guyanası"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Fransız Polinezyası"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Fransız Güney Toprakları"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Gabon"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Gambiya"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Gürcistan"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Almanya"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Gana"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Cebelitarık"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Yunanistan"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Grönland"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Grenada"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Guadeloupe"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Guam"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Guatemala"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Guernsey"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Gine"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Gine Bissau"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Guyana"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Haiti"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Heard Adası ve McDonald Adaları"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Kutsal Makam (Vatikan Şehir Devleti)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Honduras"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Hong Kong"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Macaristan"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "İzlanda"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Hindistan"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Endonezya"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "İran"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Irak"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "İrlanda"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Man Adası"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "İsrail"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "İtalya"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Jamaika"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Japonya"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Jersey"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Ürdün"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Kazakistan"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Kenya"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Kiribati"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Kuzey Kore"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Güney Kore"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Kuveyt"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Kırgızistan"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Lao, Demokratik Halk Cumhuriyeti"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Letonya"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Lübnan"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Lesotho"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Liberya"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Libya"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Lihtenştayn"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Litvanya"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Lüksemburg"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Makao"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Makedonya"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Madagaskar"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Malavi"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Malezya"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Maldivler"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Mali"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Malta"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Marşal Adaları"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Martinik"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Moritanya"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Mauritius"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Mayotte"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Meksika"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Mikronezya Federal Devletleri"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Moldova"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Monako"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Moğolistan"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Karadağ"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Montserrat"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Fas"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Mozambik"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Namibya"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Nauru"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Nepal"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Hollanda"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Hollanda Antilleri"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Yeni Kaledonya"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Yeni Zelanda"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Nikaragua"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Nijer"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Nijerya"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Niue"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Norfolk Adası"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Kuzey Mariana Adaları"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Norveç"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Umman"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Palau"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Özgür Filistin"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Panama"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Papua Yeni Gine"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Paraguay"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Peru"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Filipinler"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Pitcairn Adaları"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Polonya"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Portekiz"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Porto Riko"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Katar"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Reunion Adası"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Romanya"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Rusya Federasyonu"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Ruanda"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Saint Barthelemy"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Saint Helena"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Saint Kitts ve Nevis Adaları"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Saint Lucia Adası"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Saint Martin"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Saint Pierre ve Miquelon"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Saint Vincent ve Grenadinler"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Samoa"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "San Marino"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Sao Tome ve Principe"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Suudi Arabistan"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Senegal"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Sırbistan"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Seyşeller"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Sierra Leone"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Singapur"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Slovakya"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Slovenya"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Solomon Adaları"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Somali"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Güney Afrika"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Güney Georgia ve Güney Sandwich Adaları"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "İspanya"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Sudan"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Surinam"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Svalbard ve Jan Mayen Adaları"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Svaziland"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "İsveç"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "İsviçre"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Suriye"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Tayvan"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Tacikistan"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Tanzanya"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Tayland"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Doğu Timor"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Togo"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Tokelau"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Tonga"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Trinidad ve Tobago"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Tunus"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Türkiye"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Türkmenistan"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Turks ve Caicos Adaları"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Tuvalu"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Uganda"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Ukrayna"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Birleşik Arap Emirlikleri"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Birleşik Krallık"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "Amerika Birleşik Devletleri"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "ABD Küçük Dış Adalar"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Uruguay"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Özbekistan"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Vanuatu"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Venezuela"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "Vietnam"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Virgin Adaları, İngiliz"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Virgin Adaları, ABD"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Wallis ve Futuna Adaları"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Batı Sahra"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Yemen"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Zambiya"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Zimbabve"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Arayüz Seçenekleri"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+"Arayüz belirtilmediğinde çalıştırılacak varsayılan kullanıcı arayüzünü ayarla"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+"İsteğe bağlı arayüzüyle başlatılacak alternatif arayüz bağımsız değişkenleri "
+"\n"
+" (varsayılan arayüz: *)"
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Web Sunucusu Seçenekleri"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "Web sunucusunun dinleneceği IP adresi"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Web sunucusunun dinleneceği bağlantı noktası"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr "Arayüzün çalışacağı temel yolu ayarlayın"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Web sunucusunu SSL kullanmaya zorla"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Web sunucusunu SSL'i etkisizleştirmeye zorla"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Arka plan programı mevcut değil"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Arka plan programı çalışmıyor"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Dosya Adı"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Sıra"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Bir dosya seçin"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "İ_ptal"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Aç"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Bir klasör seçin"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ".torrent dosyasını kaydet"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "_Kaydet"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent dosyaları"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Tüm dosyalar"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Deluge'yi göstermek için parolanızı girin..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Deluge'den Çıkmak için parolanızı girin..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "İ: {download_rate} G: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Yolu düzenle"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Yolu kaldır"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "Seçilene _uygula"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Telif Hakkı %(year_start)s-%(year_end)s Deluge Takımı"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"BitTorrent protokolünü kullanan kişiden-kişiye\n"
+"bir dosya paylaşım programı."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "İstemci:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Şu Anki Geliştiriciler:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Eski Geliştiriciler veya Katkıda Bulunanlar:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Bu yazılım ücretsiz yazılımdır; Özgür Yazılım Vakfı tarafından yayınlanan "
+"GNU Genel Kamu Lisansı'nın 3. sürümünün ya da (isteğinize göre) herhangi bir "
+"sonraki sürümünün şartlarına göre yeniden dağıtabilir ve/ya da "
+"düzenleyebilirsiniz. \n"
+"\n"
+"Bu yazılım yararlı olacağı umularak, fakat HİÇBİR GARANTİ OLMADAN; hatta "
+"îmâlı BELİRLİ BİR AMACA UYGUNLUK ya da PAZARLANABİLİRLİK garantisi olmadan "
+"dağıtılmaktadır. Daha fazla ayrıntı için GNU Genel Kamu Lisansı'na bakınız. "
+"\n"
+"\n"
+"Bu yazılımla birlikte GNU Genel Kamu Lisansı'nın bir kopyasını almış olmanız "
+"gerekiyor, eğer almadıysanız <http://www.gnu.org/licenses> adresine gidiniz. "
+"\n"
+"\n"
+"Buna ek olarak, özel bir istisnâ olarak, telif hakkı sâhipleri bu yazılımın "
+"OpenSSL kütüphânesiyle yazılan kodunun kısımlarına bağlantı vermenize izin "
+"veriyor. OpenSSL ile yazılan kısımlar dışında bulunan kod için GNU Genel "
+"Kamu Lisansı'na her koşulda uymak zorundasınız. \n"
+"\n"
+"Dosya(lar)ı bu istisnâ dâhilinde düzenlerseniz, bu istisnâyı dosya(lar)ın "
+"sizin sürümünüze de yansıtabilirsiniz, ancak bunu yapmak zorunda değilsiniz. "
+"Böyle bir şey yapmak istemiyorsanız, kendi sürümünüzdeki bu ifâdeyi siliniz. "
+"Yazılımınızdaki tüm kaynak dosyalarınızdan bu ifâdeyi siliyorsanız, buradaki "
+"ifâdeyi de siliniz."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Sunucu:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Torrent'leri Ekle (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "Kopya torrent(ler)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr "Aynı torrent'i iki kez ekleyemezsiniz. %d torrent zaten eklendi."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Geçersiz Dosya"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Lütfen dosyaları bekleyin..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "Bu magnet bağlantısı için dosyalar indirilemiyor"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Bir .torrent dosyası seçin"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Geçersiz URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "geçerli bir URL değil."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "İndiriliyor..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "İndirme Başarısız Oldu"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "İndirme başarısız:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_Hayır"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Evet"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Kapat"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Ayrıntılar:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Kimlik Doğrula"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "_Bağlan"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Kullanıcı Adı:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Parola:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Hesabı Düzenle"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Mevcut hesabı düzenle"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Uygula"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Yeni Hesap"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Yeni bir hesap oluştur"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Ekle"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Kimlik Doğrulama Seviyesi:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Parola Korumalı"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_TAMAM"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Diğer..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Bağlı Değil"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "Bağlantılar (Sınır)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "İndirme Hızı (Sınır)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Gönderme Hızı (Sınır)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr "Protokol Trafiği (Gön:İnd)"
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT Düğümleri"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Boş Disk Alanı"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Dış IP Adresi"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "yok"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Bağlantı Noktası Sorunu</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Gelen bağlantılar yok, bağlantı noktası yönlendirmeyi gözden geçirin"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "İndirme Hızı Sınırı"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "En fazla indirme hızını ayarla"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Gönderme Hızı Sınırı"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "En fazla gönderme hızını ayarla"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Gelen Bağlantılar"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "En fazla gelen bağlantı ayarla"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} %{percent}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Asla"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Evet"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Hayır"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Öncelik"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Tümü"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Durum"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "_Ayrıntılar"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "_Dosyalar"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Kişiler"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "_Seçenekler"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "İ_zleyiciler"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Bağlı Değil..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Sınırsız"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Aşağı"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Yukarı"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"Bir Deluge arka plan programı (deluged) zaten çalışıyor.\n"
+"Bağımsız kipi kullanmak için yerel arka plan programını durdurun ve Deluge'u "
+"yeniden başlatın."
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"Libtorrent yüklü olmadığından yalnızca İnce İstemci kipi kullanılabilir.\n"
+"Bağımsız kipini kullanmak için lütfen libtorrent paketini yükleyin."
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"Bilinmeyen İçe Aktarma Hatasından dolayı yalnızca İnce İstemci kipi "
+"kullanılabilir.\n"
+"Bağımsız kipi kullanmak amacıyla lütfen hata ayrıntıları için günlüklere "
+"bakın."
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "İnce İstemci kipinde devam edilsin mi?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Kullanıcı Arayüzü Kipini Değiştir"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Çevrimdışı"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Çevrimiçi"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Bağlı"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Durum"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Anamakine"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Sürüm"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "Arka Plan Programını _Başlat"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "Arka Plan Programını _Durdur"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "Bağlantıyı _Kes"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Arka plan programı başlatılamıyor!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+"Deluged paketin yüklendiğini ve daha fazla ayrıntı için günlükleri gözden "
+"geçirin"
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Uyumsuz İstemci"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+"Arka plan programının yerel olarak otomatik başlatılması etkinleştirilmedi. "
+"\"Bağlantı Yöneticisi\"nde \"Seçenekler\"e bakın."
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Bağlantı Başarısız"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Anamakineyi Düzenle"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Anamakine Eklenirken Hata Oldu"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "Anamakine Güncellenirken Hata Oldu"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Kullanıcı Adı"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Seviye"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Etkinleştirildi"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Eklenti"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Dikkat"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Bir dil seçmek zorundasınız"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+"Değişikliklerin etkili olması için deluge kullanıcı arayüzünü şimdi yeniden "
+"başlatmak zorundasınız."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "İnce istemci"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Bağımsız"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr "Deluge İstemci Kipine geçiliyor..."
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "%s kipini kullanmak için yeniden başlatmak istiyor musunuz?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Eklentiyi Seçin"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Eggs Eklentisi"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Sunucu Tarafı Hatası"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "Sunucuda bir hata meydana geldi"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Hesap Eklenirken Hata Oldu"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Kimlik doğrulama başarısız oldu"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "Hesap eklenirken bir hata meydana geldi"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Hesap Güncellenirken Hata Oldu"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "Hesap güncellenirken bir hata meydana geldi"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Hesabı Kaldır"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+"\"%(username)s\" kullanıcı adı olan hesabı kaldırmak istediğinize emin "
+"misiniz?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Hesap Kaldırılırken Hata Oldu"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Kimlik doğrulama başarısız oldu"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "Hesap kaldırılırken bir hata meydana geldi"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Durumlar"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "İzleyiciler"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Hiçbiri"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Yönetici"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Etiketler"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Etiket Yok"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Sahibi Yok"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>İstemci Sürümü</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrent Kuyrukta"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent Kuyrukta"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+"Torrent, diğer Deluge kullanıcıları arasında paylaşılır veya paylaşılmaz."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Seçilen torrent'ler kaldırılsın mı?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Toplam %s torrent seçildi"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Sınırsız Ayarla"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Açık"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Kapalı"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Etkisizleştir"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Etkinleştir..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "Kişi Gönderme Yuvaları"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "En fazla gönderme yuvasını ayarla"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Oranda Gönderimi Durdur"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Sahiplik Değişikliği Hatası"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "Sahipliği değiştirmeye çalışırken bir hata oldu."
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Adres"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "İstemci"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "GTK Seçenekleri"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+"Şu anda çalışan Deluge GTK örneğine bir veya daha fazla torrent dosyası, "
+"torrent URL'si veya magnet URI'si ekleyin"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Torrent Oluşturma"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Kuyruktaki Torrent'ler"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Kuyruktaki Torrent'lere Ekle"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Kaldır"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "_Temizle"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Bağlanıldığında torrent'leri otomatik olarak ekle"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Dosya"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "Torrent _Ekle"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "Torrent _Oluştur"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Çık ve Arka Plan Programını _Kapat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "Çı_k"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Düzenle"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Tercihler"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Bağlantı Yöneticisi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Görünüm"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Araç Ç_ubuğu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Kenar Çubuğu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "_Durum Çubuğu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "S_ekmeler"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Sütunlar"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Bul..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Kenar Çubuğu"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "_Sıfır Ulaşmaları Göster"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "İ_zleyicileri Göster"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "_Sahipleri Göster"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Yardım"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Anasayfa"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_SSS"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Sık Sorulan Sorular"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Topluluk"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_Hakkında"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Torrent ekle"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Torrent Ekle"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Torrent'i kaldır"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Torrent'i Kaldır"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"Torrentleri ada göre süzün.\n"
+"Bu, kenar çubuğundaki şu anki seçim için torrent'leri süzecek."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Süz"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Seçilen torrent'leri duraklat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Duraklat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Seçilen torrent'leri devam ettir"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Devam"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Kuyruktaki Torrent Yukarı"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Kuyruk Yukarı"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Kuyruktaki Torrent Aşağı"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Kuyruk Aşağı"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Tercihler"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Bağlantı Yöneticisi"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Kapat"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Süzgeç:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Aramayı temizle"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "Büyük/Küçük _Harf Eşleştir"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Zorlandı"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Etkisizleştirildi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Anlaşma"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "Tam Akış"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "İkisinden Biri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 Yetkili"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP Yetkili"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "Bağımsız kendi kendine yeten uygulama"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "İnce İstemci"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Bir Deluge arka plan programına bağlan (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Uygulama Kipi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Oturum hızını başlık çubuğunda göster"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Torrent eklenirken pencereye odaklan"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"Parçalar çubuğu,\n"
+"istemci ile arka plan programı arasındaki bant genişliği\n"
+"kullanımını artıracaktır (Bağımsız kipte uygulanmaz)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "Durum sekmesinde parçalar çubuğu göster"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Tamamlanma:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "İndirilen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Bekleyen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Eksik:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "_Geri Döndür"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Rengi varsayılana döndür"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Parça Renkleri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Ana Pencere"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Sistem tepsisi simgesini etkinleştir"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "Uygulama Göstergesi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Sistem Tepsisi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Kapatılınca tepsiye küçült"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Sistem tepsisinde başlat"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Sistem tepsisi parola koruması"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Sistem Tepsisi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Yeni yayımlar hakkında bilgilendir"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Güncellemeler"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Sistem Varsayılanı"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Dil</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Tamamlananları taşıma yeri:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ".torrent dosyalarının kopyalanma yeri:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Kaldırırken torrent dosyasının kopyasını da sil"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+"Torrent kaldırıldığında, oluşturulan torrent dosyasının kopyasını da sil"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Şuraya indir:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "İndirme Klasörleri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Torrent'in ilk ve son parçalarına öncelik ver"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Torrent'teki dosyaların ilk ve son parçalarına öncelik ver"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Sıralı indirme"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+"Etkinleştirildiğinde, parça seçici, önce en nadir yerine\n"
+"sırayla parçaları seçecektir.\n"
+"\n"
+"Sıralı indirmenin etkinleştirilmesi sürüdeki parça\n"
+"dağılımını olumsuz etkileyecektir. İdareli\n"
+"kullanılmalıdır."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Torrent'leri Duraklatılmış durumunda ekle"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Disk alanını önceden ayır"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Torrent dosyaları için disk alanını önceden ayır"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Torrent Ekleme Seçenekleri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Her zaman göster"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "İleti öğesini odaklanmış getir"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Torrent'leri Ekle İleti Öğesi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Saniyedeki Bağlantı Denemesi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Yarı Açık Bağlantılar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"İzin verilen en fazla bağlantı sayısı. Sınırsız için -1 olarak ayarlayın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Bağlantılar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Tüm torrent'ler için en fazla gönderme yuvası. Sınırsız için -1 olarak "
+"ayarlayın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Gönderme Yuvaları:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Tüm torrent'ler için en fazla indirme hızı. Sınırsız için -1 olarak "
+"ayarlayın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "İndirme Hızı:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Tüm torrent'ler için en fazla gönderme hızı. Sınırsız için -1 olarak "
+"ayarlayın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Gönderme Hızı:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Yerel ağda sınırları yoksay"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Hız sınırı IP ek yükü"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Eğer işaretlendiyse, tahmini TCP/IP ek yükü, toplam trafiğin sınırlarının "
+"aşılmasını önlemek için hız sınırlayıcılardan alınır."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Genel Bant Genişliği Sınırları"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+"Torrent başına en fazla gönderme yuvası. Sınırsız için -1 olarak ayarlayın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Torrent başına en fazla bağlantı sayısı. Sınırsız için -1 olarak ayarlayın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Torrent başına en fazla indirme hızı. Sınırsız için -1 olarak ayarlayın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Torrent başına en fazla gönderme hızı. Sınırsız için -1 olarak ayarlayın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Torrent Başına Bant Genişliği Sınırları"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "Kuyrukta en üste"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Yeni Torrent'ler"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Gönderim:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Toplam:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Yavaş torrent'leri yoksay"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+"Herhangi bir veri aktarmayan torrent'ler, indirme/gönderim etkin sayısına "
+"dahil edilmez."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Gönderilen torrent'leri tercih et"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr "İndirilen torrent'ler yerine gönderilen torrent'leri tercih edin."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Etkin Torrent'ler"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Paylaşma Oranı:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "Zaman Oranı:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Zaman (dk):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr "Gönderim Dönüşü"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Torrent'i Duraklat"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Ulaşılan Paylaşma Oranı"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"Gelen bittorrent bağlantılarını dinlemek için arayüzün IP adresi. "
+"Varsayılanı kullanmak istiyorsanız bunu boş bırakın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Gelen Adresi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Rastgele"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "49152 ila 65525 aralığında rastgele bağlantı noktaları kullanır"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Etkin Bağlantı Noktası:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Etkin Bağlantı Noktasını Dene"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Gelen Bağlantı Noktası"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"Giden BitTorrent bağlantıları için ağ arayüzü adı veya IP adresi. "
+"(Varsayılan olarak boş bırakın.)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Giden Arayüzü"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Buradan:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Buraya:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Giden Bağlantı Noktaları"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Giden:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Gelen:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Seviye:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Şifreleme"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Evrensel Tak ve Çalıştır"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT Bağlantı Noktası Eşleme Protokolü"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Kişi Değişimi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+"İstemciler arasında kişilerin değişimini yapar. (Etkisizleştirmek yeniden "
+"başlatma gerektirir)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Yerel Hizmet Keşfi, ağınızdaki yerel kişileri bulur."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+"Dağıtılmış adresleme tablosu etkin bağlantıların miktarını iyileştirebilir."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Kişi TOS Baytı:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Ağ İlaveleri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Anamakine Adı:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Bağlantı Noktası:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "Vekil Anamakine Adları"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+"Yerel DNS hizmetini kullanmak yerine anamakine adları\n"
+"vekil sunucu aracılığıyla çözülmeye çalışılmalıdır."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr "Vekil Sunucu Kişileri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr "Vekil sunucu kişisi ve web gönderim bağlantıları."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "Vekil Sunucu İzleyicileri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Vekil Sunucu Kullanımına Zorla"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "İstemci Kimliğini Gizle"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+"İstemci kimliğini gizlemeye çalışın ve yalnızca gelen bağlantılar için vekil "
+"sunucu kullanın."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Vekil Sunucuya Zorla"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Önbellek Boyutu (16 KiB'lık bloklar):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Son önbelleklenen yazma işleminden yazma önbelleğindeki bir parçaya, diskin "
+"zorla boşaltılmasına kadar geçen saniye sayısı. Varsayılan 60 saniyedir."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Önbellek Süresi Sonu (saniye):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Bu oturum başladığından bu yana diske yazılan toplam 16 KiB'lık blokların "
+"sayısı."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Yazılan Bloklar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Bu oturum başladığından bu yana gerçekleştirilen toplam yazma işlemlerinin "
+"sayısı."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Yazmalar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"(blocks_written - writes) / blocks_written oranı, toplam yazma işlemi başına "
+"kaydedilen yazma işlemlerinin sayısını, yani yazma önbelleği için bir çeşit "
+"önbellek ulaşma oranını temsil eder."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Yazma Önbelleğinin Ulaştığı Oran:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Yazma"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Bittorrent motorundan (kişilerden) istenen, diskten veya önbellekten sunulan "
+"blokların sayısı."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Okunan Bloklar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Önbellekten sunulan blokların sayısı."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Okunan Blokların Ulaştığı Oran:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Okuma önbelleği için önbelleğin ulaştığı oran."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Okuma Önbelleğinin Ulaştığı Oran:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Bu oturum başladığından bu yana gerçekleştirilen toplam okuma işlemlerinin "
+"sayısı."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Okumalar:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Okuma"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Şu anda disk önbelleğinde bulunan 16 KiB'lık blokların sayısı. Bu, hem okuma "
+"hem de yazma önbelleğini içerir."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Önbellek Boyutu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Okuma Önbelleği Boyutu:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Yenile"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Python sürümünüzü, PyGTK sürümünüzü, işletim sisteminizi ve işlemci "
+"türlerinizi bize göndererek Deluge'u geliştirmemize yardımcı olun. "
+"Kesinlikle başka bilgi gönderilmez."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Evet, lütfen isimsiz istatistikler gönder"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Sistem Bilgileri"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Konum:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Eğer Deluge bu konumda veritabanı dosyasını bulamazsa, kişilerin ülkelerini "
+"çözmek için DNS kullanımına geri dönecek."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "GeoIP Veritabanı"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Deluge ile İlişkilendir"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Magnet Bağlantıları"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Arka plan programı bağlantı noktası:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Bağlantı Noktası"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Uzak Bağlantılara izin ver"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Bağlantılar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Yeni yayımlar için web sitesini düzenli olarak denetle"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "_Sil"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Hesaplar"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Sürüm:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Hazırlayan:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Anasayfa:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Hazırlayan E-postası:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Bilgi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Yükle"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Daha Fazla Bul..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Seçilen torrent'(ler) kaldırılsın mı?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "İndirilen dosyaları dahil et"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(Bu kalıcıdır!)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Kişi Ekle"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "anamakine adı:b.noktası"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Özellikler"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr "En fazla aşağı açılır satır sayısı"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Genel</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Yol girişini göster"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Dosya seçiciyi göster"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Klasör adını göster"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Yol Seçici Türü"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Otomatik tamamlamayı etkinleştir"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Gizli dosyaları göster"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Yeni tuş ayarla"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+"Otomatik tamamlamayı tetikleyecek yeni tuş hızlandırıcılar ayarlamak için bu "
+"tuşa basın"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Otomatik tamamla"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Yolu kaydet"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Gizli dosyaları aç/kapat"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Varsayılan yol"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Kısayollar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Bir Dizin Seçin"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Kaydedilen yollar"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "sütun"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "İptal"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Aç"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Ekle"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Şu anki giriş değerini listeye ekle"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Düzenle"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Seçilen girişi düzenle"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Kaldır"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Seçilen girişi kaldır"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Seçilen girişi yukarı taşı"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Seçilen girişi aşağı taşı"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Varsayılan"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Ayarlanmış varsayılan yol yok"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Özellikler ileti öğesini aç"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Bilgi adreslemesi ekle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "Bilgi adreslemesinden"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Bilgi adreslemesi:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "İzleyiciler"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Anamakine Ekle"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "İndirme Klasörünü Taşı"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "Torrent'(ler) indirme klasörünü taşıyın."
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Hedef:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Yeni Yayım"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "Web Sitesine _Git"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Yeni Yayım Mevcut!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Mevcut Sürüm:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Sunucu Sürümü"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Şu Anki Sürüm:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Bu ileti öğesini bir daha gösterme"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "İndirme Hızı:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Gönderme Hızı:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "İndirilen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Gönderilen:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Gönderim:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Kişi:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Kullanılabilirlik:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Gönderim Sıralaması:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "TBS Zamanı:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Son Aktarım:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Etkin Süre:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "Tam Görülme:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Gönderim Süresi:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Parça:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Ad:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "İndirme Klasörü:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Eklenme:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Toplam Boyut:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Toplam Dosya:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Adresleme:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Oluşturan:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Açıklamalar:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Sahibi:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Tamamlananı taşı:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Şu oranda gönderimi durdur:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Oranda kaldır"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Bant Genişliği Sınırları"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Şu Anki İzleyici:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Toplam İzleyici:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "İzleyici Durumu:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Sonraki Duyuru:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Özel Torrent:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "İzleyicileri _Düzenle"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "En Üst"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "En Alt"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Torrent'leri Ekle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Bilgi_adreslemesi"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "Tamamlanma Klasörünü Taşı"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "_Duraklatılmış Durumda Ekle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "İlk/Son Parçalara Öncelik Ver"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Dosya Adreslemesi Denetimini Atla"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Disk Alanını Önceden Ayır"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Torrent dosyaları için disk alanını önceden ayır"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "En fazla torrent indirme hızı"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "En fazla torrent gönderme hızı"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "En fazla torrent bağlantısı"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr "En fazla torrent gönderme yuvası"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Tümüne Uygula"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Varsayılana Döndür"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Deluge'yi Göster"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "Oturumu _Duraklat"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "Oturumu Devam _Ettir"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "İ_ndirme Hızı Sınırı"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Gönderme Hızı Sınırı"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Çık ve Arka Plan Programını Kapat"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "İzleyicileri Düzenle"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "_Yukarı"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "_Aşağı"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "Kişi _Ekle"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "IP'sine göre bir kişi ekle"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "İzleyiciyi Düzenle"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "İzleyici:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Uzak Yolu Girin"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Uzak Yol"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Yol:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Torrent Oluştur"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Kl_asör"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "_Uzak Yol"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Dosyalar"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Web Gönderimleri"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Parça Boyutu:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Özel İşaret Ayarla"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Bu torrent'i oturuma ekle"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Seçenekler"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ".torrent'i farklı kaydet"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "İndir_me Klasörünü Aç"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "_Duraklat"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "_Devam"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Seçilen torrent'leri devam ettir."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "S_eçenekler"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Kuyruk"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "İzleyiciyi _Güncelle"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Torrent'i Kaldır"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Yeniden Denetime _Zorla"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "İndirme Klasörünü _Taşı"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "etiket"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Tümünü _Seç"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Tümünü _Duraklat"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Tü_müne Devam"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Bağlantı Sınırı"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Gönderme _Yuvası Sınırı"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "_Oranda gönderimi durdur"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "_Otomatik Yönetilen"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr "_Süper Gönderim"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "Sahipliği _Değiştir"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "İzleyici Ekle"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "İzleyicileri Ekle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "URL Ekle"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "URL'den"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Deluge Arka Plan Programları"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Seçilen arka plan programına otomatik bağlan"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "Localhost arka plan programını otomatik başlat (gerekirse)"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Bu ileti öğesini gizle"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Başlangıç Seçenekleri"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "Dosya _Aç"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "Klasörü _Göster"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Tümünü _Genişlet"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "_Atla"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Düşük"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Normal"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_Yüksek"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Deluge Takımı"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+"Deluge, hafiftir, Özgür Yazılımdır, platformlar arası bir BitTorrent "
+"istemcisidir."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+"Deluge, Protokol Şifreleme, DHT, Yerel Kişi Bulma (LSD), Kişi Değişimi "
+"(PEX), UPnP, NAT-PMP, Vekil sunucu desteği, Web gönderimleri, genel ve "
+"torrent başına hız sınırları gibi BitTorrent istemcileri için ortak "
+"özellikleri içerir. Deluge, libtorrent kütüphanesini yoğun bir şekilde "
+"kullandığından, sağlanan özelliklerin kapsamlı bir listesine sahiptir."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+"Deluge, hem normal bir bağımsız masaüstü uygulaması hem de bir istemci-"
+"sunucusu olarak çalışmak üzere tasarlanmıştır. İnce istemci kipinde bir "
+"Deluge arka plan programı, tüm BitTorrent etkinliğini yönetir ve başka "
+"herhangi bir platformdan uzaktan bağlanan kullanıcı arayüzleri ile başında "
+"kimse olmayan makinelerde çalışabilir."
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent İstemcisi"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent İstemcisi"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Dosyaları BitTorrent üzerinden indirin ve paylaşın"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Konsol Seçenekleri"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+"Bu arka plan programı bağlantı seçenekleri komutlar için veya konsol "
+"kullanıcı arayüzü otomatik bağlantısı etkinleştirilmişse kullanılacaktır."
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+"Bağlanılacak Deluge arka plan programı IP adresi (varsayılan 127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+"Bağlanılacak Deluge arka plan programı bağlantı noktası (varsayılan 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "Bağlanırken kullanılacak Deluge arka plan programı kullanıcı adı"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "Bağlanırken kullanılacak Deluge arka plan programı parolası"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Konsol Komutları"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Açıklama"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "Aşağıdaki konsol komutları kullanılabilir:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Komut"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr "`%s` kod adı"
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Kullanım: manage <torrent-kimliği> [--set <anahtar> <değer>] [<anahtar> "
+"[<anahtar>...] ]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr "torrent kimlikleri ve torrent adlarıyla eşleşen bir ifade"
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "bu anahtar için değer ayarlayın"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Ayarlanacak değer"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "boşlukla ayrılmış bir veya daha fazla anahtar"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Aynı zamanda torrent verilerini de kaldırır"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "Eşleşen torrent'leri kaldırmadan listeleyin."
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "Bir veya daha fazla torrent kimliği"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr "Listelenen torrent'leri kaldırmak için -c ile onaylayın (Sayı: %d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr "Kullanım: resume [ * | <torrent-kimliği> [<torrent-kimliği> ...] ]"
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+"Bir veya daha fazla torrent kimliği. Tüm torrent'leri devam ettirmek için "
+"\"*\" kullanın"
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+"Bir veya daha fazla torrent kimliği. Tüm torrent'leri duraklatmak için \"*\" "
+"kullanın"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Torrent için indirme klasörü"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Tamamlanan torrent'i bu klasöre taşı"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "Bir veya daha fazla torrent dosyası, URL veya magnet URI'si"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Mevcut eklentileri listeler"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Etkinleştirilmiş eklentileri gösterir"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Bir eklentiyi etkinleştirir"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Bir eklentiyi etkisizleştirir"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "Mevcut eklentilerin listesini yeniden yükle"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Bir .egg dosyasından bir eklenti yükle"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+"Gönderme/İndirme oranları için ham değerler (KiB/s soneki olmadan)(kendi "
+"ayrıştırmalarını yapmak isteyen komut dosyaları için kullanışlıdır)"
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Torrent durumunu gösterme (Komut hızını iyileştirir)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+"Kullanım: connect <anamakine[:b.noktası]> [<kullanıcıadı>] [<parola>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "Arka plan programı anamakinesi ve bağlantı noktası"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Parola"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "Torrent'lerin taşınacağı yol"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "Yeni durum"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "Bir veya daha fazla komut"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Kullanım: config [--set <anahtar> <değer>] [<anahtar> [<anahtar>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Torrent başına daha fazla bilgi göster."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "Dosyalar ve kişiler dahil daha ayrıntılı bilgileri göster."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr "STATE durumuna sahip torrent'leri göster: %s."
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "--sort ile aynı, ancak öğeler ters sıralıdır."
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+"Bir veya daha fazla torrent kimliği. Hiçbiri verilmezse, tümünü listeler"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Anamakine Seçin"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Çık"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Anamakineyi Sil"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+"Anamakine Ekle (Gezinmek için Yukarı ve Aşağı oklar, iptal etmek için Esc)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "Anamakine eklenirken hata oldu"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Sütunlar"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Genişlik"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Genel seçenekler"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "İndirme tamamlandığında sistem zilini çaldır"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr "Sıralama düzenine bakılmaksızın tamamlanmamış torrent'leri listele"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr "Kuyruktaki torrent'ler taşınırken seçimi taşı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Dil"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Komut Satırı Kipi"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "Kopya girişi geçmişte saklama"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr "Komut satırı geçmişini komut satırı kipinde depola ve yükle"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr "Üçüncü sekme, komut satırı kipinde kalan tüm torrent'leri listeler"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr "Sekmeye basma başına torrent"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Klasörler"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Şuraya İndir"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Tamamlananı taşıma yeri"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ".torrent dosyalarının kopyalanma yeri"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "Duraklatılmış Ekle"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Disk alanını önceden ayır"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Gelen Bağlantı Noktaları"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Buradan"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "Buraya"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Rastgele Bağlantı Noktaları Kullan"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Gelen Arayüzü"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr "Dinlenecek arayüzün IP adresi (varsayılan için boş bırakın):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"Giden BitTorrent bağlantıları için ağ arayüzü adı veya IP adresi. "
+"(Varsayılan için boş bırakın.):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Gelen"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Giden"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Genel Bant Genişliği Kullanımı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "En Fazla Bağlantı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "En Fazla Gönderme Yuvası"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "En Fazla İndirme Hızı (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "En Fazla Gönderme Hızı (KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "En Fazla Yarı Açık Bağlantı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Saniye Başına En fazla Bağlantı Denemesi"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Hız Sınırı IP Ek Yükü"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Torrent Başına Bant Genişliği Kullanımı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Evet, lütfen isimsiz istatistikler gönder."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Arka Plan Programı B.Noktası"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Uzak bağlantılara izin ver"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Toplam"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Paylaşma Oranı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Zaman Oranı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Zaman (dk)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr "Torrent'i kaldır (İşaretlenmemiş, torrent'i duraklatır)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Vekil Sunucu Ayarları"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Tür"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Anamakine Adı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr "Vekil Sunucu Türü Yardımı"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Önbellek Boyutu (16 KiB'lık bloklar)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr "Önbellek Süresi Sonu (saniye)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Yazılan Bloklar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "Yazamalar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr "Okuma Önbelleğinin Ulaştığı Oran"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Okunan Bloklar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr "Okunan Blokların Ulaştığı Oran"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr "Okumalar"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr "Okuma Önbelleğinin Ulaştığı Oran"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr "Önbellek Boyutu"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr "Okuma Önbelleği Boyutu"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Uygula"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "TAMAM"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Dil Seç"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr "IP {!white,blue!}%s{!status!}"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "\"%s\" IP adresi hatalı bir biçimde"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP Listesi (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Metni (Sıkıştırılmış)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Metni (Sıkıştırılmamış)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr "Engellenen IP Aralıkları / Beyaz Listedeki IP Aralıkları"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Engelleme Listesi"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Hatalı IP adresi"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Geçersiz öncü"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Geçersiz sihirli kod"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Geçersiz sürüm"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Gün"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Yeni listeyi her şu zamanda denetle:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Engelleme listesini başlangıçta içe aktar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Ayarlar</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"Gerekirse engelleme listesi dosyasını indirin ve dosyayı içe aktarın."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "İndirmeyi Denetle ve İçe Aktar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Yeni bir engelleme listesi dosyası indirin ve içe aktarın."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "İndirmeye Zorla ve İçe Aktar"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Engelleme listesi güncel"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Seçenekler</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Tür:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Tarih:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Dosya Boyutu:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Bilgi</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>Beyaz Liste</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent Tamamlandı"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent Eklendi"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent Kaldırıldı"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Çalıştır"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Olay"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Komut Ekle</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Komutlar</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Uyumsuz Seçenek"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+"\"İzleme Klasörü\" dizini ile \".torrent dosyalarının kopyalanma yeri\" "
+"dizini aynı olamaz!"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Otomatik Ekle"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Geçiş yapmak için çift tıklayın"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Düzenlemek için çift tıklayın"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Yol"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "İzleme klasörü mevcut değil."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Yol mevcut değil."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "İzleme Klasörü Özellikleri"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Eğer bu dizine bir .torrent dosyası eklenirse,\n"
+"oturuma eklenecektir."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Bir Klasör Seçin"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Bu izleme klasörünü etkinleştir"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>İzleme Klasörü</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Eklendikten sonra .torrent dosyasını sil"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Torrent oturuma eklendikten sonra,\n"
+".torrent dosyası silinecektir."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Şu eklendikten sonra uzantıyı ilave et:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"Torrent oturuma eklendikten sonra,\n"
+".torrent dosyasına bir uzantı eklenecek\n"
+"ve aynı dizinde kalacaktır."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".eklendi"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"Torrent oturuma eklendikten sonra,\n"
+".torrent dosyası seçilen dizine kopyalanacak ve\n"
+"izleme klasöründen silinecektir."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+"Torrent oturumdan silindikten sonra, buna eklemek\n"
+"için kullanılan .torrent dosyasını da silin."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent Dosyası Eylemi</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "İndirme klasörünü ayarla"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "Bu klasör, torrent verilerinin indirildiği yer olacaktır."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>İndirme Klasörü</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "Tamamlananı taşıma klasörünü ayarla"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Tamamlananları Taşı</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Etiket: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Etiket</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Ana"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "Burada seçilen kullanıcı torrent'in sahibi olacaktır."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Sahibi</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "En Fazla Gönderme Hızı:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "En Fazla Bağlantı:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "En Fazla Gönderme Yuvası:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "En Fazla İndirme Hızı:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Bant Genişliği</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Otomatik Yönetilen:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Duraklatılmış Ekle:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Şurada kuyruğa al:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Kuyruk</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>İzleme Klasörleri:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "dakika"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 dakika"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 saniye"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "saniye"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "İstatistikler"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Çözünürlük"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Gönderimler/Kişiler"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "İndirme rengi:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Gönderme rengi:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Bağlantılar Grafiği</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Bant Genişliği Grafiği</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "DHT düğümleri:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Önbelleklenen DHT düğümleri:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "DHT torrent'leri:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Gönderimler / Kişiler</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Grafik Renkleri</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Web Arayüzü"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge web arayüzü yüklü değil, lütfen arayüzü yükleyin\n"
+"ve tekrar deneyin"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Web arayüzünü etkinleştir"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "SSL'yi etkinleştir"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Dinlenen bağlantı noktası:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Geçersiz etiket, geçerli karakterler:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Boş Etiket"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Etiket zaten mevcut"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Bilinmeyen Etiket"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Bilinmeyen Torrent"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "Etiket _Seçenekleri"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "Etiketi _Kaldır"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "Etiket _Ekle"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Etiket Seçenekleri"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Etiket"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Etiket Seçenekleri</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Torrent başına en fazla ayarları uygula:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "En Fazla"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Kuyruk ayarlarını uygula:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Klasör ayarlarını uygula:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(izleyici başına 1 satır)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Otomatik olarak etiketi uygula:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Etiket Ekle"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Etiket Ekle</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Etiket eklemek, değiştirmek ve kaldırmak için kenar çubuğunu "
+"kullanın.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Etiketler</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Bildirim İkazı gösterildi"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Açılır pencere bildirimi etkin değil."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "libnotify yüklü değil"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr "Açılır pencere bildirimi başarısız"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Açılır pencere bildirimi gösterildi"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Ses bildirimi etkin değil"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame yüklü değil"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Ses bildirimi başarısız oldu %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Ses bildirimi Başarılı"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent Tamamlandı"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"%(num_files)i dosya içeren \"%(name)s\" torrent'inin indirilmesi tamamlandı."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Bildirimler"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Ses Dosyasını Seçin"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Bildirim e-postası gönderilirken bir hata oldu: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "Sunucu, HELO selamlamasına düzgün bir şekilde yanıt vermedi: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "Sunucu, kullanıcı adı/parola birleşimini reddetti: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Bildirim e-postası gönderildi."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "\"%(name)s\" Torrent'i Tamamlandı"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Bu e-posta, Deluge'nin %(num_files)i dosya içeren \"%(name)s\" dosyasını "
+"indirmeyi tamamladığını bildirmek için gönderilmiştir.\n"
+"Bu bildirimleri almayı durdurmak için Deluge'nin tercihlerinde e-posta "
+"bildirimini kapatmanız yeterlidir.\n"
+"\n"
+"Teşekkür ederiz,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Tepsi simgesinin yanıp sönmesi etkinleştirildi"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Açılır pencereler etkinleştirildi"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Sesler etkinleştirildi"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Kullanıcı Arayüzü Bildirimleri</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Alıcılar</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Sunucu TLS/SSL gerektiriyor"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>E-posta Bildirimleri</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Bu yapılandırma, tüm bu olaylar için gerçekten bildirimleri alacağınız "
+"anlamına gelmez."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Abonelikler"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Ses Özelleştirme"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Çıkarıcı"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Şuraya çıkar:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Torrent adı alt klasörü oluştur"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Bu seçenek, seçilen çıkarma klasöründe torrent adını kullanarak bir alt "
+"klasör oluşturacak ve çıkarılan dosyaları oraya koyacaktır."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Zamanlayıcı"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr "<b>Zamanlama</b>"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "İndirme Sınırı:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Gönderme Sınırı:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Etkin Torrent'ler:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Etkin İndirilen:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Etkin Gönderim:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Yavaş Ayarlar</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Dosya Tarayıcısı"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Geri"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "İlet"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "Giriş"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Oluştur"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Yardım"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Oturumu Kapat"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Kaydet"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "Deluge Hakkında"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Telif Hakkı 2007-2018 Deluge Takımı"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Verilerle Birlikte Kaldır"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Bağlantı Ekle"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Anamakine"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "Anamakine eklenemiyor: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Taşı"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Gözat"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Bağlantıyı Düzenle"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "Anamakine düzenlenemiyor"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Oturum Aç"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Oturum Açma Başarısız Oldu"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Yanlış parola girdiniz"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Ortak"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Son Aktarım"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "Karışık"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "En Fazla Bağlantıyı Ayarla"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "İndirme Hızı"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "En Fazla İndirme Hızını Ayarla"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Gönderme Hızı"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "En Fazla Gönderme Hızını Ayarla"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "İndirme/Gönderme Trafik Protokolü"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "İndirme klasöründe boş alan"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "Bağlan"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Arka Plan Programını Durdur"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Bağlantıyı Kes"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Arka Plan Programını Başlat"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Varsayılan Parolayı Değiştir"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Varsayılan parolayı değiştirmenizi öneririz.<br><br>Şimdi değiştirmek ister "
+"misiniz?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "İzleyici Anamakinesi"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Süzgeçler"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "Bağlantı yeniden kuruldu"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "Bağlantı Koptu"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "Web sunucusuyla olan bağlantı koptu!"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "Web sunucusuyla olan bağlantı koptu"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "İnd. Hız Sınırı"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Gön. Hız Sınırı"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Bağlantı Sınırı"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Gönderme Yuvası Sınırı"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "İzleyiciyi Güncelle"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Yeniden Denetime Zorla"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Tümünü Genişlet"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Ayrıntılar"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Açıklama:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Durum:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Tamamlananı Taşı:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Genel"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Özel"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Yükleniyor"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Doğru"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Yeni yayımlardan haberdar olun"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Python sürümünüzü, PyGTK sürümünüzü, işletim sisteminizi ve işlemci "
+"türlerinizi bize göndererek Deluge'yi iyileştirmemize yardımcı olun. "
+"Kesinlikle başka bilgi gönderilmez."
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Torrent'i duraklat"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Eklenti Yükle"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Yükle"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr "Bir egg seçin"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr "Egg Eklentisi"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Gözat..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Eklentiniz gönderiliyor..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "En Fazla Bağlantı:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "En Fazla İndirme Hızı (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "En Fazla Gönderme Hızı (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "En Fazla Yarı Açık Bağlantı:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Saniye Başına En Fazla Bağlantı Denemesi:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "En Fazla Gönderme Yuvası:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Önbellek Boyutu (16 KiB'lık Bloklar):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Vekil Sunucu Kullanımını Zorla"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "Daha Fazla Bul"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Rastgele Bağlantı Noktası Kullan"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Hizmet Türü"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr "Sıfır torrent olan süzgeçleri göster"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr "Aynı anda birden fazla süzgeç kullanımına izin ver"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr "Web Arayüzü Parolası"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "Eski:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Yeni:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Onayla:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Sunucu"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Oturum Zaman Aşımı:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr "SSL'yi etkinleştir (Deluge yapılandırma klasörüne göre yollar)"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Özel Anahtar:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Sertifika:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr "Web Arayüzü Dili Değiştirildi"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr "Yeni dili kullanmak için şimdi sayfayı yenilemek istiyor musunuz?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Yenile"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "Geçersiz Parola"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Parolalarınız eşleşmiyor!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "Eski parolanız yanlış!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "Değiştirme İşlemi Başarılı"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "Parolanız başarılı olarak değiştirildi!"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "URL'den ekle"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Tanımlama Bilgileri"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Torrent'i indirme başarısız"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Dosya"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Bilgi adreslemesi"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Torrent'iniz gönderiliyor..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Torrent'i gönderme başarısız"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Geçerli bir torrent değil"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "Tamamlanan Klasörünü Taşı"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "En Fazla İndirme Hızı"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "En Fazla Gönderme Hızı"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Duraklatıldı Durumunda Ekle"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr "Süper Gönderim"
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "İndir"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "TBS:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "Eklenme Tarihi:"
diff --git a/deluge/i18n/uk.po b/deluge/i18n/uk.po
new file mode 100644
index 0000000..2559bbf
--- /dev/null
+++ b/deluge/i18n/uk.po
@@ -0,0 +1,6352 @@
+# Ukrainian translation for deluge
+# Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2021-12-23 09:01+0000\n"
+"Last-Translator: ma$terok <Unknown>\n"
+"Language-Team: Ukrainian <uk@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "байт"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "КіБ"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "МіБ"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "ГіБ"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "ТіБ"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "Г"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "Т"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/c"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "КіБ/с"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "М/с"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "МіБ/с"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "Г/с"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "ГіБ/с"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "Т/с"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "ТіБ/с"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "Загальні параметри"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "Роздрукувати це довідкове повідомлення"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "Вивести дані щодо версії програми"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "Встановити шлях теки налаштувань"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "Вивід у вказаний файл логів замість stdout"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+"Встановити рівень журналювання (ні, помилки, попередження, інформація, "
+"зневадження)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+"Дозволити чергування файлу логів, з опційним щонайбільшим розміром файлу "
+"логів, усталено: %(const)s (Кількість чергування файлів логів 5)"
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "Обмежити вивід логів (Те саме що й `--loglevel none`)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+"Профіль %(prog)s з cProfile. Вивід у stdout якщо не вказано ім'я файлу"
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "Параметри керування процесами"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "Pid-файл для зберігання ID процесу"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr "Не демонізуватися (виконувати fork) для даного процесу"
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "Перемикнутися на цього користувача при запуску (потребує права root)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "Перемикнутися на цю групу при запуску (потребує права root)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "Параметри тлової служби"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "IP адреса, прослуховувана для з'єднань з UI"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "Порт, прослуховуваний для з'єднань з UI"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "IP адреса, прослуховувана для з'єднань BitTorrent"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+"Ім'я мережевого інтерфейсу або адреса IP для вихідних з'єднань BitTorrent"
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+"Параметри конфігурації, які не будуть змінені при віддаленому виклику "
+"`set_config`"
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Усі"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Активна"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "Розташування"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Перевірка"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Звантаження"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Роздача"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Призупинено"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "У черзі"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Помилка"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Назва"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Поступ"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "Стан"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Розмір"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Завантажено"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Віддано"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "Залишилося"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Рейтинг"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Швидкість завантаження"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Швидкість віддачі"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Обмеження швидкости завантаження"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Обмеження швидкости віддачі"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "Щонайбільше число з'єднань"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "Щонайбільше слотів на вивантаження"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Піри"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "Сіди"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Доступність"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "Сідів:Пірів"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Додано"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Трекер"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "Тека завантаження"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "Час роздавання"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "Час активности"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "Остання активність"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "Час закінчення"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "Побачений повністю"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "Завершено"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "ETA"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "Спільне"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Пріоритетний Перший/Останній"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "Послідовне завантаження"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Автоматичний режим"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "Зупинити при рейтингу"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "Рейтинг зупинки"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "Вилучити при рейтингу"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "Перемістити після завершення"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "Шлях для завершених"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr "Шляхь для переміщення завершених"
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "Власник"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "Частини"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "Ранг сида"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "Режим надсида"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Увага"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Запит вірний"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Запит надіслано"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Зовнішній вигляд"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Завантаження"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Смуга пропускання"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Черга"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Мережа"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Проксі-сервер"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Кеш"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Інше"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Тлова служба"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Втулки"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "Пропустити"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "Низький"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "Звичайний"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "Високий"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+"Deluge не може знайти виконуваний файл `deluged`, перевірте, що пакунок "
+"`deluged` встановлено або додайте його у PATH"
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Афганістан"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Аландські острови"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Албанія"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Алжір"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "Американські Самоа"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Андора"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Ангола"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Ангілья"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Антарктида"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Антиґуа і Барбуда"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Арґентина"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Вірменія"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Аруба"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Австралія"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Австрія"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Азербайджан"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Багамські острови"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Бахрейн"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Банґладеш"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Барбадос"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Білорусь"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Бельґія"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Беліз"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Бенін"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Бермудські Острови"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Болівія"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "Боснія і Герцеговина"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "Ботсвана"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "Острів Буве"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "Бразилія"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "Британська Територія в Індійському Океані"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "Бруней Даруссалам"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "Болгарія"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "Буркіна-Фасо"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "Бурунді"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "Камбоджа"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "Камерун"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "Канада"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "Кабо-Верде"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "Кайманові Острови"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "Центральна африканська республіка"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "Чад"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "Чилі"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "Китай"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "Острів Різдва"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "Кокосові (Кілінг) острови"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "Колумбія"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "Коморські Острови"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "Конґо"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "Конґо, демократична республіка"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "Острови Кука"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "Коста-Ріка"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "Кот-д'Івуар"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "Хорватія"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "Куба"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "Кіпр"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "Чехія"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "Данія"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "Джибуті"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "Домініка"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "Домініканська республіка"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "Еквадор"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "Єгипет"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "Сальвадор"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "Екваторіальна Гвінея"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "Еритрея"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "Естонія"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "Ефіопія"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "Фолклендські (Мальвінські) острови"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "Фарерські Острови"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "Фіджі"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "Фінляндія"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "Франція"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "Французька Ґвіана"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "Французька Полінезія"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "Французькі Південні Території"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "Ґабон"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "Ґамбія"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "Грузія"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "Німеччина"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "Гана"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "Ґібралтар"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "Греція"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "Ґренландія"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "Ґренада"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "Ґваделупа"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "Ґуам"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "Ґватемала"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "Острів Ґернсі"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "Ґвінея"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "Ґвінея-Бісау"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "Ґаяна"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "Гаїті"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "Острів Херд і острови Макдональд"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "Святий Престол (Ватикан, Місто-Держава)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "Гондурас"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "Гонконг"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "Угорщина"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "Ісландія"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "Індія"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "Індонезія"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "Іран"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "Ірак"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "Ірландія"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "Острів Мен"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "Ізраїль"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "Італія"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "Ямайка"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "Японія"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "Джерсі"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "Йорданія"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "Казахстан"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "Кенія"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "Кірибаті"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "Північна Корея"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "Південна Корея"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "Кувейт"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "Киргизстан"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "Лаоська Народно-Демократична Республіка"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "Латвія"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "Ліван"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "Лесото"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "Ліберія"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "Лівія"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "Ліхтенштейн"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "Литва"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "Люксембурґ"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "Макао"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "Македонія, Колишня Югославська Республіка"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "Мадаґаскар"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "Малаві"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "Малайзія"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "Мальдіви"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "Малі"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "Мальта"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "Маршальські острови"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "Мартиніка"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "Мавританія"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "Маврикій"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "Майотта"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "Мексика"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "Мікронезія, Федеративні Штати"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "Молдова"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "Монако"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "Монголія"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "Чорногорія"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "Монтсерат"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "Марокко"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "Мозамбік"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "М’янма"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "Намібія"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "Науру"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "Непал"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "Нідерланди"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "Нідерландські Антильські Острови"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "Нова Каледонія"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "Нова Зеляндія"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "Нікараґуа"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "Ніґер"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "Ніґерія"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "Ніуе"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "Острів Норфолк"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "Північні Маріанські Острови"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "Норвегія"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "Оман"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "Пакистан"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "Палау"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "Палестинські Території"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "Панама"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "Папуа Нова Ґвінея"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "Параґвай"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "Перу"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "Філіпіни"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "Піткерн"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "Польща"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "Портуґалія"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "Пуерто-Ріко"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "Катар"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "Реюньйон"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "Румунія"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "Московія"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "Руанда"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "Сен-Бартельмі"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "Острів Святої Гелени"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "Сент-Кітс і Невіс"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "Сент-Люсія"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "Сен-Мартен"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "Сен-П'єр і Мікелон"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "Сент-Вінсент і Ґренадини"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "Самоа"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "Сан Маріно"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "Сан-Томе і Принсіпі"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "Саудівська Аравія"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "Сенеґал"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "Сербія"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "Сейшельські Острови"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "Сієра Леоне (sl)"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "Сінґапур"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "Словаччина"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "Словенія"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "Соломонові Острови"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "Сомалі"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "Південна Африка"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "Південна Джорджія та Південні Сандвічеві Острови"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "Еспанія"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "Шрі Ланка"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "Судан"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "Сурінам"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "Острови Свальбард і Ян Маєн"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "Свазіленд"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "Швеція"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "Швейцарія"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "Сирійська Арабська Республіка"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "Тайвань"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "Таджикістан"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "Танзанія, Об’єднана Республіка"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "Таїланд"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "Східний Тімор"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "Тоґо"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "Острови Токелау"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "Тонґа"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "Тринідад та Тобаґо"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "Туніс"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "Туреччина"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "Туркменістан"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "Острови Теркс і Кайкос"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "Тувалу"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "Уґанда"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "Україна"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "Об’єднані Арабські Емірати"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "Велика Британія"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "США"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "Зовнішні малі острови США"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "Уруґвай"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "Узбекістан"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "Вануату"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "Венесуела"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "В'єтнам"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "Вірґінські острови (Британія)"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "Вірґінські острови (США)"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "Волліс і Футуна"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "Західна Сахара"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "Ємен"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "Замбія"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "Зімбабве"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "Параметри інтерфейсу"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+"Встановити користувацький інтерфейс для усталеного запуску, коли "
+"користувацького інтерфейсу не вказано"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+"Альтернативний інтерфейс для запуску з необов'язковими аргументами \n"
+" (стандартний інтерфейс: *)"
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Параметри вебсервера"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "IP адреса для прослуховування вебсервером"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Порт для прослуховування вебсервером"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr "Встановити базовий шлях, за яким працює користувацький інтерфейс"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "Вимагати використання SSL від вебсервера"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "Вимагати відімкнення SSL від вебсервера"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "Тлової служби не існує"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Тлова служба не запущена"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Назва файлу"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Рівень"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Оберiть файл"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "_Скасувати"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "_Відкрити"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Оберіть теку"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Зберегти .torrent файл"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "_Зберегти"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Файли торентів"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Усі файли"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Уведіть Ваш пароль щоб показати Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Уведіть Ваш пароль щоб вийти з Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "D: {download_rate} U: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "Змінити шлях"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "Вилучити шлях"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "_Застосувати до вибраного"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Авторські права команди Deluge %(year_start)s-%(year_end)s"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Програма спільного доступу до файлів\n"
+"з використанням протоколу BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Клієнт:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Поточні розробники:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Минулі розробники чи автори:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Ця програма є безкоштовним програмним забезпеченням; ви можете поширювати "
+"його та/або змінювати відповідно до умов Загальної публічної ліцензії GNU, "
+"опублікованої Фондом вільного програмного забезпечення; або версії 3 "
+"Ліцензії, або (на ваш вибір) будь якої пізнішої версії.\n"
+"\n"
+"Ця програма розповсюджується в надії, що вона буде корисною, але БЕЗ БУДЬ "
+"ЯКИХ ГАРАНТІЙ; навіть без прихованої гарантії КОМЕРЦІЙНОЇ ВИГОДИ чи "
+"ПРИДАТНОСТІ ДЛЯ КОНКРЕТНИХ ЦІЛЕЙ. Докладніше дивися у Загальнодоступній "
+"ліцензії GNU.\n"
+"\n"
+"Ви повинні були отримати копію Загальної публічної ліцензії GNU разом із "
+"цією програмою; якщо ні, дивися <http://www.gnu.org/licenses>.\n"
+"\n"
+"Крім того, як особливий виняток, власники авторських прав дають дозвіл "
+"пов'язувати код частин цієї програми з бібліотекою OpenSSL. Ви повинні "
+"дотримуватись Загальної загальнодоступної ліцензії GNU у всіх відношеннях до "
+"всього коду, що використовується, крім OpenSSL.\n"
+"\n"
+"Якщо ви змінюєте файл (и) з цим винятком, ви можете поширити цей виняток на "
+"свою версію файлу (ів), але ви не зобов’язані це робити. Якщо ви не хочете "
+"цього робити, видаліть цей виняток із своєї версії. Якщо ви видалите цей "
+"виняток із усіх вихідних файлів програми, також видаліть його тут."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Сервер:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Торент"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "Додати торенти (%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "Дублювати торент(и)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+"Ви не можете додати один і той же торент двічі. %d торенти вже додані."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Невірний файл"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "Будь ласка, дочекайтеся файлів..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "Не вдалося завантажити файли для цього магнет-посилання"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Оберіть .torrent файл"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "Невірне посилання"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "не коректна URL."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Завантаження..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Помилка завантаження"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Не вдалося завантажити:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "_Ні"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "_Так"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "_Закрити"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Докладно:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "Автентифікація"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "З’_єднати"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Ім'я користувача:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Пароль:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "Редагувати обліківку"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "Змінити наявний обліковий запис"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "_Застосувати"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "Нова обліківка"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "Створити новий обліковий запис"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "_Додати"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "Рівень автентифікації:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Захищено паролем"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "_Гаразд"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Інше..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Не з'єднано"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "З'єднання (ліміт)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "Швидкість завантаження (ліміт)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "Швидкість вивантаження (ліміт)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr "Трафік за протоколом (Завантажено:Віддано)"
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Вузли DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Вільне місце на диску"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "Зовнішня IP-адреса"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "н/д"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>Проблеми з портом</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "Відсутні вхідні з'єднання, перевірте переспрямування портів"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "Швидкість завантаження"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "Встановити обмеження щонайбільшої швидкости завантаження."
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "Швидкість розповсюдження"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "Встановити обмеження щонайбільшої швидкости розповсюдження."
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "Вхідні з’єднання"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "Встановити щонайбільшу кількість вхідних з'єднань"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent}%"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "Ніколи"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "Так"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "Ні"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Пріоритет"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "_Усі"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Стан"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "До_кладно"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Фай_ли"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "_Вузли"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "П_араметри"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "_Трекери"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Не з'єднано…"
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Не обмежено"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Нижче"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Вище"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"Демон Deluge (deluged) вже працює.\n"
+"Для використання автономного режиму, зупиніть сервіс та перезапустіть Deluge."
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"Доступний лише режим тонкого клієнта, бо libtorrent не встановлено.\n"
+"Для використання автономного режиму, будь ласка встановіть пакунок "
+"libtorrent."
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"Доступний лише режим тонкого клієнта з-за невідомої помилки імпорту (Import "
+"Error).\n"
+"Для використання автономного режиму, будь ласка виправте цю помилку "
+"(докладну інформацію про неї можна знайти у логах)."
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "Продовжити у режимі тонкого клієнта?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "Змінити режим користувацького інтерфейсу"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Поза мережею"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "У мережі"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Під’єднано"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Стан"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Хост"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Версія"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Стартувати Демона"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Зупинити тлову службу"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "_Від'єднати"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Не вдається заупустити тлову службу!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+"Перевірте чи встановлено пакунок deluged й логи для отримання додаткових "
+"відомостей"
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "Несумісний клієнт"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+"Автостарт локального сервісу недоступний. Подивіться \"Налаштування\" у "
+"\"Розпоряднику з'єднань\"."
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "Помилка з'єднання"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "Змінити вузол"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Помилка з додаванням Хосту"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "Помилка змінювання параметрів сервера"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "Ім'я користувача"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "Рівень"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Увімкнено"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Втулок"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "Увага"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "Вам потрібно вибрати мову"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+"Тепер вам потрібно перезапустити інтерфейс користувача, аби зміни було "
+"застосовано."
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "Тонкий клієнт"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "Автономний"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr "Перемикання клієнтського режиму Deluge..."
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "Перезапустити програму для використання режиму %s ?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Оберіть додаток"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Додаток Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "Помилка на стороні сервера"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "На сервері трапилася помилка"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "Помилка додавання облікового запису"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "Не вдалося пройти розпізнавання"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "Під час додавання облікового запису сталася помилка"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "Помилка оновлення обліківки"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "Під час оновлення облікового запису сталася помилка"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "Вилучити обліковий запис"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+"Ви впевнені, що бажаєте вилучити обліківку з іменем користувача "
+"\"%(username)s\"?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "Помилка вилучення облікового запису"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "Помилка автентифікації"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "Під час вилучення облікового запису сталася помилка"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Стани"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Трекери"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Немає"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "Адміністратор"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Позначки"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Позначка відсутня"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "Немає власника"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Версія клієнта</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Торентів у черзі"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Торент у черзі"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr "Торент спільний для інших користувачів Deluge або ні."
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "Вилучити обрані торенти?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "Усього обрано %s торентів"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Без обмежень"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Увімкн."
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Вимкн."
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "Вимкнути"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "Увімкнути..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "Слоти для одночасного вивантаження"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "Встановіть щонайбільшу кількість слотів для вивантаження"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "Зупинити сід при рейтингу"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "Помилка зміни власности"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "Під час спроби змінити право власности сталася помилка."
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Адреси"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Клієнт"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "Параметри GTK"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+"Додайте один або більше торент файл, посилання на торент або магнітні "
+"посилання для запущеного примірника Deluge GTK"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Створити торент"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Торенти у черзі"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "Додати торенти до черги"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "_Вилучити"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "_Очистити"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Автоматично додавати торенти при з'єднанні"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Файл"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Додати торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Створити торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Вийти & _Вимкнути тлову службу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "Ви_хід"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "З_міни"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "_Налаштування"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "_Розпорядник з'єднань"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Вигляд"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "_Панель знарядь"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "_Бічна панель"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Р_ядок стану"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "Вкладки"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Стовпчики"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "_Шукати ..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "_Бічна панель"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Показувати нульові елементи"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Показувати трекери"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "Показати _Власників"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "_Довідка"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "_Домашня сторінка"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_ЧаПи"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Питання що задаються найчастіше"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Спільнота"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "_Про програму"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Додати торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Додати торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Вилучити торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Вилучити торент"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"Відфільтрувати торенти за ім'ям.\n"
+"Це відфільтрує торенти, обрані на бічній панелі."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "Фільтр"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Призупинити вибрані торенти"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Призупинити"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Відновити обрані торенти"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Відновити"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Посунути торент вище по черзі"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Перемістити вгору"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Посунути торент нижче по черзі"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Пересунути донизу"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Налаштування"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Розпорядник з’єднань"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "Закрити"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "Фільтр:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "Очистити пошук"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "Збігається _регістр"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "Примусово"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "Вимкнено"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "Рукостискання"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "Повний потік"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "Обидва"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 автентифікація"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP автентифікація"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "Автономний застосунок"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "Тонкий клієнт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "Під'єднатися до сервісу Deluge (deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "Режим програми"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Показувати швидкість у рядку заголовку"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Виводити вікно додавання торента на передній план"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"Рядок стану частин збільшить пропускну здатність між клієнтом та сервісом "
+"(не застосовно у автономному режимі)."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "Показати рядок стану частин у панелі стану"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "Завершено:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "Завантаження:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "Очікування:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "Пропущено:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "Від_новити"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "Повернути типові кольори"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "Кольри частин"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "Головне вікно"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Увімкнути піктограму у системній таці"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr "Індикатор застосунку"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "Системна таця"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Згорнути до системної таці при закритті"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Згортати у тацю при запуску"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Захистити паролем системну тацю"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "Системна таця"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "Повідомляти про оновлення"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "Оновленння"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "Типові налаштування"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>Мова</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Перемістити завантажені до:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Копіювати торент-файл до:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Вилучити копію торент-файлу"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Вилучити копію торент-файлу, створеного, коли торент був вилучений"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Завантажити до:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "Теки завантаження"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Робити пріоритетними перші і останні частини торента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Робити пріоритетними перші і останні частини файлів у торенті"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "Послідовне завантаження"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+"Коли увімкнено, збирач буде збирати частини послідовно замість рідких "
+"перших.\n"
+"\n"
+"Увімкнене послідовне завантаження погано вплине на розподілену частину у "
+"роздачі.\n"
+"Варто використовувати за потреби."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Додати торенти призупиненими"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "Попереднє виділення простору на диску"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "Попередньо виділити дисковий простір для торент файлів"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "Додати параметри торента"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Завжди показувати"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Зробити діалог запиту активним"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "Додати діалог торентів"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "Кількість спроб під'єднання на секунду:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "Напіввідкриті з'єднання:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+"Щонайбільше дозволена кількість з'єднань. Встановіть -1 для необмеженої."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "З'єднання:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Щонайбільша швидкість відвантаження для усіх торентів. Встановити -1 для "
+"безлімітного."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "Завантажити слоти:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Щонайбільша швидкість завантаження для усіх потоків. Встановіть -1 для "
+"необмеженої."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Швидкість завантаження:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Щонайбільша швидкість роздачі для усіх торентів. Поставте -1 для "
+"необмеженої швидкости."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Швидкість віддачі:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Нехтувати обмеження для локальної мережі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Обмеження швидкости з урахуванням витрат протоколу IP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Якщо обрано, приблизні витрати TCP/IP врахуваються обмежниками швидкости, "
+"щоб уникнути перевищення сумарного трафіку"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "Глобальні обмеження пропускної здатности"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Щонайбільше слотів для роздачі для одного торенту. -1 необмежено."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+"Щонайбільша кількість з'єднань одного потоку. Встановіть -1 для необмеженої."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Щонайбільша швидкість завантаження для торенту. Встановіть -1 для "
+"необмеженої."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+"Щонайбільша швидкість роздачі на один торент. Встановіть -1 для необмеженої."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "Обмеження пропускної здатности для торенту"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "Додавати догори черги"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "Нові торенти"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "Раздача:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "Загалом:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "Нехтувати повільні торенти"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+"Торенти, які не беруть участи у передачі даних, не враховуються для "
+"активного підрахунку завантаження/відвантаження."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "Пріоритет роздавальних торентів"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr "Перевага роздавальним торентам замість стягуваних."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "Активні торенти"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "Рейтинг:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "Співвідношення часу:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "Час(хв)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr "Ротація завершених"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "Призупинити торент"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "Співвідношення досягнуто"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+"IP-адреса інтерфейсу для прослуховування вхідних bittorrent з'єднань. "
+"Залиште це поле порожнім, якщо бажаєте використовувати усталене значення."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "Вхідна адреса"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "Випадковий"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "Використовувати випадкові порти у діапазоні від 49152 до 65525"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Активний порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Тестувати активний порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "Вхідний порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"Ім'я мережевого інтерфейсу або IP-адреса для вихідних BitTorrent з'єднань. "
+"(Залиште порожнім для усталених значень.)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "Вихідний інтерфейс"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Від:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "До:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "Вихідні порти"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "Вихідні:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "Вхідні:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Рівень:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "Шифрування"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Універсальне автоматичне налаштування мережевих пристроїв"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+"Мережевий протокол для автоматичного встановлення налаштувань передачі "
+"мережевих адрес (NAT) та конфігурацій для переадресації портів (NAT-PMP)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Обмін пірами"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr "Обмін пірами між клієнтами. (Відмикання потребує перезапуску)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Служба пошуку локальних пірів у ваші мережі."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Розподілена хеш-таблиця для збільшення кількости активних з'єднань."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "TOS байт учасника:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "Додаткові мережі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Назва вузла:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Порт:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "Імена хостів проксі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+"Імена хостів проксі мають бути дозволені через проксі\n"
+"замість використання локальної служби DNS"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "Проксі-трекери"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "Примусово використовувати проксі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "Приховати дані клієнта"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+"Спробувати приховати дані клієнта й для вхідних з'єднань використовувати "
+"проксі."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "Примусовий проксі"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Розмір кешу (блоки по 16 KБ):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Час (у секундах) від останнього кешованого запису частини в кеші запису до "
+"того, як примусово скинути кеш цієї частини на диск. Типово 60 секунд."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Час життя кешу (секунд):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Налаштування"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+"Загальне число блоків по 16КіБ, записаних на диск, відколи ця сесія запущена."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Блоків записано:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+"Загальне число проведених операцій запису, відколи ця сесія запущена."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Записів:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Співвідношення (блоків_записано - операцій_запису) / блоків_записано "
+"представляє відношення кількости збережених операцій запису до їх загальної "
+"кількости, тобто дієвість кешу запису."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Відсоток влучности до кешу:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "Запис"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Число блоків, на які були подані запити пірами і були обслуговані з диску "
+"або кешу."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Блоків прочитано:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Число блоків, які обслуговані з кешу."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Зчитано блоків з кешу:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Коефіцієнт дієвости кешу читання."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Відсоток читання з кешу:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+"Загальна кількість операцій читання, що проведені від початку цієї сесії."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Операцій читання:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "Читання"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Розмір блоків по 16KiB, що знаходяться зараз в дисковому кеші. Сюди включено "
+"кеш зчитування та запису."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Розмір кешу:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Розмір кешу зчитування"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "_Оновити"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Допоможіть нам вдосконалювати Deluge відсилаючи нам версію Python, PyGTK, ОС "
+"та тип процесора. Ніякої іншої інформації відсилатись не буде."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Надсилати анонімну статистику"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "Інформація про систему"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Розташування:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Якщо Deluge не може знайти файл бази за цією адресою - він здійснить запит "
+"до DNS для визначення країни піра."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "База даних GeoIP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "Пов'язати Deluge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "Magnet посилання"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Порт тлової служби:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "Порт"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Дозволити віддалені з'єднання"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "З'єднання"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Періодично перевіряти доступність нових версій"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "В_илучити"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "Облікові записи"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Версія:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Автор:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Домашня сторінка:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Адреса ел.пошти автора:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Відомості"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "_Встановити"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "_Знайти більше..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "Вилучити вибрані торенти?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "Додати завантажені файли"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "Назавжди"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Додати учасника"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "адреса:порт"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "Властивості"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr "Щонайбільша кількість випадних рядків"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Загальні</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "Вказати шлях"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "Показати засіб вибору файлів"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "Показати ім'я теки"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "Тип вибору шляху"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "Увімкнути автозаповнення"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "Показувати приховані файли"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "Встановити новий ключ"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+"Натисніть кнопку для встановлення нової кнопки запуску автозаповнення"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "Автодоповнення"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "Зберегти шлях"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "Показати приховані файли"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "Типовий шлях"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "Скорочення клавіш"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "Обрати теку"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "Збережені шляхи"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "стовпчик"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "Відкрити"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Додати"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "Додати поточне значення запису до переліку"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "Редагувати"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "Змінити обраний запис"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Вилучити"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "Вилучити позначений запис"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "Перемістити вибраний запис догори"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "Перемістити вибраний запис донизу"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "Типово"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "Типовий шлях не встановлено"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "Відкрити діалогове вікно властивостей"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Додати хеш даних"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "З хешу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Хеш даних:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Трекери:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Додати сервер"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "Перемістити теку завантаження"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "Перемістити теку для завантаження торентів."
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Призначення:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Нова версія"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "_Відвідати вебсайт"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "Доступна нова версія!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "Доступна версія:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "Версія сервера"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "Поточна версія:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Не показувати цей діалог в майбутньому"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "Швидкість завантаження:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "Швидкість віддачі:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "Завантажено:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "Вивантажено:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "Розповсюджувачі"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "Пірів:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "Доступність:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "Рейтинг роздачі:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "Строк завантаження:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "Остання передача:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "Час активности:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "Завершені:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "Час роздачі:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "Частини:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Ім'я:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "Тека для завантажень:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "Додано:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "Загальний розмір:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "Всього файлів:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "Хеш:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "Створений:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Коментарі:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "Власник:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Перемістити завантажені:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Зупинити роздачу при коефіцієнті:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Вилучити при рейтингу"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "Обмеження пропускної здатности"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "Поточний трекер:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Усього трекерів:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Статус трекера:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "Наступний анонс:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "Приватний торент:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "Р_едагувати трекери"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Згори"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Знизу"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Додати торенти"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Хеш даних"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "Перемістити повну теку"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Додати призупиненим"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Пріоритетні перші та останні частини"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "Пропустити перевірку"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "Попередньо виділити місце на диску"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "Попередньо виділити місце на диску для торрент-файлів"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "Щонайбільша швидкість завантаження торента"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "Щонайбільша швидкість вивантаження торрента"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "Щонайбільше торрент-з'єднань"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr "Щонайбільше слотів для вивантаження через торрент"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Застосувати до усіх"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Встановити типові"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "По_казати Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "_Призупинити сесію"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "_Відновити сесію"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Швидкість завантаження"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "_Швидкість розповсюдження"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Вийти та зупинити тлову службу"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Редагувати трекери"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "До_гори"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "_До низу"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Додати Пір"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Додати піра по IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Редагувати трекер"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Трекер:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Увести віддалений шлях"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "Віддалений шлях"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Шлях:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 КіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 МіБ"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Створити торент"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Т_ека"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Вил_учити шлях"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "Файли"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Поширювачі"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Розмір частинки:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Встановити особисту позначку"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Додати цей торент до черги"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Параметри"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Зберегти .torrent як"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "_Відкрити теку завантаження"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "При_зупинити"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Відн_овити"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Відновити обрані торенти."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Параметри"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Черга"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "Он_овити трекер"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Вилучити торент"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "_Примусова перевірка"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "_Перемістити теку завантаження"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "позначка"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Ви_брати усе"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "П_ризупинити усі"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "Відновити усі"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Межа кількости з'єднань"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Межа _слотів роздачі"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "Зупинити при спів_відношенні"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "Автоматичне керування"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr "_Супер-сід"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "Зм_інити власника"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Додати трекер"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "Додати трекери"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Додати посилання"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "Із URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "Адреса:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Тлова служба Deluge"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "Автоматичне під'єднання до вибраного демона"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "Автоматичний запуск демона localhost (якщо потрібно)"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "Сховати це вікно"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "Параметри запуску"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "_Відкрити файл"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "_Показати теку"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "_Розгорнути усе"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "_Пропустити"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "_Низький"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "_Звичайний"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "_Високий"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Команда Deluge"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr "Deluge - легкий, вільний, багатоплатформовий BitTorrent клієнт."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+"Deluge містить загальні функції для клієнтів BitTorrent, такі як шифрування "
+"протоколів, DHT, локальне розпізнавання пірів(LSD), обмін пірами (PEX), "
+"UPnP, NAT-PMP, підтримка проксі, Веб-сід, глобальні обмеження та обмеження "
+"швидкості потоку. Оскільки Deluge активно використовує бібліотеку "
+"libtorrent, він має вичерпний перелік наданих функцій."
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+"Deluge був розроблений для роботи як звичайної автономної настільної "
+"програми, так і як клієнт-сервер. У режимі Thinclient демон Deluge обробляє "
+"всю діяльність BitTorrent і може працювати на безголових машинах із "
+"користувацькими інтерфейсами, які віддалено підключаються до будь-якої іншої "
+"платформи."
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Клієнт BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "BitTorrent клієнт Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Завантаження та обмін файлами через BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "Параметри консолі"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+"Ці параметри підключення демона будуть використовуватися для команд, або "
+"якщо ввімкнено автоподключення консолі ui."
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr "IP-адреса демона Deluge для під'єднання (типово 127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr "Порт для під'єднання демона Deluge (усталено 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+"Фонова служба Deluge використовуватиме ім'я користувача при підключенні"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+"Фонова служба Deluge використовуватиме пароль користувача при підключенні"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "Команди консолі"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "Опис"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "Доступні такі консольні команди:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Команда"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+"Використання: керування <torrent-id> [--set <key> <value>] [<key> [<key>...] "
+"]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr "вираз, який відповідає ідентифікаторам торентів та іменам торентів"
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "встановлене значення для цього ключа"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "Встановлюване значення"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "один або кілька ключів, розділених пробілами"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "Також вилучити дані торенту"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "Перерахувати відповідні торренти, не вилучаючи."
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "Один або декілька ідентифікаторів торренту"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+"Підтвердити за допомогою -c, щоб вилучити перелічені торенти (Кількість:% d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr "Використання: відновити [ * | <torrent-id> [<torrent-id> ...] ]"
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+"Один або кілька ідентифікаторів торрентів. Для відновлення всіх торрентів "
+"використовуйте \"*\""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+"Один або кілька ідентифікаторів торрентів. Використовуйте \"*\" для "
+"призупинення всіх торрентів"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "Тека завантаження для торенту"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "Пересунути завершений торрент до цієї теки"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "Один або декілька торрент-файлів, URL-адрес або магнітних URI"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "Перелік доступних додатків"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "Показати увімкнені додатки"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "Увімкнути втулок"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "Вимкнути додаток"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "Перезавантажити перелік доступних додатків"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "Встановити додаток з файлу .egg"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+"Початкові значення для швидкости вивантаження/завантаження (без суфіксу "
+"КіБ/с) (корисно для сценаріїв, які хочуть зробити власний синтаксичний "
+"аналіз)"
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "Не відображати статус торента (пришвидшує виконання команд)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr "Використання: з'єднання <host[:port]> [<username>] [<password>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "Хост і порт демона"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "Пароль"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "Шлях для переміщення торентів"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "Новий стан"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "Одна або декілька команд"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "Використання: config [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "Показати більше інформації про торент."
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "Показати докладнішу інформацію, включаючи файли та піри."
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr "Показати торренти із станом STATE: %s."
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "Те саме, що --sort, але елементи у зворотному порядку."
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+"Один або декілька ідентифікаторів торенту. Якщо жодного не вказано, "
+"перелічіть усі"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "Вибрати хост"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "Вийти"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "Вилучити сервер"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+"Додати хост (стрілки вгору та вниз для навігації, Esc для скасування)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "Помилка додавання сервера"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr "Стовпчики"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "Ширина"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "Загальні параметри"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "Системний звук після зверешення завантаження"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+"Список завершених торрентів після незавершених незалежно від порядку "
+"сортування"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr "Перемістити виділення при переміщенні торрентів в черзі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "Мова"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "Режим командного рядка"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "Не зберігати повторювані дані у дієпису"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+"Зберігання та завантаження дієпису командного рядка у режимі командного рядка"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+"На третій вкладці перераховані всі торренти, що залишилися, у режимі "
+"командного рядка"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr "Торренти за натисненням вкладки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "Теки"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "Завантажувати до"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "Переміщувати до"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr "Копіювати файли .torrent у"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "Додавати призупиненим"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "Виділяти місце під увесь файл"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "Вхідні порти"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "Від"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "До"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Використовувати випадкові порти"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "Вхідний інтерфейс"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+"IP-адреса інтерфейсу для прослуховування (усталено залиште порожнім):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+"Назва мережевого інтерфейсу або IP-адреса для вихідних з'єднань BitTorrent. "
+"(Усталено залиште порожнім.):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "Вхідні"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "Вихідні"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "Глобальне використання пропускної здатності"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "Щонайбільша кількість з'єднань"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "Щонайбільше слотів роздачі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "Щонайбільша швидкість завантаження (КіБ/с)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "Щонайбільша швидкість роздачі (КіБ/с)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "Щонайбільша кількість напіввідкритих з'єднань"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "Щонайбільша кількість спроб з'єднань на секунду"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "Обмежувати швидкість із урахуванням витрат протоколу IP"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "Налаштування швидкості торенту"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "Так, дякую, надсилати анонімну статистику."
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "Порт тлової служби"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "Дозволити віддалені з'єднання"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "Загалом"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Рейтинг"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "Співвідношення часу"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "Час (хв)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr "Видалити торент (Не позначені призупиняют торент)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "Параметри проксі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "Тип"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "Назва вузла"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr "Довідка про тип проксі"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "Розмір кешу (блоки 16 КіБ)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr "Записано блоків"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "Записи"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr "Зчитано блоків"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr "Зчитано блоків з кешу"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr "Читання"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr "Розмір кешу"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr "Розмір кешу читання"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "Застосувати"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "Гаразд"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "Оберіть мову"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr "IP {!white,blue!}%s{!status!}"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "IP-адреса \"%s\" погано сформована"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Емулювати перелік IP (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "Безпечні вузли, текст (zip-архів)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Текст (Некомпресований)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr "Перелік заблокованих та дозволених IP-діапазонів"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Перелік блокувань"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "Невірна IP-адреса"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "Невірний заголовок"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "Невірний чарунок"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Неправильна версія"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Днів"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Перевіряти новий перелік кожні:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Імпортувати перелік блокувань при запуску"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Налаштування</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+"У разі необхідності завантажувати файл із переліком блокованих IP та "
+"імпортувати його."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Перевірити наявність оновлення переліку блокувань"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Завантажити новий перелік блокувань та імпортувати його"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Завантажити та імпортувати перелік блокувань"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Перелік блокувань вже оновлений"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Опції</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Тип:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Дата:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Розмір файлу:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Інформація</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "Винятки"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Торент завершено"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Торент додано"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Торент вилучено"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Виконати"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Подія"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Додати команду</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Команди</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "Несумісний варіант"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+"\"Тека для стеження\" і тека \"Копіювати .torrent файли до\" не можуть бути "
+"однаковими!"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Автододавання"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "Подвійне клацання для перемикання"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "Подвійне клацання для редагування"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "Шлях"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Теки за якою стежите не існує"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Шлях не існує."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Дивитися властивості теки"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"Якщо до цього каталогу додано файл .torrent,\n"
+"він буде доданий до сесії."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Оберіть теку"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Відобразити цю теку"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Тека для стеження</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Вилучити торент-файл після додавання"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"Як тільки торрент буде доданий до сеансу,\n"
+".torrent буде вилучено."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Додати розширення після додавання:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"Як тільки торент буде додано до сеансу,\n"
+"розширення буде додано до .torrent\n"
+"і він залишиться в тому ж каталозі."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".додано"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"Після додавання торрента,\n"
+".torrent буде скопійовано до вибраної теки\n"
+"і видалено з теки для стеження."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+"Як тільки торент буде вилучено з сеансу,\n"
+"також вилучити файл .torrent, який використовувався для його додавання."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Дія на торент файлом</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "Встановити теку завантаження"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "До цієї теки будуть завантажуватися файли"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>Тека для завантаження</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "Вкажіть теку для переміщення завершених"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Перемістити завершені</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Позначка: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Позначка</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Основні"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "Обраний тут користувач стане власником торента"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>Власник</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Щонайб. шв-сть віддачі:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Щонайб. к-сть з'єднань:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Щонайбільше слотів для роздачі:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Щонайб. шв-сть завантаження:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Смуга пропускання</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Автоматично:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Додавати призупиненими:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Місце у черзі:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Черга</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Дивитися теки:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "хвилин"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 хвилина"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 секунда"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "секунд"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "Статистика"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "Дозвіл"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "Сідів/Пірів"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "Колір завантаження:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "Колір віддачі:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>Графік під'єднань</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>Графік смуги пропускання</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "DHT вузли:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "Кешовані вузли DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "Торентів в DHT:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>Сідів / Пірів</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>Кольори графіка</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "Вебінтерфейс"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Вебінтерфейс Deluge не встановлено, будь ласка,\n"
+"встановіть інтерфейс і спробуйте ще раз."
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Увімкнути вебінтерфейс"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Увімкнути SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Порт для з'єднань:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Невірна позначка, допустимі символи:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Порожня позначка"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Позначка вже існує"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Невідома позначка"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Невідомий торент"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Параметри позначки"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Вилучити позначку"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Додати позначку"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Параметри позначок"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Позначка"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Параметри позначок</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Застосувати щонайбільші параметри для усіх торентів:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Щонайбільше"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Застосувати налаштування черги:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "Застосувати налаштування теки:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(кожен трекер в окремому рядку)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Самочинно додати позначку:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Додати позначку"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Додати позначку</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Використовуйте бічну панель для додання, редагування та вилучення "
+"позначок. </i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Позначки</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Показати Мерехтіння Повідомлення"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Спливні вікна вимкнено"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "libnotify не встановлено"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr "Помилка спливного сповіщення"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Показувати спливні вікна"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Звук сповіщення вимкнено"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame не встановлено"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Звукове сповіщення не вдалося відтворити %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Звукове сповіщення успішне"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Завантажено торент"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+"Завантаження торенту \"%(name)s\", що містить %(num_files)i файл(-и/-ів) "
+"завершено."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Сповіщення"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Оберіть звуковий файл"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+"Сталася помилка, під час висилання електронного листа зі сповіщенням: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr "Сервер невірно відповів на привітання HELO: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "Сервер відмовився від комбінації імени користувача/паролю: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Лист зі сповіщенням надіслано"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Завантажено Торент: \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Мета цього листа повідомити, що Deluge закінчив завантаження \"%(name)s\", "
+"який включає в себе %(num_files)i файлів.\n"
+"Щоб припинити отримування повідомлень такого типу просто відімкніть "
+"сповіщення по пошті в налаштуваннях Deluge.\n"
+"\n"
+"З повагою,\n"
+"Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Увімкнути мерехтіння піктограми у системній таці"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Дозволити спливні вікна"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Звуки увімкнено"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>UI Сповіщення</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Отримувачі</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Сервер потребує TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Сповіщення електронною поштою</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Ця конфігурація не означає, що ви дійсно отримаєте сповіщення про всі ці "
+"події."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Підписки"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Налаштування звуку"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Розпакування"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Видобути до:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Створити підтеку з назвою торента"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Ця опція, в обраній теці, буде створювати підтеки, з назвами торентів і "
+"зберігати файли туди."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Планувальник"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr "<b>Розклад</b>"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Обмеження звантаження:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Обмеження відвантаження:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Активних торентів:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Активних завантажень:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Активних роздач:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Повільні налаштування</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "Переглядач файлів"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "Назад"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "Далі"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "Додому"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "Створити"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "Довідка"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "Вийти"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "Зберегти"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "Про Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Авторське право 2007-2018 Команда Deluge"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "Вилучити з даними"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "Додати з’єднання"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Хост:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "Неможливо додати вузол: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "Пересунути"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "Огляд"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "Змінити з’єднання"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "Неможливо редагувати вузол"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "Увійти"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "Помилка входу"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "Ви увели неправильний пароль"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "Прилюдне"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "Остання передача"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "Змішане"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Встановити щонайб. к-сть з'єднань"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Швидкість завантаження"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 КіБ/с"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Встановити щонайб. шв-сть завантаження"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Швидкість віддачі"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Встановити щонайб. шв-сть віддачі"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Протокол Трафік Завантаження/Роздача"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "Вільне місце у теці для завантаження"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "З'єднатися"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "Зупинити тлову службу"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "Від'єднатися"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "Запустити тлову службу"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "Змінити типовий пароль"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+"Ми рекомендуємо змінити типовий пароль.<br><br>Бажаєте змінити його зараз?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "Вузол трекера"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "Фільтри"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "З'єднання відновлено"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "Втрачено зв'язок"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "З’єднання з вебсервером втрачено!"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "Втрачено зв’язок з вебсервером"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "Обмеження швидкости завантаження"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "Обмеження швидкости"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "Ліміт з'єднань"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "Обмеження слотів роздачі"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "Оновити трекер"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "Примусово перепровірити"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "Розгорнути усе"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Докладно"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "Коментар:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "Стан:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "Переміщення виконано:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "Загальні"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Приватний"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "Завантаження"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "Вірно"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Сповіщати про нові версії"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Допоможіть нам покращити Deluge, надіславши нам вашу версію Python, PyGTK, "
+"та типи ОС і процесора. Цілковито ніякої иншої інформації не надсилається."
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "Призупинити торент"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "Встановити втулок"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "Встановити"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr "Оберіть egg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr "Втулок Egg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "Огляд..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "Вивантажити ваш втулок..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Щонайбільша кількість з'єднань:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Щонайбільша швидкість завантаження (КіБ/с):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Щонайбільша швидкість роздачі (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Щонайбільша кількість напіввідкритих з'єднань:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Щонайбільша кількість спроб з'єднання на секунду:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Щонайбільше слотів для роздачі:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "Розмір кешу (16 KiB Блоків):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "Примусове використання проксі"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "Знайти більше"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "Використовувати випадковий порт"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "Тип сервісу"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr "Показати фільтри з нульовими торентами"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr "Дозволити використовувати декілька фільтрів одночасно"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr "Пароль WebUI"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "Старі:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "Нові:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "Підтвердити:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "Сервер"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "Час очікування сесії:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr "Увімкнути SSL (шляхи щодо теки конфігурації Deluge)"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "Приватний Ключ:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "Сертифікат:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr "Мову WebUI змінено"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+"Ви волієте оновити сторінку зараз, аби одразу використовувати нову мову?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "Оновити"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "Неправильний пароль"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "Ваші паролі не збігаються!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "Ваш старий пароль був неправильним!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "Успішно змінено"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "Ваш пароль було змінено, успіх!"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "Додати по Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Адерса URL"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Куки"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "Не вдалося стягнути торент"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "Файл"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "Хеш-сума"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "Завантаження вашого торенту..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "Не вдалося завантажити торент"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "Недійсний торент"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "Каталог для переміщення завершених завантажень"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "Щонайб. швидкість завантаження"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "Щонайб. швидкість роздавання"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "Додати призупиненим"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr "Надсід"
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "Завантажити"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "ETA:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "Дата додавання:"
+
+#~ msgid "<b>Language</b>"
+#~ msgstr "<b>Мова</b>"
diff --git a/deluge/i18n/ur.po b/deluge/i18n/ur.po
new file mode 100644
index 0000000..6c1cbe2
--- /dev/null
+++ b/deluge/i18n/ur.po
@@ -0,0 +1,6164 @@
+# Urdu translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Urdu <ur@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr ""
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr ""
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr ""
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr ""
+
+#: deluge/common.py:417
+msgid "M"
+msgstr ""
+
+#: deluge/common.py:418
+msgid "G"
+msgstr ""
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr ""
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr ""
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr ""
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr ""
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr ""
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr ""
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr ""
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr ""
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr ""
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr ""
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr ""
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr ""
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr ""
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/util.py b/deluge/i18n/util.py
new file mode 100644
index 0000000..f6920fb
--- /dev/null
+++ b/deluge/i18n/util.py
@@ -0,0 +1,153 @@
+#
+# Copyright (C) 2007,2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import builtins
+import ctypes
+import gettext
+import locale
+import logging
+import os
+import sys
+from glob import glob
+
+import deluge.common
+
+from .languages import LANGUAGES
+
+log = logging.getLogger(__name__)
+
+I18N_DOMAIN = 'deluge'
+
+
+def get_translations_path():
+ """Get the absolute path to the directory containing translation files"""
+ return deluge.common.resource_filename('deluge', 'i18n')
+
+
+def get_languages():
+ lang = []
+
+ translations_path = get_translations_path()
+ lc_messages_path = os.path.join('LC_MESSAGES', I18N_DOMAIN + '.mo')
+ for root, dirs, files in os.walk(translations_path):
+ # Get the dirs
+ lang_dirs = [
+ lang_dir
+ for lang_dir in dirs
+ if glob(os.path.join(translations_path, lang_dir, lc_messages_path))
+ ]
+ break
+ else:
+ return lang
+
+ for i, lang_code in enumerate(lang_dirs):
+ name = '%s (Language name missing)' % lang_code
+ if lang_code in LANGUAGES:
+ name = LANGUAGES[lang_code]
+ lang.append([lang_code, _(name)])
+
+ lang = sorted(lang, key=lambda k: k[1])
+ return lang
+
+
+def set_language(lang):
+ """
+ Set the language to use.
+
+ gettext and GtkBuilder will load the translations from the specified
+ language.
+
+ :param lang: the language, e.g. "en", "de" or "en_GB"
+ :type lang: str
+ """
+ if not lang:
+ return
+
+ # Necessary to set these environment variables for GtkBuilder
+ deluge.common.set_env_variable('LANGUAGE', lang) # Windows/Linux
+ deluge.common.set_env_variable('LANG', lang) # For OSX
+
+ try:
+ translation = gettext.translation(
+ 'deluge', localedir=get_translations_path(), languages=[lang]
+ )
+ except OSError:
+ log.warning('Unable to find translation (.mo) to set language: %s', lang)
+ else:
+ translation.install()
+
+
+def setup_mock_translation(warn_msg=None):
+ def _func(*txt):
+ if warn_msg:
+ log.warning(
+ '"%s" has been marked for translation, but translation is unavailable.',
+ txt[0],
+ )
+ return txt[0]
+
+ builtins.__dict__['_'] = _func
+ builtins.__dict__['ngettext'] = builtins.__dict__['_n'] = _func
+
+
+# Initialize gettext
+def setup_translation():
+ translations_path = get_translations_path()
+ log.info('Setting up translations from %s', translations_path)
+
+ try:
+ if hasattr(locale, 'bindtextdomain'):
+ locale.bindtextdomain(I18N_DOMAIN, translations_path)
+ if hasattr(locale, 'textdomain'):
+ locale.textdomain(I18N_DOMAIN)
+
+ gettext.bindtextdomain(I18N_DOMAIN, translations_path)
+ gettext.textdomain(I18N_DOMAIN)
+
+ gettext.install(I18N_DOMAIN, translations_path, names=['ngettext'])
+ builtins.__dict__['_n'] = builtins.__dict__['ngettext']
+
+ def load_libintl(libintls):
+ errors = []
+ libintl = None
+ for library in libintls:
+ try:
+ libintl = ctypes.cdll.LoadLibrary(library)
+ except OSError as ex:
+ errors.append(str(ex))
+ else:
+ break
+
+ if not libintl:
+ log.debug(
+ 'Unable to initialize gettext/locale:\n %s', '\n '.join(errors)
+ )
+ setup_mock_translation()
+ return
+
+ return libintl
+
+ libintl = None
+ if deluge.common.windows_check():
+ libintl = load_libintl(['libintl-8.dll', 'intl.dll'])
+ elif deluge.common.osx_check():
+ libintl = load_libintl(['libintl.8.dylib', 'libintl.dylib'])
+
+ if libintl:
+ libintl.bindtextdomain(
+ I18N_DOMAIN, translations_path.encode(sys.getfilesystemencoding())
+ )
+ libintl.textdomain(I18N_DOMAIN)
+ libintl.gettext.restype = ctypes.c_char_p
+
+ except Exception as ex:
+ log.error('Unable to initialize gettext/locale!')
+ log.exception(ex)
+ setup_mock_translation()
+
+ deluge.common.translate_size_units()
diff --git a/deluge/i18n/vi.po b/deluge/i18n/vi.po
new file mode 100644
index 0000000..c8e2116
--- /dev/null
+++ b/deluge/i18n/vi.po
@@ -0,0 +1,6219 @@
+# Vietnamese translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Vietnamese <vi@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "Tất cả"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "Đang hoạt động"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "Đang kiểm tra"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "Đang tải xuống"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "Đang chia sẻ"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "Tạm dừng"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "Đang đợi"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "Lỗi"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "Tên"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "Tiến độ"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "Kích cỡ"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "Đã tải xuống"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "Đã tải lên"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "Tỉ lệ"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "Tốc độ tải xuống"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "Tốc độ tải lên"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "Giới hạn Tải xuống"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "Giới hạn tải lên"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "Người cùng tải"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "Sẵn có"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "Đã thêm"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "Dự kiến Hoàn thành"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "Uu tiên Đầu/Cuối"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "Tự động quản lý"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "Cảnh báo"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "Thông báo OK"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "Đã gửi thông báo"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "Giao diện"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "Tải xuống"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "Băng thông"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "Hàng đợi"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "Mạng"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "Proxy"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "Bộ nhớ đệm"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "Khác"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "Dịch vụ"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "Phần bổ sung"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "Quần Đảo A-lan"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "Albania"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "Algeria"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "American Samoa"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "Andorra"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "Angola"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "Anguilla"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "Nam Cực"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "Antigua và Barbuda"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "Argentina"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "Armenia"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "Aruba"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "Australia"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "Austria"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "Bahamas"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "Bahrain"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "Barbados"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "Belarus"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "Belgium"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "Belize"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "Benin"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "Bermuda"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "Bolivia"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "Dịch vụ hiện không chạy"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "Tên tập tin"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "Bậc"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "Chọn tập tin"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "Chọn thư mục"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "Lưu tập tin .torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Tập tin Torrent"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "Mọi tập tin"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "Nhập mật khẩu của bạn để hiển thị Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "Nhập mật khẩu của bạn để thoát Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"Một chương trình chia sẻ tệp tin ngang hàng\n"
+"sử dụng giao thức BitTorrent."
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "Ứng dụng khách:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "Nhà phát triển hiện nay:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "Nhà phát triển hoặc đóng góp trước đây"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+"Chương trình này là phần mềm tự do; bạn có thể phân phối lại nó và/hoặc sửa "
+"đổi nó theo các điều khoản của Giấy phép Công cộng GNU được phát hành bởi "
+"Hiệp hội Phần mềm Tự do; phiên bản 3 của giấy phép, hoặc bất cứ phiên bản "
+"nào sau này (do bạn lựa chọn). \n"
+"\n"
+"Phần mềm này được phân phối với hi vọng rằng nó sẽ mang lại lợi ích, tuy "
+"nhiên KHÔNG CÓ BẤT CỨ BẢO HÀNH NÀO. Xem Giấy phép Công cộng GNU để biết thêm "
+"chi tiết.\n"
+"\n"
+"Bạn nhận được một bản sao của Giấy phép Công cộng GNU cùng với chương trình "
+"này; nếu không, xem ở <http://www.gnu.org/licenses>. \n"
+"\n"
+"Ngoài ra, như một trường hợp ngoại lệ đặc biệt, những người giữ bản quyền "
+"cho phép liên kết phần mã của chương trình này với thư viện OpenSSL. Bạn "
+"phải tuân theo Giấy phép Công cộng GNU trong tất cả các khía cạnh đối với "
+"phần mã được sử dụng ngoài OpenSSL.\n"
+"\n"
+"Nếu bạn sửa đổi một hoặc nhiều tập tin với ngoại lệ này, bạn có thể kế thừa "
+"ngoại lệ này cho phiên bản của các tập tin của bạn, nhưng điều này là không "
+"bắt buộc. Nếu bạn không muốn làm theo, hãy xóa phần chú giải ngoại lệ này từ "
+"phiên bản của bạn. Nếu vậy, bạn xóa phần chủ giải ngoại lệ này từ tất cả các "
+"tập tin nguồn của chương trình, sau đó xóa nó khỏi vị trí này."
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "Máy chủ:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "Torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "Tập tin không hợp lệ"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "Chọn một tập tin .torrent"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "URL không hợp lệ"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "là một URL không hợp lệ."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "Đang tải xuống..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "Tải xuống không thành công"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "Không thể tải xuống:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "Chi tiết:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "Tài khoản:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "Mật khẩu :"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "Đã được bảo vệ bằng mật khẩu"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "Khác..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "Chưa kết nối"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "Nút DHT"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "Dung lượng đĩa trống"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "Ưu tiên"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "Tất _cả"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "_Trạng thái"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "Ch_i tiết"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "Tập t_in"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "N_gười tải"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "Tùy _chọn"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "Chưa được kết nối..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "Không giới hạn"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "Xuống"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "Lên"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "Không kết nối"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "Trực tuyến"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "Đã kết nối"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "Tình trạng"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "Máy chủ"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "Phiên bản"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "_Khởi động dịch vụ"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "_Dừng dịch vụ"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "Không thể khởi động dịch vụ!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "Lỗi thêm máy chủ"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "Bật"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "Phần bổ sung"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "Chọn phần bổ sung"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "Tình trạng"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Các tracker"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "Không có"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "Nhãn"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "Không gắn nhãn"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>Phiên bản Máy khách</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " Torrent đã xếp hàng"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " Torrent đã xếp hàng"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "Đặt không giới hạn"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "Bật"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "Tắt"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "Địa chỉ"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "Máy khách"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "Tạo torrent"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "Torrent trong hàng đợi"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "Loại _bỏ"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "Tự động thêm torrent khi kết nối"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "_Tập tin"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "_Thêm torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "_Tạo torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "Thoát & tắt dịch _vụ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "_Thoát"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "_Hiệu chỉnh"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "Bộ quản lý _kết nối"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "_Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "_Xem"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "Thanh _Công cụ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "Tha_nh bên"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "Thanh trạn_g thái"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "T_hẻ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "_Cột"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "Tha_nh bên"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "Hiển _Zero Hits"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "Hiển thị _tracker"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "Trợ _giúp"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "T_rang chủ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "_FAQ"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "Các câu hỏi thường gặp"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "_Cộng đồng"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "Thêm torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "Thêm Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "Bỏ torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "Loại bỏ Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "Tạm dừng các torrent được chọn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "Tạm dừng"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "Tiếp tục các torrent được chọn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "Tiếp tục"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "Sắp xếp torrent lên trên"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "Xếp lên"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "Sắp xếp torrent xuống dưới"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "Xếp xuống"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "Tùy chọn"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "Bộ Quản lý Kết nối"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "Hiển tốc độ trên thanh tiêu đề"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "Bật cửa sổ chương trình lên trên cùng khi thêm torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "Bật biểu tượng khay của hệ thống"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "Thu nhỏ xuống khay hệ thống khi đóng"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "Khởi động ở khay hệ thống"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "Bảo vệ với mật khẩu"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "Chuyển đến sau khi hoàn thành:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "Sao các tập tin .torrent vào:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "Xóa bản sao của tập tin torrent khi bỏ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "Xóa bản sao của tập tin torrent được tạo ra khi torrent bị bỏ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "Tải xuống vào:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "Ưu tiên các mảnh đầu và cuối của torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "Ưu tiên các mảnh đầu và cuối của các tập tin trong torrent"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "Thêm các torrent trong trạng thái tạm dừng"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "Luôn hiện"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "Đưa hộp thoại lên trên cùng"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "Số kết nối cho phép nhiều nhất. Đặt giá trị -1 là không giới hạn."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "Kết nối:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+"Số đường tải lên nhiều nhất, áp dụng cho tất cả torrent. Đặt giá trị -1 là "
+"không giới hạn."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Tốc độ tải xuống lớn nhất, áp dụng cho tất cả torrent. Đặt giá trị -1 là "
+"không giới hạn."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "Tốc độ Tải xuống:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+"Tốc độ tải lên tối đa, áp dụng cho tất cả torrent. Đặt giá trị -1 là không "
+"giới hạn."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "Tốc độ Tải lên:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "Bỏ qua các giới hạn đối với mạng cục bộ"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "Áp dụng giới hạn lên lưu lượng của giao thức (IP overhead)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+"Nếu được đánh dấu, phần lưu lượng của giao thức được bỏ khỏi giới hạn tốc "
+"độ, để tránh vượt các giới hạn với tổng lưu lượng"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "Số đường tải lên tối đa mỗi torrent. Đặt -1 để không giới hạn."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "Số kết nối tối đa mỗi torrent. Đặt -1 để không giới hạn."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "Tốc độ tải lên tối đa mỗi torrent. Đặt -1 để không giới hạn."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "Cổng hiện tại:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "Kiểm tra cổng hiện tại:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "Từ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "Tới:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "Mức độ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "Universal Plug and Play"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "Giao thức gắn cổng NAT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "Trao đổi máy tải"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "Local Service Discovery tìm các máy tải cục bộ trên mạng của bạn."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "Bảng băm phân tán (DHT) có thể cải thiện số lượng kết nối."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "Byte TOS máy tải:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "Tên máy:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "Cổng:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "Kích thước bộ đệm (khối 16 KiB)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+"Số giây tính từ lần ghi cuối cùng vào bộ đệm tới khi nó bị ép phải ghi ra "
+"đĩa. Mặc định là 60 giây."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "Thời hạn của bộ đệm (giây)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "Cài đặt"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "Tổng số khối 16 KiB được viết vào đĩa từ khi bắt đầu phiên này."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "Các khối đã được ghi"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "Tổng số thao tác ghi được thực hiện từ đầu phiên làm việc này."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "Số lần ghi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+"Tỉ lệ (số_khối_ghi - lần_ghi) / số_khối_ghi biểu thị số thao tác ghi trên "
+"tổng số thao tác ghi, VD một kiểu tỉ lệ trúng bộ đệm cho bộ đệm ghi."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "Tỉ lệ trúng bộ đệm ghi:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+"Số khối được yêu cầu từ máy bittorrent (từ người tải), được đáp ứng từ đĩa "
+"hoặc bộ đệm."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "Số khối đọc:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "Số khối được đáp ứng từ bộ đệm."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "Trúng bộ đệm đọc:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "Tỉ lệ trúng bộ đệm đọc."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "Tỉ lệ trúng bộ đệm đọc:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "Tổng số thao tác đọc từ khi phiên làm việc bắt đầu."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "Số lần đọc:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+"Số khối 16 KiB hiện có trong bộ đệm đĩa. Bao gồm cả bộ đệm đọc và ghi."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "Kích thước bộ đệm:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "Kích thước bộ đệm đọc:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"Giúp chúng tôi cải thiện Deluge bằng cách gửi cho chúng tôi thông tin về "
+"phiên bản Python, PyGTK, hệ điều hành và kiểu bộ xử lý của bạn. Tuyệt đối "
+"không thông tin nào khác được gửi."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "Được, hãy gửi các thống kê ẩn danh"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "Vị trí:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+"Nếu Deluge không thể tìm tập tin cơ sở dữ liệu ở vị trí này nó sẽ quay lại "
+"dùng DNS để lấy quốc gia của máy tải."
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "Cổng dịch vụ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "Cho phép kết nối từ xa"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "Kết nối"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "Định kỳ kiểm tra website tìm các phiên bản mới"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "Phiên bản:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "Tác giả:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "Trang chủ:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "Email tác giả:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "Thông tin"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "Thêm máy tải"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "hostname:port"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>Chung</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "Thêm"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "Loại bỏ"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "Thêm Infohash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "Infohash:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Các Tracker:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "Thêm Host"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "Đích:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "Phiên bản mới"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "Đến _website"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "Đừng hiển thị hộp thoại này trong tương lai"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "Tên:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "Ghi chú:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "Di chuyển đã hoàn thành:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "Dừng tải lên ở tỉ lệ:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "Xóa ở tỉ lệ:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "_Sửa Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "Trên cùng"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "Dưới cùng"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "Thêm torrent"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "_URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "Info_hash"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "Thêm trong trạng thái _dừng"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "Ưu tiên các mảnh đầu/cuối"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "Áp dụng cho tất cả"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "Đặt lại theo mặc định"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "_Hiện Deluge"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "_Giới hạn tốc độ tải xuống"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "Giới _hạn tốc độ tải lên"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "Thoát và tắt dịch vụ"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "Sửa các Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "_Thêm máy tải"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "Thêm máy tải bằng _IP"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "Sửa Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "Nhập đường dẫn từ xa"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "Đường dẫn:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "Tạo torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "Thư _mục"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "Đường dẫn từ _xa"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "Webseed"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "Kích thước Mảnh:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "Đặt cờ riêng"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "Thêm torrent này vào phiên làm việc"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "Tùy chọn"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "Lưu .torrent thành"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "Tạm _dừng"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "Tiế_p tục"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "Tiếp tục các torrent được chọn."
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "_Tuỳ chọn"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "_Hàng đợi"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "_Cập nhật Tracker"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "_Loại bỏ Torrent"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "Ép kiểm tra _lại"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "nhãn"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "Chọn tất _cả"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "Tạm _dừng tất cả"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "T_iếp tục tất cả"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "_Giới hạn kết nối"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "Giới hạn đường tải _lên"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "Tự độn_g quản lý"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "Thêm Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "Thêm URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "Dãn _ra tất cả"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "Trình khách BitTorrent"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Trình khách BitTorrent Deluge"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "Tải và chia sẻ tập tin qua BitTorrent"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "Lệnh"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "Dùng cổng ngẫu nhiên"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "Tỷ lệ chia sẻ"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP list (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer Text (Nén)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian Text (Không nén)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "Danh sách chặn"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "Phiên bản không hợp lệ"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "Các ngày"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "Kiểm tra danh sách mới mỗi:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "Nhập danh sách chặn lúc khởi động"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Thiết lập</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "Tải và nhập danh sách chặn nếu cần thiết."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "Kiểm tra Tải xuống và Nhập"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "Tải xuống và nhập danh sách chặn mới."
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "Ép Tải xuống và Nhập"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "Danh sách chặn là mới nhất"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>Tùy chọn</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "Loại:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "Ngày:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "Kích cỡ tập tin:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>Thông tin</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent đã tải xong"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent đã được thêm vào"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "Thực thi"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "Sự kiện"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>Thêm lệnh</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>Lệnh</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "Tự động thêm"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "Thư mục theo dõi không tồn tại."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "Đường dẫn không tồn tại."
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "Thuộc tính thư mục theo dõi"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "Lựa chọn một thư mục"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "Kích hoạt thư mục theo dõi này"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>Theo dõi thư mục</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "Xóa tập tin .torrent sau khi thêm"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "Gắn thêm đuôi mở rộng sau khi thêm:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Thao tác Tập tin Torrent</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>Đã Di chuyển</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "Nhãn: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>Nhãn</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "Chính"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "Tốc độ Tải lên Tối đa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "Số Kết nối Tối đa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "Số Khe Tải lên Tối đa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "Tốc độ Tải xuống Tối đa:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>Băng thông</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "Tự động quản lý"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "Tạm dừng khi thêm vào"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "Sắp xếp vào:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>Hàng đợi</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>Thư mục theo dõi:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebUi"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Giao diện web cho Deluge chưa được cài đặt, vui lòng cài đặt \n"
+"giao diện và thử lại"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "Kích hoạt giao diện web"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "Kích hoạt SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "Cổng nhận:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "Nhãn không hợp lệ, các ký tự hợp lệ:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "Chưa gắn nhãn"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "Nhãn đã tồn tại"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "Nhãn không biết"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "Torrent không biết"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "_Lựa chọn Nhãn"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "_Bỏ Nhãn"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "_Thêm Nhãn"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "Các tùy chọn Nhãn"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "Nhãn"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>Tùy chọn Nhãn</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "Áp dụng hạn chế tối đa riêng:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "Tối đa"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "Áp dụng Cài đặt Hàng đợi riêng:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(mỗi tracker 1 dòng)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "Tự động áp dụng nhãn"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "Thêm nhãn"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>Thêm Nhãn</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+"<i>Dùng thanh bên cạnh chương trình để thêm, chỉnh và bỏ các nhãn.</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>Nhãn</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "Thông báo nhấp nháy được hiển thị"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "Thông báo bật lên không được kích hoạt."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "Hiển thị cửa sổ thông báo bật lên"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "Thông báo âm thanh không được bật"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame chưa được cài đặt"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "Thông báo âm thanh thất bại %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "Thông báo âm thanh thành công"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "Torrent đã hoàn thành"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr "Torrent \"%(name)s\" bao gồm %(num_files)i tập tin đã được tải xong."
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "Thông báo"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "Chọn tập tin âm thanh"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "Có lỗi khi gửi email thông báo: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "Email thông báo đã được gửi."
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "Đã hoàn thành Torrent \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Email này là để thông báo cho bạn rằng Deluge đã hoàn tất tải xuống "
+"\"%(name)s\", bao gồm %(num_files)i tập tin.\n"
+"Để thôi nhận những thông báo này, hãy tắt chức năng thông báo trong Các tùy "
+"chọn của Deluge."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "Nhấp nháy biểu tượng khay hệ thống đã được kích hoạt"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "Cửa sổ popup đã được kích hoạt"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "Âm thanh đã đượ kích hoạt"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>Thông báo UI</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>Người nhận</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "Máy chủ yêu cầu TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>Thông báo Email</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr ""
+"Cấu hình này không có nghĩa bạn sẽ nhận được các thông báo cho tất cả các sự "
+"kiện."
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "Đăng ký"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "Tùy chọn âm thanh"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "Giải nén"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "Giải nén vào:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "Tạo thư mục con có tên theo torrent"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr ""
+"Chức năng này sẽ tạo một thư mục con cùng tên với torrent trong thư mục giải "
+"nén đã chọn và đặt những tập tin được giải nén ở đó."
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "Thời gian biểu"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "Giới hạn tải xuống:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "Giới hạn tải lên:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "Torrent đang hoạt động:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "Đang tải xuống:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "Đang tải lên:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Thiết lập chậm</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "Máy:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "Đặt số kết nối tối đa"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "Tốc độ tải xuống"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "Đặt Tốc độ Tải xuống Tối đa"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "Tốc độ tải lên"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "Đặt Tốc độ Tải lên Tối đa"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "Lưu lượng tải lên/xuống của giao thức"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "Chi tiết"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "Riêng"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "Nhận thông báo về các phiên bản mới"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "Kết nối nhiều nhất:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "Tốc độ tải xuống lớn nhất (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "Tốc độ tải lên lớn nhất (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "Số kết nối Half-Open tối đa:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "Số kết nối tối đa thực hiện mỗi giây:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "Số đường tải lên lớn nhất:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/zh_CN.po b/deluge/i18n/zh_CN.po
new file mode 100644
index 0000000..8472bd9
--- /dev/null
+++ b/deluge/i18n/zh_CN.po
@@ -0,0 +1,6207 @@
+# Chinese (Simplified) translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2022-12-28 05:35+0000\n"
+"Last-Translator: 玉堂白鹤 <yjwork@qq.com>\n"
+"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+"Language: zh_CN\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/s"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/s"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/s"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/s"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/s"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "常规选项"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "显示此帮助信息"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "显示版本信息"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "设置配置目录路径"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "输出到指定的日志文件而不是 stdout"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "设置日志级别(无、错误、警告、信息、调试)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr "启用日志文件循环,使用可选的最大日志文件大小,默认值:%(const)s (日志文件循环计数为 5)"
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr "静态日志记录输出(与“--loglevel none”相同)"
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr "使用 cProfile 的配置文件 %(prog)s 。除非指定了文件名,否则输出到标准输出"
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr "进程控制选项"
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr "用于存储进程 id 的 Pidfile"
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr "启动时更改为该用户(需要 root)"
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr "启动时更改为该群组(需要 root)"
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr "后台选项"
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr "侦听 UI 连接的IP地址"
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr "用于侦听 UI 连接的端口"
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr "侦听 BitTorrent 连接的IP地址"
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr "BitTorrent 传出所连接的网络接口名称或IP地址。"
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr "设置键不能被 `set_config` RPC 修改"
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "全部"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "活动"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr "分配中"
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "正在检查"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "正在下载"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "做种中"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "已暂停"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "已排列"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "错误"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "名称"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "进度"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "状态"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "大小"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "已下载"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "已上传"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "剩余"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "分享率"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "下载速度"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "上传速度"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "下载限速"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "上传限速"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "最大连接数"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "最大上传通道"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "节点"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "做种"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "健康度"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "做种:节点"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "已添加"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "Tracker"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "下载目录"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "做种时间"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "活跃时间"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr "最近活动"
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr "完成时间"
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr "完整现身"
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr "已完成"
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "估计剩余时间"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr "分享"
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "区分先后"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr "顺序下载"
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "自动管理"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr "到达此分享率时停止"
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr "停止分享率"
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr "到达分享率时移除"
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr "完成后移动"
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr "完成后移动路径"
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr "所有者"
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "块"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr "种子等级"
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr "超级种子"
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "警告"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "通告正常"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "已发送通告"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "界面"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "下载"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "带宽"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "队列"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "网络"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "代理服务器"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "缓存"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "其他"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "后台"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "插件"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "跳过"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "低"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "中"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "高"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr "Deluge 无法找到`deluged` 可执行文件,请检查已安装 deluged 的软件包或将其添加到 PATH。"
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "阿富汗"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "奥兰群岛"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "阿尔巴尼亚"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "阿尔及利亚"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "美属萨摩亚"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "安道尔"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "安哥拉"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "阿瓜迪利亚"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "南极洲"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "安提瓜和巴布达"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "阿根廷"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "亚美尼亚"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "阿鲁巴"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "澳大利亚"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "奥地利"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "阿塞拜疆"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "巴哈马群岛"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "巴林"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "孟加拉国"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "巴巴多斯"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "白俄罗斯"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "比利时"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "伯利兹"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "贝宁"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "百慕大群岛"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "不丹"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "玻利维亚"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "波斯尼亚和黑塞哥维那"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "博茨瓦纳"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "布维岛"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "巴西"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "英属印度洋领地"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "文莱达鲁萨兰国"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "保加利亚"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "布基纳法索"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "布隆迪"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "柬埔寨"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "喀麦隆"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "加拿大"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "佛得角"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "开曼群岛"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "中非共和国"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "乍得"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "智利"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "中国"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "圣诞岛"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "科科斯(基林)群岛"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "哥伦比亚"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "科摩罗"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "刚果"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "刚果民主共和国"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "库克群岛"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "哥斯达黎加"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "科特迪瓦"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "克罗地亚"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "古巴"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "塞浦路斯"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "捷克共和国"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "丹麦"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "吉布提"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "多米尼加"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "多米尼加共和国"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "厄瓜多尔"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "埃及"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "厄瓜多尔"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "赤道几内亚"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "厄立特里亚"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "爱沙尼亚"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "埃塞俄比亚"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "福克兰群岛(马尔维纳斯群岛)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "法罗群岛"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "斐济"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "芬兰"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "法国"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "法属圭亚那"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "法属波利尼西亚"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "法属南部领土"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "加蓬"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "冈比亚"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "格鲁吉亚"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "德国"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "加纳"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "直布罗陀"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "希腊"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "格陵兰岛"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "格林纳达"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "瓜德罗普"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "关岛"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "危地马拉"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "根西岛"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "几内亚"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "几内亚比绍"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "圭亚那"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "海地"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "赫德岛与麦克唐纳群岛"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "梵地冈"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "洪都拉斯"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "中国香港"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "匈牙利"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "冰岛"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "印度"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "印度尼西亚"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "伊朗伊斯兰共和国"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "伊拉克"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "爱尔兰"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "马恩岛"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "以色列"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "意大利"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "牙买加"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "日本"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "泽西岛"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "约旦"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "哈萨克斯坦"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "肯尼亚"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "基里巴斯"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "朝鲜"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "韩国"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "科威特"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "吉尔吉斯斯坦"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "老挝人民民主共和国"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "拉脱维亚"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "黎巴嫩"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "莱索托"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "利比里亚"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "利比亚"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "列支敦士登"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "立陶宛"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "卢森堡"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "中国澳门"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "前南斯拉夫马其顿共和国"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "马达加斯加"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "马拉维"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "马来西亚"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "马尔代夫"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "马里"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "马尔他"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "马绍尔群岛"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "马提尼克岛"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "毛里塔尼亚"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "毛里求斯"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "马约特"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "墨西哥"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "密克罗尼西亚联邦"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "摩尔多瓦"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "摩纳哥"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "蒙古"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "黑山共和国"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "蒙特塞拉特"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "摩洛哥"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "莫桑比克"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "缅甸"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "纳米比亚"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "瑙鲁"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "尼泊尔"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "荷兰"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "荷属安的列斯"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "新喀里多尼亚"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "新西兰"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "尼加拉瓜"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "尼日尔"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "尼日利亚"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "尼斯"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "诺福克岛"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "北马里亚纳群岛"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "挪威"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "阿曼"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "巴基斯坦"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "帕劳"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "巴勒斯坦被占领土"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "巴拿马"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "巴布亚新几内亚"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "巴拉圭"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "秘鲁"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "菲律宾"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "皮特凯恩"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "波兰"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "葡萄牙"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "波多黎各"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "卡塔尔"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "留尼旺岛"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "罗马尼亚"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "俄罗斯联邦"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "卢旺达"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "圣巴泰勒米岛"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "圣赫勒拿"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "圣基茨和尼维斯"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "圣卢西亚"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "法属圣马丁"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "圣皮埃尔和密克隆"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "圣文森特和格林纳丁斯"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "萨摩亚"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "圣马力诺"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "圣多美和普林西比"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "沙特阿拉伯"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "塞内加尔"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "塞尔维亚"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "塞舌尔"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "塞拉利昂"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "新加坡"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "斯洛伐克"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "斯洛文尼亚"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "所罗门群岛"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "索马里"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "南非"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "南乔治亚和南桑德韦奇群岛"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "西班牙"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "斯里兰卡"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "苏丹"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "苏里南"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "斯瓦尔巴"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "斯威士兰"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "瑞典"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "瑞士"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "叙利亚"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr "中国台湾"
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "塔吉克斯坦"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "坦桑尼亚联合共和国"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "泰国"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "东帝汶民主共和国"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "多哥"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "托克劳群岛"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "汤加"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "特立尼达和多巴哥"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "突尼斯"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "土耳其"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "土库曼斯坦"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "特克斯和凯科斯群岛"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "图瓦卢"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "乌干达"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "乌克兰"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "阿拉伯联合酋长国"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "大不列颠及北爱尔兰联合王国"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "美国"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "美国小型外岛"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "乌拉圭"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "乌兹别克斯坦"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "瓦努阿图"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "委内瑞拉"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "越南"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "英属维京群岛"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "美属维京群岛."
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "瓦利斯和富图纳群岛"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "西撒哈拉"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "也门"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "赞比亚"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "津巴布韦"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "UI 选项"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr "在未指定用户 UI 界面的情况下,设置要运行的默认 UI 用户界面"
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+"使用可选的 ui 参数启动备用 UI\n"
+" (默认用户界面: *)"
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "Web 服务选项"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr "Web 服务器侦听的 IP 地址"
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr "Web 服务器侦听的端口"
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr "设置 ui 运行的基本路径"
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr "强制 Web 服务器使用 SSL"
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr "强制 Web 服务器禁用 SSL"
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr "后台不存在"
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "后台未运行"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "文件名"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "列"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "选择文件"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "取消(_C)"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "打开(_O)"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "选择文件夹"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "保存种子文件"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "保存(_S)"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "种子文件"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "所有文件"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "请输入您的密码以显示 Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr "请输入您的密码以退出 Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr "下载: {download_rate} 上传: {upload_rate} - Deluge"
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr "编辑路径"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr "移除路径"
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr "应用至所选(_A)"
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr "Copyright %(year_start)s-%(year_end)s Deluge Team"
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"使用 BitTorrent 协议的\n"
+"一款点对点文件共享程序。"
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "客户端:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "当前的开发者:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "曾经的开发者和贡献者:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "服务器:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "种子"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr "添加 Torrents(%d)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr "重复的种子"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr "无法增加同样的种子两次。%d 种子已经添加。"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "无效的文件"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr "请等待文件..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr "无法下载该磁力链接的文件"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "选择种子文件"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "无效的 URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "不是合法的 URL 地址。"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "正在下载..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "下载失败"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "下载失败:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "否(_N)"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "是(_Y)"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "关闭(_C)"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "细节:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "认证"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "连接(_O)"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "用户名:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "密码:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "修改帐户"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr "修改现有帐户"
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "应用(_A)"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr "新帐户"
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr "创建新帐户"
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "添加(_A)"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr "身份验证级别:"
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr "受密码保护"
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr "确定(_O)"
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "其他..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "未连接"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr "连接(限制)"
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr "下载速度(限制)"
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr "上传速度(限制)"
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr "协议传输(下载:上传)"
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT 节点"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "剩余硬盘空间"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr "外部 IP 地址"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr "<b>IP</b> <small>%s</small>"
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr "n/a"
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr "<b><small>端口问题</small></b>"
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr "没有传入连接,请检查端口转发"
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr "下载速度限制"
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr "设置最大下载速度"
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr "上传速度限制"
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr "设置最大上传速度"
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr "传入连接"
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr "设置最大传入连接数"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr "{state} {percent}%"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr "{state}: {err_msg}"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr "从未"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "是"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "否"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "优先级"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "全部(_A)"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "状态(_S)"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "详细信息(_D)"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "文件(_L)"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "节点(_P)"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "选项(_O)"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "Trackers(_T)"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "未连接..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "无限制"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "向下"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "向上"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+"Deluge后台(deluged)已在运行。\n"
+"要使用独立模式,请停止本地后台守护程序并重新启动 Deluge。"
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+"仅瘦客户端模式可用,因为未安装 libtorrent。\n"
+"要使用独立模式,请安装 libtorrent 软件包。"
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+"由于未知的导入错误,仅瘦客户端模式可用。\n"
+"要使用独立模式,请参阅日志以获取错误详细信息。"
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr "继续瘦客户端模式?"
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr "更改用户界面模式"
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "离线"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "在线"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "已连接"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "状态"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "主机"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "版本"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "启动后台服务(_S)"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "停止后台服务(_S)"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "断开(_D)"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "无法启动后台服务!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr "检查 deluged 软件包是否已安装,并记录日志以获取更多详细信息"
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr "不兼容的客户端"
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr "未启用在本地自动启动守护程序。 请参见“连接管理器”中的“选项”。"
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr "连接失败"
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr "编辑主机"
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "添加主机出错"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr "更新主机时出错"
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "用户名"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "级别"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "已启用"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "插件"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr "注意"
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr "您必须选择一种语言"
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr "您必须现在重新启动 Deluge UI才能使更改生效。"
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr "瘦客户端"
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "独立模式"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr "切换 Deluge客户端模式..."
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr "是否要重新启动以使用 %s 模式?"
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "选择插件"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "Plugin Eggs"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr "服务器端错误"
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr "服务器上发生错误"
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr "添加帐户时出错"
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr "认证失败"
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr "添加帐户时发生错误"
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr "更新帐户出错"
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr "更新帐户时发生错误"
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr "移除帐户"
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr "您确定要删除用户名为 \"%(username)s\" 的帐户吗?"
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr "移除帐户出错"
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr "认证失败"
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr "移除帐户时发生错误"
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "状态"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "Trackers"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "无"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr "管理员"
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "标签"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "没有标签"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr "无所有者"
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>客户端版本</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " 种子已加入队列"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " 种子已加入队列"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr "Torrent 是否在其他 Deluge 用户之间共享。"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr "删除选定的种子?"
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr "总共选择了 %s 个种子"
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "设为无限制"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "开"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "关闭"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "禁用"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr "启用..."
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr "节点上传通道"
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr "设置最大上传通道"
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr "到达此分享率时停止做种"
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr "所有权变更错误"
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr "尝试更改所有权时出错。"
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "地址"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "客户端"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr "GTK 选项"
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr "向当前正在运行的 Deluge GTK 实例中添加一个或多个种子文件,种子 URL 或磁力 URI"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "正在新建种子"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "任务队列"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr "添加任务队列"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "移除(_R)"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr "清除(_C)"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "连接时自动添加任务"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "文件(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "添加种子(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "创建种子(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "退出并关闭后台(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "退出(_Q)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "编辑(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "首选项(_P)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "连接管理(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "种子(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "查看(_V)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "工具栏(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "侧边栏(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "状态栏(_B)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "表单(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "列(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr "查找(_F) ..."
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "侧边栏(_I)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "显示空项目(_Z)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "显示 Tracker(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr "显示所有者(_O)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "帮助(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "主页(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "常见问题(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "常见问题"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "社区(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "关于(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "添加种子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "添加种子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "删除种子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "删除种子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+"按名称筛选种子。\n"
+"这将在侧边栏按当前所选筛选种子。"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr "筛选"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "暂停已选择的任务"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "暂停"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "开始已选择的任务"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "续传"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "在队列中上移种子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "队列向下移动"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "在队列中下移种子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "队列向上移动"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "首选项"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "连接管理"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr "关闭"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr "筛选:"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr "清除搜索"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "区分大小写(_M)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "强制"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "已禁用"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "握手"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr "全数据流"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "任一"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr "Socks4"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr "Socks5"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr "Socks5 认证"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr "HTTP 认证"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr "I2P"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr "瘦客户端"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr "连接到 Deluge 后台(deluged)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr "应用程序模式"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "在标题栏显示速度"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "添加种子窗口获得焦点"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+"片段栏将\n"
+"增加客户端之间的带宽使用\n"
+"和守护程序(不适用于独立模式)。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr "在状态选项卡中显示片段栏"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr "完成:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr "正在下载:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr "等待中:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr "丢失:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr "还原(_R)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr "将颜色还原为默认值"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr "块颜色"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr "主窗口"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "启用系统托盘图标"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr "系统托盘"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "关闭后最小化到系统托盘"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "启动后放入系统托盘"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "从系统托盘打开时,需要输入密码"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr "系统托盘"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr "通知新版本"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr "更新"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr "系统默认"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr "<b>语言</b>"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "将已完成的任务移动到:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "将种子文件复制到:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "删除时同时移除种子文件的副本"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "删除任务时移除种子文件的副本"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "下载到:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr "下载目录"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "任务首尾块优先"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "优先下载文件的首尾部分"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr "顺序下载"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "添加种子时暂停"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr "预分配磁盘空间"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr "为种子文件预分配磁盘空间"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr "添加种子选项"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "总是显示"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "将对话框放到前面"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr "添加种子对话框"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr "每秒尝试连接数:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr "半开连接数:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "全局最大连接数。-1为无限制。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "连接数:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "全局最大上传通道。-1为无限制。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr "上传通道:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "全局最大下载速度。-1为无限制。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "下载速度:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "全局最大上传速度。-1为无限制。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "上传速度:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "在局域网内忽略限制"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "限制IP开销的流量"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr "若选中,为了避免超出总体流量限制,已建立连接的TCP/IP额外开销将不计入流量限制"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr "全局带宽限制"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "每个种子的最大上传通道。-1为无限制。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "每个种子的最大连接数。-1为无限制。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr "每个种子最大下载速度。-1为无限制。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr "每个种子最大上传速度。-1为无限制。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr "每种子带宽限制"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr "任务置顶"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr "新的种子"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr "做种:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr "总数:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr "忽略缓慢的种子"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr "不传输任何数据的种子不会计入下载/做种的活动计数。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr "更喜欢种子做种"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr "优先选择种子做种而不是种子下载。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr "活动种子"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr "分享率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr "时间比率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr "时间(m):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr "暂停种子"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr "分享率达到"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr "接口的 IP 地址,用于侦听传入的 Bittorrent 连接。 如果要使用默认值,请将其留空。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr "传入地址"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "随机"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr "使用 49152 至 65525 范围内的随机端口"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "活动端口:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "测试活动端口"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr "传入端口"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+"\n"
+"传出 BitTorrent 连接的网络接口名称或 IP 地址。(默认为空。)\n"
+" "
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr "传出接口"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "起始端口:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "结束端口:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr "传出端口"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr "传出:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr "传入:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "加密级别:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "加密"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT端口映射协议"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "来源交换"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "在网络上探索发现本地用户。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "分布式哈希表(DHT)技术可以提高可用连接数量。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "对等点服务类型字段:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr "网络附加"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "主机名:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "端口:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr "代理主机名"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+"应该尝试通过代理而不是使用\n"
+"本地DNS服务来解析主机名"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr "代理节点"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr "代理节点和 web 种子连接。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr "代理 Trackers"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr "强制使用代理"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr "隐藏客户身份"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr "尝试隐藏客户端标识,并且只对传入连接使用代理。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr "强制代理"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "缓存大小(16 KiB b块):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr "从最后一次往硬盘中写入缓存时起的秒数,超过后将把缓存中的数据强制写入硬盘中。默认为 60 秒。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "缓存过期时间(秒):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "设置"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "本次会话中写入的 16 KiB 文件块总数。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "写入的块:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "本次会话中写入操作总数。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "写入:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "写入缓存命中率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr "写入"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr "从磁盘或缓存提供给 bittorrent 引擎(用户)的数据块数量"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "读取的块:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "位于缓存中的块数。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "块读取率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "读缓存的命中率。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "读缓存命中率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "本次会话读取操作总数。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "读取:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr "读取"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr "磁盘缓存(包括读缓存和写缓存)中现有 16 KiB 块的数量。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "缓存大小:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "读缓存大小:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr "刷新(_R)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr "发送您的 Python 和 PyGTK 版本及系统和处理器类型来帮助我们改进 Deluge。绝对不会发送其他信息。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "是的,请发送匿名统计"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "系统信息"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "位置:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr "若 Deluge 无法在这个位置找到数据库文件,则会使用 DNS 解析用户的国家地区。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "GeoIP 数据库"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "关联 Deluge"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "磁力链接"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "后台端口:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "端口"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "允许远程连接"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "连接"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "定期检查更新"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "删除(_D)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "帐户"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "版本:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "作者:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "主页:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "作者电子邮件:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "信息"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "安装(_I)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "查找更多(_F)..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr "删除所选种子?"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr "包括下载文件"
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr "(这是永久的)"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "添加节点"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "主机名:端口"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr "属性"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr "最大下拉行"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>常规</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr "显示路径项"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr "显示文件选择器"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr "显示文件夹名称"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr "路径选择器样式"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr "允许自动完成"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr "显示隐藏文件"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr "设置新快捷键"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr "按此键将新的快捷键设置为自动完成触发键"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr "自动完成"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr "保存路径"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr "Ctrl+S"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr "切换隐藏文件"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr "默认路径"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr "快捷键"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr "选择一个目录"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr "保存路径"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "取消"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "打开"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "添加"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "将当前输入值添加到列表中"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "编辑"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "编辑所选条目"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "删除"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "移除所选条目"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "向上移动所选条目"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "向下移动所选条目"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "默认"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "没有设置默认路径"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "打开属性对话框"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "添加哈希信息"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "来自哈希信息"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "哈希信息:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "Trackers:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "添加主机"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "移动下载至文件夹"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "移动该种子下载的文件夹。"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "目标:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "新发布"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "转到站点(_G)"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr "新版本发布!"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr "可用版本:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr "服务器版本"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr "当前版本:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "不再显示这个对话框"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr "下载速度:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr "上传速度:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr "已下载:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr "已上传:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr "做种:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr "节点:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr "可用性:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr "种子等级:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr "估计剩余时间:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr "最后传输:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr "活跃时间:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr "完整现身:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr "做种时间:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr "块:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "名称:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr "下载目录:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr "添加日期:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr "总大小:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr "总文件数:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr "哈希信息:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr "创建人:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "注释:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr "所有者:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "完成后移至:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "达到以下分享率停止做种:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "移除当分享率达到"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr "带宽限制"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr "当前 Tracker:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr "Trackers 总计:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr "Tracker 状态:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr "下一通告:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr "私有种子:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "编辑 Trackers(_E)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "顶部"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "底部"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "添加任务"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "网络地址(_U)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "哈希信息(_H)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr "移动完成至文件夹"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "添加到暂停状态(_P)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "区分前后优先块"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr "跳过文件哈希检查"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr "预分配磁盘空间"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr "为种子文件预分配磁盘空间"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr "最大种子下载速度"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr "最大种子上传速度"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr "最大种子连接数"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr "最大种子上传通道"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "全部应用"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "恢复到默认"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "显示Deluge(_S)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr "暂停会话(_P)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr "恢复会话(_R)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "限制下载速度(_D)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "限制上传速度(_U)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "退出并关闭后台"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "编辑Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr "向上(_U)"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr "向下(_D)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "添加节点(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "通过 IP 地址添加节点"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "编辑 Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "Tracker:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "键入远程路径"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr "远程路径"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "路径:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr "32 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr "128 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "新建种子"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "文件夹(_D)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "远程路径(_R)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "文件"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "网络种子"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "块大小:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "设置私有标记"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "向会话添加此种子"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "选项"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "种子文件另存为"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr "打开下载目录(_O)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "暂停(_P)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "开始(_M)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "恢复所选任务。"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "设置(_I)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "队列(_Q)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "更新Tracker(_U)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "删除种子(_R)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "强制重检查(_F)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr "移动下载文件夹(_M)"
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "标签"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "全选(_S)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "全部暂停(_P)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "继续所有(_M)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "限制连接数(_C)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "限制上传通道(_S)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr "达到以下分享率停止做种(_R)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "自动管理(_A)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr "超级种子(_S)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr "所有权变更(_C)"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "添加 Tracker"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr "添加 Trackers"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "添加 URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "来自 URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "网址:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr "Deluge 后台"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr "自动连接到选定的后台"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr "自动启动本地后台(如果需要)"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr "隐藏此对话框"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr "启动选项"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "打开文件(_O)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "显示文件夹(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "全部展开(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "跳过(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "低(_L)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "正常(_N)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "高(_H)"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr "Deluge Team"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr "Deluge 是一个轻量级的免费软件,跨平台的 BitTorrent 客户端。"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent 客户端"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent 客户端"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "通过 BitTorrent 下载和共享文件"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr "控制台选项"
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr "Deluge 后台要连接的 IP 地址(默认值为127.0.0.1)"
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr "Deluge 后台要连接的端口(默认值为 58846)"
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr "连接时要使用的 Deluge 后台用户名"
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr "连接时要使用的 Deluge 后台密码"
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr "控制台命令"
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr "描述"
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr "以下控制台命令可用:"
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "命令"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr "`%s` alias"
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "用法: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr "设置此键的值"
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr "设定值"
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr "一个或多个键,以空格分隔"
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr "同时删除种子数据"
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr "列出匹配的种子而不删除。"
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr "一个或多个种子 ID"
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr "使用 -c 确认删除列出的种子 (计数: %d)"
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr "用法: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr "一个或多个种子 ID。 使用 \"*\" 恢复所有种子"
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr "一个或多个种子 ID。 使用 \"*\" 暂停所有种子"
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr "种子下载文件夹"
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr "移动完成的种子到这个文件夹"
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr "一个或多个种子文件,URL 或磁力 URI"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr "列出可用的插件"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr "显示启用的插件"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr "启用插件"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr "禁用插件"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr "重新加载可用插件列表"
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr "从 .egg 文件安装插件"
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr "不显示种子状态(提高命令速度)"
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr "用法: connect <host[:port]> [<username>] [<password>]"
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr "后台主机和端口"
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "密码"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr "移动种子的目的路径"
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr "新状态"
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr "一个或多个命令"
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr "用法: config [--set <key> <value>] [<key> [<key>...] ]"
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr "显示每个种子的更多信息。"
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr "显示更多详细信息,包括文件和连接。"
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr "与 --sort 相同,但项目的顺序相反。"
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr "一个或多个种子 ID。 如果未给出,则列出所有"
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr "选择主机"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr "退出"
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr "删除主机"
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr "添加主机(向上和向下箭头进行导航,Esc 取消)"
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr "添加主机出错"
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr "宽"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr "常规选项"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr "下载完成时响起系统铃声"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr "语言"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr "命令行模式"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr "不要在历史记录中存储重复的输入"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr "在命令行模式下存储和加载命令行历史记录"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr "第三标签列出了命令行模式下所有剩余的种子"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr "文件夹"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr "下载到"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr "完成后移至"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr "将种子文件复制到"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr "添加到暂停"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr "预分配磁盘空间"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr "传入端口"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "从"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "到"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "使用随机端口"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr "传入接口"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr "要监听的接口的IP地址(默认为空):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr "传出 BitTorrent 连接的网络接口名称或 IP 地址。(默认为空。):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "内部访问"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "外部访问"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr "全局带宽使用"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "最大连接数"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "最大上传通道"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr "最大下载速度(KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr "最大上传速度(KiB/s)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "最大半开连接数"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "每秒最大连接尝试次数"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr "限制 IP 开销的流量"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr "每种子带宽使用"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr "是的,请发送匿名统计。"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr "后台端口"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr "允许远程连接"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr "总数"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "分享率"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr "时间比率"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr "时间(m)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr "代理服务器设置"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "类型"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr "主机名"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr "代理类型帮助"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr "缓存大小(16 KiB 块):"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr "缓存过期(秒)"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr "写入"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr "读取"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr "缓存大小"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr "应用"
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr "确定"
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr "选择语言"
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr "IP {!white,blue!}%s{!status!}"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr "IP地址 \"%s\" 格式错误"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP 列表(GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer 文本(zip 格式)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian 文本(已解压缩)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B(GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr "阻止的 IP 范围 / 列入白名单的 IP 范围"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "过滤列表"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr "IP 地址错误"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "无效引导"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "无效magic代码"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "无效版本"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "天"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "检查新列表中的每一个:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "启动时导入阻止名单"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>设置</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "如果需要,下载屏蔽列表文件并导入。"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "检查下载并导入"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "下载并导入一个新的阻止名单文件。"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "强制下载并导入"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "屏蔽列表已更新"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>选项</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "类型:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "日期:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "文件大小:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>信息</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr "<b>白名单</b>"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "种子完成"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "添加种子"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "移除种子"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "执行"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "事件"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>添加命令</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>命令</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr "不兼容的选项"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr "“监视文件夹”目录和“将 .torrent 文件复制到”目录不能相同!"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr "自动添加"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr "双击切换"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr "双击可编辑"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr "路径"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "监视文件夹不存在。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "路径不存在。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "监视文件夹属性"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+"如果将 .torrent 文件添加到此目录,\n"
+"它将被添加到会话中。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "选择一个文件夹"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "启用此监视文件夹"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>监视文件夹</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "添加任务后删除种子文件"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+"将种子文件添加到会话后,\n"
+".torrent 将被删除。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "添加任务后为种子文件附加后缀:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+"将种子文件添加到会话后,\n"
+"扩展名将附加到 .torrent \n"
+"它将保留在同一目录中。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+"将种子文件添加到会话后,\n"
+".torrent 将复制到所选目录\n"
+"并从监视文件夹中删除。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+"将种子文件从会话中删除后,\n"
+"还将删除用于添加它的 .torrent 文件。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>种子文件操作</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr "设置下载目录"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr "种子数据将被下载到该文件夹。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr "<b>下载目录</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr "设置完成后移至的文件夹"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>完成后移动</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "标签: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>标签</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "主要"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr "在此选择的用户将是种子的所有者。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr "<b>所有者</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "最大上传速度:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "最大连接数:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "最大上传通道:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "最大下载速度:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "带宽"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "自动管理:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "添加到暂停状态:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "添加到队列:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>队列</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>监视文件夹</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "分钟"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 分钟"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 秒"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "秒"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr "统计"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr "刷新"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr "做种/节点"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr "下载颜色:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr "上传颜色:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr "<b>连接图</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr "<b>带宽图</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr "DHT 节点:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr "缓存的DHT节点:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr "DHT 种子:"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr "<b>做种/节点</b>"
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr "<b>视图颜色</b>"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebUi"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge Web 界面未安装。\n"
+"请安装后重试"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "启用 web 界面"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "开启 SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "监听端口:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "无效标签,有效字符:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "空标签"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "标签已存在"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "未知标签"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "未知的种子"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "标签选项"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "移除标签(_R)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "添加标签(_A)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "标签选项"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "标签"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>标签选项</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "应用每个种子的最大设置:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "最大"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "应用队列设置:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "应用文件夹设置:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(每个 tracker 一行)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "自动应用标签:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "添加标签"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>添加标签</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>使用侧栏来添加,编辑和删除标签。</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>标签</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "闪烁提示已显示"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "弹出通知未启用。"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "未安装 libnotify"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr "弹出通知失败"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "显示弹出通知"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "声音通知未启用"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame未安装"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "声音提示失败 %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "声音提示成功"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "完成种子"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr "种子 \"%(name)s\" 包含的 %(num_files)i 个文件下载完毕。"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "通知"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "选择声音文件"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "发送通知邮件时发生错误: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr "服务器拒绝用户名/密码组合: %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "通知邮件已发送。"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "完成种子 \"%(name)s\""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"Deluge 以此邮件通知您,\"%(name)s\"中的共 %(num_files)i 个文件已经下载完成。\n"
+"若希望停止接收这些通知,请在 Deluge 的首选项中关闭电子邮件通知。\n"
+"\n"
+"感谢您的使用。\n"
+"Deluge。"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "启用托盘图标闪烁"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "启用弹出通知"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "启用声音"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>界面通知</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>收件人</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "服务器要求 TLS/SSL 加密"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>电子邮件通知</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr "这些设置并不代表实际上您会收到所有此类事件的通知。"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "订阅"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "自定义声音"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr "提取"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "提取到:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "创建与种子同名的子文件夹"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr "此选项在选定的文件夹下创建与种子重名的子文件夹并放置提取的文件。"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr "日程安排"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr "<b>日程安排</b>"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "下载限速:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "上传限速:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "活动种子:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "活动下载:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "活动做种:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>Slow Settings</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr "文件浏览"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr "后退"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr "前进"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr "主文件夹"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr "创建"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "帮助"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "注销"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "保存"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "关于 Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr "Copyright 2007-2018 Deluge Team"
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr "同时删除数据"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr "添加连接"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "主机名:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "无法添加主机:{0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "移动"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "浏览"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "编辑连接"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "无法编辑主机名"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "登录"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr "登录失败"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr "您输入的密码不正确"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr "公开"
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr "最后传输"
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr "混合"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "设置最大连接数"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "下载速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 KiB/s"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "设置最大下载速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "上传速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "设置最大上传速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "协议传输下载/上传速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "下载文件夹的自由空间"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "连接"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "停止后台服务"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "断开"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "启动后台服务"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "更改默认密码"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr "我们建议更改默认密码。<br><br>您现在要更改密码吗?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "Tracker 主机"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "过滤器"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "连接已恢复"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "连接丢失"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr "与网络服务器的连接已丢失!"
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr "与网络服务器的连接断开"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "下载/上传速度限制"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "上传速度限制"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "连接限制"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "上传通道限制"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "更新 Tracker"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "强制重新检查"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "全部展开"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "详细信息"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr "备注:"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr "状态:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr "完成后移至:"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "常规"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "私有的"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr "加载中"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr "真"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "自动报告新版本"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr "向我们发送您的 Python 版本,PyGTK 版本,操作系统和处理器类型,以帮助我们改进Deluge。 绝对没有其他信息发送。"
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr "暂停种子"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr "安装插件"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "安装"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr "选择一个 egg"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr "Egg 插件"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "浏览..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr "正在上传您的插件..."
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "最大连接数:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "最大下载速度(KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "最大上传速度(KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "最大半开连接数:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "每秒最大尝试连接数:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "最大上传通道:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr "缓存大小(16 KiB 块):"
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr "强制使用代理"
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr "查找更多"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr "使用随机端口"
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr "服务类型"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr "允许一次使用多个过滤器"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr "WebUI 密码"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr "旧的:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr "新的:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr "确认:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "服务器"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr "会话超时:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "私钥:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "证书:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr "WebUI 语言已更改"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr "您是否要立即刷新页面以使用新语言?"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "刷新"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr "无效密码"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr "您的密码不匹配!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr "您输入的旧密码不正确!"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr "更改成功"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr "您的密码已成功更改!"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr "从 URL 添加"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "Url"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Cookie"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "无法下载种子"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "文件"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "哈希信息"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "正在上传您的种子..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "无法上传种子"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "不是有效的种子"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr "完成后移至文件夹"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "最大下载速度"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "最大上传速度"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "添加到暂停状态"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr "超级种子"
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "下载"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "估计剩余时间:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "添加日期:"
+
+#~ msgid "<b>Language</b>"
+#~ msgstr "<b>语言</b>"
diff --git a/deluge/i18n/zh_HK.po b/deluge/i18n/zh_HK.po
new file mode 100644
index 0000000..6789692
--- /dev/null
+++ b/deluge/i18n/zh_HK.po
@@ -0,0 +1,6169 @@
+# Chinese (Hong Kong) translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2019-06-06 10:57+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr ""
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr ""
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr ""
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr ""
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr ""
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/s"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr ""
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr ""
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr ""
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr ""
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr ""
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr ""
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr ""
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr ""
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr ""
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr ""
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "檢查中"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr ""
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "播種中"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr ""
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr ""
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "錯誤"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "名稱"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr ""
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr ""
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr ""
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "已下載"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr ""
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr ""
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "下載速度"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "上傳速度"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr ""
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr ""
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr ""
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr ""
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr ""
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr ""
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr ""
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr ""
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "已新增"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr ""
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr ""
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr ""
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr ""
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr ""
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr ""
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr ""
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr ""
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "警告"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "通告完成"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "通告已送出"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr ""
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr ""
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr ""
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "佇列"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr ""
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr ""
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr ""
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr ""
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr ""
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr ""
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr ""
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr ""
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr ""
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr ""
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr ""
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr ""
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr ""
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr ""
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr ""
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr ""
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr ""
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr ""
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr ""
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr ""
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr ""
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr ""
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr ""
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr ""
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr ""
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr ""
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr ""
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr ""
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr ""
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr ""
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr ""
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr ""
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr ""
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr ""
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr ""
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr ""
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr ""
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr ""
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr ""
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr ""
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr ""
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr ""
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr ""
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr ""
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr ""
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr ""
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr ""
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr ""
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr ""
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr ""
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr ""
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr ""
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr ""
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr ""
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr ""
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr ""
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr ""
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr ""
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr ""
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr ""
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr ""
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr ""
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr ""
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr ""
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr ""
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr ""
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr ""
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr ""
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr ""
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr ""
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr ""
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr ""
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr ""
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr ""
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr ""
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr ""
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr ""
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr ""
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr ""
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr ""
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr ""
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr ""
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr ""
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr ""
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr ""
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr ""
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr ""
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr ""
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr ""
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr ""
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr ""
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr ""
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr ""
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr ""
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr ""
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr ""
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr ""
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr ""
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr ""
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr ""
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr ""
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr ""
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr ""
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr ""
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr ""
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr ""
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr ""
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr ""
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr ""
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr ""
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr ""
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr ""
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr ""
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr ""
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr ""
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr ""
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr ""
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr ""
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr ""
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr ""
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr ""
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr ""
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr ""
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr ""
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr ""
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr ""
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr ""
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr ""
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr ""
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr ""
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr ""
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr ""
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr ""
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr ""
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr ""
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr ""
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr ""
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr ""
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr ""
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr ""
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr ""
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr ""
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr ""
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr ""
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr ""
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr ""
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr ""
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr ""
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr ""
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr ""
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr ""
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr ""
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr ""
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr ""
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr ""
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr ""
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr ""
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr ""
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr ""
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr ""
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr ""
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr ""
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr ""
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr ""
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr ""
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr ""
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr ""
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr ""
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr ""
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr ""
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr ""
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr ""
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr ""
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr ""
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr ""
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr ""
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr ""
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr ""
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr ""
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr ""
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr ""
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr ""
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr ""
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr ""
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr ""
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr ""
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr ""
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr ""
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr ""
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr ""
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr ""
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr ""
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr ""
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr ""
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr ""
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr ""
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr ""
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr ""
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr ""
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr ""
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr ""
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr ""
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr ""
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr ""
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr ""
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr ""
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr ""
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr ""
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr ""
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr ""
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr ""
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr ""
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr ""
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr ""
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr ""
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr ""
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr ""
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr ""
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr ""
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr ""
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr ""
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr ""
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr ""
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr ""
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr ""
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr ""
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr ""
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr ""
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr ""
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "檔案名稱"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "選擇檔案"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "儲存 .torrent 檔案"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr ""
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "Torrent 檔案"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "所有檔案"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr "輸入你的密碼以顯示 Deluge..."
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "選擇 .torrent 檔案"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "使用者名稱:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "密碼:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "其他..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr ""
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "狀態(_S)"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "選項(_O)"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "無限制"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr ""
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "狀態"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "已啟用"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "狀態"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr ""
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "停用"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "網址"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "用戶端"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "移除(_R)"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "連線時自動加入 torrents"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "檔案(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "加入 Torrent(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "建立 Torrent(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "編輯(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "檢視(_V)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "工具列(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "側邊欄(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "狀態列(_B)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "分頁(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "協助(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "主頁(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "常見問題(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "社羣(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "加入 torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "加入 Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "移除 torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "移除 Torrent"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "暫停"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "續傳"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "在標題列顯示作業階段速度"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "以暫停狀態加入 torrents"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "下載速度:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "上傳速度:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "從:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "主機名稱:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "連接埠:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "設定"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "連線"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "新增用戶"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "主機名稱:連接埠"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>一般</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "資訊雜湊:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "加入 Torrents"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "顯示 Deluge(_S)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "下載速度限制(_D)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "上傳速度限制(_U)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "建立 Torrent"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "分塊大小:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "選項"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "另存 .torrent 為"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "暫停(_P)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "佇列(_Q)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "移除 Torrent(_R)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "強制再檢查(_F)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "標籤"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "全部暫停(_P)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent 用戶端"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent 用戶端"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "透過 BitTorrent 來下載和分享檔案"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "指令"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP 清單 (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer 文字檔 (已壓縮)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian 文字檔 (未壓縮)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "封鎖清單"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "無效的 Leader"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "無效的 Magic Code"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "無效的版本"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "日"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "每過多久檢查新清單:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "啟動時匯入封鎖清單"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>設定</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "下載封鎖清單(如果需要)並匯入檔案。"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "檢查下載並匯入"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "下載新的封鎖清單並匯入該檔案。"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "強制下載並匯入"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "封鎖清單為最新"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>選項</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "類型:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "日期:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "檔案大小:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>資訊</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "Torrent 完成"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "Torrent 已加入"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr "Torrent 已移除"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "執行"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "事件"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>新增指令</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>指令</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "路徑不存在。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "選擇資料夾"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>Torrent 檔案動作</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>完成後移動的位置</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "標籤: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>標籤</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "主要"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "最高上傳速度:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "最大連接數:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "最大上傳連接數量:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "最高下載速度:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>頻寬</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr "WebUi"
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "啟用網頁介面"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "啟用 SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "聆聽埠:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "移除標籤(_R)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "標籤"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "自動套用標籤:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr ""
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "顯示閃爍通知"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "彈出通知未被啟用。"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "顯示通知彈出視窗"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "音效通知未被啟用"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame 未被安裝"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "音效通知失敗 %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "音效通知成功"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "種子已完成"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "通知"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "選擇音效檔案"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "在傳送通知電郵時發生錯誤:%s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "通知電郵已送出。"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "完成種子「%(name)s」"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"這封電子郵件是來提醒您,Deluge 已經完成下載「%(name)s」,當中包含了 %(num_files)i 項檔案。\n"
+"若要停止接收這類提醒,請在 Deluge 的偏好設定內關閉電郵通知。\n"
+"\n"
+"謝謝您,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "啟用系統匣圖示閃爍"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "啟用彈出視窗"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "啟用音效"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>使用者介面通知</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>收件人</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "伺服器需要 TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>電郵通知</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr "這個設定不代表您實際上可接受到所有這些事件的通知。"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "訂閱"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "音效自訂"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "解壓縮到:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "以種子名稱建立子資料夾"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr "這個選項將會以種子名稱建立子資料夾,之後將檔案解壓縮到那裏。"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "登出"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "移動"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "登入"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "下載速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "設定最高下載速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "上傳速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "設定最高上傳速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "連線"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "一般"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "最高下載速度 (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "最高上傳速度 (KiB/s):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "檔案"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "下載"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr ""
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr ""
diff --git a/deluge/i18n/zh_TW.po b/deluge/i18n/zh_TW.po
new file mode 100644
index 0000000..b14d006
--- /dev/null
+++ b/deluge/i18n/zh_TW.po
@@ -0,0 +1,6175 @@
+# Chinese (Traditional) translation for deluge
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the deluge package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: deluge\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-11-12 14:55+0000\n"
+"PO-Revision-Date: 2021-06-20 16:36+0000\n"
+"Last-Translator: Brian Hsu <Unknown>\n"
+"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
+"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
+"Language: zh_TW\n"
+
+#: deluge/common.py:411
+msgid "B"
+msgstr "B"
+
+#: deluge/common.py:412
+msgid "KiB"
+msgstr "KiB"
+
+#: deluge/common.py:413
+msgid "MiB"
+msgstr "MiB"
+
+#: deluge/common.py:414
+msgid "GiB"
+msgstr "GiB"
+
+#: deluge/common.py:415
+msgid "TiB"
+msgstr "TiB"
+
+#: deluge/common.py:416
+msgid "K"
+msgstr "K"
+
+#: deluge/common.py:417
+msgid "M"
+msgstr "M"
+
+#: deluge/common.py:418
+msgid "G"
+msgstr "G"
+
+#: deluge/common.py:419
+msgid "T"
+msgstr "T"
+
+#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
+#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
+#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484
+#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542
+#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237
+#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264
+#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
+msgid "K/s"
+msgstr "K/秒"
+
+#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
+#: deluge/ui/gtk3/menubar.py:455
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80
+#: deluge/ui/console/widgets/statusbars.py:104
+#: deluge/ui/console/widgets/statusbars.py:114
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:146
+#: deluge/ui/web/js/deluge-all/Statusbar.js:205
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121
+msgid "KiB/s"
+msgstr "KiB/秒"
+
+#: deluge/common.py:521
+msgid "M/s"
+msgstr "M/秒"
+
+#: deluge/common.py:521
+msgid "MiB/s"
+msgstr "MiB/秒"
+
+#: deluge/common.py:527
+msgid "G/s"
+msgstr "G/秒"
+
+#: deluge/common.py:527
+msgid "GiB/s"
+msgstr "GiB/秒"
+
+#: deluge/common.py:533
+msgid "T/s"
+msgstr "T/秒"
+
+#: deluge/common.py:533
+msgid "TiB/s"
+msgstr "TiB/秒"
+
+#: deluge/argparserbase.py:172
+msgid "Common Options"
+msgstr "一般選項"
+
+#: deluge/argparserbase.py:175
+msgid "Print this help message"
+msgstr "顯示此說明訊息"
+
+#: deluge/argparserbase.py:182
+msgid "Print version information"
+msgstr "顯示版本資訊"
+
+#: deluge/argparserbase.py:194
+msgid "Set the config directory path"
+msgstr "設定組態目錄路徑"
+
+#: deluge/argparserbase.py:200
+msgid "Output to specified logfile instead of stdout"
+msgstr "將記錄輸出到檔案,而不是標準輸出"
+
+#: deluge/argparserbase.py:206
+msgid "Set the log level (none, error, warning, info, debug)"
+msgstr "設等記錄等級(none, error, warning, info, debug)"
+
+#: deluge/argparserbase.py:215
+#, python-format
+msgid ""
+"Enable logfile rotation, with optional maximum logfile size, default: "
+"%(const)s (Logfile rotation count is 5)"
+msgstr ""
+
+#: deluge/argparserbase.py:223
+msgid "Quieten logging output (Same as `--loglevel none`)"
+msgstr ""
+
+#: deluge/argparserbase.py:231
+#, python-format
+msgid ""
+"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
+"specified"
+msgstr ""
+
+#: deluge/argparserbase.py:351
+msgid "Process Control Options"
+msgstr ""
+
+#: deluge/argparserbase.py:357
+msgid "Pidfile to store the process id"
+msgstr ""
+
+#: deluge/argparserbase.py:365
+msgid "Do not daemonize (fork) this process"
+msgstr ""
+
+#: deluge/argparserbase.py:379
+msgid "Change to this user on startup (Requires root)"
+msgstr ""
+
+#: deluge/argparserbase.py:386
+msgid "Change to this group on startup (Requires root)"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:25
+msgid "Daemon Options"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:31
+msgid "IP address to listen for UI connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:39
+msgid "Port to listen for UI connections on"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:47
+msgid "IP address to listen for BitTorrent connections"
+msgstr ""
+
+#: deluge/core/daemon_entry.py:56
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent connections."
+msgstr ""
+
+#: deluge/core/daemon_entry.py:63
+msgid "Config keys to be unmodified by `set_config` RPC"
+msgstr ""
+
+#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130
+#: deluge/ui/web/js/deluge-all/UI.js:18
+msgid "All"
+msgstr "全部"
+
+#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
+#: deluge/ui/web/js/deluge-all/UI.js:19
+msgid "Active"
+msgstr "活躍"
+
+#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
+msgid "Allocating"
+msgstr ""
+
+#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
+#: deluge/ui/web/js/deluge-all/UI.js:25
+msgid "Checking"
+msgstr "檢查中"
+
+#: deluge/ui/common.py:41
+#: deluge/ui/console/modes/preferences/preference_panes.py:568
+#: deluge/ui/web/js/deluge-all/UI.js:22
+msgid "Downloading"
+msgstr "下載中"
+
+#: deluge/ui/common.py:42
+#: deluge/ui/console/modes/preferences/preference_panes.py:575
+#: deluge/ui/web/js/deluge-all/UI.js:23
+msgid "Seeding"
+msgstr "作種中"
+
+#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
+msgid "Paused"
+msgstr "暫停"
+
+#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
+msgid "Queued"
+msgstr "已排入佇列"
+
+#: deluge/ui/common.py:45 deluge/ui/common.py:122
+#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:351
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417
+#: deluge/ui/web/js/deluge-all/UI.js:27
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
+msgid "Error"
+msgstr "錯誤"
+
+#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
+#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107
+msgid "Name"
+msgstr "名稱"
+
+#: deluge/ui/common.py:51 deluge/ui/common.py:53
+#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310
+#: deluge/ui/gtk3/peers_tab.py:120
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34
+msgid "Progress"
+msgstr "進度"
+
+#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12
+msgid "State"
+msgstr "狀態"
+
+#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72
+#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113
+#: deluge/ui/gtk3/torrentview.py:283
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174
+#: deluge/ui/console/modes/preferences/preference_panes.py:738
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33
+msgid "Size"
+msgstr "大小"
+
+#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
+msgid "Downloaded"
+msgstr "已下載"
+
+#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
+msgid "Uploaded"
+msgstr "已上傳"
+
+#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
+msgid "Remaining"
+msgstr "剩餘"
+
+#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
+msgid "Ratio"
+msgstr "分享率"
+
+#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
+#: deluge/ui/gtk3/peers_tab.py:133
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
+msgid "Down Speed"
+msgstr "下載速度"
+
+#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
+#: deluge/ui/gtk3/peers_tab.py:146
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
+msgid "Up Speed"
+msgstr "上傳速度"
+
+#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
+msgid "Down Limit"
+msgstr "下限"
+
+#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276
+msgid "Up Limit"
+msgstr "上限"
+
+#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
+msgid "Max Connections"
+msgstr "最大連接數"
+
+#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
+msgid "Max Upload Slots"
+msgstr "最大上傳區段數"
+
+#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46
+msgid "Peers"
+msgstr "用戶數"
+
+#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
+msgid "Seeds"
+msgstr "種子數"
+
+#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
+msgid "Avail"
+msgstr "可得性"
+
+#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
+msgid "Seeds:Peers"
+msgstr "種子數:用戶數"
+
+#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
+#: deluge/ui/gtk3/torrentview.py:387
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181
+msgid "Added"
+msgstr "加入日期"
+
+#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88
+#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205
+msgid "Tracker"
+msgstr "追蹤伺服器"
+
+#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:48
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
+msgid "Download Folder"
+msgstr "下載資料夾"
+
+#: deluge/ui/common.py:75
+msgid "Seeding Time"
+msgstr "做種時間"
+
+#: deluge/ui/common.py:76
+msgid "Active Time"
+msgstr "活躍時間"
+
+#: deluge/ui/common.py:78
+msgid "Last Activity"
+msgstr ""
+
+#: deluge/ui/common.py:81
+msgid "Finished Time"
+msgstr ""
+
+#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
+msgid "Complete Seen"
+msgstr ""
+
+#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
+msgid "Completed"
+msgstr ""
+
+#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
+msgid "ETA"
+msgstr "預計完成時間"
+
+#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
+msgid "Shared"
+msgstr ""
+
+#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
+msgid "Prioritize First/Last"
+msgstr "優先下載頭尾部份"
+
+#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
+msgid "Sequential Download"
+msgstr ""
+
+#: deluge/ui/common.py:97 deluge/ui/common.py:98
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11
+#: deluge/ui/web/js/deluge-all/Menus.js:253
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195
+msgid "Auto Managed"
+msgstr "自動管理"
+
+#: deluge/ui/common.py:99
+msgid "Stop At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:100
+msgid "Stop Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:101
+msgid "Remove At Ratio"
+msgstr ""
+
+#: deluge/ui/common.py:102 deluge/ui/common.py:108
+msgid "Move On Completed"
+msgstr ""
+
+#: deluge/ui/common.py:104
+msgid "Move Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:112
+msgid "Move On Completed Path"
+msgstr ""
+
+#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135
+#: deluge/ui/gtk3/torrentview.py:416
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
+msgid "Owner"
+msgstr ""
+
+#: deluge/ui/common.py:116
+msgid "Pieces"
+msgstr "片段"
+
+#: deluge/ui/common.py:117
+msgid "Seed Rank"
+msgstr ""
+
+#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
+msgid "Super Seeding"
+msgstr ""
+
+#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
+msgid "Warning"
+msgstr "警告"
+
+#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123
+msgid "Announce OK"
+msgstr "通告完成"
+
+#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124
+msgid "Announce Sent"
+msgstr "通告已送出"
+
+#: deluge/ui/common.py:129
+#: deluge/ui/console/modes/preferences/preference_panes.py:174
+#: deluge/ui/console/modes/preferences/preferences.py:89
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31
+msgid "Interface"
+msgstr "介面"
+
+#: deluge/ui/common.py:130
+#: deluge/ui/console/modes/preferences/preference_panes.py:230
+#: deluge/ui/console/modes/preferences/preferences.py:90
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21
+msgid "Downloads"
+msgstr "下載"
+
+#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:409
+#: deluge/ui/console/modes/preferences/preferences.py:92
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
+msgid "Bandwidth"
+msgstr "頻寬"
+
+#: deluge/ui/common.py:132
+#: deluge/ui/console/modes/preferences/preference_panes.py:550
+#: deluge/ui/console/modes/preferences/preferences.py:95
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/Menus.js:277
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18
+msgid "Queue"
+msgstr "佇列"
+
+#: deluge/ui/common.py:133
+#: deluge/ui/console/modes/preferences/preference_panes.py:300
+#: deluge/ui/console/modes/preferences/preferences.py:91
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28
+msgid "Network"
+msgstr "網路"
+
+#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146
+#: deluge/ui/console/modes/preferences/preference_panes.py:640
+#: deluge/ui/console/modes/preferences/preference_panes.py:647
+#: deluge/ui/console/modes/preferences/preferences.py:96
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
+msgid "Proxy"
+msgstr "代理伺服器"
+
+#: deluge/ui/common.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:685
+#: deluge/ui/console/modes/preferences/preferences.py:97
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
+msgid "Cache"
+msgstr "快取"
+
+#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
+#: deluge/ui/console/modes/preferences/preference_panes.py:499
+#: deluge/ui/console/modes/preferences/preferences.py:93
+#: deluge/ui/web/js/deluge-all/Statusbar.js:80
+#: deluge/ui/web/js/deluge-all/Statusbar.js:139
+#: deluge/ui/web/js/deluge-all/Statusbar.js:198
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69
+msgid "Other"
+msgstr "其他"
+
+#: deluge/ui/common.py:137
+#: deluge/ui/console/modes/preferences/preference_panes.py:524
+#: deluge/ui/console/modes/preferences/preferences.py:94
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18
+msgid "Daemon"
+msgstr "常駐程式"
+
+#: deluge/ui/common.py:138
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18
+msgid "Plugins"
+msgstr "外掛模組"
+
+#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:365
+msgid "Skip"
+msgstr "略過"
+
+#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
+#: deluge/ui/web/js/deluge-all/Menus.js:371
+msgid "Low"
+msgstr "一般"
+
+#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
+#: deluge/ui/web/js/deluge-all/Menus.js:377
+msgid "Normal"
+msgstr "普通"
+
+#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
+#: deluge/ui/web/js/deluge-all/Menus.js:383
+msgid "High"
+msgstr "高"
+
+#: deluge/ui/client.py:681
+msgid ""
+"Deluge cannot find the `deluged` executable, check that the deluged package "
+"is installed, or added to your PATH."
+msgstr ""
+
+#: deluge/ui/countries.py:10
+msgid "Afghanistan"
+msgstr "阿富汗"
+
+#: deluge/ui/countries.py:11
+msgid "Aland Islands"
+msgstr "奧蘭群島"
+
+#: deluge/ui/countries.py:12
+msgid "Albania"
+msgstr "阿爾巴尼亞"
+
+#: deluge/ui/countries.py:13
+msgid "Algeria"
+msgstr "阿爾及利亞"
+
+#: deluge/ui/countries.py:14
+msgid "American Samoa"
+msgstr "美屬薩摩亞"
+
+#: deluge/ui/countries.py:15
+msgid "Andorra"
+msgstr "安道爾"
+
+#: deluge/ui/countries.py:16
+msgid "Angola"
+msgstr "安哥拉"
+
+#: deluge/ui/countries.py:17
+msgid "Anguilla"
+msgstr "安圭拉"
+
+#: deluge/ui/countries.py:18
+msgid "Antarctica"
+msgstr "南極洲"
+
+#: deluge/ui/countries.py:19
+msgid "Antigua and Barbuda"
+msgstr "安地卡及巴布達"
+
+#: deluge/ui/countries.py:20
+msgid "Argentina"
+msgstr "阿根廷"
+
+#: deluge/ui/countries.py:21
+msgid "Armenia"
+msgstr "亞美尼亞"
+
+#: deluge/ui/countries.py:22
+msgid "Aruba"
+msgstr "阿魯巴"
+
+#: deluge/ui/countries.py:23
+msgid "Australia"
+msgstr "澳大利亞"
+
+#: deluge/ui/countries.py:24
+msgid "Austria"
+msgstr "奧地利"
+
+#: deluge/ui/countries.py:25
+msgid "Azerbaijan"
+msgstr "亞塞拜然"
+
+#: deluge/ui/countries.py:26
+msgid "Bahamas"
+msgstr "巴哈馬"
+
+#: deluge/ui/countries.py:27
+msgid "Bahrain"
+msgstr "巴林"
+
+#: deluge/ui/countries.py:28
+msgid "Bangladesh"
+msgstr "孟加拉"
+
+#: deluge/ui/countries.py:29
+msgid "Barbados"
+msgstr "巴貝多"
+
+#: deluge/ui/countries.py:30
+msgid "Belarus"
+msgstr "白俄羅斯"
+
+#: deluge/ui/countries.py:31
+msgid "Belgium"
+msgstr "比利時"
+
+#: deluge/ui/countries.py:32
+msgid "Belize"
+msgstr "貝里斯"
+
+#: deluge/ui/countries.py:33
+msgid "Benin"
+msgstr "貝南"
+
+#: deluge/ui/countries.py:34
+msgid "Bermuda"
+msgstr "百慕達"
+
+#: deluge/ui/countries.py:35
+msgid "Bhutan"
+msgstr "不丹"
+
+#: deluge/ui/countries.py:36
+msgid "Bolivia"
+msgstr "玻利維亞"
+
+#: deluge/ui/countries.py:37
+msgid "Bosnia and Herzegovina"
+msgstr "波士尼亞與赫塞哥維納"
+
+#: deluge/ui/countries.py:38
+msgid "Botswana"
+msgstr "博茲瓦納"
+
+#: deluge/ui/countries.py:39
+msgid "Bouvet Island"
+msgstr "布威島"
+
+#: deluge/ui/countries.py:40
+msgid "Brazil"
+msgstr "巴西"
+
+#: deluge/ui/countries.py:41
+msgid "British Indian Ocean Territory"
+msgstr "英屬印度洋領地"
+
+#: deluge/ui/countries.py:42
+msgid "Brunei Darussalam"
+msgstr "汶萊"
+
+#: deluge/ui/countries.py:43
+msgid "Bulgaria"
+msgstr "保加利亞"
+
+#: deluge/ui/countries.py:44
+msgid "Burkina Faso"
+msgstr "布吉納法索"
+
+#: deluge/ui/countries.py:45
+msgid "Burundi"
+msgstr "蒲隆地"
+
+#: deluge/ui/countries.py:46
+msgid "Cambodia"
+msgstr "柬埔寨"
+
+#: deluge/ui/countries.py:47
+msgid "Cameroon"
+msgstr "喀麥隆"
+
+#: deluge/ui/countries.py:48
+msgid "Canada"
+msgstr "加拿大"
+
+#: deluge/ui/countries.py:49
+msgid "Cape Verde"
+msgstr "維德角"
+
+#: deluge/ui/countries.py:50
+msgid "Cayman Islands"
+msgstr "開曼群島"
+
+#: deluge/ui/countries.py:51
+msgid "Central African Republic"
+msgstr "中非共和國"
+
+#: deluge/ui/countries.py:52
+msgid "Chad"
+msgstr "查德"
+
+#: deluge/ui/countries.py:53
+msgid "Chile"
+msgstr "智利"
+
+#: deluge/ui/countries.py:54
+msgid "China"
+msgstr "中國"
+
+#: deluge/ui/countries.py:55
+msgid "Christmas Island"
+msgstr "聖誕島"
+
+#: deluge/ui/countries.py:56
+msgid "Cocos (Keeling) Islands"
+msgstr "科科斯(基林)群島"
+
+#: deluge/ui/countries.py:57
+msgid "Colombia"
+msgstr "哥倫比亞"
+
+#: deluge/ui/countries.py:58
+msgid "Comoros"
+msgstr "葛摩"
+
+#: deluge/ui/countries.py:59
+msgid "Congo"
+msgstr "剛果"
+
+#: deluge/ui/countries.py:60
+msgid "Congo, The Democratic Republic of the"
+msgstr "剛果民主共和國"
+
+#: deluge/ui/countries.py:61
+msgid "Cook Islands"
+msgstr "庫克群島"
+
+#: deluge/ui/countries.py:62
+msgid "Costa Rica"
+msgstr "哥斯大黎加"
+
+#: deluge/ui/countries.py:63
+msgid "Cote d'Ivoire"
+msgstr "象牙海岸"
+
+#: deluge/ui/countries.py:64
+msgid "Croatia"
+msgstr "克羅埃西亞"
+
+#: deluge/ui/countries.py:65
+msgid "Cuba"
+msgstr "古巴"
+
+#: deluge/ui/countries.py:66
+msgid "Cyprus"
+msgstr "賽普勒斯"
+
+#: deluge/ui/countries.py:67
+msgid "Czech Republic"
+msgstr "捷克"
+
+#: deluge/ui/countries.py:68
+msgid "Denmark"
+msgstr "丹麥"
+
+#: deluge/ui/countries.py:69
+msgid "Djibouti"
+msgstr "吉布地"
+
+#: deluge/ui/countries.py:70
+msgid "Dominica"
+msgstr "多米尼克"
+
+#: deluge/ui/countries.py:71
+msgid "Dominican Republic"
+msgstr "多明尼加"
+
+#: deluge/ui/countries.py:72
+msgid "Ecuador"
+msgstr "厄瓜多"
+
+#: deluge/ui/countries.py:73
+msgid "Egypt"
+msgstr "埃及"
+
+#: deluge/ui/countries.py:74
+msgid "El Salvador"
+msgstr "薩爾瓦多"
+
+#: deluge/ui/countries.py:75
+msgid "Equatorial Guinea"
+msgstr "赤道幾內亞"
+
+#: deluge/ui/countries.py:76
+msgid "Eritrea"
+msgstr "厄利垂亞"
+
+#: deluge/ui/countries.py:77
+msgid "Estonia"
+msgstr "愛沙尼亞"
+
+#: deluge/ui/countries.py:78
+msgid "Ethiopia"
+msgstr "衣索比亞"
+
+#: deluge/ui/countries.py:79
+msgid "Falkland Islands (Malvinas)"
+msgstr "福克蘭群島(馬爾維納斯群島)"
+
+#: deluge/ui/countries.py:80
+msgid "Faroe Islands"
+msgstr "法羅群島"
+
+#: deluge/ui/countries.py:81
+msgid "Fiji"
+msgstr "斐濟"
+
+#: deluge/ui/countries.py:82
+msgid "Finland"
+msgstr "芬蘭"
+
+#: deluge/ui/countries.py:83
+msgid "France"
+msgstr "法國"
+
+#: deluge/ui/countries.py:84
+msgid "French Guiana"
+msgstr "法屬圭亞那"
+
+#: deluge/ui/countries.py:85
+msgid "French Polynesia"
+msgstr "法屬玻里尼西亞"
+
+#: deluge/ui/countries.py:86
+msgid "French Southern Territories"
+msgstr "法屬南部領地"
+
+#: deluge/ui/countries.py:87
+msgid "Gabon"
+msgstr "加彭"
+
+#: deluge/ui/countries.py:88
+msgid "Gambia"
+msgstr "甘比亞"
+
+#: deluge/ui/countries.py:89
+msgid "Georgia"
+msgstr "喬治亞"
+
+#: deluge/ui/countries.py:90
+msgid "Germany"
+msgstr "德國"
+
+#: deluge/ui/countries.py:91
+msgid "Ghana"
+msgstr "迦納"
+
+#: deluge/ui/countries.py:92
+msgid "Gibraltar"
+msgstr "直布羅陀"
+
+#: deluge/ui/countries.py:93
+msgid "Greece"
+msgstr "希臘"
+
+#: deluge/ui/countries.py:94
+msgid "Greenland"
+msgstr "格陵蘭"
+
+#: deluge/ui/countries.py:95
+msgid "Grenada"
+msgstr "格瑞那達"
+
+#: deluge/ui/countries.py:96
+msgid "Guadeloupe"
+msgstr "瓜德羅普"
+
+#: deluge/ui/countries.py:97
+msgid "Guam"
+msgstr "關島"
+
+#: deluge/ui/countries.py:98
+msgid "Guatemala"
+msgstr "瓜地馬拉"
+
+#: deluge/ui/countries.py:99
+msgid "Guernsey"
+msgstr "根息島"
+
+#: deluge/ui/countries.py:100
+msgid "Guinea"
+msgstr "幾內亞"
+
+#: deluge/ui/countries.py:101
+msgid "Guinea-Bissau"
+msgstr "幾內亞比索"
+
+#: deluge/ui/countries.py:102
+msgid "Guyana"
+msgstr "蓋亞那"
+
+#: deluge/ui/countries.py:103
+msgid "Haiti"
+msgstr "海地"
+
+#: deluge/ui/countries.py:104
+msgid "Heard Island and McDonald Islands"
+msgstr "赫德島和麥克唐納群島"
+
+#: deluge/ui/countries.py:105
+msgid "Holy See (Vatican City State)"
+msgstr "教廷 (梵蒂岡)"
+
+#: deluge/ui/countries.py:106
+msgid "Honduras"
+msgstr "宏都拉斯"
+
+#: deluge/ui/countries.py:107
+msgid "Hong Kong"
+msgstr "香港"
+
+#: deluge/ui/countries.py:108
+msgid "Hungary"
+msgstr "匈牙利"
+
+#: deluge/ui/countries.py:109
+msgid "Iceland"
+msgstr "冰島"
+
+#: deluge/ui/countries.py:110
+msgid "India"
+msgstr "印度"
+
+#: deluge/ui/countries.py:111
+msgid "Indonesia"
+msgstr "印尼"
+
+#: deluge/ui/countries.py:112
+msgid "Iran, Islamic Republic of"
+msgstr "伊朗"
+
+#: deluge/ui/countries.py:113
+msgid "Iraq"
+msgstr "伊拉克"
+
+#: deluge/ui/countries.py:114
+msgid "Ireland"
+msgstr "愛爾蘭"
+
+#: deluge/ui/countries.py:115
+msgid "Isle of Man"
+msgstr "曼島"
+
+#: deluge/ui/countries.py:116
+msgid "Israel"
+msgstr "以色列"
+
+#: deluge/ui/countries.py:117
+msgid "Italy"
+msgstr "義大利"
+
+#: deluge/ui/countries.py:118
+msgid "Jamaica"
+msgstr "牙買加"
+
+#: deluge/ui/countries.py:119
+msgid "Japan"
+msgstr "日本"
+
+#: deluge/ui/countries.py:120
+msgid "Jersey"
+msgstr "澤西島"
+
+#: deluge/ui/countries.py:121
+msgid "Jordan"
+msgstr "約旦"
+
+#: deluge/ui/countries.py:122
+msgid "Kazakhstan"
+msgstr "哈薩克"
+
+#: deluge/ui/countries.py:123
+msgid "Kenya"
+msgstr "肯亞"
+
+#: deluge/ui/countries.py:124
+msgid "Kiribati"
+msgstr "吉里巴斯"
+
+#: deluge/ui/countries.py:125
+msgid "Korea, Democratic People's Republic of"
+msgstr "北韓"
+
+#: deluge/ui/countries.py:126
+msgid "Korea, Republic of"
+msgstr "韓國"
+
+#: deluge/ui/countries.py:127
+msgid "Kuwait"
+msgstr "科威特"
+
+#: deluge/ui/countries.py:128
+msgid "Kyrgyzstan"
+msgstr "吉爾吉斯"
+
+#: deluge/ui/countries.py:129
+msgid "Lao People's Democratic Republic"
+msgstr "寮國"
+
+#: deluge/ui/countries.py:130
+msgid "Latvia"
+msgstr "拉脫維亞"
+
+#: deluge/ui/countries.py:131
+msgid "Lebanon"
+msgstr "黎巴嫩"
+
+#: deluge/ui/countries.py:132
+msgid "Lesotho"
+msgstr "賴索托"
+
+#: deluge/ui/countries.py:133
+msgid "Liberia"
+msgstr "賴比瑞亞"
+
+#: deluge/ui/countries.py:134
+msgid "Libyan Arab Jamahiriya"
+msgstr "利比亞"
+
+#: deluge/ui/countries.py:135
+msgid "Liechtenstein"
+msgstr "列支敦斯登"
+
+#: deluge/ui/countries.py:136
+msgid "Lithuania"
+msgstr "立陶宛"
+
+#: deluge/ui/countries.py:137
+msgid "Luxembourg"
+msgstr "盧森堡"
+
+#: deluge/ui/countries.py:138
+msgid "Macao"
+msgstr "澳門"
+
+#: deluge/ui/countries.py:139
+msgid "Macedonia, The Former Yugoslav Republic of"
+msgstr "馬其頓"
+
+#: deluge/ui/countries.py:140
+msgid "Madagascar"
+msgstr "馬達加斯加"
+
+#: deluge/ui/countries.py:141
+msgid "Malawi"
+msgstr "馬拉威"
+
+#: deluge/ui/countries.py:142
+msgid "Malaysia"
+msgstr "馬來西亞"
+
+#: deluge/ui/countries.py:143
+msgid "Maldives"
+msgstr "馬爾地夫"
+
+#: deluge/ui/countries.py:144
+msgid "Mali"
+msgstr "馬利"
+
+#: deluge/ui/countries.py:145
+msgid "Malta"
+msgstr "馬爾他"
+
+#: deluge/ui/countries.py:146
+msgid "Marshall Islands"
+msgstr "馬紹爾群島"
+
+#: deluge/ui/countries.py:147
+msgid "Martinique"
+msgstr "馬提尼克"
+
+#: deluge/ui/countries.py:148
+msgid "Mauritania"
+msgstr "茅利塔尼亞"
+
+#: deluge/ui/countries.py:149
+msgid "Mauritius"
+msgstr "模里西斯"
+
+#: deluge/ui/countries.py:150
+msgid "Mayotte"
+msgstr "馬約特"
+
+#: deluge/ui/countries.py:151
+msgid "Mexico"
+msgstr "墨西哥"
+
+#: deluge/ui/countries.py:152
+msgid "Micronesia, Federated States of"
+msgstr "密克羅尼西亞聯邦"
+
+#: deluge/ui/countries.py:153
+msgid "Moldova"
+msgstr "摩爾多瓦"
+
+#: deluge/ui/countries.py:154
+msgid "Monaco"
+msgstr "摩納哥"
+
+#: deluge/ui/countries.py:155
+msgid "Mongolia"
+msgstr "蒙古"
+
+#: deluge/ui/countries.py:156
+msgid "Montenegro"
+msgstr "蒙特內哥羅"
+
+#: deluge/ui/countries.py:157
+msgid "Montserrat"
+msgstr "蒙特塞拉特"
+
+#: deluge/ui/countries.py:158
+msgid "Morocco"
+msgstr "摩洛哥"
+
+#: deluge/ui/countries.py:159
+msgid "Mozambique"
+msgstr "莫三比克"
+
+#: deluge/ui/countries.py:160
+msgid "Myanmar"
+msgstr "緬甸"
+
+#: deluge/ui/countries.py:161
+msgid "Namibia"
+msgstr "納米比亞"
+
+#: deluge/ui/countries.py:162
+msgid "Nauru"
+msgstr "諾魯"
+
+#: deluge/ui/countries.py:163
+msgid "Nepal"
+msgstr "尼泊爾"
+
+#: deluge/ui/countries.py:164
+msgid "Netherlands"
+msgstr "荷蘭"
+
+#: deluge/ui/countries.py:165
+msgid "Netherlands Antilles"
+msgstr "荷屬安地列斯"
+
+#: deluge/ui/countries.py:166
+msgid "New Caledonia"
+msgstr "新喀里多尼亞"
+
+#: deluge/ui/countries.py:167
+msgid "New Zealand"
+msgstr "紐西蘭"
+
+#: deluge/ui/countries.py:168
+msgid "Nicaragua"
+msgstr "尼加拉瓜"
+
+#: deluge/ui/countries.py:169
+msgid "Niger"
+msgstr "尼日"
+
+#: deluge/ui/countries.py:170
+msgid "Nigeria"
+msgstr "奈及利亞"
+
+#: deluge/ui/countries.py:171
+msgid "Niue"
+msgstr "紐埃"
+
+#: deluge/ui/countries.py:172
+msgid "Norfolk Island"
+msgstr "諾福克島"
+
+#: deluge/ui/countries.py:173
+msgid "Northern Mariana Islands"
+msgstr "北馬里安納群島"
+
+#: deluge/ui/countries.py:174
+msgid "Norway"
+msgstr "挪威"
+
+#: deluge/ui/countries.py:175
+msgid "Oman"
+msgstr "阿曼"
+
+#: deluge/ui/countries.py:176
+msgid "Pakistan"
+msgstr "巴基斯坦"
+
+#: deluge/ui/countries.py:177
+msgid "Palau"
+msgstr "帛琉"
+
+#: deluge/ui/countries.py:178
+msgid "Palestinian Territory, Occupied"
+msgstr "巴勒斯坦佔領區"
+
+#: deluge/ui/countries.py:179
+msgid "Panama"
+msgstr "巴拿馬"
+
+#: deluge/ui/countries.py:180
+msgid "Papua New Guinea"
+msgstr "巴布亞紐幾內亞"
+
+#: deluge/ui/countries.py:181
+msgid "Paraguay"
+msgstr "巴拉圭"
+
+#: deluge/ui/countries.py:182
+msgid "Peru"
+msgstr "秘魯"
+
+#: deluge/ui/countries.py:183
+msgid "Philippines"
+msgstr "菲律賓"
+
+#: deluge/ui/countries.py:184
+msgid "Pitcairn"
+msgstr "皮特肯群島"
+
+#: deluge/ui/countries.py:185
+msgid "Poland"
+msgstr "波蘭"
+
+#: deluge/ui/countries.py:186
+msgid "Portugal"
+msgstr "葡萄牙"
+
+#: deluge/ui/countries.py:187
+msgid "Puerto Rico"
+msgstr "波多黎各"
+
+#: deluge/ui/countries.py:188
+msgid "Qatar"
+msgstr "卡達"
+
+#: deluge/ui/countries.py:189
+msgid "Reunion"
+msgstr "留尼旺"
+
+#: deluge/ui/countries.py:190
+msgid "Romania"
+msgstr "羅馬尼亞"
+
+#: deluge/ui/countries.py:191
+msgid "Russian Federation"
+msgstr "俄羅斯"
+
+#: deluge/ui/countries.py:192
+msgid "Rwanda"
+msgstr "盧安達"
+
+#: deluge/ui/countries.py:193
+msgid "Saint Barthelemy"
+msgstr "聖巴托洛繆島"
+
+#: deluge/ui/countries.py:194
+msgid "Saint Helena"
+msgstr "聖赫勒拿島"
+
+#: deluge/ui/countries.py:195
+msgid "Saint Kitts and Nevis"
+msgstr "聖克里斯多福與尼維斯"
+
+#: deluge/ui/countries.py:196
+msgid "Saint Lucia"
+msgstr "聖露西亞"
+
+#: deluge/ui/countries.py:197
+msgid "Saint Martin"
+msgstr "聖馬丁島"
+
+#: deluge/ui/countries.py:198
+msgid "Saint Pierre and Miquelon"
+msgstr "聖皮耶與密克隆群島"
+
+#: deluge/ui/countries.py:199
+msgid "Saint Vincent and the Grenadines"
+msgstr "聖文森及格瑞那丁"
+
+#: deluge/ui/countries.py:200
+msgid "Samoa"
+msgstr "薩摩亞"
+
+#: deluge/ui/countries.py:201
+msgid "San Marino"
+msgstr "聖馬利諾"
+
+#: deluge/ui/countries.py:202
+msgid "Sao Tome and Principe"
+msgstr "聖多美普林西比"
+
+#: deluge/ui/countries.py:203
+msgid "Saudi Arabia"
+msgstr "沙烏地阿拉伯"
+
+#: deluge/ui/countries.py:204
+msgid "Senegal"
+msgstr "塞內加爾"
+
+#: deluge/ui/countries.py:205
+msgid "Serbia"
+msgstr "塞爾維亞"
+
+#: deluge/ui/countries.py:206
+msgid "Seychelles"
+msgstr "塞席爾"
+
+#: deluge/ui/countries.py:207
+msgid "Sierra Leone"
+msgstr "獅子山"
+
+#: deluge/ui/countries.py:208
+msgid "Singapore"
+msgstr "新加坡"
+
+#: deluge/ui/countries.py:209
+msgid "Slovakia"
+msgstr "斯洛伐克"
+
+#: deluge/ui/countries.py:210
+msgid "Slovenia"
+msgstr "斯洛維尼亞"
+
+#: deluge/ui/countries.py:211
+msgid "Solomon Islands"
+msgstr "索羅門群島"
+
+#: deluge/ui/countries.py:212
+msgid "Somalia"
+msgstr "索馬利亞"
+
+#: deluge/ui/countries.py:213
+msgid "South Africa"
+msgstr "南非"
+
+#: deluge/ui/countries.py:214
+msgid "South Georgia and the South Sandwich Islands"
+msgstr "南喬治亞與南三明治群島"
+
+#: deluge/ui/countries.py:215
+msgid "Spain"
+msgstr "西班牙"
+
+#: deluge/ui/countries.py:216
+msgid "Sri Lanka"
+msgstr "斯里蘭卡"
+
+#: deluge/ui/countries.py:217
+msgid "Sudan"
+msgstr "蘇丹"
+
+#: deluge/ui/countries.py:218
+msgid "Suriname"
+msgstr "蘇利南"
+
+#: deluge/ui/countries.py:219
+msgid "Svalbard and Jan Mayen"
+msgstr "斯瓦巴及尖棉"
+
+#: deluge/ui/countries.py:220
+msgid "Swaziland"
+msgstr "史瓦濟蘭"
+
+#: deluge/ui/countries.py:221
+msgid "Sweden"
+msgstr "瑞典"
+
+#: deluge/ui/countries.py:222
+msgid "Switzerland"
+msgstr "瑞士"
+
+#: deluge/ui/countries.py:223
+msgid "Syrian Arab Republic"
+msgstr "敘利亞"
+
+#: deluge/ui/countries.py:224
+msgid "Taiwan"
+msgstr ""
+
+#: deluge/ui/countries.py:225
+msgid "Tajikistan"
+msgstr "塔吉克"
+
+#: deluge/ui/countries.py:226
+msgid "Tanzania, United Republic of"
+msgstr "坦尚尼亞"
+
+#: deluge/ui/countries.py:227
+msgid "Thailand"
+msgstr "泰國"
+
+#: deluge/ui/countries.py:228
+msgid "Timor-Leste"
+msgstr "東帝汶"
+
+#: deluge/ui/countries.py:229
+msgid "Togo"
+msgstr "多哥"
+
+#: deluge/ui/countries.py:230
+msgid "Tokelau"
+msgstr "托克勞"
+
+#: deluge/ui/countries.py:231
+msgid "Tonga"
+msgstr "東加"
+
+#: deluge/ui/countries.py:232
+msgid "Trinidad and Tobago"
+msgstr "千里達"
+
+#: deluge/ui/countries.py:233
+msgid "Tunisia"
+msgstr "突尼西亞"
+
+#: deluge/ui/countries.py:234
+msgid "Turkey"
+msgstr "土耳其"
+
+#: deluge/ui/countries.py:235
+msgid "Turkmenistan"
+msgstr "土庫曼"
+
+#: deluge/ui/countries.py:236
+msgid "Turks and Caicos Islands"
+msgstr "土克凱可群島"
+
+#: deluge/ui/countries.py:237
+msgid "Tuvalu"
+msgstr "吐瓦魯"
+
+#: deluge/ui/countries.py:238
+msgid "Uganda"
+msgstr "烏干達"
+
+#: deluge/ui/countries.py:239
+msgid "Ukraine"
+msgstr "烏克蘭"
+
+#: deluge/ui/countries.py:240
+msgid "United Arab Emirates"
+msgstr "阿拉伯聯合大公國"
+
+#: deluge/ui/countries.py:241
+msgid "United Kingdom"
+msgstr "英國"
+
+#: deluge/ui/countries.py:242
+msgid "United States"
+msgstr "美國"
+
+#: deluge/ui/countries.py:243
+msgid "United States Minor Outlying Islands"
+msgstr "美國本土外小島嶼"
+
+#: deluge/ui/countries.py:244
+msgid "Uruguay"
+msgstr "烏拉圭"
+
+#: deluge/ui/countries.py:245
+msgid "Uzbekistan"
+msgstr "烏茲別克"
+
+#: deluge/ui/countries.py:246
+msgid "Vanuatu"
+msgstr "萬那杜"
+
+#: deluge/ui/countries.py:247
+msgid "Venezuela"
+msgstr "委內瑞拉"
+
+#: deluge/ui/countries.py:248
+msgid "Viet Nam"
+msgstr "越南"
+
+#: deluge/ui/countries.py:249
+msgid "Virgin Islands, British"
+msgstr "英屬維京群島"
+
+#: deluge/ui/countries.py:250
+msgid "Virgin Islands, U.S."
+msgstr "美屬維京群島"
+
+#: deluge/ui/countries.py:251
+msgid "Wallis and Futuna"
+msgstr "瓦利斯群島和富圖納群島"
+
+#: deluge/ui/countries.py:252
+msgid "Western Sahara"
+msgstr "西撒哈拉"
+
+#: deluge/ui/countries.py:253
+msgid "Yemen"
+msgstr "葉門"
+
+#: deluge/ui/countries.py:254
+msgid "Zambia"
+msgstr "尚比亞"
+
+#: deluge/ui/countries.py:255
+msgid "Zimbabwe"
+msgstr "辛巴威"
+
+#: deluge/ui/ui_entry.py:51
+msgid "UI Options"
+msgstr "使用者介面選項"
+
+#: deluge/ui/ui_entry.py:57
+msgid "Set the default UI to be run, when no UI is specified"
+msgstr ""
+
+#: deluge/ui/ui_entry.py:91
+msgid ""
+"Alternative UI to launch, with optional ui args \n"
+" (default UI: *)"
+msgstr ""
+
+#: deluge/ui/web/web.py:32
+msgid "Web Server Options"
+msgstr "網頁伺服器選項"
+
+#: deluge/ui/web/web.py:38
+msgid "IP address for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:46
+msgid "Port for web server to listen on"
+msgstr ""
+
+#: deluge/ui/web/web.py:53
+msgid "Set the base path that the ui is running on"
+msgstr ""
+
+#: deluge/ui/web/web.py:56
+msgid "Force the web server to use SSL"
+msgstr ""
+
+#: deluge/ui/web/web.py:61
+msgid "Force the web server to disable SSL"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:868
+msgid "Daemon does not exist"
+msgstr ""
+
+#: deluge/ui/web/json_api.py:875
+msgid "Daemon not running"
+msgstr "常駐程式並未執行"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:62
+#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28
+msgid "Filename"
+msgstr "檔案名稱"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:85
+#: deluge/ui/gtk3/edittrackersdialog.py:124
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52
+msgid "Tier"
+msgstr "階"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:128
+msgid "Choose a file"
+msgstr "選擇檔案"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:132
+#: deluge/ui/gtk3/createtorrentdialog.py:169
+#: deluge/ui/gtk3/createtorrentdialog.py:258
+#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203
+#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273
+#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427
+#: deluge/ui/gtk3/preferences.py:1158
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:1
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2
+msgid "_Cancel"
+msgstr "取消(_C)"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:134
+#: deluge/ui/gtk3/createtorrentdialog.py:171
+#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160
+msgid "_Open"
+msgstr "開啟(_O)"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:165
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28
+msgid "Choose a folder"
+msgstr "選擇資料夾"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:254
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4
+msgid "Save .torrent file"
+msgstr "儲存種子檔案"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:260
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30
+msgid "_Save"
+msgstr "儲存(_S)"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:271
+#: deluge/ui/gtk3/addtorrentdialog.py:712
+msgid "Torrent files"
+msgstr "種子檔案"
+
+#: deluge/ui/gtk3/createtorrentdialog.py:275
+#: deluge/ui/gtk3/addtorrentdialog.py:716
+msgid "All files"
+msgstr "所有檔案"
+
+#: deluge/ui/gtk3/mainwindow.py:192
+msgid "Enter your password to show Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:251
+msgid "Enter your password to Quit Deluge..."
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:343
+#, python-brace-format
+msgid "D: {download_rate} U: {upload_rate} - Deluge"
+msgstr ""
+
+#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26
+#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96
+#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:23
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:91
+msgid "Deluge"
+msgstr "Deluge"
+
+#: deluge/ui/gtk3/path_combo_chooser.py:393
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20
+msgid "Edit path"
+msgstr ""
+
+#: deluge/ui/gtk3/path_combo_chooser.py:395
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21
+msgid "Remove path"
+msgstr ""
+
+#: deluge/ui/gtk3/options_tab.py:136
+msgid "_Apply to selected"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:40
+#, python-format
+msgid "Copyright %(year_start)s-%(year_end)s Deluge Team"
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:44
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:52
+msgid ""
+"A peer-to-peer file sharing program\n"
+"utilizing the BitTorrent protocol."
+msgstr ""
+"一個利用BitTorrent協議\n"
+"的點對點檔案共享程式。"
+
+#: deluge/ui/gtk3/aboutdialog.py:46
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:55
+msgid "Client:"
+msgstr "用戶端:"
+
+#: deluge/ui/gtk3/aboutdialog.py:52
+msgid "Current Developers:"
+msgstr "目前開發者:"
+
+#: deluge/ui/gtk3/aboutdialog.py:61
+msgid "Past Developers or Contributors:"
+msgstr "過去的開發者或貢獻者:"
+
+#: deluge/ui/gtk3/aboutdialog.py:795
+msgid ""
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 3 of the License, or (at your option) "
+"any later version. \n"
+"\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details. \n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"this program; if not, see <http://www.gnu.org/licenses>. \n"
+"\n"
+"In addition, as a special exception, the copyright holders give permission "
+"to link the code of portions of this program with the OpenSSL library. You "
+"must obey the GNU General Public License in all respects for all of the code "
+"used other than OpenSSL. \n"
+"\n"
+"If you modify file(s) with this exception, you may extend this exception to "
+"your version of the file(s), but you are not obligated to do so. If you do "
+"not wish to do so, delete this exception statement from your version. If you "
+"delete this exception statement from all source files in the program, then "
+"also delete it here."
+msgstr ""
+
+#: deluge/ui/gtk3/aboutdialog.py:829
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
+msgid "Server:"
+msgstr "伺服器:"
+
+#: deluge/ui/gtk3/aboutdialog.py:833
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:41
+msgid "libtorrent:"
+msgstr "libtorrent:"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51
+msgid "Torrent"
+msgstr "種子"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:232
+#, python-format
+msgid "Add Torrents (%d)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:238
+msgid "Duplicate torrent(s)"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:240
+#, python-format
+msgid ""
+"You cannot add the same torrent twice. %d torrents were already added."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:255
+msgid "Invalid File"
+msgstr "無效的檔案"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:290
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8
+msgid "Please wait for files..."
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:296
+msgid "Unable to download files for this magnet"
+msgstr ""
+
+#: deluge/ui/gtk3/addtorrentdialog.py:694
+msgid "Choose a .torrent file"
+msgstr "請選取一個種子檔案 (.torrent)"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:777
+msgid "Invalid URL"
+msgstr "無效的 URL"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:778
+msgid "is not a valid URL."
+msgstr "不是一個有效的 URL。"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:784
+msgid "Downloading..."
+msgstr "下載中..."
+
+#: deluge/ui/gtk3/addtorrentdialog.py:819
+msgid "Download Failed"
+msgstr "下載失敗"
+
+#: deluge/ui/gtk3/addtorrentdialog.py:820
+msgid "Failed to download:"
+msgstr "下載失敗:"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_No"
+msgstr "否(_N)"
+
+#: deluge/ui/gtk3/dialogs.py:110
+msgid "_Yes"
+msgstr "是(_Y)"
+
+#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:2
+msgid "_Close"
+msgstr "關閉(_C)"
+
+#: deluge/ui/gtk3/dialogs.py:179
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38
+msgid "Details:"
+msgstr "詳細資料:"
+
+#: deluge/ui/gtk3/dialogs.py:200
+msgid "Authenticate"
+msgstr "認證"
+
+#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:3
+msgid "C_onnect"
+msgstr "連線(_O)"
+
+#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6
+#: deluge/ui/console/modes/connectionmanager.py:123
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
+msgid "Username:"
+msgstr "帳號:"
+
+#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
+#: deluge/ui/gtk3/dialogs.py:437
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7
+#: deluge/ui/console/modes/connectionmanager.py:124
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:47
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83
+msgid "Password:"
+msgstr "密碼:"
+
+#: deluge/ui/gtk3/dialogs.py:257
+msgid "Edit Account"
+msgstr "編輯帳號"
+
+#: deluge/ui/gtk3/dialogs.py:258
+msgid "Edit existing account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38
+msgid "_Apply"
+msgstr "套用(_A)"
+
+#: deluge/ui/gtk3/dialogs.py:270
+msgid "New Account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:271
+msgid "Create a new account"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:4
+msgid "_Add"
+msgstr "新增(_A)"
+
+#: deluge/ui/gtk3/dialogs.py:289
+msgid "Authentication Level:"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:423
+msgid "Password Protected"
+msgstr ""
+
+#: deluge/ui/gtk3/dialogs.py:429
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:2
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3
+msgid "_OK"
+msgstr ""
+
+#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83
+msgid "Other..."
+msgstr "其他..."
+
+#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18
+msgid "Not Connected"
+msgstr "未連線"
+
+#: deluge/ui/gtk3/statusbar.py:175
+msgid "Connections (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:182
+msgid "Download Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:189
+msgid "Upload Speed (Limit)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:196
+msgid "Protocol Traffic (Down:Up)"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234
+msgid "DHT Nodes"
+msgstr "DHT 節點"
+
+#: deluge/ui/gtk3/statusbar.py:207
+msgid "Free Disk Space"
+msgstr "可用磁碟空間"
+
+#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226
+msgid "External IP Address"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409
+#, python-format
+msgid "<b>IP</b> <small>%s</small>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408
+#: deluge/ui/console/widgets/statusbars.py:121
+#: deluge/ui/web/js/deluge-all/Statusbar.js:358
+msgid "n/a"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:220
+msgid "<b><small>Port Issue</small></b>"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:222
+msgid "No incoming connections, check port forwarding"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394
+#: deluge/ui/gtk3/menubar.py:447
+msgid "Download Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395
+#: deluge/ui/gtk3/menubar.py:448
+msgid "Set the maximum download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409
+#: deluge/ui/gtk3/menubar.py:453
+msgid "Upload Speed Limit"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410
+#: deluge/ui/gtk3/menubar.py:454
+msgid "Set the maximum upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459
+msgid "Incoming Connections"
+msgstr ""
+
+#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460
+msgid "Set the maximum incoming connections"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:28
+#, python-brace-format
+msgid "{state} {percent}%"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:30
+#, python-brace-format
+msgid "{state}: {err_msg}"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:42
+#: deluge/ui/gtk3/torrentview_data_funcs.py:284
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74
+msgid "Never"
+msgstr ""
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "Yes"
+msgstr "確定"
+
+#: deluge/ui/gtk3/tab_data_funcs.py:96
+msgid "No"
+msgstr "取消"
+
+#: deluge/ui/gtk3/files_tab.py:140
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48
+msgid "Priority"
+msgstr "優先權"
+
+#: deluge/ui/gtk3/torrentdetails.py:142
+msgid "_All"
+msgstr "全部(_A)"
+
+#: deluge/ui/gtk3/torrentdetails.py:143
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15
+msgid "_Status"
+msgstr "狀態(_S)"
+
+#: deluge/ui/gtk3/torrentdetails.py:144
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26
+msgid "_Details"
+msgstr "詳細資訊(_D)"
+
+#: deluge/ui/gtk3/torrentdetails.py:145
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9
+msgid "Fi_les"
+msgstr "檔案(_L)"
+
+#: deluge/ui/gtk3/torrentdetails.py:146
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28
+msgid "_Peers"
+msgstr "用戶(_P)"
+
+#: deluge/ui/gtk3/torrentdetails.py:147
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36
+msgid "_Options"
+msgstr "選項(_O)"
+
+#: deluge/ui/gtk3/torrentdetails.py:148
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52
+msgid "_Trackers"
+msgstr "追蹤伺服器(_T)"
+
+#: deluge/ui/gtk3/systemtray.py:184
+msgid "Not Connected..."
+msgstr "未連接..."
+
+#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239
+#: deluge/ui/web/js/deluge-all/Statusbar.js:73
+#: deluge/ui/web/js/deluge-all/Statusbar.js:132
+#: deluge/ui/web/js/deluge-all/Statusbar.js:191
+#: deluge/ui/web/js/deluge-all/Menus.js:109
+#: deluge/ui/web/js/deluge-all/Menus.js:154
+#: deluge/ui/web/js/deluge-all/Menus.js:199
+#: deluge/ui/web/js/deluge-all/Menus.js:244
+msgid "Unlimited"
+msgstr "未限制"
+
+#: deluge/ui/gtk3/systemtray.py:245
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3
+#: deluge/ui/web/js/deluge-all/Toolbar.js:77
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:298
+msgid "Down"
+msgstr "下"
+
+#: deluge/ui/gtk3/systemtray.py:248
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:33
+#: deluge/ui/web/js/deluge-all/Toolbar.js:70
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:291
+msgid "Up"
+msgstr "上"
+
+#: deluge/ui/gtk3/gtkui.py:313
+msgid ""
+"A Deluge daemon (deluged) is already running.\n"
+"To use Standalone mode, stop local daemon and restart Deluge."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:319
+msgid ""
+"Only Thin Client mode is available because libtorrent is not installed.\n"
+"To use Standalone mode, please install libtorrent package."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331
+msgid ""
+"Only Thin Client mode is available due to unknown Import Error.\n"
+"To use Standalone mode, please see logs for error details."
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:349
+msgid "Continue in Thin Client mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/gtkui.py:350
+msgid "Change User Interface Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:52
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
+msgid "Offline"
+msgstr "離線"
+
+#: deluge/ui/gtk3/connectionmanager.py:53
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53
+msgid "Online"
+msgstr "上線"
+
+#: deluge/ui/gtk3/connectionmanager.py:54
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59
+msgid "Connected"
+msgstr "已連接"
+
+#: deluge/ui/gtk3/connectionmanager.py:110
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17
+msgid "Status"
+msgstr "狀態"
+
+#: deluge/ui/gtk3/connectionmanager.py:115
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66
+msgid "Host"
+msgstr "主機"
+
+#: deluge/ui/gtk3/connectionmanager.py:122
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73
+msgid "Version"
+msgstr "版本"
+
+#: deluge/ui/gtk3/connectionmanager.py:219
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:8
+msgid "_Start Daemon"
+msgstr "啟動常駐(_S)"
+
+#: deluge/ui/gtk3/connectionmanager.py:250
+msgid "_Stop Daemon"
+msgstr "停止常駐(_S)"
+
+#: deluge/ui/gtk3/connectionmanager.py:255
+msgid "_Disconnect"
+msgstr "斷線(_D)"
+
+#: deluge/ui/gtk3/connectionmanager.py:280
+msgid "Unable to start daemon!"
+msgstr "無法啟動常駐程式!"
+
+#: deluge/ui/gtk3/connectionmanager.py:281
+msgid "Check deluged package is installed and logs for further details"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:332
+msgid "Incompatible Client"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:343
+msgid ""
+"Auto-starting the daemon locally is not enabled. See \"Options\" on the "
+"\"Connection Manager\"."
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:346
+msgid "Failed To Connect"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:403
+msgid "Edit Host"
+msgstr ""
+
+#: deluge/ui/gtk3/connectionmanager.py:428
+msgid "Error Adding Host"
+msgstr "加入主機時發生錯誤"
+
+#: deluge/ui/gtk3/connectionmanager.py:464
+msgid "Error Updating Host"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:131
+#: deluge/ui/console/cmdline/commands/connect.py:33
+#: deluge/ui/console/modes/preferences/preference_panes.py:651
+msgid "Username"
+msgstr "使用者名稱"
+
+#: deluge/ui/gtk3/preferences.py:135
+#: deluge/ui/console/modes/preferences/preference_panes.py:399
+msgid "Level"
+msgstr "等級"
+
+#: deluge/ui/gtk3/preferences.py:159
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
+msgid "Enabled"
+msgstr "已啟用"
+
+#: deluge/ui/gtk3/preferences.py:162
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
+msgid "Plugin"
+msgstr "外掛模組"
+
+#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886
+msgid "Attention"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:876
+msgid "You must choose a language"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:887
+msgid "You must now restart the deluge UI for the changes to take effect."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+msgid "Thinclient"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:940
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18
+msgid "Standalone"
+msgstr "獨立"
+
+#: deluge/ui/gtk3/preferences.py:942
+msgid "Switching Deluge Client Mode..."
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:943
+#, python-format
+msgid "Do you want to restart to use %s mode?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1154
+msgid "Select the Plugin"
+msgstr "選取外掛"
+
+#: deluge/ui/gtk3/preferences.py:1170
+msgid "Plugin Eggs"
+msgstr "外掛 Egg"
+
+#: deluge/ui/gtk3/preferences.py:1297
+msgid "Server Side Error"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1298
+msgid "An error occurred on the server"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375
+msgid "Error Adding Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1369
+msgid "Authentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1376
+msgid "An error occurred while adding account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1408
+msgid "Error Updating Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1409
+msgid "An error occurred while updating account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1427
+msgid "Remove Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1429
+#, python-format
+msgid ""
+"Are you sure you want to remove the account with the username "
+"\"%(username)s\"?"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448
+msgid "Error Removing Account"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1442
+msgid "Auhentication failed"
+msgstr ""
+
+#: deluge/ui/gtk3/preferences.py:1449
+msgid "An error occurred while removing account"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:122
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:28
+msgid "States"
+msgstr "狀態"
+
+#: deluge/ui/gtk3/filtertreeview.py:128
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:30
+msgid "Trackers"
+msgstr "追蹤伺服器"
+
+#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33
+msgid "None"
+msgstr "無"
+
+#: deluge/ui/gtk3/filtertreeview.py:137
+msgid "Admin"
+msgstr ""
+
+#: deluge/ui/gtk3/filtertreeview.py:159
+#: deluge/ui/web/js/deluge-all/FilterPanel.js:34
+msgid "Labels"
+msgstr "標示"
+
+#: deluge/ui/gtk3/filtertreeview.py:204
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28
+msgid "No Label"
+msgstr "無標籤"
+
+#: deluge/ui/gtk3/filtertreeview.py:206
+msgid "No Owner"
+msgstr ""
+
+#: deluge/ui/gtk3/new_release_dialog.py:60
+msgid "<i>Client Version</i>"
+msgstr "<i>用戶端版本</i>"
+
+#: deluge/ui/gtk3/queuedtorrents.py:118
+msgid " Torrents Queued"
+msgstr " 種子已排入佇列"
+
+#: deluge/ui/gtk3/queuedtorrents.py:120
+msgid " Torrent Queued"
+msgstr " 種子已佇列"
+
+#: deluge/ui/gtk3/torrentview.py:421
+msgid "Torrent is shared between other Deluge users or not."
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:67
+msgid "Remove the selected torrents?"
+msgstr ""
+
+#: deluge/ui/gtk3/removetorrentdialog.py:68
+#, python-format
+msgid "Total of %s torrents selected"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:79
+msgid "Set Unlimited"
+msgstr "設為無限制"
+
+#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259
+msgid "On"
+msgstr "開啟"
+
+#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265
+msgid "Off"
+msgstr "關閉"
+
+#: deluge/ui/gtk3/menubar.py:101
+msgid "Disable"
+msgstr "停用"
+
+#: deluge/ui/gtk3/menubar.py:104
+msgid "Enable..."
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:465
+msgid "Peer Upload Slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:466
+msgid "Set the maximum upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:471
+msgid "Stop Seed At Ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:606
+msgid "Ownership Change Error"
+msgstr ""
+
+#: deluge/ui/gtk3/menubar.py:607
+msgid "There was an error while trying changing ownership."
+msgstr ""
+
+#: deluge/ui/gtk3/peers_tab.py:91
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66
+msgid "Address"
+msgstr "位址"
+
+#: deluge/ui/gtk3/peers_tab.py:107
+#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73
+msgid "Client"
+msgstr "用戶端"
+
+#: deluge/ui/gtk3/__init__.py:29
+msgid "GTK Options"
+msgstr ""
+
+#: deluge/ui/gtk3/__init__.py:36
+msgid ""
+"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
+"running Deluge GTK instance"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
+msgid "Creating Torrent"
+msgstr "正在建立種子"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1
+msgid "Queued Torrents"
+msgstr "已佇列的種子"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
+msgid "Add Queued Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:6
+msgid "_Remove"
+msgstr "移除(_R)"
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6
+msgid "_Clear"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7
+msgid "Automatically add torrents on connect"
+msgstr "連線時自動加入種子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12
+msgid "_File"
+msgstr "檔案(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:2
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:2
+msgid "_Add Torrent"
+msgstr "新增種子(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:3
+msgid "_Create Torrent"
+msgstr "建立種子(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:4
+msgid "Quit & _Shutdown Daemon"
+msgstr "離開並關閉常駐(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:5
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:8
+msgid "_Quit"
+msgstr "結束(_Q)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:6
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:5
+msgid "_Edit"
+msgstr "編輯(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:7
+msgid "_Preferences"
+msgstr "偏好設定(_P)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:8
+msgid "_Connection Manager"
+msgstr "連線管理員(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:9
+msgid "_Torrent"
+msgstr "種子(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:10
+msgid "_View"
+msgstr "檢視(_V)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:11
+msgid "_Toolbar"
+msgstr "工具列(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:12
+msgid "_Sidebar"
+msgstr "側邊欄(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:13
+msgid "Status_bar"
+msgstr "狀態列(_B)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:14
+msgid "T_abs"
+msgstr "索引標籤(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:15
+msgid "_Columns"
+msgstr "欄位(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:16
+msgid "_Find ..."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:17
+msgid "S_idebar"
+msgstr "側邊欄(_I)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:18
+msgid "Show _Zero Hits"
+msgstr "顯示空的項目(_Z)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:19
+msgid "Show _Trackers"
+msgstr "顯示追蹤伺服器(_T)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:20
+msgid "Show _Owners"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:21
+msgid "_Help"
+msgstr "說明(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:22
+msgid "_Homepage"
+msgstr "首頁(_H)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:23
+msgid "_FAQ"
+msgstr "常見問題(_F)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:24
+msgid "Frequently Asked Questions"
+msgstr "常見問題"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:25
+msgid "_Community"
+msgstr "社群(_C)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:26
+msgid "_About"
+msgstr "關於(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:27
+msgid "Add torrent"
+msgstr "新增種子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:28
+msgid "Add Torrent"
+msgstr "新增種子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:29
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221
+msgid "Remove torrent"
+msgstr "移除種子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:30
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34
+#: deluge/ui/web/js/deluge-all/Menus.js:331
+msgid "Remove Torrent"
+msgstr "移除種子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:31
+msgid ""
+"Filter torrents by name.\n"
+"This will filter torrents for the current selection on the sidebar."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:33
+msgid "Filter"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:34
+msgid "Pause the selected torrents"
+msgstr "暫停選取的種子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:54
+#: deluge/ui/web/js/deluge-all/Menus.js:52
+msgid "Pause"
+msgstr "暫停"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:36
+msgid "Resume the selected torrents"
+msgstr "繼續選取的種子"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:37
+#: deluge/ui/web/js/deluge-all/Toolbar.js:61
+#: deluge/ui/web/js/deluge-all/Menus.js:59
+msgid "Resume"
+msgstr "恢復"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:38
+msgid "Queue Torrent Up"
+msgstr "佇列中種子上移"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:39
+msgid "Queue Up"
+msgstr "往上移"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:40
+msgid "Queue Torrent Down"
+msgstr "佇列中種子下移"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:41
+msgid "Queue Down"
+msgstr "往下移"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:42
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14
+#: deluge/ui/web/js/deluge-all/Toolbar.js:84
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24
+msgid "Preferences"
+msgstr "偏好設定"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:43
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:1
+#: deluge/ui/web/js/deluge-all/Toolbar.js:91
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21
+msgid "Connection Manager"
+msgstr "連線管理員"
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:44
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:111
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86
+msgid "Close"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:45
+msgid "Filter:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:46
+msgid "Clear the search"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.ui.h:47
+msgid "_Match Case"
+msgstr "符合大小寫(_M)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66
+msgid "Forced"
+msgstr "強制加密"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3
+#: deluge/ui/console/modes/preferences/preference_panes.py:383
+#: deluge/ui/console/modes/preferences/preference_panes.py:392
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68
+msgid "Disabled"
+msgstr "已停用"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87
+msgid "Handshake"
+msgstr "握手"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88
+msgid "Full Stream"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6
+#: deluge/ui/console/modes/preferences/preference_panes.py:400
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89
+msgid "Either"
+msgstr "任一"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34
+msgid "Socks4"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35
+msgid "Socks5"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
+msgid "Socks5 Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
+msgid "HTTP"
+msgstr "HTTP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
+msgid "HTTP Auth"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
+msgid "I2P"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19
+msgid "The standalone self-contained application"
+msgstr "獨立完整的應用程式"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20
+msgid "Thin Client"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
+msgid "Connect to a Deluge daemon (deluged)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
+msgid "Application Mode"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
+msgid "Show session speed in titlebar"
+msgstr "在標題列顯示速度"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24
+msgid "Focus window when adding torrent"
+msgstr "加入種子時,聚焦視窗"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25
+msgid ""
+"The pieces bar\n"
+"will increase bandwidth use between client\n"
+"and daemon (does not apply in Standalone mode)."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28
+msgid "Show a pieces bar in Status tab"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25
+#: deluge/ui/web/render/tab_status.html:27
+msgid "Completed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72
+msgid "Downloading:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
+msgid "Waiting:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
+msgid "Missing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
+msgid "_Revert"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
+msgid "Revert color to default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
+msgid "Piece Colors"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36
+msgid "Main Window"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37
+msgid "Enable system tray icon"
+msgstr "啟用系統列圖示"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38
+msgid "App Indicator"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39
+msgid "Systray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40
+msgid "Minimize to tray on close"
+msgstr "關閉時最小化到系統列"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41
+msgid "Start in tray"
+msgstr "啟動於系統列"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42
+msgid "Password protect system tray"
+msgstr "縮小到系統列的密碼保護"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
+msgid "System Tray"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
+msgid "Notify about new releases"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38
+msgid "Updates"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235
+msgid "System Default"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48
+msgid "<b>Language</b>"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61
+msgid "Move completed to:"
+msgstr "將完成的下載移至:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70
+msgid "Copy of .torrent files to:"
+msgstr "複製種子檔案到:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51
+#: deluge/ui/console/modes/preferences/preference_panes.py:275
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19
+msgid "Delete copy of torrent file on remove"
+msgstr "移除時刪除種子檔副本"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52
+msgid ""
+"Delete the copy of the torrent file created when the torrent is removed"
+msgstr "當種子被移除時也刪除建立的種子檔案副本"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53
+msgid "Download to:"
+msgstr "下載到:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
+msgid "Download Folders"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
+msgid "Prioritize first and last pieces of torrent"
+msgstr "優先下載種子的開頭和最後的部份"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56
+msgid "Prioritize first and last pieces of files in torrent"
+msgstr "先下載種子的頭尾部份"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57
+#: deluge/ui/console/modes/preferences/preference_panes.py:287
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102
+msgid "Sequential download"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15
+msgid ""
+"When enabled, the piece picker will pick pieces in\n"
+"sequence instead of rarest first.\n"
+"\n"
+"Enabling sequential download will affect the piece\n"
+"distribution negatively in the swarm. It should be\n"
+"used sparingly."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111
+msgid "Add torrents in Paused state"
+msgstr "以暫停狀態加入種子"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
+msgid "Pre-allocate disk space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
+msgid "Pre-allocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
+msgid "Add Torrent Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
+msgid "Always show"
+msgstr "永遠顯示"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69
+msgid "Bring the dialog to focus"
+msgstr "取得對話框焦點"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
+msgid "Add Torrents Dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
+msgid "Connection Attempts per Second:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
+msgid "Half-Open Connections:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
+msgid "The maximum number of connections allowed. Set -1 for unlimited."
+msgstr "允許的最大連線數。若不限制請設為-1。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8
+msgid "Connections:"
+msgstr "連接數:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75
+msgid "The maximum upload slots for all torrents. Set -1 for unlimited."
+msgstr "最大總上傳區段。若不限制,請設為 -1。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
+msgid "Upload Slots:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
+msgid "The maximum download speed for all torrents. Set -1 for unlimited."
+msgstr "最大總下載速度。若不限制,請設為 -1。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7
+msgid "Download Speed:"
+msgstr "下載速度:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79
+msgid "The maximum upload speed for all torrents. Set -1 for unlimited."
+msgstr "最大總上傳速度。若不限制,請設為 -1。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6
+msgid "Upload Speed:"
+msgstr "上傳速度:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82
+#: deluge/ui/console/modes/preferences/preference_panes.py:458
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131
+msgid "Ignore limits on local network"
+msgstr "本地網路忽略限制"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141
+msgid "Rate limit IP overhead"
+msgstr "流量管制 IP 資訊量"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84
+msgid ""
+"If checked, the estimated TCP/IP overhead is drained from the rate limiters, "
+"to avoid exceeding the limits with the total traffic"
+msgstr "一旦勾選,估計的 TCP/IP 資料量將由流量管制器控制,以避免整體流量超出這些限制"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
+msgid "Global Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
+msgid "The maximum upload slots per torrent. Set -1 for unlimited."
+msgstr "各種子最大上傳區段。若不限制,請設為 -1。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87
+msgid "The maximum number of connections per torrent. Set -1 for unlimited."
+msgstr "各種子最大連線數。若不限制,請設為 -1。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88
+msgid "The maximum number download speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89
+msgid "The maximum upload speed per torrent. Set -1 for unlimited."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
+msgid "Per-Torrent Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
+#: deluge/ui/console/modes/preferences/preference_panes.py:556
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
+msgid "Queue to top"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
+#: deluge/ui/console/modes/preferences/preference_panes.py:554
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
+msgid "New Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
+msgid "Seeding:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
+msgid "Total:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
+msgid "Ignore slow torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96
+msgid ""
+"Torrents not transfering any data do not count towards download/seeding "
+"active count."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111
+msgid "Prefer seeding torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98
+msgid "Give preference to seeding torrents over downloading torrents."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99
+#: deluge/ui/console/modes/preferences/preference_panes.py:558
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
+msgid "Active Torrents"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
+#: deluge/ui/web/render/tab_status.html:4
+msgid "Share Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
+msgid "Time Ratio:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
+msgid "Time (m):"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
+#: deluge/ui/console/modes/preferences/preference_panes.py:590
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
+msgid "Seeding Rotation"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
+msgid "Pause Torrent"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106
+#: deluge/ui/console/modes/preferences/preference_panes.py:627
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
+msgid "Share Ratio Reached"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
+msgid ""
+"The IP address of the interface to listen for incoming bittorrent "
+"connections on. Leave this empty if you want to use the default."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
+msgid "Incoming Address"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
+msgid "Random"
+msgstr "隨機"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110
+msgid "Uses random ports in range 49152 to 65525"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111
+msgid "Active Port:"
+msgstr "啟用的通訊埠:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112
+msgid "Test Active Port"
+msgstr "測試可用通訊埠"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
+msgid "Incoming Port"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
+msgid ""
+"\n"
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.)\n"
+" "
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117
+#: deluge/ui/console/modes/preferences/preference_panes.py:359
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
+msgid "Outgoing Interface"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
+msgid "From:"
+msgstr "從:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
+msgid "To:"
+msgstr "至:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120
+#: deluge/ui/console/modes/preferences/preference_panes.py:328
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
+msgid "Outgoing Ports"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
+msgid "Outgoing:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38
+msgid "Incoming:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80
+msgid "Level:"
+msgstr "層級:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124
+#: deluge/ui/console/modes/preferences/preference_panes.py:379
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18
+msgid "Encryption"
+msgstr "加密"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194
+msgid "UPnP"
+msgstr "UPnP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126
+msgid "Universal Plug and Play"
+msgstr "通用隨插即用"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203
+msgid "NAT-PMP"
+msgstr "NAT-PMP"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128
+msgid "NAT Port Mapping Protocol"
+msgstr "NAT 通訊埠對映協定"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213
+msgid "Peer Exchange"
+msgstr "用戶交換"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130
+msgid "Exchanges peers between clients. (Disabling requires restart)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223
+msgid "LSD"
+msgstr "LSD"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132
+msgid "Local Service Discovery finds local peers on your network."
+msgstr "本地服務探索可在您的網路上尋找本地用戶。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133
+#: deluge/ui/console/widgets/statusbars.py:118
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232
+msgid "DHT"
+msgstr "DHT"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134
+msgid "Distributed hash table may improve the amount of active connections."
+msgstr "分散式雜湊表 (DHT) 可以增加有效的連線數。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251
+msgid "Peer TOS Byte:"
+msgstr "用戶服務類型位元組:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136
+#: deluge/ui/console/modes/preferences/preference_panes.py:372
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
+msgid "Network Extras"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
+#: deluge/ui/console/modes/connectionmanager.py:121
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5
+msgid "Hostname:"
+msgstr "主機名稱:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5
+#: deluge/ui/console/modes/connectionmanager.py:122
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150
+msgid "Port:"
+msgstr "連接埠:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140
+#: deluge/ui/console/modes/preferences/preference_panes.py:658
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94
+msgid "Proxy Hostnames"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141
+msgid ""
+"Hostnames should be attempted to be resolved through\n"
+"the proxy instead of using the local DNS service"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143
+#: deluge/ui/console/modes/preferences/preference_panes.py:661
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103
+msgid "Proxy Peers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
+msgid "Proxy peer and web seed connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
+#: deluge/ui/console/modes/preferences/preference_panes.py:665
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112
+msgid "Proxy Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
+msgid "Force Proxy Use"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
+#: deluge/ui/console/modes/preferences/preference_panes.py:671
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
+msgid "Hide Client Identity"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
+msgid ""
+"Attempt to hide client identity and only use proxy for incoming connections."
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150
+#: deluge/ui/console/modes/preferences/preference_panes.py:668
+#: deluge/ui/console/modes/preferences/preference_panes.py:669
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
+msgid "Force Proxy"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
+msgid "Cache Size (16 KiB blocks):"
+msgstr "快取大小 (16 KiB 區塊):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152
+msgid ""
+"The number of seconds from the last cached write to a piece in the write "
+"cache, to when it's forcefully flushed to disk. Default is 60 seconds."
+msgstr "從最後一次寫入快取的時間到它強制寫入硬碟所經過的秒數。預設為 60 秒。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53
+msgid "Cache Expiry (seconds):"
+msgstr "快取失效 (秒):"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154
+#: deluge/ui/console/modes/preferences/preference_panes.py:694
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14
+#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
+msgid "Settings"
+msgstr "設定"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
+msgid ""
+"The total number of 16 KiB blocks written to disk since this session was "
+"started."
+msgstr "自此工作階段開始以來,寫入硬碟的 16 KiB 區塊總數。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156
+msgid "Blocks Written:"
+msgstr "已寫入區塊:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157
+msgid ""
+"The total number of write operations performed since this session was "
+"started."
+msgstr "自此工作階段開始以來,寫入動作的總次數。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158
+msgid "Writes:"
+msgstr "寫入:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159
+msgid ""
+"The ratio (blocks_written - writes) / blocks_written represents the number "
+"of saved write operations per total write operations, i.e. a kind of cache "
+"hit ratio for the write cache."
+msgstr "比率「(已寫入區塊 - 寫入)/已寫入區塊」代表每一個寫入操作內有被儲存的個數,即寫入用快取的快取命中率。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160
+msgid "Write Cache Hit Ratio:"
+msgstr "寫入快取命中率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
+#: deluge/ui/console/modes/preferences/preference_panes.py:709
+msgid "Write"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
+msgid ""
+"The number of blocks that were requested from the bittorrent engine (from "
+"peers), that were served from disk or cache."
+msgstr "BT 引擎 (用戶) 所要求的區塊數量,這些區塊由磁碟或快取所提供。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163
+msgid "Blocks Read:"
+msgstr "已讀取區塊:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164
+msgid "The number of blocks that were served from cache."
+msgstr "由快取提供的區塊個數。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165
+msgid "Blocks Read Hit:"
+msgstr "讀取快取命中:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166
+msgid "The cache hit ratio for the read cache."
+msgstr "讀取用快取的快取命中率。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167
+msgid "Read Cache Hit Ratio:"
+msgstr "讀取快取命中率:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168
+msgid ""
+"The total number of read operations performed since this session was started."
+msgstr "自此工作階段開始以來,讀取動作的總次數。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169
+msgid "Reads:"
+msgstr "讀取:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
+#: deluge/ui/console/modes/preferences/preference_panes.py:723
+msgid "Read"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
+msgid ""
+"The number of 16 KiB blocks currently in the disk cache. This includes both "
+"read and write cache."
+msgstr "目前於磁碟快取內的 16 KiB 區塊個數。包括讀取與寫入快取。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172
+msgid "Cache Size:"
+msgstr "快取大小:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173
+msgid "Read Cache Size:"
+msgstr "讀取快取大小:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:7
+msgid "_Refresh"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+"傳送您使用的 Python 版本、PyGTK 版本、作業系統與處理器(CPU)種類來幫助我們改善 Deluge。絕對不會有額外的資訊被傳送出去。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77
+msgid "Yes, please send anonymous statistics"
+msgstr "是的,請傳送匿名統計"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179
+#: deluge/ui/console/modes/preferences/preference_panes.py:503
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57
+msgid "System Information"
+msgstr "系統資訊"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180
+msgid "Location:"
+msgstr "位置:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181
+msgid ""
+"If Deluge cannot find the database file at this location it will fallback to "
+"using DNS to resolve the peer's country."
+msgstr "若 Deluge 無法在該位置找到資料庫檔案,將會回退至使用 DNS 來解析用戶所在國家。"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182
+#: deluge/ui/console/modes/preferences/preference_panes.py:516
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85
+msgid "GeoIP Database"
+msgstr "GeoIP 資料庫"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
+msgid "Associate with Deluge"
+msgstr "將其與 Deluge 進行關聯"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
+msgid "Magnet Links"
+msgstr "磁性連結"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
+msgid "Daemon port:"
+msgstr "常駐程式連接埠:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186
+#: deluge/ui/console/modes/preferences/preference_panes.py:655
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30
+msgid "Port"
+msgstr "通訊埠"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61
+msgid "Allow Remote Connections"
+msgstr "允許遠端連結"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4
+#: deluge/ui/web/js/deluge-all/Statusbar.js:39
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50
+msgid "Connections"
+msgstr "連接數"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189
+#: deluge/ui/console/modes/preferences/preference_panes.py:543
+#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80
+msgid "Periodically check the website for new releases"
+msgstr "定期檢查此版本的更新"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193
+msgid "_Delete"
+msgstr "刪除(_D)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194
+msgid "Accounts"
+msgstr "帳號"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29
+msgid "Version:"
+msgstr "版本:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26
+msgid "Author:"
+msgstr "作者:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35
+msgid "Homepage:"
+msgstr "首頁:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32
+msgid "Author Email:"
+msgstr "作者電子郵件地址:"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18
+msgid "Info"
+msgstr "資訊"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201
+msgid "_Install"
+msgstr "安裝(_I)"
+
+#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
+msgid "_Find More..."
+msgstr "尋找更多(_F)..."
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
+msgid "Remove the selected torrent(s)?"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
+msgid "Include downloaded files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
+msgid "(This is permanent!)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
+msgid "Add Peer"
+msgstr "加入用戶"
+
+#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4
+msgid "hostname:port"
+msgstr "主機名稱:通訊埠"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1
+msgid "Properties"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3
+msgid "Max drop down rows"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5
+msgid "<b>General</b>"
+msgstr "<b>一般</b>"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
+msgid "Show path entry"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
+msgid "Show file chooser"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
+msgid "Show folder name"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
+msgid "Path Chooser Type"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
+msgid "Enable autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10
+msgid "Show hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
+msgid "Set new key"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
+msgid "Press this key to set new key accelerators to trigger auto-complete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13
+msgid "Autocomplete"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14
+msgid "Save path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15
+msgid "Ctrl+S"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16
+msgid "Ctrl+E"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17
+msgid "Ctrl+R"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18
+msgid "Ctrl+H"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19
+msgid "Ctrl+D"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
+msgid "Toggle hidden files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
+msgid "Default path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
+msgid "Shortcuts"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
+msgid "Select a Directory"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26
+msgid "Saved paths"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27
+msgid "column"
+msgstr "欄"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:36
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64
+msgid "Cancel"
+msgstr "取消"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30
+msgid "Open"
+msgstr "開啟"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31
+#: deluge/ui/web/js/deluge-all/Toolbar.js:39
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65
+msgid "Add"
+msgstr "新增"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
+msgid "Add the current entry value to the list"
+msgstr "將目前所選的項目加入列表中"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102
+msgid "Edit"
+msgstr "編輯"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34
+msgid "Edit the selected entry"
+msgstr "編輯所選的項目"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35
+#: deluge/ui/web/js/deluge-all/Toolbar.js:46
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156
+msgid "Remove"
+msgstr "移除"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36
+msgid "Remove the selected entry"
+msgstr "移除所選的項目"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38
+msgid "Move the selected entry up"
+msgstr "將所選的項目上移"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40
+msgid "Move the selected entry down"
+msgstr "將所選的項目下移"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41
+msgid "Default"
+msgstr "預設"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42
+msgid "No default path set"
+msgstr "沒有設定預設的路徑"
+
+#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43
+msgid "Open properties dialog"
+msgstr "開啟屬性對話框"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1
+msgid "Add Infohash"
+msgstr "新增資訊雜湊"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
+msgid "From Infohash"
+msgstr "從資訊雜湊"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
+msgid "Infohash:"
+msgstr "資訊雜湊:"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53
+msgid "Trackers:"
+msgstr "追蹤伺服器:"
+
+#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Add Host"
+msgstr "新增主機"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:16
+#: deluge/ui/web/js/deluge-all/Menus.js:346
+msgid "Move Download Folder"
+msgstr "移動下載資料夾"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4
+msgid "Move the torrent(s) download folder."
+msgstr "移動種子下載資料夾。"
+
+#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5
+msgid "Destination:"
+msgstr "目的地:"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1
+msgid "New Release"
+msgstr "新版本"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
+msgid "_Goto Website"
+msgstr "前往網站(_G)"
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
+msgid "New Release Available!"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5
+msgid "Available Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6
+msgid "Server Version"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7
+msgid "Current Version:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8
+msgid "Do not show this dialog in the future"
+msgstr "以後不要顯示這個對話視窗"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
+#: deluge/ui/web/render/tab_status.html:9
+msgid "Down Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
+#: deluge/ui/web/render/tab_status.html:10
+msgid "Up Speed:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
+#: deluge/ui/web/render/tab_status.html:2
+msgid "Downloaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
+#: deluge/ui/web/render/tab_status.html:3
+msgid "Uploaded:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
+#: deluge/ui/web/render/tab_status.html:16
+msgid "Seeds:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
+#: deluge/ui/web/render/tab_status.html:17
+msgid "Peers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
+#: deluge/ui/web/render/tab_status.html:18
+msgid "Availability:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
+#: deluge/ui/web/render/tab_status.html:25
+msgid "Seed Rank:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
+msgid "ETA Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
+#: deluge/ui/web/render/tab_status.html:13
+msgid "Last Transfer:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
+#: deluge/ui/web/render/tab_status.html:23
+msgid "Active Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
+#: deluge/ui/web/render/tab_status.html:20
+msgid "Complete Seen:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
+#: deluge/ui/web/render/tab_status.html:24
+msgid "Seeding Time:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
+#: deluge/ui/web/render/tab_status.html:12
+msgid "Pieces:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23
+msgid "Name:"
+msgstr "名稱:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25
+msgid "Download Folder:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19
+msgid "Added:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26
+msgid "Total Size:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
+msgid "Total Files:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
+msgid "Hash:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31
+msgid "Created By:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17
+msgid "Comments:"
+msgstr "註解:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29
+msgid "Owner:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34
+msgid "Move completed:"
+msgstr "移動完整檔:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205
+msgid "Stop seed at ratio:"
+msgstr "達到指定的分享率時停止種子:"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
+msgid "Remove at ratio"
+msgstr "達到分享率時刪除"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
+msgid "Bandwidth Limits"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
+msgid "Current Tracker:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
+msgid "Total Trackers:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
+#: deluge/ui/web/render/tab_status.html:6
+msgid "Tracker Status:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
+#: deluge/ui/web/render/tab_status.html:5
+msgid "Next Announce:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50
+msgid "Private Torrent:"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8
+msgid "_Edit Trackers"
+msgstr "編輯追蹤伺服器(_E)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44
+#: deluge/ui/web/js/deluge-all/Menus.js:284
+msgid "Top"
+msgstr "最上方"
+
+#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45
+#: deluge/ui/web/js/deluge-all/Menus.js:305
+msgid "Bottom"
+msgstr "最下方"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50
+msgid "Add Torrents"
+msgstr "增加種子"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5
+msgid "_URL"
+msgstr "網址(_U)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6
+msgid "Info_hash"
+msgstr "資訊驗證碼(_H)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11
+msgid "Move Complete Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12
+msgid "Add In _Paused State"
+msgstr "以暫停狀態新增(_P)"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134
+msgid "Prioritize First/Last Pieces"
+msgstr "開頭與結尾區塊優先"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
+msgid "Skip File Hash Check"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
+msgid "Preallocate Disk Space"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
+msgid "Preallocate the disk space for the torrent files"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
+msgid "Maximum torrent download speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27
+msgid "Maximum torrent upload speed"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
+msgid "Maximum torrent connections"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
+msgid "Maximum torrent upload slots"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34
+msgid "Apply To All"
+msgstr "全部套用"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35
+msgid "Revert To Defaults"
+msgstr "回復預設值"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:1
+msgid "_Show Deluge"
+msgstr "顯示 Deluge 視窗(_S)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:3
+msgid "_Pause Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:4
+msgid "_Resume Session"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:5
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1
+msgid "_Download Speed Limit"
+msgstr "下載速限(_D)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:6
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2
+msgid "_Upload Speed Limit"
+msgstr "上傳速限(_U)"
+
+#: deluge/ui/gtk3/glade/tray_menu.ui.h:7
+msgid "Quit & Shutdown Daemon"
+msgstr "離開並關閉常駐"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17
+#: deluge/ui/web/js/deluge-all/Menus.js:323
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318
+msgid "Edit Trackers"
+msgstr "編輯追蹤伺服器"
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19
+msgid "_Up"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22
+msgid "_Down"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1
+msgid "_Add Peer"
+msgstr "加入用戶(_A)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2
+msgid "Add a peer by its IP"
+msgstr "以 IP 加入一個用戶"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17
+msgid "Edit Tracker"
+msgstr "編輯追蹤伺服器"
+
+#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30
+msgid "Tracker:"
+msgstr "追蹤伺服器:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1
+msgid "Enter Remote Path"
+msgstr "輸入遠端路徑"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4
+msgid "Remote Path"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94
+msgid "Path:"
+msgstr "路徑:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1
+msgid "32 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2
+msgid "64 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3
+msgid "128 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4
+msgid "256 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5
+msgid "512 KiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6
+msgid "1 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7
+msgid "2 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8
+msgid "4 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9
+msgid "8 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10
+msgid "16 MiB"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11
+msgid "Create Torrent"
+msgstr "建立種子"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13
+msgid "Fol_der"
+msgstr "資料夾(_D)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14
+msgid "_Remote Path"
+msgstr "遠端路徑(_R)"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12
+#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18
+msgid "Files"
+msgstr "檔案"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24
+msgid "Webseeds"
+msgstr "網路種子"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25
+msgid "Piece Size:"
+msgstr "片段大小:"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26
+msgid "Set Private Flag"
+msgstr "設定私人標籤"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27
+msgid "Add this torrent to the session"
+msgstr "新增這個種子至此工作階段"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28
+#: deluge/ui/console/modes/preferences/preference_panes.py:279
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48
+#: deluge/ui/web/js/deluge-all/Menus.js:66
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17
+msgid "Options"
+msgstr "選項"
+
+#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1
+msgid "Save .torrent as"
+msgstr "另存種子為"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1
+msgid "_Open Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2
+msgid "_Pause"
+msgstr "暫停(_P)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3
+msgid "Resu_me"
+msgstr "繼續(_M)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
+msgid "Resume selected torrents."
+msgstr "繼續選取的種子檔。"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
+msgid "Opt_ions"
+msgstr "選項(_I)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6
+msgid "_Queue"
+msgstr "佇列(_Q)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7
+msgid "_Update Tracker"
+msgstr "更新追蹤伺服器(_U)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9
+msgid "_Remove Torrent"
+msgstr "移除種子(_R)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10
+msgid "_Force Re-check"
+msgstr "強制重新檢查 (_F)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11
+msgid "_Move Download Folder"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/other_dialog.ui.h:3
+msgid "label"
+msgstr "標籤"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1
+msgid "_Select All"
+msgstr "全選(_S)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2
+msgid "_Pause All"
+msgstr "全部暫停(_P)"
+
+#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3
+msgid "Resu_me All"
+msgstr "全部繼續(_M)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3
+msgid "_Connection Limit"
+msgstr "最大連接數量(_C)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4
+msgid "Upload _Slot Limit"
+msgstr "上傳連接數限制(_S)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
+msgid "Stop seed at _ratio"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
+msgid "_Auto Managed"
+msgstr "自動管理(_A)"
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
+msgid "_Super Seeding"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
+msgid "_Change Ownership"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1
+#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26
+msgid "Add Tracker"
+msgstr "增加追蹤伺服器"
+
+#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4
+msgid "Add Trackers"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1
+msgid "Add URL"
+msgstr "新增 URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
+msgid "From URL"
+msgstr "從 URL"
+
+#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
+msgid "URL:"
+msgstr "URL:"
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
+msgid "Deluge Daemons"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
+msgid "Auto-connect to selected Daemon"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:11
+msgid "Auto-start localhost daemon (if required)"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:12
+msgid "Hide this dialog"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/connection_manager.ui.h:13
+msgid "Startup Options"
+msgstr ""
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1
+msgid "_Open File"
+msgstr "開啟檔案(_O)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2
+msgid "_Show Folder"
+msgstr "顯示資料夾(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3
+msgid "_Expand All"
+msgstr "全部展開(_E)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4
+msgid "_Skip"
+msgstr "略過(_S)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5
+msgid "_Low"
+msgstr "低(_)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6
+msgid "_Normal"
+msgstr "普通(_N)"
+
+#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7
+msgid "_High"
+msgstr "高(_H)"
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1
+msgid "Deluge Team"
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2
+msgid ""
+"Deluge is a lightweight, Free Software, cross-platform BitTorrent client."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3
+msgid ""
+"Deluge contains the common features to BitTorrent clients such as Protocol "
+"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-"
+"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As "
+"Deluge heavily utilises the libtorrent library it has a comprehensive list "
+"of the features provided."
+msgstr ""
+
+#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
+msgid ""
+"Deluge has been designed to run as both a normal standalone desktop "
+"application and as a client-server. In Thinclient mode a Deluge daemon "
+"handles all the BitTorrent activity and is able to run on headless machines "
+"with the user-interfaces connecting remotely from any other platform."
+msgstr ""
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:2
+msgid "BitTorrent Client"
+msgstr "BitTorrent 用戶端"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:3
+msgid "Deluge BitTorrent Client"
+msgstr "Deluge BitTorrent 用戶端"
+
+#: deluge/ui/data/share/applications/deluge.desktop.in.h:4
+msgid "Download and share files over BitTorrent"
+msgstr "透過 BitTorrent 協定來下載和分享檔案"
+
+#: deluge/ui/console/console.py:76
+msgid "Console Options"
+msgstr ""
+
+#: deluge/ui/console/console.py:78
+msgid ""
+"These daemon connect options will be used for commands, or if console ui "
+"autoconnect is enabled."
+msgstr ""
+
+#: deluge/ui/console/console.py:87
+msgid "Deluge daemon IP address to connect to (default 127.0.0.1)"
+msgstr ""
+
+#: deluge/ui/console/console.py:96
+msgid "Deluge daemon port to connect to (default 58846)"
+msgstr ""
+
+#: deluge/ui/console/console.py:104
+msgid "Deluge daemon username to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:111
+msgid "Deluge daemon password to use when connecting"
+msgstr ""
+
+#: deluge/ui/console/console.py:131
+msgid "Console Commands"
+msgstr ""
+
+#: deluge/ui/console/console.py:132
+msgid "Description"
+msgstr ""
+
+#: deluge/ui/console/console.py:133
+msgid "The following console commands are available:"
+msgstr ""
+
+#: deluge/ui/console/console.py:134
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2
+msgid "Command"
+msgstr "指令"
+
+#: deluge/ui/console/cmdline/command.py:208
+#, python-format
+msgid "`%s` alias"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:29
+msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:35
+msgid "an expression matched against torrent ids and torrent names"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:43
+#: deluge/ui/console/cmdline/commands/config.py:88
+msgid "set value for this key"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:46
+#: deluge/ui/console/cmdline/commands/config.py:91
+msgid "Value to set"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/manage.py:53
+#: deluge/ui/console/cmdline/commands/config.py:98
+msgid "one or more keys separated by space"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:33
+msgid "Also removes the torrent data"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:40
+msgid "List the matching torrents without removing."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:46
+#: deluge/ui/console/cmdline/commands/recheck.py:28
+#: deluge/ui/console/cmdline/commands/move.py:31
+msgid "One or more torrent ids"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/rm.py:66
+#, python-format
+msgid "Confirm with -c to remove the listed torrents (Count: %d)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:22
+msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/resume.py:29
+msgid "One or more torrent ids. Use \"*\" to resume all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/pause.py:29
+msgid "One or more torrent ids. Use \"*\" to pause all torrents"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:38
+msgid "Download folder for torrent"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:44
+msgid "Move the completed torrent to this folder"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/add.py:50
+msgid "One or more torrent files, URLs or magnet URIs"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:29
+msgid "Lists available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:37
+msgid "Shows enabled plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:40
+msgid "Enables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:43
+msgid "Disables a plugin"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:51
+msgid "Reload list of available plugins"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/plugin.py:54
+msgid "Install a plugin from an .egg file"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:36
+msgid ""
+"Raw values for upload/download rates (without KiB/s suffix)(useful for "
+"scripts that want to do their own parsing)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/status.py:46
+msgid "Do not show torrent status (Improves command speed)"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:26
+msgid "Usage: connect <host[:port]> [<username>] [<password>]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:30
+msgid "Daemon host and port"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/connect.py:36
+#: deluge/ui/console/modes/preferences/preference_panes.py:652
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259
+msgid "Password"
+msgstr "密碼"
+
+#: deluge/ui/console/cmdline/commands/move.py:34
+msgid "The path to move the torrents to"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/debug.py:26
+msgid "The new state"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/help.py:29
+msgid "One or more commands"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/config.py:79
+msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:101
+msgid "Show more information per torrent."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:109
+msgid "Show more detailed information including files and peers."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:116
+#, python-format
+msgid "Show torrents with state STATE: %s."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:132
+msgid "Same as --sort but items are in reverse order."
+msgstr ""
+
+#: deluge/ui/console/cmdline/commands/info.py:138
+msgid "One or more torrent ids. If none is given, list all"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:44
+msgid "Select Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Quit"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:51
+msgid "Delete Host"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:116
+msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)"
+msgstr ""
+
+#: deluge/ui/console/modes/connectionmanager.py:133
+msgid "Error adding host"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Columns"
+msgstr ""
+
+#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96
+msgid "Width"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:178
+msgid "General options"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:182
+msgid "Ring system bell when a download finishes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:188
+msgid "List complete torrents after incomplete regardless of sorting order"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:193
+msgid "Move selection when moving torrents in the queue"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:200
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67
+msgid "Language"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:202
+msgid "Command Line Mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:205
+msgid "Do not store duplicate input in history"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:210
+msgid "Store and load command line history in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:216
+msgid "Third tab lists all remaining torrents in command line mode"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:221
+msgid "Torrents per tab press"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:234
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
+#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39
+msgid "Folders"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:237
+msgid "Download To"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:254
+msgid "Move completed to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:269
+msgid "Copy of .torrent files to"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:290
+msgid "Add Paused"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:293
+msgid "Pre-Allocate disk space"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:304
+msgid "Incomming Ports"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:313
+#: deluge/ui/console/modes/preferences/preference_panes.py:337
+msgid "From"
+msgstr "開始於"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:321
+#: deluge/ui/console/modes/preferences/preference_panes.py:345
+msgid "To"
+msgstr "至"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:331
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131
+msgid "Use Random Ports"
+msgstr "使用隨機連接埠"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:352
+msgid "Incoming Interface"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:355
+msgid "IP address of the interface to listen on (leave empty for default):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:363
+msgid ""
+"The network interface name or IP address for outgoing BitTorrent "
+"connections. (Leave empty for default.):"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:382
+msgid "Inbound"
+msgstr "向內"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:391
+msgid "Outbound"
+msgstr "流出"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:413
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
+msgid "Global Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:416
+#: deluge/ui/console/modes/preferences/preference_panes.py:469
+msgid "Maximum Connections"
+msgstr "最大連線數"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:423
+#: deluge/ui/console/modes/preferences/preference_panes.py:476
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63
+msgid "Maximum Upload Slots"
+msgstr "最大上傳連接數量"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:430
+#: deluge/ui/console/modes/preferences/preference_panes.py:483
+msgid "Maximum Download Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:437
+#: deluge/ui/console/modes/preferences/preference_panes.py:490
+msgid "Maximum Upload Speed (KiB/s)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:444
+msgid "Maximum Half-Open Connections"
+msgstr "最大半開連結的數量"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:451
+msgid "Maximum Connection Attempts per Second"
+msgstr "每秒最大連接數量"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:463
+msgid "Rate Limit IP Overhead"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:466
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
+msgid "Per Torrent Bandwidth Usage"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:513
+msgid "Yes, please send anonymous statistics."
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:531
+msgid "Daemon Port"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:538
+msgid "Allow remote connections"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:561
+msgid "Total"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:593
+msgid "Share Ratio"
+msgstr "分享率"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:601
+msgid "Time Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:609
+msgid "Time (m)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:633
+msgid "Remove torrent (Unchecked pauses torrent)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:646
+msgid "Proxy Settings"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:649
+msgid "Type"
+msgstr "類型"
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:653
+msgid "Hostname"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:673
+msgid "Proxy Type Help"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:697
+msgid "Cache Size (16 KiB blocks)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:704
+msgid "Cache Expiry (seconds)"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:712
+msgid "Blocks Written"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:716
+msgid "Writes"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:720
+msgid "Write Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:725
+msgid "Blocks Read"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:729
+msgid "Blocks Read hit"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:732
+msgid "Reads"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:735
+msgid "Read Cache Hit Ratio"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:741
+msgid "Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preference_panes.py:746
+msgid "Read Cache Size"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87
+msgid "Apply"
+msgstr ""
+
+#: deluge/ui/console/modes/preferences/preferences.py:145
+#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35
+#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52
+#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88
+msgid "OK"
+msgstr ""
+
+#: deluge/ui/console/widgets/fields.py:1070
+msgid "Select Language"
+msgstr ""
+
+#: deluge/ui/console/widgets/statusbars.py:120
+#, python-format
+msgid "IP {!white,blue!}%s{!status!}"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116
+#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
+#, python-format
+msgid "The IP address \"%s\" is badly formed"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
+msgid "Emule IP list (GZip)"
+msgstr "Emule IP 列表 (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
+msgid "SafePeer Text (Zipped)"
+msgstr "SafePeer 文字檔 (已壓縮)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23
+msgid "PeerGuardian Text (Uncompressed)"
+msgstr "PeerGuardian 文字檔 (未壓縮)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24
+msgid "PeerGuardian P2B (GZip)"
+msgstr "PeerGuardian P2B (GZip)"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45
+msgid "Blocked IP Ranges /Whitelisted IP Ranges"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204
+msgid "Blocklist"
+msgstr "阻擋清單"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233
+msgid "Bad IP address"
+msgstr ""
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40
+msgid "Invalid leader"
+msgstr "無效的 Leader"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44
+msgid "Invalid magic code"
+msgstr "無效的 Magic Code"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49
+msgid "Invalid version"
+msgstr "無效的版本"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3
+msgid "Days"
+msgstr "日"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4
+msgid "Check for new list every:"
+msgstr "確認新清單 每"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5
+msgid "Import blocklist on startup"
+msgstr "啟動時匯入阻擋清單"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>設定</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
+msgid "Download the blocklist file if necessary and import the file."
+msgstr "下載阻擋清單(如果需要)並匯入檔案。"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8
+msgid "Check Download and Import"
+msgstr "確認下載並匯入"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9
+msgid "Download a new blocklist file and import it."
+msgstr "下載新的阻擋清單並匯入檔案。"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10
+msgid "Force Download and Import"
+msgstr "強制下載並匯入"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11
+msgid "Blocklist is up to date"
+msgstr "阻擋清單已更新"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12
+msgid "<b>Options</b>"
+msgstr "<b>選項</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25
+msgid "Type:"
+msgstr "類型:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14
+msgid "Date:"
+msgstr "日期:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15
+msgid "File Size:"
+msgstr "檔案大小:"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16
+msgid "<b>Info</b>"
+msgstr "<b>資訊</b>"
+
+#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17
+msgid "<b>Whitelist</b>"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:36
+msgid "Torrent Complete"
+msgstr "種子完成"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:37
+msgid "Torrent Added"
+msgstr "新增種子"
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:38
+msgid "Torrent Removed"
+msgstr ""
+
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:64
+#: deluge/plugins/Execute/deluge_execute/gtkui.py:79
+msgid "Execute"
+msgstr "執行"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1
+msgid "Event"
+msgstr "事件"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3
+msgid "<b>Add Command</b>"
+msgstr "<b>新增指令</b>"
+
+#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4
+msgid "<b>Commands</b>"
+msgstr "<b>指令</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342
+msgid "Incompatible Option"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418
+msgid ""
+"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
+"cannot be the same!"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
+msgid "AutoAdd"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495
+msgid "Double-click to toggle"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511
+msgid "Double-click to edit"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
+msgid "Path"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
+msgid "Watch folder does not exist."
+msgstr "監控資料夾不存在。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
+#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
+msgid "Path does not exist."
+msgstr "路徑不存在。"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
+msgid "Watch Folder Properties"
+msgstr "監控資料夾屬性"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2
+msgid ""
+"If a .torrent file is added to this directory,\n"
+"it will be added to the session."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2
+msgid "Select A Folder"
+msgstr "選擇一個資料夾"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5
+msgid "Enable this watch folder"
+msgstr "啟用此監控資料夾"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6
+msgid "<b>Watch Folder</b>"
+msgstr "<b>監控資料夾</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7
+msgid "Delete .torrent after adding"
+msgstr "加入後刪除種子檔"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will be deleted."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10
+msgid "Append extension after adding:"
+msgstr "加入後附上副檔名:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11
+msgid ""
+"Once the torrent is added to the session,\n"
+"an extension will be appended to the .torrent\n"
+"and it will remain in the same directory."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14
+msgid ".added"
+msgstr ".added"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16
+msgid ""
+"Once the torrent is added to the session,\n"
+"the .torrent will copied to the chosen directory\n"
+"and deleted from the watch folder."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
+msgid ""
+"Once the torrent is deleted from the session,\n"
+"also delete the .torrent file used to add it."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22
+msgid "<b>Torrent File Action</b>"
+msgstr "<b>種子檔案動作</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23
+msgid "Set download folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24
+msgid "This folder will be where the torrent data is downloaded to."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25
+msgid "<b>Download Folder</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
+msgid "Set move completed folder"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
+msgid "<b>Move Completed</b>"
+msgstr "<b>移動完整檔</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28
+msgid "Label: "
+msgstr "標籤: "
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29
+msgid "<b>Label</b>"
+msgstr "<b>標籤</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30
+msgid "Main"
+msgstr "主要"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
+msgid "The user selected here will be the owner of the torrent."
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
+msgid "<b>Owner</b>"
+msgstr ""
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103
+msgid "Max Upload Speed:"
+msgstr "最高上傳速度:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130
+msgid "Max Connections:"
+msgstr "最大連接數目:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153
+msgid "Max Upload Slots:"
+msgstr "最大上傳連接數量:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77
+msgid "Max Download Speed:"
+msgstr "最高下載速度:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38
+msgid "<b>Bandwidth</b>"
+msgstr "<b>流量</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41
+#: deluge/ui/web/render/tab_status.html:19
+msgid "Auto Managed:"
+msgstr "自動管理:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42
+msgid "Add Paused:"
+msgstr "加入暫停:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43
+msgid "Queue to:"
+msgstr "佇列於:"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47
+msgid "<b>Queue</b>"
+msgstr "<b>佇列</b>"
+
+#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1
+msgid "<b>Watch Folders:</b>"
+msgstr "<b>監控資料夾:</b>"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
+msgid "minutes"
+msgstr "分鐘"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
+msgid "1 minute"
+msgstr "1 分鐘"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:64
+msgid "1 second"
+msgstr "1 秒"
+
+#: deluge/plugins/Stats/deluge_stats/gtkui.py:66
+msgid "seconds"
+msgstr "秒"
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
+msgid "Stats"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
+msgid "Resolution"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
+msgid "Seeds/Peers"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
+msgid "Download color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
+msgid "Upload color:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
+msgid "<b>Connections Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
+msgid "<b>Bandwidth Graph</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
+msgid "DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
+msgid "Cached DHT nodes:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
+msgid "DHT torrents:"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
+msgid "<b>Seeds / Peers</b>"
+msgstr ""
+
+#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
+msgid "<b>Graph Colors</b>"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
+msgid "WebUi"
+msgstr ""
+
+#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90
+msgid ""
+"The Deluge web interface is not installed, please install the\n"
+"interface and try again"
+msgstr ""
+"Deluge 網頁介面尚未被安裝,請先安裝好\n"
+"介面再重試一次"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1
+msgid "Enable web interface"
+msgstr "啟動網頁管理介面"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2
+msgid "Enable SSL"
+msgstr "啟動 SSL"
+
+#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
+msgid "Listening port:"
+msgstr "監聽連接埠:"
+
+#: deluge/plugins/Label/deluge_label/core.py:184
+msgid "Invalid label, valid characters:[a-z0-9_-]"
+msgstr "無效的標籤,有效字元:[a-z0-9_-]"
+
+#: deluge/plugins/Label/deluge_label/core.py:186
+msgid "Empty Label"
+msgstr "空白的標籤"
+
+#: deluge/plugins/Label/deluge_label/core.py:187
+msgid "Label already exists"
+msgstr "標籤已存在"
+
+#: deluge/plugins/Label/deluge_label/core.py:195
+#: deluge/plugins/Label/deluge_label/core.py:285
+#: deluge/plugins/Label/deluge_label/core.py:320
+msgid "Unknown Label"
+msgstr "不明的標籤"
+
+#: deluge/plugins/Label/deluge_label/core.py:321
+msgid "Unknown Torrent"
+msgstr "不明的種子"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46
+msgid "Label _Options"
+msgstr "標籤選項(_O)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47
+msgid "_Remove Label"
+msgstr "刪除標籤(_R)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48
+msgid "_Add Label"
+msgstr "新增標籤(_A)"
+
+#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2
+msgid "Label Options"
+msgstr "標籤選項"
+
+#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37
+#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49
+#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77
+msgid "Label"
+msgstr "標籤"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1
+msgid "tracker1.org"
+msgstr "tracker1.org"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3
+msgid "<b>Label Options</b>"
+msgstr "<b>標籤選項</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9
+msgid "Apply per torrent max settings:"
+msgstr "每個種子套用最大值:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10
+msgid "Maximum"
+msgstr "最大值"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14
+msgid "Apply Queue settings:"
+msgstr "套用佇列設定:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
+msgid "Apply folder settings:"
+msgstr "套用資料夾設定:"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
+msgid "<i>(1 line per tracker)</i>"
+msgstr "<i>(每個追蹤伺服器一行)</i>"
+
+#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20
+msgid "Automatically apply label:"
+msgstr "自動套用標籤:"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1
+msgid "Add Label"
+msgstr "加入標籤"
+
+#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2
+msgid "<b>Add Label</b>"
+msgstr "<b>加入標籤</b>"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1
+msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n"
+msgstr "<i>使用側邊欄來新增、修改與刪除標籤。</i>\n"
+
+#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3
+msgid "<b>Labels</b>"
+msgstr "<b>標籤</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171
+msgid "Notification Blink shown"
+msgstr "顯示閃爍通知"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175
+msgid "Popup notification is not enabled."
+msgstr "彈出通知未被啟用。"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
+msgid "libnotify is not installed"
+msgstr "未安裝 libnotify"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
+msgid "Failed to popup notification"
+msgstr "無法成功顯示跳出通知"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188
+msgid "Notification popup shown"
+msgstr "顯示通知彈出視窗"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192
+msgid "Sound notification not enabled"
+msgstr "音效通知未被啟用"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
+msgid "pygame is not installed"
+msgstr "pygame 未被安裝"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
+#, python-format
+msgid "Sound notification failed %s"
+msgstr "音效通知失敗 %s"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210
+msgid "Sound notification Success"
+msgstr "音效通知成功"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234
+msgid "Finished Torrent"
+msgstr "種子已完成"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238
+#, python-format
+msgid ""
+"The torrent \"%(name)s\" including %(num_files)i file(s) has finished "
+"downloading."
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317
+msgid "Notifications"
+msgstr "通知"
+
+#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663
+msgid "Choose Sound File"
+msgstr "選擇聲音檔案"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:127
+#: deluge/plugins/Notifications/deluge_notifications/core.py:158
+#, python-format
+msgid "There was an error sending the notification email: %s"
+msgstr "在發送通知郵件時發生錯誤:%s"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:145
+#, python-format
+msgid "Server did not reply properly to HELO greeting: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:149
+#, python-format
+msgid "Server refused username/password combination: %s"
+msgstr ""
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:174
+msgid "Notification email sent."
+msgstr "通知郵件已送出。"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:181
+#, python-format
+msgid "Finished Torrent \"%(name)s\""
+msgstr "完成種子「%(name)s」"
+
+#: deluge/plugins/Notifications/deluge_notifications/core.py:184
+#, python-format
+msgid ""
+"This email is to inform you that Deluge has finished downloading "
+"\"%(name)s\", which includes %(num_files)i files.\n"
+"To stop receiving these alerts, simply turn off email notification in "
+"Deluge's preferences.\n"
+"\n"
+"Thank you,\n"
+"Deluge."
+msgstr ""
+"這封電子郵件是來提醒您,Deluge 已經完成下載「%(name)s」,其中包含了 %(num_files)i 項檔案。\n"
+"若要停止接收這類提醒,請在 Deluge 的偏好設定內關閉電郵通知。\n"
+"\n"
+"謝謝您,\n"
+"Deluge"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
+msgid "Tray icon blinks enabled"
+msgstr "啟用系統列圖示閃爍"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
+msgid "Popups enabled"
+msgstr "啟用彈出視窗"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
+msgid "Sound enabled"
+msgstr "啟用音效"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
+msgid "<b>UI Notifications</b>"
+msgstr "<b>使用者介面通知</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9
+msgid "<b>Recipients</b>"
+msgstr "<b>收件人</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10
+msgid "Server requires TLS/SSL"
+msgstr "伺服器需要 TLS/SSL"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13
+msgid "<b>Email Notifications</b>"
+msgstr "<b>電郵通知</b>"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15
+msgid ""
+"This configuration does not mean that you'll actually receive notifications "
+"for all these events."
+msgstr "這個設定不代表您實際上可接受到所有這些事件的通知。"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16
+msgid "Subscriptions"
+msgstr "訂閱"
+
+#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17
+msgid "Sound Customization"
+msgstr "音效自訂"
+
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42
+#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53
+msgid "Extractor"
+msgstr ""
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1
+msgid "Extract to:"
+msgstr "解壓縮到:"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3
+msgid "Create torrent name sub-folder"
+msgstr "以種子名稱建立子資料夾"
+
+#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4
+msgid ""
+"This option will create a sub-folder using the torrent's name within the "
+"selected extract folder and put the extracted files there."
+msgstr "這個選項將會以種子名稱建立子資料夾,之後將檔案解壓縮到那裡。"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359
+msgid "Scheduler"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
+msgid "<b>Schedule</b>"
+msgstr ""
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
+msgid "Download Limit:"
+msgstr "下載限制:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310
+msgid "Upload Limit:"
+msgstr "上傳限制:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319
+msgid "Active Torrents:"
+msgstr "活躍的種子數:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
+msgid "Active Downloading:"
+msgstr "活躍的下載數:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
+msgid "Active Seeding:"
+msgstr "活躍的做種數:"
+
+#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350
+msgid "<b>Slow Settings</b>"
+msgstr "<b>慢速設定</b>"
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:13
+msgid "File Browser"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:25
+msgid "Back"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:29
+msgid "Forward"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/FileBrowser.js:37
+msgid "Home"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:32
+msgid "Create"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:100
+msgid "Help"
+msgstr "說明"
+
+#: deluge/ui/web/js/deluge-all/Toolbar.js:108
+msgid "Logout"
+msgstr "登出"
+
+#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34
+msgid "Save"
+msgstr "儲存"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:19
+msgid "About Deluge"
+msgstr "關於 Deluge"
+
+#: deluge/ui/web/js/deluge-all/AboutWindow.js:102
+msgid "Copyright 2007-2018 Deluge Team"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33
+msgid "Remove With Data"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17
+msgid "Add Connection"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53
+msgid "Host:"
+msgstr "主機位址:"
+
+#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96
+#, python-brace-format
+msgid "Unable to add host: {0}"
+msgstr "無法新增主機位址: {0}"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:37
+msgid "Move"
+msgstr "移動"
+
+#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
+msgid "Browse"
+msgstr "瀏覽"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
+msgid "Edit Connection"
+msgstr "編輯連線"
+
+#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115
+msgid "Unable to edit host"
+msgstr "無法編輯主機位址"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:22
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:31
+msgid "Login"
+msgstr "登入"
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:108
+msgid "Login Failed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/LoginWindow.js:109
+msgid "You entered an incorrect password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228
+msgid "Public"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292
+msgid "Last Transfer"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Deluge.js:158
+msgid "Mixed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:87
+msgid "Set Maximum Connections"
+msgstr "設定最大連線數"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:97
+msgid "Download Speed"
+msgstr "下載速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:102
+#: deluge/ui/web/js/deluge-all/Statusbar.js:161
+#: deluge/ui/web/js/deluge-all/Menus.js:79
+#: deluge/ui/web/js/deluge-all/Menus.js:124
+msgid "5 KiB/s"
+msgstr "5 KiB/秒"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:108
+#: deluge/ui/web/js/deluge-all/Statusbar.js:167
+#: deluge/ui/web/js/deluge-all/Menus.js:85
+#: deluge/ui/web/js/deluge-all/Menus.js:130
+msgid "10 KiB/s"
+msgstr "10 KiB/秒"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:114
+#: deluge/ui/web/js/deluge-all/Statusbar.js:173
+#: deluge/ui/web/js/deluge-all/Menus.js:91
+#: deluge/ui/web/js/deluge-all/Menus.js:136
+msgid "30 KiB/s"
+msgstr "30 KiB/秒"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:120
+#: deluge/ui/web/js/deluge-all/Statusbar.js:179
+#: deluge/ui/web/js/deluge-all/Menus.js:97
+#: deluge/ui/web/js/deluge-all/Menus.js:142
+msgid "80 KiB/s"
+msgstr "80 KiB/秒"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:126
+#: deluge/ui/web/js/deluge-all/Statusbar.js:185
+#: deluge/ui/web/js/deluge-all/Menus.js:103
+#: deluge/ui/web/js/deluge-all/Menus.js:148
+msgid "300 KiB/s"
+msgstr "300 KiB/秒"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:145
+msgid "Set Maximum Download Speed"
+msgstr "設定最大下載速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:156
+msgid "Upload Speed"
+msgstr "上傳速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:204
+msgid "Set Maximum Upload Speed"
+msgstr "設定最大上傳速度"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:215
+msgid "Protocol Traffic Download/Upload"
+msgstr "下載/上傳協定流量"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:242
+msgid "Freespace in download folder"
+msgstr "下載資料夾的剩餘空間"
+
+#: deluge/ui/web/js/deluge-all/Statusbar.js:357
+#, python-brace-format
+msgid "<b>IP</b> {0}"
+msgstr "<b>IP</b> {0}"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187
+msgid "Connect"
+msgstr "連線"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
+msgid "Stop Daemon"
+msgstr "停止 Daemon"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
+msgid "Disconnect"
+msgstr "斷線"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
+msgid "Start Daemon"
+msgstr "啟動 Daemon"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
+msgid "Change Default Password"
+msgstr "更改預設密碼"
+
+#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324
+msgid ""
+"We recommend changing the default password.<br><br>Would you like to change "
+"it now?"
+msgstr "我們建議您更改預設密碼。<br><br>您想要現在更改它嗎?"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:13
+msgid "Tracker Host"
+msgstr "追蹤伺服器主機"
+
+#: deluge/ui/web/js/deluge-all/Sidebar.js:33
+msgid "Filters"
+msgstr "過濾器"
+
+#: deluge/ui/web/js/deluge-all/UI.js:142
+msgid "Connection restored"
+msgstr "連線恢復"
+
+#: deluge/ui/web/js/deluge-all/UI.js:153
+msgid "Lost Connection"
+msgstr "連線中斷"
+
+#: deluge/ui/web/js/deluge-all/UI.js:154
+msgid "The connection to the webserver has been lost!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/UI.js:160
+msgid "Lost connection to webserver"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/Menus.js:72
+msgid "D/L Speed Limit"
+msgstr "上傳/下載速度限制"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:117
+msgid "U/L Speed Limit"
+msgstr "上傳速度限制"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:162
+msgid "Connection Limit"
+msgstr "連線限制"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:207
+msgid "Upload Slot Limit"
+msgstr "上傳連接數限制"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:316
+msgid "Update Tracker"
+msgstr "更新伺服器"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:339
+msgid "Force Recheck"
+msgstr "強制重新檢查"
+
+#: deluge/ui/web/js/deluge-all/Menus.js:359
+msgid "Expand All"
+msgstr "展開全部"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
+msgid "Details"
+msgstr "詳細資訊"
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
+msgid "Comment:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
+msgid "Status:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
+msgid "Move Completed:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
+msgid "General"
+msgstr "一般"
+
+#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279
+msgid "Private"
+msgstr "隱私"
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
+msgid "Loading"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
+msgid "True"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50
+msgid "Be alerted about new releases"
+msgstr "有新版本發佈時通知我"
+
+#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67
+msgid ""
+"Help us improve Deluge by sending us your Python version, PyGTK version, OS "
+"and processor types. Absolutely no other information is sent."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215
+msgid "Pause torrent"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17
+msgid "Install Plugin"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
+msgid "Install"
+msgstr "安裝"
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
+msgid "Select an egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46
+msgid "Plugin Egg"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49
+msgid "Browse..."
+msgstr "瀏覽..."
+
+#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59
+msgid "Uploading your plugin..."
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162
+msgid "Maximum Connections:"
+msgstr "最大連線數:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184
+msgid "Maximum Download Speed (KiB/s):"
+msgstr "最大總下載速度 (KiB/秒):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195
+msgid "Maximum Upload Speed (KiB/s):"
+msgstr "最大總上傳速度 (KiB/秒):"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96
+msgid "Maximum Half-Open Connections:"
+msgstr "最大半開連線數:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107
+msgid "Maximum Connection Attempts per Second:"
+msgstr "每秒嘗試的最大連線數:"
+
+#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173
+msgid "Maximum Upload Slots:"
+msgstr "最大上傳區段:"
+
+#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
+msgid "Cache Size (16 KiB Blocks):"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
+msgid "Force Use of Proxy"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
+msgid "Find More"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69
+msgid "Use Random Port"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
+msgid "Type Of Service"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
+msgid "Show filters with zero torrents"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60
+msgid "Allow the use of multiple filters at once"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94
+msgid "WebUI Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
+msgid "Old:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
+msgid "New:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
+msgid "Confirm:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124
+msgid "Server"
+msgstr "伺服器"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
+msgid "Session Timeout:"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
+msgid "Enable SSL (paths relative to Deluge config folder)"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177
+msgid "Private Key:"
+msgstr "私鑰:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187
+msgid "Certificate:"
+msgstr "憑證:"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205
+msgid "WebUI Language Changed"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207
+msgid "Do you want to refresh the page now to use the new language?"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
+msgid "Refresh"
+msgstr "更新"
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
+msgid "Invalid Password"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
+msgid "Your passwords don't match!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260
+msgid "Your old password was incorrect!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269
+msgid "Change Successful"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270
+msgid "Your password was successfully changed!"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13
+msgid "Add from Url"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143
+msgid "Url"
+msgstr "網址"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
+msgid "Cookies"
+msgstr "Cookies"
+
+#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
+msgid "Failed to download torrent"
+msgstr "下載種子時失敗"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133
+msgid "File"
+msgstr "檔案"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
+msgid "Infohash"
+msgstr "資訊雜湊"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
+msgid "Uploading your torrent..."
+msgstr "上傳您的種子..."
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292
+msgid "Failed to upload torrent"
+msgstr "無法上傳種子"
+
+#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317
+msgid "Not a valid torrent"
+msgstr "不是有效的種子"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
+msgid "Move Completed Folder"
+msgstr ""
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
+msgid "Max Down Speed"
+msgstr "最大下載速度"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
+msgid "Max Up Speed"
+msgstr "最大上傳速度"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
+msgid "Add In Paused State"
+msgstr "新增為暫停狀態"
+
+#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161
+msgid "Super Seed"
+msgstr "超級種子"
+
+#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43
+msgid "Download"
+msgstr "下載"
+
+#: deluge/ui/web/render/tab_status.html:11
+msgid "ETA:"
+msgstr "預計結束時間:"
+
+#: deluge/ui/web/render/tab_status.html:26
+msgid "Date Added:"
+msgstr "新增日期:"
diff --git a/deluge/log.py b/deluge/log.py
new file mode 100644
index 0000000..ef31f4d
--- /dev/null
+++ b/deluge/log.py
@@ -0,0 +1,345 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""Logging functions"""
+import inspect
+import logging
+import logging.handlers
+import os
+import sys
+
+from incremental import Version
+from twisted import version as twisted_version
+from twisted.internet import defer
+from twisted.python.log import PythonLoggingObserver
+
+from deluge import common
+
+__all__ = ('setup_logger', 'set_logger_level', 'get_plugin_logger', 'LOG')
+
+LoggingLoggerClass = logging.getLoggerClass()
+
+if 'dev' in common.get_version():
+ DEFAULT_LOGGING_FORMAT = '%%(asctime)s.%%(msecs)03.0f [%%(levelname)-8s][%%(name)-%ds:%%(lineno)-4d] %%(message)s'
+else:
+ DEFAULT_LOGGING_FORMAT = (
+ '%%(asctime)s [%%(levelname)-8s][%%(name)-%ds:%%(lineno)-4d] %%(message)s'
+ )
+MAX_LOGGER_NAME_LENGTH = 10
+
+
+class Logging(LoggingLoggerClass):
+ def __init__(self, logger_name):
+ super().__init__(logger_name)
+
+ # This makes module name padding increase to the biggest module name
+ # so that logs keep readability.
+ global MAX_LOGGER_NAME_LENGTH
+ if len(logger_name) > MAX_LOGGER_NAME_LENGTH:
+ MAX_LOGGER_NAME_LENGTH = len(logger_name)
+ for handler in logging.getLogger().handlers:
+ handler.setFormatter(
+ logging.Formatter(
+ DEFAULT_LOGGING_FORMAT % MAX_LOGGER_NAME_LENGTH,
+ datefmt='%H:%M:%S',
+ )
+ )
+
+ def garbage(self, msg, *args, **kwargs):
+ LoggingLoggerClass.log(self, 1, msg, *args, **kwargs)
+
+ def trace(self, msg, *args, **kwargs):
+ LoggingLoggerClass.log(self, 5, msg, *args, **kwargs)
+
+ def debug(self, msg, *args, **kwargs):
+ LoggingLoggerClass.debug(self, msg, *args, **kwargs)
+
+ def info(self, msg, *args, **kwargs):
+ LoggingLoggerClass.info(self, msg, *args, **kwargs)
+
+ def warning(self, msg, *args, **kwargs):
+ LoggingLoggerClass.warning(self, msg, *args, **kwargs)
+
+ warn = warning
+
+ def error(self, msg, *args, **kwargs):
+ LoggingLoggerClass.error(self, msg, *args, **kwargs)
+
+ def critical(self, msg, *args, **kwargs):
+ LoggingLoggerClass.critical(self, msg, *args, **kwargs)
+
+ def exception(self, msg, *args, **kwargs):
+ LoggingLoggerClass.exception(self, msg, *args, **kwargs)
+
+ def findCaller(self, *args, **kwargs): # NOQA: N802
+ f = logging.currentframe().f_back
+ rv = ('(unknown file)', 0, '(unknown function)', None)
+ while hasattr(f, 'f_code'):
+ co = f.f_code
+ filename = os.path.normcase(co.co_filename)
+ if filename in (
+ __file__.replace('.pyc', '.py'),
+ defer.__file__.replace('.pyc', '.py'),
+ ):
+ f = f.f_back
+ continue
+ rv = (co.co_filename, f.f_lineno, co.co_name, None)
+ break
+ return rv
+
+
+levels = {
+ 'info': logging.INFO,
+ 'warn': logging.WARNING,
+ 'warning': logging.WARNING,
+ 'error': logging.ERROR,
+ 'none': logging.CRITICAL,
+ 'debug': logging.DEBUG,
+ 'trace': 5,
+ 'garbage': 1,
+}
+
+
+def setup_logger(
+ level='error',
+ filename=None,
+ filemode='w',
+ logrotate=None,
+ output_stream=sys.stdout,
+ twisted_observer=True,
+):
+ """
+ Sets up the basic logger and if `:param:filename` is set, then it will log
+ to that file instead of stdout.
+
+ Args:
+ level (str): The log level to use (Default: 'error')
+ filename (str, optional): The log filename. Default is None meaning log
+ to terminal
+ filemode (str): The filemode to use when opening the log file
+ logrotate (int, optional): The size of the logfile in bytes when enabling
+ log rotation (Default is None meaning disabled)
+ output_stream (file descriptor): File descriptor to log to if not logging to file
+ twisted_observer (bool): Whether to setup the custom twisted logging observer.
+ """
+ if logging.getLoggerClass() is not Logging:
+ logging.setLoggerClass(Logging)
+ logging.addLevelName(levels['trace'], 'TRACE')
+ logging.addLevelName(levels['garbage'], 'GARBAGE')
+
+ level = levels.get(level, logging.ERROR)
+
+ root_logger = logging.getLogger()
+
+ if filename and logrotate:
+ handler = logging.handlers.RotatingFileHandler(
+ filename, maxBytes=logrotate, backupCount=5, encoding='utf-8'
+ )
+ elif filename and filemode == 'w':
+ handler_cls = logging.FileHandler
+ if not common.windows_check():
+ handler_cls = getattr(
+ logging.handlers, 'WatchedFileHandler', logging.FileHandler
+ )
+ try:
+ handler = handler_cls(filename, mode=filemode, encoding='utf-8')
+ except FileNotFoundError:
+ handler = logging.StreamHandler(stream=output_stream)
+ log = logging.getLogger(__name__)
+ log.error(f'Unable to write to log file `{filename}`')
+ else:
+ handler = logging.StreamHandler(stream=output_stream)
+
+ formatter = logging.Formatter(
+ DEFAULT_LOGGING_FORMAT % MAX_LOGGER_NAME_LENGTH, datefmt='%H:%M:%S'
+ )
+
+ handler.setFormatter(formatter)
+
+ # Check for existing handler to prevent duplicate logging.
+ if root_logger.handlers:
+ for handle in root_logger.handlers:
+ if not isinstance(handle, type(handler)):
+ root_logger.addHandler(handler)
+ else:
+ root_logger.addHandler(handler)
+ root_logger.setLevel(level)
+
+ # Issue fixed in Twisted 18.9.0 https://twistedmatrix.com/trac/ticket/7927
+ if twisted_observer and twisted_version < Version('Twisted', 18, 9, 0):
+ twisted_logging = TwistedLoggingObserver()
+ twisted_logging.start()
+
+
+class TwistedLoggingObserver(PythonLoggingObserver):
+ """
+ Custom logging class to fix missing exception tracebacks in log output with new
+ twisted.logger module in twisted version >= 15.2.
+
+ Related twisted bug ticket: https://twistedmatrix.com/trac/ticket/7927
+
+ """
+
+ def __init__(self):
+ PythonLoggingObserver.__init__(self, loggerName='twisted')
+
+ def emit(self, event_dict):
+ log = logging.getLogger(__name__)
+ if 'log_failure' in event_dict:
+ fmt = '%(log_namespace)s \n%(log_failure)s'
+ getattr(LoggingLoggerClass, event_dict['log_level'].name)(
+ log, fmt % (event_dict)
+ )
+ return
+
+ try:
+ PythonLoggingObserver.emit(self, event_dict)
+ except TypeError:
+ # Ignore logging args problem with Python 3.8 and Twisted <= 19
+ pass
+
+
+def tweak_logging_levels():
+ """This function allows tweaking the logging levels for all or some loggers.
+ This is mostly useful for developing purposes hence the contents of the
+ file are NOT like regular deluge config file's.
+
+ To use is, create a file named "logging.conf" on your Deluge's config dir
+ with contents like for example:
+ deluge:warn
+ deluge.core:debug
+ deluge.plugin:error
+
+ What the above mean is the logger "deluge" will be set to the WARN level,
+ the "deluge.core" logger will be set to the DEBUG level and the
+ "deluge.plugin" will be set to the ERROR level.
+
+ Remember, one rule per line and this WILL override the setting passed from
+ the command line.
+ """
+ from deluge import configmanager
+
+ logging_config_file = os.path.join(configmanager.get_config_dir(), 'logging.conf')
+ if not os.path.isfile(logging_config_file):
+ return
+ log = logging.getLogger(__name__)
+ log.warning(
+ 'logging.conf found! tweaking logging levels from %s', logging_config_file
+ )
+ with open(logging_config_file) as _file:
+ for line in _file:
+ if line.strip().startswith('#'):
+ continue
+ name, level = line.strip().split(':')
+ if level not in levels:
+ continue
+
+ log.warning('Setting logger "%s" to logging level "%s"', name, level)
+ set_logger_level(level, name)
+
+
+def set_logger_level(level, logger_name=None):
+ """
+ Sets the logger level.
+
+ :param level: str, a string representing the desired level
+ :param logger_name: str, a string representing desired logger name for which
+ the level should change. The default is "None" will tweak
+ the root logger level.
+
+ """
+ logging.getLogger(logger_name).setLevel(levels.get(level, 'error'))
+
+
+def get_plugin_logger(logger_name):
+ import warnings
+
+ stack = inspect.stack()
+ stack.pop(0) # The logging call from this module
+ module_stack = stack.pop(0) # The module that called the log function
+ caller_module = inspect.getmodule(module_stack[0])
+ # In some weird cases caller_module might be None, try to continue
+ caller_module_name = getattr(caller_module, '__name__', '')
+ warnings.warn_explicit(
+ DEPRECATION_WARNING,
+ DeprecationWarning,
+ module_stack[1],
+ module_stack[2],
+ caller_module_name,
+ )
+
+ if 'deluge.plugins.' in logger_name:
+ return logging.getLogger(logger_name)
+ return logging.getLogger('deluge.plugin.%s' % logger_name)
+
+
+DEPRECATION_WARNING = """You seem to be using old style logging on your code, ie:
+ from deluge.log import LOG as log
+
+or:
+ from deluge.log import get_plugin_logger
+
+This has been deprecated in favour of an enhanced logging system and both "LOG"
+and "get_plugin_logger" will be removed on the next major version release of Deluge,
+meaning, code will break, specially plugins.
+If you're seeing this message and you're not the developer of the plugin which
+triggered this warning, please report to it's author.
+If you're the developer, please stop using the above code and instead use:
+
+ import logging
+ log = logging.getLogger(__name__)
+
+
+The above will result in, regarding the "Label" plugin for example a log message similar to:
+ 15:33:54 [deluge.plugins.label.core:78 ][INFO ] *** Start Label plugin ***
+
+Triggering code:
+"""
+
+
+class _BackwardsCompatibleLOG:
+ def __getattribute__(self, name):
+ import warnings
+
+ logger_name = 'deluge'
+ stack = inspect.stack()
+ stack.pop(0) # The logging call from this module
+ module_stack = stack.pop(0) # The module that called the log function
+ caller_module = inspect.getmodule(module_stack[0])
+ # In some weird cases caller_module might be None, try to continue
+ caller_module_name = getattr(caller_module, '__name__', '')
+ warnings.warn_explicit(
+ DEPRECATION_WARNING,
+ DeprecationWarning,
+ module_stack[1],
+ module_stack[2],
+ caller_module_name,
+ )
+ if caller_module:
+ for member in stack:
+ module = inspect.getmodule(member[0])
+ if not module:
+ continue
+ if module.__name__ in (
+ 'deluge.plugins.pluginbase',
+ 'deluge.plugins.init',
+ ):
+ logger_name += '.plugin.%s' % caller_module_name
+ # Monkey Patch The Plugin Module
+ caller_module.log = logging.getLogger(logger_name)
+ break
+ else:
+ logging.getLogger(logger_name).warning(
+ "Unable to monkey-patch the calling module's `log` attribute! "
+ 'You should really update and rebuild your plugins...'
+ )
+ return getattr(logging.getLogger(logger_name), name)
+
+
+LOG = _BackwardsCompatibleLOG()
diff --git a/deluge/maketorrent.py b/deluge/maketorrent.py
new file mode 100644
index 0000000..07a2a9d
--- /dev/null
+++ b/deluge/maketorrent.py
@@ -0,0 +1,376 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+from hashlib import sha1 as sha
+
+from deluge.bencode import bencode
+from deluge.common import get_path_size, utf8_encode_structure
+
+
+class InvalidPath(Exception):
+ """Raised when an invalid path is supplied."""
+
+ pass
+
+
+class InvalidPieceSize(Exception):
+ """Raised when an invalid piece size is set.
+
+ Note:
+ Piece sizes must be multiples of 16KiB.
+ """
+
+ pass
+
+
+class TorrentMetadata:
+ """This class is used to create .torrent files.
+
+ Examples:
+
+ >>> t = TorrentMetadata()
+ >>> t.data_path = '/tmp/torrent'
+ >>> t.comment = 'My Test Torrent'
+ >>> t.trackers = [['http://tracker.openbittorent.com']]
+ >>> t.save('/tmp/test.torrent')
+
+ """
+
+ def __init__(self):
+ self.__data_path = None
+ self.__piece_size = 0
+ self.__comment = ''
+ self.__private = False
+ self.__trackers = []
+ self.__webseeds = []
+ self.__pad_files = False
+
+ def save(self, torrent_path, progress=None):
+ """Creates and saves the torrent file to `path`.
+
+ Args:
+ torrent_path (str): Location to save the torrent file.
+ progress(func, optional): The function to be called when a piece is hashed. The
+ provided function should be in the format `func(num_completed, num_pieces)`.
+
+ Raises:
+ InvalidPath: If the data_path has not been set.
+
+ """
+ if not self.data_path:
+ raise InvalidPath('Need to set a data_path!')
+
+ torrent = {'info': {}}
+
+ if self.comment:
+ torrent['comment'] = self.comment
+
+ if self.private:
+ torrent['info']['private'] = True
+
+ if self.trackers:
+ torrent['announce'] = self.trackers[0][0]
+ torrent['announce-list'] = self.trackers
+ else:
+ torrent['announce'] = ''
+
+ if self.webseeds:
+ httpseeds = []
+ webseeds = []
+ for w in self.webseeds:
+ if w.endswith('.php'):
+ httpseeds.append(w)
+ else:
+ webseeds.append(w)
+
+ if httpseeds:
+ torrent['httpseeds'] = httpseeds
+ if webseeds:
+ torrent['url-list'] = webseeds
+
+ datasize = get_path_size(self.data_path)
+
+ if self.piece_size:
+ piece_size = self.piece_size * 1024
+ else:
+ # We need to calculate a piece size
+ piece_size = 16384
+ while (datasize // piece_size) > 1024 and piece_size < (8192 * 1024):
+ piece_size *= 2
+
+ # Calculate the number of pieces we will require for the data
+ num_pieces = datasize // piece_size
+ if datasize % piece_size:
+ num_pieces += 1
+
+ torrent['info']['piece length'] = piece_size
+ torrent['info']['name'] = os.path.split(self.data_path)[1]
+
+ # Create the info
+ if os.path.isdir(self.data_path):
+ files = []
+ padding_count = 0
+ # Collect a list of file paths and add padding files if necessary
+ for dirpath, dirnames, filenames in os.walk(self.data_path):
+ for index, filename in enumerate(filenames):
+ size = get_path_size(
+ os.path.join(self.data_path, dirpath, filename)
+ )
+ p = dirpath[len(self.data_path) :]
+ p = p.lstrip('/')
+ p = p.split('/')
+ if p[0]:
+ p += [filename]
+ else:
+ p = [filename]
+ files.append((size, p))
+ # Add a padding file if necessary
+ if self.pad_files and (index + 1) < len(filenames):
+ left = size % piece_size
+ if left:
+ p = list(p)
+ p[-1] = '_____padding_file_' + str(padding_count)
+ files.append((piece_size - left, p))
+ padding_count += 1
+
+ # Run the progress function with 0 completed pieces
+ if progress:
+ progress(0, num_pieces)
+
+ fs = []
+ pieces = []
+ # Create the piece hashes
+ buf = b''
+ for size, path in files:
+ path = [s.encode('UTF-8') for s in path]
+ fs.append({b'length': size, b'path': path})
+ if path[-1].startswith(b'_____padding_file_'):
+ buf += b'\0' * size
+ pieces.append(sha(buf).digest())
+ buf = b''
+ fs[-1][b'attr'] = b'p'
+ else:
+ with open(
+ os.path.join(self.data_path.encode('utf8'), *path), 'rb'
+ ) as _file:
+ r = _file.read(piece_size - len(buf))
+ while r:
+ buf += r
+ if len(buf) == piece_size:
+ pieces.append(sha(buf).digest())
+ # Run the progress function if necessary
+ if progress:
+ progress(len(pieces), num_pieces)
+ buf = b''
+ else:
+ break
+ r = _file.read(piece_size - len(buf))
+ torrent['info']['files'] = fs
+ if buf:
+ pieces.append(sha(buf).digest())
+ if progress:
+ progress(len(pieces), num_pieces)
+ buf = ''
+
+ elif os.path.isfile(self.data_path):
+ torrent['info']['length'] = get_path_size(self.data_path)
+ pieces = []
+
+ with open(self.data_path, 'rb') as _file:
+ r = _file.read(piece_size)
+ while r:
+ pieces.append(sha(r).digest())
+ if progress:
+ progress(len(pieces), num_pieces)
+
+ r = _file.read(piece_size)
+
+ torrent['info']['pieces'] = b''.join(pieces)
+
+ # Write out the torrent file
+ with open(torrent_path, 'wb') as _file:
+ _file.write(bencode(utf8_encode_structure(torrent)))
+
+ def get_data_path(self):
+ """Get the path to the files that the torrent will contain.
+
+ Note:
+ It can be either a file or a folder.
+
+ Returns:
+ str: The torrent data path, either a file or a folder.
+
+ """
+ return self.__data_path
+
+ def set_data_path(self, path):
+ """Set the path to the files (data) that the torrent will contain.
+
+ Note:
+ This property needs to be set before the torrent file can be created and saved.
+
+ Args:
+ path (str): The path to the torrent data and can be either a file or a folder.
+
+ Raises:
+ InvalidPath: If the path is not found.
+
+ """
+ if os.path.exists(path) and (os.path.isdir(path) or os.path.isfile(path)):
+ self.__data_path = os.path.abspath(path)
+ else:
+ raise InvalidPath('No such file or directory: %s' % path)
+
+ def get_piece_size(self):
+ """The size of the pieces.
+
+ Returns:
+ int: The piece size in multiples of 16 KiBs.
+ """
+ return self.__piece_size
+
+ def set_piece_size(self, size):
+ """Set piece size.
+
+ Note:
+ If no piece size is set, one will be automatically selected to
+ produce a torrent with less than 1024 pieces or the smallest possible
+ with a 8192KiB piece size.
+
+ Args:
+ size (int): The desired piece size in multiples of 16 KiBs.
+
+ Raises:
+ InvalidPieceSize: If the piece size is not a valid multiple of 16 KiB.
+
+ """
+ if size % 16 and size:
+ raise InvalidPieceSize('Piece size must be a multiple of 16 KiB')
+ self.__piece_size = size
+
+ def get_comment(self):
+ """Get the torrent comment.
+
+ Returns:
+ str: An informational string about the torrent.
+
+ """
+ return self.__comment
+
+ def set_comment(self, comment):
+ """Set the comment for the torrent.
+
+ Args:
+ comment (str): An informational string about the torrent.
+
+ """
+ self.__comment = comment
+
+ def get_private(self):
+ """Get the private flag of the torrent.
+
+ Returns:
+ bool: True if private flag has been set, else False.
+
+ """
+ return self.__private
+
+ def set_private(self, private):
+ """Set the torrent private flag.
+
+ Note:
+ Private torrents only announce to trackers and will not use DHT or
+ Peer Exchange. See http://bittorrent.org/beps/bep_0027.html
+
+ Args:
+ private (bool): True if the torrent is to be private.
+
+ """
+ self.__private = private
+
+ def get_trackers(self):
+ """Get the announce trackers.
+
+ Note:
+ See http://bittorrent.org/beps/bep_0012.html
+
+ Returns:
+ list of lists: A list containing a list of trackers.
+
+ """
+ return self.__trackers
+
+ def set_trackers(self, trackers):
+ """Set the announce trackers.
+
+ Args:
+ private (list of lists): A list containing lists of trackers as strings, each list is a tier.
+
+ """
+ self.__trackers = trackers
+
+ def get_webseeds(self):
+ """Get the webseeds.
+
+ Note:
+ The web seeds can either be:
+ Hoffman-style: http://bittorrent.org/beps/bep_0017.html
+ GetRight-style: http://bittorrent.org/beps/bep_0019.html
+
+ If the url ends in '.php' then it will be considered Hoffman-style, if
+ not it will be considered GetRight-style.
+
+ Returns:
+ list: The webseeds.
+
+ """
+ return self.__webseeds
+
+ def set_webseeds(self, webseeds):
+ """Set webseeds.
+
+ Note:
+ The web seeds can either be:
+ Hoffman-style: http://bittorrent.org/beps/bep_0017.html
+ GetRight-style: http://bittorrent.org/beps/bep_0019.html
+
+ If the url ends in '.php' then it will be considered Hoffman-style, if
+ not it will be considered GetRight-style.
+
+ Args:
+ private (list): The webseeds URLs which can be either Hoffman or GetRight style.
+
+ """
+ self.__webseeds = webseeds
+
+ def get_pad_files(self):
+ """Get status of padding files for the torrent.
+
+ Returns:
+ bool: True if padding files have been enabled to align files on piece boundaries.
+
+ """
+ return self.__pad_files
+
+ def set_pad_files(self, pad):
+ """Enable padding files for the torrent.
+
+ Args:
+ private (bool): True adds padding files to align files on piece boundaries.
+
+ """
+ self.__pad_files = pad
+
+ data_path = property(get_data_path, set_data_path)
+ piece_size = property(get_piece_size, set_piece_size)
+ comment = property(get_comment, set_comment)
+ private = property(get_private, set_private)
+ trackers = property(get_trackers, set_trackers)
+ webseeds = property(get_webseeds, set_webseeds)
+ pad_files = property(get_pad_files, set_pad_files)
diff --git a/deluge/metafile.py b/deluge/metafile.py
new file mode 100644
index 0000000..81a371f
--- /dev/null
+++ b/deluge/metafile.py
@@ -0,0 +1,460 @@
+#
+# Original file from BitTorrent-5.3-GPL.tar.gz
+# Copyright (C) Bram Cohen
+#
+# Modifications for use in Deluge:
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import copy
+import logging
+import os.path
+import time
+from enum import Enum
+from hashlib import sha1 as sha
+from hashlib import sha256
+
+import deluge.component as component
+from deluge.bencode import bencode
+from deluge.common import utf8_encode_structure
+from deluge.event import CreateTorrentProgressEvent
+
+log = logging.getLogger(__name__)
+
+ignore = ['core', 'CVS', 'Thumbs.db', 'desktop.ini']
+
+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('-')
+
+
+def gmtime():
+ return time.mktime(time.gmtime())
+
+
+def dummy(*v):
+ pass
+
+
+class TorrentFormat(str, Enum):
+ V1 = 'v1'
+ V2 = 'v2'
+ HYBRID = 'hybrid'
+
+ @classmethod
+ def _missing_(cls, value):
+ if not value:
+ return None
+
+ value = value.lower()
+ for member in cls:
+ if member.value == value:
+ return member
+
+ def to_lt_flag(self):
+ if self.value == 'v1':
+ return 64
+ if self.value == 'v2':
+ return 32
+ return 0
+
+ def includes_v1(self):
+ return self == self.__class__.V1 or self == self.__class__.HYBRID
+
+ def includes_v2(self):
+ return self == self.__class__.V2 or self == self.__class__.HYBRID
+
+
+class RemoteFileProgress:
+ def __init__(self, session_id):
+ self.session_id = session_id
+
+ def __call__(self, piece_count, num_pieces):
+ component.get('RPCServer').emit_event_for_session_id(
+ self.session_id, CreateTorrentProgressEvent(piece_count, num_pieces)
+ )
+
+
+def make_meta_file_content(
+ path,
+ url,
+ piece_length,
+ progress=None,
+ title=None,
+ comment=None,
+ safe=None,
+ content_type=None,
+ webseeds=None,
+ name=None,
+ private=False,
+ created_by=None,
+ trackers=None,
+ torrent_format=TorrentFormat.V1,
+):
+ data = {'creation date': int(gmtime())}
+ if url:
+ data['announce'] = url.strip()
+
+ if progress is None:
+ progress = dummy
+ try:
+ session_id = component.get('RPCServer').get_session_id()
+ except KeyError:
+ pass
+ else:
+ if session_id:
+ progress = RemoteFileProgress(session_id)
+
+ info, piece_layers = makeinfo(
+ path,
+ piece_length,
+ progress,
+ name,
+ content_type,
+ private,
+ torrent_format,
+ )
+
+ # check_info(info)
+ data['info'] = info
+ if piece_layers is not None:
+ data['piece layers'] = piece_layers
+ if title:
+ data['title'] = title.encode('utf8')
+ if comment:
+ data['comment'] = comment.encode('utf8')
+ if safe:
+ data['safe'] = safe.encode('utf8')
+
+ httpseeds = []
+ url_list = []
+
+ if webseeds:
+ for webseed in webseeds:
+ if webseed.endswith('.php'):
+ httpseeds.append(webseed)
+ else:
+ url_list.append(webseed)
+
+ if url_list:
+ data['url-list'] = url_list
+ if httpseeds:
+ data['httpseeds'] = httpseeds
+ if created_by:
+ data['created by'] = created_by.encode('utf8')
+
+ if trackers and (len(trackers[0]) > 1 or len(trackers) > 1):
+ data['announce-list'] = trackers
+
+ data['encoding'] = 'UTF-8'
+ return bencode(utf8_encode_structure(data))
+
+
+def default_meta_file_path(content_path):
+ a, b = os.path.split(content_path)
+ if b == '':
+ f = a + '.torrent'
+ else:
+ f = os.path.join(a, b + '.torrent')
+ return f
+
+
+def make_meta_file(
+ path,
+ url,
+ piece_length,
+ progress=None,
+ title=None,
+ comment=None,
+ safe=None,
+ content_type=None,
+ target=None,
+ webseeds=None,
+ name=None,
+ private=False,
+ created_by=None,
+ trackers=None,
+):
+ if not target:
+ target = default_meta_file_path(path)
+
+ file_content = make_meta_file_content(
+ path,
+ url,
+ piece_length,
+ progress=progress,
+ title=title,
+ comment=comment,
+ safe=safe,
+ content_type=content_type,
+ webseeds=webseeds,
+ name=name,
+ private=private,
+ created_by=created_by,
+ trackers=trackers,
+ )
+
+ with open(target, 'wb') as file_:
+ file_.write(file_content)
+
+
+def calcsize(path):
+ total = 0
+ for s in subfiles(os.path.abspath(path)):
+ total += os.path.getsize(s[1])
+ return total
+
+
+def _next_pow2(num):
+ import math
+
+ if not num:
+ return 1
+ return 2 ** math.ceil(math.log2(num))
+
+
+def _sha256_merkle_root(leafs, nb_leafs, padding, in_place=True) -> bytes:
+ """
+ Build the root of the merkle hash tree from the (possibly incomplete) leafs layer.
+ If len(leafs) < nb_leafs, it will be padded with the padding repeated as many times
+ as needed to have nb_leafs in total.
+ """
+ if not in_place:
+ leafs = copy.copy(leafs)
+
+ while nb_leafs > 1:
+ nb_leafs = nb_leafs // 2
+ for i in range(nb_leafs):
+ node1 = leafs[2 * i] if 2 * i < len(leafs) else padding
+ node2 = leafs[2 * i + 1] if 2 * i + 1 < len(leafs) else padding
+ h = sha256(node1)
+ h.update(node2)
+ if i < len(leafs):
+ leafs[i] = h.digest()
+ else:
+ leafs.append(h.digest())
+ return leafs[0] if leafs else padding
+
+
+def _sha256_buffer_blocks(buffer, block_len):
+ import math
+
+ nb_blocks = math.ceil(len(buffer) / block_len)
+ blocks = [
+ sha256(buffer[i * block_len : (i + 1) * block_len]).digest()
+ for i in range(nb_blocks)
+ ]
+ return blocks
+
+
+def makeinfo_lt(
+ path, piece_length, name=None, private=False, torrent_format=TorrentFormat.V1
+):
+ """
+ Make info using via the libtorrent library.
+ """
+ from deluge._libtorrent import lt
+
+ if not name:
+ name = os.path.split(path)[1]
+
+ fs = lt.file_storage()
+ if os.path.isfile(path):
+ lt.add_files(fs, path)
+ else:
+ for p, f in subfiles(path):
+ fs.add_file(os.path.join(name, *p), os.path.getsize(f))
+ torrent = lt.create_torrent(
+ fs, piece_size=piece_length, flags=torrent_format.to_lt_flag()
+ )
+
+ lt.set_piece_hashes(torrent, os.path.dirname(path))
+ torrent.set_priv(private)
+
+ t = torrent.generate()
+ info = t[b'info']
+ pieces_layers = t.get(b'piece layers', None)
+
+ return info, pieces_layers
+
+
+def makeinfo(
+ path,
+ piece_length,
+ progress,
+ name=None,
+ content_type=None,
+ private=False,
+ torrent_format=TorrentFormat.V1,
+):
+ # HEREDAVE. If path is directory, how do we assign content type?
+
+ v2_block_len = 2**14 # 16 KiB
+ v2_blocks_per_piece = 1
+ v2_block_padding = b''
+ v2_piece_padding = b''
+ if torrent_format.includes_v2():
+ if _next_pow2(piece_length) != piece_length or piece_length < v2_block_len:
+ raise ValueError(
+ 'Bittorrent v2 piece size must be a power of 2; and bigger than 16 KiB'
+ )
+
+ v2_blocks_per_piece = piece_length // v2_block_len
+ v2_block_padding = bytes(32) # 32 = size of sha256 in bytes
+ v2_piece_padding = _sha256_merkle_root(
+ [], nb_leafs=v2_blocks_per_piece, padding=v2_block_padding
+ )
+
+ path = os.path.abspath(path)
+ files = []
+ pieces = []
+ file_tree = {}
+ piece_layers = {}
+ if os.path.isdir(path):
+ if not name:
+ name = os.path.split(path)[1]
+ subs = subfiles(path)
+ if torrent_format.includes_v2():
+ subs = sorted(subs)
+ length = None
+ totalsize = 0.0
+ for p, f in subs:
+ totalsize += os.path.getsize(f)
+ else:
+ name = os.path.split(path)[1]
+ subs = [([name], path)]
+ length = os.path.getsize(path)
+ totalsize = length
+ is_multi_file = len(subs) > 1
+ sh = sha()
+ done = 0
+ totalhashed = 0
+
+ next_progress_event = piece_length
+ for p, f in subs:
+ file_pieces_v2 = []
+ pos = 0
+ size = os.path.getsize(f)
+ p2 = [n.encode('utf8') for n in p]
+ if content_type:
+ files.append(
+ {b'length': size, b'path': p2, b'content_type': content_type}
+ ) # HEREDAVE. bad for batch!
+ else:
+ files.append({b'length': size, b'path': p2})
+ with open(f, 'rb') as file_:
+ while pos < size:
+ to_read = min(size - pos, piece_length)
+ buffer = memoryview(file_.read(to_read))
+ pos += to_read
+
+ if torrent_format.includes_v1():
+ a = piece_length - done
+ for sub_buffer in (buffer[:a], buffer[a:]):
+ if sub_buffer:
+ sh.update(sub_buffer)
+ done += len(sub_buffer)
+
+ if done == piece_length:
+ pieces.append(sh.digest())
+ done = 0
+ sh = sha()
+ if torrent_format.includes_v2():
+ block_hashes = _sha256_buffer_blocks(buffer, v2_block_len)
+ num_leafs = v2_blocks_per_piece
+ if size <= piece_length:
+ # The special case when the file is smaller than a piece: only pad till the next power of 2
+ num_leafs = _next_pow2(len(block_hashes))
+ root = _sha256_merkle_root(
+ block_hashes, num_leafs, v2_block_padding, in_place=True
+ )
+ file_pieces_v2.append(root)
+
+ totalhashed += to_read
+ if totalhashed >= next_progress_event:
+ next_progress_event = totalhashed + piece_length
+ progress(totalhashed, totalsize)
+
+ if torrent_format == TorrentFormat.HYBRID and is_multi_file and done > 0:
+ # Add padding file to force piece-alignment
+ padding = piece_length - done
+ sh.update(bytes(padding))
+ files.append(
+ {
+ b'length': padding,
+ b'attr': b'p',
+ b'path': [b'.pad', str(padding).encode()],
+ }
+ )
+ pieces.append(sh.digest())
+ done = 0
+ sh = sha()
+
+ if torrent_format.includes_v2():
+ # add file to the `file tree` and, if needed, to the `piece layers` structures
+ pieces_root = _sha256_merkle_root(
+ file_pieces_v2,
+ _next_pow2(len(file_pieces_v2)),
+ v2_piece_padding,
+ in_place=False,
+ )
+ dst_directory = file_tree
+ for directory in p2[:-1]:
+ dst_directory = dst_directory.setdefault(directory, {})
+ dst_directory[p2[-1]] = {
+ b'': {
+ b'length': size,
+ b'pieces root': pieces_root,
+ }
+ }
+ if len(file_pieces_v2) > 1:
+ piece_layers[pieces_root] = b''.join(file_pieces_v2)
+
+ if done > 0:
+ pieces.append(sh.digest())
+ progress(totalsize, totalsize)
+
+ info = {
+ b'piece length': piece_length,
+ b'name': name.encode('utf8'),
+ }
+ if private:
+ info[b'private'] = 1
+ if content_type:
+ info[b'content_type'] = content_type
+ if torrent_format.includes_v1():
+ info[b'pieces'] = b''.join(pieces)
+ if is_multi_file:
+ info[b'files'] = files
+ else:
+ info[b'length'] = length
+ if torrent_format.includes_v2():
+ info.update(
+ {
+ b'meta version': 2,
+ b'file tree': file_tree,
+ }
+ )
+ return info, piece_layers if torrent_format.includes_v2() else None
+
+
+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/deluge/path_chooser_common.py b/deluge/path_chooser_common.py
new file mode 100644
index 0000000..0ea9234
--- /dev/null
+++ b/deluge/path_chooser_common.py
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2013 Bro <bro.development@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+
+
+def is_hidden(filepath):
+ def has_hidden_attribute(filepath):
+ import win32api
+ import win32con
+
+ try:
+ attribute = win32api.GetFileAttributes(filepath)
+ return attribute & (
+ win32con.FILE_ATTRIBUTE_HIDDEN | win32con.FILE_ATTRIBUTE_SYSTEM
+ )
+ except (AttributeError, AssertionError):
+ return False
+
+ name = os.path.basename(os.path.abspath(filepath))
+ # Windows
+ if os.name == 'nt':
+ return has_hidden_attribute(filepath)
+ return name.startswith('.')
+
+
+def get_completion_paths(args):
+ """
+ Takes a path value and returns the available completions.
+ If the path_value is a valid path, return all sub-directories.
+ If the path_value is not a valid path, remove the basename from the
+ path and return all sub-directories of path that start with basename.
+
+ :param args: options
+ :type args: dict
+ :returns: the args argument containing the available completions for the completion_text
+ :rtype: dict
+
+ """
+ args['paths'] = []
+ path_value = args['completion_text']
+ hidden_files = args['show_hidden_files']
+
+ def get_subdirs(dirname):
+ try:
+ return next(os.walk(dirname))[1]
+ except StopIteration:
+ # Invalid dirname
+ return []
+
+ dirname = os.path.dirname(path_value)
+ basename = os.path.basename(path_value)
+
+ dirs = get_subdirs(dirname)
+ # No completions available
+ if not dirs:
+ return args
+
+ # path_value ends with path separator so
+ # we only want all the subdirectories
+ if not basename:
+ # Lets remove hidden files
+ if not hidden_files:
+ old_dirs = dirs
+ dirs = []
+ for d in old_dirs:
+ if not is_hidden(os.path.join(dirname, d)):
+ dirs.append(d)
+ matching_dirs = []
+ for s in dirs:
+ if s.startswith(basename):
+ p = os.path.join(dirname, s)
+ if not p.endswith(os.path.sep):
+ p += os.path.sep
+ matching_dirs.append(p)
+
+ args['paths'] = sorted(matching_dirs)
+ return args
diff --git a/deluge/pluginmanagerbase.py b/deluge/pluginmanagerbase.py
new file mode 100644
index 0000000..835dbb2
--- /dev/null
+++ b/deluge/pluginmanagerbase.py
@@ -0,0 +1,279 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+"""PluginManagerBase"""
+import email
+import logging
+import os.path
+
+import pkg_resources
+from twisted.internet import defer
+from twisted.python.failure import Failure
+
+import deluge.common
+import deluge.component as component
+import deluge.configmanager
+
+log = logging.getLogger(__name__)
+
+METADATA_KEYS = [
+ 'Name',
+ 'License',
+ 'Author',
+ 'Home-page',
+ 'Summary',
+ 'Platform',
+ 'Version',
+ 'Author-email',
+ 'Description',
+]
+
+DEPRECATION_WARNING = """
+The plugin %s is not using the "deluge_" namespace.
+In order to avoid package name clashes between regular python packages and
+deluge plugins, the way deluge plugins should be created has changed.
+If you're seeing this message and you're not the developer of the plugin which
+triggered this warning, please report to it's author.
+If you're the developer, please take a look at the plugins hosted on deluge's
+git repository to have an idea of what needs to be changed.
+"""
+
+
+class PluginManagerBase:
+ """PluginManagerBase is a base class for PluginManagers to inherit"""
+
+ def __init__(self, config_file, entry_name):
+ log.debug('Plugin manager init..')
+
+ self.config = deluge.configmanager.ConfigManager(config_file)
+
+ # Create the plugins folder if it doesn't exist
+ if not os.path.exists(
+ os.path.join(deluge.configmanager.get_config_dir(), 'plugins')
+ ):
+ os.mkdir(os.path.join(deluge.configmanager.get_config_dir(), 'plugins'))
+
+ # This is the entry we want to load..
+ self.entry_name = entry_name
+
+ # Loaded plugins
+ self.plugins = {}
+
+ # Scan the plugin folders for plugins
+ self.scan_for_plugins()
+
+ def enable_plugins(self):
+ # Load plugins that are enabled in the config.
+ for name in self.config['enabled_plugins']:
+ self.enable_plugin(name)
+
+ def disable_plugins(self):
+ """Disable all plugins that are enabled"""
+ # Dict will be modified so iterate over generated list
+ for key in list(self.plugins):
+ self.disable_plugin(key)
+
+ def __getitem__(self, key):
+ return self.plugins[key]
+
+ def get_available_plugins(self):
+ """Returns a list of the available plugins name"""
+ return self.available_plugins
+
+ def get_enabled_plugins(self):
+ """Returns a list of enabled plugins"""
+ return list(self.plugins)
+
+ def scan_for_plugins(self):
+ """Scans for available plugins"""
+ base_dir = deluge.common.resource_filename('deluge', 'plugins')
+ user_dir = os.path.join(deluge.configmanager.get_config_dir(), 'plugins')
+ base_subdir = [
+ os.path.join(base_dir, f)
+ for f in os.listdir(base_dir)
+ if os.path.isdir(os.path.join(base_dir, f))
+ ]
+ plugin_dirs = [base_dir, user_dir] + base_subdir
+
+ for dirname in plugin_dirs:
+ pkg_resources.working_set.add_entry(dirname)
+ self.pkg_env = pkg_resources.Environment(
+ plugin_dirs, platform=None, python=None
+ )
+
+ self.available_plugins = []
+ for name in self.pkg_env:
+ log.debug(
+ 'Found plugin: %s %s at %s',
+ self.pkg_env[name][0].project_name,
+ self.pkg_env[name][0].version,
+ self.pkg_env[name][0].location,
+ )
+ self.available_plugins.append(self.pkg_env[name][0].project_name)
+
+ def enable_plugin(self, plugin_name):
+ """Enable a plugin.
+
+ Args:
+ plugin_name (str): The plugin name.
+
+ Returns:
+ Deferred: A deferred with callback value True or False indicating
+ whether the plugin is enabled or not.
+
+ """
+ if plugin_name not in self.available_plugins:
+ log.warning('Cannot enable non-existent plugin %s', plugin_name)
+ return defer.succeed(False)
+
+ if plugin_name in self.plugins:
+ log.warning('Cannot enable already enabled plugin %s', plugin_name)
+ return defer.succeed(True)
+
+ plugin_name = plugin_name.replace(' ', '-')
+ egg = self.pkg_env[plugin_name][0]
+ # Activate is required by non-namespace plugins.
+ egg.activate()
+ return_d = defer.succeed(True)
+
+ for name in egg.get_entry_map(self.entry_name):
+ try:
+ cls = egg.load_entry_point(self.entry_name, name)
+ instance = cls(plugin_name.replace('-', '_'))
+ except component.ComponentAlreadyRegistered as ex:
+ log.error(ex)
+ return defer.succeed(False)
+ except Exception as ex:
+ log.error(
+ 'Unable to instantiate plugin %r from %r!', name, egg.location
+ )
+ log.exception(ex)
+ continue
+ try:
+ return_d = defer.maybeDeferred(instance.enable)
+ except Exception as ex:
+ log.error('Unable to enable plugin: %s', name)
+ log.exception(ex)
+ return_d = defer.fail(False)
+
+ if not instance.__module__.startswith('deluge_'):
+ import warnings
+
+ warnings.warn_explicit(
+ DEPRECATION_WARNING % name,
+ DeprecationWarning,
+ instance.__module__,
+ 0,
+ )
+ if self._component_state == 'Started':
+
+ def on_enabled(result, instance):
+ return component.start([instance.plugin._component_name])
+
+ return_d.addCallback(on_enabled, instance)
+
+ def on_started(result, instance):
+ plugin_name_space = plugin_name.replace('-', ' ')
+ self.plugins[plugin_name_space] = instance
+ if plugin_name_space not in self.config['enabled_plugins']:
+ log.debug(
+ 'Adding %s to enabled_plugins list in config', plugin_name_space
+ )
+ self.config['enabled_plugins'].append(plugin_name_space)
+ log.info('Plugin %s enabled...', plugin_name_space)
+ return True
+
+ def on_started_error(result, instance):
+ log.error(
+ 'Failed to start plugin: %s\n%s',
+ plugin_name,
+ result.getTraceback(elideFrameworkCode=1, detail='brief'),
+ )
+ self.plugins[plugin_name.replace('-', ' ')] = instance
+ self.disable_plugin(plugin_name)
+ return False
+
+ return_d.addCallbacks(
+ on_started,
+ on_started_error,
+ callbackArgs=[instance],
+ errbackArgs=[instance],
+ )
+ return return_d
+
+ return defer.succeed(False)
+
+ def disable_plugin(self, name):
+ """Disable a plugin.
+
+ Args:
+ plugin_name (str): The plugin name.
+
+ Returns:
+ Deferred: A deferred with callback value True or False indicating
+ whether the plugin is disabled or not.
+
+ """
+ if name not in self.plugins:
+ log.warning('Plugin "%s" is not enabled...', name)
+ return defer.succeed(True)
+
+ try:
+ d = defer.maybeDeferred(self.plugins[name].disable)
+ except Exception as ex:
+ log.error('Error when disabling plugin: %s', self.plugin._component_name)
+ log.debug(ex)
+ d = defer.succeed(False)
+
+ def on_disabled(result):
+ ret = True
+ if isinstance(result, Failure):
+ log.debug(
+ 'Error when disabling plugin %s: %s', name, result.getTraceback()
+ )
+ ret = False
+ try:
+ component.deregister(self.plugins[name].plugin)
+ del self.plugins[name]
+ self.config['enabled_plugins'].remove(name)
+ except Exception as ex:
+ log.warning('Problems occurred disabling plugin: %s', name)
+ log.debug(ex)
+ ret = False
+ else:
+ log.info('Plugin %s disabled...', name)
+ return ret
+
+ d.addBoth(on_disabled)
+ return d
+
+ def get_plugin_info(self, name):
+ """Returns a dictionary of plugin info from the metadata"""
+
+ if not self.pkg_env[name]:
+ log.warning('Failed to retrieve info for plugin: %s', name)
+ info = {}.fromkeys(METADATA_KEYS, '')
+ info['Name'] = info['Version'] = 'not available'
+ return info
+
+ pkg_info = self.pkg_env[name][0].get_metadata('PKG-INFO')
+ return self.parse_pkg_info(pkg_info)
+
+ @staticmethod
+ def parse_pkg_info(pkg_info):
+ metadata_msg = email.message_from_string(pkg_info)
+ metadata_ver = metadata_msg.get('Metadata-Version')
+
+ info = {key: metadata_msg.get(key, '') for key in METADATA_KEYS}
+
+ # Optional Description field in body (Metadata spec >=2.1)
+ if not info['Description'] and metadata_ver.startswith('2'):
+ info['Description'] = metadata_msg.get_payload().strip()
+
+ return info
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/__init__.py b/deluge/plugins/AutoAdd/deluge_autoadd/__init__.py
new file mode 100644
index 0000000..5f5e766
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/__init__.py
@@ -0,0 +1,38 @@
+#
+# Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class Gtk3UIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/common.py b/deluge/plugins/AutoAdd/deluge_autoadd/common.py
new file mode 100644
index 0000000..6a790cb
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/common.py
@@ -0,0 +1,21 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename, subdir=False):
+ folder = os.path.join('data', 'autoadd_options') if subdir else 'data'
+ return resource_filename(__package__, os.path.join(folder, filename))
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/core.py b/deluge/plugins/AutoAdd/deluge_autoadd/core.py
new file mode 100644
index 0000000..271d5f0
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/core.py
@@ -0,0 +1,528 @@
+#
+# Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+import shutil
+from base64 import b64encode
+
+from twisted.internet import reactor
+from twisted.internet.defer import maybeDeferred
+from twisted.internet.task import LoopingCall, deferLater
+from twisted.python.failure import Failure
+
+import deluge.component as component
+import deluge.configmanager
+from deluge._libtorrent import lt
+from deluge.common import AUTH_LEVEL_ADMIN, is_magnet
+from deluge.core.rpcserver import export
+from deluge.error import AddTorrentError, InvalidTorrentError
+from deluge.event import DelugeEvent
+from deluge.plugins.pluginbase import CorePluginBase
+
+log = logging.getLogger(__name__)
+
+
+DEFAULT_PREFS = {'watchdirs': {}, 'next_id': 1}
+
+
+OPTIONS_AVAILABLE = { # option: builtin
+ 'enabled': False,
+ 'path': False,
+ 'append_extension': False,
+ 'copy_torrent': False,
+ 'delete_copy_torrent_toggle': False,
+ 'abspath': False,
+ 'download_location': True,
+ 'max_download_speed': True,
+ 'max_upload_speed': True,
+ 'max_connections': True,
+ 'max_upload_slots': True,
+ 'prioritize_first_last': True,
+ 'auto_managed': True,
+ 'stop_at_ratio': True,
+ 'stop_ratio': True,
+ 'remove_at_ratio': True,
+ 'move_completed': True,
+ 'move_completed_path': True,
+ 'label': False,
+ 'add_paused': True,
+ 'queue_to_top': False,
+ 'owner': True,
+ 'seed_mode': True,
+}
+
+MAX_NUM_ATTEMPTS = 10
+
+
+class AutoaddOptionsChangedEvent(DelugeEvent):
+ """Emitted when the options for the plugin are changed."""
+
+ def __init__(self):
+ pass
+
+
+def check_input(cond, message):
+ if not cond:
+ raise Exception(message)
+
+
+class Core(CorePluginBase):
+ def enable(self):
+ # reduce typing, assigning some values to self...
+ self.config = deluge.configmanager.ConfigManager('autoadd.conf', DEFAULT_PREFS)
+ self.config.run_converter((0, 1), 2, self.__migrate_config_1_to_2)
+ self.config.save()
+ self.watchdirs = self.config['watchdirs']
+
+ self.rpcserver = component.get('RPCServer')
+ component.get('EventManager').register_event_handler(
+ 'PreTorrentRemovedEvent', self.__on_pre_torrent_removed
+ )
+
+ # Dict of Filename:Attempts
+ self.invalid_torrents = {}
+ # Loopingcall timers for each enabled watchdir
+ self.update_timers = {}
+ deferLater(reactor, 5, self.enable_looping)
+
+ def enable_looping(self):
+ # Enable all looping calls for enabled watchdirs here
+ for watchdir_id, watchdir in self.watchdirs.items():
+ if watchdir['enabled']:
+ self.enable_watchdir(watchdir_id)
+
+ def disable(self):
+ # disable all running looping calls
+ component.get('EventManager').deregister_event_handler(
+ 'PreTorrentRemovedEvent', self.__on_pre_torrent_removed
+ )
+ for loopingcall in self.update_timers.values():
+ loopingcall.stop()
+ self.config.save()
+
+ def update(self):
+ pass
+
+ @export
+ def set_options(self, watchdir_id, options):
+ """Update the options for a watch folder."""
+ watchdir_id = str(watchdir_id)
+ options = self._make_unicode(options)
+ check_input(watchdir_id in self.watchdirs, _('Watch folder does not exist.'))
+ if 'path' in options:
+ options['abspath'] = os.path.abspath(options['path'])
+ check_input(os.path.isdir(options['abspath']), _('Path does not exist.'))
+ for w_id, w in self.watchdirs.items():
+ if options['abspath'] == w['abspath'] and watchdir_id != w_id:
+ raise Exception('Path is already being watched.')
+ for key in options:
+ if key not in OPTIONS_AVAILABLE:
+ if key not in [key2 + '_toggle' for key2 in OPTIONS_AVAILABLE]:
+ raise Exception('autoadd: Invalid options key:%s' % key)
+ # disable the watch loop if it was active
+ if watchdir_id in self.update_timers:
+ self.disable_watchdir(watchdir_id)
+
+ self.watchdirs[watchdir_id].update(options)
+ # re-enable watch loop if appropriate
+ if self.watchdirs[watchdir_id]['enabled']:
+ self.enable_watchdir(watchdir_id)
+ self.config.save()
+ component.get('EventManager').emit(AutoaddOptionsChangedEvent())
+
+ def load_torrent(self, filename, magnet):
+ log.debug('Attempting to open %s for add.', filename)
+ file_mode = 'r' if magnet else 'rb'
+ try:
+ with open(filename, file_mode) as _file:
+ filedump = _file.read()
+ except OSError as ex:
+ log.warning('Unable to open %s: %s', filename, ex)
+ raise ex
+
+ if not filedump:
+ raise EOFError('Torrent is 0 bytes!')
+
+ # Get the info to see if any exceptions are raised
+ if not magnet:
+ decoded_torrent = lt.bdecode(filedump)
+ if decoded_torrent is None:
+ raise InvalidTorrentError('Torrent file failed decoding.')
+ lt.torrent_info(decoded_torrent)
+
+ return filedump
+
+ def split_magnets(self, filename):
+ log.debug('Attempting to open %s for splitting magnets.', filename)
+ magnets = []
+ try:
+ with open(filename) as _file:
+ magnets = list(filter(len, _file.read().splitlines()))
+ except OSError as ex:
+ log.warning('Unable to open %s: %s', filename, ex)
+
+ if len(magnets) < 2:
+ return []
+
+ path = filename.rsplit(os.sep, 1)[0]
+ for magnet in magnets:
+ if not is_magnet(magnet):
+ log.warning('Found line which is not a magnet: %s', magnet)
+ continue
+
+ for part in magnet.split('&'):
+ if part.startswith('dn='):
+ name = part[3:].strip()
+ if name:
+ mname = os.sep.join([path, name + '.magnet'])
+ break
+ else:
+ short_hash = magnet.split('btih:')[1][:8]
+ mname = '.'.join([os.path.splitext(filename)[0], short_hash, 'magnet'])
+
+ try:
+ with open(mname, 'w') as _mfile:
+ _mfile.write(magnet)
+ except OSError as ex:
+ log.warning('Unable to open %s: %s', mname, ex)
+ return magnets
+
+ def update_watchdir(self, watchdir_id):
+ """Check the watch folder for new torrents to add."""
+ log.trace('Updating watchdir id: %s', watchdir_id)
+ watchdir_id = str(watchdir_id)
+ watchdir = self.watchdirs[watchdir_id]
+ if not watchdir['enabled']:
+ # We shouldn't be updating because this watchdir is not enabled
+ log.debug('Watchdir id %s is not enabled. Disabling it.', watchdir_id)
+ self.disable_watchdir(watchdir_id)
+ return
+
+ if not os.path.isdir(watchdir['abspath']):
+ log.warning('Invalid AutoAdd folder: %s', watchdir['abspath'])
+ self.disable_watchdir(watchdir_id)
+ return
+
+ # Generate options dict for watchdir
+ options = {}
+ if 'stop_at_ratio_toggle' in watchdir:
+ watchdir['stop_ratio_toggle'] = watchdir['stop_at_ratio_toggle']
+ # We default to True when reading _toggle values, so a config
+ # without them is valid, and applies all its settings.
+ for option, value in watchdir.items():
+ if OPTIONS_AVAILABLE.get(option):
+ if watchdir.get(option + '_toggle', True) or option in [
+ 'owner',
+ 'seed_mode',
+ ]:
+ options[option] = value
+
+ # Check for .magnet files containing multiple magnet links and
+ # create a new .magnet file for each of them.
+ for filename in os.listdir(watchdir['abspath']):
+ try:
+ filepath = os.path.join(watchdir['abspath'], filename)
+ except UnicodeDecodeError as ex:
+ log.error(
+ 'Unable to auto add torrent due to improper filename encoding: %s',
+ ex,
+ )
+ continue
+ if os.path.isdir(filepath):
+ # Skip directories
+ continue
+ elif os.path.splitext(filename)[1] == '.magnet' and self.split_magnets(
+ filepath
+ ):
+ os.remove(filepath)
+
+ for filename in os.listdir(watchdir['abspath']):
+ try:
+ filepath = os.path.join(watchdir['abspath'], filename)
+ except UnicodeDecodeError as ex:
+ log.error(
+ 'Unable to auto add torrent due to improper filename encoding: %s',
+ ex,
+ )
+ continue
+
+ if os.path.isdir(filepath):
+ # Skip directories
+ continue
+
+ ext = os.path.splitext(filename)[1].lower()
+ magnet = ext == '.magnet'
+ if not magnet and not ext == '.torrent':
+ log.debug('File checked for auto-loading is invalid: %s', filename)
+ continue
+
+ try:
+ filedump = self.load_torrent(filepath, magnet)
+ except (OSError, EOFError, RuntimeError, InvalidTorrentError) as ex:
+ # If torrent is invalid, keep track of it so can try again on the next pass.
+ # This catches torrent files that may not be fully saved to disk at load time.
+ log.debug('Torrent is invalid: %s', ex)
+ if filename in self.invalid_torrents:
+ self.invalid_torrents[filename] += 1
+ if self.invalid_torrents[filename] >= MAX_NUM_ATTEMPTS:
+ log.warning(
+ 'Maximum attempts reached while trying to add the '
+ 'torrent file with the path %s',
+ filepath,
+ )
+ os.rename(filepath, filepath + '.invalid')
+ del self.invalid_torrents[filename]
+ else:
+ self.invalid_torrents[filename] = 1
+ continue
+
+ def on_torrent_added(torrent_id, filename, filepath):
+ if 'Label' in component.get('CorePluginManager').get_enabled_plugins():
+ if watchdir.get('label_toggle', True) and watchdir.get('label'):
+ label = component.get('CorePlugin.Label')
+ if not watchdir['label'] in label.get_labels():
+ label.add(watchdir['label'])
+ try:
+ label.set_torrent(torrent_id, watchdir['label'])
+ except Exception as ex:
+ log.error('Unable to set label: %s', ex)
+
+ if (
+ watchdir.get('queue_to_top_toggle', True)
+ and 'queue_to_top' in watchdir
+ ):
+ if watchdir['queue_to_top']:
+ component.get('TorrentManager').queue_top(torrent_id)
+ else:
+ component.get('TorrentManager').queue_bottom(torrent_id)
+
+ # Rename, copy or delete the torrent once added to deluge.
+ if watchdir.get('append_extension_toggle'):
+ if not watchdir.get('append_extension'):
+ watchdir['append_extension'] = '.added'
+ os.rename(filepath, filepath + watchdir['append_extension'])
+ elif watchdir.get('copy_torrent_toggle'):
+ copy_torrent_path = watchdir['copy_torrent']
+ copy_torrent_file = os.path.join(copy_torrent_path, filename)
+ log.debug(
+ 'Moving added torrent file "%s" to "%s"',
+ os.path.basename(filepath),
+ copy_torrent_path,
+ )
+ shutil.move(filepath, copy_torrent_file)
+ else:
+ os.remove(filepath)
+
+ def fail_torrent_add(err_msg, filepath, magnet):
+ if isinstance(err_msg, Failure):
+ err_msg = err_msg.getErrorMessage()
+
+ # torrent handle is invalid and so is the magnet link
+ log.error(
+ 'Cannot Autoadd %s: %s: %s',
+ 'magnet' if magnet else 'torrent file',
+ filepath,
+ err_msg,
+ )
+ os.rename(filepath, filepath + '.invalid')
+
+ try:
+ # The torrent looks good, so lets add it to the session.
+ if magnet:
+ d = maybeDeferred(
+ component.get('Core').add_torrent_magnet,
+ filedump.strip(),
+ options,
+ )
+ else:
+ d = component.get('Core').add_torrent_file_async(
+ filename, b64encode(filedump), options
+ )
+ d.addCallback(on_torrent_added, filename, filepath)
+ d.addErrback(fail_torrent_add, filepath, magnet)
+ except AddTorrentError as ex:
+ fail_torrent_add(str(ex), filepath, magnet)
+
+ def on_update_watchdir_error(self, failure, watchdir_id):
+ """Disables any watch folders with un-handled exceptions."""
+ self.disable_watchdir(watchdir_id)
+ log.error(
+ 'Disabling "%s", error during update: %s',
+ self.watchdirs[watchdir_id]['path'],
+ failure,
+ )
+
+ @export
+ def enable_watchdir(self, watchdir_id):
+ w_id = str(watchdir_id)
+ # Enable the looping call
+ if w_id not in self.update_timers or not self.update_timers[w_id].running:
+ self.update_timers[w_id] = LoopingCall(self.update_watchdir, w_id)
+ self.update_timers[w_id].start(5).addErrback(
+ self.on_update_watchdir_error, w_id
+ )
+ # Update the config
+ if not self.watchdirs[w_id]['enabled']:
+ self.watchdirs[w_id]['enabled'] = True
+ self.config.save()
+ component.get('EventManager').emit(AutoaddOptionsChangedEvent())
+
+ @export
+ def disable_watchdir(self, watchdir_id):
+ w_id = str(watchdir_id)
+ # Disable the looping call
+ if w_id in self.update_timers:
+ if self.update_timers[w_id].running:
+ self.update_timers[w_id].stop()
+ del self.update_timers[w_id]
+ # Update the config
+ if self.watchdirs[w_id]['enabled']:
+ self.watchdirs[w_id]['enabled'] = False
+ self.config.save()
+ component.get('EventManager').emit(AutoaddOptionsChangedEvent())
+
+ @export
+ def set_config(self, config):
+ """Sets the config dictionary."""
+ config = self._make_unicode(config)
+ for key in config:
+ self.config[key] = config[key]
+ self.config.save()
+ component.get('EventManager').emit(AutoaddOptionsChangedEvent())
+
+ @export
+ def get_config(self):
+ """Returns the config dictionary."""
+ return self.config.config
+
+ @export
+ def get_watchdirs(self):
+ session_user = self.rpcserver.get_session_user()
+ session_auth_level = self.rpcserver.get_session_auth_level()
+ if session_auth_level == AUTH_LEVEL_ADMIN:
+ log.debug(
+ 'Current logged in user %s is an ADMIN, send all ' 'watchdirs',
+ session_user,
+ )
+ return self.watchdirs
+
+ watchdirs = {}
+ for watchdir_id, watchdir in self.watchdirs.items():
+ if watchdir.get('owner', 'localclient') == session_user:
+ watchdirs[watchdir_id] = watchdir
+
+ log.debug(
+ 'Current logged in user %s is not an ADMIN, send only '
+ 'their watchdirs: %s',
+ session_user,
+ list(watchdirs),
+ )
+ return watchdirs
+
+ def _make_unicode(self, options):
+ opts = {}
+ for key in options:
+ if isinstance(options[key], bytes):
+ options[key] = options[key].decode('utf8')
+ opts[key] = options[key]
+ return opts
+
+ @export
+ def add(self, options=None):
+ """Add a watch folder."""
+ if options is None:
+ options = {}
+ options = self._make_unicode(options)
+ abswatchdir = os.path.abspath(options['path'])
+ check_input(os.path.isdir(abswatchdir), _('Path does not exist.'))
+ check_input(
+ os.access(abswatchdir, os.R_OK | os.W_OK),
+ 'You must have read and write access to watch folder.',
+ )
+ if abswatchdir in [wd['abspath'] for wd in self.watchdirs.values()]:
+ raise Exception('Path is already being watched.')
+ options.setdefault('enabled', False)
+ options['abspath'] = abswatchdir
+ watchdir_id = self.config['next_id']
+ self.watchdirs[str(watchdir_id)] = options
+ if options.get('enabled'):
+ self.enable_watchdir(watchdir_id)
+ self.config['next_id'] = watchdir_id + 1
+ self.config.save()
+ component.get('EventManager').emit(AutoaddOptionsChangedEvent())
+ return watchdir_id
+
+ @export
+ def remove(self, watchdir_id):
+ """Remove a watch folder."""
+ watchdir_id = str(watchdir_id)
+ check_input(
+ watchdir_id in self.watchdirs, 'Unknown Watchdir: %s' % self.watchdirs
+ )
+ if self.watchdirs[watchdir_id]['enabled']:
+ self.disable_watchdir(watchdir_id)
+ del self.watchdirs[watchdir_id]
+ self.config.save()
+ component.get('EventManager').emit(AutoaddOptionsChangedEvent())
+
+ def __migrate_config_1_to_2(self, config):
+ for watchdir_id in config['watchdirs']:
+ config['watchdirs'][watchdir_id]['owner'] = 'localclient'
+ return config
+
+ def __on_pre_torrent_removed(self, torrent_id):
+ try:
+ torrent = component.get('TorrentManager')[torrent_id]
+ except KeyError:
+ log.warning(
+ 'Unable to remove torrent file for torrent id %s. It'
+ 'was already deleted from the TorrentManager',
+ torrent_id,
+ )
+ return
+ torrent_fname = torrent.filename
+ for watchdir in self.watchdirs.values():
+ if not watchdir.get('copy_torrent_toggle', False):
+ # This watchlist does copy torrents
+ continue
+ elif not watchdir.get('delete_copy_torrent_toggle', False):
+ # This watchlist is not set to delete finished torrents
+ continue
+ copy_torrent_path = watchdir['copy_torrent']
+ torrent_fname_path = os.path.join(copy_torrent_path, torrent_fname)
+ if os.path.isfile(torrent_fname_path):
+ try:
+ os.remove(torrent_fname_path)
+ log.info(
+ 'Removed torrent file "%s" from "%s"',
+ torrent_fname,
+ copy_torrent_path,
+ )
+ break
+ except OSError as ex:
+ log.info(
+ 'Failed to removed torrent file "%s" from "%s": %s',
+ torrent_fname,
+ copy_torrent_path,
+ ex,
+ )
+
+ @export
+ def is_admin_level(self):
+ return self.rpcserver.get_session_auth_level() == deluge.common.AUTH_LEVEL_ADMIN
+
+ @export
+ def get_auth_user(self):
+ return self.rpcserver.get_session_user()
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd.js b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd.js
new file mode 100644
index 0000000..e68fce3
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd.js
@@ -0,0 +1,226 @@
+/**
+ * Script: autoadd.js
+ * The client-side javascript code for the AutoAdd plugin.
+ *
+ * Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.ns('Deluge.ux.AutoAdd');
+Deluge.ux.AutoAdd.onClickFunctions = {};
+
+Ext.ns('Deluge.ux.preferences');
+
+/**
+ * @class Deluge.ux.preferences.AutoAddPage
+ * @extends Ext.Panel
+ */
+Deluge.ux.preferences.AutoAddPage = Ext.extend(Ext.Panel, {
+ title: _('AutoAdd'),
+ header: false,
+ layout: 'fit',
+ border: false,
+ watchdirs: {},
+
+ initComponent: function () {
+ Deluge.ux.preferences.AutoAddPage.superclass.initComponent.call(this);
+
+ var autoAdd = this;
+
+ this.list = new Ext.list.ListView({
+ store: new Ext.data.JsonStore({
+ fields: ['id', 'enabled', 'owner', 'path'],
+ }),
+ columns: [
+ {
+ id: 'enabled',
+ header: _('Active'),
+ sortable: true,
+ dataIndex: 'enabled',
+ tpl: new Ext.XTemplate('{enabled:this.getCheckbox}', {
+ getCheckbox: function (checked, selected) {
+ Deluge.ux.AutoAdd.onClickFunctions[selected.id] =
+ function () {
+ if (selected.enabled) {
+ deluge.client.autoadd.disable_watchdir(
+ selected.id
+ );
+ checked = false;
+ } else {
+ deluge.client.autoadd.enable_watchdir(
+ selected.id
+ );
+ checked = true;
+ }
+ autoAdd.updateWatchDirs();
+ };
+ return (
+ '<input id="enabled-' +
+ selected.id +
+ '" type="checkbox"' +
+ (checked ? ' checked' : '') +
+ ' onclick="Deluge.ux.AutoAdd.onClickFunctions[' +
+ selected.id +
+ ']()" />'
+ );
+ },
+ }),
+ width: 0.15,
+ },
+ {
+ id: 'owner',
+ header: _('Owner'),
+ sortable: true,
+ dataIndex: 'owner',
+ width: 0.2,
+ },
+ {
+ id: 'path',
+ header: _('Path'),
+ sortable: true,
+ dataIndex: 'path',
+ },
+ ],
+ singleSelect: true,
+ autoExpandColumn: 'path',
+ });
+ this.list.on('selectionchange', this.onSelectionChange, this);
+
+ this.panel = this.add({
+ items: [this.list],
+ bbar: {
+ items: [
+ {
+ text: _('Add'),
+ iconCls: 'icon-add',
+ handler: this.onAddClick,
+ scope: this,
+ },
+ {
+ text: _('Edit'),
+ iconCls: 'icon-edit',
+ handler: this.onEditClick,
+ scope: this,
+ disabled: true,
+ },
+ '->',
+ {
+ text: _('Remove'),
+ iconCls: 'icon-remove',
+ handler: this.onRemoveClick,
+ scope: this,
+ disabled: true,
+ },
+ ],
+ },
+ });
+
+ this.on('show', this.onPreferencesShow, this);
+ },
+
+ updateWatchDirs: function () {
+ deluge.client.autoadd.get_watchdirs({
+ success: function (watchdirs) {
+ this.watchdirs = watchdirs;
+ var watchdirsArray = [];
+ for (var id in watchdirs) {
+ if (watchdirs.hasOwnProperty(id)) {
+ var watchdir = {};
+ watchdir['id'] = id;
+ watchdir['enabled'] = watchdirs[id].enabled;
+ watchdir['owner'] =
+ watchdirs[id].owner || 'localclient';
+ watchdir['path'] = watchdirs[id].path;
+
+ watchdirsArray.push(watchdir);
+ }
+ }
+ this.list.getStore().loadData(watchdirsArray);
+ },
+ scope: this,
+ });
+ },
+
+ onAddClick: function () {
+ if (!this.addWin) {
+ this.addWin = new Deluge.ux.AutoAdd.AddAutoAddCommandWindow();
+ this.addWin.on(
+ 'watchdiradd',
+ function () {
+ this.updateWatchDirs();
+ },
+ this
+ );
+ }
+ this.addWin.show();
+ },
+
+ onEditClick: function () {
+ if (!this.editWin) {
+ this.editWin = new Deluge.ux.AutoAdd.EditAutoAddCommandWindow();
+ this.editWin.on(
+ 'watchdiredit',
+ function () {
+ this.updateWatchDirs();
+ },
+ this
+ );
+ }
+ var id = this.list.getSelectedRecords()[0].id;
+ this.editWin.show(id, this.watchdirs[id]);
+ },
+
+ onPreferencesShow: function () {
+ this.updateWatchDirs();
+ },
+
+ onRemoveClick: function () {
+ var record = this.list.getSelectedRecords()[0];
+ deluge.client.autoadd.remove(record.id, {
+ success: function () {
+ this.updateWatchDirs();
+ },
+ scope: this,
+ });
+ },
+
+ onSelectionChange: function (dv, selections) {
+ if (selections.length) {
+ this.panel.getBottomToolbar().items.get(1).enable();
+ this.panel.getBottomToolbar().items.get(3).enable();
+ } else {
+ this.panel.getBottomToolbar().items.get(1).disable();
+ this.panel.getBottomToolbar().items.get(3).disable();
+ }
+ },
+});
+
+Deluge.plugins.AutoAddPlugin = Ext.extend(Deluge.Plugin, {
+ name: 'AutoAdd',
+
+ static: {
+ prefsPage: null,
+ },
+
+ onDisable: function () {
+ deluge.preferences.removePage(Deluge.plugins.AutoAddPlugin.prefsPage);
+ Deluge.plugins.AutoAddPlugin.prefsPage = null;
+ },
+
+ onEnable: function () {
+ /*
+ * Called for each of the JavaScript files.
+ * This will prevent adding unnecessary tabs to the preferences window.
+ */
+ if (!Deluge.plugins.AutoAddPlugin.prefsPage) {
+ Deluge.plugins.AutoAddPlugin.prefsPage = deluge.preferences.addPage(
+ new Deluge.ux.preferences.AutoAddPage()
+ );
+ }
+ },
+});
+
+Deluge.registerPlugin('AutoAdd', Deluge.plugins.AutoAddPlugin);
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.js b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.js
new file mode 100644
index 0000000..7ec4448
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.js
@@ -0,0 +1,470 @@
+/**
+ * Script: autoadd.js
+ * The client-side javascript code for the AutoAdd plugin.
+ *
+ * Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.ns('Deluge.ux.AutoAdd');
+
+/**
+ * @class Deluge.ux.AutoAdd.AutoAddWindowBase
+ * @extends Ext.Window
+ */
+Deluge.ux.AutoAdd.AutoAddWindowBase = Ext.extend(Ext.Window, {
+ width: 350,
+ autoHeight: true,
+ closeAction: 'hide',
+
+ spin_ids: ['max_download_speed', 'max_upload_speed', 'stop_ratio'],
+ spin_int_ids: ['max_upload_slots', 'max_connections'],
+ chk_ids: [
+ 'stop_at_ratio',
+ 'remove_at_ratio',
+ 'move_completed',
+ 'add_paused',
+ 'auto_managed',
+ 'queue_to_top',
+ ],
+ toggle_ids: [
+ 'append_extension_toggle',
+ 'download_location_toggle',
+ 'label_toggle',
+ 'copy_torrent_toggle',
+ 'delete_copy_torrent_toggle',
+ 'seed_mode',
+ ],
+
+ accounts: new Ext.data.ArrayStore({
+ storeId: 'accountStore',
+ id: 0,
+ fields: [
+ {
+ name: 'displayText',
+ type: 'string',
+ },
+ ],
+ }),
+ labels: new Ext.data.ArrayStore({
+ storeId: 'labelStore',
+ id: 0,
+ fields: [
+ {
+ name: 'displayText',
+ type: 'string',
+ },
+ ],
+ }),
+
+ initComponent: function () {
+ Deluge.ux.AutoAdd.AutoAddWindowBase.superclass.initComponent.call(this);
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+
+ this.MainTab = new Deluge.ux.AutoAdd.AutoAddMainPanel();
+ this.OptionsTab = new Deluge.ux.AutoAdd.AutoAddOptionsPanel();
+
+ this.form = this.add({
+ xtype: 'form',
+ baseCls: 'x-plain',
+ bodyStyle: 'padding: 5px',
+ items: [
+ {
+ xtype: 'tabpanel',
+ activeTab: 0,
+ items: [this.MainTab, this.OptionsTab],
+ },
+ ],
+ });
+ },
+
+ onCancelClick: function () {
+ this.hide();
+ },
+
+ getOptions: function () {
+ var options = {};
+
+ options['enabled'] = Ext.getCmp('enabled').getValue();
+ options['path'] = Ext.getCmp('path').getValue();
+ options['download_location'] =
+ Ext.getCmp('download_location').getValue();
+ options['move_completed_path'] = Ext.getCmp(
+ 'move_completed_path'
+ ).getValue();
+ options['copy_torrent'] = Ext.getCmp('copy_torrent').getValue();
+
+ options['label'] = Ext.getCmp('label').getValue();
+ options['append_extension'] = Ext.getCmp('append_extension').getValue();
+ options['owner'] = Ext.getCmp('owner').getValue();
+
+ this.toggle_ids.forEach(function (toggle_id) {
+ options[toggle_id] = Ext.getCmp(toggle_id).getValue();
+ });
+ this.spin_ids.forEach(function (spin_id) {
+ options[spin_id] = Ext.getCmp(spin_id).getValue();
+ options[spin_id + '_toggle'] = Ext.getCmp(
+ spin_id + '_toggle'
+ ).getValue();
+ });
+ this.spin_int_ids.forEach(function (spin_int_id) {
+ options[spin_int_id] = Ext.getCmp(spin_int_id).getValue();
+ options[spin_int_id + '_toggle'] = Ext.getCmp(
+ spin_int_id + '_toggle'
+ ).getValue();
+ });
+ this.chk_ids.forEach(function (chk_id) {
+ options[chk_id] = Ext.getCmp(chk_id).getValue();
+ options[chk_id + '_toggle'] = Ext.getCmp(
+ chk_id + '_toggle'
+ ).getValue();
+ });
+
+ if (
+ options['copy_torrent_toggle'] &&
+ options['path'] === options['copy_torrent']
+ ) {
+ throw _(
+ '"Watch Folder" directory and "Copy of .torrent' +
+ ' files to" directory cannot be the same!'
+ );
+ }
+
+ return options;
+ },
+
+ loadOptions: function (options) {
+ /*
+ * Populate all available options data to the UI
+ */
+ var value;
+
+ if (options === undefined) {
+ options = {};
+ }
+ Ext.getCmp('enabled').setValue(
+ options['enabled'] !== undefined ? options['enabled'] : true
+ );
+ Ext.getCmp('isnt_append_extension').setValue(true);
+ Ext.getCmp('append_extension_toggle').setValue(
+ options['append_extension_toggle'] !== undefined
+ ? options['append_extension_toggle']
+ : false
+ );
+ Ext.getCmp('append_extension').setValue(
+ options['append_extension'] !== undefined
+ ? options['append_extension']
+ : '.added'
+ );
+ Ext.getCmp('download_location_toggle').setValue(
+ options['download_location_toggle'] !== undefined
+ ? options['download_location_toggle']
+ : false
+ );
+ Ext.getCmp('copy_torrent_toggle').setValue(
+ options['copy_torrent_toggle'] !== undefined
+ ? options['copy_torrent_toggle']
+ : false
+ );
+ Ext.getCmp('delete_copy_torrent_toggle').setValue(
+ options['delete_copy_torrent_toggle'] !== undefined
+ ? options['delete_copy_torrent_toggle']
+ : false
+ );
+
+ value =
+ options['seed_mode'] !== undefined ? options['seed_mode'] : false;
+ Ext.getCmp('seed_mode').setValue(value);
+
+ this.accounts.removeAll(true);
+ this.labels.removeAll(true);
+ Ext.getCmp('owner').store = this.accounts;
+ Ext.getCmp('label').store = this.labels;
+ Ext.getCmp('label').setValue(
+ options['label'] !== undefined ? options['label'] : ''
+ );
+ Ext.getCmp('label_toggle').setValue(
+ options['label_toggle'] !== undefined
+ ? options['label_toggle']
+ : false
+ );
+
+ this.spin_ids.forEach(function (spin_id) {
+ Ext.getCmp(spin_id).setValue(
+ options[spin_id] !== undefined ? options[spin_id] : 0
+ );
+ Ext.getCmp(spin_id + '_toggle').setValue(
+ options[spin_id + '_toggle'] !== undefined
+ ? options[spin_id + '_toggle']
+ : false
+ );
+ });
+ this.chk_ids.forEach(function (chk_id) {
+ Ext.getCmp(chk_id).setValue(
+ options[chk_id] !== undefined ? options[chk_id] : true
+ );
+ Ext.getCmp(chk_id + '_toggle').setValue(
+ options[chk_id + '_toggle'] !== undefined
+ ? options[chk_id + '_toggle']
+ : false
+ );
+ });
+ value =
+ options['add_paused'] !== undefined ? options['add_paused'] : true;
+ if (!value) {
+ Ext.getCmp('not_add_paused').setValue(true);
+ }
+ value =
+ options['queue_to_top'] !== undefined
+ ? options['queue_to_top']
+ : true;
+ if (!value) {
+ Ext.getCmp('not_queue_to_top').setValue(true);
+ }
+ value =
+ options['auto_managed'] !== undefined
+ ? options['auto_managed']
+ : true;
+ if (!value) {
+ Ext.getCmp('not_auto_managed').setValue(true);
+ }
+ [
+ 'move_completed_path',
+ 'path',
+ 'download_location',
+ 'copy_torrent',
+ ].forEach(function (field) {
+ value = options[field] !== undefined ? options[field] : '';
+ Ext.getCmp(field).setValue(value);
+ });
+
+ if (Object.keys(options).length === 0) {
+ deluge.client.core.get_config({
+ success: function (config) {
+ var value;
+ Ext.getCmp('download_location').setValue(
+ options['download_location'] !== undefined
+ ? options['download_location']
+ : config['download_location']
+ );
+ value =
+ options['move_completed_toggle'] !== undefined
+ ? options['move_completed_toggle']
+ : config['move_completed'];
+ if (value) {
+ Ext.getCmp('move_completed_toggle').setValue(
+ options['move_completed_toggle'] !== undefined
+ ? options['move_completed_toggle']
+ : false
+ );
+ Ext.getCmp('move_completed_path').setValue(
+ options['move_completed_path'] !== undefined
+ ? options['move_completed_path']
+ : config['move_completed_path']
+ );
+ }
+ value =
+ options['copy_torrent_toggle'] !== undefined
+ ? options['copy_torrent_toggle']
+ : config['copy_torrent_file'];
+ if (value) {
+ Ext.getCmp('copy_torrent_toggle').setValue(true);
+ Ext.getCmp('copy_torrent').setValue(
+ options['copy_torrent'] !== undefined
+ ? options['copy_torrent']
+ : config['torrentfiles_location']
+ );
+ }
+ value =
+ options['delete_copy_torrent_toggle'] !== undefined
+ ? options['copy_torrent_toggle']
+ : config['del_copy_torrent_file'];
+ if (value) {
+ Ext.getCmp('delete_copy_torrent_toggle').setValue(true);
+ }
+ },
+ });
+ }
+
+ deluge.client.core.get_enabled_plugins({
+ success: function (plugins) {
+ if (plugins !== undefined && plugins.indexOf('Label') > -1) {
+ this.MainTab.LabelFset.setVisible(true);
+ deluge.client.label.get_labels({
+ success: function (labels) {
+ for (
+ var index = 0;
+ index < labels.length;
+ index++
+ ) {
+ labels[index] = [labels[index]];
+ }
+ this.labels.loadData(labels, false);
+ },
+ failure: function (failure) {
+ console.error(failure);
+ },
+ scope: this,
+ });
+ } else {
+ this.MainTab.LabelFset.setVisible(false);
+ }
+ },
+ scope: this,
+ });
+
+ var me = this;
+
+ function on_accounts(accounts, owner) {
+ for (var index = 0; index < accounts.length; index++) {
+ accounts[index] = [accounts[index]['username']];
+ }
+ me.accounts.loadData(accounts, false);
+ Ext.getCmp('owner').setValue(owner).enable();
+ }
+
+ function on_accounts_failure(failure) {
+ deluge.client.autoadd.get_auth_user({
+ success: function (user) {
+ me.accounts.loadData([[user]], false);
+ Ext.getCmp('owner').setValue(user).disable(true);
+ },
+ scope: this,
+ });
+ }
+
+ deluge.client.autoadd.is_admin_level({
+ success: function (is_admin) {
+ if (is_admin) {
+ deluge.client.core.get_known_accounts({
+ success: function (accounts) {
+ deluge.client.autoadd.get_auth_user({
+ success: function (user) {
+ on_accounts(
+ accounts,
+ options['owner'] !== undefined
+ ? options['owner']
+ : user
+ );
+ },
+ scope: this,
+ });
+ },
+ failure: on_accounts_failure,
+ scope: this,
+ });
+ } else {
+ on_accounts_failure(null);
+ }
+ },
+ scope: this,
+ });
+ },
+});
+
+/**
+ * @class Deluge.ux.AutoAdd.EditAutoAddCommandWindow
+ * @extends Deluge.ux.AutoAdd.AutoAddWindowBase
+ */
+Deluge.ux.AutoAdd.EditAutoAddCommandWindow = Ext.extend(
+ Deluge.ux.AutoAdd.AutoAddWindowBase,
+ {
+ title: _('Edit Watch Folder'),
+
+ initComponent: function () {
+ Deluge.ux.AutoAdd.EditAutoAddCommandWindow.superclass.initComponent.call(
+ this
+ );
+ this.addButton(_('Save'), this.onSaveClick, this);
+ this.addEvents({
+ watchdiredit: true,
+ });
+ },
+
+ show: function (watchdir_id, options) {
+ Deluge.ux.AutoAdd.EditAutoAddCommandWindow.superclass.show.call(
+ this
+ );
+ this.watchdir_id = watchdir_id;
+ this.loadOptions(options);
+ },
+
+ onSaveClick: function () {
+ try {
+ var options = this.getOptions();
+ deluge.client.autoadd.set_options(this.watchdir_id, options, {
+ success: function () {
+ this.fireEvent('watchdiredit', this, options);
+ },
+ scope: this,
+ });
+ } catch (err) {
+ Ext.Msg.show({
+ title: _('Incompatible Option'),
+ msg: err,
+ buttons: Ext.Msg.OK,
+ scope: this,
+ });
+ }
+
+ this.hide();
+ },
+ }
+);
+
+/**
+ * @class Deluge.ux.AutoAdd.AddAutoAddCommandWindow
+ * @extends Deluge.ux.AutoAdd.AutoAddWindowBase
+ */
+Deluge.ux.AutoAdd.AddAutoAddCommandWindow = Ext.extend(
+ Deluge.ux.AutoAdd.AutoAddWindowBase,
+ {
+ title: _('Add Watch Folder'),
+
+ initComponent: function () {
+ Deluge.ux.AutoAdd.AddAutoAddCommandWindow.superclass.initComponent.call(
+ this
+ );
+ this.addButton(_('Add'), this.onAddClick, this);
+ this.addEvents({
+ watchdiradd: true,
+ });
+ },
+
+ show: function () {
+ Deluge.ux.AutoAdd.AddAutoAddCommandWindow.superclass.show.call(
+ this
+ );
+ this.loadOptions();
+ },
+
+ onAddClick: function () {
+ var options = this.getOptions();
+ deluge.client.autoadd.add(options, {
+ success: function () {
+ this.fireEvent('watchdiradd', this, options);
+ this.hide();
+ },
+ failure: function (err) {
+ const regex = /: (.*\n)\n?\]/m;
+ var error;
+ if ((error = regex.exec(err.error.message)) !== null) {
+ error = error[1];
+ } else {
+ error = err.error.message;
+ }
+ Ext.Msg.show({
+ title: _('Incompatible Option'),
+ msg: error,
+ buttons: Ext.Msg.OK,
+ scope: this,
+ });
+ },
+ scope: this,
+ });
+ },
+ }
+);
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui
new file mode 100644
index 0000000..f1870f1
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui
@@ -0,0 +1,1322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="lower">-1</property>
+ <property name="upper">10000</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="lower">-1</property>
+ <property name="upper">10000</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="lower">-1</property>
+ <property name="upper">10000</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="lower">-1</property>
+ <property name="upper">10000</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment5">
+ <property name="upper">100</property>
+ <property name="value">2</property>
+ <property name="step_increment">0.10000000149</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkDialog" id="options_dialog">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Watch Folder Properties</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <signal name="close" handler="on_options_dialog_close" swapped="no"/>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="opts_cancel_button">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_opts_cancel" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="opts_add_button">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_opts_add" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="opts_apply_button">
+ <property name="label">gtk-apply</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_opts_apply" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkEntry" id="path_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">If a .torrent file is added to this directory,
+it will be added to the session.</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="path_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">If a .torrent file is added to this directory,
+it will be added to the session.</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select A Folder</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="enabled">
+ <property name="label" translatable="yes">Enable this watch folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Watch Folder&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="isnt_append_extension">
+ <property name="label" translatable="yes">Delete .torrent after adding</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Once the torrent is added to the session,
+the .torrent will be deleted.</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkRadioButton" id="append_extension_toggle">
+ <property name="label" translatable="yes">Append extension after adding:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Once the torrent is added to the session,
+an extension will be appended to the .torrent
+and it will remain in the same directory.</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">isnt_append_extension</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="append_extension">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="text" translatable="yes">.added</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <child>
+ <object class="GtkRadioButton" id="copy_torrent_toggle">
+ <property name="label" translatable="yes">Copy of .torrent files to:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Once the torrent is added to the session,
+the .torrent will copied to the chosen directory
+and deleted from the watch folder.</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">isnt_append_extension</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkEntry" id="copy_torrent_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="copy_torrent_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select A Folder</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="delete_copy_torrent_toggle">
+ <property name="label" translatable="yes">Delete copy of torrent file on remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Once the torrent is deleted from the session,
+also delete the .torrent file used to add it.</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_padding">15</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Torrent File Action&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="download_location_toggle">
+ <property name="label" translatable="yes">Set download folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">This folder will be where the torrent data is downloaded to.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkEntry" id="download_location_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="download_location_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select A Folder</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Download Folder&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="move_completed_toggle">
+ <property name="label" translatable="yes">Set move completed folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkEntry" id="move_completed_path_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="move_completed_path_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select A Folder</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="move_completed">
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Move Completed&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="label_frame">
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="hbox11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="label_toggle">
+ <property name="label" translatable="yes">Label: </property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_entry">True</property>
+ <child internal-child="entry">
+ <object class="GtkEntry" id="combobox-entry1">
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Label&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Main</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="OwnerFrame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkComboBox" id="OwnerCombobox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">The user selected here will be the owner of the torrent.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Owner&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">3</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">2</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="max_upload_speed_toggle">
+ <property name="label" translatable="yes">Max Upload Speed:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="max_connections_toggle">
+ <property name="label" translatable="yes">Max Connections:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="max_upload_slots_toggle">
+ <property name="label" translatable="yes">Max Upload Slots:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="max_download_speed">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="max_upload_speed">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment2</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="max_connections">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="max_upload_slots">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment4</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xpad">5</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xpad">5</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="max_download_speed_toggle">
+ <property name="label" translatable="yes">Max Download Speed:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Bandwidth&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">6</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">2</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="stop_at_ratio_toggle">
+ <property name="label" translatable="yes">Stop seed at ratio:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkCheckButton" id="remove_at_ratio">
+ <property name="label" translatable="yes">Remove at ratio</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="auto_managed_toggle">
+ <property name="label" translatable="yes">Auto Managed:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="remove_at_ratio_toggle">
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="stop_ratio_toggle">
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="stop_ratio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">adjustment5</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="auto_managed_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkRadioButton" id="auto_managed">
+ <property name="label">gtk-yes</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="isnt_auto_managed">
+ <property name="label">gtk-no</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">auto_managed</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="stop_at_ratio">
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="add_paused_toggle">
+ <property name="label" translatable="yes">Add Paused:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="add_paused_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkRadioButton" id="add_paused">
+ <property name="label">gtk-yes</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="isnt_add_paused">
+ <property name="label">gtk-no</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">add_paused</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="queue_to_top_toggle">
+ <property name="label" translatable="yes">Queue to:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkRadioButton" id="queue_to_top">
+ <property name="label" translatable="yes">Top</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="isnt_queue_to_top">
+ <property name="label" translatable="yes">Bottom</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">queue_to_top</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="seed_mode">
+ <property name="label" translatable="yes">Skip File Hash Check</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Queue&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Options</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">opts_cancel_button</action-widget>
+ <action-widget response="0">opts_add_button</action-widget>
+ <action-widget response="0">opts_apply_button</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options/main_tab.js b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options/main_tab.js
new file mode 100644
index 0000000..f685ff2
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options/main_tab.js
@@ -0,0 +1,304 @@
+/**
+ * Script: main_tab.js
+ * The client-side javascript code for the AutoAdd plugin.
+ *
+ * Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.ns('Deluge.ux.AutoAdd');
+
+/**
+ * @class Deluge.ux.AutoAdd.AutoAddMainPanel
+ * @extends Ext.Panel
+ */
+Deluge.ux.AutoAdd.AutoAddMainPanel = Ext.extend(Ext.Panel, {
+ id: 'main_tab_panel',
+ title: _('Main'),
+
+ initComponent: function () {
+ Deluge.ux.AutoAdd.AutoAddMainPanel.superclass.initComponent.call(this);
+ this.watchFolderFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Watch Folder'),
+ defaultType: 'textfield',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ width: '85%',
+ labelWidth: 1,
+ items: [
+ {
+ xtype: 'textfield',
+ id: 'path',
+ hideLabel: true,
+ width: 304,
+ },
+ {
+ hideLabel: true,
+ id: 'enabled',
+ xtype: 'checkbox',
+ boxLabel: _('Enable this watch folder'),
+ checked: true,
+ },
+ ],
+ });
+
+ this.torrentActionFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Torrent File Action'),
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ width: '85%',
+ labelWidth: 1,
+ defaults: {
+ style: 'margin-bottom: 2px',
+ },
+ items: [
+ {
+ xtype: 'radiogroup',
+ columns: 1,
+ items: [
+ {
+ xtype: 'radio',
+ name: 'torrent_action',
+ id: 'isnt_append_extension',
+ boxLabel: _('Delete .torrent after adding'),
+ checked: true,
+ hideLabel: true,
+ listeners: {
+ check: function (cb, newValue) {
+ if (newValue) {
+ Ext.getCmp(
+ 'append_extension'
+ ).setDisabled(newValue);
+ Ext.getCmp('copy_torrent').setDisabled(
+ newValue
+ );
+ Ext.getCmp(
+ 'delete_copy_torrent_toggle'
+ ).setDisabled(newValue);
+ }
+ },
+ },
+ },
+ {
+ xtype: 'container',
+ layout: 'hbox',
+ hideLabel: true,
+ items: [
+ {
+ xtype: 'radio',
+ name: 'torrent_action',
+ id: 'append_extension_toggle',
+ boxLabel: _(
+ 'Append extension after adding:'
+ ),
+ hideLabel: true,
+ listeners: {
+ check: function (cb, newValue) {
+ if (newValue) {
+ Ext.getCmp(
+ 'append_extension'
+ ).setDisabled(!newValue);
+ Ext.getCmp(
+ 'copy_torrent'
+ ).setDisabled(newValue);
+ Ext.getCmp(
+ 'delete_copy_torrent_toggle'
+ ).setDisabled(newValue);
+ }
+ },
+ },
+ },
+ {
+ xtype: 'textfield',
+ id: 'append_extension',
+ hideLabel: true,
+ disabled: true,
+ style: 'margin-left: 2px',
+ width: 112,
+ },
+ ],
+ },
+ {
+ xtype: 'container',
+ hideLabel: true,
+ items: [
+ {
+ xtype: 'container',
+ layout: 'hbox',
+ hideLabel: true,
+ items: [
+ {
+ xtype: 'radio',
+ name: 'torrent_action',
+ id: 'copy_torrent_toggle',
+ boxLabel: _(
+ 'Copy of .torrent files to:'
+ ),
+ hideLabel: true,
+ listeners: {
+ check: function (cb, newValue) {
+ if (newValue) {
+ Ext.getCmp(
+ 'append_extension'
+ ).setDisabled(newValue);
+ Ext.getCmp(
+ 'copy_torrent'
+ ).setDisabled(
+ !newValue
+ );
+ Ext.getCmp(
+ 'delete_copy_torrent_toggle'
+ ).setDisabled(
+ !newValue
+ );
+ }
+ },
+ },
+ },
+ {
+ xtype: 'textfield',
+ id: 'copy_torrent',
+ hideLabel: true,
+ disabled: true,
+ style: 'margin-left: 2px',
+ width: 152,
+ },
+ ],
+ },
+ {
+ xtype: 'checkbox',
+ id: 'delete_copy_torrent_toggle',
+ boxLabel: _(
+ 'Delete copy of torrent file on remove'
+ ),
+ style: 'margin-left: 10px',
+ disabled: true,
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ });
+
+ this.downloadFolderFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Download Folder'),
+ defaultType: 'textfield',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ width: '85%',
+ labelWidth: 1,
+ items: [
+ {
+ hideLabel: true,
+ id: 'download_location_toggle',
+ xtype: 'checkbox',
+ boxLabel: _('Set download folder'),
+ listeners: {
+ check: function (cb, checked) {
+ Ext.getCmp('download_location').setDisabled(
+ !checked
+ );
+ },
+ },
+ },
+ {
+ xtype: 'textfield',
+ id: 'download_location',
+ hideLabel: true,
+ width: 304,
+ disabled: true,
+ },
+ ],
+ });
+
+ this.moveCompletedFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Move Completed'),
+ defaultType: 'textfield',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ width: '85%',
+ labelWidth: 1,
+ items: [
+ {
+ hideLabel: true,
+ id: 'move_completed_toggle',
+ xtype: 'checkbox',
+ boxLabel: _('Set move completed folder'),
+ listeners: {
+ check: function (cb, checked) {
+ Ext.getCmp('move_completed_path').setDisabled(
+ !checked
+ );
+ },
+ },
+ },
+ {
+ xtype: 'textfield',
+ id: 'move_completed_path',
+ hideLabel: true,
+ width: 304,
+ disabled: true,
+ },
+ ],
+ });
+
+ this.LabelFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Label'),
+ defaultType: 'textfield',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 3px;',
+ //width: '85%',
+ labelWidth: 1,
+ //hidden: true,
+ items: [
+ {
+ xtype: 'container',
+ layout: 'hbox',
+ hideLabel: true,
+ items: [
+ {
+ hashLabel: false,
+ id: 'label_toggle',
+ xtype: 'checkbox',
+ boxLabel: _('Label:'),
+ listeners: {
+ check: function (cb, checked) {
+ Ext.getCmp('label').setDisabled(!checked);
+ },
+ },
+ },
+ {
+ xtype: 'combo',
+ id: 'label',
+ hideLabel: true,
+ //width: 220,
+ width: 254,
+ disabled: true,
+ style: 'margin-left: 2px',
+ mode: 'local',
+ valueField: 'displayText',
+ displayField: 'displayText',
+ },
+ ],
+ },
+ ],
+ });
+
+ this.add([
+ this.watchFolderFset,
+ this.torrentActionFset,
+ this.downloadFolderFset,
+ this.moveCompletedFset,
+ this.LabelFset,
+ ]);
+ },
+});
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options/options_tab.js b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options/options_tab.js
new file mode 100644
index 0000000..4ce030e
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options/options_tab.js
@@ -0,0 +1,302 @@
+/**
+ * Script: options_tab.js
+ * The client-side javascript code for the AutoAdd plugin.
+ *
+ * Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.ns('Deluge.ux.AutoAdd');
+
+/**
+ * @class Deluge.ux.AutoAdd.AutoAddOptionsPanel
+ * @extends Ext.Panel
+ */
+Deluge.ux.AutoAdd.AutoAddOptionsPanel = Ext.extend(Ext.Panel, {
+ id: 'options_tab_panel',
+ title: _('Options'),
+
+ initComponent: function () {
+ Deluge.ux.AutoAdd.AutoAddOptionsPanel.superclass.initComponent.call(
+ this
+ );
+ var maxDownload = {
+ idCheckbox: 'max_download_speed_toggle',
+ labelCheckbox: 'Max Download Speed (KiB/s):',
+ idSpinner: 'max_download_speed',
+ decimalPrecision: 1,
+ };
+ var maxUploadSpeed = {
+ idCheckbox: 'max_upload_speed_toggle',
+ labelCheckbox: 'Max upload Speed (KiB/s):',
+ idSpinner: 'max_upload_speed',
+ decimalPrecision: 1,
+ };
+ var maxConnections = {
+ idCheckbox: 'max_connections_toggle',
+ labelCheckbox: 'Max Connections::',
+ idSpinner: 'max_connections',
+ decimalPrecision: 0,
+ };
+ var maxUploadSlots = {
+ idCheckbox: 'max_upload_slots_toggle',
+ labelCheckbox: 'Max Upload Slots:',
+ idSpinner: 'max_upload_slots',
+ decimalPrecision: 0,
+ };
+ // queue data
+ var addPause = {
+ idCheckbox: 'add_paused_toggle',
+ labelCheckbox: 'Add Pause:',
+ nameRadio: 'add_paused',
+ labelRadio: {
+ yes: 'Yes',
+ no: 'No',
+ },
+ };
+ var queueTo = {
+ idCheckbox: 'queue_to_top_toggle',
+ labelCheckbox: 'Queue To:',
+ nameRadio: 'queue_to_top',
+ labelRadio: {
+ yes: 'Top',
+ no: 'Bottom',
+ },
+ };
+ var autoManaged = {
+ idCheckbox: 'auto_managed_toggle',
+ labelCheckbox: 'Auto Managed:',
+ nameRadio: 'auto_managed',
+ labelRadio: {
+ yes: 'Yes',
+ no: 'No',
+ },
+ };
+
+ this.ownerFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Owner'),
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ //width: '85%',
+ labelWidth: 1,
+ items: [
+ {
+ xtype: 'combo',
+ id: 'owner',
+ hideLabel: true,
+ width: 312,
+ mode: 'local',
+ valueField: 'displayText',
+ displayField: 'displayText',
+ },
+ ],
+ });
+
+ this.bandwidthFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Bandwidth'),
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ //width: '85%',
+ labelWidth: 1,
+ defaults: {
+ style: 'margin-bottom: 5px',
+ },
+ });
+ this.bandwidthFset.add(this._getBandwidthContainer(maxDownload));
+ this.bandwidthFset.add(this._getBandwidthContainer(maxUploadSpeed));
+ this.bandwidthFset.add(this._getBandwidthContainer(maxConnections));
+ this.bandwidthFset.add(this._getBandwidthContainer(maxUploadSlots));
+
+ this.queueFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Queue'),
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ //width: '85%',
+ labelWidth: 1,
+ defaults: {
+ style: 'margin-bottom: 5px',
+ },
+ items: [
+ {
+ xtype: 'container',
+ layout: 'hbox',
+ hideLabel: true,
+ },
+ ],
+ });
+ this.queueFset.add(this._getQueueContainer(addPause));
+ this.queueFset.add(this._getQueueContainer(queueTo));
+ this.queueFset.add(this._getQueueContainer(autoManaged));
+ this.queueFset.add({
+ xtype: 'container',
+ hideLabel: true,
+ items: [
+ {
+ xtype: 'container',
+ layout: 'hbox',
+ hideLabel: true,
+ items: [
+ {
+ xtype: 'checkbox',
+ id: 'stop_at_ratio_toggle',
+ boxLabel: _('Stop seed at ratio:'),
+ hideLabel: true,
+ width: 175,
+ listeners: {
+ check: function (cb, checked) {
+ Ext.getCmp('stop_ratio').setDisabled(
+ !checked
+ );
+ Ext.getCmp('remove_at_ratio').setDisabled(
+ !checked
+ );
+ },
+ },
+ },
+ {
+ xtype: 'spinnerfield',
+ id: 'stop_ratio',
+ hideLabel: true,
+ disabled: true,
+ value: 0.0,
+ minValue: 0.0,
+ maxValue: 100.0,
+ decimalPrecision: 1,
+ incrementValue: 0.1,
+ style: 'margin-left: 2px',
+ width: 100,
+ },
+ ],
+ },
+ {
+ xtype: 'container',
+ layout: 'hbox',
+ hideLabel: true,
+ style: 'margin-left: 10px',
+ items: [
+ {
+ xtype: 'checkbox',
+ id: 'remove_at_ratio',
+ boxLabel: _('Remove at ratio'),
+ disabled: true,
+ checked: true,
+ },
+ {
+ xtype: 'checkbox',
+ id: 'remove_at_ratio_toggle',
+ disabled: true,
+ checked: true,
+ hidden: true,
+ },
+ {
+ xtype: 'checkbox',
+ id: 'stop_ratio_toggle',
+ disabled: true,
+ checked: true,
+ hidden: true,
+ },
+ {
+ xtype: 'checkbox',
+ id: 'stop_ratio_toggle',
+ disabled: true,
+ checked: true,
+ hidden: true,
+ },
+ ],
+ },
+ ],
+ });
+ this.queueFset.add({
+ xtype: 'checkbox',
+ id: 'seed_mode',
+ boxLabel: _('Skip File Hash Check'),
+ hideLabel: true,
+ width: 175,
+ });
+
+ this.add([this.ownerFset, this.bandwidthFset, this.queueFset]);
+ },
+
+ _getBandwidthContainer: function (values) {
+ return new Ext.Container({
+ xtype: 'container',
+ layout: 'hbox',
+ hideLabel: true,
+ items: [
+ {
+ xtype: 'checkbox',
+ hideLabel: true,
+ id: values.idCheckbox,
+ boxLabel: _(values.labelCheckbox),
+ width: 175,
+ listeners: {
+ check: function (cb, checked) {
+ Ext.getCmp(values.idSpinner).setDisabled(!checked);
+ },
+ },
+ },
+ {
+ xtype: 'spinnerfield',
+ id: values.idSpinner,
+ hideLabel: true,
+ disabled: true,
+ minValue: -1,
+ maxValue: 10000,
+ value: 0.0,
+ decimalPrecision: values.decimalPrecision,
+ style: 'margin-left: 2px',
+ width: 100,
+ },
+ ],
+ });
+ },
+
+ _getQueueContainer: function (values) {
+ return new Ext.Container({
+ xtype: 'container',
+ layout: 'hbox',
+ hideLabel: true,
+ items: [
+ {
+ xtype: 'checkbox',
+ hideLabel: true,
+ id: values.idCheckbox,
+ boxLabel: _(values.labelCheckbox),
+ width: 175,
+ listeners: {
+ check: function (cb, checked) {
+ Ext.getCmp(values.nameRadio).setDisabled(!checked);
+ Ext.getCmp('not_' + values.nameRadio).setDisabled(
+ !checked
+ );
+ },
+ },
+ },
+ {
+ xtype: 'radio',
+ name: values.nameRadio,
+ id: values.nameRadio,
+ boxLabel: _(values.labelRadio.yes),
+ hideLabel: true,
+ checked: true,
+ disabled: true,
+ width: 50,
+ },
+ {
+ xtype: 'radio',
+ name: values.nameRadio,
+ id: 'not_' + values.nameRadio,
+ boxLabel: _(values.labelRadio.no),
+ hideLabel: true,
+ disabled: true,
+ },
+ ],
+ });
+ },
+});
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui b/deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui
new file mode 100644
index 0000000..0e645d3
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkWindow" id="prefs_window">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="prefs_box_1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="prefs_box">
+ <property name="width_request">340</property>
+ <property name="height_request">390</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">3</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="watchdirs_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Watch Folders:&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButton" id="add_button">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_add_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="remove_button">
+ <property name="label">gtk-remove</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_remove_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="edit_button">
+ <property name="label">gtk-edit</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_edit_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py b/deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py
new file mode 100644
index 0000000..80fb9fc
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py
@@ -0,0 +1,576 @@
+#
+# Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+
+import gi # isort:skip (Required before Gtk import).
+
+gi.require_version('Gtk', '3.0')
+
+# isort:imports-thirdparty
+from gi.repository import Gtk
+
+# isort:imports-firstparty
+import deluge.common
+import deluge.component as component
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+from deluge.ui.gtk3 import dialogs
+
+# isort:imports-localfolder
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class IncompatibleOption(Exception):
+ pass
+
+
+class OptionsDialog:
+ spin_ids = ['max_download_speed', 'max_upload_speed', 'stop_ratio']
+ spin_int_ids = ['max_upload_slots', 'max_connections']
+ chk_ids = [
+ 'stop_at_ratio',
+ 'remove_at_ratio',
+ 'move_completed',
+ 'add_paused',
+ 'auto_managed',
+ 'queue_to_top',
+ ]
+
+ def __init__(self):
+ self.accounts = Gtk.ListStore(str)
+ self.labels = Gtk.ListStore(str)
+ self.core_config = {}
+
+ def show(self, options=None, watchdir_id=None):
+ if options is None:
+ options = {}
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('autoadd_options.ui'))
+ self.builder.connect_signals(
+ {
+ 'on_opts_add': self.on_add,
+ 'on_opts_apply': self.on_apply,
+ 'on_opts_cancel': self.on_cancel,
+ 'on_options_dialog_close': self.on_cancel,
+ 'on_toggle_toggled': self.on_toggle_toggled,
+ }
+ )
+ self.dialog = self.builder.get_object('options_dialog')
+ self.dialog.set_transient_for(component.get('Preferences').pref_dialog)
+
+ if watchdir_id:
+ # We have an existing watchdir_id, we are editing
+ self.builder.get_object('opts_add_button').hide()
+ self.builder.get_object('opts_apply_button').show()
+ self.watchdir_id = watchdir_id
+ else:
+ # We don't have an id, adding
+ self.builder.get_object('opts_add_button').show()
+ self.builder.get_object('opts_apply_button').hide()
+ self.watchdir_id = None
+
+ self.load_options(options)
+ self.dialog.run()
+
+ def load_options(self, options):
+ self.builder.get_object('enabled').set_active(options.get('enabled', True))
+ self.builder.get_object('append_extension_toggle').set_active(
+ options.get('append_extension_toggle', False)
+ )
+ self.builder.get_object('append_extension').set_text(
+ options.get('append_extension', '.added')
+ )
+ self.builder.get_object('download_location_toggle').set_active(
+ options.get('download_location_toggle', False)
+ )
+ self.builder.get_object('copy_torrent_toggle').set_active(
+ options.get('copy_torrent_toggle', False)
+ )
+ self.builder.get_object('delete_copy_torrent_toggle').set_active(
+ options.get('delete_copy_torrent_toggle', False)
+ )
+ self.builder.get_object('seed_mode').set_active(options.get('seed_mode', False))
+ self.accounts.clear()
+ self.labels.clear()
+ combobox = self.builder.get_object('OwnerCombobox')
+ combobox_render = Gtk.CellRendererText()
+ combobox.pack_start(combobox_render, True)
+ combobox.add_attribute(combobox_render, 'text', 0)
+ combobox.set_model(self.accounts)
+
+ label_widget = self.builder.get_object('label')
+ label_widget.get_child().set_text(options.get('label', ''))
+ label_widget.set_model(self.labels)
+ label_widget.set_entry_text_column(0)
+ self.builder.get_object('label_toggle').set_active(
+ options.get('label_toggle', False)
+ )
+
+ for spin_id in self.spin_ids + self.spin_int_ids:
+ self.builder.get_object(spin_id).set_value(options.get(spin_id, 0))
+ self.builder.get_object(spin_id + '_toggle').set_active(
+ options.get(spin_id + '_toggle', False)
+ )
+ for chk_id in self.chk_ids:
+ self.builder.get_object(chk_id).set_active(bool(options.get(chk_id, True)))
+ self.builder.get_object(chk_id + '_toggle').set_active(
+ options.get(chk_id + '_toggle', False)
+ )
+ if not options.get('add_paused', True):
+ self.builder.get_object('isnt_add_paused').set_active(True)
+ if not options.get('queue_to_top', True):
+ self.builder.get_object('isnt_queue_to_top').set_active(True)
+ if not options.get('auto_managed', True):
+ self.builder.get_object('isnt_auto_managed').set_active(True)
+ for field in [
+ 'move_completed_path',
+ 'path',
+ 'download_location',
+ 'copy_torrent',
+ ]:
+ if client.is_localhost():
+ self.builder.get_object(field + '_chooser').set_current_folder(
+ options.get(field, os.path.expanduser('~'))
+ )
+ self.builder.get_object(field + '_chooser').show()
+ self.builder.get_object(field + '_entry').hide()
+ else:
+ self.builder.get_object(field + '_entry').set_text(
+ options.get(field, '')
+ )
+ self.builder.get_object(field + '_entry').show()
+ self.builder.get_object(field + '_chooser').hide()
+ self.set_sensitive()
+
+ def on_core_config(config):
+ if client.is_localhost():
+ self.builder.get_object('download_location_chooser').set_current_folder(
+ options.get('download_location', config['download_location'])
+ )
+ if options.get('move_completed_toggle', config['move_completed']):
+ self.builder.get_object('move_completed_toggle').set_active(True)
+ self.builder.get_object(
+ 'move_completed_path_chooser'
+ ).set_current_folder(
+ options.get(
+ 'move_completed_path', config['move_completed_path']
+ )
+ )
+ if options.get('copy_torrent_toggle', config['copy_torrent_file']):
+ self.builder.get_object('copy_torrent_toggle').set_active(True)
+ self.builder.get_object('copy_torrent_chooser').set_current_folder(
+ options.get('copy_torrent', config['torrentfiles_location'])
+ )
+ else:
+ self.builder.get_object('download_location_entry').set_text(
+ options.get('download_location', config['download_location'])
+ )
+ if options.get('move_completed_toggle', config['move_completed']):
+ self.builder.get_object('move_completed_toggle').set_active(
+ options.get('move_completed_toggle', False)
+ )
+ self.builder.get_object('move_completed_path_entry').set_text(
+ options.get(
+ 'move_completed_path', config['move_completed_path']
+ )
+ )
+ if options.get('copy_torrent_toggle', config['copy_torrent_file']):
+ self.builder.get_object('copy_torrent_toggle').set_active(True)
+ self.builder.get_object('copy_torrent_entry').set_text(
+ options.get('copy_torrent', config['torrentfiles_location'])
+ )
+
+ if options.get(
+ 'delete_copy_torrent_toggle', config['del_copy_torrent_file']
+ ):
+ self.builder.get_object('delete_copy_torrent_toggle').set_active(True)
+
+ if not options:
+ client.core.get_config().addCallback(on_core_config)
+
+ def on_accounts(accounts, owner):
+ log.debug('Got Accounts')
+ selected_iter = None
+ for account in accounts:
+ acc_iter = self.accounts.append()
+ self.accounts.set_value(acc_iter, 0, account['username'])
+ if account['username'] == owner:
+ selected_iter = acc_iter
+ self.builder.get_object('OwnerCombobox').set_active_iter(selected_iter)
+
+ def on_accounts_failure(failure):
+ log.debug('Failed to get accounts!!! %s', failure)
+ acc_iter = self.accounts.append()
+ self.accounts.set_value(acc_iter, 0, client.get_auth_user())
+ self.builder.get_object('OwnerCombobox').set_active(0)
+ self.builder.get_object('OwnerCombobox').set_sensitive(False)
+
+ def on_labels(labels):
+ log.debug('Got Labels: %s', labels)
+ for label in labels:
+ self.labels.set_value(self.labels.append(), 0, label)
+ label_widget = self.builder.get_object('label')
+ label_widget.set_model(self.labels)
+ label_widget.set_entry_text_column(0)
+
+ def on_failure(failure):
+ log.exception(failure)
+
+ def on_get_enabled_plugins(result):
+ if 'Label' in result:
+ self.builder.get_object('label_frame').show()
+ client.label.get_labels().addCallback(on_labels).addErrback(on_failure)
+ else:
+ self.builder.get_object('label_frame').hide()
+ self.builder.get_object('label_toggle').set_active(False)
+
+ client.core.get_enabled_plugins().addCallback(on_get_enabled_plugins)
+ if client.get_auth_level() == deluge.common.AUTH_LEVEL_ADMIN:
+ client.core.get_known_accounts().addCallback(
+ on_accounts, options.get('owner', client.get_auth_user())
+ ).addErrback(on_accounts_failure)
+ else:
+ acc_iter = self.accounts.append()
+ self.accounts.set_value(acc_iter, 0, client.get_auth_user())
+ self.builder.get_object('OwnerCombobox').set_active(0)
+ self.builder.get_object('OwnerCombobox').set_sensitive(False)
+
+ def set_sensitive(self):
+ maintoggles = [
+ 'download_location',
+ 'append_extension',
+ 'move_completed',
+ 'label',
+ 'max_download_speed',
+ 'max_upload_speed',
+ 'max_connections',
+ 'max_upload_slots',
+ 'add_paused',
+ 'auto_managed',
+ 'stop_at_ratio',
+ 'queue_to_top',
+ 'copy_torrent',
+ ]
+ for maintoggle in maintoggles:
+ self.on_toggle_toggled(self.builder.get_object(maintoggle + '_toggle'))
+
+ def on_toggle_toggled(self, tb):
+ toggle = tb.get_name().replace('_toggle', '')
+ isactive = tb.get_active()
+ if toggle == 'download_location':
+ self.builder.get_object('download_location_chooser').set_sensitive(isactive)
+ self.builder.get_object('download_location_entry').set_sensitive(isactive)
+ elif toggle == 'append_extension':
+ self.builder.get_object('append_extension').set_sensitive(isactive)
+ elif toggle == 'copy_torrent':
+ self.builder.get_object('copy_torrent_entry').set_sensitive(isactive)
+ self.builder.get_object('copy_torrent_chooser').set_sensitive(isactive)
+ self.builder.get_object('delete_copy_torrent_toggle').set_sensitive(
+ isactive
+ )
+ elif toggle == 'move_completed':
+ self.builder.get_object('move_completed_path_chooser').set_sensitive(
+ isactive
+ )
+ self.builder.get_object('move_completed_path_entry').set_sensitive(isactive)
+ self.builder.get_object('move_completed').set_active(isactive)
+ elif toggle == 'label':
+ self.builder.get_object('label').set_sensitive(isactive)
+ elif toggle == 'max_download_speed':
+ self.builder.get_object('max_download_speed').set_sensitive(isactive)
+ elif toggle == 'max_upload_speed':
+ self.builder.get_object('max_upload_speed').set_sensitive(isactive)
+ elif toggle == 'max_connections':
+ self.builder.get_object('max_connections').set_sensitive(isactive)
+ elif toggle == 'max_upload_slots':
+ self.builder.get_object('max_upload_slots').set_sensitive(isactive)
+ elif toggle == 'add_paused':
+ self.builder.get_object('add_paused').set_sensitive(isactive)
+ self.builder.get_object('isnt_add_paused').set_sensitive(isactive)
+ elif toggle == 'queue_to_top':
+ self.builder.get_object('queue_to_top').set_sensitive(isactive)
+ self.builder.get_object('isnt_queue_to_top').set_sensitive(isactive)
+ elif toggle == 'auto_managed':
+ self.builder.get_object('auto_managed').set_sensitive(isactive)
+ self.builder.get_object('isnt_auto_managed').set_sensitive(isactive)
+ elif toggle == 'stop_at_ratio':
+ self.builder.get_object('remove_at_ratio_toggle').set_active(isactive)
+ self.builder.get_object('stop_ratio_toggle').set_active(isactive)
+ self.builder.get_object('stop_at_ratio').set_active(isactive)
+ self.builder.get_object('stop_ratio').set_sensitive(isactive)
+ self.builder.get_object('remove_at_ratio').set_sensitive(isactive)
+
+ def on_apply(self, event=None):
+ try:
+ options = self.generate_opts()
+ client.autoadd.set_options(str(self.watchdir_id), options).addCallbacks(
+ self.on_added, self.on_error_show
+ )
+ except IncompatibleOption as ex:
+ dialogs.ErrorDialog(_('Incompatible Option'), str(ex), self.dialog).run()
+
+ def on_error_show(self, result):
+ d = dialogs.ErrorDialog(_('Error'), result.value.message, self.dialog)
+ result.cleanFailure()
+ d.run()
+
+ def on_added(self, result):
+ self.dialog.destroy()
+
+ def on_add(self, event=None):
+ try:
+ options = self.generate_opts()
+ client.autoadd.add(options).addCallbacks(self.on_added, self.on_error_show)
+ except IncompatibleOption as ex:
+ dialogs.ErrorDialog(_('Incompatible Option'), str(ex), self.dialog).run()
+
+ def on_cancel(self, event=None):
+ self.dialog.destroy()
+
+ def generate_opts(self):
+ # generate options dict based on gtk objects
+ options = {}
+ options['enabled'] = self.builder.get_object('enabled').get_active()
+ if client.is_localhost():
+ options['path'] = self.builder.get_object('path_chooser').get_filename()
+ options['download_location'] = self.builder.get_object(
+ 'download_location_chooser'
+ ).get_filename()
+ options['move_completed_path'] = self.builder.get_object(
+ 'move_completed_path_chooser'
+ ).get_filename()
+ options['copy_torrent'] = self.builder.get_object(
+ 'copy_torrent_chooser'
+ ).get_filename()
+ else:
+ options['path'] = self.builder.get_object('path_entry').get_text()
+ options['download_location'] = self.builder.get_object(
+ 'download_location_entry'
+ ).get_text()
+ options['move_completed_path'] = self.builder.get_object(
+ 'move_completed_path_entry'
+ ).get_text()
+ options['copy_torrent'] = self.builder.get_object(
+ 'copy_torrent_entry'
+ ).get_text()
+
+ options['label'] = (
+ self.builder.get_object('label').get_child().get_text().lower()
+ )
+ options['append_extension'] = self.builder.get_object(
+ 'append_extension'
+ ).get_text()
+ options['owner'] = self.accounts[
+ self.builder.get_object('OwnerCombobox').get_active()
+ ][0]
+
+ for key in [
+ 'append_extension_toggle',
+ 'download_location_toggle',
+ 'label_toggle',
+ 'copy_torrent_toggle',
+ 'delete_copy_torrent_toggle',
+ 'seed_mode',
+ ]:
+ options[key] = self.builder.get_object(key).get_active()
+
+ for spin_id in self.spin_ids:
+ options[spin_id] = self.builder.get_object(spin_id).get_value()
+ options[spin_id + '_toggle'] = self.builder.get_object(
+ spin_id + '_toggle'
+ ).get_active()
+ for spin_int_id in self.spin_int_ids:
+ options[spin_int_id] = self.builder.get_object(
+ spin_int_id
+ ).get_value_as_int()
+ options[spin_int_id + '_toggle'] = self.builder.get_object(
+ spin_int_id + '_toggle'
+ ).get_active()
+ for chk_id in self.chk_ids:
+ options[chk_id] = self.builder.get_object(chk_id).get_active()
+ options[chk_id + '_toggle'] = self.builder.get_object(
+ chk_id + '_toggle'
+ ).get_active()
+
+ if (
+ options['copy_torrent_toggle']
+ and options['path'] == options['copy_torrent']
+ ):
+ raise IncompatibleOption(
+ _(
+ '"Watch Folder" directory and "Copy of .torrent'
+ ' files to" directory cannot be the same!'
+ )
+ )
+ return options
+
+
+class GtkUI(Gtk3PluginBase):
+ def enable(self):
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('config.ui'))
+ self.builder.connect_signals(self)
+ self.opts_dialog = OptionsDialog()
+
+ component.get('PluginManager').register_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').register_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+ client.register_event_handler(
+ 'AutoaddOptionsChangedEvent', self.on_options_changed_event
+ )
+
+ self.watchdirs = {}
+
+ vbox = self.builder.get_object('watchdirs_vbox')
+ sw = Gtk.ScrolledWindow()
+ sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
+ sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+
+ vbox.pack_start(sw, True, True, 0)
+
+ self.store = self.create_model()
+
+ self.treeView = Gtk.TreeView(self.store)
+ self.treeView.connect('cursor-changed', self.on_listitem_activated)
+ self.treeView.connect('row-activated', self.on_edit_button_clicked)
+
+ self.create_columns(self.treeView)
+ sw.add(self.treeView)
+ sw.show_all()
+ component.get('Preferences').add_page(
+ _('AutoAdd'), self.builder.get_object('prefs_box')
+ )
+
+ def disable(self):
+ component.get('Preferences').remove_page(_('AutoAdd'))
+ component.get('PluginManager').deregister_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').deregister_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+
+ def create_model(self):
+ store = Gtk.ListStore(str, bool, str, str)
+ for watchdir_id, watchdir in self.watchdirs.items():
+ store.append(
+ [
+ watchdir_id,
+ watchdir['enabled'],
+ watchdir.get('owner', 'localclient'),
+ watchdir['path'],
+ ]
+ )
+ return store
+
+ def create_columns(self, treeview):
+ renderer_toggle = Gtk.CellRendererToggle()
+ column = Gtk.TreeViewColumn(
+ _('Active'), renderer_toggle, activatable=1, active=1
+ )
+ column.set_sort_column_id(1)
+ treeview.append_column(column)
+ tt = Gtk.Tooltip()
+ tt.set_text(_('Double-click to toggle'))
+ treeview.set_tooltip_cell(tt, None, None, renderer_toggle)
+
+ renderertext = Gtk.CellRendererText()
+ column = Gtk.TreeViewColumn(_('Owner'), renderertext, text=2)
+ column.set_sort_column_id(2)
+ treeview.append_column(column)
+ tt2 = Gtk.Tooltip()
+ tt2.set_text(_('Double-click to edit'))
+ treeview.set_has_tooltip(True)
+
+ renderertext = Gtk.CellRendererText()
+ column = Gtk.TreeViewColumn(_('Path'), renderertext, text=3)
+ column.set_sort_column_id(3)
+ treeview.append_column(column)
+ tt2 = Gtk.Tooltip()
+ tt2.set_text(_('Double-click to edit'))
+ treeview.set_has_tooltip(True)
+
+ def load_watchdir_list(self):
+ pass
+
+ def add_watchdir_entry(self):
+ pass
+
+ def on_add_button_clicked(self, event=None):
+ # display options_window
+ self.opts_dialog.show()
+
+ def on_remove_button_clicked(self, event=None):
+ tree, tree_id = self.treeView.get_selection().get_selected()
+ watchdir_id = str(self.store.get_value(tree_id, 0))
+ if watchdir_id:
+ client.autoadd.remove(watchdir_id)
+
+ def on_edit_button_clicked(self, event=None, a=None, col=None):
+ tree, tree_id = self.treeView.get_selection().get_selected()
+ watchdir_id = str(self.store.get_value(tree_id, 0))
+ if watchdir_id:
+ if col and col.get_title() == _('Active'):
+ if self.watchdirs[watchdir_id]['enabled']:
+ client.autoadd.disable_watchdir(watchdir_id)
+ else:
+ client.autoadd.enable_watchdir(watchdir_id)
+ else:
+ self.opts_dialog.show(self.watchdirs[watchdir_id], watchdir_id)
+
+ def on_listitem_activated(self, treeview):
+ tree, tree_id = self.treeView.get_selection().get_selected()
+ if tree_id:
+ self.builder.get_object('edit_button').set_sensitive(True)
+ self.builder.get_object('remove_button').set_sensitive(True)
+ else:
+ self.builder.get_object('edit_button').set_sensitive(False)
+ self.builder.get_object('remove_button').set_sensitive(False)
+
+ def on_apply_prefs(self):
+ log.debug('applying prefs for AutoAdd')
+ for watchdir_id, watchdir in self.watchdirs.items():
+ client.autoadd.set_options(watchdir_id, watchdir)
+
+ def on_show_prefs(self):
+ client.autoadd.get_watchdirs().addCallback(self.cb_get_config)
+
+ def on_options_changed_event(self):
+ client.autoadd.get_watchdirs().addCallback(self.cb_get_config)
+
+ def cb_get_config(self, watchdirs):
+ """callback for on show_prefs"""
+ log.trace('Got whatchdirs from core: %s', watchdirs)
+ self.watchdirs = watchdirs or {}
+ self.store.clear()
+ for watchdir_id, watchdir in self.watchdirs.items():
+ self.store.append(
+ [
+ watchdir_id,
+ watchdir['enabled'],
+ watchdir.get('owner', 'localclient'),
+ watchdir['path'],
+ ]
+ )
+ # Workaround for cached glade signal appearing when re-enabling plugin in same session
+ if self.builder.get_object('edit_button'):
+ # Disable the remove and edit buttons, because nothing in the store is selected
+ self.builder.get_object('remove_button').set_sensitive(False)
+ self.builder.get_object('edit_button').set_sensitive(False)
diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/webui.py b/deluge/plugins/AutoAdd/deluge_autoadd/webui.py
new file mode 100644
index 0000000..d328432
--- /dev/null
+++ b/deluge/plugins/AutoAdd/deluge_autoadd/webui.py
@@ -0,0 +1,35 @@
+#
+# Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+ scripts = [
+ get_resource('autoadd.js'),
+ get_resource('autoadd_options.js'),
+ get_resource('main_tab.js', True),
+ get_resource('options_tab.js', True),
+ ]
+
+ def enable(self):
+ pass
+
+ def disable(self):
+ pass
diff --git a/deluge/plugins/AutoAdd/setup.py b/deluge/plugins/AutoAdd/setup.py
new file mode 100644
index 0000000..5a01ee9
--- /dev/null
+++ b/deluge/plugins/AutoAdd/setup.py
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2009 GazpachoKing <chase.sterling@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'AutoAdd'
+__author__ = 'Chase Sterling, Pedro Algarvio'
+__author_email__ = 'chase.sterling@gmail.com, pedro@algarvio.me'
+__version__ = '1.8'
+__url__ = 'http://dev.deluge-torrent.org/wiki/Plugins/AutoAdd'
+__license__ = 'GPLv3'
+__description__ = 'Monitors folders for .torrent files.'
+__long_description__ = """"""
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*', 'data/*/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__ if __long_description__ else __description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:Gtk3UIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/__init__.py b/deluge/plugins/Blocklist/deluge_blocklist/__init__.py
new file mode 100644
index 0000000..40ce1d1
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/__init__.py
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/common.py b/deluge/plugins/Blocklist/deluge_blocklist/common.py
new file mode 100644
index 0000000..35b2f87
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/common.py
@@ -0,0 +1,172 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+from functools import wraps
+from sys import exc_info
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
+
+
+def raises_errors_as(error):
+ """Factory class that returns a decorator which wraps the decorated
+ function to raise all exceptions as the specified error type.
+
+ """
+
+ def decorator(func):
+ """Returns a function which wraps the given func to raise all exceptions as error."""
+
+ @wraps(func)
+ def wrapper(self, *args, **kwargs):
+ """Wraps the function in a try..except block and calls it with the specified args.
+
+ Raises:
+ Any exceptions as error preserving the message and traceback.
+
+ """
+ try:
+ return func(self, *args, **kwargs)
+ except Exception:
+ (value, tb) = exc_info()[1:]
+ raise error(value).with_traceback(tb) from None
+
+ return wrapper
+
+ return decorator
+
+
+def remove_zeros(ip):
+ """Removes unneeded zeros from ip addresses.
+
+ Args:
+ ip (str): The ip address.
+
+ Returns:
+ str: The ip address without the unneeded zeros.
+
+ Example:
+ 000.000.000.003 -> 0.0.0.3
+
+ """
+ return '.'.join([part.lstrip('0').zfill(1) for part in ip.split('.')])
+
+
+class BadIP(Exception):
+ _message = None
+
+ def __init__(self, message):
+ super().__init__(message)
+
+ def __set_message(self, message):
+ self._message = message
+
+ def __get_message(self):
+ return self._message
+
+ message = property(__get_message, __set_message)
+ del __get_message, __set_message
+
+
+class IP:
+ __slots__ = ('q1', 'q2', 'q3', 'q4', '_long')
+
+ def __init__(self, q1, q2, q3, q4):
+ self.q1 = q1
+ self.q2 = q2
+ self.q3 = q3
+ self.q4 = q4
+ self._long = 0
+ for q in self.quadrants():
+ self._long = (self._long << 8) | int(q)
+
+ @property
+ def address(self):
+ return '.'.join([str(q) for q in [self.q1, self.q2, self.q3, self.q4]])
+
+ @property
+ def long(self):
+ return self._long
+
+ @classmethod
+ def parse(cls, ip):
+ try:
+ q1, q2, q3, q4 = (int(q) for q in ip.split('.'))
+ except ValueError:
+ raise BadIP(_('The IP address "%s" is badly formed' % ip))
+ if q1 < 0 or q2 < 0 or q3 < 0 or q4 < 0:
+ raise BadIP(_('The IP address "%s" is badly formed' % ip))
+ elif q1 > 255 or q2 > 255 or q3 > 255 or q4 > 255:
+ raise BadIP(_('The IP address "%s" is badly formed' % ip))
+ return cls(q1, q2, q3, q4)
+
+ def quadrants(self):
+ return (self.q1, self.q2, self.q3, self.q4)
+
+ # def next_ip(self):
+ # (q1, q2, q3, q4) = self.quadrants()
+ # if q4 >= 255:
+ # if q3 >= 255:
+ # if q2 >= 255:
+ # if q1 >= 255:
+ # raise BadIP(_('There is not a next IP address'))
+ # q1 += 1
+ # else:
+ # q2 += 1
+ # else:
+ # q3 += 1
+ # else:
+ # q4 += 1
+ # return IP(q1, q2, q3, q4)
+ #
+ # def previous_ip(self):
+ # (q1, q2, q3, q4) = self.quadrants()
+ # if q4 <= 1:
+ # if q3 <= 1:
+ # if q2 <= 1:
+ # if q1 <= 1:
+ # raise BadIP(_('There is not a previous IP address'))
+ # q1 -= 1
+ # else:
+ # q2 -= 1
+ # else:
+ # q3 -= 1
+ # else:
+ # q4 -= 1
+ # return IP(q1, q2, q3, q4)
+
+ def __lt__(self, other):
+ if isinstance(other, ''.__class__):
+ other = IP.parse(other)
+ return self.long < other.long
+
+ def __gt__(self, other):
+ if isinstance(other, ''.__class__):
+ other = IP.parse(other)
+ return self.long > other.long
+
+ def __eq__(self, other):
+ if isinstance(other, ''.__class__):
+ other = IP.parse(other)
+ return self.long == other.long
+
+ def __repr__(self):
+ return '<{} long={} address="{}">'.format(
+ self.__class__.__name__,
+ self.long,
+ self.address,
+ )
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/core.py b/deluge/plugins/Blocklist/deluge_blocklist/core.py
new file mode 100644
index 0000000..1765767
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/core.py
@@ -0,0 +1,549 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009-2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+import shutil
+import time
+from datetime import datetime, timedelta
+from email.utils import formatdate
+from urllib.parse import urljoin
+
+from twisted.internet import defer, threads
+from twisted.internet.task import LoopingCall
+from twisted.web import error
+
+import deluge.component as component
+import deluge.configmanager
+from deluge.common import is_url
+from deluge.core.rpcserver import export
+from deluge.httpdownloader import download_file
+from deluge.plugins.pluginbase import CorePluginBase
+
+from .common import IP, BadIP
+from .detect import UnknownFormatError, create_reader, detect_compression, detect_format
+from .readers import ReaderParseError
+
+# TODO: check return values for deferred callbacks
+# TODO: review class attributes for redundancy
+
+log = logging.getLogger(__name__)
+
+DEFAULT_PREFS = {
+ 'url': '',
+ 'load_on_start': False,
+ 'check_after_days': 4,
+ 'list_compression': '',
+ 'list_type': '',
+ 'last_update': 0.0,
+ 'list_size': 0,
+ 'timeout': 180,
+ 'try_times': 3,
+ 'whitelisted': [],
+}
+
+# Constants
+ALLOW_RANGE = 0
+BLOCK_RANGE = 1
+
+
+class Core(CorePluginBase):
+ def enable(self):
+ log.debug('Blocklist: Plugin enabled...')
+
+ self.is_url = True
+ self.is_downloading = False
+ self.is_importing = False
+ self.has_imported = False
+ self.up_to_date = False
+ self.need_to_resume_session = False
+ self.num_whited = 0
+ self.num_blocked = 0
+ self.file_progress = 0.0
+
+ self.core = component.get('Core')
+ self.config = deluge.configmanager.ConfigManager(
+ 'blocklist.conf', DEFAULT_PREFS
+ )
+ if 'whitelisted' not in self.config:
+ self.config['whitelisted'] = []
+
+ self.reader = create_reader(
+ self.config['list_type'], self.config['list_compression']
+ )
+
+ if not isinstance(self.config['last_update'], float):
+ self.config.config['last_update'] = 0.0
+
+ update_now = False
+ if self.config['load_on_start']:
+ self.pause_session()
+ if self.config['last_update']:
+ last_update = datetime.fromtimestamp(self.config['last_update'])
+ check_period = timedelta(days=self.config['check_after_days'])
+ if (
+ not self.config['last_update']
+ or last_update + check_period < datetime.now()
+ ):
+ update_now = True
+ else:
+ d = self.import_list(
+ deluge.configmanager.get_config_dir('blocklist.cache')
+ )
+ d.addCallbacks(self.on_import_complete, self.on_import_error)
+ if self.need_to_resume_session:
+ d.addBoth(self.resume_session)
+
+ # This function is called every 'check_after_days' days, to download
+ # and import a new list if needed.
+ self.update_timer = LoopingCall(self.check_import)
+ if self.config['check_after_days'] > 0:
+ self.update_timer.start(
+ self.config['check_after_days'] * 24 * 60 * 60, update_now
+ )
+
+ def disable(self):
+ self.config.save()
+ log.debug('Reset IP filter')
+ self.core.session.get_ip_filter().add_rule(
+ '0.0.0.0', '255.255.255.255', ALLOW_RANGE
+ )
+ log.debug('Blocklist: Plugin disabled')
+
+ def update(self):
+ pass
+
+ # Exported RPC methods #
+ @export
+ def check_import(self, force=False):
+ """Imports latest blocklist specified by blocklist url.
+
+ Args:
+ force (bool, optional): Force the download/import, default is False.
+
+ Returns:
+ Deferred: A Deferred which fires when the blocklist has been imported.
+
+ """
+ if not self.config['url']:
+ return
+
+ # Reset variables
+ self.filename = None
+ self.force_download = force
+ self.failed_attempts = 0
+ self.auto_detected = False
+ self.up_to_date = False
+ if force:
+ self.reader = None
+ self.is_url = is_url(self.config['url'])
+
+ # Start callback chain
+ if self.is_url:
+ d = self.download_list()
+ d.addCallbacks(self.on_download_complete, self.on_download_error)
+ d.addCallback(self.import_list)
+ else:
+ d = self.import_list(self.config['url'])
+ d.addCallbacks(self.on_import_complete, self.on_import_error)
+ if self.need_to_resume_session:
+ d.addBoth(self.resume_session)
+
+ return d
+
+ @export
+ def get_config(self):
+ """Gets the blocklist config dictionary.
+
+ Returns:
+ dict: The config dictionary.
+
+ """
+ return self.config.config
+
+ @export
+ def set_config(self, config):
+ """Sets the blocklist config.
+
+ Args:
+ config (dict): config to set.
+
+ """
+ needs_blocklist_import = False
+ for key in config:
+ if key == 'whitelisted':
+ saved = set(self.config[key])
+ update = set(config[key])
+ diff = saved.symmetric_difference(update)
+ if diff:
+ log.debug('Whitelist changed. Updating...')
+ added = update.intersection(diff)
+ removed = saved.intersection(diff)
+ if added:
+ for ip in added:
+ try:
+ ip = IP.parse(ip)
+ self.blocklist.add_rule(
+ ip.address, ip.address, ALLOW_RANGE
+ )
+ saved.add(ip.address)
+ log.debug('Added %s to whitelisted', ip)
+ self.num_whited += 1
+ except BadIP as ex:
+ log.error('Bad IP: %s', ex)
+ continue
+ if removed:
+ needs_blocklist_import = True
+ for ip in removed:
+ try:
+ ip = IP.parse(ip)
+ saved.remove(ip.address)
+ log.debug('Removed %s from whitelisted', ip)
+ except BadIP as ex:
+ log.error('Bad IP: %s', ex)
+ continue
+
+ self.config[key] = list(saved)
+ continue
+ elif key == 'check_after_days':
+ if self.config[key] != config[key]:
+ self.config[key] = config[key]
+ update_now = False
+ if self.config['last_update']:
+ last_update = datetime.fromtimestamp(self.config['last_update'])
+ check_period = timedelta(days=self.config['check_after_days'])
+ if (
+ not self.config['last_update']
+ or last_update + check_period < datetime.now()
+ ):
+ update_now = True
+ if self.update_timer.running:
+ self.update_timer.stop()
+ if self.config['check_after_days'] > 0:
+ self.update_timer.start(
+ self.config['check_after_days'] * 24 * 60 * 60, update_now
+ )
+ continue
+ self.config[key] = config[key]
+
+ if needs_blocklist_import:
+ log.debug(
+ 'IP addresses were removed from the whitelist. Since we '
+ 'do not know if they were blocked before. Re-import '
+ 'current blocklist and re-add whitelisted.'
+ )
+ self.has_imported = False
+ d = self.import_list(deluge.configmanager.get_config_dir('blocklist.cache'))
+ d.addCallbacks(self.on_import_complete, self.on_import_error)
+
+ @export
+ def get_status(self):
+ """Get the status of the plugin.
+
+ Returns:
+ dict: The status dict of the plugin.
+
+ """
+ status = {}
+ if self.is_downloading:
+ status['state'] = 'Downloading'
+ elif self.is_importing:
+ status['state'] = 'Importing'
+ else:
+ status['state'] = 'Idle'
+
+ status['up_to_date'] = self.up_to_date
+ status['num_whited'] = self.num_whited
+ status['num_blocked'] = self.num_blocked
+ status['file_progress'] = self.file_progress
+ status['file_url'] = self.config['url']
+ status['file_size'] = self.config['list_size']
+ status['file_date'] = self.config['last_update']
+ status['file_type'] = self.config['list_type']
+ status['whitelisted'] = self.config['whitelisted']
+ if self.config['list_compression']:
+ status['file_type'] += ' (%s)' % self.config['list_compression']
+ return status
+
+ ####
+
+ def update_info(self, blocklist):
+ """Updates blocklist info.
+
+ Args:
+ blocklist (str): Path of blocklist.
+
+ Returns:
+ str: Path of blocklist.
+
+ """
+ log.debug('Updating blocklist info: %s', blocklist)
+ self.config['last_update'] = time.time()
+ self.config['list_size'] = os.path.getsize(blocklist)
+ self.filename = blocklist
+ return blocklist
+
+ def download_list(self, url=None):
+ """Downloads the blocklist specified by 'url' in the config.
+
+ Args:
+ url (str, optional): url to download from, defaults to config value.
+
+ Returns:
+ Deferred: a Deferred which fires once the blocklist has been downloaded.
+
+ """
+
+ def on_retrieve_data(data, current_length, total_length):
+ if total_length:
+ fp = current_length / total_length
+ if fp > 1.0:
+ fp = 1.0
+ else:
+ fp = 0.0
+
+ self.file_progress = fp
+
+ import socket
+
+ socket.setdefaulttimeout(self.config['timeout'])
+
+ if not url:
+ url = self.config['url']
+
+ headers = {}
+ if self.config['last_update'] and not self.force_download:
+ headers['If-Modified-Since'] = formatdate(
+ self.config['last_update'], usegmt=True
+ )
+
+ log.debug('Attempting to download blocklist %s', url)
+ log.debug('Sending headers: %s', headers)
+ self.is_downloading = True
+ return download_file(
+ url,
+ deluge.configmanager.get_config_dir('blocklist.download'),
+ on_retrieve_data,
+ headers,
+ )
+
+ def on_download_complete(self, blocklist):
+ """Runs any download clean up functions.
+
+ Args:
+ blocklist (str): Path of blocklist.
+
+ Returns:
+ Deferred: a Deferred which fires when clean up is done.
+
+ """
+ log.debug('Blocklist download complete: %s', blocklist)
+ self.is_downloading = False
+ return threads.deferToThread(self.update_info, blocklist)
+
+ def on_download_error(self, f):
+ """Recovers from download error.
+
+ Args:
+ f (Failure): Failure that occurred.
+
+ Returns:
+ Deferred or Failure: A Deferred if recovery was possible else original Failure.
+
+ """
+ self.is_downloading = False
+ error_msg = f.getErrorMessage()
+ d = f
+ if f.check(error.PageRedirect):
+ # Handle redirect errors
+ location = urljoin(self.config['url'], error_msg.split(' to ')[1])
+ if 'Moved Permanently' in error_msg:
+ log.debug('Setting blocklist url to %s', location)
+ self.config['url'] = location
+ d = self.download_list(location)
+ d.addCallbacks(self.on_download_complete, self.on_download_error)
+ else:
+ if 'Not Modified' in error_msg:
+ log.debug('Blocklist is up-to-date!')
+ self.up_to_date = True
+ blocklist = deluge.configmanager.get_config_dir('blocklist.cache')
+ d = threads.deferToThread(self.update_info, blocklist)
+ else:
+ log.warning('Blocklist download failed: %s', error_msg)
+ if self.failed_attempts < self.config['try_times']:
+ log.debug(
+ 'Try downloading blocklist again... (%s/%s)',
+ self.failed_attempts,
+ self.config['try_times'],
+ )
+ self.failed_attempts += 1
+ d = self.download_list()
+ d.addCallbacks(self.on_download_complete, self.on_download_error)
+ return d
+
+ def import_list(self, blocklist):
+ """Imports the downloaded blocklist into the session.
+
+ Args:
+ blocklist (str): path of blocklist.
+
+ Returns:
+ Deferred: A Deferred that fires when the blocklist has been imported.
+
+ """
+ log.trace('on import_list')
+
+ def on_read_ip_range(start, end):
+ """Add ip range to blocklist"""
+ # log.trace('Adding ip range %s - %s to ipfilter as blocked', start, end)
+ self.blocklist.add_rule(start.address, end.address, BLOCK_RANGE)
+ self.num_blocked += 1
+
+ def on_finish_read(result):
+ """Add any whitelisted IP's and add the blocklist to session"""
+ # White listing happens last because the last rules added have
+ # priority
+ log.info('Added %d ranges to ipfilter as blocked', self.num_blocked)
+ for ip in self.config['whitelisted']:
+ ip = IP.parse(ip)
+ self.blocklist.add_rule(ip.address, ip.address, ALLOW_RANGE)
+ self.num_whited += 1
+ log.trace('Added %s to the ipfiler as white-listed', ip.address)
+ log.info('Added %d ranges to ipfilter as white-listed', self.num_whited)
+ self.core.session.set_ip_filter(self.blocklist)
+ return result
+
+ # TODO: double check logic
+ if self.up_to_date and self.has_imported:
+ log.debug('Latest blocklist is already imported')
+ return defer.succeed(blocklist)
+
+ self.is_importing = True
+ self.num_blocked = 0
+ self.num_whited = 0
+ self.blocklist = self.core.session.get_ip_filter()
+
+ if not blocklist:
+ blocklist = self.filename
+
+ if not self.reader:
+ self.auto_detect(blocklist)
+ self.auto_detected = True
+
+ def on_reader_failure(failure):
+ log.error('Failed to read!!!!!!')
+ log.exception(failure)
+
+ log.debug('Importing using reader: %s', self.reader)
+ log.debug(
+ 'Reader type: %s compression: %s',
+ self.config['list_type'],
+ self.config['list_compression'],
+ )
+ log.debug('Clearing current ip filtering')
+ # self.blocklist.add_rule('0.0.0.0', '255.255.255.255', ALLOW_RANGE)
+ d = threads.deferToThread(self.reader(blocklist).read, on_read_ip_range)
+ d.addCallback(on_finish_read).addErrback(on_reader_failure)
+
+ return d
+
+ def on_import_complete(self, blocklist):
+ """Runs any import clean up functions.
+
+ Args:
+ blocklist (str): Path of blocklist.
+
+ Returns:
+ Deferred: A Deferred that fires when clean up is done.
+
+ """
+ log.trace('on_import_list_complete')
+ d = blocklist
+ self.is_importing = False
+ self.has_imported = True
+ log.debug('Blocklist import complete!')
+ cache = deluge.configmanager.get_config_dir('blocklist.cache')
+ if blocklist != cache:
+ if self.is_url:
+ log.debug('Moving %s to %s', blocklist, cache)
+ d = threads.deferToThread(shutil.move, blocklist, cache)
+ else:
+ log.debug('Copying %s to %s', blocklist, cache)
+ d = threads.deferToThread(shutil.copy, blocklist, cache)
+ return d
+
+ def on_import_error(self, f):
+ """Recovers from import error.
+
+ Args:
+ f (Failure): Failure that occurred.
+
+ Returns:
+ Deferred or Failure: A Deferred if recovery was possible else original Failure.
+
+ """
+ log.trace('on_import_error: %s', f)
+ d = f
+ self.is_importing = False
+ try_again = False
+ cache = deluge.configmanager.get_config_dir('blocklist.cache')
+
+ if f.check(ReaderParseError) and not self.auto_detected:
+ # Invalid / corrupt list, let's detect it
+ log.warning('Invalid / corrupt blocklist')
+ self.reader = None
+ blocklist = None
+ try_again = True
+ elif self.filename != cache and os.path.exists(cache):
+ # If we have a backup and we haven't already used it
+ log.warning('Error reading blocklist: %s', f.getErrorMessage())
+ blocklist = cache
+ try_again = True
+
+ if try_again:
+ d = self.import_list(blocklist)
+ d.addCallbacks(self.on_import_complete, self.on_import_error)
+
+ return d
+
+ def auto_detect(self, blocklist):
+ """Attempts to auto-detect the blocklist type.
+
+ Args:
+ blocklist (str): Path of blocklist.
+
+ Raises:
+ UnknownFormatError: If the format cannot be detected.
+
+ """
+ self.config['list_compression'] = detect_compression(blocklist)
+ self.config['list_type'] = detect_format(
+ blocklist, self.config['list_compression']
+ )
+ log.debug(
+ 'Auto-detected type: %s compression: %s',
+ self.config['list_type'],
+ self.config['list_compression'],
+ )
+ if not self.config['list_type']:
+ self.config['list_compression'] = ''
+ raise UnknownFormatError
+ else:
+ self.reader = create_reader(
+ self.config['list_type'], self.config['list_compression']
+ )
+
+ def pause_session(self):
+ self.need_to_resume_session = not self.core.session.is_paused()
+ self.core.pause_session()
+
+ def resume_session(self, result):
+ self.core.resume_session()
+ self.need_to_resume_session = False
+ return result
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist.js b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist.js
new file mode 100644
index 0000000..3c10b81
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist.js
@@ -0,0 +1,429 @@
+/**
+ * blocklist.js
+ *
+ * Copyright (C) Omar Alvarez 2014 <omar.alvarez@udc.es>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ *
+ */
+
+Ext.ns('Deluge.ux.preferences');
+
+/**
+ * @class Deluge.ux.preferences.BlocklistPage
+ * @extends Ext.Panel
+ */
+Deluge.ux.preferences.BlocklistPage = Ext.extend(Ext.Panel, {
+ title: _('Blocklist'),
+ header: false,
+ layout: 'fit',
+ border: false,
+ autoScroll: true,
+
+ initComponent: function () {
+ Deluge.ux.preferences.BlocklistPage.superclass.initComponent.call(this);
+
+ this.URLFset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('General'),
+ autoHeight: true,
+ defaultType: 'textfield',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ autoWidth: true,
+ labelWidth: 40,
+ });
+
+ this.URL = this.URLFset.add({
+ fieldLabel: _('URL:'),
+ labelSeparator: '',
+ name: 'url',
+ width: '80%',
+ });
+
+ this.SettingsFset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Settings'),
+ autoHeight: true,
+ defaultType: 'spinnerfield',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ autoWidth: true,
+ labelWidth: 160,
+ });
+
+ this.checkListDays = this.SettingsFset.add({
+ fieldLabel: _('Check for new list every (days):'),
+ labelSeparator: '',
+ name: 'check_list_days',
+ value: 4,
+ decimalPrecision: 0,
+ width: 80,
+ });
+
+ this.chkImportOnStart = this.SettingsFset.add({
+ xtype: 'checkbox',
+ fieldLabel: _('Import blocklist on startup'),
+ name: 'check_import_startup',
+ });
+
+ this.OptionsFset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Options'),
+ autoHeight: true,
+ defaultType: 'button',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ autoWidth: false,
+ width: '80%',
+ labelWidth: 0,
+ });
+
+ this.checkDownload = this.OptionsFset.add({
+ fieldLabel: _(''),
+ name: 'check_download',
+ xtype: 'container',
+ layout: 'hbox',
+ margins: '4 0 0 5',
+ items: [
+ {
+ xtype: 'button',
+ text: ' Check Download and Import ',
+ scale: 'medium',
+ },
+ {
+ xtype: 'box',
+ autoEl: {
+ tag: 'img',
+ src: '../icons/ok.png',
+ },
+ margins: '4 0 0 3',
+ },
+ ],
+ });
+
+ this.forceDownload = this.OptionsFset.add({
+ fieldLabel: _(''),
+ name: 'force_download',
+ text: ' Force Download and Import ',
+ margins: '2 0 0 0',
+ //icon: '../icons/blocklist_import24.png',
+ scale: 'medium',
+ });
+
+ this.ProgressFset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Info'),
+ autoHeight: true,
+ defaultType: 'progress',
+ style: 'margin-top: 1px; margin-bottom: 0px; padding-bottom: 0px;',
+ autoWidth: true,
+ labelWidth: 0,
+ hidden: true,
+ });
+
+ this.downProgBar = this.ProgressFset.add({
+ fieldLabel: _(''),
+ name: 'progress_bar',
+ width: '90%',
+ });
+
+ this.InfoFset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Info'),
+ autoHeight: true,
+ defaultType: 'label',
+ style: 'margin-top: 0px; margin-bottom: 0px; padding-bottom: 0px;',
+ labelWidth: 60,
+ });
+
+ this.lblFileSize = this.InfoFset.add({
+ fieldLabel: _('File Size:'),
+ labelSeparator: '',
+ name: 'file_size',
+ });
+
+ this.lblDate = this.InfoFset.add({
+ fieldLabel: _('Date:'),
+ labelSeparator: '',
+ name: 'date',
+ });
+
+ this.lblType = this.InfoFset.add({
+ fieldLabel: _('Type:'),
+ labelSeparator: '',
+ name: 'type',
+ });
+
+ this.lblURL = this.InfoFset.add({
+ fieldLabel: _('URL:'),
+ labelSeparator: '',
+ name: 'lbl_URL',
+ });
+
+ this.WhitelistFset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Whitelist'),
+ autoHeight: true,
+ defaultType: 'editorgrid',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ autoWidth: true,
+ labelWidth: 0,
+ items: [
+ {
+ fieldLabel: _(''),
+ name: 'whitelist',
+ margins: '2 0 5 5',
+ height: 100,
+ width: 260,
+ autoExpandColumn: 'ip',
+ viewConfig: {
+ emptyText: _('Add an IP...'),
+ deferEmptyText: false,
+ },
+ colModel: new Ext.grid.ColumnModel({
+ columns: [
+ {
+ id: 'ip',
+ header: _('IP'),
+ dataIndex: 'ip',
+ sortable: true,
+ hideable: false,
+ editable: true,
+ editor: {
+ xtype: 'textfield',
+ },
+ },
+ ],
+ }),
+ selModel: new Ext.grid.RowSelectionModel({
+ singleSelect: false,
+ moveEditorOnEnter: false,
+ }),
+ store: new Ext.data.ArrayStore({
+ autoDestroy: true,
+ fields: [{ name: 'ip' }],
+ }),
+ listeners: {
+ afteredit: function (e) {
+ e.record.commit();
+ },
+ },
+ setEmptyText: function (text) {
+ if (this.viewReady) {
+ this.getView().emptyText = text;
+ this.getView().refresh();
+ } else {
+ Ext.apply(this.viewConfig, { emptyText: text });
+ }
+ },
+ loadData: function (data) {
+ this.getStore().loadData(data);
+ if (this.viewReady) {
+ this.getView().updateHeaders();
+ }
+ },
+ },
+ ],
+ });
+
+ this.ipButtonsContainer = this.WhitelistFset.add({
+ xtype: 'container',
+ layout: 'hbox',
+ margins: '4 0 0 5',
+ items: [
+ {
+ xtype: 'button',
+ text: ' Add IP ',
+ margins: '0 5 0 0',
+ },
+ {
+ xtype: 'button',
+ text: ' Delete IP ',
+ },
+ ],
+ });
+
+ this.updateTask = Ext.TaskMgr.start({
+ interval: 2000,
+ run: this.onUpdate,
+ scope: this,
+ });
+
+ this.on('show', this.updateConfig, this);
+
+ this.ipButtonsContainer.getComponent(0).setHandler(this.addIP, this);
+ this.ipButtonsContainer.getComponent(1).setHandler(this.deleteIP, this);
+
+ this.checkDownload.getComponent(0).setHandler(this.checkDown, this);
+ this.forceDownload.setHandler(this.forceDown, this);
+ },
+
+ onApply: function () {
+ var config = {};
+
+ config['url'] = this.URL.getValue();
+ config['check_after_days'] = this.checkListDays.getValue();
+ config['load_on_start'] = this.chkImportOnStart.getValue();
+
+ var ipList = [];
+ var store = this.WhitelistFset.getComponent(0).getStore();
+
+ for (var i = 0; i < store.getCount(); i++) {
+ var record = store.getAt(i);
+ var ip = record.get('ip');
+ ipList.push(ip);
+ }
+
+ config['whitelisted'] = ipList;
+
+ deluge.client.blocklist.set_config(config);
+ },
+
+ onOk: function () {
+ this.onApply();
+ },
+
+ onUpdate: function () {
+ deluge.client.blocklist.get_status({
+ success: function (status) {
+ if (status['state'] == 'Downloading') {
+ this.InfoFset.hide();
+ this.checkDownload.getComponent(0).setDisabled(true);
+ this.checkDownload.getComponent(1).hide();
+ this.forceDownload.setDisabled(true);
+
+ this.ProgressFset.show();
+ this.downProgBar.updateProgress(
+ status['file_progress'],
+ 'Downloading '
+ .concat((status['file_progress'] * 100).toFixed(2))
+ .concat('%'),
+ true
+ );
+ } else if (status['state'] == 'Importing') {
+ this.InfoFset.hide();
+ this.checkDownload.getComponent(0).setDisabled(true);
+ this.checkDownload.getComponent(1).hide();
+ this.forceDownload.setDisabled(true);
+
+ this.ProgressFset.show();
+ this.downProgBar.updateText(
+ 'Importing '.concat(status['num_blocked'])
+ );
+ } else if (status['state'] == 'Idle') {
+ this.ProgressFset.hide();
+ this.checkDownload.getComponent(0).setDisabled(false);
+ this.forceDownload.setDisabled(false);
+ if (status['up_to_date']) {
+ this.checkDownload.getComponent(1).show();
+ this.checkDownload.doLayout();
+ } else {
+ this.checkDownload.getComponent(1).hide();
+ }
+ this.InfoFset.show();
+ this.lblFileSize.setText(fsize(status['file_size']));
+ this.lblDate.setText(fdate(status['file_date']));
+ this.lblType.setText(status['file_type']);
+ this.lblURL.setText(
+ status['file_url'].substr(0, 40).concat('...')
+ );
+ }
+ },
+ scope: this,
+ });
+ },
+
+ checkDown: function () {
+ this.onApply();
+ deluge.client.blocklist.check_import();
+ },
+
+ forceDown: function () {
+ this.onApply();
+ deluge.client.blocklist.check_import((force = true));
+ },
+
+ updateConfig: function () {
+ deluge.client.blocklist.get_config({
+ success: function (config) {
+ this.URL.setValue(config['url']);
+ this.checkListDays.setValue(config['check_after_days']);
+ this.chkImportOnStart.setValue(config['load_on_start']);
+
+ var data = [];
+ var keys = Ext.keys(config['whitelisted']);
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ data.push([config['whitelisted'][key]]);
+ }
+
+ this.WhitelistFset.getComponent(0).loadData(data);
+ },
+ scope: this,
+ });
+
+ deluge.client.blocklist.get_status({
+ success: function (status) {
+ this.lblFileSize.setText(fsize(status['file_size']));
+ this.lblDate.setText(fdate(status['file_date']));
+ this.lblType.setText(status['file_type']);
+ this.lblURL.setText(
+ status['file_url'].substr(0, 40).concat('...')
+ );
+ },
+ scope: this,
+ });
+ },
+
+ addIP: function () {
+ var store = this.WhitelistFset.getComponent(0).getStore();
+ var IP = store.recordType;
+ var i = new IP({
+ ip: '',
+ });
+ this.WhitelistFset.getComponent(0).stopEditing();
+ store.insert(0, i);
+ this.WhitelistFset.getComponent(0).startEditing(0, 0);
+ },
+
+ deleteIP: function () {
+ var selections = this.WhitelistFset.getComponent(0)
+ .getSelectionModel()
+ .getSelections();
+ var store = this.WhitelistFset.getComponent(0).getStore();
+
+ this.WhitelistFset.getComponent(0).stopEditing();
+ for (var i = 0; i < selections.length; i++) store.remove(selections[i]);
+ store.commitChanges();
+ },
+
+ onDestroy: function () {
+ Ext.TaskMgr.stop(this.updateTask);
+
+ deluge.preferences.un('show', this.updateConfig, this);
+
+ Deluge.ux.preferences.BlocklistPage.superclass.onDestroy.call(this);
+ },
+});
+
+Deluge.plugins.BlocklistPlugin = Ext.extend(Deluge.Plugin, {
+ name: 'Blocklist',
+
+ onDisable: function () {
+ deluge.preferences.removePage(this.prefsPage);
+ },
+
+ onEnable: function () {
+ this.prefsPage = deluge.preferences.addPage(
+ new Deluge.ux.preferences.BlocklistPage()
+ );
+ },
+});
+
+Deluge.registerPlugin('Blocklist', Deluge.plugins.BlocklistPlugin);
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist16.png b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist16.png
new file mode 100644
index 0000000..15b4299
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist16.png
Binary files differ
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_download24.png b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_download24.png
new file mode 100644
index 0000000..6de3a0d
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_download24.png
Binary files differ
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png
new file mode 100644
index 0000000..f1a02e7
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png
Binary files differ
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui
new file mode 100644
index 0000000..8c1f7a7
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui
@@ -0,0 +1,603 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="lower">1</property>
+ <property name="upper">100</property>
+ <property name="value">1</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="blocklist_prefs_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">URL:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_url">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="ypad">5</property>
+ <property name="label" translatable="yes">&lt;b&gt;General&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">5</property>
+ <property name="row_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Days</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_check_days">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Check for new list every (days):</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_import_on_start">
+ <property name="label" translatable="yes">Import blocklist on startup</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="ypad">5</property>
+ <property name="label" translatable="yes">&lt;b&gt;Settings&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="xscale">0</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkButton" id="button_check_download">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Download the blocklist file if necessary and import the file.</property>
+ <signal name="clicked" handler="on_button_check_download_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image_download">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Check Download and Import</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_force_download">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Download a new blocklist file and import it.</property>
+ <signal name="clicked" handler="on_button_force_download_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image_import">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Force Download and Import</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="image_up_to_date">
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Blocklist is up to date</property>
+ <property name="yalign">0.15000000596046448</property>
+ <property name="xpad">2</property>
+ <property name="stock">gtk-yes</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="ypad">5</property>
+ <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkProgressBar" id="progressbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table_info">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label_url">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_type">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_modified">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_filesize">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">URL:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Type:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Date:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">File Size:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Info&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="whitelist_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkTreeView" id="whitelist_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="headers_clickable">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVButtonBox" id="vbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="whitelist_add">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_whitelist_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="whitelist_delete">
+ <property name="label">gtk-delete</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_whitelist_remove_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Whitelist&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/decompressers.py b/deluge/plugins/Blocklist/deluge_blocklist/decompressers.py
new file mode 100644
index 0000000..cd2ee8c
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/decompressers.py
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2009-2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+# pylint: disable=redefined-builtin
+
+import bz2
+import gzip
+import zipfile
+
+
+def Zipped(reader): # NOQA: N802
+ """Blocklist reader for zipped blocklists"""
+
+ def _open(self):
+ z = zipfile.ZipFile(self.file)
+ f = z.open(z.namelist()[0])
+ return f
+
+ reader.open = _open
+ return reader
+
+
+def GZipped(reader): # NOQA: N802
+ """Blocklist reader for gzipped blocklists"""
+
+ def _open(self):
+ return gzip.open(self.file)
+
+ reader.open = _open
+ return reader
+
+
+def BZipped2(reader): # NOQA: N802
+ """Blocklist reader for bzipped2 blocklists"""
+
+ def _open(self):
+ return bz2.BZ2File(self.file)
+
+ reader.open = _open
+ return reader
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/detect.py b/deluge/plugins/Blocklist/deluge_blocklist/detect.py
new file mode 100644
index 0000000..43ad305
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/detect.py
@@ -0,0 +1,48 @@
+#
+# Copyright (C) 2009-2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from .decompressers import BZipped2, GZipped, Zipped
+from .readers import EmuleReader, PeerGuardianReader, SafePeerReader
+
+COMPRESSION_TYPES = {b'PK': 'Zip', b'\x1f\x8b': 'GZip', b'BZ': 'BZip2'}
+
+DECOMPRESSERS = {'Zip': Zipped, 'GZip': GZipped, 'BZip2': BZipped2}
+
+READERS = {
+ 'Emule': EmuleReader,
+ 'SafePeer': SafePeerReader,
+ 'PeerGuardian': PeerGuardianReader,
+}
+
+
+class UnknownFormatError(Exception):
+ pass
+
+
+def detect_compression(filename):
+ with open(filename, 'rb') as _file:
+ magic_number = _file.read(2)
+ return COMPRESSION_TYPES.get(magic_number, '')
+
+
+def detect_format(filename, compression=''):
+ file_format = ''
+ for reader in READERS:
+ if create_reader(reader, compression)(filename).is_valid():
+ file_format = reader
+ break
+ return file_format
+
+
+def create_reader(file_format, compression=''):
+ reader = READERS.get(file_format)
+ if reader and compression:
+ decompressor = DECOMPRESSERS.get(compression)
+ if decompressor:
+ reader = decompressor(reader)
+ return reader
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/gtkui.py b/deluge/plugins/Blocklist/deluge_blocklist/gtkui.py
new file mode 100644
index 0000000..e6105cd
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/gtkui.py
@@ -0,0 +1,254 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+from datetime import datetime
+
+import gi # isort:skip (Required before Gtk import).
+
+gi.require_version('Gtk', '3.0')
+
+# isort:imports-thirdparty
+from gi.repository import Gtk
+
+# isort:imports-firstparty
+import deluge.common
+import deluge.component as component
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+
+# isort:imports-localfolder
+from . import common
+
+log = logging.getLogger(__name__)
+
+
+class GtkUI(Gtk3PluginBase):
+ def enable(self):
+ log.debug('Blocklist GtkUI enable..')
+ self.plugin = component.get('PluginManager')
+
+ self.load_preferences_page()
+
+ self.status_item = component.get('StatusBar').add_item(
+ image=common.get_resource('blocklist16.png'),
+ text='',
+ callback=self._on_status_item_clicked,
+ tooltip=_('Blocked IP Ranges /Whitelisted IP Ranges'),
+ )
+
+ # Register some hooks
+ self.plugin.register_hook('on_apply_prefs', self._on_apply_prefs)
+ self.plugin.register_hook('on_show_prefs', self._on_show_prefs)
+
+ def disable(self):
+ log.debug('Blocklist GtkUI disable..')
+
+ # Remove the preferences page
+ self.plugin.remove_preferences_page(_('Blocklist'))
+
+ # Remove status item
+ component.get('StatusBar').remove_item(self.status_item)
+ del self.status_item
+
+ # Deregister the hooks
+ self.plugin.deregister_hook('on_apply_prefs', self._on_apply_prefs)
+ self.plugin.deregister_hook('on_show_prefs', self._on_show_prefs)
+
+ del self.glade
+
+ def update(self):
+ def _on_get_status(status):
+ if status['state'] == 'Downloading':
+ self.table_info.hide()
+ self.builder.get_object('button_check_download').set_sensitive(False)
+ self.builder.get_object('button_force_download').set_sensitive(False)
+ self.builder.get_object('image_up_to_date').hide()
+
+ self.status_item.set_text(
+ 'Downloading %.2f%%' % (status['file_progress'] * 100)
+ )
+ self.progress_bar.set_text(
+ 'Downloading %.2f%%' % (status['file_progress'] * 100)
+ )
+ self.progress_bar.set_fraction(status['file_progress'])
+ self.progress_bar.show()
+
+ elif status['state'] == 'Importing':
+ self.table_info.hide()
+ self.builder.get_object('button_check_download').set_sensitive(False)
+ self.builder.get_object('button_force_download').set_sensitive(False)
+ self.builder.get_object('image_up_to_date').hide()
+
+ self.status_item.set_text('Importing ' + str(status['num_blocked']))
+ self.progress_bar.set_text('Importing %s' % (status['num_blocked']))
+ self.progress_bar.pulse()
+ self.progress_bar.show()
+
+ elif status['state'] == 'Idle':
+ self.progress_bar.hide()
+ self.builder.get_object('button_check_download').set_sensitive(True)
+ self.builder.get_object('button_force_download').set_sensitive(True)
+ if status['up_to_date']:
+ self.builder.get_object('image_up_to_date').show()
+ else:
+ self.builder.get_object('image_up_to_date').hide()
+
+ self.table_info.show()
+ self.status_item.set_text('%(num_blocked)s/%(num_whited)s' % status)
+
+ self.builder.get_object('label_filesize').set_text(
+ deluge.common.fsize(status['file_size'])
+ )
+ self.builder.get_object('label_modified').set_text(
+ datetime.fromtimestamp(status['file_date']).strftime('%c')
+ )
+ self.builder.get_object('label_type').set_text(status['file_type'])
+ self.builder.get_object('label_url').set_text(status['file_url'])
+
+ client.blocklist.get_status().addCallback(_on_get_status)
+
+ def _on_show_prefs(self):
+ def _on_get_config(config):
+ log.trace('Loaded config: %s', config)
+ self.builder.get_object('entry_url').set_text(config['url'])
+ self.builder.get_object('spin_check_days').set_value(
+ config['check_after_days']
+ )
+ self.builder.get_object('chk_import_on_start').set_active(
+ config['load_on_start']
+ )
+ self.populate_whitelist(config['whitelisted'])
+
+ client.blocklist.get_config().addCallback(_on_get_config)
+
+ def _on_apply_prefs(self):
+ config = {}
+ config['url'] = self.builder.get_object('entry_url').get_text().strip()
+ config['check_after_days'] = self.builder.get_object(
+ 'spin_check_days'
+ ).get_value_as_int()
+ config['load_on_start'] = self.builder.get_object(
+ 'chk_import_on_start'
+ ).get_active()
+ config['whitelisted'] = [
+ ip[0] for ip in self.whitelist_model if ip[0] != 'IP HERE'
+ ]
+ client.blocklist.set_config(config)
+
+ def _on_button_check_download_clicked(self, widget):
+ self._on_apply_prefs()
+ client.blocklist.check_import()
+
+ def _on_button_force_download_clicked(self, widget):
+ self._on_apply_prefs()
+ client.blocklist.check_import(force=True)
+
+ def _on_status_item_clicked(self, widget, event):
+ component.get('Preferences').show(_('Blocklist'))
+
+ def load_preferences_page(self):
+ """Initializes the preferences page and adds it to the preferences dialog"""
+ # Load the preferences page
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(common.get_resource('blocklist_pref.ui'))
+
+ self.whitelist_frame = self.builder.get_object('whitelist_frame')
+ self.progress_bar = self.builder.get_object('progressbar')
+ self.table_info = self.builder.get_object('table_info')
+
+ # Hide the progress bar initially
+ self.progress_bar.hide()
+ self.table_info.show()
+
+ # Create the whitelisted model
+ self.build_whitelist_model_treeview()
+
+ self.builder.connect_signals(
+ {
+ 'on_button_check_download_clicked': self._on_button_check_download_clicked,
+ 'on_button_force_download_clicked': self._on_button_force_download_clicked,
+ 'on_whitelist_add_clicked': (
+ self.on_add_button_clicked,
+ self.whitelist_treeview,
+ ),
+ 'on_whitelist_remove_clicked': (
+ self.on_delete_button_clicked,
+ self.whitelist_treeview,
+ ),
+ }
+ )
+
+ # Set button icons
+ self.builder.get_object('image_download').set_from_file(
+ common.get_resource('blocklist_download24.png')
+ )
+
+ self.builder.get_object('image_import').set_from_file(
+ common.get_resource('blocklist_import24.png')
+ )
+
+ # Update the preferences page with config values from the core
+ self._on_show_prefs()
+
+ # Add the page to the preferences dialog
+ self.plugin.add_preferences_page(
+ _('Blocklist'), self.builder.get_object('blocklist_prefs_box')
+ )
+
+ def build_whitelist_model_treeview(self):
+ self.whitelist_treeview = self.builder.get_object('whitelist_treeview')
+ treeview_selection = self.whitelist_treeview.get_selection()
+ treeview_selection.connect(
+ 'changed', self.on_whitelist_treeview_selection_changed
+ )
+ self.whitelist_model = Gtk.ListStore(str, bool)
+ renderer = Gtk.CellRendererText()
+ renderer.connect('edited', self.on_cell_edited, self.whitelist_model)
+ renderer.ip = 0
+
+ column = Gtk.TreeViewColumn('IPs', renderer, text=0, editable=1)
+ column.set_expand(True)
+ self.whitelist_treeview.append_column(column)
+ self.whitelist_treeview.set_model(self.whitelist_model)
+
+ def on_cell_edited(self, cell, path_string, new_text, model):
+ # iter = model.get_iter_from_string(path_string)
+ # path = model.get_path(iter)[0]
+ try:
+ ip = common.IP.parse(new_text)
+ model.set(model.get_iter_from_string(path_string), 0, ip.address)
+ except common.BadIP as ex:
+ model.remove(model.get_iter_from_string(path_string))
+ from deluge.ui.gtkui import dialogs
+
+ d = dialogs.ErrorDialog(_('Bad IP address'), ex.message)
+ d.run()
+
+ def on_whitelist_treeview_selection_changed(self, selection):
+ model, selected_connection_iter = selection.get_selected()
+ if selected_connection_iter:
+ self.builder.get_object('whitelist_delete').set_property('sensitive', True)
+ else:
+ self.builder.get_object('whitelist_delete').set_property('sensitive', False)
+
+ def on_add_button_clicked(self, widget, treeview):
+ model = treeview.get_model()
+ model.set(model.append(), 0, 'IP HERE', 1, True)
+
+ def on_delete_button_clicked(self, widget, treeview):
+ selection = treeview.get_selection()
+ model, selected_iter = selection.get_selected()
+ if selected_iter:
+ # path = model.get_path(iter)[0]
+ model.remove(selected_iter)
+
+ def populate_whitelist(self, whitelist):
+ self.whitelist_model.clear()
+ for ip in whitelist:
+ self.whitelist_model.set(self.whitelist_model.append(), 0, ip, 1, True)
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py b/deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py
new file mode 100644
index 0000000..b5fb181
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py
@@ -0,0 +1,66 @@
+#
+# Copyright (C) 2007 Steve 'Tarka' Smith (tarka@internode.on.net)
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import gzip
+import logging
+import socket
+from struct import unpack
+
+log = logging.getLogger(__name__)
+
+
+class PGException(Exception):
+ pass
+
+
+# Incrementally reads PeerGuardian blocklists v1 and v2.
+# See http://wiki.phoenixlabs.org/wiki/P2B_Format
+class PGReader:
+ def __init__(self, filename):
+ log.debug('PGReader loading: %s', filename)
+
+ try:
+ with gzip.open(filename, 'rb') as _file:
+ self.fd = _file
+ except OSError:
+ log.debug('Blocklist: PGReader: Incorrect file type or list is corrupt')
+
+ # 4 bytes, should be 0xffffffff
+ buf = self.fd.read(4)
+ hdr = unpack('l', buf)[0]
+ if hdr != -1:
+ raise PGException(_('Invalid leader') + ' %d' % hdr)
+
+ magic = self.fd.read(3)
+ if magic != 'P2B':
+ raise PGException(_('Invalid magic code'))
+
+ buf = self.fd.read(1)
+ ver = ord(buf)
+ if ver != 1 and ver != 2:
+ raise PGException(_('Invalid version') + ' %d' % ver)
+
+ def __next__(self):
+ # Skip over the string
+ buf = -1
+ while buf != 0:
+ buf = self.fd.read(1)
+ if buf == '': # EOF
+ return False
+ buf = ord(buf)
+
+ buf = self.fd.read(4)
+ start = socket.inet_ntoa(buf)
+
+ buf = self.fd.read(4)
+ end = socket.inet_ntoa(buf)
+
+ return (start, end)
+
+ def close(self):
+ self.fd.close()
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/readers.py b/deluge/plugins/Blocklist/deluge_blocklist/readers.py
new file mode 100644
index 0000000..14230ed
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/readers.py
@@ -0,0 +1,99 @@
+#
+# Copyright (C) 2009-2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import re
+
+from deluge.common import decode_bytes
+
+from .common import IP, BadIP, raises_errors_as
+
+log = logging.getLogger(__name__)
+
+
+class ReaderParseError(Exception):
+ pass
+
+
+class BaseReader:
+ """Base reader for blocklist files"""
+
+ def __init__(self, _file):
+ """Creates a new BaseReader given a file"""
+ self.file = _file
+
+ def open(self):
+ """Opens the associated file for reading"""
+ return open(self.file)
+
+ def parse(self, line):
+ """Extracts ip range from given line"""
+ raise NotImplementedError
+
+ def read(self, callback):
+ """Calls callback on each ip range in the file"""
+ for start, end in self.readranges():
+ try:
+ callback(IP.parse(start), IP.parse(end))
+ except BadIP as ex:
+ log.error('Failed to parse IP: %s', ex)
+ return self.file
+
+ def is_ignored(self, line):
+ """Ignore commented lines and blank lines"""
+ line = line.strip()
+ return line.startswith('#') or not line
+
+ def is_valid(self):
+ """Determines whether file is valid for this reader"""
+ blocklist = self.open()
+ valid = True
+ for line in blocklist:
+ line = decode_bytes(line)
+ if not self.is_ignored(line):
+ try:
+ (start, end) = self.parse(line)
+ if not re.match(r'^(\d{1,3}\.){4}$', start + '.') or not re.match(
+ r'^(\d{1,3}\.){4}$', end + '.'
+ ):
+ valid = False
+ except Exception:
+ valid = False
+ break
+ blocklist.close()
+ return valid
+
+ @raises_errors_as(ReaderParseError)
+ def readranges(self):
+ """Yields each ip range from the file"""
+ blocklist = self.open()
+ for line in blocklist:
+ line = decode_bytes(line)
+ if not self.is_ignored(line):
+ yield self.parse(line)
+ blocklist.close()
+
+
+class EmuleReader(BaseReader):
+ """Blocklist reader for emule style blocklists"""
+
+ def parse(self, line):
+ return line.strip().split(' , ')[0].split(' - ')
+
+
+class SafePeerReader(BaseReader):
+ """Blocklist reader for SafePeer style blocklists"""
+
+ def parse(self, line):
+ return line.strip().split(':')[-1].split('-')
+
+
+class PeerGuardianReader(SafePeerReader):
+ """Blocklist reader for PeerGuardian style blocklists"""
+
+ pass
diff --git a/deluge/plugins/Blocklist/deluge_blocklist/webui.py b/deluge/plugins/Blocklist/deluge_blocklist/webui.py
new file mode 100644
index 0000000..8ba4911
--- /dev/null
+++ b/deluge/plugins/Blocklist/deluge_blocklist/webui.py
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+FORMAT_LIST = [
+ ('gzmule', _('Emule IP list (GZip)')),
+ ('spzip', _('SafePeer Text (Zipped)')),
+ ('pgtext', _('PeerGuardian Text (Uncompressed)')),
+ ('p2bgz', _('PeerGuardian P2B (GZip)')),
+]
+
+
+class WebUI(WebPluginBase):
+ scripts = [get_resource('blocklist.js')]
+ debug_scripts = scripts
diff --git a/deluge/plugins/Blocklist/setup.py b/deluge/plugins/Blocklist/setup.py
new file mode 100644
index 0000000..2aa6834
--- /dev/null
+++ b/deluge/plugins/Blocklist/setup.py
@@ -0,0 +1,42 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'Blocklist'
+__author__ = 'John Garland'
+__author_email__ = 'johnnybg+deluge@gmail.com'
+__version__ = '1.4'
+__url__ = 'http://deluge-torrent.org'
+__license__ = 'GPLv3'
+__description__ = 'Download and import IP blocklists'
+__long_description__ = __description__
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ zip_safe=False,
+ long_description=__long_description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/Execute/deluge_execute/__init__.py b/deluge/plugins/Execute/deluge_execute/__init__.py
new file mode 100644
index 0000000..3edfc4b
--- /dev/null
+++ b/deluge/plugins/Execute/deluge_execute/__init__.py
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/Execute/deluge_execute/common.py b/deluge/plugins/Execute/deluge_execute/common.py
new file mode 100644
index 0000000..eb47f13
--- /dev/null
+++ b/deluge/plugins/Execute/deluge_execute/common.py
@@ -0,0 +1,20 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
diff --git a/deluge/plugins/Execute/deluge_execute/core.py b/deluge/plugins/Execute/deluge_execute/core.py
new file mode 100644
index 0000000..6d33e54
--- /dev/null
+++ b/deluge/plugins/Execute/deluge_execute/core.py
@@ -0,0 +1,182 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import hashlib
+import logging
+import os
+import time
+
+from twisted.internet.utils import getProcessOutputAndValue
+
+import deluge.component as component
+from deluge.common import windows_check
+from deluge.configmanager import ConfigManager
+from deluge.core.rpcserver import export
+from deluge.event import DelugeEvent
+from deluge.plugins.pluginbase import CorePluginBase
+
+log = logging.getLogger(__name__)
+
+DEFAULT_CONFIG = {'commands': []}
+
+EXECUTE_ID = 0
+EXECUTE_EVENT = 1
+EXECUTE_COMMAND = 2
+
+EVENT_MAP = {
+ 'complete': 'TorrentFinishedEvent',
+ 'added': 'TorrentAddedEvent',
+ 'removed': 'TorrentRemovedEvent',
+}
+
+
+class ExecuteCommandAddedEvent(DelugeEvent):
+ """
+ Emitted when a new command is added.
+ """
+
+ def __init__(self, command_id, event, command):
+ self._args = [command_id, event, command]
+
+
+class ExecuteCommandRemovedEvent(DelugeEvent):
+ """
+ Emitted when a command is removed.
+ """
+
+ def __init__(self, command_id):
+ self._args = [command_id]
+
+
+class Core(CorePluginBase):
+ def enable(self):
+ self.config = ConfigManager('execute.conf', DEFAULT_CONFIG)
+ event_manager = component.get('EventManager')
+ self.registered_events = {}
+ self.preremoved_cache = {}
+
+ # Go through the commands list and register event handlers
+ for command in self.config['commands']:
+ event = command[EXECUTE_EVENT]
+ if event in self.registered_events:
+ continue
+
+ def create_event_handler(event):
+ def event_handler(torrent_id, *arg):
+ self.execute_commands(torrent_id, event, *arg)
+
+ return event_handler
+
+ event_handler = create_event_handler(event)
+ event_manager.register_event_handler(EVENT_MAP[event], event_handler)
+ if event == 'removed':
+ event_manager.register_event_handler(
+ 'PreTorrentRemovedEvent', self.on_preremoved
+ )
+ self.registered_events[event] = event_handler
+
+ log.debug('Execute core plugin enabled!')
+
+ def on_preremoved(self, torrent_id):
+ # Get and store the torrent info before it is removed
+ torrent = component.get('TorrentManager').torrents[torrent_id]
+ info = torrent.get_status(['name', 'download_location'])
+ self.preremoved_cache[torrent_id] = [
+ torrent_id,
+ info['name'],
+ info['download_location'],
+ ]
+
+ def execute_commands(self, torrent_id, event, *arg):
+ if event == 'added' and arg[0]:
+ # No futher action as from_state (arg[0]) is True
+ return
+ elif event == 'removed':
+ torrent_id, torrent_name, download_location = self.preremoved_cache.pop(
+ torrent_id
+ )
+ else:
+ torrent = component.get('TorrentManager').torrents[torrent_id]
+ info = torrent.get_status(['name', 'download_location'])
+ # Grab the torrent name and download location
+ # getProcessOutputAndValue requires args to be str
+ torrent_name = info['name']
+ download_location = info['download_location']
+
+ log.debug('Running commands for %s', event)
+
+ def log_error(result, command):
+ (stdout, stderr, exit_code) = result
+ if exit_code:
+ log.warning('Command "%s" failed with exit code %d', command, exit_code)
+ if stdout:
+ log.warning('stdout: %s', stdout)
+ if stderr:
+ log.warning('stderr: %s', stderr)
+
+ # Go through and execute all the commands
+ for command in self.config['commands']:
+ if command[EXECUTE_EVENT] == event:
+ command = os.path.expandvars(command[EXECUTE_COMMAND])
+ command = os.path.expanduser(command)
+
+ cmd_args = [
+ torrent_id.encode('utf8'),
+ torrent_name.encode('utf8'),
+ download_location.encode('utf8'),
+ ]
+ if windows_check():
+ # Escape ampersand on windows (see #2784)
+ cmd_args = [cmd_arg.replace(b'&', b'^^^&') for cmd_arg in cmd_args]
+
+ if os.path.isfile(command) and os.access(command, os.X_OK):
+ log.debug('Running %s with args: %s', command, cmd_args)
+ d = getProcessOutputAndValue(command, cmd_args, env=os.environ)
+ d.addCallback(log_error, command)
+ else:
+ log.error('Execute script not found or not executable')
+
+ def disable(self):
+ self.config.save()
+ event_manager = component.get('EventManager')
+ for event, handler in self.registered_events.items():
+ event_manager.deregister_event_handler(event, handler)
+ log.debug('Execute core plugin disabled!')
+
+ # Exported RPC methods #
+ @export
+ def add_command(self, event, command):
+ command_id = hashlib.sha1(str(time.time()).encode()).hexdigest()
+ self.config['commands'].append((command_id, event, command))
+ self.config.save()
+ component.get('EventManager').emit(
+ ExecuteCommandAddedEvent(command_id, event, command)
+ )
+
+ @export
+ def get_commands(self):
+ return self.config['commands']
+
+ @export
+ def remove_command(self, command_id):
+ for command in self.config['commands']:
+ if command[EXECUTE_ID] == command_id:
+ self.config['commands'].remove(command)
+ component.get('EventManager').emit(
+ ExecuteCommandRemovedEvent(command_id)
+ )
+ break
+ self.config.save()
+
+ @export
+ def save_command(self, command_id, event, cmd):
+ for i, command in enumerate(self.config['commands']):
+ if command[EXECUTE_ID] == command_id:
+ self.config['commands'][i] = (command_id, event, cmd)
+ break
+ self.config.save()
diff --git a/deluge/plugins/Execute/deluge_execute/data/execute.js b/deluge/plugins/Execute/deluge_execute/data/execute.js
new file mode 100644
index 0000000..dc0b111
--- /dev/null
+++ b/deluge/plugins/Execute/deluge_execute/data/execute.js
@@ -0,0 +1,300 @@
+/**
+ * execute.js
+ * The client-side javascript code for the Execute plugin.
+ *
+ * Copyright (C) Damien Churchill 2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ *
+ */
+
+Ext.ns('Deluge.ux');
+
+Deluge.ux.ExecuteWindowBase = Ext.extend(Ext.Window, {
+ layout: 'fit',
+ width: 400,
+ height: 130,
+ closeAction: 'hide',
+
+ initComponent: function () {
+ Deluge.ux.ExecuteWindowBase.superclass.initComponent.call(this);
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+
+ this.form = this.add({
+ xtype: 'form',
+ baseCls: 'x-plain',
+ bodyStyle: 'padding: 5px',
+ items: [
+ {
+ xtype: 'combo',
+ width: 270,
+ fieldLabel: _('Event'),
+ store: new Ext.data.ArrayStore({
+ fields: ['id', 'text'],
+ data: [
+ ['complete', _('Torrent Complete')],
+ ['added', _('Torrent Added')],
+ ['removed', _('Torrent Removed')],
+ ],
+ }),
+ name: 'event',
+ mode: 'local',
+ editable: false,
+ triggerAction: 'all',
+ valueField: 'id',
+ displayField: 'text',
+ },
+ {
+ xtype: 'textfield',
+ fieldLabel: _('Command'),
+ name: 'command',
+ width: 270,
+ },
+ ],
+ });
+ },
+
+ onCancelClick: function () {
+ this.hide();
+ },
+});
+
+Deluge.ux.EditExecuteCommandWindow = Ext.extend(Deluge.ux.ExecuteWindowBase, {
+ title: _('Edit Command'),
+
+ initComponent: function () {
+ Deluge.ux.EditExecuteCommandWindow.superclass.initComponent.call(this);
+ this.addButton(_('Save'), this.onSaveClick, this);
+ this.addEvents({
+ commandedit: true,
+ });
+ },
+
+ show: function (command) {
+ Deluge.ux.EditExecuteCommandWindow.superclass.show.call(this);
+ this.command = command;
+ this.form.getForm().setValues({
+ event: command.get('event'),
+ command: command.get('name'),
+ });
+ },
+
+ onSaveClick: function () {
+ var values = this.form.getForm().getFieldValues();
+ deluge.client.execute.save_command(
+ this.command.id,
+ values.event,
+ values.command,
+ {
+ success: function () {
+ this.fireEvent(
+ 'commandedit',
+ this,
+ values.event,
+ values.command
+ );
+ },
+ scope: this,
+ }
+ );
+ this.hide();
+ },
+});
+
+Deluge.ux.AddExecuteCommandWindow = Ext.extend(Deluge.ux.ExecuteWindowBase, {
+ title: _('Add Command'),
+
+ initComponent: function () {
+ Deluge.ux.AddExecuteCommandWindow.superclass.initComponent.call(this);
+ this.addButton(_('Add'), this.onAddClick, this);
+ this.addEvents({
+ commandadd: true,
+ });
+ },
+
+ onAddClick: function () {
+ var values = this.form.getForm().getFieldValues();
+ deluge.client.execute.add_command(values.event, values.command, {
+ success: function () {
+ this.fireEvent(
+ 'commandadd',
+ this,
+ values.event,
+ values.command
+ );
+ },
+ scope: this,
+ });
+ this.hide();
+ },
+});
+
+Ext.ns('Deluge.ux.preferences');
+
+/**
+ * @class Deluge.ux.preferences.ExecutePage
+ * @extends Ext.Panel
+ */
+Deluge.ux.preferences.ExecutePage = Ext.extend(Ext.Panel, {
+ title: _('Execute'),
+ header: false,
+ layout: 'fit',
+ border: false,
+
+ initComponent: function () {
+ Deluge.ux.preferences.ExecutePage.superclass.initComponent.call(this);
+ var event_map = (this.event_map = {
+ complete: _('Torrent Complete'),
+ added: _('Torrent Added'),
+ removed: _('Torrent Removed'),
+ });
+
+ this.list = new Ext.list.ListView({
+ store: new Ext.data.SimpleStore({
+ fields: [
+ { name: 'event', mapping: 1 },
+ { name: 'name', mapping: 2 },
+ ],
+ id: 0,
+ }),
+ columns: [
+ {
+ width: 0.3,
+ header: _('Event'),
+ sortable: true,
+ dataIndex: 'event',
+ tpl: new Ext.XTemplate('{[this.getEvent(values.event)]}', {
+ getEvent: function (e) {
+ return event_map[e] ? event_map[e] : e;
+ },
+ }),
+ },
+ {
+ id: 'name',
+ header: _('Command'),
+ sortable: true,
+ dataIndex: 'name',
+ },
+ ],
+ singleSelect: true,
+ autoExpandColumn: 'name',
+ });
+ this.list.on('selectionchange', this.onSelectionChange, this);
+
+ this.panel = this.add({
+ items: [this.list],
+ bbar: {
+ items: [
+ {
+ text: _('Add'),
+ iconCls: 'icon-add',
+ handler: this.onAddClick,
+ scope: this,
+ },
+ {
+ text: _('Edit'),
+ iconCls: 'icon-edit',
+ handler: this.onEditClick,
+ scope: this,
+ disabled: true,
+ },
+ '->',
+ {
+ text: _('Remove'),
+ iconCls: 'icon-remove',
+ handler: this.onRemoveClick,
+ scope: this,
+ disabled: true,
+ },
+ ],
+ },
+ });
+
+ this.on('show', this.onPreferencesShow, this);
+ },
+
+ updateCommands: function () {
+ deluge.client.execute.get_commands({
+ success: function (commands) {
+ this.list.getStore().loadData(commands);
+ },
+ scope: this,
+ });
+ },
+
+ onAddClick: function () {
+ if (!this.addWin) {
+ this.addWin = new Deluge.ux.AddExecuteCommandWindow();
+ this.addWin.on(
+ 'commandadd',
+ function () {
+ this.updateCommands();
+ },
+ this
+ );
+ }
+ this.addWin.show();
+ },
+
+ onCommandAdded: function (win, evt, cmd) {
+ var record = new this.list.getStore().recordType({
+ event: evt,
+ command: cmd,
+ });
+ },
+
+ onEditClick: function () {
+ if (!this.editWin) {
+ this.editWin = new Deluge.ux.EditExecuteCommandWindow();
+ this.editWin.on(
+ 'commandedit',
+ function () {
+ this.updateCommands();
+ },
+ this
+ );
+ }
+ this.editWin.show(this.list.getSelectedRecords()[0]);
+ },
+
+ onPreferencesShow: function () {
+ this.updateCommands();
+ },
+
+ onRemoveClick: function () {
+ var record = this.list.getSelectedRecords()[0];
+ deluge.client.execute.remove_command(record.id, {
+ success: function () {
+ this.updateCommands();
+ },
+ scope: this,
+ });
+ },
+
+ onSelectionChange: function (dv, selections) {
+ if (selections.length) {
+ this.panel.getBottomToolbar().items.get(1).enable();
+ this.panel.getBottomToolbar().items.get(3).enable();
+ } else {
+ this.panel.getBottomToolbar().items.get(1).disable();
+ this.panel.getBottomToolbar().items.get(3).disable();
+ }
+ },
+});
+
+Deluge.plugins.ExecutePlugin = Ext.extend(Deluge.Plugin, {
+ name: 'Execute',
+
+ onDisable: function () {
+ deluge.preferences.removePage(this.prefsPage);
+ },
+
+ onEnable: function () {
+ this.prefsPage = deluge.preferences.addPage(
+ new Deluge.ux.preferences.ExecutePage()
+ );
+ },
+});
+Deluge.registerPlugin('Execute', Deluge.plugins.ExecutePlugin);
diff --git a/deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui b/deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui
new file mode 100644
index 0000000..5d6354b
--- /dev/null
+++ b/deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkListStore" id="liststore1">
+ <columns>
+ <!-- column-name item -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkWindow" id="execute_window">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="execute_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="add_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="add_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">10</property>
+ <child>
+ <object class="GtkTable" id="add_table">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <child>
+ <object class="GtkLabel" id="event_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Event</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ <property name="x_padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="command_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Command</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ <property name="x_padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="command_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="event_combobox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="model">liststore1</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_add">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_add_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="add_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Add Command&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="commands_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="commands_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="commands_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="halign">start</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="commands_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Commands&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/Execute/deluge_execute/gtkui.py b/deluge/plugins/Execute/deluge_execute/gtkui.py
new file mode 100644
index 0000000..f56a6de
--- /dev/null
+++ b/deluge/plugins/Execute/deluge_execute/gtkui.py
@@ -0,0 +1,162 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import gi # isort:skip (Required before Gtk import).
+
+gi.require_version('Gtk', '3.0')
+
+# isort:imports-thirdparty
+from gi.repository import Gtk
+
+# isort:imports-firstparty
+import deluge.component as component
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+
+# isort:imports-localfolder
+from . import common
+
+log = logging.getLogger(__name__)
+
+EXECUTE_ID = 0
+EXECUTE_EVENT = 1
+EXECUTE_COMMAND = 2
+
+EVENT_MAP = {
+ 'complete': _('Torrent Complete'),
+ 'added': _('Torrent Added'),
+ 'removed': _('Torrent Removed'),
+}
+
+EVENTS = ['complete', 'added', 'removed']
+
+
+class ExecutePreferences:
+ def __init__(self, plugin):
+ self.plugin = plugin
+
+ def load(self):
+ log.debug('Adding Execute Preferences page')
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(common.get_resource('execute_prefs.ui'))
+ self.builder.connect_signals(self)
+
+ events = self.builder.get_object('event_combobox')
+
+ store = Gtk.ListStore(str, str)
+ for event in EVENTS:
+ event_label = EVENT_MAP[event]
+ store.append((event_label, event))
+ events.set_model(store)
+ events.set_active(0)
+
+ self.plugin.add_preferences_page(
+ _('Execute'), self.builder.get_object('execute_box')
+ )
+ self.plugin.register_hook('on_show_prefs', self.load_commands)
+ self.plugin.register_hook('on_apply_prefs', self.on_apply_prefs)
+
+ self.load_commands()
+
+ client.register_event_handler(
+ 'ExecuteCommandAddedEvent', self.on_command_added_event
+ )
+ client.register_event_handler(
+ 'ExecuteCommandRemovedEvent', self.on_command_removed_event
+ )
+
+ def unload(self):
+ self.plugin.remove_preferences_page(_('Execute'))
+ self.plugin.deregister_hook('on_apply_prefs', self.on_apply_prefs)
+ self.plugin.deregister_hook('on_show_prefs', self.load_commands)
+
+ def add_command(self, command_id, event, command):
+ log.debug('Adding command `%s`', command_id)
+ vbox = self.builder.get_object('commands_vbox')
+ hbox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing=5)
+ hbox.set_name(command_id + '_' + event)
+ label = Gtk.Label(EVENT_MAP[event])
+ entry = Gtk.Entry()
+ entry.set_text(command)
+ button = Gtk.Button()
+ button.set_name('remove_%s' % command_id)
+ button.connect('clicked', self.on_remove_button_clicked)
+
+ img = Gtk.Image()
+ img.set_from_stock(Gtk.STOCK_REMOVE, Gtk.IconSize.BUTTON)
+ button.set_image(img)
+
+ hbox.pack_start(label, False, False, 0)
+ hbox.pack_start(entry, False, False, 0)
+ hbox.pack_start(button, True, True, 0)
+ hbox.show_all()
+ vbox.pack_start(hbox, True, True, 0)
+
+ def remove_command(self, command_id):
+ vbox = self.builder.get_object('commands_vbox')
+ children = vbox.get_children()
+ for child in children:
+ if child.get_name().split('_')[0] == command_id:
+ vbox.remove(child)
+ break
+
+ def clear_commands(self):
+ vbox = self.builder.get_object('commands_vbox')
+ children = vbox.get_children()
+ for child in children:
+ vbox.remove(child)
+
+ def load_commands(self):
+ def on_get_commands(commands):
+ self.clear_commands()
+ log.debug('on_get_commands: %s', commands)
+ for command in commands:
+ command_id, event, command = command
+ self.add_command(command_id, event, command)
+
+ client.execute.get_commands().addCallback(on_get_commands)
+
+ def on_add_button_clicked(self, *args):
+ command = self.builder.get_object('command_entry').get_text()
+ events = self.builder.get_object('event_combobox')
+ event = events.get_model()[events.get_active()][1]
+ client.execute.add_command(event, command)
+
+ def on_remove_button_clicked(self, widget, *args):
+ command_id = widget.get_name().replace('remove_', '')
+ client.execute.remove_command(command_id)
+
+ def on_apply_prefs(self):
+ vbox = self.builder.get_object('commands_vbox')
+ children = vbox.get_children()
+ for child in children:
+ command_id, event = child.get_name().split('_')
+ for widget in child.get_children():
+ if isinstance(widget, Gtk.Entry):
+ command = widget.get_text()
+ client.execute.save_command(command_id, event, command)
+
+ def on_command_added_event(self, command_id, event, command):
+ log.debug('Adding command %s: %s', event, command)
+ self.add_command(command_id, event, command)
+
+ def on_command_removed_event(self, command_id):
+ log.debug('Removing command %s', command_id)
+ self.remove_command(command_id)
+
+
+class GtkUI(Gtk3PluginBase):
+ def enable(self):
+ self.plugin = component.get('PluginManager')
+ self.preferences = ExecutePreferences(self.plugin)
+ self.preferences.load()
+
+ def disable(self):
+ self.preferences.unload()
diff --git a/deluge/plugins/Execute/deluge_execute/webui.py b/deluge/plugins/Execute/deluge_execute/webui.py
new file mode 100644
index 0000000..3586371
--- /dev/null
+++ b/deluge/plugins/Execute/deluge_execute/webui.py
@@ -0,0 +1,20 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+ scripts = [get_resource('execute.js')]
+ debug_scripts = scripts
diff --git a/deluge/plugins/Execute/setup.py b/deluge/plugins/Execute/setup.py
new file mode 100644
index 0000000..b65c1bd
--- /dev/null
+++ b/deluge/plugins/Execute/setup.py
@@ -0,0 +1,41 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'Execute'
+__author__ = 'Damien Churchill'
+__author_email__ = 'damoxc@gmail.com'
+__version__ = '1.3'
+__url__ = 'http://deluge-torrent.org'
+__license__ = 'GPLv3'
+__description__ = 'Plugin to execute a command upon an event'
+__long_description__ = __description__
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/Extractor/deluge_extractor/__init__.py b/deluge/plugins/Extractor/deluge_extractor/__init__.py
new file mode 100644
index 0000000..87d1584
--- /dev/null
+++ b/deluge/plugins/Extractor/deluge_extractor/__init__.py
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/Extractor/deluge_extractor/common.py b/deluge/plugins/Extractor/deluge_extractor/common.py
new file mode 100644
index 0000000..eb47f13
--- /dev/null
+++ b/deluge/plugins/Extractor/deluge_extractor/common.py
@@ -0,0 +1,20 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
diff --git a/deluge/plugins/Extractor/deluge_extractor/core.py b/deluge/plugins/Extractor/deluge_extractor/core.py
new file mode 100644
index 0000000..23b2a00
--- /dev/null
+++ b/deluge/plugins/Extractor/deluge_extractor/core.py
@@ -0,0 +1,186 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import errno
+import logging
+import os
+
+from twisted.internet.utils import getProcessOutputAndValue
+from twisted.python.procutils import which
+
+import deluge.component as component
+import deluge.configmanager
+from deluge.common import windows_check
+from deluge.core.rpcserver import export
+from deluge.plugins.pluginbase import CorePluginBase
+
+log = logging.getLogger(__name__)
+
+DEFAULT_PREFS = {'extract_path': '', 'use_name_folder': True}
+
+if windows_check():
+ win_7z_exes = [
+ '7z.exe',
+ 'C:\\Program Files\\7-Zip\\7z.exe',
+ 'C:\\Program Files (x86)\\7-Zip\\7z.exe',
+ ]
+
+ import winreg
+
+ try:
+ hkey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Software\\7-Zip')
+ except OSError:
+ pass
+ else:
+ win_7z_path = os.path.join(winreg.QueryValueEx(hkey, 'Path')[0], '7z.exe')
+ winreg.CloseKey(hkey)
+ win_7z_exes.insert(1, win_7z_path)
+
+ switch_7z = 'x -y'
+ # Future suport:
+ # 7-zip cannot extract tar.* with single command.
+ # ".tar.gz", ".tgz",
+ # ".tar.bz2", ".tbz",
+ # ".tar.lzma", ".tlz",
+ # ".tar.xz", ".txz",
+ exts_7z = ['.rar', '.zip', '.tar', '.7z', '.xz', '.lzma']
+ for win_7z_exe in win_7z_exes:
+ if which(win_7z_exe):
+ EXTRACT_COMMANDS = dict.fromkeys(exts_7z, [win_7z_exe, switch_7z])
+ break
+else:
+ required_cmds = ['unrar', 'unzip', 'tar', 'unxz', 'unlzma', '7zr', 'bunzip2']
+ # Possible future suport:
+ # gunzip: gz (cmd will delete original archive)
+ # the following do not extract to dest dir
+ # ".xz": ["xz", "-d --keep"],
+ # ".lzma": ["xz", "-d --format=lzma --keep"],
+ # ".bz2": ["bzip2", "-d --keep"],
+
+ EXTRACT_COMMANDS = {
+ '.rar': ['unrar', 'x -o+ -y'],
+ '.tar': ['tar', '-xf'],
+ '.zip': ['unzip', ''],
+ '.tar.gz': ['tar', '-xzf'],
+ '.tgz': ['tar', '-xzf'],
+ '.tar.bz2': ['tar', '-xjf'],
+ '.tbz': ['tar', '-xjf'],
+ '.tar.lzma': ['tar', '--lzma -xf'],
+ '.tlz': ['tar', '--lzma -xf'],
+ '.tar.xz': ['tar', '--xz -xf'],
+ '.txz': ['tar', '--xz -xf'],
+ '.7z': ['7zr', 'x'],
+ }
+ # Test command exists and if not, remove.
+ for command in required_cmds:
+ if not which(command):
+ for k, v in list(EXTRACT_COMMANDS.items()):
+ if command in v[0]:
+ log.warning('%s not found, disabling support for %s', command, k)
+ del EXTRACT_COMMANDS[k]
+
+if not EXTRACT_COMMANDS:
+ raise Exception('No archive extracting programs found, plugin will be disabled')
+
+
+class Core(CorePluginBase):
+ def enable(self):
+ self.config = deluge.configmanager.ConfigManager(
+ 'extractor.conf', DEFAULT_PREFS
+ )
+ if not self.config['extract_path']:
+ self.config['extract_path'] = deluge.configmanager.ConfigManager(
+ 'core.conf'
+ )['download_location']
+ component.get('EventManager').register_event_handler(
+ 'TorrentFinishedEvent', self._on_torrent_finished
+ )
+
+ def disable(self):
+ component.get('EventManager').deregister_event_handler(
+ 'TorrentFinishedEvent', self._on_torrent_finished
+ )
+
+ def update(self):
+ pass
+
+ def _on_torrent_finished(self, torrent_id):
+ """
+ This is called when a torrent finishes and checks if any files to extract.
+ """
+ tid = component.get('TorrentManager').torrents[torrent_id]
+ tid_status = tid.get_status(['download_location', 'name'])
+
+ files = tid.get_files()
+ for f in files:
+ file_root, file_ext = os.path.splitext(f['path'])
+ file_ext_sec = os.path.splitext(file_root)[1]
+ if file_ext_sec and file_ext_sec + file_ext in EXTRACT_COMMANDS:
+ file_ext = file_ext_sec + file_ext
+ elif file_ext not in EXTRACT_COMMANDS or file_ext_sec == '.tar':
+ log.debug('Cannot extract file with unknown file type: %s', f['path'])
+ continue
+ elif file_ext == '.rar' and 'part' in file_ext_sec:
+ part_num = file_ext_sec.split('part')[1]
+ if part_num.isdigit() and int(part_num) != 1:
+ log.debug('Skipping remaining multi-part rar files: %s', f['path'])
+ continue
+
+ cmd = EXTRACT_COMMANDS[file_ext]
+ fpath = os.path.join(
+ tid_status['download_location'], os.path.normpath(f['path'])
+ )
+ dest = os.path.normpath(self.config['extract_path'])
+ if self.config['use_name_folder']:
+ dest = os.path.join(dest, tid_status['name'])
+
+ try:
+ os.makedirs(dest)
+ except OSError as ex:
+ if not (ex.errno == errno.EEXIST and os.path.isdir(dest)):
+ log.error('Error creating destination folder: %s', ex)
+ break
+
+ def on_extract(result, torrent_id, fpath):
+ # Check command exit code.
+ if not result[2]:
+ log.info('Extract successful: %s (%s)', fpath, torrent_id)
+ else:
+ log.error(
+ 'Extract failed: %s (%s) %s', fpath, torrent_id, result[1]
+ )
+
+ # Run the command and add callback.
+ log.debug(
+ 'Extracting %s from %s with %s %s to %s',
+ fpath,
+ torrent_id,
+ cmd[0],
+ cmd[1],
+ dest,
+ )
+ d = getProcessOutputAndValue(
+ cmd[0], cmd[1].split() + [str(fpath)], os.environ, str(dest)
+ )
+ d.addCallback(on_extract, torrent_id, fpath)
+
+ @export
+ def set_config(self, config):
+ """Sets the config dictionary."""
+ for key in config:
+ self.config[key] = config[key]
+ self.config.save()
+
+ @export
+ def get_config(self):
+ """Returns the config dictionary."""
+ return self.config.config
diff --git a/deluge/plugins/Extractor/deluge_extractor/data/extractor.js b/deluge/plugins/Extractor/deluge_extractor/data/extractor.js
new file mode 100644
index 0000000..952b645
--- /dev/null
+++ b/deluge/plugins/Extractor/deluge_extractor/data/extractor.js
@@ -0,0 +1,100 @@
+/**
+ * extractor.js
+ *
+ * Copyright (C) Calum Lind 2014 <calumlind@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ *
+ */
+
+Ext.ns('Deluge.ux.preferences');
+
+/**
+ * @class Deluge.ux.preferences.ExtractorPage
+ * @extends Ext.Panel
+ */
+Deluge.ux.preferences.ExtractorPage = Ext.extend(Ext.Panel, {
+ title: _('Extractor'),
+ header: false,
+ layout: 'fit',
+ border: false,
+
+ initComponent: function () {
+ Deluge.ux.preferences.ExtractorPage.superclass.initComponent.call(this);
+
+ this.form = this.add({
+ xtype: 'form',
+ layout: 'form',
+ border: false,
+ autoHeight: true,
+ });
+
+ fieldset = this.form.add({
+ xtype: 'fieldset',
+ border: false,
+ title: '',
+ autoHeight: true,
+ labelAlign: 'top',
+ labelWidth: 80,
+ defaultType: 'textfield',
+ });
+
+ this.extract_path = fieldset.add({
+ fieldLabel: _('Extract to:'),
+ labelSeparator: '',
+ name: 'extract_path',
+ width: '97%',
+ });
+
+ this.use_name_folder = fieldset.add({
+ xtype: 'checkbox',
+ name: 'use_name_folder',
+ height: 22,
+ hideLabel: true,
+ boxLabel: _('Create torrent name sub-folder'),
+ });
+
+ this.on('show', this.updateConfig, this);
+ },
+
+ onApply: function () {
+ // build settings object
+ var config = {};
+
+ config['extract_path'] = this.extract_path.getValue();
+ config['use_name_folder'] = this.use_name_folder.getValue();
+
+ deluge.client.extractor.set_config(config);
+ },
+
+ onOk: function () {
+ this.onApply();
+ },
+
+ updateConfig: function () {
+ deluge.client.extractor.get_config({
+ success: function (config) {
+ this.extract_path.setValue(config['extract_path']);
+ this.use_name_folder.setValue(config['use_name_folder']);
+ },
+ scope: this,
+ });
+ },
+});
+
+Deluge.plugins.ExtractorPlugin = Ext.extend(Deluge.Plugin, {
+ name: 'Extractor',
+
+ onDisable: function () {
+ deluge.preferences.removePage(this.prefsPage);
+ },
+
+ onEnable: function () {
+ this.prefsPage = deluge.preferences.addPage(
+ new Deluge.ux.preferences.ExtractorPage()
+ );
+ },
+});
+Deluge.registerPlugin('Extractor', Deluge.plugins.ExtractorPlugin);
diff --git a/deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui b/deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui
new file mode 100644
index 0000000..9e8070b
--- /dev/null
+++ b/deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="extractor_prefs_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Extract to:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkFileChooserButton" id="folderchooser_path">
+ <property name="can_focus">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select A Folder</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_path">
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_use_name">
+ <property name="label" translatable="yes">Create torrent name sub-folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">This option will create a sub-folder using the torrent's name within the selected extract folder and put the extracted files there.</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;General&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/Extractor/deluge_extractor/gtkui.py b/deluge/plugins/Extractor/deluge_extractor/gtkui.py
new file mode 100644
index 0000000..a754a5f
--- /dev/null
+++ b/deluge/plugins/Extractor/deluge_extractor/gtkui.py
@@ -0,0 +1,93 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import gi # isort:skip (Required before Gtk import).
+
+gi.require_version('Gtk', '3.0')
+
+# isort:imports-thirdparty
+from gi.repository import Gtk
+
+# isort:imports-firstparty
+import deluge.component as component
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+
+# isort:imports-localfolder
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class GtkUI(Gtk3PluginBase):
+ def enable(self):
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('extractor_prefs.ui'))
+
+ component.get('Preferences').add_page(
+ _('Extractor'), self.builder.get_object('extractor_prefs_box')
+ )
+ component.get('PluginManager').register_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').register_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+ self.on_show_prefs()
+
+ def disable(self):
+ component.get('Preferences').remove_page(_('Extractor'))
+ component.get('PluginManager').deregister_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').deregister_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+ del self.builder
+
+ def on_apply_prefs(self):
+ log.debug('applying prefs for Extractor')
+ if client.is_localhost():
+ path = self.builder.get_object('folderchooser_path').get_filename()
+ else:
+ path = self.builder.get_object('entry_path').get_text()
+
+ config = {
+ 'extract_path': path,
+ 'use_name_folder': self.builder.get_object('chk_use_name').get_active(),
+ }
+
+ client.extractor.set_config(config)
+
+ def on_show_prefs(self):
+ if client.is_localhost():
+ self.builder.get_object('folderchooser_path').show()
+ self.builder.get_object('entry_path').hide()
+ else:
+ self.builder.get_object('folderchooser_path').hide()
+ self.builder.get_object('entry_path').show()
+
+ def on_get_config(config):
+ if client.is_localhost():
+ self.builder.get_object('folderchooser_path').set_current_folder(
+ config['extract_path']
+ )
+ else:
+ self.builder.get_object('entry_path').set_text(config['extract_path'])
+
+ self.builder.get_object('chk_use_name').set_active(
+ config['use_name_folder']
+ )
+
+ client.extractor.get_config().addCallback(on_get_config)
diff --git a/deluge/plugins/Extractor/deluge_extractor/webui.py b/deluge/plugins/Extractor/deluge_extractor/webui.py
new file mode 100644
index 0000000..0f58658
--- /dev/null
+++ b/deluge/plugins/Extractor/deluge_extractor/webui.py
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+ scripts = [get_resource('extractor.js')]
+ debug_scripts = scripts
diff --git a/deluge/plugins/Extractor/setup.py b/deluge/plugins/Extractor/setup.py
new file mode 100644
index 0000000..09385c6
--- /dev/null
+++ b/deluge/plugins/Extractor/setup.py
@@ -0,0 +1,54 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'Extractor'
+__author__ = 'Andrew Resch'
+__author_email__ = 'andrewresch@gmail.com'
+__version__ = '0.7'
+__url__ = 'http://deluge-torrent.org'
+__license__ = 'GPLv3'
+__description__ = 'Extract files upon torrent completion'
+__long_description__ = """
+Extract files upon torrent completion
+
+Supports: .rar, .tar, .zip, .7z .tar.gz, .tgz, .tar.bz2, .tbz .tar.lzma, .tlz, .tar.xz, .txz
+
+Windows support: .rar, .zip, .tar, .7z, .xz, .lzma
+( Requires 7-zip installed: http://www.7-zip.org/ )
+
+Note: Will not extract with 'Move Completed' enabled
+"""
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__ if __long_description__ else __description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/Label/TODO b/deluge/plugins/Label/TODO
new file mode 100644
index 0000000..c6a5daa
--- /dev/null
+++ b/deluge/plugins/Label/TODO
@@ -0,0 +1,11 @@
+*grey bars are hard-coded , use theme to get bg-color.
+*label sub-menu is broken on 1'st popup.
+*replacing/restoring the sidebar model is a hack
+*config should save a label on bottom ok-button, not a seperate save-button per label
+*filters : add "Traffic" , use label-core for filtering ; needs hooks in torrentview.
+*torrentview: bugs/hacks in adding and removing columns
+*webui is functional but not polished.
+*move_torrent_to is not implemeted
+*no client-side validation (could be solved by a ui.aclient exception-plugin)
+*expand/arrows in sidebar are disabled to save space, fix the space issue or implement an alternative
+*fix and move tracker_host column+status-field to core.
diff --git a/deluge/plugins/Label/deluge_label/__init__.py b/deluge/plugins/Label/deluge_label/__init__.py
new file mode 100644
index 0000000..a6c72f8
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/__init__.py
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/Label/deluge_label/common.py b/deluge/plugins/Label/deluge_label/common.py
new file mode 100644
index 0000000..eb47f13
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/common.py
@@ -0,0 +1,20 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
diff --git a/deluge/plugins/Label/deluge_label/core.py b/deluge/plugins/Label/deluge_label/core.py
new file mode 100644
index 0000000..c28490b
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/core.py
@@ -0,0 +1,348 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""
+torrent-label core plugin.
+adds a status field for tracker.
+"""
+import logging
+import re
+
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+from deluge.core.rpcserver import export
+from deluge.plugins.pluginbase import CorePluginBase
+
+log = logging.getLogger(__name__)
+
+RE_VALID = re.compile(r'[a-z0-9_\-\.]*\Z')
+
+KNOWN_STATES = ['Downloading', 'Seeding', 'Paused', 'Checking', 'Queued', 'Error']
+STATE = 'state'
+TRACKER = 'tracker'
+KEYWORD = 'keyword'
+LABEL = 'label'
+CONFIG_DEFAULTS = {
+ 'torrent_labels': {}, # torrent_id:label_id
+ 'labels': {}, # label_id:{name:value}
+}
+
+CORE_OPTIONS = ['auto_add_trackers']
+
+OPTIONS_DEFAULTS = {
+ 'apply_max': False,
+ 'max_download_speed': -1,
+ 'max_upload_speed': -1,
+ 'max_connections': -1,
+ 'max_upload_slots': -1,
+ 'prioritize_first_last': False,
+ 'apply_queue': False,
+ 'is_auto_managed': False,
+ 'stop_at_ratio': False,
+ 'stop_ratio': 2.0,
+ 'remove_at_ratio': False,
+ 'apply_move_completed': False,
+ 'move_completed': False,
+ 'move_completed_path': '',
+ 'auto_add': False,
+ 'auto_add_trackers': [],
+}
+
+NO_LABEL = 'No Label'
+
+
+def check_input(cond, message):
+ if not cond:
+ raise Exception(message)
+
+
+class Core(CorePluginBase):
+ """
+ self.labels = {label_id:label_options_dict}
+ self.torrent_labels = {torrent_id:label_id}
+ """
+
+ def enable(self):
+ log.info('*** Start Label plugin ***')
+ self.plugin = component.get('CorePluginManager')
+ self.plugin.register_status_field('label', self._status_get_label)
+
+ # __init__
+ core = component.get('Core')
+ self.config = ConfigManager('label.conf', defaults=CONFIG_DEFAULTS)
+ self.core_cfg = ConfigManager('core.conf')
+
+ # reduce typing, assigning some values to self...
+ self.torrents = core.torrentmanager.torrents
+ self.labels = self.config['labels']
+ self.torrent_labels = self.config['torrent_labels']
+
+ self.clean_initial_config()
+
+ component.get('EventManager').register_event_handler(
+ 'TorrentAddedEvent', self.post_torrent_add
+ )
+ component.get('EventManager').register_event_handler(
+ 'TorrentRemovedEvent', self.post_torrent_remove
+ )
+
+ # register tree:
+ component.get('FilterManager').register_tree_field(
+ 'label', self.init_filter_dict
+ )
+
+ log.debug('Label plugin enabled..')
+
+ def disable(self):
+ self.plugin.deregister_status_field('label')
+ component.get('FilterManager').deregister_tree_field('label')
+ component.get('EventManager').deregister_event_handler(
+ 'TorrentAddedEvent', self.post_torrent_add
+ )
+ component.get('EventManager').deregister_event_handler(
+ 'TorrentRemovedEvent', self.post_torrent_remove
+ )
+
+ def update(self):
+ pass
+
+ def init_filter_dict(self):
+ filter_dict = {label: 0 for label in self.labels}
+ filter_dict['All'] = len(self.torrents)
+ return filter_dict
+
+ # Plugin hooks #
+ def post_torrent_add(self, torrent_id, from_state):
+ if from_state:
+ return
+ log.debug('post_torrent_add')
+ torrent = self.torrents[torrent_id]
+
+ for label_id, options in self.labels.items():
+ if options['auto_add']:
+ if self._has_auto_match(torrent, options):
+ self.set_torrent(torrent_id, label_id)
+ return
+
+ def post_torrent_remove(self, torrent_id):
+ log.debug('post_torrent_remove')
+ if torrent_id in self.torrent_labels:
+ del self.torrent_labels[torrent_id]
+ self.config.save()
+
+ # Utils #
+ def clean_config(self):
+ """remove invalid data from config-file"""
+ for torrent_id, label_id in list(self.torrent_labels.items()):
+ if (label_id not in self.labels) or (torrent_id not in self.torrents):
+ log.debug('label: rm %s:%s', torrent_id, label_id)
+ del self.torrent_labels[torrent_id]
+
+ def clean_initial_config(self):
+ """
+ *add any new keys in OPTIONS_DEFAULTS
+ *set all None values to default <-fix development config
+ """
+ log.debug(list(self.labels))
+ for key in self.labels:
+ options = dict(OPTIONS_DEFAULTS)
+ options.update(self.labels[key])
+ self.labels[key] = options
+
+ for label, options in self.labels.items():
+ for key, value in options.items():
+ if value is None:
+ self.labels[label][key] = OPTIONS_DEFAULTS[key]
+
+ def save_config(self):
+ self.clean_config()
+ self.config.save()
+
+ @export
+ def get_labels(self):
+ return sorted(self.labels)
+
+ # Labels:
+ @export
+ def add(self, label_id):
+ """add a label
+ see label_set_options for more options.
+ """
+ label_id = label_id.lower()
+ check_input(
+ RE_VALID.match(label_id), _('Invalid label, valid characters:[a-z0-9_-]')
+ )
+ check_input(label_id, _('Empty Label'))
+ check_input(not (label_id in self.labels), _('Label already exists'))
+
+ self.labels[label_id] = dict(OPTIONS_DEFAULTS)
+ self.config.save()
+
+ @export
+ def remove(self, label_id):
+ """remove a label"""
+ check_input(label_id in self.labels, _('Unknown Label'))
+ del self.labels[label_id]
+ self.save_config()
+
+ def _set_torrent_options(self, torrent_id, label_id):
+ options = self.labels[label_id]
+ torrent = self.torrents[torrent_id]
+
+ if not options['move_completed_path']:
+ options['move_completed_path'] = '' # no None.
+
+ if options['apply_max']:
+ torrent.set_max_download_speed(options['max_download_speed'])
+ torrent.set_max_upload_speed(options['max_upload_speed'])
+ torrent.set_max_connections(options['max_connections'])
+ torrent.set_max_upload_slots(options['max_upload_slots'])
+ torrent.set_prioritize_first_last_pieces(options['prioritize_first_last'])
+
+ if options['apply_queue']:
+ torrent.set_auto_managed(options['is_auto_managed'])
+ torrent.set_stop_at_ratio(options['stop_at_ratio'])
+ torrent.set_stop_ratio(options['stop_ratio'])
+ torrent.set_remove_at_ratio(options['remove_at_ratio'])
+
+ if options['apply_move_completed']:
+ torrent.set_options(
+ {
+ 'move_completed': options['move_completed'],
+ 'move_completed_path': options['move_completed_path'],
+ }
+ )
+
+ def _unset_torrent_options(self, torrent_id, label_id):
+ options = self.labels[label_id]
+ torrent = self.torrents[torrent_id]
+
+ if options['apply_max']:
+ torrent.set_max_download_speed(
+ self.core_cfg.config['max_download_speed_per_torrent']
+ )
+ torrent.set_max_upload_speed(
+ self.core_cfg.config['max_upload_speed_per_torrent']
+ )
+ torrent.set_max_connections(
+ self.core_cfg.config['max_connections_per_torrent']
+ )
+ torrent.set_max_upload_slots(
+ self.core_cfg.config['max_upload_slots_per_torrent']
+ )
+ torrent.set_prioritize_first_last_pieces(
+ self.core_cfg.config['prioritize_first_last_pieces']
+ )
+
+ if options['apply_queue']:
+ torrent.set_auto_managed(self.core_cfg.config['auto_managed'])
+ torrent.set_stop_at_ratio(self.core_cfg.config['stop_seed_at_ratio'])
+ torrent.set_stop_ratio(self.core_cfg.config['stop_seed_ratio'])
+ torrent.set_remove_at_ratio(self.core_cfg.config['remove_seed_at_ratio'])
+
+ if options['apply_move_completed']:
+ torrent.set_options(
+ {
+ 'move_completed': self.core_cfg.config['move_completed'],
+ 'move_completed_path': self.core_cfg.config['move_completed_path'],
+ }
+ )
+
+ def _has_auto_match(self, torrent, label_options):
+ """match for auto_add fields"""
+ for tracker_match in label_options['auto_add_trackers']:
+ for tracker in torrent.trackers:
+ if tracker_match in tracker['url']:
+ return True
+ return False
+
+ @export
+ def set_options(self, label_id, options_dict):
+ """update the label options
+
+ options_dict :
+ {"max_download_speed":float(),
+ "max_upload_speed":float(),
+ "max_connections":int(),
+ "max_upload_slots":int(),
+ #"prioritize_first_last":bool(),
+ "apply_max":bool(),
+ "move_completed_to":string() or None
+ }
+ """
+ check_input(label_id in self.labels, _('Unknown Label'))
+ for key in options_dict:
+ if key not in OPTIONS_DEFAULTS:
+ raise Exception('label: Invalid options_dict key:%s' % key)
+
+ self.labels[label_id].update(options_dict)
+
+ # apply
+ for torrent_id, label in self.torrent_labels.items():
+ if label_id == label and torrent_id in self.torrents:
+ self._set_torrent_options(torrent_id, label_id)
+
+ # auto add
+ options = self.labels[label_id]
+ if options['auto_add']:
+ for torrent_id, torrent in self.torrents.items():
+ if self._has_auto_match(torrent, options):
+ self.set_torrent(torrent_id, label_id)
+
+ self.config.save()
+
+ @export
+ def get_options(self, label_id):
+ """returns the label options"""
+ return self.labels[label_id]
+
+ @export
+ def set_torrent(self, torrent_id, label_id):
+ """
+ assign a label to a torrent
+ removes a label if the label_id parameter is empty.
+ """
+ if label_id == NO_LABEL:
+ label_id = None
+
+ check_input((not label_id) or (label_id in self.labels), _('Unknown Label'))
+ check_input(torrent_id in self.torrents, _('Unknown Torrent'))
+
+ if torrent_id in self.torrent_labels:
+ self._unset_torrent_options(torrent_id, self.torrent_labels[torrent_id])
+ del self.torrent_labels[torrent_id]
+ self.clean_config()
+ if label_id:
+ self.torrent_labels[torrent_id] = label_id
+ self._set_torrent_options(torrent_id, label_id)
+
+ self.config.save()
+
+ @export
+ def get_config(self):
+ """see : label_set_config"""
+ return {
+ key: self.config[key] for key in CORE_OPTIONS if key in self.config.config
+ }
+
+ @export
+ def set_config(self, options):
+ """global_options:"""
+ if options:
+ for key, value in options.items:
+ if key in CORE_OPTIONS:
+ self.config[key] = value
+
+ self.config.save()
+
+ def _status_get_label(self, torrent_id):
+ return self.torrent_labels.get(torrent_id) or ''
diff --git a/deluge/plugins/Label/deluge_label/data/label.js b/deluge/plugins/Label/deluge_label/data/label.js
new file mode 100644
index 0000000..a0327e3
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/data/label.js
@@ -0,0 +1,635 @@
+/**
+ * label.js
+ *
+ * Copyright (C) Damien Churchill 2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ *
+ */
+
+Ext.ns('Deluge.ux.preferences');
+
+/**
+ * @class Deluge.ux.preferences.LabelPage
+ * @extends Ext.Panel
+ */
+Deluge.ux.preferences.LabelPage = Ext.extend(Ext.Panel, {
+ title: _('Label'),
+ layout: 'fit',
+ border: false,
+
+ initComponent: function () {
+ Deluge.ux.preferences.LabelPage.superclass.initComponent.call(this);
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Label Preferences'),
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'panel',
+ });
+ fieldset.add({
+ border: false,
+ bodyCfg: {
+ html: _(
+ '<p>The Label plugin is enabled.</p><br>' +
+ '<p>To add, remove or edit labels right-click on the Label filter ' +
+ 'entry in the sidebar.</p><br>' +
+ '<p>To apply a label right-click on torrent(s).<p>'
+ ),
+ },
+ });
+ },
+});
+
+Ext.ns('Deluge.ux');
+
+/**
+ * @class Deluge.ux.AddLabelWindow
+ * @extends Ext.Window
+ */
+Deluge.ux.AddLabelWindow = Ext.extend(Ext.Window, {
+ title: _('Add Label'),
+ width: 300,
+ height: 100,
+ closeAction: 'hide',
+
+ initComponent: function () {
+ Deluge.ux.AddLabelWindow.superclass.initComponent.call(this);
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+ this.addButton(_('Ok'), this.onOkClick, this);
+
+ this.form = this.add({
+ xtype: 'form',
+ height: 35,
+ baseCls: 'x-plain',
+ bodyStyle: 'padding:5px 5px 0',
+ defaultType: 'textfield',
+ labelWidth: 50,
+ items: [
+ {
+ fieldLabel: _('Name'),
+ name: 'name',
+ allowBlank: false,
+ width: 220,
+ listeners: {
+ specialkey: {
+ fn: function (field, e) {
+ if (e.getKey() == 13) this.onOkClick();
+ },
+ scope: this,
+ },
+ },
+ },
+ ],
+ });
+ },
+
+ onCancelClick: function () {
+ this.hide();
+ },
+
+ onOkClick: function () {
+ var label = this.form.getForm().getValues().name;
+ deluge.client.label.add(label, {
+ success: function () {
+ deluge.ui.update();
+ this.fireEvent('labeladded', label);
+ },
+ scope: this,
+ });
+ this.hide();
+ },
+
+ onHide: function (comp) {
+ Deluge.ux.AddLabelWindow.superclass.onHide.call(this, comp);
+ this.form.getForm().reset();
+ },
+
+ onShow: function (comp) {
+ Deluge.ux.AddLabelWindow.superclass.onShow.call(this, comp);
+ this.form.getForm().findField('name').focus(false, 150);
+ },
+});
+
+/**
+ * @class Deluge.ux.LabelOptionsWindow
+ * @extends Ext.Window
+ */
+Deluge.ux.LabelOptionsWindow = Ext.extend(Ext.Window, {
+ title: _('Label Options'),
+ width: 325,
+ height: 240,
+ closeAction: 'hide',
+
+ initComponent: function () {
+ Deluge.ux.LabelOptionsWindow.superclass.initComponent.call(this);
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+ this.addButton(_('Ok'), this.onOkClick, this);
+
+ this.form = this.add({
+ xtype: 'form',
+ });
+
+ this.tabs = this.form.add({
+ xtype: 'tabpanel',
+ height: 175,
+ border: false,
+ items: [
+ {
+ title: _('Maximum'),
+ items: [
+ {
+ border: false,
+ items: [
+ {
+ xtype: 'fieldset',
+ border: false,
+ labelWidth: 1,
+ style: 'margin-bottom: 0px; padding-bottom: 0px;',
+ items: [
+ {
+ xtype: 'checkbox',
+ name: 'apply_max',
+ fieldLabel: '',
+ boxLabel: _(
+ 'Apply per torrent max settings:'
+ ),
+ listeners: {
+ check: this.onFieldChecked,
+ },
+ },
+ ],
+ },
+ {
+ xtype: 'fieldset',
+ border: false,
+ defaultType: 'spinnerfield',
+ style: 'margin-top: 0px; padding-top: 0px;',
+ items: [
+ {
+ fieldLabel: _('Download Speed'),
+ name: 'max_download_speed',
+ width: 80,
+ disabled: true,
+ value: -1,
+ minValue: -1,
+ },
+ {
+ fieldLabel: _('Upload Speed'),
+ name: 'max_upload_speed',
+ width: 80,
+ disabled: true,
+ value: -1,
+ minValue: -1,
+ },
+ {
+ fieldLabel: _('Upload Slots'),
+ name: 'max_upload_slots',
+ width: 80,
+ disabled: true,
+ value: -1,
+ minValue: -1,
+ },
+ {
+ fieldLabel: _('Connections'),
+ name: 'max_connections',
+ width: 80,
+ disabled: true,
+ value: -1,
+ minValue: -1,
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ {
+ title: _('Queue'),
+ items: [
+ {
+ border: false,
+ items: [
+ {
+ xtype: 'fieldset',
+ border: false,
+ labelWidth: 1,
+ style: 'margin-bottom: 0px; padding-bottom: 0px;',
+ items: [
+ {
+ xtype: 'checkbox',
+ name: 'apply_queue',
+ fieldLabel: '',
+ boxLabel: _(
+ 'Apply queue settings:'
+ ),
+ listeners: {
+ check: this.onFieldChecked,
+ },
+ },
+ ],
+ },
+ {
+ xtype: 'fieldset',
+ border: false,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ style: 'margin-top: 0px; padding-top: 0px;',
+ defaults: {
+ style: 'margin-left: 20px',
+ },
+ items: [
+ {
+ boxLabel: _('Auto Managed'),
+ name: 'is_auto_managed',
+ disabled: true,
+ },
+ {
+ boxLabel: _('Stop seed at ratio:'),
+ name: 'stop_at_ratio',
+ disabled: true,
+ },
+ {
+ xtype: 'spinnerfield',
+ name: 'stop_ratio',
+ width: 60,
+ decimalPrecision: 2,
+ incrementValue: 0.1,
+ style: 'position: relative; left: 100px',
+ disabled: true,
+ },
+ {
+ boxLabel: _('Remove at ratio'),
+ name: 'remove_at_ratio',
+ disabled: true,
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ {
+ title: _('Folders'),
+ items: [
+ {
+ border: false,
+ items: [
+ {
+ xtype: 'fieldset',
+ border: false,
+ labelWidth: 1,
+ style: 'margin-bottom: 0px; padding-bottom: 0px;',
+ items: [
+ {
+ xtype: 'checkbox',
+ name: 'apply_move_completed',
+ fieldLabel: '',
+ boxLabel: _(
+ 'Apply folder settings:'
+ ),
+ listeners: {
+ check: this.onFieldChecked,
+ },
+ },
+ ],
+ },
+ {
+ xtype: 'fieldset',
+ border: false,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ labelWidth: 1,
+ style: 'margin-top: 0px; padding-top: 0px;',
+ defaults: {
+ style: 'margin-left: 20px',
+ },
+ items: [
+ {
+ boxLabel: _('Move completed to:'),
+ name: 'move_completed',
+ disabled: true,
+ },
+ {
+ xtype: 'textfield',
+ name: 'move_completed_path',
+ width: 250,
+ disabled: true,
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ {
+ title: _('Trackers'),
+ items: [
+ {
+ border: false,
+ items: [
+ {
+ xtype: 'fieldset',
+ border: false,
+ labelWidth: 1,
+ style: 'margin-bottom: 0px; padding-bottom: 0px;',
+ items: [
+ {
+ xtype: 'checkbox',
+ name: 'auto_add',
+ fieldLabel: '',
+ boxLabel: _(
+ 'Automatically apply label:'
+ ),
+ listeners: {
+ check: this.onFieldChecked,
+ },
+ },
+ ],
+ },
+ {
+ xtype: 'fieldset',
+ border: false,
+ labelWidth: 1,
+ style: 'margin-top: 0px; padding-top: 0px;',
+ defaults: {
+ style: 'margin-left: 20px',
+ },
+ defaultType: 'textarea',
+ items: [
+ {
+ boxLabel: _('Move completed to:'),
+ name: 'auto_add_trackers',
+ width: 250,
+ height: 100,
+ disabled: true,
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ });
+ },
+
+ getLabelOptions: function () {
+ deluge.client.label.get_options(this.label, {
+ success: this.gotOptions,
+ scope: this,
+ });
+ },
+
+ gotOptions: function (options) {
+ this.form.getForm().setValues(options);
+ },
+
+ show: function (label) {
+ Deluge.ux.LabelOptionsWindow.superclass.show.call(this);
+ this.label = label;
+ this.setTitle(_('Label Options') + ': ' + this.label);
+ this.tabs.setActiveTab(0);
+ this.getLabelOptions();
+ },
+
+ onCancelClick: function () {
+ this.hide();
+ },
+
+ onOkClick: function () {
+ var values = this.form.getForm().getFieldValues();
+ if (values['auto_add_trackers']) {
+ values['auto_add_trackers'] =
+ values['auto_add_trackers'].split('\n');
+ }
+ deluge.client.label.set_options(this.label, values);
+ this.hide();
+ },
+
+ onFieldChecked: function (field, checked) {
+ var fs = field.ownerCt.nextSibling();
+ fs.items.each(function (field) {
+ field.setDisabled(!checked);
+ });
+ },
+});
+
+Ext.ns('Deluge.plugins');
+
+/**
+ * @class Deluge.plugins.LabelPlugin
+ * @extends Deluge.Plugin
+ */
+Deluge.plugins.LabelPlugin = Ext.extend(Deluge.Plugin, {
+ name: 'Label',
+
+ createMenu: function () {
+ this.labelMenu = new Ext.menu.Menu({
+ items: [
+ {
+ text: _('Add Label'),
+ iconCls: 'icon-add',
+ handler: this.onLabelAddClick,
+ scope: this,
+ },
+ {
+ text: _('Remove Label'),
+ disabled: true,
+ iconCls: 'icon-remove',
+ handler: this.onLabelRemoveClick,
+ scope: this,
+ },
+ {
+ text: _('Label Options'),
+ disabled: true,
+ handler: this.onLabelOptionsClick,
+ scope: this,
+ },
+ ],
+ });
+ },
+
+ setFilter: function (filter) {
+ filter.show_zero = true;
+
+ filter.list.on('contextmenu', this.onLabelContextMenu, this);
+ filter.header.on('contextmenu', this.onLabelHeaderContextMenu, this);
+ this.filter = filter;
+ },
+
+ updateTorrentMenu: function (states) {
+ this.torrentMenu.removeAll(true);
+ this.torrentMenu.addMenuItem({
+ text: _('No Label'),
+ label: '',
+ handler: this.onTorrentMenuClick,
+ scope: this,
+ });
+ for (var state in states) {
+ if (!state || state == 'All') continue;
+ this.torrentMenu.addMenuItem({
+ text: state,
+ label: state,
+ handler: this.onTorrentMenuClick,
+ scope: this,
+ });
+ }
+ },
+
+ onDisable: function () {
+ deluge.sidebar.un('filtercreate', this.onFilterCreate);
+ deluge.sidebar.un('afterfiltercreate', this.onAfterFilterCreate);
+ delete Deluge.FilterPanel.templates.label;
+ this.deregisterTorrentStatus('label');
+ deluge.menus.torrent.remove(this.tmSep);
+ deluge.menus.torrent.remove(this.tm);
+ deluge.preferences.removePage(this.prefsPage);
+ },
+
+ onEnable: function () {
+ this.prefsPage = deluge.preferences.addPage(
+ new Deluge.ux.preferences.LabelPage()
+ );
+ this.torrentMenu = new Ext.menu.Menu();
+
+ this.tmSep = deluge.menus.torrent.add({
+ xtype: 'menuseparator',
+ });
+
+ this.tm = deluge.menus.torrent.add({
+ text: _('Label'),
+ menu: this.torrentMenu,
+ });
+
+ var lbltpl =
+ '<div class="x-deluge-filter">' +
+ '<tpl if="filter">{filter}</tpl>' +
+ '<tpl if="!filter">No Label</tpl>' +
+ ' ({count})' +
+ '</div>';
+
+ if (deluge.sidebar.hasFilter('label')) {
+ var filter = deluge.sidebar.getFilter('label');
+ filter.list.columns[0].tpl = new Ext.XTemplate(lbltpl);
+ this.setFilter(filter);
+ this.updateTorrentMenu(filter.getStates());
+ filter.list.refresh();
+ } else {
+ deluge.sidebar.on('filtercreate', this.onFilterCreate, this);
+ deluge.sidebar.on(
+ 'afterfiltercreate',
+ this.onAfterFilterCreate,
+ this
+ );
+ Deluge.FilterPanel.templates.label = lbltpl;
+ }
+ this.registerTorrentStatus('label', _('Label'));
+ },
+
+ onAfterFilterCreate: function (sidebar, filter) {
+ if (filter.filter != 'label') return;
+ this.updateTorrentMenu(filter.getStates());
+ },
+
+ onFilterCreate: function (sidebar, filter) {
+ if (filter.filter != 'label') return;
+ this.setFilter(filter);
+ },
+
+ onLabelAddClick: function () {
+ if (!this.addWindow) {
+ this.addWindow = new Deluge.ux.AddLabelWindow();
+ this.addWindow.on('labeladded', this.onLabelAdded, this);
+ }
+ this.addWindow.show();
+ },
+
+ onLabelAdded: function (label) {
+ var filter = deluge.sidebar.getFilter('label');
+ var states = filter.getStates();
+ var statesArray = [];
+
+ for (state in states) {
+ if (!state || state == 'All') continue;
+ statesArray.push(state);
+ }
+
+ statesArray.push(label.toLowerCase());
+ statesArray.sort();
+
+ //console.log(states);
+ //console.log(statesArray);
+
+ states = {};
+
+ for (i = 0; i < statesArray.length; ++i) {
+ states[statesArray[i]] = 0;
+ }
+
+ this.updateTorrentMenu(states);
+ },
+
+ onLabelContextMenu: function (dv, i, node, e) {
+ e.preventDefault();
+ if (!this.labelMenu) this.createMenu();
+ var r = dv.getRecord(node).get('filter');
+ if (!r || r == 'All') {
+ this.labelMenu.items.get(1).setDisabled(true);
+ this.labelMenu.items.get(2).setDisabled(true);
+ } else {
+ this.labelMenu.items.get(1).setDisabled(false);
+ this.labelMenu.items.get(2).setDisabled(false);
+ }
+ dv.select(i);
+ this.labelMenu.showAt(e.getXY());
+ },
+
+ onLabelHeaderContextMenu: function (e, t) {
+ e.preventDefault();
+ if (!this.labelMenu) this.createMenu();
+ this.labelMenu.items.get(1).setDisabled(true);
+ this.labelMenu.items.get(2).setDisabled(true);
+ this.labelMenu.showAt(e.getXY());
+ },
+
+ onLabelOptionsClick: function () {
+ if (!this.labelOpts)
+ this.labelOpts = new Deluge.ux.LabelOptionsWindow();
+ this.labelOpts.show(this.filter.getState());
+ },
+
+ onLabelRemoveClick: function () {
+ var state = this.filter.getState();
+ deluge.client.label.remove(state, {
+ success: function () {
+ deluge.ui.update();
+ this.torrentMenu.items.each(function (item) {
+ if (item.text != state) return;
+ this.torrentMenu.remove(item);
+ var i = item;
+ }, this);
+ },
+ scope: this,
+ });
+ },
+
+ onTorrentMenuClick: function (item, e) {
+ var ids = deluge.torrents.getSelectedIds();
+ Ext.each(ids, function (id, i) {
+ if (ids.length == i + 1) {
+ deluge.client.label.set_torrent(id, item.label, {
+ success: function () {
+ deluge.ui.update();
+ },
+ });
+ } else {
+ deluge.client.label.set_torrent(id, item.label);
+ }
+ });
+ },
+});
+Deluge.registerPlugin('Label', Deluge.plugins.LabelPlugin);
diff --git a/deluge/plugins/Label/deluge_label/data/label_add.ui b/deluge/plugins/Label/deluge_label/data/label_add.ui
new file mode 100644
index 0000000..e550675
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/data/label_add.ui
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="dlg_label_add">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Add Label</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="window_position">mouse</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="skip_taskbar_hint">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_add_cancel" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button1">
+ <property name="label">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_add_ok" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-add</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Add Label&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Name:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="txt_add">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activates_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button2</action-widget>
+ <action-widget response="0">button1</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/plugins/Label/deluge_label/data/label_options.ui b/deluge/plugins/Label/deluge_label/data/label_options.ui
new file mode 100644
index 0000000..d390865
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/data/label_options.ui
@@ -0,0 +1,723 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="value">-1</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="value">-1</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="value">-1</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="value">-1</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment5">
+ <property name="lower">0.10000000000000001</property>
+ <property name="upper">100</property>
+ <property name="value">2</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkTextBuffer" id="textbuffer1">
+ <property name="text" translatable="yes">tracker1.org</property>
+ </object>
+ <object class="GtkDialog" id="dlg_label_options">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Label Options</property>
+ <property name="modal">True</property>
+ <property name="window_position">mouse</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="skip_taskbar_hint">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button4">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_options_cancel" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button3">
+ <property name="label">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_options_ok" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-preferences</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_header">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Label Options&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">2</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">5</property>
+ <property name="n_columns">4</property>
+ <property name="column_spacing">5</property>
+ <property name="row_spacing">5</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="max_upload_speed">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="max_download_speed">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Upload Slots:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Upload Speed:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Download Speed:</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="max_upload_slots">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Connections:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="max_connections">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment4</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkCheckButton" id="apply_max">
+ <property name="label" translatable="yes">Apply per torrent max settings:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Maximum</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">2</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">3</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="is_auto_managed">
+ <property name="label" translatable="yes">Auto Managed</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="stop_at_ratio">
+ <property name="label" translatable="yes">Stop seed at ratio:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="remove_at_ratio">
+ <property name="label" translatable="yes">Remove at ratio</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="stop_ratio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment5</property>
+ <property name="digits">2</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkCheckButton" id="apply_queue">
+ <property name="label" translatable="yes">Apply Queue settings:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Queue</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">2</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <child>
+ <object class="GtkCheckButton" id="move_completed">
+ <property name="label" translatable="yes">Move completed to:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="move_completed_path">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action">select-folder</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="move_completed_path_entry">
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkCheckButton" id="apply_move_completed">
+ <property name="label" translatable="yes">Apply folder settings:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Folders</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">2</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTextView" id="auto_add_trackers">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="buffer">textbuffer1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;i&gt;(1 line per tracker)&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkCheckButton" id="auto_add">
+ <property name="label" translatable="yes">Automatically apply label:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label99">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Trackers</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button4</action-widget>
+ <action-widget response="0">button3</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/plugins/Label/deluge_label/data/label_pref.ui b/deluge/plugins/Label/deluge_label/data/label_pref.ui
new file mode 100644
index 0000000..81edc37
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/data/label_pref.ui
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="label_prefs_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;i&gt;Use the sidebar to add,edit and remove labels. &lt;/i&gt;
+</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Labels&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/Label/deluge_label/gtkui/__init__.py b/deluge/plugins/Label/deluge_label/gtkui/__init__.py
new file mode 100644
index 0000000..6170716
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/gtkui/__init__.py
@@ -0,0 +1,74 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge import component # for systray
+from deluge.plugins.pluginbase import Gtk3PluginBase
+
+from . import label_config, sidebar_menu, submenu
+
+log = logging.getLogger(__name__)
+
+NO_LABEL = 'No Label'
+
+
+def cell_data_label(column, cell, model, row, data):
+ cell.set_property('text', str(model.get_value(row, data)))
+
+
+class GtkUI(Gtk3PluginBase):
+ def start(self):
+ if self.label_menu:
+ self.label_menu.on_show()
+
+ def enable(self):
+ self.plugin = component.get('PluginManager')
+ self.torrentmenu = component.get('MenuBar').torrentmenu
+ self.label_menu = None
+ self.labelcfg = None
+ self.sidebar_menu = None
+ self.load_interface()
+
+ def disable(self):
+ if self.label_menu in self.torrentmenu.get_children():
+ self.torrentmenu.remove(self.label_menu)
+
+ self.labelcfg.unload()
+ self.sidebar_menu.unload()
+ del self.sidebar_menu
+
+ component.get('TorrentView').remove_column(_('Label'))
+
+ def load_interface(self):
+ # sidebar
+ # disabled
+ if not self.sidebar_menu:
+ self.sidebar_menu = sidebar_menu.LabelSidebarMenu()
+ # self.sidebar.load()
+
+ # menu:
+ log.debug('add items to torrentview-popup menu.')
+ self.label_menu = submenu.LabelMenu()
+ self.torrentmenu.append(self.label_menu)
+ self.label_menu.show_all()
+
+ # columns:
+ self.load_columns()
+
+ # config:
+ if not self.labelcfg:
+ self.labelcfg = label_config.LabelConfig(self.plugin)
+ self.labelcfg.load()
+
+ log.debug('Finished loading Label plugin')
+
+ def load_columns(self):
+ log.debug('add columns')
+
+ component.get('TorrentView').add_text_column(_('Label'), status_field=['label'])
diff --git a/deluge/plugins/Label/deluge_label/gtkui/label_config.py b/deluge/plugins/Label/deluge_label/gtkui/label_config.py
new file mode 100644
index 0000000..26c827e
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/gtkui/label_config.py
@@ -0,0 +1,58 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from gi.repository.Gtk import Builder
+
+from deluge.ui.client import client
+
+from ..common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class LabelConfig:
+ """
+ there used to be some options here...
+ """
+
+ def __init__(self, plugin):
+ self.plugin = plugin
+
+ def load(self):
+ log.debug('Adding Label Preferences page')
+ builder = Builder()
+ builder.add_from_file(get_resource('label_pref.ui'))
+
+ self.plugin.add_preferences_page(
+ _('Label'), builder.get_object('label_prefs_box')
+ )
+ self.plugin.register_hook('on_show_prefs', self.load_settings)
+ self.plugin.register_hook('on_apply_prefs', self.on_apply_prefs)
+
+ self.load_settings()
+
+ def unload(self):
+ self.plugin.remove_preferences_page(_('Label'))
+ self.plugin.deregister_hook('on_apply_prefs', self.on_apply_prefs)
+ self.plugin.deregister_hook('on_show_prefs', self.load_settings)
+
+ def load_settings(self, widget=None, data=None):
+ client.label.get_config().addCallback(self.cb_global_options)
+
+ def cb_global_options(self, options):
+ log.debug('options=%s', options)
+
+ # for id in self.chk_ids:
+ # self.glade.get_widget(id).set_active(bool(options[id]))
+
+ def on_apply_prefs(self):
+ options = {}
+ # update options dict here.
+ client.label.set_config(options)
diff --git a/deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py b/deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py
new file mode 100644
index 0000000..9d164b2
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py
@@ -0,0 +1,259 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import gi # isort:skip (Required before Gtk import).
+
+gi.require_version('Gtk', '3.0')
+
+# isort:imports-thirdparty
+from gi.repository import Gtk
+
+# isort:imports-firstparty
+import deluge.component as component
+from deluge.ui.client import client
+
+# isort:imports-localfolder
+from ..common import get_resource
+
+log = logging.getLogger(__name__)
+
+NO_LABEL = 'No Label'
+
+
+# menu
+class LabelSidebarMenu:
+ def __init__(self):
+ self.treeview = component.get('FilterTreeView')
+ self.menu = self.treeview.menu
+ self.items = []
+
+ # add items, in reverse order, because they are prepended.
+ sep = Gtk.SeparatorMenuItem()
+ self.items.append(sep)
+ self.menu.prepend(sep)
+ self._add_item('options', _('Label _Options'))
+ self._add_item('remove', _('_Remove Label'))
+ self._add_item('add', _('_Add Label'))
+
+ self.menu.show_all()
+ # dialogs:
+ self.add_dialog = AddDialog()
+ self.options_dialog = OptionsDialog()
+ # hooks:
+ self.menu.connect('show', self.on_show, None)
+
+ def _add_item(self, item_id, label):
+ """
+ id is automatically-added as self.item_<id>
+ """
+ item = Gtk.MenuItem.new_with_mnemonic(label)
+ func = getattr(self, 'on_%s' % item_id)
+ item.connect('activate', func)
+ self.menu.prepend(item)
+ setattr(self, 'item_%s' % item_id, item)
+ self.items.append(item)
+ return item
+
+ def on_add(self, event=None):
+ self.add_dialog.show()
+
+ def on_remove(self, event=None):
+ client.label.remove(self.treeview.value)
+
+ def on_options(self, event=None):
+ self.options_dialog.show(self.treeview.value)
+
+ def on_show(self, widget=None, data=None):
+ """No Label:disable options/del."""
+ log.debug('label-sidebar-popup:on-show')
+
+ cat = self.treeview.cat
+ label = self.treeview.value
+ if cat == 'label' or (cat == 'cat' and label == 'label'):
+ # is a label : show menu-items
+ for item in self.items:
+ item.show()
+ # default items
+ sensitive = (label not in (NO_LABEL, None, '', 'All')) and (cat != 'cat')
+ for item in self.items:
+ item.set_sensitive(sensitive)
+
+ # add is always enabled.
+ self.item_add.set_sensitive(True)
+ else:
+ # not a label -->hide everything.
+ for item in self.items:
+ item.hide()
+
+ def unload(self):
+ log.debug('disable01')
+ for item in list(self.items):
+ item.hide()
+ item.destroy()
+ log.debug('disable02')
+ self.items = []
+
+
+# dialogs:
+class AddDialog:
+ def __init__(self):
+ pass
+
+ def show(self):
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('label_add.ui'))
+ self.dialog = self.builder.get_object('dlg_label_add')
+ self.dialog.set_transient_for(component.get('MainWindow').window)
+
+ self.builder.connect_signals(self)
+ self.dialog.run()
+
+ def on_add_ok(self, event=None):
+ value = self.builder.get_object('txt_add').get_text()
+ client.label.add(value)
+ self.dialog.destroy()
+
+ def on_add_cancel(self, event=None):
+ self.dialog.destroy()
+
+
+class OptionsDialog:
+ spin_ids = ['max_download_speed', 'max_upload_speed', 'stop_ratio']
+ spin_int_ids = ['max_upload_slots', 'max_connections']
+ chk_ids = [
+ 'apply_max',
+ 'apply_queue',
+ 'stop_at_ratio',
+ 'apply_queue',
+ 'remove_at_ratio',
+ 'apply_move_completed',
+ 'move_completed',
+ 'is_auto_managed',
+ 'auto_add',
+ ]
+
+ # list of tuples, because order matters when nesting.
+ sensitive_groups = [
+ (
+ 'apply_max',
+ [
+ 'max_download_speed',
+ 'max_upload_speed',
+ 'max_upload_slots',
+ 'max_connections',
+ ],
+ ),
+ ('apply_queue', ['is_auto_managed', 'stop_at_ratio']),
+ ('stop_at_ratio', ['remove_at_ratio', 'stop_ratio']), # nested
+ ('apply_move_completed', ['move_completed']),
+ ('move_completed', ['move_completed_path']), # nested
+ ('auto_add', ['auto_add_trackers']),
+ ]
+
+ def __init__(self):
+ pass
+
+ def show(self, label):
+ self.label = label
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('label_options.ui'))
+ self.dialog = self.builder.get_object('dlg_label_options')
+ self.dialog.set_transient_for(component.get('MainWindow').window)
+ self.builder.connect_signals(self)
+ # Show the label name in the header label
+ self.builder.get_object('label_header').set_markup(
+ '<b>{}:</b> {}'.format(_('Label Options'), self.label)
+ )
+
+ for chk_id, group in self.sensitive_groups:
+ chk = self.builder.get_object(chk_id)
+ chk.connect('toggled', self.apply_sensitivity)
+
+ client.label.get_options(self.label).addCallback(self.load_options)
+
+ self.dialog.run()
+
+ def load_options(self, options):
+ log.debug(list(options))
+
+ for spin_id in self.spin_ids + self.spin_int_ids:
+ self.builder.get_object(spin_id).set_value(options[spin_id])
+ for chk_id in self.chk_ids:
+ self.builder.get_object(chk_id).set_active(bool(options[chk_id]))
+
+ if client.is_localhost():
+ self.builder.get_object('move_completed_path').set_filename(
+ options['move_completed_path']
+ )
+ self.builder.get_object('move_completed_path').show()
+ self.builder.get_object('move_completed_path_entry').hide()
+ else:
+ self.builder.get_object('move_completed_path_entry').set_text(
+ options['move_completed_path']
+ )
+ self.builder.get_object('move_completed_path_entry').show()
+ self.builder.get_object('move_completed_path').hide()
+
+ self.builder.get_object('auto_add_trackers').get_buffer().set_text(
+ '\n'.join(options['auto_add_trackers'])
+ )
+
+ self.apply_sensitivity()
+
+ def on_options_ok(self, event=None):
+ """Save options."""
+ options = {}
+
+ for spin_id in self.spin_ids:
+ options[spin_id] = self.builder.get_object(spin_id).get_value()
+ for spin_int_id in self.spin_int_ids:
+ options[spin_int_id] = self.builder.get_object(
+ spin_int_id
+ ).get_value_as_int()
+ for chk_id in self.chk_ids:
+ options[chk_id] = self.builder.get_object(chk_id).get_active()
+
+ if client.is_localhost():
+ options['move_completed_path'] = self.builder.get_object(
+ 'move_completed_path'
+ ).get_filename()
+ else:
+ options['move_completed_path'] = self.builder.get_object(
+ 'move_completed_path_entry'
+ ).get_text()
+
+ buff = self.builder.get_object(
+ 'auto_add_trackers'
+ ).get_buffer() # sometimes I hate gtk...
+ tracker_lst = (
+ buff.get_text(
+ buff.get_start_iter(), buff.get_end_iter(), include_hidden_chars=False
+ )
+ .strip()
+ .split('\n')
+ )
+ options['auto_add_trackers'] = [
+ x for x in tracker_lst if x
+ ] # filter out empty lines.
+
+ log.debug(options)
+ client.label.set_options(self.label, options)
+ self.dialog.destroy()
+
+ def apply_sensitivity(self, event=None):
+ for chk_id, sensitive_list in self.sensitive_groups:
+ chk = self.builder.get_object(chk_id)
+ sens = chk.get_active() and chk.get_property('sensitive')
+ for widget_id in sensitive_list:
+ self.builder.get_object(widget_id).set_sensitive(sens)
+
+ def on_options_cancel(self, event=None):
+ self.dialog.destroy()
diff --git a/deluge/plugins/Label/deluge_label/gtkui/submenu.py b/deluge/plugins/Label/deluge_label/gtkui/submenu.py
new file mode 100644
index 0000000..54b6594
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/gtkui/submenu.py
@@ -0,0 +1,62 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+import logging
+
+from gi.repository.Gtk import Menu, MenuItem
+
+from deluge import component # for systray
+from deluge.ui.client import client
+
+log = logging.getLogger(__name__)
+
+
+# Deferred Translation
+def _(message):
+ return message
+
+
+NO_LABEL = _('No Label')
+del _
+
+
+class LabelMenu(MenuItem):
+ def __init__(self):
+ MenuItem.__init__(self, _('Label')) # noqa: F821
+
+ self.sub_menu = Menu()
+ self.set_submenu(self.sub_menu)
+ self.items = []
+
+ # attach..
+ self.sub_menu.connect('show', self.on_show, None)
+
+ def get_torrent_ids(self):
+ return component.get('TorrentView').get_selected_torrents()
+
+ def on_show(self, widget=None, data=None):
+ log.debug('label-on-show')
+ client.label.get_labels().addCallback(self.cb_labels)
+
+ def cb_labels(self, labels):
+ for child in self.sub_menu.get_children():
+ self.sub_menu.remove(child)
+ for label in [NO_LABEL] + list(labels):
+ if label == NO_LABEL:
+ item = MenuItem(_(NO_LABEL)) # noqa: F821
+ else:
+ item = MenuItem(label)
+ item.connect('activate', self.on_select_label, label)
+ self.sub_menu.append(item)
+ self.show_all()
+
+ def on_select_label(self, widget=None, label_id=None):
+ log.debug('select label:%s,%s', label_id, self.get_torrent_ids())
+ for torrent_id in self.get_torrent_ids():
+ client.label.set_torrent(torrent_id, label_id)
diff --git a/deluge/plugins/Label/deluge_label/test.py b/deluge/plugins/Label/deluge_label/test.py
new file mode 100644
index 0000000..739bae4
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/test.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+#
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.ui.client import sclient
+
+sclient.set_core_uri()
+
+print(sclient.get_enabled_plugins())
+
+# enable plugin.
+if 'label' not in sclient.get_enabled_plugins():
+ sclient.enable_plugin('label')
+
+
+# test labels.
+print('#init labels')
+try:
+ sclient.label_remove('test')
+except Exception:
+ pass
+sess_id = sclient.get_session_state()[0]
+
+print('#add')
+sclient.label_add('test')
+print('#set')
+sclient.label_set_torrent(id, 'test')
+
+print(sclient.get_torrents_status({'label': 'test'}, 'name'))
+
+
+print('#set options')
+sclient.label_set_options('test', {'max_download_speed': 999}, True)
+print(sclient.get_torrent_status(sess_id, ['max_download_speed']), '999')
+sclient.label_set_options('test', {'max_download_speed': 9}, True)
+print(sclient.get_torrent_status(sess_id, ['max_download_speed']), '9')
+sclient.label_set_options('test', {'max_download_speed': 888}, False)
+print(sclient.get_torrent_status(sess_id, ['max_download_speed']), '9 (888)')
+
+print(sclient.get_torrent_status(sess_id, ['name', 'tracker_host', 'label']))
diff --git a/deluge/plugins/Label/deluge_label/webui.py b/deluge/plugins/Label/deluge_label/webui.py
new file mode 100644
index 0000000..9ccfa92
--- /dev/null
+++ b/deluge/plugins/Label/deluge_label/webui.py
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+ scripts = [get_resource('label.js')]
+ debug_scripts = scripts
diff --git a/deluge/plugins/Label/setup.py b/deluge/plugins/Label/setup.py
new file mode 100644
index 0000000..f8f2c5d
--- /dev/null
+++ b/deluge/plugins/Label/setup.py
@@ -0,0 +1,45 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'Label'
+__author__ = 'Martijn Voncken'
+__author_email__ = 'mvoncken@gmail.com'
+__version__ = '0.3'
+__url__ = 'http://deluge-torrent.org'
+__license__ = 'GPLv3'
+__description__ = 'Allows labels to be assigned to torrents'
+__long_description__ = """
+Allows labels to be assigned to torrents
+
+Also offers filters on state, tracker and keywords
+"""
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/Notifications/create_dev_link.sh b/deluge/plugins/Notifications/create_dev_link.sh
new file mode 100755
index 0000000..5e04057
--- /dev/null
+++ b/deluge/plugins/Notifications/create_dev_link.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+BASEDIR=$(cd `dirname $0` && pwd)
+CONFIG_DIR=$( test -z $1 && echo "" || echo "$1")
+[ -d "$CONFIG_DIR/plugins" ] || echo "Config dir "$CONFIG_DIR" is either not a directory or is not a proper deluge config directory. Exiting"
+[ -d "$CONFIG_DIR/plugins" ] || exit 1
+cd $BASEDIR
+test -d $BASEDIR/temp || mkdir $BASEDIR/temp
+export PYTHONPATH=$BASEDIR/temp
+python setup.py build develop --install-dir $BASEDIR/temp
+cp $BASEDIR/temp/*.egg-link $CONFIG_DIR/plugins
+rm -fr $BASEDIR/temp
diff --git a/deluge/plugins/Notifications/deluge_notifications/__init__.py b/deluge/plugins/Notifications/deluge_notifications/__init__.py
new file mode 100644
index 0000000..d52b48d
--- /dev/null
+++ b/deluge/plugins/Notifications/deluge_notifications/__init__.py
@@ -0,0 +1,38 @@
+#
+# Copyright (C) 2009-2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/Notifications/deluge_notifications/common.py b/deluge/plugins/Notifications/deluge_notifications/common.py
new file mode 100644
index 0000000..9993f5c
--- /dev/null
+++ b/deluge/plugins/Notifications/deluge_notifications/common.py
@@ -0,0 +1,114 @@
+#
+# Copyright (C) 2009-2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os.path
+
+from pkg_resources import resource_filename
+from twisted.internet import defer
+
+from deluge import component
+from deluge.event import known_events
+
+log = logging.getLogger(__name__)
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
+
+
+class CustomNotifications:
+ def __init__(self, plugin_name=None):
+ self.custom_notifications = {'email': {}, 'popup': {}, 'blink': {}, 'sound': {}}
+
+ def enable(self):
+ pass
+
+ def disable(self):
+ for kind in self.custom_notifications:
+ for eventtype in list(self.custom_notifications[kind]):
+ wrapper, handler = self.custom_notifications[kind][eventtype]
+ self._deregister_custom_provider(kind, eventtype)
+
+ def _handle_custom_providers(self, kind, eventtype, *args, **kwargs):
+ log.debug(
+ 'Calling CORE custom %s providers for %s: %s %s',
+ kind,
+ eventtype,
+ args,
+ kwargs,
+ )
+ if eventtype in self.config['subscriptions'][kind]:
+ wrapper, handler = self.custom_notifications[kind][eventtype]
+ log.debug('Found handler for kind %s: %s', kind, handler)
+ custom_notif_func = getattr(self, 'handle_custom_%s_notification' % kind)
+ d = defer.maybeDeferred(handler, *args, **kwargs)
+ d.addCallback(custom_notif_func, eventtype)
+ d.addCallback(self._on_notify_sucess, kind)
+ d.addErrback(self._on_notify_failure, kind)
+ return d
+
+ def _register_custom_provider(self, kind, eventtype, handler):
+ if not self._handled_eventtype(eventtype, handler):
+ return defer.succeed('Event not handled')
+ if eventtype not in self.custom_notifications:
+
+ def wrapper(*args, **kwargs):
+ return self._handle_custom_providers(kind, eventtype, *args, **kwargs)
+
+ self.custom_notifications[kind][eventtype] = (wrapper, handler)
+ else:
+ wrapper, handler = self.custom_notifications[kind][eventtype]
+ try:
+ component.get('EventManager').register_event_handler(eventtype, wrapper)
+ except KeyError:
+ from deluge.ui.client import client
+
+ client.register_event_handler(eventtype, wrapper)
+
+ def _deregister_custom_provider(self, kind, eventtype):
+ try:
+ wrapper, handler = self.custom_notifications[kind][eventtype]
+ try:
+ component.get('EventManager').deregister_event_handler(
+ eventtype, wrapper
+ )
+ except KeyError:
+ from deluge.ui.client import client
+
+ client.deregister_event_handler(eventtype, wrapper)
+ self.custom_notifications[kind].pop(eventtype)
+ except KeyError:
+ pass
+
+ def _handled_eventtype(self, eventtype, handler):
+ if eventtype not in known_events:
+ log.error('The event "%s" is not known', eventtype)
+ return False
+ if known_events[eventtype].__module__.startswith('deluge.event'):
+ if handler.__self__ is self:
+ return True
+ log.error(
+ 'You cannot register custom notification providers '
+ 'for built-in event types.'
+ )
+ return False
+ return True
+
+ def _on_notify_sucess(self, result, kind):
+ log.debug('Notification success using %s: %s', kind, result)
+ return result
+
+ def _on_notify_failure(self, failure, kind):
+ log.debug('Notification failure using %s: %s', kind, failure)
+ return failure
diff --git a/deluge/plugins/Notifications/deluge_notifications/core.py b/deluge/plugins/Notifications/deluge_notifications/core.py
new file mode 100644
index 0000000..aa200f9
--- /dev/null
+++ b/deluge/plugins/Notifications/deluge_notifications/core.py
@@ -0,0 +1,228 @@
+#
+# Copyright (C) 2009-2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import smtplib
+from email.utils import formatdate
+
+from twisted.internet import defer, threads
+
+import deluge.configmanager
+from deluge import component
+from deluge.core.rpcserver import export
+from deluge.event import known_events
+from deluge.plugins.pluginbase import CorePluginBase
+
+from .common import CustomNotifications
+
+log = logging.getLogger(__name__)
+
+DEFAULT_PREFS = {
+ 'smtp_enabled': False,
+ 'smtp_host': '',
+ 'smtp_port': 25,
+ 'smtp_user': '',
+ 'smtp_pass': '',
+ 'smtp_from': '',
+ 'smtp_tls': False, # SSL or TLS
+ 'smtp_recipients': [],
+ # Subscriptions
+ 'subscriptions': {'email': []},
+}
+
+
+class CoreNotifications(CustomNotifications):
+ def __init__(self, plugin_name=None):
+ CustomNotifications.__init__(self, plugin_name)
+
+ def enable(self):
+ CustomNotifications.enable(self)
+ self.register_custom_email_notification(
+ 'TorrentFinishedEvent', self._on_torrent_finished_event
+ )
+
+ def disable(self):
+ self.deregister_custom_email_notification('TorrentFinishedEvent')
+ CustomNotifications.disable(self)
+
+ def register_custom_email_notification(self, eventtype, handler):
+ """This is used to register email notifications for custom event types.
+
+ :param event: str, the event name
+ :param handler: function, to be called when `:param:event` is emitted
+
+ Your handler should return a tuple of (email_subject, email_contents).
+ """
+ self._register_custom_provider('email', eventtype, handler)
+
+ def deregister_custom_email_notification(self, eventtype):
+ self._deregister_custom_provider('email', eventtype)
+
+ def handle_custom_email_notification(self, result, eventtype):
+ if not self.config['smtp_enabled']:
+ return defer.succeed('SMTP notification not enabled.')
+ subject, message = result
+ log.debug(
+ 'Spawning new thread to send email with subject: %s: %s', subject, message
+ )
+ # Spawn thread because we don't want Deluge to lock up while we send the
+ # email.
+ return threads.deferToThread(self._notify_email, subject, message)
+
+ def get_handled_events(self):
+ handled_events = []
+ for evt in sorted(known_events):
+ if known_events[evt].__module__.startswith('deluge.event'):
+ if evt not in ('TorrentFinishedEvent',):
+ # Skip all un-handled built-in events
+ continue
+ classdoc = known_events[evt].__doc__.strip()
+ handled_events.append((evt, classdoc))
+ log.debug('Handled Notification Events: %s', handled_events)
+ return handled_events
+
+ def _notify_email(self, subject='', message=''):
+ log.debug('Email prepared')
+ to_addrs = self.config['smtp_recipients']
+ to_addrs_str = ', '.join(self.config['smtp_recipients'])
+ headers_dict = {
+ 'smtp_from': self.config['smtp_from'],
+ 'subject': subject,
+ 'smtp_recipients': to_addrs_str,
+ 'date': formatdate(),
+ }
+ headers = (
+ """\
+From: %(smtp_from)s
+To: %(smtp_recipients)s
+Subject: %(subject)s
+Date: %(date)s
+
+
+"""
+ % headers_dict
+ )
+
+ message = '\r\n'.join((headers + message).splitlines())
+
+ try:
+ server = smtplib.SMTP(
+ self.config['smtp_host'], self.config['smtp_port'], timeout=60
+ )
+ except Exception as ex:
+ err_msg = _('There was an error sending the notification email: %s') % ex
+ log.error(err_msg)
+ return ex
+
+ security_enabled = self.config['smtp_tls']
+
+ if security_enabled:
+ server.ehlo()
+ if 'starttls' not in server.esmtp_features:
+ log.warning('TLS/SSL enabled but server does not support it')
+ else:
+ server.starttls()
+ server.ehlo()
+
+ if self.config['smtp_user'] and self.config['smtp_pass']:
+ try:
+ server.login(self.config['smtp_user'], self.config['smtp_pass'])
+ except smtplib.SMTPHeloError as ex:
+ err_msg = _('Server did not reply properly to HELO greeting: %s') % ex
+ log.error(err_msg)
+ return ex
+ except smtplib.SMTPAuthenticationError as ex:
+ err_msg = _('Server refused username/password combination: %s') % ex
+ log.error(err_msg)
+ return ex
+
+ try:
+ try:
+ server.sendmail(self.config['smtp_from'], to_addrs, message.encode())
+ except smtplib.SMTPException as ex:
+ err_msg = (
+ _('There was an error sending the notification email: %s') % ex
+ )
+ log.error(err_msg)
+ return ex
+ finally:
+ if security_enabled:
+ # avoid false failure detection when the server closes
+ # the SMTP connection with TLS enabled
+ import socket
+
+ try:
+ server.quit()
+ except socket.sslerror:
+ pass
+ else:
+ server.quit()
+ return _('Notification email sent.')
+
+ def _on_torrent_finished_event(self, torrent_id):
+ log.debug('Handler for TorrentFinishedEvent called for CORE')
+ torrent = component.get('TorrentManager')[torrent_id]
+ torrent_status = torrent.get_status(['name', 'num_files'])
+ # Email
+ subject = _('Finished Torrent "%(name)s"') % torrent_status
+ message = (
+ _(
+ 'This email is to inform you that Deluge has finished '
+ 'downloading "%(name)s", which includes %(num_files)i files.'
+ '\nTo stop receiving these alerts, simply turn off email '
+ "notification in Deluge's preferences.\n\n"
+ 'Thank you,\nDeluge.'
+ )
+ % torrent_status
+ )
+ return subject, message
+
+ # d = defer.maybeDeferred(self.handle_custom_email_notification,
+ # [subject, message],
+ # 'TorrentFinishedEvent')
+ # d.addCallback(self._on_notify_sucess, 'email')
+ # d.addErrback(self._on_notify_failure, 'email')
+ # return d
+
+
+class Core(CorePluginBase, CoreNotifications):
+ def __init__(self, plugin_name):
+ CorePluginBase.__init__(self, plugin_name)
+ CoreNotifications.__init__(self)
+
+ def enable(self):
+ CoreNotifications.enable(self)
+ self.config = deluge.configmanager.ConfigManager(
+ 'notifications-core.conf', DEFAULT_PREFS
+ )
+ log.debug('ENABLING CORE NOTIFICATIONS')
+
+ def disable(self):
+ log.debug('DISABLING CORE NOTIFICATIONS')
+ CoreNotifications.disable(self)
+
+ @export
+ def set_config(self, config):
+ """Sets the config dictionary."""
+ for key in config:
+ self.config[key] = config[key]
+ self.config.save()
+
+ @export
+ def get_config(self):
+ """Returns the config dictionary."""
+ return self.config.config
+
+ @export
+ def get_handled_events(self):
+ return CoreNotifications.get_handled_events(self)
diff --git a/deluge/plugins/Notifications/deluge_notifications/data/config.ui b/deluge/plugins/Notifications/deluge_notifications/data/config.ui
new file mode 100644
index 0000000..399cc9e
--- /dev/null
+++ b/deluge/plugins/Notifications/deluge_notifications/data/config.ui
@@ -0,0 +1,641 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="lower">1</property>
+ <property name="upper">65535</property>
+ <property name="value">25</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkWindow" id="window">
+ <property name="can_focus">False</property>
+ <child type="titlebar">
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="prefs_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_border">False</property>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">start</property>
+ <property name="margin_left">9</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="blink_enabled">
+ <property name="label" translatable="yes">Tray icon blinks enabled</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="popup_enabled">
+ <property name="label" translatable="yes">Popups enabled</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="sound_enabled">
+ <property name="label" translatable="yes">Sound enabled</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_sound_enabled_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="sound_path">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="create_folders">False</property>
+ <signal name="update-preview" handler="on_sound_path_update_preview" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">2</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin_top">5</property>
+ <property name="xpad">5</property>
+ <property name="label" translatable="yes">&lt;b&gt;UI Notifications&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">start</property>
+ <property name="margin_left">10</property>
+ <property name="margin_top">7</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">10</property>
+ <child>
+ <object class="GtkTable" id="prefs_table">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">7</property>
+ <property name="n_columns">4</property>
+ <property name="column_spacing">2</property>
+ <property name="row_spacing">2</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Hostname:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="smtp_host">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Port:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="smtp_port">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">5</property>
+ <property name="width_chars">5</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Username:</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="smtp_user">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Password:</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="smtp_pass">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="visibility">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">start</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="bottom_padding">10</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="smtp_recipients">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="enable_grid_lines">horizontal</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVButtonBox" id="vbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="add_button">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_add_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="delete_button">
+ <property name="label">gtk-delete</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_delete_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">3</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_bottom">3</property>
+ <property name="ypad">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Recipients&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="right_attach">4</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="smtp_tls">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Server requires TLS/SSL</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">From:</property>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="smtp_from">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="smtp_enabled">
+ <property name="label" translatable="yes">Enabled</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_enabled_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="right_attach">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="xpad">5</property>
+ <property name="label" translatable="yes">&lt;b&gt;Email Notifications&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="settings_page_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Settings</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">15</property>
+ <property name="margin_right">10</property>
+ <property name="margin_bottom">10</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkTreeView" id="subscriptions_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="enable_grid_lines">horizontal</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">This configuration does not mean that you'll actually receive notifications for all these events.</property>
+ <property name="justify">fill</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">2</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="subscriptions_page_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Subscriptions</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="sounds_page">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">15</property>
+ <property name="margin_right">10</property>
+ <property name="margin_bottom">10</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkTreeView" id="sounds_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">10</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="sounds_revert_button">
+ <property name="label">gtk-revert-to-saved</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_sounds_revert_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="sounds_edit_button">
+ <property name="label">gtk-edit</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_sounds_edit_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="sounds_page_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Sound Customization</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/Notifications/deluge_notifications/data/notifications.js b/deluge/plugins/Notifications/deluge_notifications/data/notifications.js
new file mode 100644
index 0000000..4b87e55
--- /dev/null
+++ b/deluge/plugins/Notifications/deluge_notifications/data/notifications.js
@@ -0,0 +1,522 @@
+/**
+ * notifications.js
+ *
+ * Copyright (c) Omar Alvarez 2014 <omar.alvarez@udc.es>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ *
+ */
+
+Ext.ns('Deluge.ux.preferences');
+
+/**
+ * @class Deluge.ux.preferences.NotificationsPage
+ * @extends Ext.Panel
+ */
+Deluge.ux.preferences.NotificationsPage = Ext.extend(Ext.Panel, {
+ title: _('Notifications'),
+ header: false,
+ layout: 'fit',
+ border: false,
+
+ initComponent: function () {
+ Deluge.ux.preferences.NotificationsPage.superclass.initComponent.call(
+ this
+ );
+
+ this.emailNotiFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Email Notifications'),
+ autoHeight: true,
+ defaultType: 'textfield',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ width: '85%',
+ labelWidth: 1,
+ });
+
+ this.chkEnableEmail = this.emailNotiFset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ name: 'enable_email',
+ xtype: 'checkbox',
+ boxLabel: _('Enabled'),
+ listeners: {
+ check: function (object, checked) {
+ this.setSmtpDisabled(!checked);
+ },
+ scope: this,
+ },
+ });
+
+ this.hBoxHost = this.emailNotiFset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ name: 'host',
+ xtype: 'container',
+ layout: 'hbox',
+ disabled: true,
+ items: [
+ {
+ xtype: 'label',
+ text: _('Hostname:'),
+ margins: '6 0 0 6',
+ },
+ {
+ xtype: 'textfield',
+ margins: '2 0 0 4',
+ },
+ ],
+ });
+
+ this.hBoxPort = this.emailNotiFset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ name: 'port',
+ xtype: 'container',
+ layout: 'hbox',
+ disabled: true,
+ items: [
+ {
+ xtype: 'label',
+ text: _('Port:'),
+ margins: '6 0 0 6',
+ },
+ {
+ xtype: 'spinnerfield',
+ margins: '2 0 0 34',
+ width: 64,
+ decimalPrecision: 0,
+ minValue: 0,
+ maxValue: 65535,
+ },
+ ],
+ });
+
+ this.hBoxUser = this.emailNotiFset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ name: 'username',
+ xtype: 'container',
+ layout: 'hbox',
+ disabled: true,
+ items: [
+ {
+ xtype: 'label',
+ text: _('Username:'),
+ margins: '6 0 0 6',
+ },
+ {
+ xtype: 'textfield',
+ margins: '2 0 0 3',
+ },
+ ],
+ });
+
+ this.hBoxPassword = this.emailNotiFset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ name: 'password',
+ xtype: 'container',
+ layout: 'hbox',
+ disabled: true,
+ items: [
+ {
+ xtype: 'label',
+ text: _('Password:'),
+ margins: '6 0 0 6',
+ },
+ {
+ xtype: 'textfield',
+ inputType: 'password',
+ margins: '2 0 0 5',
+ },
+ ],
+ });
+
+ this.hBoxFrom = this.emailNotiFset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ name: 'from',
+ xtype: 'container',
+ layout: 'hbox',
+ disabled: true,
+ items: [
+ {
+ xtype: 'label',
+ text: _('From:'),
+ margins: '6 0 0 6',
+ },
+ {
+ xtype: 'textfield',
+ margins: '2 0 0 28',
+ },
+ ],
+ });
+
+ this.chkTLS = this.emailNotiFset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ name: 'enable_tls_ssl',
+ xtype: 'checkbox',
+ disabled: true,
+ boxLabel: _('Server requires TLS/SSL'),
+ });
+
+ this.recipientsFset = new Ext.form.FieldSet({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Recipients'),
+ autoHeight: true,
+ defaultType: 'editorgrid',
+ style: 'margin-top: 3px; margin-bottom: 0px; padding-bottom: 0px;',
+ autoWidth: true,
+ items: [
+ {
+ fieldLabel: '',
+ name: 'recipients',
+ margins: '2 0 5 5',
+ height: 130,
+ hideHeaders: true,
+ width: 260,
+ disabled: true,
+ autoExpandColumn: 'recipient',
+ bbar: {
+ items: [
+ {
+ text: _('Add'),
+ iconCls: 'icon-add',
+ handler: this.onAddClick,
+ scope: this,
+ },
+ {
+ text: _('Remove'),
+ iconCls: 'icon-remove',
+ handler: this.onRemoveClick,
+ scope: this,
+ },
+ ],
+ },
+ viewConfig: {
+ emptyText: _('Add an recipient...'),
+ deferEmptyText: false,
+ },
+ colModel: new Ext.grid.ColumnModel({
+ columns: [
+ {
+ id: 'recipient',
+ header: _('Recipient'),
+ dataIndex: 'recipient',
+ sortable: true,
+ hideable: false,
+ editable: true,
+ editor: {
+ xtype: 'textfield',
+ },
+ },
+ ],
+ }),
+ selModel: new Ext.grid.RowSelectionModel({
+ singleSelect: false,
+ moveEditorOnEnter: false,
+ }),
+ store: new Ext.data.ArrayStore({
+ autoDestroy: true,
+ fields: [{ name: 'recipient' }],
+ }),
+ listeners: {
+ afteredit: function (e) {
+ e.record.commit();
+ },
+ },
+ setEmptyText: function (text) {
+ if (this.viewReady) {
+ this.getView().emptyText = text;
+ this.getView().refresh();
+ } else {
+ Ext.apply(this.viewConfig, { emptyText: text });
+ }
+ },
+ loadData: function (data) {
+ this.getStore().loadData(data);
+ if (this.viewReady) {
+ this.getView().updateHeaders();
+ }
+ },
+ },
+ ],
+ });
+
+ this.edGridSubs = new Ext.grid.EditorGridPanel({
+ xtype: 'editorgrid',
+ autoHeight: true,
+ autoExpandColumn: 'event',
+ viewConfig: {
+ emptyText: _('Loading events...'),
+ deferEmptyText: false,
+ },
+ colModel: new Ext.grid.ColumnModel({
+ defaults: {
+ renderer: function (
+ value,
+ meta,
+ record,
+ rowIndex,
+ colIndex,
+ store
+ ) {
+ if (Ext.isNumber(value) && parseInt(value) !== value) {
+ return value.toFixed(6);
+ } else if (Ext.isBoolean(value)) {
+ return (
+ '<div class="x-grid3-check-col' +
+ (value ? '-on' : '') +
+ '" style="width: 20px;">&#160;</div>'
+ );
+ }
+ return value;
+ },
+ },
+ columns: [
+ {
+ id: 'event',
+ header: 'Event',
+ dataIndex: 'event',
+ sortable: true,
+ hideable: false,
+ },
+ {
+ id: 'email',
+ header: _('Email'),
+ dataIndex: 'email',
+ sortable: true,
+ hideable: false,
+ menuDisabled: true,
+ width: 40,
+ },
+ ],
+ }),
+ store: new Ext.data.ArrayStore({
+ autoDestroy: true,
+ fields: [
+ {
+ name: 'event',
+ },
+ {
+ name: 'email',
+ },
+ ],
+ }),
+ listeners: {
+ cellclick: function (grid, rowIndex, colIndex, e) {
+ var record = grid.getStore().getAt(rowIndex);
+ var field = grid.getColumnModel().getDataIndex(colIndex);
+ var value = record.get(field);
+
+ if (colIndex == 1) {
+ if (Ext.isBoolean(value)) {
+ record.set(field, !value);
+ record.commit();
+ }
+ }
+ },
+ beforeedit: function (e) {
+ if (Ext.isBoolean(e.value)) {
+ return false;
+ }
+
+ return e.record.get('enabled');
+ },
+ afteredit: function (e) {
+ e.record.commit();
+ },
+ },
+ setEmptyText: function (text) {
+ if (this.viewReady) {
+ this.getView().emptyText = text;
+ this.getView().refresh();
+ } else {
+ Ext.apply(this.viewConfig, { emptyText: text });
+ }
+ },
+ setSub: function (eventName) {
+ var store = this.getStore();
+ var index = store.find('event', eventName);
+ store.getAt(index).set('email', true);
+ store.getAt(index).commit();
+ },
+ loadData: function (data) {
+ this.getStore().loadData(data);
+ if (this.viewReady) {
+ this.getView().updateHeaders();
+ }
+ },
+ });
+
+ this.tabPanSettings = this.add({
+ xtype: 'tabpanel',
+ activeTab: 0,
+ items: [
+ {
+ title: _('Settings'),
+ items: [this.emailNotiFset, this.recipientsFset],
+ autoScroll: true,
+ },
+ {
+ title: _('Subscriptions'),
+ items: this.edGridSubs,
+ },
+ ],
+ });
+
+ this.on('show', this.updateConfig, this);
+ },
+
+ updateConfig: function () {
+ deluge.client.notifications.get_handled_events({
+ success: function (events) {
+ var data = [];
+ var keys = Ext.keys(events);
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ data.push([events[key][0], false]);
+ }
+ this.edGridSubs.loadData(data);
+ },
+ scope: this,
+ });
+ deluge.client.notifications.get_config({
+ success: function (config) {
+ this.chkEnableEmail.setValue(config['smtp_enabled']);
+ this.setSmtpDisabled(!config['smtp_enabled']);
+
+ this.hBoxHost.getComponent(1).setValue(config['smtp_host']);
+ this.hBoxPort.getComponent(1).setValue(config['smtp_port']);
+ this.hBoxUser.getComponent(1).setValue(config['smtp_user']);
+ this.hBoxPassword.getComponent(1).setValue(config['smtp_pass']);
+ this.hBoxFrom.getComponent(1).setValue(config['smtp_from']);
+ this.chkTLS.setValue(config['smtp_tls']);
+
+ var data = [];
+ var keys = Ext.keys(config['smtp_recipients']);
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ data.push([config['smtp_recipients'][key]]);
+ }
+ this.recipientsFset.getComponent(0).loadData(data);
+
+ data = [];
+ keys = Ext.keys(config['subscriptions']['email']);
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ this.edGridSubs.setSub(
+ config['subscriptions']['email'][key]
+ );
+ }
+ },
+ scope: this,
+ });
+ },
+
+ onApply: function () {
+ var config = {};
+
+ config['smtp_enabled'] = this.chkEnableEmail.getValue();
+ config['smtp_host'] = this.hBoxHost.getComponent(1).getValue();
+ config['smtp_port'] = Number(this.hBoxPort.getComponent(1).getValue());
+ config['smtp_user'] = this.hBoxUser.getComponent(1).getValue();
+ config['smtp_pass'] = this.hBoxPassword.getComponent(1).getValue();
+ config['smtp_from'] = this.hBoxFrom.getComponent(1).getValue();
+ config['smtp_tls'] = this.chkTLS.getValue();
+
+ var recipientsList = [];
+ var store = this.recipientsFset.getComponent(0).getStore();
+
+ for (var i = 0; i < store.getCount(); i++) {
+ var record = store.getAt(i);
+ var recipient = record.get('recipient');
+ recipientsList.push(recipient);
+ }
+
+ config['smtp_recipients'] = recipientsList;
+
+ var subscriptions = {};
+ var eventList = [];
+ store = this.edGridSubs.getStore();
+
+ for (var i = 0; i < store.getCount(); i++) {
+ var record = store.getAt(i);
+ var ev = record.get('event');
+ var email = record.get('email');
+ if (email) {
+ eventList.push(ev);
+ }
+ }
+
+ subscriptions['email'] = eventList;
+ config['subscriptions'] = subscriptions;
+
+ deluge.client.notifications.set_config(config);
+ },
+
+ onOk: function () {
+ this.onApply();
+ },
+
+ onAddClick: function () {
+ var store = this.recipientsFset.getComponent(0).getStore();
+ var Recipient = store.recordType;
+ var i = new Recipient({
+ recipient: '',
+ });
+ this.recipientsFset.getComponent(0).stopEditing();
+ store.insert(0, i);
+ this.recipientsFset.getComponent(0).startEditing(0, 0);
+ },
+
+ onRemoveClick: function () {
+ var selections = this.recipientsFset
+ .getComponent(0)
+ .getSelectionModel()
+ .getSelections();
+ var store = this.recipientsFset.getComponent(0).getStore();
+
+ this.recipientsFset.getComponent(0).stopEditing();
+ for (var i = 0; i < selections.length; i++) store.remove(selections[i]);
+ store.commitChanges();
+ },
+
+ setSmtpDisabled: function (disable) {
+ this.hBoxHost.setDisabled(disable);
+ this.hBoxPort.setDisabled(disable);
+ this.hBoxUser.setDisabled(disable);
+ this.hBoxPassword.setDisabled(disable);
+ this.hBoxFrom.setDisabled(disable);
+ this.chkTLS.setDisabled(disable);
+ this.recipientsFset.getComponent(0).setDisabled(disable);
+ },
+
+ onDestroy: function () {
+ deluge.preferences.un('show', this.updateConfig, this);
+
+ Deluge.ux.preferences.NotificationsPage.superclass.onDestroy.call(this);
+ },
+});
+
+Deluge.plugins.NotificationsPlugin = Ext.extend(Deluge.Plugin, {
+ name: 'Notifications',
+
+ onDisable: function () {
+ deluge.preferences.removePage(this.prefsPage);
+ },
+
+ onEnable: function () {
+ this.prefsPage = deluge.preferences.addPage(
+ new Deluge.ux.preferences.NotificationsPage()
+ );
+ },
+});
+
+Deluge.registerPlugin('Notifications', Deluge.plugins.NotificationsPlugin);
diff --git a/deluge/plugins/Notifications/deluge_notifications/gtkui.py b/deluge/plugins/Notifications/deluge_notifications/gtkui.py
new file mode 100644
index 0000000..4dc5ff8
--- /dev/null
+++ b/deluge/plugins/Notifications/deluge_notifications/gtkui.py
@@ -0,0 +1,741 @@
+#
+# Copyright (C) 2009-2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+from os.path import basename
+
+from gi import require_version
+from gi.repository import Gtk
+from twisted.internet import defer
+
+import deluge.common
+import deluge.component as component
+import deluge.configmanager
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+
+from .common import CustomNotifications, get_resource
+
+# Relative imports
+
+log = logging.getLogger(__name__)
+
+try:
+ import pygame
+
+ SOUND_AVAILABLE = True
+except ImportError:
+ SOUND_AVAILABLE = False
+
+try:
+ require_version('Notify', '0.7')
+ from gi.repository import GLib, Notify
+except (ValueError, ImportError):
+ POPUP_AVAILABLE = False
+else:
+ POPUP_AVAILABLE = not deluge.common.windows_check()
+
+
+DEFAULT_PREFS = {
+ # BLINK
+ 'blink_enabled': False,
+ # FLASH
+ 'flash_enabled': False,
+ # POPUP
+ 'popup_enabled': False,
+ # SOUND
+ 'sound_enabled': False,
+ 'sound_path': '',
+ 'custom_sounds': {},
+ # Subscriptions
+ 'subscriptions': {'popup': [], 'blink': [], 'sound': []},
+}
+
+RECIPIENT_FIELD, RECIPIENT_EDIT = list(range(2))
+(
+ SUB_EVENT,
+ SUB_EVENT_DOC,
+ SUB_NOT_EMAIL,
+ SUB_NOT_POPUP,
+ SUB_NOT_BLINK,
+ SUB_NOT_SOUND,
+) = list(range(6))
+SND_EVENT, SND_EVENT_DOC, SND_NAME, SND_PATH = list(range(4))
+
+
+class GtkUiNotifications(CustomNotifications):
+ def __init__(self, plugin_name=None):
+ CustomNotifications.__init__(self, plugin_name)
+
+ def enable(self):
+ CustomNotifications.enable(self)
+ self.register_custom_blink_notification(
+ 'TorrentFinishedEvent', self._on_torrent_finished_event_blink
+ )
+ self.register_custom_sound_notification(
+ 'TorrentFinishedEvent', self._on_torrent_finished_event_sound
+ )
+ self.register_custom_popup_notification(
+ 'TorrentFinishedEvent', self._on_torrent_finished_event_popup
+ )
+
+ def disable(self):
+ self.deregister_custom_blink_notification('TorrentFinishedEvent')
+ self.deregister_custom_sound_notification('TorrentFinishedEvent')
+ self.deregister_custom_popup_notification('TorrentFinishedEvent')
+ CustomNotifications.disable(self)
+
+ def register_custom_popup_notification(self, eventtype, handler):
+ """This is used to register popup notifications for custom event types.
+
+ :param event: the event name
+ :param type: string
+ :param handler: function, to be called when `:param:event` is emitted
+
+ Your handler should return a tuple of (popup_title, popup_contents).
+ """
+ self._register_custom_provider('popup', eventtype, handler)
+
+ def deregister_custom_popup_notification(self, eventtype):
+ self._deregister_custom_provider('popup', eventtype)
+
+ def register_custom_blink_notification(self, eventtype, handler):
+ """This is used to register blink notifications for custom event types.
+
+ :param event: str, the event name
+ :param handler: function, to be called when `:param:event` is emitted
+
+ Your handler should return `True` or `False` to blink or not the
+ trayicon.
+ """
+ self._register_custom_provider('blink', eventtype, handler)
+
+ def deregister_custom_blink_notification(self, eventtype):
+ self._deregister_custom_provider('blink', eventtype)
+
+ def register_custom_sound_notification(self, eventtype, handler):
+ """This is used to register sound notifications for custom event types.
+
+ :param event: the event name
+ :type event: string
+ :param handler: function to be called when `:param:event` is emitted
+
+ Your handler should return either '' to use the sound defined on the
+ notification preferences, the path to a sound file, which will then be
+ played or None, where no sound will be played at all.
+ """
+ self._register_custom_provider('sound', eventtype, handler)
+
+ def deregister_custom_sound_notification(self, eventtype):
+ self._deregister_custom_provider('sound', eventtype)
+
+ def handle_custom_popup_notification(self, result, eventtype):
+ title, message = result
+ return defer.maybeDeferred(self.__popup, title, message)
+
+ def handle_custom_blink_notification(self, result, eventtype):
+ if result:
+ return defer.maybeDeferred(self.__blink)
+ return defer.succeed(
+ 'Will not blink. The returned value from the custom '
+ 'handler was: %s' % result
+ )
+
+ def handle_custom_sound_notification(self, result, eventtype):
+ if isinstance(result, ''.__class__):
+ if not result and eventtype in self.config['custom_sounds']:
+ return defer.maybeDeferred(
+ self.__play_sound, self.config['custom_sounds'][eventtype]
+ )
+ return defer.maybeDeferred(self.__play_sound, result)
+ return defer.succeed(
+ 'Will not play sound. The returned value from the '
+ 'custom handler was: %s' % result
+ )
+
+ def __blink(self):
+ self.systray.blink(True)
+ return defer.succeed(_('Notification Blink shown'))
+
+ def __popup(self, title='', message=''):
+ if not self.config['popup_enabled']:
+ return defer.succeed(_('Popup notification is not enabled.'))
+ if not POPUP_AVAILABLE:
+ err_msg = _('libnotify is not installed')
+ log.warning(err_msg)
+ return defer.fail(ImportError(err_msg))
+
+ if Notify.init('Deluge'):
+ self.note = Notify.Notification.new(title, message, 'deluge-panel')
+ self.note.set_hint('desktop-entry', GLib.Variant.new_string('deluge'))
+ if not self.note.show():
+ err_msg = _('Failed to popup notification')
+ log.warning(err_msg)
+ return defer.fail(Exception(err_msg))
+ return defer.succeed(_('Notification popup shown'))
+
+ def __play_sound(self, sound_path=''):
+ if not self.config['sound_enabled']:
+ return defer.succeed(_('Sound notification not enabled'))
+ if not SOUND_AVAILABLE:
+ err_msg = _('pygame is not installed')
+ log.warning(err_msg)
+ return defer.fail(ImportError(err_msg))
+
+ pygame.init()
+ try:
+ if not sound_path:
+ sound_path = self.config['sound_path']
+ alert_sound = pygame.mixer.music
+ alert_sound.load(sound_path)
+ alert_sound.play()
+ except pygame.error as ex:
+ err_msg = _('Sound notification failed %s') % ex
+ log.warning(err_msg)
+ return defer.fail(ex)
+ else:
+ msg = _('Sound notification Success')
+ log.info(msg)
+ return defer.succeed(msg)
+
+ def _on_torrent_finished_event_blink(self, torrent_id):
+ return True # Yes, Blink
+
+ def _on_torrent_finished_event_sound(self, torrent_id):
+ # Since there's no custom sound hardcoded, just return ''
+ return ''
+
+ def _on_torrent_finished_event_popup(self, torrent_id):
+ d = client.core.get_torrent_status(torrent_id, ['name', 'file_progress'])
+ d.addCallback(self._on_torrent_finished_event_got_torrent_status)
+ d.addErrback(self._on_torrent_finished_event_torrent_status_failure)
+ return d
+
+ def _on_torrent_finished_event_torrent_status_failure(self, failure):
+ log.debug('Failed to get torrent status to be able to show the popup')
+
+ def _on_torrent_finished_event_got_torrent_status(self, torrent_status):
+ log.debug(
+ 'Handler for TorrentFinishedEvent GTKUI called. ' 'Got Torrent Status'
+ )
+ title = _('Finished Torrent')
+ torrent_status['num_files'] = torrent_status['file_progress'].count(1.0)
+ message = (
+ _(
+ 'The torrent "%(name)s" including %(num_files)i file(s) '
+ 'has finished downloading.'
+ )
+ % torrent_status
+ )
+ return title, message
+
+
+class GtkUI(Gtk3PluginBase, GtkUiNotifications):
+ def __init__(self, plugin_name):
+ Gtk3PluginBase.__init__(self, plugin_name)
+ GtkUiNotifications.__init__(self)
+
+ def enable(self):
+ self.config = deluge.configmanager.ConfigManager(
+ 'notifications-gtk.conf', DEFAULT_PREFS
+ )
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('config.ui'))
+ self.builder.get_object('smtp_port').set_value(25)
+ self.prefs = self.builder.get_object('prefs_box')
+ self.prefs.show_all()
+
+ self.build_recipients_model_populate_treeview()
+ self.build_sounds_model_populate_treeview()
+ self.build_notifications_model_populate_treeview()
+
+ client.notifications.get_handled_events().addCallback(
+ self.popuplate_what_needs_handled_events
+ )
+
+ self.builder.connect_signals(
+ {
+ 'on_add_button_clicked': (
+ self.on_add_button_clicked,
+ self.recipients_treeview,
+ ),
+ 'on_delete_button_clicked': (
+ self.on_delete_button_clicked,
+ self.recipients_treeview,
+ ),
+ 'on_enabled_toggled': self.on_enabled_toggled,
+ 'on_sound_enabled_toggled': self.on_sound_enabled_toggled,
+ 'on_sounds_edit_button_clicked': self.on_sounds_edit_button_clicked,
+ 'on_sounds_revert_button_clicked': self.on_sounds_revert_button_clicked,
+ 'on_sound_path_update_preview': self.on_sound_path_update_preview,
+ }
+ )
+
+ component.get('Preferences').add_page(_('Notifications'), self.prefs)
+
+ component.get('PluginManager').register_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').register_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+
+ if not POPUP_AVAILABLE:
+ self.builder.get_object('popup_enabled').set_property('sensitive', False)
+ if not SOUND_AVAILABLE:
+ # for widget_name in ('sound_enabled', 'sound_path', 'sounds_page', 'sounds_page_label'):
+ # self.builder.get_object(widget_name).set_property('sensitive', False)
+ self.builder.get_object('sound_enabled').set_property('sensitive', False)
+ self.builder.get_object('sound_path').set_property('sensitive', False)
+ self.builder.get_object('sounds_page').set_property('sensitive', False)
+ self.builder.get_object('sounds_page_label').set_property(
+ 'sensitive', False
+ )
+
+ self.systray = component.get('SystemTray')
+ if not hasattr(self.systray, 'tray'):
+ # Tray is not beeing used
+ self.builder.get_object('blink_enabled').set_property('sensitive', False)
+
+ GtkUiNotifications.enable(self)
+
+ def disable(self):
+ GtkUiNotifications.disable(self)
+ component.get('Preferences').remove_page(_('Notifications'))
+ component.get('PluginManager').deregister_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').deregister_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+
+ def build_recipients_model_populate_treeview(self):
+ # SMTP Recipients treeview/model
+ self.recipients_treeview = self.builder.get_object('smtp_recipients')
+ treeview_selection = self.recipients_treeview.get_selection()
+ treeview_selection.connect(
+ 'changed', self.on_recipients_treeview_selection_changed
+ )
+ self.recipients_model = Gtk.ListStore(str, bool)
+
+ renderer = Gtk.CellRendererText()
+ renderer.connect('edited', self.on_cell_edited, self.recipients_model)
+ renderer.recipient = RECIPIENT_FIELD
+ column = Gtk.TreeViewColumn(
+ 'Recipients', renderer, text=RECIPIENT_FIELD, editable=RECIPIENT_EDIT
+ )
+ column.set_expand(True)
+ self.recipients_treeview.append_column(column)
+ self.recipients_treeview.set_model(self.recipients_model)
+
+ def build_sounds_model_populate_treeview(self):
+ # Sound customisation treeview/model
+ self.sounds_treeview = self.builder.get_object('sounds_treeview')
+ sounds_selection = self.sounds_treeview.get_selection()
+ sounds_selection.connect('changed', self.on_sounds_treeview_selection_changed)
+
+ self.sounds_treeview.set_tooltip_column(SND_EVENT_DOC)
+ self.sounds_model = Gtk.ListStore(str, str, str, str)
+
+ renderer = Gtk.CellRendererText()
+ renderer.event = SND_EVENT
+ column = Gtk.TreeViewColumn('Event', renderer, text=SND_EVENT)
+ column.set_expand(True)
+ self.sounds_treeview.append_column(column)
+
+ renderer = Gtk.CellRendererText()
+ renderer.event_doc = SND_EVENT_DOC
+ column = Gtk.TreeViewColumn('Doc', renderer, text=SND_EVENT_DOC)
+ column.set_property('visible', False)
+ self.sounds_treeview.append_column(column)
+
+ renderer = Gtk.CellRendererText()
+ renderer.sound_name = SND_NAME
+ column = Gtk.TreeViewColumn('Name', renderer, text=SND_NAME)
+ self.sounds_treeview.append_column(column)
+
+ renderer = Gtk.CellRendererText()
+ renderer.sound_path = SND_PATH
+ column = Gtk.TreeViewColumn('Path', renderer, text=SND_PATH)
+ column.set_property('visible', False)
+ self.sounds_treeview.append_column(column)
+
+ self.sounds_treeview.set_model(self.sounds_model)
+
+ def build_notifications_model_populate_treeview(self):
+ # Notification Subscriptions treeview/model
+ self.subscriptions_treeview = self.builder.get_object('subscriptions_treeview')
+ subscriptions_selection = self.subscriptions_treeview.get_selection()
+ subscriptions_selection.connect(
+ 'changed', self.on_subscriptions_treeview_selection_changed
+ )
+ self.subscriptions_treeview.set_tooltip_column(SUB_EVENT_DOC)
+ self.subscriptions_model = Gtk.ListStore(str, str, bool, bool, bool, bool)
+
+ renderer = Gtk.CellRendererText()
+ setattr(renderer, 'event', SUB_EVENT)
+ column = Gtk.TreeViewColumn('Event', renderer, text=SUB_EVENT)
+ column.set_expand(True)
+ self.subscriptions_treeview.append_column(column)
+
+ renderer = Gtk.CellRendererText()
+ setattr(renderer, 'event_doc', SUB_EVENT)
+ column = Gtk.TreeViewColumn('Doc', renderer, text=SUB_EVENT_DOC)
+ column.set_property('visible', False)
+ self.subscriptions_treeview.append_column(column)
+
+ renderer = Gtk.CellRendererToggle()
+ renderer.set_property('activatable', True)
+ renderer.connect('toggled', self._on_email_col_toggled)
+ column = Gtk.TreeViewColumn('Email', renderer, active=SUB_NOT_EMAIL)
+ column.set_clickable(True)
+ self.subscriptions_treeview.append_column(column)
+
+ renderer = Gtk.CellRendererToggle()
+ renderer.set_property('activatable', True)
+ renderer.connect('toggled', self._on_popup_col_toggled)
+ column = Gtk.TreeViewColumn('Popup', renderer, active=SUB_NOT_POPUP)
+ column.set_clickable(True)
+ self.subscriptions_treeview.append_column(column)
+
+ renderer = Gtk.CellRendererToggle()
+ renderer.set_property('activatable', True)
+ renderer.connect('toggled', self._on_blink_col_toggled)
+ column = Gtk.TreeViewColumn('Blink', renderer, active=SUB_NOT_BLINK)
+ column.set_clickable(True)
+ self.subscriptions_treeview.append_column(column)
+
+ renderer = Gtk.CellRendererToggle()
+ renderer.set_property('activatable', True)
+ renderer.connect('toggled', self._on_sound_col_toggled)
+ column = Gtk.TreeViewColumn('Sound', renderer, active=SUB_NOT_SOUND)
+ column.set_clickable(True)
+ self.subscriptions_treeview.append_column(column)
+ self.subscriptions_treeview.set_model(self.subscriptions_model)
+
+ def popuplate_what_needs_handled_events(
+ self, handled_events, email_subscriptions=None
+ ):
+ if email_subscriptions is None:
+ email_subscriptions = []
+ self.populate_subscriptions(handled_events, email_subscriptions)
+ self.populate_sounds(handled_events)
+
+ def populate_sounds(self, handled_events):
+ self.sounds_model.clear()
+ for event_name, event_doc in handled_events:
+ if event_name in self.config['custom_sounds']:
+ snd_path = self.config['custom_sounds'][event_name]
+ else:
+ snd_path = self.config['sound_path']
+
+ if snd_path:
+ self.sounds_model.set(
+ self.sounds_model.append(),
+ SND_EVENT,
+ event_name,
+ SND_EVENT_DOC,
+ event_doc,
+ SND_NAME,
+ basename(snd_path),
+ SND_PATH,
+ snd_path,
+ )
+
+ def populate_subscriptions(self, handled_events, email_subscriptions=None):
+ if email_subscriptions is None:
+ email_subscriptions = []
+ subscriptions_dict = self.config['subscriptions']
+ self.subscriptions_model.clear()
+ # self.handled_events = handled_events
+ for event_name, event_doc in handled_events:
+ self.subscriptions_model.set(
+ self.subscriptions_model.append(),
+ SUB_EVENT,
+ event_name,
+ SUB_EVENT_DOC,
+ event_doc,
+ SUB_NOT_EMAIL,
+ event_name in email_subscriptions,
+ SUB_NOT_POPUP,
+ event_name in subscriptions_dict['popup'],
+ SUB_NOT_BLINK,
+ event_name in subscriptions_dict['blink'],
+ SUB_NOT_SOUND,
+ event_name in subscriptions_dict['sound'],
+ )
+
+ def on_apply_prefs(self):
+ log.debug('applying prefs for Notifications')
+
+ current_popup_subscriptions = []
+ current_blink_subscriptions = []
+ current_sound_subscriptions = []
+ current_email_subscriptions = []
+ for event, doc, email, popup, blink, sound in self.subscriptions_model:
+ if email:
+ current_email_subscriptions.append(event)
+ if popup:
+ current_popup_subscriptions.append(event)
+ if blink:
+ current_blink_subscriptions.append(event)
+ if sound:
+ current_sound_subscriptions.append(event)
+
+ old_sound_file = self.config['sound_path']
+ new_sound_file = self.builder.get_object('sound_path').get_filename()
+ log.debug(
+ 'Old Default sound file: %s New one: %s', old_sound_file, new_sound_file
+ )
+ custom_sounds = {}
+ for event_name, event_doc, filename, filepath in self.sounds_model:
+ log.debug('Custom sound for event "%s": %s', event_name, filename)
+ if filepath == old_sound_file:
+ continue
+ custom_sounds[event_name] = filepath
+
+ self.config.config.update(
+ {
+ 'popup_enabled': self.builder.get_object('popup_enabled').get_active(),
+ 'blink_enabled': self.builder.get_object('blink_enabled').get_active(),
+ 'sound_enabled': self.builder.get_object('sound_enabled').get_active(),
+ 'sound_path': new_sound_file,
+ 'subscriptions': {
+ 'popup': current_popup_subscriptions,
+ 'blink': current_blink_subscriptions,
+ 'sound': current_sound_subscriptions,
+ },
+ 'custom_sounds': custom_sounds,
+ }
+ )
+ self.config.save()
+
+ core_config = {
+ 'smtp_enabled': self.builder.get_object('smtp_enabled').get_active(),
+ 'smtp_host': self.builder.get_object('smtp_host').get_text(),
+ 'smtp_port': self.builder.get_object('smtp_port').get_value(),
+ 'smtp_user': self.builder.get_object('smtp_user').get_text(),
+ 'smtp_pass': self.builder.get_object('smtp_pass').get_text(),
+ 'smtp_from': self.builder.get_object('smtp_from').get_text(),
+ 'smtp_tls': self.builder.get_object('smtp_tls').get_active(),
+ 'smtp_recipients': [
+ dest[0] for dest in self.recipients_model if dest[0] != 'USER@HOST'
+ ],
+ 'subscriptions': {'email': current_email_subscriptions},
+ }
+
+ client.notifications.set_config(core_config)
+ client.notifications.get_config().addCallback(self.cb_get_config)
+
+ def on_show_prefs(self):
+ client.notifications.get_config().addCallback(self.cb_get_config)
+
+ def cb_get_config(self, core_config):
+ """Callback for on show_prefs."""
+ self.builder.get_object('smtp_host').set_text(core_config['smtp_host'])
+ self.builder.get_object('smtp_port').set_value(core_config['smtp_port'])
+ self.builder.get_object('smtp_user').set_text(core_config['smtp_user'])
+ self.builder.get_object('smtp_pass').set_text(core_config['smtp_pass'])
+ self.builder.get_object('smtp_from').set_text(core_config['smtp_from'])
+ self.builder.get_object('smtp_tls').set_active(core_config['smtp_tls'])
+ self.recipients_model.clear()
+ for recipient in core_config['smtp_recipients']:
+ self.recipients_model.set(
+ self.recipients_model.append(),
+ RECIPIENT_FIELD,
+ recipient,
+ RECIPIENT_EDIT,
+ False,
+ )
+ self.builder.get_object('smtp_enabled').set_active(core_config['smtp_enabled'])
+ self.builder.get_object('sound_enabled').set_active(
+ self.config['sound_enabled']
+ )
+ self.builder.get_object('popup_enabled').set_active(
+ self.config['popup_enabled']
+ )
+ self.builder.get_object('blink_enabled').set_active(
+ self.config['blink_enabled']
+ )
+ if self.config['sound_path']:
+ sound_path = self.config['sound_path']
+ else:
+ sound_path = deluge.common.get_default_download_dir()
+ self.builder.get_object('sound_path').set_filename(sound_path)
+ # Force toggle
+ self.on_enabled_toggled(self.builder.get_object('smtp_enabled'))
+ self.on_sound_enabled_toggled(self.builder.get_object('sound_enabled'))
+
+ client.notifications.get_handled_events().addCallback(
+ self.popuplate_what_needs_handled_events,
+ core_config['subscriptions']['email'],
+ )
+
+ def on_sound_path_update_preview(self, filechooser):
+ client.notifications.get_handled_events().addCallback(self.populate_sounds)
+
+ def on_add_button_clicked(self, widget, treeview):
+ model = treeview.get_model()
+ model.set(model.append(), RECIPIENT_FIELD, 'USER@HOST', RECIPIENT_EDIT, True)
+
+ def on_delete_button_clicked(self, widget, treeview):
+ selection = treeview.get_selection()
+ model, selected_iter = selection.get_selected()
+ if selected_iter:
+ model.remove(selected_iter)
+
+ def on_cell_edited(self, cell, path_string, new_text, model):
+ str_iter = model.get_iter_from_string(path_string)
+ model.set(str_iter, RECIPIENT_FIELD, new_text)
+
+ def on_recipients_treeview_selection_changed(self, selection):
+ model, selected_connection_iter = selection.get_selected()
+ if selected_connection_iter:
+ self.builder.get_object('delete_button').set_property('sensitive', True)
+ else:
+ self.builder.get_object('delete_button').set_property('sensitive', False)
+
+ def on_subscriptions_treeview_selection_changed(self, selection):
+ model, selected_connection_iter = selection.get_selected()
+ if selected_connection_iter:
+ self.builder.get_object('delete_button').set_property('sensitive', True)
+ else:
+ self.builder.get_object('delete_button').set_property('sensitive', False)
+
+ def on_sounds_treeview_selection_changed(self, selection):
+ model, selected_iter = selection.get_selected()
+ if selected_iter:
+ self.builder.get_object('sounds_edit_button').set_property(
+ 'sensitive', True
+ )
+ path = model.get(selected_iter, SND_PATH)[0]
+ log.debug('Sound selection changed: %s', path)
+ if path != self.config['sound_path']:
+ self.builder.get_object('sounds_revert_button').set_property(
+ 'sensitive', True
+ )
+ else:
+ self.builder.get_object('sounds_revert_button').set_property(
+ 'sensitive', False
+ )
+ else:
+ self.builder.get_object('sounds_edit_button').set_property(
+ 'sensitive', False
+ )
+ self.builder.get_object('sounds_revert_button').set_property(
+ 'sensitive', False
+ )
+
+ def on_sounds_revert_button_clicked(self, widget):
+ log.debug('on_sounds_revert_button_clicked')
+ selection = self.sounds_treeview.get_selection()
+ model, selected_iter = selection.get_selected()
+ if selected_iter:
+ log.debug('on_sounds_revert_button_clicked: got iter')
+ model.set(
+ selected_iter,
+ SND_PATH,
+ self.config['sound_path'],
+ SND_NAME,
+ basename(self.config['sound_path']),
+ )
+
+ def on_sounds_edit_button_clicked(self, widget):
+ log.debug('on_sounds_edit_button_clicked')
+ selection = self.sounds_treeview.get_selection()
+ model, selected_iter = selection.get_selected()
+ if selected_iter:
+ path = model.get(selected_iter, SND_PATH)[0]
+ dialog = Gtk.FileChooserDialog(
+ title=_('Choose Sound File'),
+ buttons=(
+ Gtk.STOCK_CANCEL,
+ Gtk.ResponseType.CANCEL,
+ Gtk.STOCK_OPEN,
+ Gtk.ResponseType.OK,
+ ),
+ )
+ dialog.set_filename(path)
+
+ def update_model(response):
+ if response == Gtk.ResponseType.OK:
+ new_filename = dialog.get_filename()
+ dialog.destroy()
+ log.debug(new_filename)
+ model.set(
+ selected_iter,
+ SND_PATH,
+ new_filename,
+ SND_NAME,
+ basename(new_filename),
+ )
+
+ d = defer.maybeDeferred(dialog.run)
+ d.addCallback(update_model)
+
+ log.debug('dialog should have been shown')
+
+ def on_enabled_toggled(self, widget):
+ for widget_name in (
+ 'smtp_host',
+ 'smtp_port',
+ 'smtp_user',
+ 'smtp_pass',
+ 'smtp_pass',
+ 'smtp_tls',
+ 'smtp_from',
+ 'smtp_recipients',
+ ):
+ self.builder.get_object(widget_name).set_property(
+ 'sensitive', widget.get_active()
+ )
+
+ def on_sound_enabled_toggled(self, widget):
+ if widget.get_active():
+ self.builder.get_object('sound_path').set_property('sensitive', True)
+ self.builder.get_object('sounds_page').set_property('sensitive', True)
+ self.builder.get_object('sounds_page_label').set_property('sensitive', True)
+ else:
+ self.builder.get_object('sound_path').set_property('sensitive', False)
+ self.builder.get_object('sounds_page').set_property('sensitive', False)
+ self.builder.get_object('sounds_page_label').set_property(
+ 'sensitive', False
+ )
+
+ # for widget_name in ('sounds_path', 'sounds_page', 'sounds_page_label'):
+ # self.builder.get_object(widget_name).set_property('sensitive',
+ # widget.get_active())
+
+ def _on_email_col_toggled(self, cell, path):
+ self.subscriptions_model[path][SUB_NOT_EMAIL] = not self.subscriptions_model[
+ path
+ ][SUB_NOT_EMAIL]
+ return
+
+ def _on_popup_col_toggled(self, cell, path):
+ self.subscriptions_model[path][SUB_NOT_POPUP] = not self.subscriptions_model[
+ path
+ ][SUB_NOT_POPUP]
+ return
+
+ def _on_blink_col_toggled(self, cell, path):
+ self.subscriptions_model[path][SUB_NOT_BLINK] = not self.subscriptions_model[
+ path
+ ][SUB_NOT_BLINK]
+ return
+
+ def _on_sound_col_toggled(self, cell, path):
+ self.subscriptions_model[path][SUB_NOT_SOUND] = not self.subscriptions_model[
+ path
+ ][SUB_NOT_SOUND]
+ return
diff --git a/deluge/plugins/Notifications/deluge_notifications/test.py b/deluge/plugins/Notifications/deluge_notifications/test.py
new file mode 100644
index 0000000..013cdbf
--- /dev/null
+++ b/deluge/plugins/Notifications/deluge_notifications/test.py
@@ -0,0 +1,86 @@
+# vim: sw=4 ts=4 fenc=utf-8 et
+# ==============================================================================
+# Copyright © 2009-2010 UfSoft.org - Pedro Algarvio <pedro@algarvio.me>
+#
+# License: BSD - Please view the LICENSE file for additional information.
+# ==============================================================================
+
+import logging
+
+from twisted.internet import task
+
+from deluge import component
+from deluge.event import DelugeEvent
+
+log = logging.getLogger(__name__)
+
+
+class FooEvent(DelugeEvent):
+ """foo Event"""
+
+
+class CustomEvent(DelugeEvent):
+ """Just a custom event to test"""
+
+
+class TestEmailNotifications(component.Component):
+ def __init__(self, imp):
+ component.Component.__init__(self, self.__class__.__name__, 5)
+ self.__imp = imp
+ self.lc = task.LoopingCall(self.update)
+ self.n = 1
+ self.events = [FooEvent(), CustomEvent()]
+ self.events_classes = []
+
+ def enable(self):
+ log.debug('\n\nEnabling %s', self.__class__.__name__)
+ for event in self.events:
+ if self.__imp == 'core':
+ # component.get('CorePlugin.Notifications').register_custom_email_notification(
+ component.get('Notifications').register_custom_email_notification(
+ event.__class__.__name__, self.custom_email_message_provider
+ )
+ elif self.__imp == 'gtk':
+ notifications_component = component.get('Notifications')
+ notifications_component.register_custom_popup_notification(
+ event.__class__.__name__, self.custom_popup_message_provider
+ )
+ notifications_component.register_custom_blink_notification(
+ event.__class__.__name__, self.custom_blink_message_provider
+ )
+ notifications_component.register_custom_sound_notification(
+ event.__class__.__name__, self.custom_sound_message_provider
+ )
+
+ self.lc.start(60, False)
+
+ def disable(self):
+ log.debug('\n\nDisabling %s', self.__class__.__name__)
+ self.lc.stop()
+
+ def update(self):
+ if self.__imp == 'core':
+ log.debug('\n\nUpdating %s', self.__class__.__name__)
+ self.events.append(self.events.pop(0)) # Re-Queue
+ self.n += 1
+ component.get('EventManager').emit(self.events[0])
+
+ def custom_email_message_provider(self, *evt_args, **evt_kwargs):
+ log.debug('Running custom email message provider: %s %s', evt_args, evt_kwargs)
+ subject = f'{self.events[0].__class__.__name__} Email Subject: {self.n}'
+ message = f'{self.events[0].__class__.__name__} Email Message: {self.n}'
+ return subject, message
+
+ def custom_popup_message_provider(self, *evt_args, **evt_kwargs):
+ log.debug('Running custom popup message provider: %s %s', evt_args, evt_kwargs)
+ title = f'{self.events[0].__class__.__name__} Popup Title: {self.n}'
+ message = f'{self.events[0].__class__.__name__} Popup Message: {self.n}'
+ return title, message
+
+ def custom_blink_message_provider(self, *evt_args, **evt_kwargs):
+ log.debug('Running custom blink message provider: %s %s', evt_args, evt_kwargs)
+ return True
+
+ def custom_sound_message_provider(self, *evt_args, **evt_kwargs):
+ log.debug('Running custom sound message provider: %s %s', evt_args, evt_kwargs)
+ return ''
diff --git a/deluge/plugins/Notifications/deluge_notifications/webui.py b/deluge/plugins/Notifications/deluge_notifications/webui.py
new file mode 100644
index 0000000..bf3e829
--- /dev/null
+++ b/deluge/plugins/Notifications/deluge_notifications/webui.py
@@ -0,0 +1,31 @@
+#
+# Copyright (C) 2009-2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+ scripts = [get_resource('notifications.js')]
+ debug_scripts = scripts
+
+ def enable(self):
+ log.debug('Enabling Web UI notifications')
+
+ def disable(self):
+ log.debug('Disabling Web UI notifications')
diff --git a/deluge/plugins/Notifications/setup.py b/deluge/plugins/Notifications/setup.py
new file mode 100755
index 0000000..3d87423
--- /dev/null
+++ b/deluge/plugins/Notifications/setup.py
@@ -0,0 +1,53 @@
+#
+# Copyright (C) 2009-2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'Notifications'
+__author__ = 'Pedro Algarvio'
+__author_email__ = 'pedro@algarvio.me'
+__version__ = '0.4'
+__url__ = 'http://dev.deluge-torrent.org/'
+__license__ = 'GPLv3'
+__description__ = 'Plugin which provides notifications to Deluge.'
+__long_description__ = """
+Plugin which provides notifications to Deluge
+
+Email, Popup, Blink and Sound notifications
+
+The plugin also allows other plugins to make
+ use of itself for their own custom notifications
+"""
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__ if __long_description__ else __description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/__init__.py b/deluge/plugins/Scheduler/deluge_scheduler/__init__.py
new file mode 100644
index 0000000..87d1584
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/__init__.py
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/common.py b/deluge/plugins/Scheduler/deluge_scheduler/common.py
new file mode 100644
index 0000000..eb47f13
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/common.py
@@ -0,0 +1,20 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/core.py b/deluge/plugins/Scheduler/deluge_scheduler/core.py
new file mode 100644
index 0000000..10798ba
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/core.py
@@ -0,0 +1,167 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import time
+
+from twisted.internet import reactor
+
+import deluge.component as component
+import deluge.configmanager
+from deluge.core.rpcserver import export
+from deluge.event import DelugeEvent
+from deluge.plugins.pluginbase import CorePluginBase
+
+log = logging.getLogger(__name__)
+
+DEFAULT_PREFS = {
+ 'low_down': -1.0,
+ 'low_up': -1.0,
+ 'low_active': -1,
+ 'low_active_down': -1,
+ 'low_active_up': -1,
+ 'button_state': [[0] * 7 for dummy in range(24)],
+}
+
+STATES = {0: 'Green', 1: 'Yellow', 2: 'Red'}
+
+CONTROLLED_SETTINGS = [
+ 'max_download_speed',
+ 'max_upload_speed',
+ 'max_active_limit',
+ 'max_active_downloading',
+ 'max_active_seeding',
+]
+
+
+class SchedulerEvent(DelugeEvent):
+ """
+ Emitted when a schedule state changes.
+ """
+
+ def __init__(self, colour):
+ """
+ :param colour: str, the current scheduler state
+ """
+ self._args = [colour]
+
+
+class Core(CorePluginBase):
+ def enable(self):
+ # Create the defaults with the core config
+ core_config = component.get('Core').config
+ DEFAULT_PREFS['low_down'] = core_config['max_download_speed']
+ DEFAULT_PREFS['low_up'] = core_config['max_upload_speed']
+ DEFAULT_PREFS['low_active'] = core_config['max_active_limit']
+ DEFAULT_PREFS['low_active_down'] = core_config['max_active_downloading']
+ DEFAULT_PREFS['low_active_up'] = core_config['max_active_seeding']
+
+ self.config = deluge.configmanager.ConfigManager(
+ 'scheduler.conf', DEFAULT_PREFS
+ )
+
+ self.state = self.get_state()
+
+ # Apply the scheduling rules
+ self.do_schedule(False)
+
+ # Schedule the next do_schedule() call for on the next hour
+ now = time.localtime(time.time())
+ secs_to_next_hour = ((60 - now[4]) * 60) + (60 - now[5])
+ self.timer = reactor.callLater(secs_to_next_hour, self.do_schedule)
+
+ # Register for config changes so state isn't overridden
+ component.get('EventManager').register_event_handler(
+ 'ConfigValueChangedEvent', self.on_config_value_changed
+ )
+
+ def disable(self):
+ if self.timer.active():
+ self.timer.cancel()
+ component.get('EventManager').deregister_event_handler(
+ 'ConfigValueChangedEvent', self.on_config_value_changed
+ )
+ self.__apply_set_functions()
+
+ def update(self):
+ pass
+
+ def on_config_value_changed(self, key, value):
+ if key in CONTROLLED_SETTINGS:
+ self.do_schedule(False)
+
+ def __apply_set_functions(self):
+ """
+ Have the core apply it's bandwidth settings as specified in core.conf.
+ """
+ core_config = deluge.configmanager.ConfigManager('core.conf')
+ for setting in CONTROLLED_SETTINGS:
+ component.get('PreferencesManager').do_config_set_func(
+ setting, core_config[setting]
+ )
+ # Resume the session if necessary
+ component.get('Core').resume_session()
+
+ def do_schedule(self, timer=True):
+ """
+ This is where we apply schedule rules.
+ """
+
+ state = self.get_state()
+
+ if state == 'Green':
+ # This is Green (Normal) so we just make sure we've applied the
+ # global defaults
+ self.__apply_set_functions()
+ elif state == 'Yellow':
+ # This is Yellow (Slow), so use the settings provided from the user
+ settings = {
+ 'active_limit': self.config['low_active'],
+ 'active_downloads': self.config['low_active_down'],
+ 'active_seeds': self.config['low_active_up'],
+ 'download_rate_limit': int(self.config['low_down'] * 1024),
+ 'upload_rate_limit': int(self.config['low_up'] * 1024),
+ }
+ component.get('Core').apply_session_settings(settings)
+ # Resume the session if necessary
+ component.get('Core').resume_session()
+ elif state == 'Red':
+ # This is Red (Stop), so pause the libtorrent session
+ component.get('Core').pause_session()
+
+ if state != self.state:
+ # The state has changed since last update so we need to emit an event
+ self.state = state
+ component.get('EventManager').emit(SchedulerEvent(self.state))
+
+ if timer:
+ # Call this again in 1 hour
+ self.timer = reactor.callLater(3600, self.do_schedule)
+
+ @export()
+ def set_config(self, config):
+ """Sets the config dictionary."""
+ for key in config:
+ self.config[key] = config[key]
+ self.config.save()
+ self.do_schedule(False)
+
+ @export()
+ def get_config(self):
+ """Returns the config dictionary."""
+ return self.config.config
+
+ @export()
+ def get_state(self):
+ now = time.localtime(time.time())
+ level = self.config['button_state'][now[3]][now[6]]
+ return STATES[level]
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/data/green.svg b/deluge/plugins/Scheduler/deluge_scheduler/data/green.svg
new file mode 100644
index 0000000..ff3f5d6
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/data/green.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 16 16" width="16" height="16"><defs><clipPath id="_clipPath_Ng8EWXQF95Gs7ywflmaKe8f73244LGgx"><rect width="16" height="16"/></clipPath></defs><g clip-path="url(#_clipPath_Ng8EWXQF95Gs7ywflmaKe8f73244LGgx)"><clipPath id="_clipPath_fEKXMbJwavdXcwSIsEYpsxFyYERCnK2c"><rect x="0" y="0" width="16" height="16" transform="matrix(1,0,0,1,0,0)" fill="rgb(255,255,255)"/></clipPath><g clip-path="url(#_clipPath_fEKXMbJwavdXcwSIsEYpsxFyYERCnK2c)"><g><g><radialGradient id="_rgradient_9" fx="0.5" fy="0.5" cx="0.5" cy="0.5" r="0.5" gradientTransform="matrix(12,0,0,12,1.5,1.5)" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-opacity="1" style="stop-color:rgb(22,200,22)"/><stop offset="100%" stop-opacity="1" style="stop-color:rgb(22,200,22)"/></radialGradient><circle vector-effect="non-scaling-stroke" cx="7.5" cy="7.5" r="6" fill="url(#_rgradient_9)"/><path d=" M 7.5 0.013 C 3.37 0.013 0.013 3.37 0.013 7.5 C 0.013 11.63 3.37 14.987 7.5 14.987 C 11.63 14.987 14.987 11.63 14.987 7.5 C 14.987 3.37 11.63 0.013 7.5 0.013 Z M 7.5 1.987 C 10.549 1.987 13.013 4.451 13.013 7.5 C 13.013 10.549 10.549 13.013 7.5 13.013 C 4.451 13.013 1.987 10.549 1.987 7.5 C 1.987 4.451 4.451 1.987 7.5 1.987 Z " fill="rgb(18,155,0)"/><path d=" M 10.406 4 C 10.309 4.026 10.222 4.08 10.156 4.156 L 7.5 6.813 L 5.844 5.156 C 5.736 4.98 5.53 4.888 5.326 4.925 C 5.123 4.963 4.963 5.123 4.925 5.326 C 4.888 5.53 4.98 5.736 5.156 5.844 L 7.156 7.844 C 7.349 8.026 7.651 8.026 7.844 7.844 L 10.844 4.844 C 10.995 4.689 11.03 4.455 10.931 4.263 C 10.831 4.071 10.62 3.965 10.406 4 Z " fill="rgb(43,46,57)"/></g></g></g></g></svg>
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/data/red.svg b/deluge/plugins/Scheduler/deluge_scheduler/data/red.svg
new file mode 100644
index 0000000..ccb0822
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/data/red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 16 16" width="16" height="16"><defs><clipPath id="_clipPath_b9idtDkK5ON8Jka415AjKueNrp89rRRq"><rect width="16" height="16"/></clipPath></defs><g clip-path="url(#_clipPath_b9idtDkK5ON8Jka415AjKueNrp89rRRq)"><clipPath id="_clipPath_vxaOVU0QEXAkOxrpA9AlU4ChkMqnhw1h"><rect x="0" y="0" width="16" height="16" transform="matrix(1,0,0,1,0,0)" fill="rgb(255,255,255)"/></clipPath><g clip-path="url(#_clipPath_vxaOVU0QEXAkOxrpA9AlU4ChkMqnhw1h)"><g><g><g style="opacity:0.98;"><g opacity="0.98"><circle vector-effect="non-scaling-stroke" cx="7.5" cy="7.5" r="6" fill="rgb(230,56,31)"/></g></g><path d=" M 7.5 0.013 C 3.37 0.013 0.013 3.37 0.013 7.5 C 0.013 11.63 3.37 14.987 7.5 14.987 C 11.63 14.987 14.987 11.63 14.987 7.5 C 14.987 3.37 11.63 0.013 7.5 0.013 Z M 7.5 1.987 C 10.549 1.987 13.013 4.451 13.013 7.5 C 13.013 10.549 10.549 13.013 7.5 13.013 C 4.451 13.013 1.987 10.549 1.987 7.5 C 1.987 4.451 4.451 1.987 7.5 1.987 Z " fill="rgb(166,14,14)"/><path d=" M 10.406 4 C 10.309 4.026 10.222 4.08 10.156 4.156 L 7.5 6.813 L 5.844 5.156 C 5.736 4.98 5.53 4.888 5.326 4.925 C 5.123 4.963 4.963 5.123 4.925 5.326 C 4.888 5.53 4.98 5.736 5.156 5.844 L 7.156 7.844 C 7.349 8.026 7.651 8.026 7.844 7.844 L 10.844 4.844 C 10.995 4.689 11.03 4.455 10.931 4.263 C 10.831 4.071 10.62 3.965 10.406 4 Z " fill="rgb(43,46,57)"/></g></g></g></g></svg>
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/data/scheduler.js b/deluge/plugins/Scheduler/deluge_scheduler/data/scheduler.js
new file mode 100644
index 0000000..f59068c
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/data/scheduler.js
@@ -0,0 +1,621 @@
+/**
+ * scheduler.js
+ * The client-side javascript code for the Scheduler plugin.
+ *
+ * Copyright (C) samuel337 2011
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ *
+ */
+
+Ext.ns('Deluge.ux');
+
+Deluge.ux.ScheduleSelector = Ext.extend(Ext.form.FieldSet, {
+ title: _('Schedule'),
+ autoHeight: true,
+ style: 'margin-bottom: 0px; padding-bottom: 0px;',
+ border: false,
+
+ states: [
+ {
+ name: 'Normal',
+ backgroundColor: 'LightGreen',
+ borderColor: 'DarkGreen',
+ value: 0,
+ },
+ {
+ name: 'Throttled',
+ backgroundColor: 'Yellow',
+ borderColor: 'Gold',
+ value: 1,
+ },
+ {
+ name: 'Paused',
+ backgroundColor: 'OrangeRed',
+ borderColor: 'FireBrick',
+ value: 2,
+ },
+ ],
+ daysOfWeek: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+
+ initComponent: function () {
+ Deluge.ux.ScheduleSelector.superclass.initComponent.call(this);
+
+ // ExtJS' radiogroup implementation is very broken for styling.
+ /*this.stateBrush = this.add({
+ xtype: 'radiogroup',
+ fieldLabel: _('State Brush'),
+ name: 'current_state_brush',
+ submitValue: false,
+ items: [
+ { boxLabel: 'Normal', name: 'current_state_brush', inputValue: 0 },
+ { boxLabel: 'Throttled', name: 'current_state_brush', inputValue: 1, checked: true },
+ { boxLabel: 'Paused', name: 'current_state_brush', inputValue: 2 },
+ ]
+ });*/
+ },
+
+ onRender: function (ct, position) {
+ Deluge.ux.ScheduleSelector.superclass.onRender.call(this, ct, position);
+
+ var dom = this.body.dom;
+
+ function createEl(parent, type) {
+ var el = document.createElement(type);
+ parent.appendChild(el);
+ return el;
+ }
+
+ // create state brushes
+ // tack a random number to the end to avoid clashes
+ this.stateBrushName =
+ 'schedule-state-brush-' + Math.round(Math.random() * 10000);
+
+ var el1 = createEl(dom, 'div');
+
+ var el2 = createEl(el1, 'div');
+ this.stateBrush = el2;
+ el2.id = this.stateBrushName;
+
+ // for webkit
+ var floatAttr = 'float';
+ if (el2.style.float == undefined) {
+ // for firefox
+ if (el2.style.cssFloat != undefined) floatAttr = 'cssFloat';
+ // for IE
+ if (el2.style.styleFloat != undefined) floatAttr = 'styleFloat';
+ }
+ el2.style[floatAttr] = 'right';
+
+ for (var i = 0; i < this.states.length; i++) {
+ var el3 = createEl(el2, 'input');
+ el3.type = 'radio';
+ el3.value = this.states[i].value;
+ el3.name = this.stateBrushName;
+ el3.id = this.stateBrushName + '-' + this.states[i].name;
+
+ // isn't the first one
+ if (i > 0) el3.style.marginLeft = '7px';
+
+ // assume the first is the default state, so make the 2nd one the default brush
+ if (i == 1) el3.checked = true;
+
+ var el4 = createEl(el2, 'label');
+ el4.appendChild(document.createTextNode(this.states[i].name));
+ el4.htmlFor = el3.id;
+ el4.style.backgroundColor = this.states[i].backgroundColor;
+ el4.style.borderBottom = '2px solid ' + this.states[i].borderColor;
+ el4.style.padding = '2px 3px';
+ el4.style.marginLeft = '3px';
+ }
+
+ el1.appendChild(document.createTextNode('Select a state brush:'));
+
+ el1.style.marginBottom = '10px';
+
+ // keep the radio buttons separate from the time bars
+ createEl(dom, 'div').style.clear = 'both';
+
+ var table = createEl(dom, 'table');
+ table.cellSpacing = 0;
+
+ // cache access to cells for easier access later
+ this.scheduleCells = {};
+
+ Ext.each(
+ this.daysOfWeek,
+ function (day) {
+ var cells = [];
+ var row = createEl(table, 'tr');
+ var label = createEl(row, 'th');
+ label.setAttribute(
+ 'style',
+ 'font-weight: bold; padding-right: 5px;'
+ );
+ label.appendChild(document.createTextNode(day));
+ for (var hour = 0; hour < 24; hour++) {
+ var cell = createEl(row, 'td');
+
+ // assume the first state is the default state
+ cell.currentValue = cell.oldValue = this.states[0].value;
+ cell.day = day;
+ cell.hour = hour;
+
+ cell.width = '16px';
+ cell.height = '20px';
+
+ cell.style.border = '1px solid #999999';
+ // don't repeat borders in between cells
+ if (hour != 23)
+ // not the last cell
+ cell.style.borderRight = 'none';
+
+ this.updateCell(cell);
+
+ cells.push(cell);
+
+ cell = Ext.get(cell);
+ cell.on('click', this.onCellClick, this);
+ cell.on('mouseover', this.onCellMouseOver, this);
+ cell.on('mouseout', this.onCellMouseOut, this);
+ cell.on('mousedown', this.onCellMouseDown, this);
+ cell.on('mouseup', this.onCellMouseUp, this);
+ }
+
+ // insert gap row to provide visual separation
+ row = createEl(table, 'tr');
+ // blank cell to create gap
+ createEl(row, 'td').height = '3px';
+
+ this.scheduleCells[day] = cells;
+ },
+ this
+ );
+ },
+
+ updateCell: function (cell) {
+ // sanity check
+ if (cell.currentValue == undefined) return;
+
+ for (var i in this.states) {
+ var curState = this.states[i];
+ if (curState.value == cell.currentValue) {
+ cell.style.background = curState.backgroundColor;
+ break;
+ }
+ }
+ },
+
+ getCurrentBrushValue: function () {
+ var v = null;
+ var brushes = Ext.get(this.body.dom).findParent('form').elements[
+ this.stateBrushName
+ ];
+ Ext.each(brushes, function (b) {
+ if (b.checked) v = b.value;
+ });
+
+ return v;
+ },
+
+ onCellClick: function (event, cell) {
+ cell.oldValue = cell.currentValue;
+
+ this.dragAnchor = null;
+ },
+
+ onCellMouseDown: function (event, cell) {
+ this.dragAnchor = cell;
+ },
+
+ onCellMouseUp: function (event, cell) {
+ // if we're dragging...
+ if (this.dragAnchor) {
+ // set all those between here and the anchor to the new values
+ if (cell.hour > this.dragAnchor.hour)
+ this.confirmCells(cell.day, this.dragAnchor.hour, cell.hour);
+ else if (cell.hour < this.dragAnchor.hour)
+ this.confirmCells(cell.day, cell.hour, this.dragAnchor.hour);
+ else this.confirmCells(cell.day, cell.hour, cell.hour);
+
+ this.hideCellLeftTooltip();
+ this.hideCellRightTooltip();
+ this.dragAnchor = null;
+ }
+ },
+
+ onCellMouseOver: function (event, cell) {
+ // LEFT TOOL TIP
+ // if it isn't showing and we're dragging, show it.
+ // otherwise if dragging, leave it alone unless we're dragging to the left.
+ // if we're not dragging, show it.
+ var leftTooltipCell = null;
+ if (!this.dragAnchor) leftTooltipCell = cell;
+ else if (
+ (this.dragAnchor && this.isCellLeftTooltipHidden()) ||
+ (this.dragAnchor && this.dragAnchor.hour > cell.hour)
+ )
+ leftTooltipCell = this.dragAnchor;
+
+ if (leftTooltipCell) {
+ var hour = leftTooltipCell.hour;
+ var pm = false;
+
+ // convert to 12-hour time
+ if (hour >= 12) {
+ pm = true;
+ if (hour > 12) hour -= 12;
+ } else if (hour == 0) {
+ // change 0 hour to 12am
+ hour = 12;
+ }
+ this.showCellLeftTooltip(
+ hour + ' ' + (pm ? 'pm' : 'am'),
+ leftTooltipCell
+ );
+ }
+
+ // RIGHT TOOL TIP
+ var rightTooltipCell = null;
+ if (this.dragAnchor) {
+ if (this.dragAnchor.hour == cell.hour) this.hideCellRightTooltip();
+ else if (
+ this.dragAnchor.hour > cell.hour &&
+ this.isCellRightTooltipHidden()
+ )
+ rightTooltipCell = this.dragAnchor;
+ // cell.hour > this.dragAnchor.hour
+ else rightTooltipCell = cell;
+ }
+
+ if (rightTooltipCell) {
+ var hour = rightTooltipCell.hour;
+ var pm = false;
+
+ // convert to 12-hour time
+ if (hour >= 12) {
+ pm = true;
+ if (hour > 12) hour -= 12;
+ } else if (hour == 0) {
+ // change 0 hour to 12am
+ hour = 12;
+ }
+ this.showCellRightTooltip(
+ hour + ' ' + (pm ? 'pm' : 'am'),
+ rightTooltipCell
+ );
+ }
+
+ // preview colour change and
+ // revert state for all those on the outer side of the drag if dragging
+ if (this.dragAnchor) {
+ if (cell.day != this.dragAnchor.day) {
+ // dragged into another day. Abort! Abort!
+ Ext.each(
+ this.daysOfWeek,
+ function (day) {
+ this.revertCells(day, 0, 23);
+ },
+ this
+ );
+ this.dragAnchor = null;
+ this.hideCellLeftTooltip();
+ this.hideCellRightTooltip();
+ } else if (cell.hour > this.dragAnchor.hour) {
+ // dragging right
+ this.revertCells(cell.day, cell.hour + 1, 23);
+ this.previewCells(cell.day, this.dragAnchor.hour, cell.hour);
+ } else if (cell.hour < this.dragAnchor.hour) {
+ // dragging left
+ this.revertCells(cell.day, 0, cell.hour - 1);
+ this.previewCells(cell.day, cell.hour, this.dragAnchor.hour);
+ } else {
+ // back to anchor cell
+ // don't know if it is from right or left, so revert all except this
+ this.revertCells(cell.day, cell.hour + 1, 23);
+ this.revertCells(cell.day, 0, cell.hour - 1);
+ }
+ } else {
+ // not dragging, just preview this cell
+ this.previewCells(cell.day, cell.hour, cell.hour);
+ }
+ },
+
+ onCellMouseOut: function (event, cell) {
+ if (!this.dragAnchor) this.hideCellLeftTooltip();
+
+ // revert state. If new state has been set, old and new will be equal.
+ // if dragging, this will be handled by the next mouse over
+ if (this.dragAnchor == null && cell.oldValue != cell.currentValue) {
+ this.revertCells(cell.day, cell.hour, cell.hour);
+ }
+ },
+
+ previewCells: function (day, fromHour, toHour) {
+ var cells = this.scheduleCells[day];
+ var curBrushValue = this.getCurrentBrushValue();
+
+ if (toHour > cells.length) toHour = cells.length;
+
+ for (var i = fromHour; i <= toHour; i++) {
+ if (cells[i].currentValue != curBrushValue) {
+ cells[i].oldValue = cells[i].currentValue;
+ cells[i].currentValue = curBrushValue;
+ this.updateCell(cells[i]);
+ }
+ }
+ },
+
+ revertCells: function (day, fromHour, toHour) {
+ var cells = this.scheduleCells[day];
+
+ if (toHour > cells.length) toHour = cells.length;
+
+ for (var i = fromHour; i <= toHour; i++) {
+ cells[i].currentValue = cells[i].oldValue;
+ this.updateCell(cells[i]);
+ }
+ },
+
+ confirmCells: function (day, fromHour, toHour) {
+ var cells = this.scheduleCells[day];
+
+ if (toHour > cells.length) toHour = cells.length;
+
+ for (var i = fromHour; i <= toHour; i++) {
+ if (cells[i].currentValue != cells[i].oldValue) {
+ cells[i].oldValue = cells[i].currentValue;
+ }
+ }
+ },
+
+ showCellLeftTooltip: function (text, cell) {
+ var tooltip = this.cellLeftTooltip;
+
+ if (!tooltip) {
+ // no cached left tooltip exists, create one
+ tooltip = document.createElement('div');
+ this.cellLeftTooltip = tooltip;
+ this.body.dom.appendChild(tooltip);
+ tooltip.style.position = 'absolute';
+ tooltip.style.backgroundColor = '#F2F2F2';
+ tooltip.style.border = '1px solid #333333';
+ tooltip.style.padding = '1px 3px';
+ tooltip.style.opacity = 0.8;
+ }
+
+ // remove all existing children
+ while (tooltip.childNodes.length > 0) {
+ tooltip.removeChild(tooltip.firstChild);
+ }
+ // add the requested text
+ tooltip.appendChild(document.createTextNode(text));
+
+ // place the tooltip
+ Ext.get(tooltip).alignTo(cell, 'br-tr');
+
+ // make it visible
+ tooltip.style.visibility = 'visible';
+ },
+
+ hideCellLeftTooltip: function () {
+ if (this.cellLeftTooltip) {
+ this.cellLeftTooltip.style.visibility = 'hidden';
+ }
+ },
+
+ isCellLeftTooltipHidden: function () {
+ if (this.cellLeftTooltip)
+ return this.cellLeftTooltip.style.visibility == 'hidden';
+ else return true;
+ },
+
+ showCellRightTooltip: function (text, cell) {
+ var tooltip = this.cellRightTooltip;
+
+ if (!tooltip) {
+ // no cached left tooltip exists, create one
+ tooltip = document.createElement('div');
+ this.cellRightTooltip = tooltip;
+ this.body.dom.appendChild(tooltip);
+ tooltip.style.position = 'absolute';
+ tooltip.style.backgroundColor = '#F2F2F2';
+ tooltip.style.border = '1px solid #333333';
+ tooltip.style.padding = '1px 3px';
+ tooltip.style.opacity = 0.8;
+ }
+
+ // remove all existing children
+ while (tooltip.childNodes.length > 0) {
+ tooltip.removeChild(tooltip.firstChild);
+ }
+ // add the requested text
+ tooltip.appendChild(document.createTextNode(text));
+
+ // place the tooltip
+ Ext.get(tooltip).alignTo(cell, 'bl-tl');
+
+ // make it visible
+ tooltip.style.visibility = 'visible';
+ },
+
+ hideCellRightTooltip: function () {
+ if (this.cellRightTooltip) {
+ this.cellRightTooltip.style.visibility = 'hidden';
+ }
+ },
+
+ isCellRightTooltipHidden: function () {
+ if (this.cellRightTooltip)
+ return this.cellRightTooltip.style.visibility == 'hidden';
+ else return true;
+ },
+
+ getConfig: function () {
+ var config = [];
+
+ for (var i = 0; i < 24; i++) {
+ var hourConfig = [0, 0, 0, 0, 0, 0, 0];
+
+ for (var j = 0; j < this.daysOfWeek.length; j++) {
+ hourConfig[j] = parseInt(
+ this.scheduleCells[this.daysOfWeek[j]][i].currentValue
+ );
+ }
+
+ config.push(hourConfig);
+ }
+
+ return config;
+ },
+
+ setConfig: function (config) {
+ for (var i = 0; i < 24; i++) {
+ var hourConfig = config[i];
+
+ for (var j = 0; j < this.daysOfWeek.length; j++) {
+ if (this.scheduleCells == undefined) {
+ var cell = hourConfig[j];
+ } else {
+ var cell = this.scheduleCells[this.daysOfWeek[j]][i];
+ }
+ cell.currentValue = cell.oldValue = hourConfig[j];
+ this.updateCell(cell);
+ }
+ }
+ },
+});
+
+Ext.ns('Deluge.ux.preferences');
+
+Deluge.ux.preferences.SchedulerPage = Ext.extend(Ext.Panel, {
+ border: false,
+ title: _('Scheduler'),
+ header: false,
+ layout: 'fit',
+
+ initComponent: function () {
+ Deluge.ux.preferences.SchedulerPage.superclass.initComponent.call(this);
+
+ this.form = this.add({
+ xtype: 'form',
+ layout: 'form',
+ border: false,
+ autoHeight: true,
+ });
+
+ this.schedule = this.form.add(new Deluge.ux.ScheduleSelector());
+
+ this.slowSettings = this.form.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Throttled Settings'),
+ autoHeight: true,
+ defaultType: 'spinnerfield',
+ defaults: {
+ minValue: -1,
+ maxValue: 99999,
+ },
+ style: 'margin-top: 5px; margin-bottom: 0px; padding-bottom: 0px;',
+ labelWidth: 200,
+ });
+
+ this.downloadLimit = this.slowSettings.add({
+ fieldLabel: _('Maximum Download Speed (KiB/s)'),
+ name: 'download_limit',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ });
+ this.uploadLimit = this.slowSettings.add({
+ fieldLabel: _('Maximum Upload Speed (KiB/s)'),
+ name: 'upload_limit',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ });
+ this.activeTorrents = this.slowSettings.add({
+ fieldLabel: _('Active Torrents'),
+ name: 'active_torrents',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ });
+ this.activeDownloading = this.slowSettings.add({
+ fieldLabel: _('Active Downloading'),
+ name: 'active_downloading',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ });
+ this.activeSeeding = this.slowSettings.add({
+ fieldLabel: _('Active Seeding'),
+ name: 'active_seeding',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ });
+
+ this.on('show', this.updateConfig, this);
+ },
+
+ onRender: function (ct, position) {
+ Deluge.ux.preferences.SchedulerPage.superclass.onRender.call(
+ this,
+ ct,
+ position
+ );
+ this.form.layout = new Ext.layout.FormLayout();
+ this.form.layout.setContainer(this);
+ this.form.doLayout();
+ },
+
+ onApply: function () {
+ // build settings object
+ var config = {};
+
+ config['button_state'] = this.schedule.getConfig();
+ config['low_down'] = this.downloadLimit.getValue();
+ config['low_up'] = this.uploadLimit.getValue();
+ config['low_active'] = this.activeTorrents.getValue();
+ config['low_active_down'] = this.activeDownloading.getValue();
+ config['low_active_up'] = this.activeSeeding.getValue();
+
+ deluge.client.scheduler.set_config(config);
+ },
+
+ onOk: function () {
+ this.onApply();
+ },
+
+ updateConfig: function () {
+ deluge.client.scheduler.get_config({
+ success: function (config) {
+ this.schedule.setConfig(config['button_state']);
+ this.downloadLimit.setValue(config['low_down']);
+ this.uploadLimit.setValue(config['low_up']);
+ this.activeTorrents.setValue(config['low_active']);
+ this.activeDownloading.setValue(config['low_active_down']);
+ this.activeSeeding.setValue(config['low_active_up']);
+ },
+ scope: this,
+ });
+ },
+});
+
+Deluge.plugins.SchedulerPlugin = Ext.extend(Deluge.Plugin, {
+ name: 'Scheduler',
+
+ onDisable: function () {
+ deluge.preferences.removePage(this.prefsPage);
+ },
+
+ onEnable: function () {
+ this.prefsPage = deluge.preferences.addPage(
+ new Deluge.ux.preferences.SchedulerPage()
+ );
+ },
+});
+Deluge.registerPlugin('Scheduler', Deluge.plugins.SchedulerPlugin);
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/data/yellow.svg b/deluge/plugins/Scheduler/deluge_scheduler/data/yellow.svg
new file mode 100644
index 0000000..8881a8c
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/data/yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 16 16" width="16" height="16"><defs><clipPath id="_clipPath_FTEVJ02JqQbaAkGq0zxCClZ8ovSf28LF"><rect width="16" height="16"/></clipPath></defs><g clip-path="url(#_clipPath_FTEVJ02JqQbaAkGq0zxCClZ8ovSf28LF)"><clipPath id="_clipPath_kMUc2qeZPnpfemB5VN1mID2bTbctQK6V"><rect x="0" y="0" width="16" height="16" transform="matrix(1,0,0,1,0,0)" fill="rgb(255,255,255)"/></clipPath><g clip-path="url(#_clipPath_kMUc2qeZPnpfemB5VN1mID2bTbctQK6V)"><g><clipPath id="_clipPath_O3gUc8WX8CfJdh8CMbdOfLtRtmBkIQPk"><rect x="0" y="0" width="16" height="16" transform="matrix(1,0,0,1,0,0)" fill="rgb(255,255,255)"/></clipPath><g clip-path="url(#_clipPath_O3gUc8WX8CfJdh8CMbdOfLtRtmBkIQPk)"><g><g><g><path d=" M 7.5 0.013 C 3.37 0.013 0.013 3.37 0.013 7.5 C 0.013 11.63 3.37 14.987 7.5 14.987 C 11.63 14.987 14.987 11.63 14.987 7.5 C 14.987 3.37 11.63 0.013 7.5 0.013 Z M 7.5 1.987 C 10.549 1.987 13.013 4.451 13.013 7.5 C 13.013 10.549 10.549 13.013 7.5 13.013 C 4.451 13.013 1.987 10.549 1.987 7.5 C 1.987 4.451 4.451 1.987 7.5 1.987 Z " fill="rgb(180,180,0)"/><g style="opacity:0.99;"><g style="opacity:0.99;"><g opacity="0.99"><circle vector-effect="non-scaling-stroke" cx="7.5" cy="7.5" r="6" fill="rgb(220,220,0)"/></g></g></g><path d=" M 10.406 4 C 10.309 4.026 10.222 4.08 10.156 4.156 L 7.5 6.813 L 5.844 5.156 C 5.736 4.98 5.53 4.888 5.326 4.925 C 5.123 4.963 4.963 5.123 4.925 5.326 C 4.888 5.53 4.98 5.736 5.156 5.844 L 7.156 7.844 C 7.349 8.026 7.651 8.026 7.844 7.844 L 10.844 4.844 C 10.995 4.689 11.03 4.455 10.931 4.263 C 10.831 4.071 10.62 3.965 10.406 4 Z " fill="rgb(43,46,57)"/></g></g></g></g></g></g></g></svg>
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/gtkui.py b/deluge/plugins/Scheduler/deluge_scheduler/gtkui.py
new file mode 100644
index 0000000..16222c8
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/gtkui.py
@@ -0,0 +1,356 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from gi.repository import Gdk, Gtk
+
+import deluge.component as component
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+DAYS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+
+
+class SchedulerSelectWidget(Gtk.DrawingArea):
+ def __init__(self, hover):
+ super().__init__()
+ self.set_events(
+ Gdk.EventMask.BUTTON_PRESS_MASK
+ | Gdk.EventMask.BUTTON_RELEASE_MASK
+ | Gdk.EventMask.POINTER_MOTION_MASK
+ | Gdk.EventMask.LEAVE_NOTIFY_MASK
+ )
+
+ self.connect('draw', self.draw)
+ self.connect('button_press_event', self.mouse_down)
+ self.connect('button_release_event', self.mouse_up)
+ self.connect('motion_notify_event', self.mouse_hover)
+ self.connect('leave_notify_event', self.mouse_leave)
+
+ self.colors = [
+ [115 / 255, 210 / 255, 22 / 255],
+ [237 / 255, 212 / 255, 0 / 255],
+ [204 / 255, 0 / 255, 0 / 255],
+ ]
+ self.button_state = [[0] * 7 for dummy in range(24)]
+
+ self.start_point = [0, 0]
+ self.hover_point = [-1, -1]
+ self.hover_label = hover
+ self.hover_days = DAYS
+ self.mouse_press = False
+ self.set_size_request(350, 150)
+
+ def set_button_state(self, state):
+ self.button_state = []
+ for s in state:
+ self.button_state.append(list(s))
+ log.debug(self.button_state)
+
+ # redraw the whole thing
+ def draw(self, widget, context):
+ width = widget.get_allocated_width()
+ height = widget.get_allocated_height()
+ context.rectangle(0, 0, width, height)
+ context.clip()
+
+ for y in range(7):
+ for x in range(24):
+ context.set_source_rgba(
+ self.colors[self.button_state[x][y]][0],
+ self.colors[self.button_state[x][y]][1],
+ self.colors[self.button_state[x][y]][2],
+ 0.5,
+ )
+ context.rectangle(
+ width * (6 * x / 145 + 1 / 145),
+ height * (6 * y / 43 + 1 / 43),
+ 6 * width / 145,
+ 5 * height / 43,
+ )
+ context.fill_preserve()
+ context.set_source_rgba(0, 0, 0, 0.7)
+ context.set_line_width(1)
+ context.stroke()
+
+ # coordinates --> which box
+ def get_point(self, event):
+ width = self.get_allocated_width()
+ height = self.get_allocated_height()
+ x = int((event.x - width * 0.5 / 145) / (6 * width / 145))
+ y = int((event.y - height * 0.5 / 43) / (6 * height / 43))
+
+ if x > 23:
+ x = 23
+ elif x < 0:
+ x = 0
+ if y > 6:
+ y = 6
+ elif y < 0:
+ y = 0
+
+ return [x, y]
+
+ # mouse down
+ def mouse_down(self, widget, event):
+ self.mouse_press = True
+ self.start_point = self.get_point(event)
+
+ # if the same box -> change it
+ def mouse_up(self, widget, event):
+ self.mouse_press = False
+ end_point = self.get_point(event)
+
+ # change color on mouseclick depending on the button
+ if end_point[0] is self.start_point[0] and end_point[1] is self.start_point[1]:
+ if event.button == 1:
+ self.button_state[end_point[0]][end_point[1]] += 1
+ if self.button_state[end_point[0]][end_point[1]] > 2:
+ self.button_state[end_point[0]][end_point[1]] = 0
+ elif event.button == 3:
+ self.button_state[end_point[0]][end_point[1]] -= 1
+ if self.button_state[end_point[0]][end_point[1]] < 0:
+ self.button_state[end_point[0]][end_point[1]] = 2
+ self.queue_draw()
+
+ # if box changed and mouse is pressed draw all boxes from start point to end point
+ # set hover text etc..
+ def mouse_hover(self, widget, event):
+ if self.get_point(event) != self.hover_point:
+ self.hover_point = self.get_point(event)
+
+ self.hover_label.set_text(
+ self.hover_days[self.hover_point[1]]
+ + ' '
+ + str(self.hover_point[0])
+ + ':00 - '
+ + str(self.hover_point[0])
+ + ':59'
+ )
+
+ if self.mouse_press:
+ points = [
+ [self.hover_point[0], self.start_point[0]],
+ [self.hover_point[1], self.start_point[1]],
+ ]
+
+ for x in range(min(points[0]), max(points[0]) + 1):
+ for y in range(min(points[1]), max(points[1]) + 1):
+ self.button_state[x][y] = self.button_state[
+ self.start_point[0]
+ ][self.start_point[1]]
+
+ self.queue_draw()
+
+ # clear hover text on mouse leave
+ def mouse_leave(self, widget, event):
+ self.hover_label.set_text('')
+ self.hover_point = [-1, -1]
+
+
+class GtkUI(Gtk3PluginBase):
+ def enable(self):
+ self.create_prefs_page()
+
+ component.get('PluginManager').register_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').register_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+ self.statusbar = component.get('StatusBar')
+ self.status_item = self.statusbar.add_item(
+ image=get_resource('green.svg'),
+ text='',
+ callback=self.on_status_item_clicked,
+ tooltip='Scheduler',
+ )
+
+ def on_state_deferred(state):
+ self.state = state
+ self.on_scheduler_event(state)
+
+ self.on_show_prefs()
+
+ client.scheduler.get_state().addCallback(on_state_deferred)
+ client.register_event_handler('SchedulerEvent', self.on_scheduler_event)
+
+ def disable(self):
+ component.get('Preferences').remove_page(_('Scheduler'))
+ # Reset statusbar dict.
+ self.statusbar.config_value_changed_dict[
+ 'max_download_speed'
+ ] = self.statusbar._on_max_download_speed
+ self.statusbar.config_value_changed_dict[
+ 'max_upload_speed'
+ ] = self.statusbar._on_max_upload_speed
+ # Remove statusbar item.
+ self.statusbar.remove_item(self.status_item)
+ del self.status_item
+
+ component.get('PluginManager').deregister_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').deregister_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+
+ def on_apply_prefs(self):
+ log.debug('applying prefs for Scheduler')
+ config = {}
+ config['low_down'] = self.spin_download.get_value()
+ config['low_up'] = self.spin_upload.get_value()
+ config['low_active'] = self.spin_active.get_value_as_int()
+ config['low_active_down'] = self.spin_active_down.get_value_as_int()
+ config['low_active_up'] = self.spin_active_up.get_value_as_int()
+ config['button_state'] = self.scheduler_select.button_state
+ client.scheduler.set_config(config)
+
+ def on_show_prefs(self):
+ def on_get_config(config):
+ log.debug('config: %s', config)
+ self.scheduler_select.set_button_state(config['button_state'])
+ self.spin_download.set_value(config['low_down'])
+ self.spin_upload.set_value(config['low_up'])
+ self.spin_active.set_value(config['low_active'])
+ self.spin_active_down.set_value(config['low_active_down'])
+ self.spin_active_up.set_value(config['low_active_up'])
+
+ client.scheduler.get_config().addCallback(on_get_config)
+
+ def on_scheduler_event(self, state):
+ self.state = state
+ self.status_item.set_image_from_file(get_resource(self.state.lower() + '.svg'))
+ if self.state == 'Yellow':
+ # Prevent func calls in Statusbar if the config changes.
+ self.statusbar.config_value_changed_dict.pop('max_download_speed', None)
+ self.statusbar.config_value_changed_dict.pop('max_upload_speed', None)
+ try:
+ self.statusbar._on_max_download_speed(self.spin_download.get_value())
+ self.statusbar._on_max_upload_speed(self.spin_upload.get_value())
+ except AttributeError:
+ # Skip error due to Plugin being enabled before statusbar items created on startup.
+ pass
+ else:
+ self.statusbar.config_value_changed_dict[
+ 'max_download_speed'
+ ] = self.statusbar._on_max_download_speed
+ self.statusbar.config_value_changed_dict[
+ 'max_upload_speed'
+ ] = self.statusbar._on_max_upload_speed
+
+ def update_config_values(config):
+ try:
+ self.statusbar._on_max_download_speed(config['max_download_speed'])
+ self.statusbar._on_max_upload_speed(config['max_upload_speed'])
+ except AttributeError:
+ # Skip error due to Plugin being enabled before statusbar items created on startup.
+ pass
+
+ client.core.get_config_values(
+ ['max_download_speed', 'max_upload_speed']
+ ).addCallback(update_config_values)
+
+ def on_status_item_clicked(self, widget, event):
+ component.get('Preferences').show('Scheduler')
+
+ # Configuration dialog
+ def create_prefs_page(self):
+ # Select Widget
+ hover = Gtk.Label()
+ self.scheduler_select = SchedulerSelectWidget(hover)
+
+ vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, spacing=5)
+ hbox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing=5)
+ vbox_days = Gtk.Box.new(Gtk.Orientation.VERTICAL, spacing=0)
+ for day in DAYS:
+ vbox_days.pack_start(Gtk.Label(day, xalign=0), True, False, 0)
+ hbox.pack_start(vbox_days, False, False, 15)
+ hbox.pack_start(self.scheduler_select, True, True, 0)
+ frame = Gtk.Frame()
+ label = Gtk.Label()
+ label.set_markup(_('<b>Schedule</b>'))
+ frame.set_label_widget(label)
+ frame.set_shadow_type(Gtk.ShadowType.NONE)
+ frame.set_margin_left(15)
+ frame.add(hbox)
+
+ vbox.pack_start(frame, False, False, 0)
+ vbox.pack_start(hover, False, False, 0)
+
+ table = Gtk.Table(5, 2)
+ table.set_margin_left(15)
+
+ label = Gtk.Label(_('Download Limit:'))
+ label.set_alignment(0.0, 0.6)
+ table.attach_defaults(label, 0, 1, 0, 1)
+ self.spin_download = Gtk.SpinButton()
+ self.spin_download.set_numeric(True)
+ self.spin_download.set_range(-1.0, 99999.0)
+ self.spin_download.set_increments(1, 10)
+ table.attach_defaults(self.spin_download, 1, 2, 0, 1)
+
+ label = Gtk.Label(_('Upload Limit:'))
+ label.set_alignment(0.0, 0.6)
+ table.attach_defaults(label, 0, 1, 1, 2)
+ self.spin_upload = Gtk.SpinButton()
+ self.spin_upload.set_numeric(True)
+ self.spin_upload.set_range(-1.0, 99999.0)
+ self.spin_upload.set_increments(1, 10)
+ table.attach_defaults(self.spin_upload, 1, 2, 1, 2)
+
+ label = Gtk.Label(_('Active Torrents:'))
+ label.set_alignment(0.0, 0.6)
+ table.attach_defaults(label, 0, 1, 2, 3)
+ self.spin_active = Gtk.SpinButton()
+ self.spin_active.set_numeric(True)
+ self.spin_active.set_range(-1, 9999)
+ self.spin_active.set_increments(1, 10)
+ table.attach_defaults(self.spin_active, 1, 2, 2, 3)
+
+ label = Gtk.Label(_('Active Downloading:'))
+ label.set_alignment(0.0, 0.6)
+ table.attach_defaults(label, 0, 1, 3, 4)
+ self.spin_active_down = Gtk.SpinButton()
+ self.spin_active_down.set_numeric(True)
+ self.spin_active_down.set_range(-1, 9999)
+ self.spin_active_down.set_increments(1, 10)
+ table.attach_defaults(self.spin_active_down, 1, 2, 3, 4)
+
+ label = Gtk.Label(_('Active Seeding:'))
+ label.set_alignment(0.0, 0.6)
+ table.attach_defaults(label, 0, 1, 4, 5)
+ self.spin_active_up = Gtk.SpinButton()
+ self.spin_active_up.set_numeric(True)
+ self.spin_active_up.set_range(-1, 9999)
+ self.spin_active_up.set_increments(1, 10)
+ table.attach_defaults(self.spin_active_up, 1, 2, 4, 5)
+
+ eventbox = Gtk.EventBox()
+ eventbox.add(table)
+ frame = Gtk.Frame()
+ label = Gtk.Label()
+ label.set_markup(_('<b>Slow Settings</b>'))
+ label.modify_bg(Gtk.StateFlags.NORMAL, Gdk.color_parse('#EDD400'))
+ frame.set_label_widget(label)
+ frame.set_margin_left(15)
+ frame.set_border_width(2)
+ frame.add(eventbox)
+ vbox.pack_start(frame, False, False, 0)
+
+ vbox.show_all()
+ component.get('Preferences').add_page(_('Scheduler'), vbox)
diff --git a/deluge/plugins/Scheduler/deluge_scheduler/webui.py b/deluge/plugins/Scheduler/deluge_scheduler/webui.py
new file mode 100644
index 0000000..e417916
--- /dev/null
+++ b/deluge/plugins/Scheduler/deluge_scheduler/webui.py
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+ scripts = [get_resource('scheduler.js')]
+ debug_scripts = scripts
diff --git a/deluge/plugins/Scheduler/setup.py b/deluge/plugins/Scheduler/setup.py
new file mode 100644
index 0000000..3ac181d
--- /dev/null
+++ b/deluge/plugins/Scheduler/setup.py
@@ -0,0 +1,45 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'Scheduler'
+__author__ = 'Andrew Resch'
+__author_email__ = 'andrewresch@gmail.com'
+__version__ = '0.3'
+__url__ = 'http://deluge-torrent.org'
+__license__ = 'GPLv3'
+__description__ = 'Schedule limits on a per-hour per-day basis.'
+__long_description__ = """"""
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__ if __long_description__ else __description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/Stats/create_dev_link.sh b/deluge/plugins/Stats/create_dev_link.sh
new file mode 100755
index 0000000..5e04057
--- /dev/null
+++ b/deluge/plugins/Stats/create_dev_link.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+BASEDIR=$(cd `dirname $0` && pwd)
+CONFIG_DIR=$( test -z $1 && echo "" || echo "$1")
+[ -d "$CONFIG_DIR/plugins" ] || echo "Config dir "$CONFIG_DIR" is either not a directory or is not a proper deluge config directory. Exiting"
+[ -d "$CONFIG_DIR/plugins" ] || exit 1
+cd $BASEDIR
+test -d $BASEDIR/temp || mkdir $BASEDIR/temp
+export PYTHONPATH=$BASEDIR/temp
+python setup.py build develop --install-dir $BASEDIR/temp
+cp $BASEDIR/temp/*.egg-link $CONFIG_DIR/plugins
+rm -fr $BASEDIR/temp
diff --git a/deluge/plugins/Stats/deluge_stats/__init__.py b/deluge/plugins/Stats/deluge_stats/__init__.py
new file mode 100644
index 0000000..ca7b0bb
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/__init__.py
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/Stats/deluge_stats/common.py b/deluge/plugins/Stats/deluge_stats/common.py
new file mode 100644
index 0000000..eb47f13
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/common.py
@@ -0,0 +1,20 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
diff --git a/deluge/plugins/Stats/deluge_stats/core.py b/deluge/plugins/Stats/deluge_stats/core.py
new file mode 100644
index 0000000..1be51e6
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/core.py
@@ -0,0 +1,218 @@
+#
+# Copyright (C) 2009 Ian Martin <ianmartin@cantab.net>
+# Copyright (C) 2008 Damien Churchill <damoxc@gmail.com>
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007 Marcos Mobley <markybob@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import time
+
+from twisted.internet.task import LoopingCall
+
+from deluge import component, configmanager
+from deluge.core.rpcserver import export
+from deluge.plugins.pluginbase import CorePluginBase
+
+DEFAULT_PREFS = {
+ 'test': 'NiNiNi',
+ 'update_interval': 1, # 2 seconds.
+ 'length': 150, # 2 seconds * 150 --> 5 minutes.
+}
+
+DEFAULT_TOTALS = {
+ 'total_upload': 0,
+ 'total_download': 0,
+ 'total_payload_upload': 0,
+ 'total_payload_download': 0,
+ 'stats': {},
+}
+
+log = logging.getLogger(__name__)
+
+
+def get_key(config, key):
+ try:
+ return config[key]
+ except KeyError:
+ return None
+
+
+def mean(items):
+ try:
+ return sum(items) // len(items)
+ except Exception:
+ return 0
+
+
+class Core(CorePluginBase):
+ totals = {} # class var to catch only updating this once per session in enable.
+
+ def enable(self):
+ log.debug('Stats plugin enabled')
+ self.core = component.get('Core')
+ self.stats = {}
+ self.count = {}
+ self.intervals = [1, 5, 30, 300]
+
+ self.last_update = {}
+ t = time.time()
+ for i in self.intervals:
+ self.stats[i] = {}
+ self.last_update[i] = t
+ self.count[i] = 0
+
+ self.config = configmanager.ConfigManager('stats.conf', DEFAULT_PREFS)
+ self.saved_stats = configmanager.ConfigManager('stats.totals', DEFAULT_TOTALS)
+ if self.totals == {}:
+ self.totals.update(self.saved_stats.config)
+
+ self.length = self.config['length']
+
+ # self.stats = get_key(self.saved_stats, 'stats') or {}
+
+ # keys needed from core.get_session_status
+ self.stat_keys = [
+ 'upload_rate',
+ 'download_rate',
+ 'dht.dht_nodes',
+ 'dht.dht_node_cache',
+ 'dht.dht_torrents',
+ 'peer.num_peers_connected',
+ 'peer.num_peers_half_open',
+ ]
+ # collected statistics and functions to get them
+ self.stat_getters = {
+ 'upload_rate': lambda s: s['upload_rate'],
+ 'download_rate': lambda s: s['download_rate'],
+ 'dht_nodes': lambda s: s['dht.dht_nodes'],
+ 'dht_cache_nodes': lambda s: s['dht.dht_node_cache'],
+ 'dht_torrents': lambda s: s['dht.dht_torrents'],
+ 'num_peers': lambda s: s['peer.num_peers_connected'],
+ 'num_connections': lambda s: s['peer.num_peers_connected']
+ + s['peer.num_peers_half_open'],
+ }
+
+ # initialize stats object
+ for key in self.stat_getters.keys():
+ for i in self.intervals:
+ if key not in self.stats[i]:
+ self.stats[i][key] = []
+
+ self.update_stats()
+
+ self.update_timer = LoopingCall(self.update_stats)
+ self.update_timer.start(self.config['update_interval'])
+
+ self.save_timer = LoopingCall(self.save_stats)
+ self.save_timer.start(60)
+
+ def disable(self):
+ self.update_timer.stop() if self.update_timer.running else None
+ self.save_timer.stop() if self.save_timer.running else None
+ self.save_stats()
+
+ def update_stats(self):
+ # Get all possible stats!
+ stats = {}
+ raw_stats = self.core.get_session_status(self.stat_keys)
+ for name, fn in self.stat_getters.items():
+ stats[name] = fn(raw_stats)
+
+ # status = self.core.session.status()
+ # for stat in dir(status):
+ # if not stat.startswith('_') and stat not in stats:
+ # stats[stat] = getattr(status, stat, None)
+
+ update_time = time.time()
+ self.last_update[1] = update_time
+
+ # extract the ones we are interested in
+ # adding them to the 1s array
+ for stat, stat_list in self.stats[1].items():
+ if stat in stats:
+ stat_list.insert(0, int(stats[stat]))
+ else:
+ stat_list.insert(0, 0)
+ if len(stat_list) > self.length:
+ stat_list.pop()
+
+ def update_interval(interval, base, multiplier):
+ self.count[interval] = self.count[interval] + 1
+ if self.count[interval] >= interval:
+ self.last_update[interval] = update_time
+ self.count[interval] = 0
+ current_stats = self.stats[interval]
+ for stat, stat_list in self.stats[base].items():
+ try:
+ avg = mean(stat_list[0:multiplier])
+ except ValueError:
+ avg = 0
+ current_stats[stat].insert(0, avg)
+ if len(current_stats[stat]) > self.length:
+ current_stats[stat].pop()
+
+ update_interval(5, 1, 5)
+ update_interval(30, 5, 6)
+ update_interval(300, 30, 10)
+
+ def save_stats(self):
+ self.saved_stats['stats'] = self.stats
+ self.saved_stats.config.update(self.get_totals())
+ self.saved_stats.save()
+
+ # export:
+ @export
+ def get_stats(self, keys, interval):
+ if interval not in self.intervals:
+ return None
+
+ stats_dict = {}
+ for key in keys:
+ if key in self.stats[interval]:
+ stats_dict[key] = self.stats[interval][key]
+
+ stats_dict['_last_update'] = self.last_update[interval]
+ stats_dict['_length'] = self.config['length']
+ stats_dict['_update_interval'] = interval
+ return stats_dict
+
+ @export
+ def get_totals(self):
+ result = {}
+ session_totals = self.get_session_totals()
+ for key in session_totals:
+ result[key] = self.totals[key] + session_totals[key]
+ return result
+
+ @export
+ def get_session_totals(self):
+ return self.core.get_session_status(
+ [
+ 'total_upload',
+ 'total_download',
+ 'total_payload_upload',
+ 'total_payload_download',
+ ]
+ )
+
+ @export
+ def set_config(self, config):
+ """Sets the config dictionary."""
+ for key in config:
+ self.config[key] = config[key]
+ self.config.save()
+
+ @export
+ def get_config(self):
+ """Returns the config dictionary."""
+ return self.config.config
+
+ @export
+ def get_intervals(self):
+ """Returns the available resolutions."""
+ return self.intervals
diff --git a/deluge/plugins/Stats/deluge_stats/data/config.ui b/deluge/plugins/Stats/deluge_stats/data/config.ui
new file mode 100644
index 0000000..326598b
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/data/config.ui
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="prefs_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">15</property>
+ <child>
+ <object class="GtkTable" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">10</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">15</property>
+ <child>
+ <object class="GtkColorButton" id="bandwidth_graph_download_rate_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_EXPAND</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Download color:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Upload color:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="bandwidth_graph_upload_rate_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_EXPAND</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Connections Graph&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Bandwidth Graph&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="connections_graph_dht_nodes_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_EXPAND</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">DHT nodes:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="connections_graph_dht_cache_nodes_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_EXPAND</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Cached DHT nodes:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">DHT torrents:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Connections:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="connections_graph_dht_torrents_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_EXPAND</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="connections_graph_num_connections_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_EXPAND</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Seeds / Peers&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="seeds_graph_num_peers_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ <property name="x_options">GTK_EXPAND</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Peers:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Graph Colors&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/Stats/deluge_stats/data/stats.js b/deluge/plugins/Stats/deluge_stats/data/stats.js
new file mode 100644
index 0000000..7ba3d27
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/data/stats.js
@@ -0,0 +1,27 @@
+/**
+ * Script: stats.js
+ * The javascript client-side code for the Stats plugin.
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+StatsPlugin = Ext.extend(Deluge.Plugin, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ name: 'Stats',
+ },
+ config
+ );
+ StatsPlugin.superclass.constructor.call(this, config);
+ },
+
+ onDisable: function () {},
+
+ onEnable: function () {},
+});
+new StatsPlugin();
diff --git a/deluge/plugins/Stats/deluge_stats/data/tabs.ui b/deluge/plugins/Stats/deluge_stats/data/tabs.ui
new file mode 100644
index 0000000..4b35765
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/data/tabs.ui
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="graph_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="graph_label_text">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Stats</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="graph_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Resolution</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combo_intervals">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="graph_notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tab_pos">left</property>
+ <child>
+ <object class="GtkDrawingArea" id="bandwidth_graph">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="bandwidth_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Bandwidth</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkDrawingArea" id="connections_graph">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="connections_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Connections</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkDrawingArea" id="seeds_graph">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="seeds_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Seeds/Peers</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/Stats/deluge_stats/graph.py b/deluge/plugins/Stats/deluge_stats/graph.py
new file mode 100644
index 0000000..ddb8f54
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/graph.py
@@ -0,0 +1,343 @@
+#
+# Copyright (C) 2009 Ian Martin <ianmartin@cantab.net>
+# Copyright (C) 2008 Damien Churchill <damoxc@gmail.com>
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007 Marcos Mobley <markybob@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""
+port of old plugin by markybob.
+"""
+
+import logging
+import math
+import time
+
+import gi
+
+gi.require_foreign('cairo')
+
+import cairo # isort:skip (gi checks required before import).
+
+log = logging.getLogger(__name__)
+
+black = (0, 0, 0)
+gray = (0.75, 0.75, 0.75)
+white = (1.0, 1.0, 1.0)
+darkred = (0.65, 0, 0)
+red = (1.0, 0, 0)
+green = (0, 1.0, 0)
+blue = (0, 0, 1.0)
+orange = (1.0, 0.74, 0)
+
+
+def default_formatter(value):
+ return str(value)
+
+
+def size_formatter_scale(value):
+ scale = 1.0
+ for i in range(0, 3):
+ scale = scale * 1024.0
+ if value // scale < 1024:
+ return scale
+
+
+def change_opacity(color, opactiy):
+ """A method to assist in changing the opactiy of a color inorder to draw the
+ fills.
+ """
+ color = list(color)
+ if len(color) == 4:
+ color[3] = opactiy
+ else:
+ color.append(opactiy)
+ return tuple(color)
+
+
+class Graph:
+ def __init__(self):
+ self.width = 100
+ self.height = 100
+ self.length = 150
+ self.stat_info = {}
+ self.line_size = 2
+ self.dash_length = [10]
+ self.mean_selected = True
+ self.legend_selected = True
+ self.max_selected = True
+ self.black = (0, 0, 0)
+ self.interval = 2 # 2 secs
+ self.text_bg = (255, 255, 255, 128) # prototyping
+ self.set_left_axis()
+
+ def set_left_axis(self, **kargs):
+ self.left_axis = kargs
+
+ def add_stat(self, stat, label='', axis='left', line=True, fill=True, color=None):
+ self.stat_info[stat] = {
+ 'axis': axis,
+ 'label': label,
+ 'line': line,
+ 'fill': fill,
+ 'color': color,
+ }
+
+ def set_stats(self, stats):
+ self.last_update = stats['_last_update']
+ del stats['_last_update']
+ self.length = stats['_length']
+ del stats['_length']
+ self.interval = stats['_update_interval']
+ del stats['_update_interval']
+ self.stats = stats
+ return
+
+ # def set_config(self, config):
+ # self.length = config["length"]
+ # self.interval = config["update_interval"]
+
+ def set_interval(self, interval):
+ self.interval = interval
+
+ def draw_to_context(self, ctx, width, height):
+ self.width, self.height = width, height
+ self.draw_rect(ctx, white, 0, 0, self.width, self.height)
+ self.draw_graph(ctx)
+
+ def draw(self, width, height):
+ """Create surface with context for use in tests"""
+ surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
+ ctx = cairo.Context(surface)
+ self.draw_to_context(ctx, width, height)
+ return surface
+
+ def draw_x_axis(self, ctx, bounds):
+ (left, top, right, bottom) = bounds
+ duration = self.length * self.interval
+ start = self.last_update - duration
+ ratio = (right - left) / duration
+
+ if duration < 1800 * 10:
+ # try rounding to nearest 1min, 5mins, 10mins, 30mins
+ for step in [60, 300, 600, 1800]:
+ if duration // step < 10:
+ x_step = step
+ break
+ else:
+ # If there wasnt anything useful find a nice fitting hourly divisor
+ x_step = ((duration // 5) // 3600) * 3600
+
+ # this doesnt allow for dst and timezones...
+ seconds_to_step = math.ceil(start / x_step) * x_step - start
+
+ for i in range(0, duration // x_step + 1):
+ text = time.strftime(
+ '%H:%M', time.localtime(start + seconds_to_step + i * x_step)
+ )
+ # + 0.5 to allign x to nearest pixel
+ x = int(ratio * (seconds_to_step + i * x_step) + left) + 0.5
+ self.draw_x_text(ctx, text, x, bottom)
+ self.draw_dotted_line(ctx, gray, x, top - 0.5, x, bottom + 0.5)
+
+ self.draw_line(ctx, gray, left, bottom + 0.5, right, bottom + 0.5)
+
+ def draw_graph(self, ctx):
+ font_extents = ctx.font_extents()
+ x_axis_space = font_extents[2] + 2 + self.line_size / 2
+ plot_height = self.height - x_axis_space
+ # lets say we need 2n-1*font height pixels to plot the y ticks
+ tick_limit = plot_height / font_extents[3]
+
+ max_value = 0
+ for stat in self.stat_info:
+ if self.stat_info[stat]['axis'] == 'left':
+ try:
+ l_max = max(self.stats[stat])
+ except ValueError:
+ l_max = 0
+ if l_max > max_value:
+ max_value = l_max
+ if max_value < self.left_axis['min']:
+ max_value = self.left_axis['min']
+
+ y_ticks = self.intervalise(max_value, tick_limit)
+ max_value = y_ticks[-1]
+ # find the width of the y_ticks
+ y_tick_text = [self.left_axis['formatter'](tick) for tick in y_ticks]
+
+ def space_required(ctx, text):
+ te = ctx.text_extents(text)
+ return math.ceil(te[4] - te[0])
+
+ y_tick_width = max(space_required(ctx, text) for text in y_tick_text)
+
+ top = font_extents[2] / 2
+ # bounds(left, top, right, bottom)
+ bounds = (y_tick_width + 4, top + 2, self.width, self.height - x_axis_space)
+
+ self.draw_x_axis(ctx, bounds)
+ self.draw_left_axis(ctx, bounds, y_ticks, y_tick_text)
+
+ def intervalise(self, x, limit=None):
+ """Given a value x create an array of tick points to got with the graph
+ The number of ticks returned can be constrained by limit, minimum of 3
+ """
+ # Limit is the number of ticks which is 1 + the number of steps as we
+ # count the 0 tick in limit
+ if limit is not None:
+ if limit < 3:
+ limit = 2
+ else:
+ limit = limit - 1
+ scale = 1
+ if 'formatter_scale' in self.left_axis:
+ scale = self.left_axis['formatter_scale'](x)
+ x = x / scale
+
+ # Find the largest power of 10 less than x
+ comm_log = math.log10(x)
+ intbit = math.floor(comm_log)
+
+ interval = math.pow(10, intbit)
+ steps = int(math.ceil(x / interval))
+
+ if steps <= 1 and (limit is None or limit >= 10 * steps):
+ interval = interval * 0.1
+ steps = steps * 10
+ elif steps <= 2 and (limit is None or limit >= 5 * steps):
+ interval = interval * 0.2
+ steps = steps * 5
+ elif steps <= 5 and (limit is None or limit >= 2 * steps):
+ interval = interval * 0.5
+ steps = steps * 2
+
+ if limit is not None and steps > limit:
+ multi = steps / limit
+ if multi > 2:
+ interval = interval * 5
+ else:
+ interval = interval * 2
+
+ intervals = [
+ i * interval * scale for i in range(1 + int(math.ceil(x / interval)))
+ ]
+ return intervals
+
+ def draw_left_axis(self, ctx, bounds, y_ticks, y_tick_text):
+ (left, top, right, bottom) = bounds
+ stats = {}
+ for stat in self.stat_info:
+ if self.stat_info[stat]['axis'] == 'left':
+ stats[stat] = self.stat_info[stat]
+ stats[stat]['values'] = self.stats[stat]
+ stats[stat]['fill_color'] = change_opacity(stats[stat]['color'], 0.5)
+ stats[stat]['color'] = change_opacity(stats[stat]['color'], 0.8)
+
+ height = bottom - top
+ max_value = y_ticks[-1]
+ ratio = height / max_value
+
+ for i, y_val in enumerate(y_ticks):
+ y = int(bottom - y_val * ratio) - 0.5
+ if i != 0:
+ self.draw_dotted_line(ctx, gray, left, y, right, y)
+ self.draw_y_text(ctx, y_tick_text[i], left, y)
+ self.draw_line(ctx, gray, left, top, left, bottom)
+
+ for stat, info in stats.items():
+ if len(info['values']) > 0:
+ self.draw_value_poly(
+ ctx, info['values'], info['color'], max_value, bounds
+ )
+ self.draw_value_poly(
+ ctx,
+ info['values'],
+ info['fill_color'],
+ max_value,
+ bounds,
+ info['fill'],
+ )
+
+ def draw_legend(self):
+ pass
+
+ def trace_path(self, ctx, values, max_value, bounds):
+ (left, top, right, bottom) = bounds
+ ratio = (bottom - top) / max_value
+ line_width = self.line_size
+
+ ctx.set_line_width(line_width)
+ ctx.move_to(right, bottom)
+
+ ctx.line_to(right, int(bottom - values[0] * ratio))
+
+ x = right
+ step = (right - left) / (self.length - 1)
+ for i, value in enumerate(values):
+ if i == self.length - 1:
+ x = left
+
+ ctx.line_to(x, int(bottom - value * ratio))
+ x -= step
+
+ ctx.line_to(int(right - (len(values) - 1) * step), bottom)
+ ctx.close_path()
+
+ def draw_value_poly(self, ctx, values, color, max_value, bounds, fill=False):
+ self.trace_path(ctx, values, max_value, bounds)
+ ctx.set_source_rgba(*color)
+
+ if fill:
+ ctx.fill()
+ else:
+ ctx.stroke()
+
+ def draw_x_text(self, ctx, text, x, y):
+ """Draws text below and horizontally centered about x,y"""
+ fe = ctx.font_extents()
+ te = ctx.text_extents(text)
+ height = fe[2]
+ x_bearing = te[0]
+ width = te[2]
+ ctx.move_to(int(x - width / 2 + x_bearing), int(y + height))
+ ctx.set_source_rgba(*self.black)
+ ctx.show_text(text)
+
+ def draw_y_text(self, ctx, text, x, y):
+ """Draws text left of and vertically centered about x,y"""
+ fe = ctx.font_extents()
+ te = ctx.text_extents(text)
+ descent = fe[1]
+ ascent = fe[0]
+ x_bearing = te[0]
+ width = te[4]
+ ctx.move_to(int(x - width - x_bearing - 2), int(y + (ascent - descent) / 2))
+ ctx.set_source_rgba(*self.black)
+ ctx.show_text(text)
+
+ def draw_rect(self, ctx, color, x, y, height, width):
+ ctx.set_source_rgba(*color)
+ ctx.rectangle(x, y, height, width)
+ ctx.fill()
+
+ def draw_line(self, ctx, color, x1, y1, x2, y2):
+ ctx.set_source_rgba(*color)
+ ctx.set_line_width(1)
+ ctx.move_to(x1, y1)
+ ctx.line_to(x2, y2)
+ ctx.stroke()
+
+ def draw_dotted_line(self, ctx, color, x1, y1, x2, y2):
+ ctx.set_source_rgba(*color)
+ ctx.set_line_width(1)
+ dash, offset = ctx.get_dash()
+ ctx.set_dash(self.dash_length, 0)
+ ctx.move_to(x1, y1)
+ ctx.line_to(x2, y2)
+ ctx.stroke()
+ ctx.set_dash(dash, offset)
diff --git a/deluge/plugins/Stats/deluge_stats/gtkui.py b/deluge/plugins/Stats/deluge_stats/gtkui.py
new file mode 100644
index 0000000..39c1d4c
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/gtkui.py
@@ -0,0 +1,296 @@
+#
+# Copyright (C) 2009 Ian Martin <ianmartin@cantab.net>
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+
+import logging
+
+import gi # isort:skip (Required before Gtk import).
+
+gi.require_version('Gtk', '3.0')
+
+from gi.repository import Gtk
+from gi.repository.Gdk import RGBA
+
+import deluge
+from deluge import component
+from deluge.common import fspeed
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+from deluge.ui.gtk3.torrentdetails import Tab
+
+from .common import get_resource
+from .graph import Graph, size_formatter_scale
+
+log = logging.getLogger(__name__)
+
+# Gdk.RGBA textual spec
+RED = 'rgb(255,0,0)'
+GREEN = 'rgb(0,128,0)'
+BLUE = 'rgb(0,0,255)'
+DARKRED = 'rgb(139,0,0)'
+ORANGE = 'rgb(255,165,0)'
+
+DEFAULT_CONF = {
+ 'version': 2,
+ 'colors': {
+ 'bandwidth_graph': {'upload_rate': BLUE, 'download_rate': GREEN},
+ 'connections_graph': {
+ 'dht_nodes': ORANGE,
+ 'dht_cache_nodes': BLUE,
+ 'dht_torrents': GREEN,
+ 'num_connections': DARKRED,
+ },
+ 'seeds_graph': {'num_peers': BLUE},
+ },
+}
+
+
+def neat_time(column, cell, model, data):
+ """Render seconds as seconds or minutes with label"""
+ seconds = model.get_value(data, 0)
+ if seconds > 60:
+ text = '%d %s' % (seconds // 60, _('minutes'))
+ elif seconds == 60:
+ text = _('1 minute')
+ elif seconds == 1:
+ text = _('1 second')
+ else:
+ text = '%d %s' % (seconds, _('seconds'))
+ cell.set_property('text', text)
+ return
+
+
+def int_str(number):
+ return str(int(number))
+
+
+def fspeed_shortform(value):
+ return fspeed(value, shortform=True)
+
+
+def text_to_rgba(color):
+ """Turns a Color into a tuple with range 0-1 as used by the graph"""
+ color_rgba = RGBA()
+ color_rgba.parse(color)
+ return color_rgba
+
+
+class GraphsTab(Tab):
+ def __init__(self, colors):
+ super().__init__()
+
+ builder = Gtk.Builder()
+ builder.add_from_file(get_resource('tabs.ui'))
+ self.window = builder.get_object('graph_tab')
+ self.notebook = builder.get_object('graph_notebook')
+ self.label = builder.get_object('graph_label')
+
+ self._name = 'Stats'
+ self._child_widget = self.window
+ self._tab_label = self.label
+
+ self.colors = colors
+
+ self.bandwidth_graph = builder.get_object('bandwidth_graph')
+ self.bandwidth_graph.connect('draw', self.on_graph_draw)
+
+ self.connections_graph = builder.get_object('connections_graph')
+ self.connections_graph.connect('draw', self.on_graph_draw)
+
+ self.seeds_graph = builder.get_object('seeds_graph')
+ self.seeds_graph.connect('draw', self.on_graph_draw)
+
+ self.notebook.connect('switch-page', self._on_notebook_switch_page)
+
+ self.selected_interval = 1 # Should come from config or similar
+ self.select_bandwidth_graph()
+
+ self.window.unparent()
+ self.label.unparent()
+
+ self.intervals = None
+ self.intervals_combo = builder.get_object('combo_intervals')
+ cell = Gtk.CellRendererText()
+ self.intervals_combo.pack_start(cell, True)
+ self.intervals_combo.set_cell_data_func(cell, neat_time)
+ self.intervals_combo.connect('changed', self._on_selected_interval_changed)
+ self.update_intervals()
+
+ def on_graph_draw(self, widget, context):
+ self.graph.draw_to_context(
+ context,
+ self.graph_widget.get_allocated_width(),
+ self.graph_widget.get_allocated_height(),
+ )
+ # Do not propagate the event
+ return True
+
+ def update(self):
+ d1 = client.stats.get_stats(list(self.graph.stat_info), self.selected_interval)
+ d1.addCallback(self.graph.set_stats)
+
+ def _update_complete(result):
+ self.graph_widget.queue_draw()
+ return result
+
+ d1.addCallback(_update_complete)
+ return d1
+
+ def clear(self):
+ pass
+
+ def update_intervals(self):
+ client.stats.get_intervals().addCallback(self._on_intervals_changed)
+
+ def select_bandwidth_graph(self):
+ log.debug('Selecting bandwidth graph')
+ self.graph_widget = self.bandwidth_graph
+ self.graph = Graph()
+ colors = self.colors['bandwidth_graph']
+ self.graph.add_stat(
+ 'download_rate',
+ label='Download Rate',
+ color=text_to_rgba(colors['download_rate']),
+ )
+ self.graph.add_stat(
+ 'upload_rate',
+ label='Upload Rate',
+ color=text_to_rgba(colors['upload_rate']),
+ )
+ self.graph.set_left_axis(
+ formatter=fspeed_shortform, min=10240, formatter_scale=size_formatter_scale
+ )
+
+ def select_connections_graph(self):
+ log.debug('Selecting connections graph')
+ self.graph_widget = self.connections_graph
+ g = Graph()
+ self.graph = g
+ colors = self.colors['connections_graph']
+ g.add_stat('dht_nodes', color=text_to_rgba(colors['dht_nodes']))
+ g.add_stat('dht_cache_nodes', color=text_to_rgba(colors['dht_cache_nodes']))
+ g.add_stat('dht_torrents', color=text_to_rgba(colors['dht_torrents']))
+ g.add_stat('num_connections', color=text_to_rgba(colors['num_connections']))
+ g.set_left_axis(formatter=int_str, min=10)
+
+ def select_seeds_graph(self):
+ log.debug('Selecting connections graph')
+ self.graph_widget = self.seeds_graph
+ self.graph = Graph()
+ colors = self.colors['seeds_graph']
+ self.graph.add_stat('num_peers', color=text_to_rgba(colors['num_peers']))
+ self.graph.set_left_axis(formatter=int_str, min=10)
+
+ def set_colors(self, colors):
+ self.colors = colors
+ # Fake switch page to update the graph colors (HACKY)
+ self._on_notebook_switch_page(
+ self.notebook, None, self.notebook.get_current_page() # This is unused
+ )
+
+ def _on_intervals_changed(self, intervals):
+ liststore = Gtk.ListStore(int)
+ for inter in intervals:
+ liststore.append([inter])
+ self.intervals_combo.set_model(liststore)
+ try:
+ current = intervals.index(self.selected_interval)
+ except Exception:
+ current = 0
+ # should select the value saved in config
+ self.intervals_combo.set_active(current)
+
+ def _on_selected_interval_changed(self, combobox):
+ model = combobox.get_model()
+ tree_iter = combobox.get_active_iter()
+ self.selected_interval = model.get_value(tree_iter, 0)
+ self.update()
+ return True
+
+ def _on_notebook_switch_page(self, notebook, page, page_num):
+ p = notebook.get_nth_page(page_num)
+ if p is self.bandwidth_graph:
+ self.select_bandwidth_graph()
+ self.update()
+ elif p is self.connections_graph:
+ self.select_connections_graph()
+ self.update()
+ elif p is self.seeds_graph:
+ self.select_seeds_graph()
+ self.update()
+ return True
+
+
+class GtkUI(Gtk3PluginBase):
+ def enable(self):
+ log.debug('Stats plugin enable called')
+ self.config = deluge.configmanager.ConfigManager(
+ 'stats.gtk3ui.conf', DEFAULT_CONF
+ )
+
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('config.ui'))
+
+ component.get('Preferences').add_page(
+ 'Stats', self.builder.get_object('prefs_box')
+ )
+ component.get('PluginManager').register_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').register_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+ self.on_show_prefs()
+
+ self.graphs_tab = GraphsTab(self.config['colors'])
+ self.torrent_details = component.get('TorrentDetails')
+ self.torrent_details.add_tab(self.graphs_tab)
+
+ def disable(self):
+ component.get('Preferences').remove_page('Stats')
+ component.get('PluginManager').deregister_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').deregister_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+ self.torrent_details.remove_tab(self.graphs_tab.get_name())
+
+ def on_apply_prefs(self):
+ log.debug('applying prefs for Stats')
+ gtkconf = {}
+ for graph, colors in self.config['colors'].items():
+ gtkconf[graph] = {}
+ for value, color in colors.items():
+ color_btn = self.builder.get_object(f'{graph}_{value}_color')
+ try:
+ gtkconf[graph][value] = color_btn.get_color().to_string()
+ except Exception:
+ gtkconf[graph][value] = DEFAULT_CONF['colors'][graph][value]
+ self.config['colors'] = gtkconf
+ self.graphs_tab.set_colors(self.config['colors'])
+
+ config = {}
+ client.stats.set_config(config)
+
+ def on_show_prefs(self):
+ for graph, colors in self.config['colors'].items():
+ for value, color in colors.items():
+ try:
+ color_btn = self.builder.get_object(f'{graph}_{value}_color')
+ color_btn.set_rgba(text_to_rgba(color))
+ except Exception as ex:
+ log.debug('Unable to set %s %s %s: %s', graph, value, color, ex)
+ client.stats.get_config().addCallback(self.cb_get_config)
+
+ def cb_get_config(self, config):
+ """Callback for on show_prefs."""
+ pass
diff --git a/deluge/plugins/Stats/deluge_stats/template/graph.html b/deluge/plugins/Stats/deluge_stats/template/graph.html
new file mode 100644
index 0000000..2ff803b
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/template/graph.html
@@ -0,0 +1,12 @@
+$:render.header(_("Network Graph"), 'graph')
+$:render.admin_toolbar('graph')
+
+<div style="padding-left:20px">
+
+<img src="$base/graph/network.png?height=300&width=1000"><br \>
+<img src="$base/graph/connections.png?height=300&width=1000"><br \>
+</div>
+
+
+
+$:render.footer()
diff --git a/deluge/plugins/Stats/deluge_stats/tests/__init__.py b/deluge/plugins/Stats/deluge_stats/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/tests/__init__.py
diff --git a/deluge/plugins/Stats/deluge_stats/tests/test.html b/deluge/plugins/Stats/deluge_stats/tests/test.html
new file mode 100644
index 0000000..7af5f15
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/tests/test.html
@@ -0,0 +1,9 @@
+<html>
+ <head>
+ <meta http-equiv="refresh" content="2" />
+ </head>
+ <body>
+ <img src="output_async.png" /> <br />
+ <img src="output_dht.png" />
+ </body>
+</html>
diff --git a/deluge/plugins/Stats/deluge_stats/tests/test_stats.py b/deluge/plugins/Stats/deluge_stats/tests/test_stats.py
new file mode 100644
index 0000000..d61cd46
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/tests/test_stats.py
@@ -0,0 +1,106 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import pytest
+import pytest_twisted
+from twisted.internet import defer
+
+from deluge.common import fsize, fspeed
+from deluge.ui.client import client
+
+
+def print_totals(totals):
+ for name, value in totals.items():
+ print(name, fsize(value))
+
+ print('overhead:')
+ print('up:', fsize(totals['total_upload'] - totals['total_payload_upload']))
+ print('down:', fsize(totals['total_download'] - totals['total_payload_download']))
+
+
+class TestStatsPlugin:
+ @pytest_twisted.async_yield_fixture(autouse=True)
+ async def set_up(self, component):
+ defer.setDebugging(True)
+ client.start_standalone()
+ client.core.enable_plugin('Stats')
+ await component.start()
+ yield
+ client.stop_standalone()
+
+ @defer.inlineCallbacks
+ def test_client_totals(self):
+ plugins = yield client.core.get_available_plugins()
+ if 'Stats' not in plugins:
+ pytest.skip('Stats plugin not available for testing')
+
+ totals = yield client.stats.get_totals()
+ assert totals['total_upload'] == 0
+ assert totals['total_payload_upload'] == 0
+ assert totals['total_payload_download'] == 0
+ assert totals['total_download'] == 0
+ # print_totals(totals)
+
+ @defer.inlineCallbacks
+ def test_session_totals(self):
+ plugins = yield client.core.get_available_plugins()
+ if 'Stats' not in plugins:
+ pytest.skip('Stats plugin not available for testing')
+
+ totals = yield client.stats.get_session_totals()
+ assert totals['total_upload'] == 0
+ assert totals['total_payload_upload'] == 0
+ assert totals['total_payload_download'] == 0
+ assert totals['total_download'] == 0
+ # print_totals(totals)
+
+ @pytest.mark.gtkui
+ @defer.inlineCallbacks
+ def test_write(self, tmp_path):
+ """
+ writing to a file-like object; need this for webui.
+
+ Not strictly a unit test, but tests if calls do not fail...
+ """
+ from deluge_stats import graph, gtkui
+
+ from deluge.configmanager import ConfigManager
+ from deluge.ui.gtk3.gtkui import DEFAULT_PREFS
+ from deluge.ui.gtk3.mainwindow import MainWindow
+ from deluge.ui.gtk3.pluginmanager import PluginManager
+ from deluge.ui.gtk3.preferences import Preferences
+ from deluge.ui.gtk3.torrentdetails import TorrentDetails
+ from deluge.ui.gtk3.torrentview import TorrentView
+
+ ConfigManager('gtk3ui.conf', defaults=DEFAULT_PREFS)
+
+ self.plugins = PluginManager()
+ MainWindow()
+ TorrentView()
+ TorrentDetails()
+ Preferences()
+
+ class FakeFile:
+ def __init__(self):
+ self.data = []
+
+ def write(self, data):
+ self.data.append(data)
+
+ stats_gtkui = gtkui.GtkUI('test_stats')
+ stats_gtkui.enable()
+ yield stats_gtkui.graphs_tab.update()
+
+ g = stats_gtkui.graphs_tab.graph
+ g.add_stat('download_rate', color=graph.green)
+ g.add_stat('upload_rate', color=graph.blue)
+ g.set_left_axis(formatter=fspeed, min=10240)
+
+ surface = g.draw(900, 150)
+ file_like = FakeFile()
+ surface.write_to_png(file_like)
+ data = b''.join(file_like.data)
+ with open(tmp_path / 'file_like.png', 'wb') as _file:
+ _file.write(data)
diff --git a/deluge/plugins/Stats/deluge_stats/webui.py b/deluge/plugins/Stats/deluge_stats/webui.py
new file mode 100644
index 0000000..2c2ed46
--- /dev/null
+++ b/deluge/plugins/Stats/deluge_stats/webui.py
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+ scripts = [get_resource('stats.js')]
+
+ # The enable and disable methods are not scrictly required on the WebUI
+ # plugins. They are only here if you need to register images/stylesheets
+ # with the webserver.
+ def enable(self):
+ log.debug('Stats Web plugin enabled!')
+
+ def disable(self):
+ log.debug('Stats Web plugin disabled!')
diff --git a/deluge/plugins/Stats/setup.py b/deluge/plugins/Stats/setup.py
new file mode 100644
index 0000000..0f3e069
--- /dev/null
+++ b/deluge/plugins/Stats/setup.py
@@ -0,0 +1,49 @@
+#
+# Copyright (C) 2009 Ian Martin <ianmartin@cantab.net>
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'Stats'
+__author__ = 'Ian Martin'
+__author_email__ = 'ianmartin@cantab.net'
+__version__ = '0.4'
+__url__ = 'http://deluge-torrent.org'
+__license__ = 'GPLv3'
+__description__ = 'Display stats graphs'
+__long_description__ = """
+Records lots of extra stats
+and produces time series
+graphs"""
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['template/*', 'data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/Toggle/deluge_toggle/__init__.py b/deluge/plugins/Toggle/deluge_toggle/__init__.py
new file mode 100644
index 0000000..b0332ee
--- /dev/null
+++ b/deluge/plugins/Toggle/deluge_toggle/__init__.py
@@ -0,0 +1,38 @@
+#
+# Copyright (C) 2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/Toggle/deluge_toggle/common.py b/deluge/plugins/Toggle/deluge_toggle/common.py
new file mode 100644
index 0000000..eb47f13
--- /dev/null
+++ b/deluge/plugins/Toggle/deluge_toggle/common.py
@@ -0,0 +1,20 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
diff --git a/deluge/plugins/Toggle/deluge_toggle/core.py b/deluge/plugins/Toggle/deluge_toggle/core.py
new file mode 100644
index 0000000..ab4581b
--- /dev/null
+++ b/deluge/plugins/Toggle/deluge_toggle/core.py
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.core.rpcserver import export
+from deluge.plugins.pluginbase import CorePluginBase
+
+log = logging.getLogger(__name__)
+
+DEFAULT_PREFS = {}
+
+
+class Core(CorePluginBase):
+ def enable(self):
+ self.core = component.get('Core')
+
+ def disable(self):
+ pass
+
+ def update(self):
+ pass
+
+ @export
+ def get_status(self):
+ return self.core.session.is_paused()
+
+ @export
+ def toggle(self):
+ if self.core.session.is_paused():
+ self.core.resume_session()
+ paused = False
+ else:
+ self.core.pause_session()
+ paused = True
+ return paused
diff --git a/deluge/plugins/Toggle/deluge_toggle/data/toggle.js b/deluge/plugins/Toggle/deluge_toggle/data/toggle.js
new file mode 100644
index 0000000..20fa4f4
--- /dev/null
+++ b/deluge/plugins/Toggle/deluge_toggle/data/toggle.js
@@ -0,0 +1,27 @@
+/**
+ * Script: toggle.js
+ * The client-side javascript code for the Toggle plugin.
+ *
+ * Copyright (C) John Garland 2010 <johnnybg+deluge@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+TogglePlugin = Ext.extend(Deluge.Plugin, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ name: 'Toggle',
+ },
+ config
+ );
+ TogglePlugin.superclass.constructor.call(this, config);
+ },
+
+ onDisable: function () {},
+
+ onEnable: function () {},
+});
+new TogglePlugin();
diff --git a/deluge/plugins/Toggle/deluge_toggle/gtkui.py b/deluge/plugins/Toggle/deluge_toggle/gtkui.py
new file mode 100644
index 0000000..bfb90de
--- /dev/null
+++ b/deluge/plugins/Toggle/deluge_toggle/gtkui.py
@@ -0,0 +1,53 @@
+#
+# Copyright (C) 2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+
+log = logging.getLogger(__name__)
+
+
+class GtkUI(Gtk3PluginBase):
+ def enable(self):
+ self.core = client.toggle
+ self.plugin = component.get('PluginManager')
+ self.separator = self.plugin.add_toolbar_separator()
+ self.button = self.plugin.add_toolbar_button(
+ self._on_button_clicked,
+ label='Pause Session',
+ stock='gtk-media-pause',
+ tooltip='Pause the session',
+ )
+
+ def disable(self):
+ component.get('PluginManager').remove_toolbar_button(self.button)
+ component.get('PluginManager').remove_toolbar_button(self.separator)
+
+ def update(self):
+ def _on_get_status(paused):
+ if paused:
+ self.button.set_label('Resume Session')
+ self.button.set_tooltip_text('Resume the session')
+ self.button.set_stock_id('gtk-media-play')
+ else:
+ self.button.set_label('Pause Session')
+ self.button.set_tooltip_text('Pause the session')
+ self.button.set_stock_id('gtk-media-pause')
+
+ self.core.get_status().addCallback(_on_get_status)
+
+ def _on_button_clicked(self, widget):
+ self.core.toggle()
diff --git a/deluge/plugins/Toggle/deluge_toggle/webui.py b/deluge/plugins/Toggle/deluge_toggle/webui.py
new file mode 100644
index 0000000..637365c
--- /dev/null
+++ b/deluge/plugins/Toggle/deluge_toggle/webui.py
@@ -0,0 +1,30 @@
+#
+# Copyright (C) 2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+ scripts = [get_resource('toggle.js')]
+
+ def enable(self):
+ pass
+
+ def disable(self):
+ pass
diff --git a/deluge/plugins/Toggle/setup.py b/deluge/plugins/Toggle/setup.py
new file mode 100644
index 0000000..dadd32e
--- /dev/null
+++ b/deluge/plugins/Toggle/setup.py
@@ -0,0 +1,46 @@
+#
+# Copyright (C) 2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'Toggle'
+__author__ = 'John Garland'
+__author_email__ = 'johnnybg+deluge@gmail.com'
+__version__ = '0.4'
+__url__ = 'http://deluge-torrent.org'
+__license__ = 'GPLv3'
+__description__ = 'Toggles the session'
+__long_description__ = """"""
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__ if __long_description__ else __description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ [deluge.plugin.web]
+ %s = deluge_%s:WebUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 3),
+)
diff --git a/deluge/plugins/WebUi/create_dev_link.sh b/deluge/plugins/WebUi/create_dev_link.sh
new file mode 100755
index 0000000..f4d60d2
--- /dev/null
+++ b/deluge/plugins/WebUi/create_dev_link.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+BASEDIR=$(cd `dirname $0` && pwd)
+CONFIG_DIR=$( test -z $1 && echo "/home/damien/.config/deluge/" || echo "$1")
+[ -d "$CONFIG_DIR/plugins" ] || echo "Config dir "$CONFIG_DIR" is either not a directory or is not a proper deluge config directory. Exiting"
+[ -d "$CONFIG_DIR/plugins" ] || exit 1
+cd $BASEDIR
+test -d $BASEDIR/temp || mkdir $BASEDIR/temp
+export PYTHONPATH=$BASEDIR/temp
+python setup.py build develop --install-dir $BASEDIR/temp
+cp $BASEDIR/temp/*.egg-link $CONFIG_DIR/plugins
+rm -fr $BASEDIR/temp
diff --git a/deluge/plugins/WebUi/deluge_webui/__init__.py b/deluge/plugins/WebUi/deluge_webui/__init__.py
new file mode 100644
index 0000000..ba978b2
--- /dev/null
+++ b/deluge/plugins/WebUi/deluge_webui/__init__.py
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class GtkUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtkui import GtkUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from webui import WebUI as _pluginCls
+
+ self._plugin_cls = _pluginCls
+ super().__init__(plugin_name)
diff --git a/deluge/plugins/WebUi/deluge_webui/common.py b/deluge/plugins/WebUi/deluge_webui/common.py
new file mode 100644
index 0000000..eb47f13
--- /dev/null
+++ b/deluge/plugins/WebUi/deluge_webui/common.py
@@ -0,0 +1,20 @@
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2007-2009 Andrew Resch <andrewresch@gmail.com>
+# 2009 Damien Churchill <damoxc@gmail.com>
+# 2010 Pedro Algarvio <pedro@algarvio.me>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
diff --git a/deluge/plugins/WebUi/deluge_webui/core.py b/deluge/plugins/WebUi/deluge_webui/core.py
new file mode 100644
index 0000000..f18203e
--- /dev/null
+++ b/deluge/plugins/WebUi/deluge_webui/core.py
@@ -0,0 +1,117 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from twisted.internet import defer
+from twisted.internet.error import CannotListenError
+
+import deluge.component as component
+from deluge import configmanager
+from deluge.core.rpcserver import export
+from deluge.plugins.pluginbase import CorePluginBase
+
+try:
+ from deluge.ui.web import server
+except ImportError:
+ server = False
+
+log = logging.getLogger(__name__)
+
+DEFAULT_PREFS = {'enabled': False, 'ssl': False, 'port': 8112}
+
+
+class Core(CorePluginBase):
+ server = None
+
+ def enable(self):
+ self.config = configmanager.ConfigManager('web_plugin.conf', DEFAULT_PREFS)
+ if self.config['enabled']:
+ self.start_server()
+
+ def disable(self):
+ self.stop_server()
+
+ def update(self):
+ pass
+
+ def _on_stop(self, *args):
+ return self.start_server()
+
+ @export
+ def got_deluge_web(self):
+ """Status of deluge-web module installation.
+
+ Check if deluge.ui.web.server modulge is installed and has been successfully imported.
+
+ Returns:
+ bool: True is deluge-web is installed and available, otherwise False.
+
+ """
+
+ return bool(server)
+
+ def start_server(self):
+ if not self.server:
+ if not self.got_deluge_web():
+ return False
+
+ try:
+ self.server = component.get('DelugeWeb')
+ except KeyError:
+ self.server = server.DelugeWeb(daemon=False)
+
+ self.server.port = self.config['port']
+ self.server.https = self.config['ssl']
+ try:
+ self.server.start()
+ except CannotListenError as ex:
+ log.warning('Failed to start WebUI server: %s', ex)
+ raise
+ return True
+
+ def stop_server(self):
+ if self.server:
+ return self.server.stop()
+ return defer.succeed(True)
+
+ def restart_server(self):
+ return self.stop_server().addCallback(self._on_stop)
+
+ @export
+ def set_config(self, config):
+ """Sets the config dictionary."""
+
+ action = None
+ if 'enabled' in config:
+ if config['enabled'] != self.config['enabled']:
+ action = config['enabled'] and 'start' or 'stop'
+
+ if 'ssl' in config:
+ if not action:
+ action = 'restart'
+
+ for key in config:
+ self.config[key] = config[key]
+ self.config.save()
+
+ if action == 'start':
+ return self.start_server()
+ elif action == 'stop':
+ return self.stop_server()
+ elif action == 'restart':
+ return self.restart_server()
+
+ @export
+ def get_config(self):
+ """Returns the config dictionary."""
+ return self.config.config
diff --git a/deluge/plugins/WebUi/deluge_webui/data/config.ui b/deluge/plugins/WebUi/deluge_webui/data/config.ui
new file mode 100644
index 0000000..c58edd0
--- /dev/null
+++ b/deluge/plugins/WebUi/deluge_webui/data/config.ui
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">99999</property>
+ <property name="value">8112</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="prefs_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="settings_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="settings_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">10</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="settings_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="enabled_checkbutton">
+ <property name="label" translatable="yes">Enable web interface</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="ssl_checkbutton">
+ <property name="label" translatable="yes">Enable SSL</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="port_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="port_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Listening port:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="port_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="settings_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Settings&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/plugins/WebUi/deluge_webui/gtkui.py b/deluge/plugins/WebUi/deluge_webui/gtkui.py
new file mode 100644
index 0000000..3d19417
--- /dev/null
+++ b/deluge/plugins/WebUi/deluge_webui/gtkui.py
@@ -0,0 +1,97 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from gi.repository import Gtk
+
+import deluge.component as component
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class GtkUI(Gtk3PluginBase):
+ def enable(self):
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('config.ui'))
+
+ component.get('Preferences').add_page(
+ _('WebUi'), self.builder.get_object('prefs_box')
+ )
+ component.get('PluginManager').register_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').register_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+ client.webui.get_config().addCallback(self.cb_get_config)
+ client.webui.got_deluge_web().addCallback(self.cb_chk_deluge_web)
+
+ def disable(self):
+ component.get('Preferences').remove_page(_('WebUi'))
+ component.get('PluginManager').deregister_hook(
+ 'on_apply_prefs', self.on_apply_prefs
+ )
+ component.get('PluginManager').deregister_hook(
+ 'on_show_prefs', self.on_show_prefs
+ )
+
+ def on_apply_prefs(self):
+ if not self.have_web:
+ return
+ log.debug('applying prefs for WebUi')
+ config = {
+ 'enabled': self.builder.get_object('enabled_checkbutton').get_active(),
+ 'ssl': self.builder.get_object('ssl_checkbutton').get_active(),
+ 'port': self.builder.get_object('port_spinbutton').get_value_as_int(),
+ }
+ client.webui.set_config(config)
+
+ def on_show_prefs(self):
+ client.webui.get_config().addCallback(self.cb_get_config)
+
+ def cb_get_config(self, config):
+ """Callback for on show_prefs."""
+ self.builder.get_object('enabled_checkbutton').set_active(config['enabled'])
+ self.builder.get_object('ssl_checkbutton').set_active(config['ssl'])
+ self.builder.get_object('port_spinbutton').set_value(config['port'])
+
+ def cb_chk_deluge_web(self, have_web):
+ self.have_web = have_web
+ if have_web:
+ return
+ self.builder.get_object('settings_vbox').set_sensitive(False)
+
+ vbox = self.builder.get_object('prefs_box')
+
+ hbox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing=0)
+ icon = Gtk.Image.new_from_icon_name('dialog-error', Gtk.IconSize.BUTTON)
+ icon.set_padding(5, 5)
+ hbox.pack_start(icon, False, False, 0)
+
+ label = Gtk.Label(
+ _(
+ 'The Deluge web interface is not installed, '
+ 'please install the\ninterface and try again'
+ )
+ )
+ label.set_alignment(0, 0.5)
+ label.set_padding(5, 5)
+ hbox.pack_start(label, False, False, 0)
+
+ vbox.pack_start(hbox, False, False, 10)
+ vbox.reorder_child(hbox, 0)
+ vbox.show_all()
diff --git a/deluge/plugins/WebUi/deluge_webui/tests/__init__.py b/deluge/plugins/WebUi/deluge_webui/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/deluge/plugins/WebUi/deluge_webui/tests/__init__.py
diff --git a/deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py b/deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py
new file mode 100644
index 0000000..413d259
--- /dev/null
+++ b/deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import pytest
+import pytest_twisted
+
+from deluge.core.core import Core
+from deluge.core.rpcserver import RPCServer
+from deluge.tests import common
+
+common.disable_new_release_check()
+
+
+class TestWebUIPlugin:
+ @pytest_twisted.async_yield_fixture(autouse=True)
+ async def set_up(self, request, component):
+ self = request.instance
+ self.rpcserver = RPCServer(listen=False)
+ self.core = Core()
+ await component.start()
+
+ yield
+
+ await component.shutdown()
+ del self.rpcserver
+ del self.core
+
+ def test_enable_webui(self):
+ if 'WebUi' not in self.core.get_available_plugins():
+ pytest.skip('WebUi plugin not available for testing')
+
+ d = self.core.enable_plugin('WebUi')
+
+ def result_cb(result):
+ if 'WebUi' not in self.core.get_enabled_plugins():
+ self.fail('Failed to enable WebUi plugin')
+ assert result
+
+ d.addBoth(result_cb)
+ return d
diff --git a/deluge/plugins/WebUi/setup.py b/deluge/plugins/WebUi/setup.py
new file mode 100644
index 0000000..5f2184c
--- /dev/null
+++ b/deluge/plugins/WebUi/setup.py
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# Basic plugin template created by:
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from setuptools import find_packages, setup
+
+__plugin_name__ = 'WebUi'
+__author__ = 'Damien Churchill'
+__author_email__ = 'damoxc@gmail.com'
+__version__ = '0.2'
+__url__ = 'http://deluge-torrent.org'
+__license__ = 'GPLv3'
+__description__ = 'Allows starting the web interface within the daemon.'
+__long_description__ = """"""
+__pkg_data__ = {'deluge_' + __plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__ if __long_description__ else __description__,
+ packages=find_packages(),
+ package_data=__pkg_data__,
+ entry_points="""
+ [deluge.plugin.core]
+ %s = deluge_%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %s = deluge_%s:GtkUIPlugin
+ """
+ % ((__plugin_name__, __plugin_name__.lower()) * 2),
+)
diff --git a/deluge/plugins/__init__.py b/deluge/plugins/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/deluge/plugins/__init__.py
diff --git a/deluge/plugins/init.py b/deluge/plugins/init.py
new file mode 100644
index 0000000..56b3197
--- /dev/null
+++ b/deluge/plugins/init.py
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""
+This base class is used in plugin's __init__ for the plugin entry points.
+"""
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class PluginInitBase:
+ _plugin_cls = None
+
+ def __init__(self, plugin_name):
+ self.plugin = self._plugin_cls(plugin_name) # pylint: disable=not-callable
+
+ def enable(self):
+ return self.plugin.enable()
+
+ def disable(self):
+ return self.plugin.disable()
diff --git a/deluge/plugins/pluginbase.py b/deluge/plugins/pluginbase.py
new file mode 100644
index 0000000..8d55156
--- /dev/null
+++ b/deluge/plugins/pluginbase.py
@@ -0,0 +1,82 @@
+#
+# Copyright (C) 2007-2010 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+
+log = logging.getLogger(__name__)
+
+
+class PluginBase(component.Component):
+ update_interval = 1
+
+ def __init__(self, name):
+ super().__init__(name, self.update_interval)
+
+ def enable(self):
+ raise NotImplementedError('Need to define an enable method!')
+
+ def disable(self):
+ raise NotImplementedError('Need to define a disable method!')
+
+
+class CorePluginBase(PluginBase):
+ def __init__(self, plugin_name):
+ super().__init__('CorePlugin.' + plugin_name)
+ # Register RPC methods
+ component.get('RPCServer').register_object(self, plugin_name.lower())
+ log.debug('CorePlugin initialized..')
+
+ def __del__(self):
+ try:
+ component.get('RPCServer').deregister_object(self)
+ except KeyError:
+ log.debug('RPCServer already deregistered')
+
+ def enable(self):
+ super().enable()
+
+ def disable(self):
+ super().disable()
+
+
+class Gtk3PluginBase(PluginBase):
+ def __init__(self, plugin_name):
+ super().__init__('Gtk3Plugin.' + plugin_name)
+ log.debug('Gtk3Plugin initialized..')
+
+ def enable(self):
+ super().enable()
+
+ def disable(self):
+ super().disable()
+
+
+class WebPluginBase(PluginBase):
+ scripts = []
+ debug_scripts = []
+
+ stylesheets = []
+ debug_stylesheets = []
+
+ def __init__(self, plugin_name):
+ super().__init__('WebPlugin.' + plugin_name)
+
+ # Register JSON rpc methods
+ component.get('JSON').register_object(self, plugin_name.lower())
+ log.debug('WebPlugin initialized..')
+
+ def __del__(self):
+ component.get('JSON').deregister_object(self)
+
+ def enable(self):
+ pass
+
+ def disable(self):
+ pass
diff --git a/deluge/scripts/create_icons.py b/deluge/scripts/create_icons.py
new file mode 100755
index 0000000..479505c
--- /dev/null
+++ b/deluge/scripts/create_icons.py
@@ -0,0 +1,201 @@
+#!/usr/bin/python3
+#
+# Create Deluge PNG icons from SVG
+#
+# Required image tools:
+# * rsvg-convert
+# * convert (ImageMagik)
+# * oxipng
+# * pngquant
+#
+import shutil
+import subprocess
+from dataclasses import dataclass, field
+from pathlib import Path
+
+
+@dataclass
+class IconPack:
+ name: str
+ dir: Path
+ icon_sizes: list[int]
+ panel_sizes: list[int]
+ ico_sizes: list[int]
+ pixmaps_dir: Path = field(init=False)
+ theme_dir: Path = field(init=False)
+ theme_svg: Path = field(init=False)
+ theme_pngs: dict[int, Path] = field(init=False)
+ logo_svg: Path = field(init=False)
+ logo_ico: Path = field(init=False)
+ logo_png: Path = field(init=False)
+
+ def __post_init__(self):
+ self.pixmaps_dir = self.dir / 'pixmaps'
+ self.logo_svg = self.pixmaps_dir / f'{self.name}.svg'
+ self.logo_ico = self.pixmaps_dir / f'{self.name}.ico'
+ self.logo_png = self.pixmaps_dir / f'{self.name}.png'
+
+ self.theme_dir = self.dir / 'icons' / 'hicolor'
+ self.theme_svg = self.theme_dir / 'scalable' / 'apps' / f'{self.name}.svg'
+ self.theme_pngs = self.create_theme_pngs_paths(
+ self.name, self.icon_sizes, self.theme_dir
+ )
+
+ @staticmethod
+ def create_theme_pngs_paths(name, icon_sizes, out_dir):
+ return {
+ size: out_dir / f'{size}x{size}' / 'apps' / f'{name}.png'
+ for size in icon_sizes
+ }
+
+
+@dataclass
+class WebIconPack:
+ name: str
+ dir: Path
+ icon_sizes: list[int]
+ favicon_sizes: list[int]
+ icons_dir: Path = field(init=False)
+ touch: Path = field(init=False)
+ favicon: Path = field(init=False)
+
+ def __post_init__(self):
+ self.icons_dir = self.dir / 'icons'
+ self.touch = self.icons_dir / f'{self.name}-apple-180.png'
+ self.favicon = self.icons_dir / 'favicon.ico'
+
+
+def convert_svg_to_png(svg_file, png_file, size, background_color=None):
+ rsvg_options = [
+ '-w',
+ str(size),
+ '-h',
+ str(size),
+ '-o',
+ png_file,
+ ]
+ rsvg_options + ['-b', {background_color}] if background_color else []
+
+ subprocess.run(['rsvg-convert'] + rsvg_options + [svg_file], check=True)
+
+
+def compress_png(png_file):
+ subprocess.run(
+ ['pngquant', '--quality=70-95', '--ext', '.png', '--force', png_file],
+ check=True,
+ )
+ subprocess.run(['oxipng', png_file], check=True)
+
+
+def create_panel_icons(icon_pack, sizes):
+ for size in sizes:
+ app_png = icon_pack[size]
+ panel_png = app_png.with_name(f'{app_png.stem}-panel.png')
+ shutil.copyfile(app_png, panel_png)
+
+
+def create_hicolor_icons(svg_icon, icon_pack):
+ """Convert SVG icon to hicolor PNG icons."""
+ for size, png_file in icon_pack.items():
+ png_file.parent.mkdir(parents=True, exist_ok=True)
+ convert_svg_to_png(svg_icon, png_file, size)
+ compress_png(png_file)
+
+
+def create_ico_icon(icon_pack, sizes, ico_file):
+ infiles = [icon_pack[size] for size in sizes]
+ ico_file.parent.mkdir(parents=True, exist_ok=True)
+
+ subprocess.run(['convert', *infiles, ico_file], check=True)
+
+
+def create_hicolor_svg(src_svg, dest_svg):
+ dest_svg.parent.mkdir(parents=True, exist_ok=True)
+ shutil.copyfile(src_svg, dest_svg)
+
+
+def create_mini_icons(pixmaps_dir):
+ pixmap_svgs = pixmaps_dir.glob('*.svg')
+
+ for svg_file in pixmap_svgs:
+ png_file = pixmaps_dir / f'{svg_file.stem}16.png'
+ convert_svg_to_png(svg_file, png_file, 16)
+ compress_png(png_file)
+
+
+def create_logo(deluge_png, pixmap_png):
+ pixmap_png.parent.mkdir(parents=True, exist_ok=True)
+ shutil.copyfile(deluge_png, pixmap_png)
+
+
+def create_web_status_icons(src_dir: Path, dest_dir: Path):
+ """Web UI status icons from 16px icons."""
+ pngs_16px = src_dir.glob('*16.png')
+ dest_dir.mkdir(parents=True, exist_ok=True)
+ for path in pngs_16px:
+ if path.stem.startswith('tracker'):
+ continue
+ new_name = path.stem.replace('16', '') + '.png'
+ shutil.copyfile(path, dest_dir / new_name)
+
+
+def create_touch_icon(svg_file, png_file, size):
+ """Web icons with background color for Apple or Android"""
+ png_file.parent.mkdir(parents=True, exist_ok=True)
+ convert_svg_to_png(svg_file, png_file, size, background_color='#599EEE')
+ compress_png(png_file)
+
+
+def create_web_icons(app_pngs, sizes, dest_dir):
+ dest_dir.mkdir(parents=True, exist_ok=True)
+ for size in sizes:
+ app_png = app_pngs[size]
+ web_png = dest_dir / f'{app_png.stem}-{size}.png'
+ shutil.copyfile(app_png, web_png)
+
+
+def main():
+ data_dir = Path.cwd() / 'deluge' / 'ui' / 'data'
+ if not data_dir.is_dir():
+ exit(f'No path to UI data dir: {data_dir}')
+
+ # Create Deluge UI icons
+ icon_pack_sizes = [16, 22, 24, 32, 36, 48, 64, 72, 96, 128, 192, 256, 512]
+ panel_icon_sizes = [16, 22, 24]
+ ico_icon_sizes = [16, 32, 48, 64, 128, 256]
+ ui_icons = IconPack(
+ name='deluge',
+ dir=data_dir,
+ icon_sizes=icon_pack_sizes,
+ panel_sizes=panel_icon_sizes,
+ ico_sizes=ico_icon_sizes,
+ )
+
+ # Theme icons for GTK
+ create_hicolor_icons(ui_icons.logo_svg, ui_icons.theme_pngs)
+ create_hicolor_svg(ui_icons.logo_svg, ui_icons.theme_svg)
+ create_mini_icons(ui_icons.pixmaps_dir)
+ # Panel icon for systray
+ create_panel_icons(ui_icons.theme_pngs, ui_icons.panel_sizes)
+
+ # Deluge logos
+ create_ico_icon(ui_icons.theme_pngs, ui_icons.ico_sizes, ui_icons.logo_ico)
+ create_logo(ui_icons.theme_pngs[48], ui_icons.logo_png)
+
+ # Web UI Icons
+ web_icon_sizes = [32, 192, 512]
+ favicon_sizes = [16, 32, 48]
+ web_icons = WebIconPack(
+ name='deluge',
+ dir=data_dir / '..' / 'web',
+ icon_sizes=web_icon_sizes,
+ favicon_sizes=favicon_sizes,
+ )
+ create_web_icons(ui_icons.theme_pngs, web_icons.icon_sizes, web_icons.icons_dir)
+ create_web_status_icons(ui_icons.pixmaps_dir, web_icons.icons_dir)
+ create_touch_icon(ui_icons.logo_svg, web_icons.touch, 180)
+ create_ico_icon(ui_icons.theme_pngs, web_icons.favicon_sizes, web_icons.favicon)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/deluge/scripts/create_plugin.py b/deluge/scripts/create_plugin.py
new file mode 100644
index 0000000..7383661
--- /dev/null
+++ b/deluge/scripts/create_plugin.py
@@ -0,0 +1,415 @@
+"""
+Creates an empty plugin and links it from ~/.config/deluge/plugins
+This plugin includes the framework for using the preferences dialog
+
+example:
+python create_plugin.py --name MyPlugin2 --basepath . --author-name "Your Name" --author-email "yourname@example.com"
+
+"""
+
+import os
+import sys
+from argparse import ArgumentParser
+from datetime import datetime
+
+import deluge.common
+
+parser = ArgumentParser()
+parser.add_argument(
+ '-n', '--name', metavar='<plugin name>', required=True, help='Plugin name'
+)
+parser.add_argument('-m', '--module-name', metavar='<module name>', help='Module name')
+parser.add_argument(
+ '-p', '--basepath', metavar='<path>', required=True, help='Base path'
+)
+parser.add_argument(
+ '-a',
+ '--author-name',
+ metavar='<author name>',
+ required=True,
+ help='Author name,for the GPL header',
+)
+parser.add_argument(
+ '-e',
+ '--author-email',
+ metavar='<author email>',
+ required=True,
+ help='Author email,for the GPL header',
+)
+parser.add_argument('-u', '--url', metavar='<URL>', help='Homepage URL')
+parser.add_argument(
+ '-c',
+ '--config',
+ metavar='<Config dir>',
+ dest='configdir',
+ help='Location of deluge configuration',
+)
+
+options = parser.parse_args()
+
+
+def create_plugin():
+ if not options.url:
+ options.url = ''
+
+ if not os.path.exists(options.basepath):
+ print('basepath does not exist')
+ return
+
+ if not options.configdir:
+ options.configdir = deluge.common.get_default_config_dir()
+
+ options.configdir = os.path.realpath(options.configdir)
+
+ real_name = options.name
+ name = real_name.replace(' ', '_')
+ safe_name = name.lower()
+ if options.module_name:
+ safe_name = options.module_name.lower()
+ plugin_base = os.path.realpath(os.path.join(options.basepath, name))
+ src = os.path.join(plugin_base, 'deluge_' + safe_name)
+ data_dir = os.path.join(src, 'data')
+ python_path = sys.executable
+
+ if os.path.exists(plugin_base):
+ print('the directory %s already exists, delete it first' % plugin_base)
+ return
+
+ def write_file(path, filename, template, include_gpl=True):
+ plugin_args = {
+ 'author_name': options.author_name,
+ 'author_email': options.author_email,
+ 'name': name,
+ 'safe_name': safe_name,
+ 'filename': filename,
+ 'plugin_base': plugin_base,
+ 'python_path': python_path,
+ 'url': options.url,
+ 'configdir': options.configdir,
+ 'current_year': datetime.utcnow().year,
+ }
+
+ filename = os.path.join(path, filename)
+ with open(filename, 'w') as _file:
+ if filename.endswith('.py') and include_gpl:
+ _file.write(GPL % plugin_args)
+ _file.write(template % plugin_args)
+
+ print('creating folders..')
+ os.mkdir(plugin_base)
+ os.mkdir(src)
+ os.mkdir(data_dir)
+
+ print('creating files..')
+ write_file(plugin_base, 'setup.py', SETUP)
+ write_file(src, '__init__.py', INIT)
+ write_file(src, 'gtk3ui.py', GTK3UI)
+ write_file(src, 'webui.py', WEBUI)
+ write_file(src, 'core.py', CORE)
+ write_file(src, 'common.py', COMMON)
+ write_file(data_dir, 'config.ui', GLADE)
+ write_file(data_dir, '%s.js' % safe_name, DEFAULT_JS)
+
+ # add an input parameter for this?
+ print('building dev-link..')
+ if deluge.common.windows_check():
+ write_file(plugin_base, 'create_dev_link.bat', CREATE_DEV_LINK_WIN)
+ dev_link_path = os.path.join(plugin_base, 'create_dev_link.bat')
+ else:
+ write_file(plugin_base, 'create_dev_link.sh', CREATE_DEV_LINK_NIX)
+ dev_link_path = os.path.join(plugin_base, 'create_dev_link.sh')
+ os.system('chmod +x %s' % dev_link_path) # lazy..
+ os.system(dev_link_path)
+
+
+CORE = """from __future__ import unicode_literals
+
+import logging
+
+import deluge.configmanager
+from deluge.core.rpcserver import export
+from deluge.plugins.pluginbase import CorePluginBase
+
+log = logging.getLogger(__name__)
+
+DEFAULT_PREFS = {
+ 'test': 'NiNiNi'
+}
+
+
+class Core(CorePluginBase):
+ def enable(self):
+ self.config = deluge.configmanager.ConfigManager(
+ '%(safe_name)s.conf', DEFAULT_PREFS)
+
+ def disable(self):
+ pass
+
+ def update(self):
+ pass
+
+ @export
+ def set_config(self, config):
+ \"\"\"Sets the config dictionary\"\"\"
+ for key in config:
+ self.config[key] = config[key]
+ self.config.save()
+
+ @export
+ def get_config(self):
+ \"\"\"Returns the config dictionary\"\"\"
+ return self.config.config
+"""
+
+INIT = """from deluge.plugins.init import PluginInitBase
+
+
+class CorePlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .core import Core as PluginClass
+ self._plugin_cls = PluginClass
+ super(CorePlugin, self).__init__(plugin_name)
+
+
+class Gtk3UIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtk3ui import Gtk3UI as PluginClass
+ self._plugin_cls = PluginClass
+ super(Gtk3UIPlugin, self).__init__(plugin_name)
+
+
+class WebUIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .webui import WebUI as PluginClass
+ self._plugin_cls = PluginClass
+ super(WebUIPlugin, self).__init__(plugin_name)
+"""
+
+
+SETUP = """from setuptools import find_packages, setup
+
+__plugin_name__ = '%(name)s'
+__author__ = '%(author_name)s'
+__author_email__ = '%(author_email)s'
+__version__ = '0.1'
+__url__ = '%(url)s'
+__license__ = 'GPLv3'
+__description__ = ''
+__long_description__ = \"\"\"\"\"\"
+__pkg_data__ = {'deluge_'+__plugin_name__.lower(): ['data/*']}
+
+setup(
+ name=__plugin_name__,
+ version=__version__,
+ description=__description__,
+ author=__author__,
+ author_email=__author_email__,
+ url=__url__,
+ license=__license__,
+ long_description=__long_description__,
+
+ packages=find_packages(),
+ package_data=__pkg_data__,
+
+ entry_points=\"\"\"
+ [deluge.plugin.core]
+ %%s = deluge_%%s:CorePlugin
+ [deluge.plugin.gtk3ui]
+ %%s = deluge_%%s:Gtk3UIPlugin
+ [deluge.plugin.web]
+ %%s = deluge_%%s:WebUIPlugin
+ \"\"\" %% ((__plugin_name__, __plugin_name__.lower()) * 3)
+)
+"""
+
+COMMON = """from __future__ import unicode_literals
+
+import os.path
+
+from pkg_resources import resource_filename
+
+
+def get_resource(filename):
+ return resource_filename(__package__, os.path.join('data', filename))
+"""
+
+GTK3UI = """from __future__ import unicode_literals
+
+import logging
+
+from gi.repository import Gtk
+
+import deluge.component as component
+from deluge.plugins.pluginbase import Gtk3PluginBase
+from deluge.ui.client import client
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class Gtk3UI(Gtk3PluginBase):
+ def enable(self):
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(get_resource('config.ui'))
+
+ component.get('Preferences').add_page(
+ '%(name)s', self.builder.get_object('prefs_box'))
+ component.get('PluginManager').register_hook(
+ 'on_apply_prefs', self.on_apply_prefs)
+ component.get('PluginManager').register_hook(
+ 'on_show_prefs', self.on_show_prefs)
+
+ def disable(self):
+ component.get('Preferences').remove_page('%(name)s')
+ component.get('PluginManager').deregister_hook(
+ 'on_apply_prefs', self.on_apply_prefs)
+ component.get('PluginManager').deregister_hook(
+ 'on_show_prefs', self.on_show_prefs)
+
+ def on_apply_prefs(self):
+ log.debug('applying prefs for %(name)s')
+ config = {
+ 'test': self.builder.get_object('txt_test').get_text()
+ }
+ client.%(safe_name)s.set_config(config)
+
+ def on_show_prefs(self):
+ client.%(safe_name)s.get_config().addCallback(self.cb_get_config)
+
+ def cb_get_config(self, config):
+ \"\"\"callback for on show_prefs\"\"\"
+ self.builder.get_object('txt_test').set_text(config['test'])
+"""
+
+GLADE = """<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkWindow" id="window1">
+ <child>
+ <object class="GtkBox" id="prefs_box">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Test config value:</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="txt_test">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
+"""
+
+WEBUI = """from __future__ import unicode_literals
+
+import logging
+
+from deluge.plugins.pluginbase import WebPluginBase
+
+from .common import get_resource
+
+log = logging.getLogger(__name__)
+
+
+class WebUI(WebPluginBase):
+
+ scripts = [get_resource('%(safe_name)s.js')]
+
+ def enable(self):
+ pass
+
+ def disable(self):
+ pass
+"""
+
+DEFAULT_JS = """/**
+ * Script: %(filename)s
+ * The client-side javascript code for the %(name)s plugin.
+ *
+ * Copyright:
+ * (C) %(author_name)s %(current_year)s <%(author_email)s>
+ *
+ * This file is part of %(name)s and is licensed under GNU GPL 3.0, or
+ * later, with the additional special exception to link portions of this
+ * program with the OpenSSL library. See LICENSE for more details.
+ */
+
+%(name)sPlugin = Ext.extend(Deluge.Plugin, {
+ constructor: function(config) {
+ config = Ext.apply({
+ name: '%(name)s'
+ }, config);
+ %(name)sPlugin.superclass.constructor.call(this, config);
+ },
+
+ onDisable: function() {
+ deluge.preferences.removePage(this.prefsPage);
+ },
+
+ onEnable: function() {
+ this.prefsPage = deluge.preferences.addPage(
+ new Deluge.ux.preferences.%(name)sPage());
+ }
+});
+new %(name)sPlugin();
+"""
+
+GPL = """# -*- coding: utf-8 -*-
+# Copyright (C) %(current_year)d %(author_name)s <%(author_email)s>
+#
+# Basic plugin template created by the Deluge Team.
+#
+# This file is part of %(name)s and is licensed under GNU GPL 3.0, or later,
+# with the additional special exception to link portions of this program with
+# the OpenSSL library. See LICENSE for more details.
+"""
+
+CREATE_DEV_LINK_NIX = """#!/bin/bash
+BASEDIR=$(cd `dirname $0` && pwd)
+CONFIG_DIR=$( test -z $1 && echo "%(configdir)s" || echo "$1")
+[ -d "$CONFIG_DIR/plugins" ] || echo "Config dir \"$CONFIG_DIR\" is either not a directory \
+or is not a proper deluge config directory. Exiting"
+[ -d "$CONFIG_DIR/plugins" ] || exit 1
+cd $BASEDIR
+test -d $BASEDIR/temp || mkdir $BASEDIR/temp
+export PYTHONPATH=$BASEDIR/temp
+%(python_path)s setup.py build develop --install-dir $BASEDIR/temp
+cp $BASEDIR/temp/*.egg-link $CONFIG_DIR/plugins
+rm -fr $BASEDIR/temp
+"""
+
+CREATE_DEV_LINK_WIN = """@echo off
+set BASEDIR=%%~dp0
+set BASEDIR=%%BASEDIR:~0,-1%%
+if [%%1]==[] (
+ set CONFIG_DIR=%(configdir)s
+) else (
+ set CONFIG_DIR=%%1
+)
+if not exist %%CONFIG_DIR%%\\plugins (
+ echo Config dir %%CONFIG_DIR%% is either not a directory \
+or is not a proper deluge config directory. Exiting
+ exit /b 1
+)
+cd %%BASEDIR%%
+if not exist %%BASEDIR%%\\temp (
+ md %%BASEDIR%%\\temp
+)
+set PYTHONPATH=%%BASEDIR%%/temp
+%(python_path)s setup.py build develop --install-dir %%BASEDIR%%\\temp
+copy "%%BASEDIR%%\\temp\\*.egg-link" "%%CONFIG_DIR%%\\plugins"
+rd /s /q %%BASEDIR%%\\temp
+"""
+
+create_plugin()
diff --git a/deluge/scripts/deluge_remote.py b/deluge/scripts/deluge_remote.py
new file mode 100644
index 0000000..d983e53
--- /dev/null
+++ b/deluge/scripts/deluge_remote.py
@@ -0,0 +1,138 @@
+#!/usr/bin/python
+#
+# This software is in the public domain, furnished "as is", without technical
+# support, and with no warranty, express or implied, as to its usefulness for
+# any purpose.
+#
+# deluge_config.py
+# This code (at least in theory) allows one to alter configuration settings
+# on a deluge backend. At the moment, though, it only alters the parameters
+# that I've found useful to change.
+#
+# Authour: Garett Harnish
+
+import logging
+import sys
+from optparse import OptionParser
+
+
+def is_float_digit(string):
+ if string.isdigit():
+ return True
+ else:
+ try:
+ float(string)
+ return True
+ except ValueError:
+ return False
+
+
+# set up command-line options
+parser = OptionParser()
+parser.add_option(
+ '--port',
+ help='port for deluge backend host (default: 58846)',
+ default='58846',
+ dest='port',
+)
+parser.add_option(
+ '--host',
+ help='hostname of deluge backend to connect to (default: localhost)',
+ default='localhost',
+ dest='host',
+)
+parser.add_option(
+ '--max_active_limit',
+ dest='max_active_limit',
+ help='sets the absolute maximum number of active torrents on the deluge backend',
+)
+parser.add_option(
+ '--max_active_downloading',
+ dest='max_active_downloading',
+ help='sets the maximum number of active downloading torrents on the deluge backend',
+)
+parser.add_option(
+ '--max_active_seeding',
+ dest='max_active_seeding',
+ help='sets the maximum number of active seeding torrents on the deluge backend',
+)
+parser.add_option(
+ '--max_download_speed',
+ help='sets the maximum global download speed on the deluge backend',
+ dest='max_download_speed',
+)
+parser.add_option(
+ '--max_upload_speed',
+ help='sets the maximum global upload speed on the deluge backend',
+ dest='max_upload_speed',
+)
+parser.add_option(
+ '--debug',
+ help='outputs debug information to the console',
+ default=False,
+ action='store_true',
+ dest='debug',
+)
+
+# grab command-line options
+(options, args) = parser.parse_args()
+
+if not options.debug:
+ logging.disable(logging.ERROR)
+
+settings = {}
+
+# set values if set and valid
+if options.max_active_limit:
+ if options.max_active_limit.isdigit() and int(options.max_active_limit) >= 0:
+ settings['max_active_limit'] = int(options.max_active_limit)
+ else:
+ sys.stderr.write('ERROR: Invalid max_active_limit parameter!\n')
+ sys.exit(-1)
+
+if options.max_active_downloading:
+ if (
+ options.max_active_downloading.isdigit()
+ and int(options.max_active_downloading) >= 0
+ ):
+ settings['max_active_downloading'] = int(options.max_active_downloading)
+ else:
+ sys.stderr.write('ERROR: Invalid max_active_downloading parameter!\n')
+ sys.exit(-1)
+
+if options.max_active_seeding:
+ if options.max_active_seeding.isdigit() and int(options.max_active_seeding) >= 0:
+ settings['max_active_seeding'] = int(options.max_active_seeding)
+ else:
+ sys.stderr.write('ERROR: Invalid max_active_seeding parameter!\n')
+ sys.exit(-1)
+
+if options.max_download_speed:
+ if is_float_digit(options.max_download_speed) and (
+ float(options.max_download_speed) >= 0.0
+ or float(options.max_download_speed) == -1.0
+ ):
+ settings['max_download_speed'] = float(options.max_download_speed)
+ else:
+ sys.stderr.write('ERROR: Invalid max_download_speed parameter!\n')
+ sys.exit(-1)
+
+if options.max_upload_speed:
+ if is_float_digit(options.max_upload_speed) and (
+ float(options.max_upload_speed) >= 0.0
+ or float(options.max_upload_speed) == -1.0
+ ):
+ settings['max_upload_speed'] = float(options.max_upload_speed)
+ else:
+ sys.stderr.write('ERROR: Invalid max_upload_speed parameter!\n')
+ sys.exit(-1)
+
+# If there is something to do ...
+if settings:
+ # create connection to daemon
+ from deluge.ui.client import sclient as client
+
+ client.set_core_uri('http://' + options.host + ':' + options.port)
+
+ # commit configurations changes
+ client.set_config(settings)
diff --git a/deluge/tests/__init__.py b/deluge/tests/__init__.py
new file mode 100644
index 0000000..7b6afa1
--- /dev/null
+++ b/deluge/tests/__init__.py
@@ -0,0 +1,17 @@
+# Increase open file descriptor limit to allow tests to run
+# without getting error: what(): epoll: Too many open files
+from deluge.i18n import setup_translation
+
+try:
+ import resource
+except ImportError: # Does not exist on Windows
+ pass
+else:
+ try:
+ resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 65536))
+ except (ValueError, resource.error) as ex:
+ error = 'Failed to raise file descriptor limit: %s' % ex
+ # print(error)
+
+# Initialize gettext
+setup_translation()
diff --git a/deluge/tests/common.py b/deluge/tests/common.py
new file mode 100644
index 0000000..b594156
--- /dev/null
+++ b/deluge/tests/common.py
@@ -0,0 +1,363 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+import sys
+import traceback
+
+import pytest
+from twisted.internet import defer, protocol, reactor
+from twisted.internet.defer import Deferred
+from twisted.internet.error import CannotListenError
+
+import deluge.configmanager
+import deluge.core.preferencesmanager
+import deluge.log
+from deluge.common import get_localhost_auth
+from deluge.error import DelugeError
+from deluge.ui.client import Client
+
+# This sets log level to critical, so use log.critical() to debug while running unit tests
+deluge.log.setup_logger('none')
+
+
+def disable_new_release_check():
+ deluge.core.preferencesmanager.DEFAULT_PREFS['new_release_check'] = False
+
+
+def setup_test_logger(level='info', prefix='deluge'):
+ deluge.log.setup_logger(level, filename='%s.log' % prefix, twisted_observer=False)
+
+
+def get_test_data_file(filename):
+ return os.path.join(os.path.join(os.path.dirname(__file__), 'data'), filename)
+
+
+def todo_test(caller):
+ # If we are using the delugereporter we can set todo mark on the test
+ # Without the delugereporter the todo would print a stack trace, so in
+ # that case we rely only on skipTest
+ if os.environ.get('DELUGE_REPORTER', None):
+ getattr(caller, caller._testMethodName).__func__.todo = 'To be fixed'
+
+ filename = os.path.basename(traceback.extract_stack(None, 2)[0][0])
+ funcname = traceback.extract_stack(None, 2)[0][2]
+ pytest.skip(f'TODO: {filename}:{funcname}')
+
+
+def add_watchdog(deferred, timeout=0.05, message=None):
+ def callback(value):
+ if not watchdog.called and not watchdog.cancelled:
+ watchdog.cancel()
+ if not deferred.called:
+ if message:
+ print(message)
+ deferred.cancel()
+ return value
+
+ deferred.addBoth(callback)
+ watchdog = reactor.callLater(timeout, defer.Deferred.addTimeout, deferred)
+ return watchdog
+
+
+class ReactorOverride:
+ """Class used to patch reactor while running unit tests
+ to avoid starting and stopping the twisted reactor
+ """
+
+ def __getattr__(self, attr):
+ if attr == 'run':
+ return self._run
+ if attr == 'stop':
+ return self._stop
+ return getattr(reactor, attr)
+
+ def _run(self):
+ pass
+
+ def _stop(self):
+ pass
+
+ def addReader(self, arg): # NOQA: N802
+ pass
+
+
+class ProcessOutputHandler(protocol.ProcessProtocol):
+ def __init__(
+ self,
+ script,
+ shutdown_func,
+ callbacks,
+ logfile=None,
+ print_stdout=True,
+ print_stderr=True,
+ ):
+ """Executes a script and handle the process' output to stdout and stderr.
+
+ Args:
+ script (str): The script to execute.
+ shutdown_func (func): A function which will gracefully stop the called script.
+ callbacks (list): Callbacks to trigger if the expected output if found.
+ logfile (str, optional): Filename to wrote the process' output.
+ print_stderr (bool): Print the process' stderr output to stdout.
+ print_stdout (bool): Print the process' stdout output to stdout.
+
+ """
+ self.callbacks = callbacks
+ self.script = script
+ self.shutdown_func = shutdown_func
+ self.log_output = ''
+ self.stderr_out = ''
+ self.logfile = logfile
+ self.print_stdout = print_stdout
+ self.print_stderr = print_stderr
+ self.quit_d = None
+ self.killed = False
+ self.watchdogs = []
+
+ def connectionMade(self): # NOQA: N802
+ self.transport.write(self.script)
+ self.transport.closeStdin()
+
+ def outConnectionLost(self): # NOQA: N802
+ if not self.logfile:
+ return
+ with open(self.logfile, 'w') as f:
+ f.write(self.log_output)
+
+ @defer.inlineCallbacks
+ def kill(self):
+ """Kill the running process.
+
+ Returns:
+ Deferred: A deferred that is triggered when the process has quit.
+
+ """
+ if self.killed:
+ return
+ self.killed = True
+ self._kill_watchdogs()
+ self.quit_d = Deferred()
+ shutdown = self.shutdown_func()
+ shutdown.addTimeout(5, reactor)
+ try:
+ yield shutdown
+ except Exception:
+ self.transport.signalProcess('TERM')
+ result = yield self.quit_d
+ return result
+
+ def _kill_watchdogs(self):
+ """Cancel all watchdogs"""
+ for w in self.watchdogs:
+ if not w.called and not w.cancelled:
+ w.cancel()
+
+ def processEnded(self, status): # NOQA: N802
+ self.transport.loseConnection()
+ if self.quit_d is None:
+ return
+ if status.value.exitCode == 0:
+ self.quit_d.callback(True)
+ else:
+ self.quit_d.errback(status)
+
+ def check_callbacks(self, data, cb_type='stdout'):
+ ret = False
+ for c in self.callbacks:
+ if cb_type not in c['types'] or c['deferred'].called:
+ continue
+ for trigger in c['triggers']:
+ if trigger['expr'] in data:
+ ret = True
+ if 'cb' in trigger:
+ trigger['cb'](self, c['deferred'], data, self.log_output)
+ elif 'value' not in trigger:
+ raise Exception('Trigger must specify either "cb" or "value"')
+ else:
+ val = trigger['value'](self, data, self.log_output)
+ if trigger.get('type', 'callback') == 'errback':
+ c['deferred'].errback(val)
+ else:
+ c['deferred'].callback(val)
+ return ret
+
+ def outReceived(self, data): # NOQA: N802
+ """Process output from stdout"""
+ data = data.decode('utf8')
+ self.log_output += data
+ if self.check_callbacks(data):
+ pass
+ elif '[ERROR' in data:
+ if not self.print_stdout:
+ return
+ print(data, end=' ')
+
+ def errReceived(self, data): # NOQA: N802
+ """Process output from stderr"""
+ data = data.decode('utf8')
+ self.log_output += data
+ self.stderr_out += data
+ self.check_callbacks(data, cb_type='stderr')
+ if not self.print_stderr:
+ return
+ data = '\n%s' % data.strip()
+ prefixed = data.replace('\n', '\nSTDERR: ')
+ print('\n%s' % prefixed)
+
+
+def start_core(
+ listen_port=58900,
+ logfile=None,
+ timeout=10,
+ timeout_msg=None,
+ custom_script='',
+ print_stdout=True,
+ print_stderr=True,
+ extra_callbacks=None,
+ config_directory='',
+):
+ """Start the deluge core as a daemon.
+
+ Args:
+ listen_port (int, optional): The port the daemon listens for client connections.
+ logfile (str, optional): Logfile name to write the output from the process.
+ timeout (int): If none of the callbacks have been triggered before the timeout, the process is killed.
+ timeout_msg (str): The message to print when the timeout expires.
+ custom_script (str): Extra python code to insert into the daemon process script.
+ print_stderr (bool): If the output from the process' stderr should be printed to stdout.
+ print_stdout (bool): If the output from the process' stdout should be printed to stdout.
+ extra_callbacks (list): A list of dictionaries specifying extra callbacks.
+
+ Returns:
+ tuple(Deferred, ProcessOutputHandler):
+
+ The Deferred is fired when the core callback is triggered either after the default
+ output triggers are matched (daemon successfully started, or failed to start),
+ or upon timeout expiry. The ProcessOutputHandler is the handler for the deluged process.
+
+ """
+ daemon_script = """
+import sys
+import deluge.core.daemon_entry
+
+from deluge.common import windows_check
+
+if windows_check():
+ sys.argv.extend(['-c', '%(dir)s', '-L', 'info', '-p', '%(port)d'])
+else:
+ sys.argv.extend(['-d', '-c', '%(dir)s', '-L', 'info', '-p', '%(port)d'])
+
+try:
+ daemon = deluge.core.daemon_entry.start_daemon(skip_start=True)
+ %(script)s
+ daemon.start()
+except Exception:
+ import traceback
+ sys.stderr.write('Exception raised:\\n %%s' %% traceback.format_exc())
+""" % {
+ 'dir': config_directory.as_posix(),
+ 'port': listen_port,
+ 'script': custom_script,
+ }
+
+ callbacks = []
+ default_core_cb = {'deferred': Deferred(), 'types': 'stdout'}
+ if timeout:
+ default_core_cb['timeout'] = timeout
+
+ # Specify the triggers for daemon log output
+ default_core_cb['triggers'] = [
+ {'expr': 'Finished loading ', 'value': lambda reader, data, data_all: reader},
+ {
+ 'expr': 'Cannot start deluged, listen port in use.',
+ 'type': 'errback',
+ 'value': lambda reader, data, data_all: CannotListenError(
+ 'localhost',
+ listen_port,
+ 'Could not start deluge test client!\n%s' % data,
+ ),
+ },
+ {
+ 'expr': 'Traceback',
+ 'type': 'errback',
+ 'value': lambda reader, data, data_all: DelugeError(
+ 'Traceback found when starting daemon:\n%s' % data
+ ),
+ },
+ ]
+
+ callbacks.append(default_core_cb)
+ if extra_callbacks:
+ callbacks.extend(extra_callbacks)
+
+ @defer.inlineCallbacks
+ def shutdown_daemon():
+ username, password = get_localhost_auth()
+ client = Client()
+ yield client.connect(
+ 'localhost', listen_port, username=username, password=password
+ )
+ yield client.daemon.shutdown()
+
+ process_protocol = start_process(
+ daemon_script, shutdown_daemon, callbacks, logfile, print_stdout, print_stderr
+ )
+ return default_core_cb['deferred'], process_protocol
+
+
+def start_process(
+ script, shutdown_func, callbacks, logfile=None, print_stdout=True, print_stderr=True
+):
+ """
+ Starts an external python process which executes the given script.
+
+ Args:
+ script (str): The content of the script to execute.
+ shutdown_func (func): A function which will gracefully end the called script.
+ callbacks (list): list of dictionaries specifying callbacks.
+ logfile (str, optional): Logfile name to write the output from the process.
+ print_stderr (bool): If the output from the process' stderr should be printed to stdout.
+ print_stdout (bool): If the output from the process' stdout should be printed to stdout.
+
+ Returns:
+ ProcessOutputHandler: The handler for the process's output.
+
+ Each entry in the callbacks list is a dictionary with the following keys:
+ * "deferred": The deferred to be called when matched.
+ * "types": The output this callback should be matched against.
+ Possible values: ["stdout", "stderr"]
+ * "timeout" (optional): A timeout in seconds for the deferred.
+ * "triggers": A list of dictionaries, each specifying specifying a trigger:
+ * "expr": A string to match against the log output.
+ * "value": A function to produce the result to be passed to the callback.
+ * "type" (optional): A string that specifies wether to trigger a regular callback or errback.
+
+ """
+ cwd = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
+ process_protocol = ProcessOutputHandler(
+ script.encode('utf8'),
+ shutdown_func,
+ callbacks,
+ logfile,
+ print_stdout,
+ print_stderr,
+ )
+
+ # Add timeouts to deferreds
+ for c in callbacks:
+ if 'timeout' in c:
+ w = add_watchdog(
+ c['deferred'], timeout=c['timeout'], message=c.get('timeout_msg', None)
+ )
+ process_protocol.watchdogs.append(w)
+
+ reactor.spawnProcess(
+ process_protocol, sys.executable, args=[sys.executable], path=cwd
+ )
+ return process_protocol
diff --git a/deluge/tests/common_web.py b/deluge/tests/common_web.py
new file mode 100644
index 0000000..f7da577
--- /dev/null
+++ b/deluge/tests/common_web.py
@@ -0,0 +1,57 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import pytest
+
+import deluge.common
+import deluge.ui.web.auth
+import deluge.ui.web.server
+from deluge import configmanager
+from deluge.conftest import BaseTestCase
+from deluge.ui.web.server import DelugeWeb
+
+from .common import ReactorOverride
+
+
+@pytest.mark.usefixtures('daemon', 'component')
+class WebServerTestBase(BaseTestCase):
+ """
+ Base class for tests that need a running webapi
+
+ """
+
+ def set_up(self):
+ self.host_id = None
+ deluge.ui.web.server.reactor = ReactorOverride()
+ return self.start_webapi(None)
+
+ def start_webapi(self, arg):
+ config_defaults = deluge.ui.web.server.CONFIG_DEFAULTS.copy()
+ config_defaults['port'] = 8999
+ self.config = configmanager.ConfigManager('web.conf', config_defaults)
+
+ self.deluge_web = DelugeWeb(daemon=False)
+
+ host = list(self.deluge_web.web_api.hostlist.config['hosts'][0])
+ host[2] = self.listen_port
+ self.deluge_web.web_api.hostlist.config['hosts'][0] = tuple(host)
+ self.host_id = host[0]
+ self.deluge_web.start()
+
+
+class WebServerMockBase:
+ """
+ Class with utility functions for mocking with tests using the webserver
+
+ """
+
+ def mock_authentication_ignore(self, auth):
+ def check_request(request, method=None, level=None):
+ pass
+
+ self.patch(auth, 'check_request', check_request)
diff --git a/deluge/tests/daemon_base.py b/deluge/tests/daemon_base.py
new file mode 100644
index 0000000..707570f
--- /dev/null
+++ b/deluge/tests/daemon_base.py
@@ -0,0 +1,67 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import pytest
+from twisted.internet import defer
+from twisted.internet.error import CannotListenError
+
+import deluge.component as component
+
+from . import common
+
+
+@pytest.mark.usefixtures('config_dir')
+class DaemonBase:
+ def common_set_up(self):
+ self.listen_port = 58900
+ self.core = None
+ return component.start()
+
+ def terminate_core(self, *args):
+ if args[0] is not None:
+ if hasattr(args[0], 'getTraceback'):
+ print('terminate_core: Errback Exception: %s' % args[0].getTraceback())
+
+ if not self.core.killed:
+ d = self.core.kill()
+ return d
+
+ @defer.inlineCallbacks
+ def start_core(
+ self,
+ arg,
+ custom_script='',
+ logfile='',
+ print_stdout=True,
+ print_stderr=True,
+ timeout=5,
+ port_range=10,
+ extra_callbacks=None,
+ ):
+ logfile = f'daemon_{self.id()}.log' if logfile == '' else logfile
+
+ for dummy in range(port_range):
+ try:
+ d, self.core = common.start_core(
+ listen_port=self.listen_port,
+ logfile=logfile,
+ timeout=timeout,
+ timeout_msg='Timeout!',
+ custom_script=custom_script,
+ print_stdout=print_stdout,
+ print_stderr=print_stderr,
+ extra_callbacks=extra_callbacks,
+ config_directory=self.config_dir,
+ )
+ yield d
+ except CannotListenError as ex:
+ exception_error = ex
+ self.listen_port += 1
+ except (KeyboardInterrupt, SystemExit):
+ raise
+ else:
+ return
+ raise exception_error
diff --git a/deluge/tests/data/deluge.png b/deluge/tests/data/deluge.png
new file mode 100644
index 0000000..6787fa3
--- /dev/null
+++ b/deluge/tests/data/deluge.png
Binary files differ
diff --git a/deluge/tests/data/dir_with_6_files.torrent b/deluge/tests/data/dir_with_6_files.torrent
new file mode 100644
index 0000000..2c6b5fb
--- /dev/null
+++ b/deluge/tests/data/dir_with_6_files.torrent
Binary files differ
diff --git a/deluge/tests/data/dir_with_single_file.torrent b/deluge/tests/data/dir_with_single_file.torrent
new file mode 100644
index 0000000..33fec2c
--- /dev/null
+++ b/deluge/tests/data/dir_with_single_file.torrent
@@ -0,0 +1 @@
+d10:created by13:mktorrent 1.113:creation datei1684991433e4:infod5:filesld6:lengthi9e4:pathl15:single_file.txteee4:name20:dir_with_single_file12:piece lengthi262144e6:pieces20:Wi,=35Yhee \ No newline at end of file
diff --git a/deluge/tests/data/filehash_field.torrent b/deluge/tests/data/filehash_field.torrent
new file mode 100644
index 0000000..99e41f0
--- /dev/null
+++ b/deluge/tests/data/filehash_field.torrent
@@ -0,0 +1,2 @@
+d13:creation datei1476342472e4:infod5:filesld4:ed2k16:2M2&XE 18:filehash20:f4^S96P՝R6:lengthi54e4:pathl8:tull.txteed4:ed2k16:_G L@8:filehash20:vXd/n136:lengthi54e4:pathl56:還在一個人無聊嗎~還不趕緊上來聊天美.txteee4:name16:torrent_filehash12:piece lengthi32768e6:pieces20:G@g\&\ fB
+ee \ No newline at end of file
diff --git a/deluge/tests/data/google.ico b/deluge/tests/data/google.ico
new file mode 100644
index 0000000..82339b3
--- /dev/null
+++ b/deluge/tests/data/google.ico
Binary files differ
diff --git a/deluge/tests/data/md5sum.torrent b/deluge/tests/data/md5sum.torrent
new file mode 100644
index 0000000..0e8c93f
--- /dev/null
+++ b/deluge/tests/data/md5sum.torrent
@@ -0,0 +1 @@
+d8:announce25:lol.this.is.not.a.tracker7:comment36:created with py3createtorrent v0.9.610:created by23:py3createtorrent v0.9.613:creation datei1590076175e4:infod5:filesld6:lengthi4e6:md5sum32:59bcc3ad6775562f845953cf016242254:pathl3:loleed6:lengthi5e6:md5sum32:10245815f893d79f3d779690774f0b434:pathl4:rofleee4:name4:test12:piece lengthi16384e6:pieces20:86Aڲ-Y>+S]\/ee \ No newline at end of file
diff --git a/deluge/tests/data/seo.svg b/deluge/tests/data/seo.svg
new file mode 100644
index 0000000..fc96f74
--- /dev/null
+++ b/deluge/tests/data/seo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 95.63 110.42" width="10cm" height="10cm"><defs><style>.cls-1{fill:#ec5728;}.cls-2{fill:#fff;}</style></defs><title>seocom-target</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><polygon class="cls-1" points="95.63 82.81 47.81 110.42 0 82.81 0 27.61 47.81 0 95.63 27.61 95.63 82.81"></polygon><path class="cls-2" d="M47.81,18.64A36.57,36.57,0,1,0,84.38,55.21,36.57,36.57,0,0,0,47.81,18.64Zm0,63.92A27.35,27.35,0,1,1,75.16,55.21,27.35,27.35,0,0,1,47.81,82.56Z"></path><path class="cls-2" d="M47.81,39.46A15.75,15.75,0,1,0,63.56,55.21,15.75,15.75,0,0,0,47.81,39.46Zm0,24.25a8.5,8.5,0,1,1,8.5-8.5A8.51,8.51,0,0,1,47.81,63.71Z"></path></g></g></svg> \ No newline at end of file
diff --git a/deluge/tests/data/test.torrent b/deluge/tests/data/test.torrent
new file mode 100644
index 0000000..847ec58
--- /dev/null
+++ b/deluge/tests/data/test.torrent
@@ -0,0 +1,2 @@
+d8:announce40:http://tracker.aelitis.com:6969/announce13:announce-listll40:http://tracker.aelitis.com:6969/announceel41:http://tracker.aelitis.com:16969/announceee18:azureus_propertiesd17:dht_backup_enablei0ee7:comment34:provided by http://getazureus.com/13:comment.utf-834:provided by http://getazureus.com/10:created by19:Azureus/2.5.0.3_CVS13:creation datei1169429806e4:infod4:ed2k16:>pl]K^\;;e6:lengthi307949e4:name22:azcvsupdater_2.6.2.jar10:name.utf-822:azcvsupdater_2.6.2.jar12:piece lengthi32768e6:pieces200:B'bsu97u<w\fԛ}:qv"7 y! lv{/"PD8-MFx+S`%%
+;ϐ /F>gA2|ڂb#wIfWswKrGWiد#u E?:ub(oj ^AJ?֌&7:privatei0e4:sha120:2ζ"Կ^Khŷee \ No newline at end of file
diff --git a/deluge/tests/data/test_torrent.file.torrent b/deluge/tests/data/test_torrent.file.torrent
new file mode 100644
index 0000000..fca14ca
--- /dev/null
+++ b/deluge/tests/data/test_torrent.file.torrent
@@ -0,0 +1,2 @@
+d7:comment17:Test torrent file10:created by11:Deluge Team13:creation datei1411826665e8:encoding5:UTF-84:infod6:lengthi512000e4:name17:test_torrent.file12:piece lengthi32768e6:pieces320:$2Tj >hU.--~–ޔBzuEB1@ͥ/K"zF0֣[asV1B^Wp-S׶F`M9)},4niW jQI̗(,t؋chi*M}^WS7 h:-beTXa3m|J"]0$}l@L V,4˫zMLģJ*
+\AP&I9}20֎H:_8<V2JYb2'2h0\*_j7:privatei0eee \ No newline at end of file
diff --git a/deluge/tests/data/ubuntu-9.04-desktop-i386.iso.torrent b/deluge/tests/data/ubuntu-9.04-desktop-i386.iso.torrent
new file mode 100644
index 0000000..b55c9ae
--- /dev/null
+++ b/deluge/tests/data/ubuntu-9.04-desktop-i386.iso.torrent
Binary files differ
diff --git a/deluge/tests/data/unicode_file.torrent b/deluge/tests/data/unicode_file.torrent
new file mode 100644
index 0000000..e62fb1f
--- /dev/null
+++ b/deluge/tests/data/unicode_file.torrent
@@ -0,0 +1 @@
+d13:creation datei1627211242e8:encoding5:UTF-84:infod6:lengthi32e4:name35:সুকুমার রায়.txt12:piece lengthi32768e6:pieces20:",.xe2U7:privatei0eee
diff --git a/deluge/tests/data/unicode_filenames.torrent b/deluge/tests/data/unicode_filenames.torrent
new file mode 100644
index 0000000..e34f055
--- /dev/null
+++ b/deluge/tests/data/unicode_filenames.torrent
Binary files differ
diff --git a/deluge/tests/data/utf8_filename_torrents.state b/deluge/tests/data/utf8_filename_torrents.state
new file mode 100644
index 0000000..0e9c33d
--- /dev/null
+++ b/deluge/tests/data/utf8_filename_torrents.state
@@ -0,0 +1,85 @@
+(ideluge.core.torrentmanager
+TorrentManagerState
+p1
+(dp2
+S'torrents'
+p3
+(lp4
+(ideluge.core.torrentmanager
+TorrentState
+p5
+(dp6
+S'max_download_speed'
+p7
+I-1
+sS'move_completed_path'
+p8
+S'/home/calum/Downloads'
+p9
+sS'paused'
+p10
+I00
+sS'max_upload_slots'
+p11
+I-1
+sS'prioritize_first_last'
+p12
+I00
+sS'max_connections'
+p13
+I-1
+sS'compact'
+p14
+I00
+sS'queue'
+p15
+I0
+sS'file_priorities'
+p16
+(lp17
+I4
+asS'filename'
+p18
+S'\xc2\xa2.torrent'
+p19
+sS'max_upload_speed'
+p20
+I-1
+sS'save_path'
+p21
+S'/home/calum/Downloads'
+p22
+sS'time_added'
+p23
+F1573563097.749759
+sS'total_uploaded'
+p24
+I0
+sS'torrent_id'
+p25
+S'80d81d55ef3b85f3c1b634c362e014b35594dc71'
+p26
+sS'auto_managed'
+p27
+I01
+sS'stop_at_ratio'
+p28
+I00
+sS'move_completed'
+p29
+I00
+sS'trackers'
+p30
+(lp31
+sS'magnet'
+p32
+NsS'remove_at_ratio'
+p33
+I00
+sS'stop_ratio'
+p34
+F2
+sS'is_finished'
+p35
+I00
+sbasb.
diff --git a/deluge/tests/data/v2_hybrid.torrent b/deluge/tests/data/v2_hybrid.torrent
new file mode 100644
index 0000000..e58057c
--- /dev/null
+++ b/deluge/tests/data/v2_hybrid.torrent
Binary files differ
diff --git a/deluge/tests/data/v2_test.torrent b/deluge/tests/data/v2_test.torrent
new file mode 100644
index 0000000..fe6cbd0
--- /dev/null
+++ b/deluge/tests/data/v2_test.torrent
Binary files differ
diff --git a/deluge/tests/test_alertmanager.py b/deluge/tests/test_alertmanager.py
new file mode 100644
index 0000000..2d18f4b
--- /dev/null
+++ b/deluge/tests/test_alertmanager.py
@@ -0,0 +1,102 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+from dataclasses import dataclass
+
+import pytest
+
+from deluge.core.core import Core
+
+
+class LtSessionMock:
+ def __init__(self):
+ self.alerts = []
+
+ def push_alerts(self, alerts):
+ self.alerts = alerts
+
+ def wait_for_alert(self, timeout):
+ return self.alerts[0] if len(self.alerts) > 0 else None
+
+ def pop_alerts(self):
+ alerts = self.alerts
+ self.alerts = []
+ return alerts
+
+
+@dataclass
+class LtAlertMock:
+ type: int
+ name: str
+ message: str
+
+ def message(self):
+ return self.message
+
+ def what(self):
+ return self.name
+
+
+@pytest.fixture
+def mock_alert1():
+ return LtAlertMock(type=1, name='mock_alert1', message='Alert 1')
+
+
+@pytest.fixture
+def mock_alert2():
+ return LtAlertMock(type=2, name='mock_alert2', message='Alert 2')
+
+
+class TestAlertManager:
+ @pytest.fixture(autouse=True)
+ def set_up(self, component):
+ self.core = Core()
+ self.core.config.config['lsd'] = False
+ self.am = component.get('AlertManager')
+ self.am.session = LtSessionMock()
+
+ component.start(['AlertManager'])
+
+ def test_register_handler(self):
+ def handler(alert):
+ ...
+
+ self.am.register_handler('dummy1', handler)
+ self.am.register_handler('dummy2_alert', handler)
+ assert self.am.handlers['dummy1'] == [handler]
+ assert self.am.handlers['dummy2'] == [handler]
+
+ async def test_pop_alert(self, mock_callback, mock_alert1, mock_alert2):
+ self.am.register_handler('mock_alert1', mock_callback)
+
+ self.am.session.push_alerts([mock_alert1, mock_alert2])
+
+ await mock_callback.deferred
+
+ mock_callback.assert_called_once_with(mock_alert1)
+
+ async def test_pause_not_pop_alert(
+ self, component, mock_alert1, mock_alert2, mock_callback
+ ):
+ await component.pause(['AlertManager'])
+
+ self.am.register_handler('mock_alert1', mock_callback)
+ self.am.session.push_alerts([mock_alert1, mock_alert2])
+
+ await mock_callback.deferred
+
+ mock_callback.assert_not_called()
+ assert not self.am._event.is_set()
+ assert len(self.am.session.alerts) == 2
+
+ def test_deregister_handler(self):
+ def handler(alert):
+ ...
+
+ self.am.register_handler('dummy1', handler)
+ self.am.register_handler('dummy2_alert', handler)
+ self.am.deregister_handler(handler)
+ assert self.am.handlers['dummy1'] == []
+ assert self.am.handlers['dummy2'] == []
diff --git a/deluge/tests/test_authmanager.py b/deluge/tests/test_authmanager.py
new file mode 100644
index 0000000..aa86fdb
--- /dev/null
+++ b/deluge/tests/test_authmanager.py
@@ -0,0 +1,23 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+from deluge.common import get_localhost_auth
+from deluge.conftest import BaseTestCase
+from deluge.core.authmanager import AUTH_LEVEL_ADMIN, AuthManager
+
+
+class TestAuthManager(BaseTestCase):
+ def set_up(self):
+ self.auth = AuthManager()
+ self.auth.start()
+
+ def tear_down(self):
+ # We must ensure that the components in component registry are removed
+ return component.shutdown()
+
+ def test_authorize(self):
+ assert self.auth.authorize(*get_localhost_auth()) == AUTH_LEVEL_ADMIN
diff --git a/deluge/tests/test_bencode.py b/deluge/tests/test_bencode.py
new file mode 100644
index 0000000..a4a7681
--- /dev/null
+++ b/deluge/tests/test_bencode.py
@@ -0,0 +1,32 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import pytest
+
+from deluge import bencode
+
+from . import common
+
+
+class TestBencode:
+ def test_bencode_unicode_metainfo(self):
+ filename = common.get_test_data_file('test.torrent')
+ with open(filename, 'rb') as _file:
+ metainfo = bencode.bdecode(_file.read())[b'info']
+ bencode.bencode({b'info': metainfo})
+
+ def test_bencode_unicode_value(self):
+ assert bencode.bencode(b'abc') == b'3:abc'
+ assert bencode.bencode('abc') == b'3:abc'
+
+ def test_bdecode(self):
+ assert bencode.bdecode(b'3:dEf') == b'dEf'
+ with pytest.raises(bencode.BTFailure):
+ bencode.bdecode('dEf')
+ with pytest.raises(bencode.BTFailure):
+ bencode.bdecode(b'dEf')
+ with pytest.raises(bencode.BTFailure):
+ bencode.bdecode({'dEf': 123})
diff --git a/deluge/tests/test_client.py b/deluge/tests/test_client.py
new file mode 100644
index 0000000..763d43c
--- /dev/null
+++ b/deluge/tests/test_client.py
@@ -0,0 +1,192 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import pytest
+import pytest_twisted
+from twisted.internet import defer
+
+from deluge import error
+from deluge.common import AUTH_LEVEL_NORMAL, get_localhost_auth, get_version
+from deluge.core.authmanager import AUTH_LEVEL_ADMIN
+from deluge.ui.client import Client, DaemonSSLProxy, client
+
+
+class NoVersionSendingDaemonSSLProxy(DaemonSSLProxy):
+ def authenticate(self, username, password):
+ self.login_deferred = defer.Deferred()
+ d = self.call('daemon.login', username, password)
+ d.addCallback(self.__on_login, username)
+ d.addErrback(self.__on_login_fail)
+ return self.login_deferred
+
+ def __on_login(self, result, username):
+ self.login_deferred.callback(result)
+
+ def __on_login_fail(self, result):
+ self.login_deferred.errback(result)
+
+
+class NoVersionSendingClient(Client):
+ def connect(
+ self,
+ host='127.0.0.1',
+ port=58846,
+ username='',
+ password='',
+ skip_authentication=False,
+ ):
+ self._daemon_proxy = NoVersionSendingDaemonSSLProxy()
+ self._daemon_proxy.set_disconnect_callback(self.__on_disconnect)
+
+ d = self._daemon_proxy.connect(host, port)
+
+ def on_connect_fail(reason):
+ self.disconnect()
+ return reason
+
+ def on_authenticate(result, daemon_info):
+ return result
+
+ def on_authenticate_fail(reason):
+ return reason
+
+ def on_connected(daemon_version):
+ return daemon_version
+
+ def authenticate(daemon_version, username, password):
+ d = self._daemon_proxy.authenticate(username, password)
+ d.addCallback(on_authenticate, daemon_version)
+ d.addErrback(on_authenticate_fail)
+ return d
+
+ d.addCallback(on_connected)
+ d.addErrback(on_connect_fail)
+ if not skip_authentication:
+ d.addCallback(authenticate, username, password)
+ return d
+
+ def __on_disconnect(self):
+ if self.disconnect_callback:
+ self.disconnect_callback()
+
+
+@pytest.mark.usefixtures('daemon', 'client')
+class TestClient:
+ def test_connect_no_credentials(self):
+ d = client.connect('localhost', self.listen_port, username='', password='')
+
+ def on_connect(result):
+ assert client.get_auth_level() == AUTH_LEVEL_ADMIN
+ return result
+
+ d.addCallbacks(on_connect, self.fail)
+ return d
+
+ def test_connect_localclient(self):
+ username, password = get_localhost_auth()
+ d = client.connect(
+ 'localhost', self.listen_port, username=username, password=password
+ )
+
+ def on_connect(result):
+ assert client.get_auth_level() == AUTH_LEVEL_ADMIN
+ return result
+
+ d.addCallbacks(on_connect, self.fail)
+ return d
+
+ def test_connect_bad_password(self):
+ username, password = get_localhost_auth()
+ d = client.connect(
+ 'localhost', self.listen_port, username=username, password=password + '1'
+ )
+
+ def on_failure(failure):
+ assert failure.trap(error.BadLoginError) == error.BadLoginError
+ assert failure.value.message == 'Password does not match'
+
+ d.addCallbacks(self.fail, on_failure)
+ return d
+
+ def test_connect_invalid_user(self):
+ d = client.connect('localhost', self.listen_port, username='invalid-user')
+
+ def on_failure(failure):
+ assert failure.trap(error.BadLoginError) == error.BadLoginError
+ assert failure.value.message == 'Username does not exist'
+
+ d.addCallbacks(self.fail, on_failure)
+ return d
+
+ def test_connect_without_password(self):
+ username, password = get_localhost_auth()
+ d = client.connect('localhost', self.listen_port, username=username)
+
+ def on_failure(failure):
+ assert (
+ failure.trap(error.AuthenticationRequired)
+ == error.AuthenticationRequired
+ )
+ assert failure.value.username == username
+
+ d.addCallbacks(self.fail, on_failure)
+ return d
+
+ @pytest_twisted.inlineCallbacks
+ def test_connect_with_password(self):
+ username, password = get_localhost_auth()
+ yield client.connect(
+ 'localhost', self.listen_port, username=username, password=password
+ )
+ yield client.core.create_account('testuser', 'testpw', 'DEFAULT')
+ yield client.disconnect()
+ ret = yield client.connect(
+ 'localhost', self.listen_port, username='testuser', password='testpw'
+ )
+ assert ret == AUTH_LEVEL_NORMAL
+
+ @pytest_twisted.inlineCallbacks
+ def test_invalid_rpc_method_call(self):
+ yield client.connect('localhost', self.listen_port, username='', password='')
+ d = client.core.invalid_method()
+
+ def on_failure(failure):
+ assert failure.trap(error.WrappedException) == error.WrappedException
+
+ d.addCallbacks(self.fail, on_failure)
+ yield d
+
+ def test_connect_without_sending_client_version_fails(self):
+ username, password = get_localhost_auth()
+ no_version_sending_client = NoVersionSendingClient()
+ d = no_version_sending_client.connect(
+ 'localhost', self.listen_port, username=username, password=password
+ )
+
+ def on_failure(failure):
+ assert failure.trap(error.IncompatibleClient) == error.IncompatibleClient
+
+ d.addCallbacks(self.fail, on_failure)
+ return d
+
+ @pytest_twisted.inlineCallbacks
+ def test_daemon_version(self):
+ username, password = get_localhost_auth()
+ yield client.connect(
+ 'localhost', self.listen_port, username=username, password=password
+ )
+
+ assert client.daemon_version == get_version()
+
+ @pytest_twisted.inlineCallbacks
+ def test_daemon_version_check_min(self):
+ username, password = get_localhost_auth()
+ yield client.connect(
+ 'localhost', self.listen_port, username=username, password=password
+ )
+
+ assert client.daemon_version_check_min(get_version())
+ assert not client.daemon_version_check_min(f'{get_version()}1')
+ assert client.daemon_version_check_min('0.1.0')
diff --git a/deluge/tests/test_common.py b/deluge/tests/test_common.py
new file mode 100644
index 0000000..a1af6cc
--- /dev/null
+++ b/deluge/tests/test_common.py
@@ -0,0 +1,227 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+import sys
+import tarfile
+from urllib.parse import quote_plus
+
+import pytest
+
+from deluge.common import (
+ VersionSplit,
+ archive_files,
+ fdate,
+ fpcnt,
+ fpeer,
+ fsize,
+ fspeed,
+ ftime,
+ get_magnet_info,
+ get_path_size,
+ is_infohash,
+ is_interface,
+ is_interface_name,
+ is_ip,
+ is_ipv4,
+ is_ipv6,
+ is_magnet,
+ is_url,
+ parse_human_size,
+ windows_check,
+)
+
+from .common import get_test_data_file
+
+
+class TestCommon:
+ def test_fsize(self):
+ assert fsize(0) == '0 B'
+ assert fsize(100) == '100 B'
+ assert fsize(1023) == '1023 B'
+ assert fsize(1024) == '1.0 KiB'
+ assert fsize(1048575) == '1024.0 KiB'
+ assert fsize(1048576) == '1.0 MiB'
+ assert fsize(1073741823) == '1024.0 MiB'
+ assert fsize(1073741824) == '1.0 GiB'
+ assert fsize(112245) == '109.6 KiB'
+ assert fsize(110723441824) == '103.1 GiB'
+ assert fsize(1099511627775) == '1024.0 GiB'
+ assert fsize(1099511627777) == '1.0 TiB'
+ assert fsize(766148267453245) == '696.8 TiB'
+
+ def test_fpcnt(self):
+ assert fpcnt(0.9311) == '93.11%'
+
+ def test_fspeed(self):
+ assert fspeed(43134) == '42.1 KiB/s'
+
+ def test_fpeer(self):
+ assert fpeer(10, 20) == '10 (20)'
+ assert fpeer(10, -1) == '10'
+
+ def test_ftime(self):
+ assert ftime(0) == ''
+ assert ftime(5) == '5s'
+ assert ftime(100) == '1m 40s'
+ assert ftime(3789) == '1h 3m'
+ assert ftime(23011) == '6h 23m'
+ assert ftime(391187) == '4d 12h'
+ assert ftime(604800) == '1w 0d'
+ assert ftime(13893086) == '22w 6d'
+ assert ftime(59740269) == '1y 46w'
+ assert ftime(61.25) == '1m 1s'
+ assert ftime(119.9) == '1m 59s'
+
+ def test_fdate(self):
+ assert fdate(-1) == ''
+
+ def test_is_url(self):
+ assert is_url('http://deluge-torrent.org')
+ assert not is_url('file://test.torrent')
+
+ def test_is_magnet(self):
+ assert is_magnet('magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN')
+ assert not is_magnet(None)
+
+ def test_is_infohash(self):
+ assert is_infohash('2dc5d0e71a66fe69649a640d39cb00a259704973')
+
+ def test_get_path_size(self):
+ if windows_check() and sys.version_info < (3, 8):
+ # https://bugs.python.org/issue1311
+ pytest.skip('os.devnull returns False on Windows')
+ assert get_path_size(os.devnull) == 0
+ assert get_path_size('non-existant.file') == -1
+
+ def test_is_ip(self):
+ assert is_ip('192.0.2.0')
+ assert not is_ip('192..0.0')
+ assert is_ip('2001:db8::')
+ assert not is_ip('2001:db8:')
+
+ def test_is_ipv4(self):
+ assert is_ipv4('192.0.2.0')
+ assert not is_ipv4('192..0.0')
+
+ def test_is_ipv6(self):
+ assert is_ipv6('2001:db8::')
+ assert not is_ipv6('2001:db8:')
+
+ def test_is_interface_name(self):
+ if windows_check():
+ assert not is_interface_name('2001:db8:')
+ assert not is_interface_name('{THIS0000-IS00-ONLY-FOR0-TESTING00000}')
+ else:
+ assert is_interface_name('lo')
+ assert not is_interface_name('127.0.0.1')
+ assert not is_interface_name('eth01101')
+
+ def test_is_interface(self):
+ if windows_check():
+ assert is_interface('127.0.0.1')
+ assert not is_interface('127')
+ assert not is_interface('{THIS0000-IS00-ONLY-FOR0-TESTING00000}')
+ else:
+ assert is_interface('lo')
+ assert is_interface('127.0.0.1')
+ assert not is_interface('127.')
+ assert not is_interface('eth01101')
+
+ def test_version_split(self):
+ assert VersionSplit('1.2.2') == VersionSplit('1.2.2')
+ assert VersionSplit('1.2.1') < VersionSplit('1.2.2')
+ assert VersionSplit('1.1.9') < VersionSplit('1.2.2')
+ assert VersionSplit('1.2.2') > VersionSplit('1.2.1')
+ assert VersionSplit('1.2.2') > VersionSplit('1.2.2-dev0')
+ assert VersionSplit('1.2.2-dev') < VersionSplit('1.3.0-rc2')
+ assert VersionSplit('1.2.2') > VersionSplit('1.2.2-rc2')
+ assert VersionSplit('1.2.2-rc2-dev') < VersionSplit('1.2.2-rc2')
+ assert VersionSplit('1.2.2-rc3') > VersionSplit('1.2.2-rc2')
+ assert VersionSplit('0.14.9') == VersionSplit('0.14.9')
+ assert VersionSplit('0.14.9') > VersionSplit('0.14.5')
+ assert VersionSplit('0.14.10') >= VersionSplit('0.14.9')
+ assert VersionSplit('1.4.0') > VersionSplit('1.3.900.dev123')
+ assert VersionSplit('1.3.2rc2.dev1') < VersionSplit('1.3.2-rc2')
+ assert VersionSplit('1.3.900.dev888') > VersionSplit('1.3.900.dev123')
+ assert VersionSplit('1.4.0') > VersionSplit('1.4.0.dev123')
+ assert VersionSplit('1.4.0.dev1') < VersionSplit('1.4.0')
+ assert VersionSplit('1.4.0a1') < VersionSplit('1.4.0')
+
+ @pytest.mark.parametrize(
+ ('human_size', 'expected'),
+ [
+ ('1', 1),
+ ('10 bytes', 10),
+ ('2048 bytes', 2048),
+ ('1MiB', 2 ** (10 * 2)),
+ ('1 MiB', 2 ** (10 * 2)),
+ ('1 GiB', 2 ** (10 * 3)),
+ ('1 TiB', 2 ** (10 * 4)),
+ ('1M', 10**6),
+ ('1p', 10**15),
+ ('1MB', 10**6),
+ ('1 GB', 10**9),
+ ('1 TB', 10**12),
+ ],
+ )
+ def test_parse_human_size(self, human_size, expected):
+ parsed = parse_human_size(human_size)
+ assert parsed == expected, 'Mismatch when converting: %s' % human_size
+
+ def test_archive_files(self):
+ arc_filelist = [
+ get_test_data_file('test.torrent'),
+ get_test_data_file('deluge.png'),
+ ]
+ arc_filepath = archive_files('test-arc', arc_filelist)
+
+ with tarfile.open(arc_filepath, 'r') as tar:
+ for tar_info in tar:
+ assert tar_info.isfile()
+ assert tar_info.name in [
+ os.path.basename(arcf) for arcf in arc_filelist
+ ]
+
+ def test_archive_files_missing(self):
+ """Archive exists even with file not found."""
+ filelist = ['test.torrent', 'deluge.png', 'missing.file']
+ arc_filepath = archive_files(
+ 'test-arc', [get_test_data_file(f) for f in filelist]
+ )
+ filelist.remove('missing.file')
+
+ with tarfile.open(arc_filepath, 'r') as tar:
+ assert tar.getnames() == filelist
+ assert all(tarinfo.isfile() for tarinfo in tar)
+
+ def test_archive_files_message(self):
+ filelist = ['test.torrent', 'deluge.png']
+ arc_filepath = archive_files(
+ 'test-arc', [get_test_data_file(f) for f in filelist], message='test'
+ )
+
+ result_files = filelist + ['archive_message.txt']
+ with tarfile.open(arc_filepath, 'r') as tar:
+ assert tar.getnames() == result_files
+ for tar_info in tar:
+ assert tar_info.isfile()
+ if tar_info.name == 'archive_message.txt':
+ result = tar.extractfile(tar_info).read().decode()
+ assert result == 'test'
+
+ def test_get_magnet_info_tiers(self):
+ tracker1 = 'udp://tracker1.example.com'
+ tracker2 = 'udp://tracker2.example.com'
+ magnet = (
+ 'magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN'
+ f'&tr.1={quote_plus(tracker1)}'
+ f'&tr.2={quote_plus(tracker2)}'
+ )
+ result = get_magnet_info(magnet)
+ assert result['info_hash'] == '953bad769164e8482c7785a21d12166f94b9e14d'
+ assert result['trackers'][tracker1] == 1
+ assert result['trackers'][tracker2] == 2
diff --git a/deluge/tests/test_component.py b/deluge/tests/test_component.py
new file mode 100644
index 0000000..907d50b
--- /dev/null
+++ b/deluge/tests/test_component.py
@@ -0,0 +1,192 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import time
+from unittest.mock import Mock
+
+import pytest
+import pytest_twisted
+from twisted.internet import defer, threads
+
+import deluge.component as component
+
+
+class ComponentTester(component.Component):
+ def __init__(self, name, depend=None):
+ super().__init__(name, depend=depend)
+ event_methods = ('start', 'update', 'pause', 'resume', 'stop', 'shutdown')
+ for event_method in event_methods:
+ setattr(self, event_method, Mock())
+
+
+class ComponentTesterDelayStart(ComponentTester):
+ def __init__(self, name, depend=None):
+ super().__init__(name, depend=depend)
+ self.start = Mock(side_effect=self.delay)
+
+ @pytest_twisted.inlineCallbacks
+ def delay(self):
+ yield threads.deferToThread(time.sleep, 0.5)
+
+
+@pytest.mark.usefixtures('component')
+class TestComponent:
+ async def test_start_component(self):
+ c = ComponentTester('test_start')
+ await component.start(['test_start'])
+
+ assert c._component_state == 'Started'
+ assert c.start.call_count == 1
+
+ async def test_start_stop_depends(self):
+ c1 = ComponentTester('test_start_depends_c1')
+ c2 = ComponentTester('test_start_depends_c2', depend=['test_start_depends_c1'])
+
+ await component.start('test_start_depends_c2')
+
+ assert c1._component_state == 'Started'
+ assert c2._component_state == 'Started'
+ assert c1.start.call_count == 1
+ assert c2.start.call_count == 1
+
+ await component.stop(['test_start_depends_c1'])
+
+ assert c1._component_state == 'Stopped'
+ assert c2._component_state == 'Stopped'
+ assert c1.stop.call_count == 1
+ assert c2.stop.call_count == 1
+
+ async def start_with_depends(self):
+ c1 = ComponentTesterDelayStart('test_start_all_c1')
+ c2 = ComponentTester('test_start_all_c2', depend=['test_start_all_c4'])
+ c3 = ComponentTesterDelayStart(
+ 'test_start_all_c3', depend=['test_start_all_c5', 'test_start_all_c1']
+ )
+ c4 = ComponentTester('test_start_all_c4', depend=['test_start_all_c3'])
+ c5 = ComponentTester('test_start_all_c5')
+
+ await component.start()
+ return c1, c2, c3, c4, c5
+
+ def finish_start_with_depends(self, *args):
+ for c in args[1:]:
+ component.deregister(c)
+
+ async def test_start_all(self):
+ components = await self.start_with_depends()
+ for c in components:
+ assert c._component_state == 'Started'
+ assert c.start.call_count == 1
+
+ self.finish_start_with_depends(components)
+
+ def test_register_exception(self):
+ ComponentTester('test_register_exception')
+ with pytest.raises(component.ComponentAlreadyRegistered):
+ ComponentTester(
+ 'test_register_exception',
+ )
+
+ async def test_stop(self):
+ c = ComponentTester('test_stop')
+
+ await component.start(['test_stop'])
+
+ assert c._component_state == 'Started'
+
+ await component.stop(['test_stop'])
+
+ assert c._component_state == 'Stopped'
+ assert not c._component_timer.running
+ assert c.stop.call_count == 1
+
+ async def test_stop_all(self):
+ components = await self.start_with_depends()
+ assert all(c._component_state == 'Started' for c in components)
+
+ component.stop()
+ for c in components:
+ assert c._component_state == 'Stopped'
+ assert c.stop.call_count == 1
+
+ self.finish_start_with_depends(components)
+
+ async def test_update(self):
+ c = ComponentTester('test_update')
+ init_update_count = int(c.update.call_count)
+ await component.start(['test_update'])
+
+ assert c._component_timer
+ assert c._component_timer.running
+ assert c.update.call_count != init_update_count
+ await component.stop()
+
+ async def test_pause(self):
+ c = ComponentTester('test_pause')
+ init_update_count = int(c.update.call_count)
+
+ await component.start(['test_pause'])
+
+ assert c._component_timer
+ assert c.update.call_count != init_update_count
+
+ await component.pause(['test_pause'])
+
+ assert c._component_state == 'Paused'
+ assert c.pause.call_count == 1
+ assert c.update.call_count != init_update_count
+ assert not c._component_timer.running
+
+ async def test_resume(self):
+ c = ComponentTester('test_resume')
+
+ await component.start(['test_resume'])
+
+ assert c._component_state == 'Started'
+
+ await component.pause(['test_resume'])
+
+ assert c._component_state == 'Paused'
+
+ await component.resume(['test_resume'])
+
+ assert c._component_state == 'Started'
+ assert c.resume.call_count == 1
+ assert c._component_timer.running
+
+ async def test_component_start_error(self):
+ ComponentTester('test_start_error')
+ await component.start(['test_start_error'])
+ await component.pause(['test_start_error'])
+ test_comp = component.get('test_start_error')
+ with pytest.raises(component.ComponentException, match='Current state: Paused'):
+ await test_comp._component_start()
+
+ async def test_start_paused_error(self):
+ name = 'test_pause_error'
+ ComponentTester(name)
+ await component.start([name])
+ await component.pause([name])
+
+ (failure, error), *_ = await component.start()
+ assert (failure, error.type, error.value.message) == (
+ defer.FAILURE,
+ component.ComponentException,
+ (
+ f'Trying to start component "{name}" but it is '
+ 'not in a stopped state. Current state: Paused'
+ ),
+ )
+
+ async def test_shutdown(self):
+ c = ComponentTester('test_shutdown')
+
+ await component.start(['test_shutdown'])
+ await component.shutdown()
+
+ assert c.shutdown.call_count == 1
+ assert c._component_state == 'Stopped'
+ assert not c._component_timer.running
+ assert c.stop.call_count == 1
diff --git a/deluge/tests/test_config.py b/deluge/tests/test_config.py
new file mode 100644
index 0000000..146a5c9
--- /dev/null
+++ b/deluge/tests/test_config.py
@@ -0,0 +1,274 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import json
+import logging
+import os
+from codecs import getwriter
+
+import pytest
+from twisted.internet import task
+
+from deluge.common import JSON_FORMAT
+from deluge.config import Config
+from deluge.ui.hostlist import mask_hosts_password
+
+DEFAULTS = {
+ 'string': 'foobar',
+ 'int': 1,
+ 'float': 0.435,
+ 'bool': True,
+ 'unicode': 'foobar',
+ 'password': 'abc123*\\[!]?/<>#{@}=|"+$%(^)~',
+ 'hosts': [
+ ('host1', 'port', '', 'password1234'),
+ ('host2', 'port', '', 'password5678'),
+ ],
+}
+
+
+LOGGER = logging.getLogger(__name__)
+
+
+class TestConfig:
+ def test_init(self):
+ config = Config('test.conf', defaults=DEFAULTS, config_dir=self.config_dir)
+ assert DEFAULTS == config.config
+
+ config = Config('test.conf', config_dir=self.config_dir)
+ assert {} == config.config
+
+ def test_set_get_item(self):
+ config = Config('test.conf', config_dir=self.config_dir)
+ config['foo'] = 1
+ assert config['foo'] == 1
+ with pytest.raises(ValueError):
+ config.set_item('foo', 'bar')
+
+ config['foo'] = 2
+ assert config.get_item('foo') == 2
+
+ config['foo'] = '3'
+ assert config.get_item('foo') == 3
+
+ config['unicode'] = 'ВИДЕОФИЛЬМЫ'
+ assert config['unicode'] == 'ВИДЕОФИЛЬМЫ'
+
+ config['unicode'] = b'foostring'
+ assert not isinstance(config.get_item('unicode'), bytes)
+
+ config._save_timer.cancel()
+
+ def test_set_get_item_none(self):
+ config = Config('test.conf', config_dir=self.config_dir)
+
+ config['foo'] = None
+ assert config['foo'] is None
+ assert isinstance(config['foo'], type(None))
+
+ config['foo'] = 1
+ assert config.get('foo') == 1
+
+ config['foo'] = None
+ assert config['foo'] is None
+
+ config['bar'] = None
+ assert config['bar'] is None
+
+ config['bar'] = None
+ assert config['bar'] is None
+
+ config._save_timer.cancel()
+
+ async def test_on_changed_callback(self, mock_callback):
+ config = Config('test.conf', config_dir=self.config_dir)
+ config.register_change_callback(mock_callback)
+ config['foo'] = 1
+ assert config['foo'] == 1
+ await mock_callback.deferred
+ mock_callback.assert_called_once_with('foo', 1)
+
+ async def test_key_function_callback(self, mock_callback):
+ config = Config(
+ 'test.conf', defaults={'foo': 1, 'bar': 1}, config_dir=self.config_dir
+ )
+
+ assert config['foo'] == 1
+ config.register_set_function('foo', mock_callback)
+ await mock_callback.deferred
+ mock_callback.assert_called_once_with('foo', 1)
+
+ mock_callback.reset_mock()
+ config.register_set_function('bar', mock_callback, apply_now=False)
+ mock_callback.assert_not_called()
+ config['bar'] = 2
+ await mock_callback.deferred
+ mock_callback.assert_called_once_with('bar', 2)
+
+ def test_get(self):
+ config = Config('test.conf', config_dir=self.config_dir)
+ config['foo'] = 1
+ assert config.get('foo') == 1
+ assert config.get('foobar') is None
+ assert config.get('foobar', 2) == 2
+ config['foobar'] = 5
+ assert config.get('foobar', 2) == 5
+
+ def test_set_log_mask_funcs(self, caplog):
+ """Test mask func masks key in log"""
+ caplog.set_level(logging.DEBUG)
+ config = Config(
+ 'test.conf',
+ config_dir=self.config_dir,
+ log_mask_funcs={'hosts': mask_hosts_password},
+ )
+ config['hosts'] = DEFAULTS['hosts']
+ assert isinstance(config['hosts'], list)
+ assert 'host1' in caplog.text
+ assert 'host2' in caplog.text
+ assert 'password1234' not in caplog.text
+ assert 'password5678' not in caplog.text
+ assert '*' * 10 in caplog.text
+
+ def test_load_log_mask_funcs(self, caplog):
+ """Test mask func masks key in log"""
+ with open(os.path.join(self.config_dir, 'test.conf'), 'wb') as _file:
+ json.dump(DEFAULTS, getwriter('utf8')(_file), **JSON_FORMAT)
+
+ config = Config(
+ 'test.conf',
+ config_dir=self.config_dir,
+ log_mask_funcs={'hosts': mask_hosts_password},
+ )
+ with caplog.at_level(logging.DEBUG):
+ config.load(os.path.join(self.config_dir, 'test.conf'))
+ assert 'host1' in caplog.text
+ assert 'host2' in caplog.text
+ assert 'foobar' in caplog.text
+ assert 'password1234' not in caplog.text
+ assert 'password5678' not in caplog.text
+ assert '*' * 10 in caplog.text
+
+ def test_load(self):
+ def check_config():
+ config = Config('test.conf', config_dir=self.config_dir)
+
+ assert config['string'] == 'foobar'
+ assert config['float'] == 0.435
+ assert config['password'] == 'abc123*\\[!]?/<>#{@}=|"+$%(^)~'
+
+ # Test opening a previous 1.2 config file of just a json object
+ with open(os.path.join(self.config_dir, 'test.conf'), 'wb') as _file:
+ json.dump(DEFAULTS, getwriter('utf8')(_file), **JSON_FORMAT)
+
+ check_config()
+
+ # Test opening a previous 1.2 config file of having the format versions
+ # as ints
+ with open(os.path.join(self.config_dir, 'test.conf'), 'wb') as _file:
+ _file.write(b'1\n')
+ _file.write(b'1\n')
+ json.dump(DEFAULTS, getwriter('utf8')(_file), **JSON_FORMAT)
+
+ check_config()
+
+ # Test the 1.2 config format
+ version = {'format': 1, 'file': 1}
+ with open(os.path.join(self.config_dir, 'test.conf'), 'wb') as _file:
+ json.dump(version, getwriter('utf8')(_file), **JSON_FORMAT)
+ json.dump(DEFAULTS, getwriter('utf8')(_file), **JSON_FORMAT)
+
+ check_config()
+
+ def test_save(self):
+ config = Config('test.conf', defaults=DEFAULTS, config_dir=self.config_dir)
+ # We do this twice because the first time we need to save the file to disk
+ # and the second time we do a compare and we should not write
+ ret = config.save()
+ assert ret
+ ret = config.save()
+ assert ret
+
+ config['string'] = 'baz'
+ config['int'] = 2
+ ret = config.save()
+ assert ret
+ del config
+
+ config = Config('test.conf', defaults=DEFAULTS, config_dir=self.config_dir)
+ assert config['string'] == 'baz'
+ assert config['int'] == 2
+
+ def test_save_timer(self):
+ clock = task.Clock()
+
+ config = Config('test.conf', defaults=DEFAULTS, config_dir=self.config_dir)
+ config.callLater = clock.callLater
+ config['string'] = 'baz'
+ config['int'] = 2
+ assert config._save_timer.active()
+
+ # Timeout set for 5 seconds in config, so lets move clock by 5 seconds
+ clock.advance(5)
+
+ def check_config(config):
+ assert not config._save_timer.active()
+ del config
+ config = Config('test.conf', defaults=DEFAULTS, config_dir=self.config_dir)
+ assert config['string'] == 'baz'
+ assert config['int'] == 2
+
+ check_config(config)
+
+ def test_find_json_objects(self):
+ s = """{
+ "file": 1,
+ "format": 1
+}{
+ "ssl": true,
+ "enabled": false,
+ "port": 8115
+}\n"""
+
+ from deluge.config import find_json_objects
+
+ objects = find_json_objects(s)
+ assert len(objects) == 2
+
+ def test_find_json_objects_curly_brace(self):
+ """Test with string containing curly brace"""
+ s = """{
+ "file": 1,
+ "format": 1
+}{
+ "ssl": true,
+ "enabled": false,
+ "port": 8115,
+ "password": "abc{def"
+}"""
+
+ from deluge.config import find_json_objects
+
+ objects = find_json_objects(s)
+ assert len(objects) == 2
+
+ def test_find_json_objects_double_quote(self):
+ """Test with string containing double quote"""
+ s = r"""{
+ "file": 1,
+ "format": 1
+}{
+ "ssl": true,
+ "enabled": false,
+ "port": 8115,
+ "password": "abc\"def"
+}
+"""
+
+ from deluge.config import find_json_objects
+
+ objects = find_json_objects(s)
+ assert len(objects) == 2
diff --git a/deluge/tests/test_core.py b/deluge/tests/test_core.py
new file mode 100644
index 0000000..28b5902
--- /dev/null
+++ b/deluge/tests/test_core.py
@@ -0,0 +1,511 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import base64
+import os
+from base64 import b64encode
+from hashlib import sha1 as sha
+
+import pytest
+import pytest_twisted
+from twisted.internet import defer, reactor, task
+from twisted.internet.error import CannotListenError
+from twisted.web.http import FORBIDDEN
+from twisted.web.resource import EncodingResourceWrapper, Resource
+from twisted.web.server import GzipEncoderFactory, Site
+from twisted.web.static import File
+
+import deluge.common
+import deluge.component as component
+import deluge.core.torrent
+from deluge._libtorrent import lt
+from deluge.conftest import BaseTestCase
+from deluge.core.core import Core
+from deluge.core.rpcserver import RPCServer
+from deluge.error import AddTorrentError, InvalidTorrentError
+
+from . import common
+
+common.disable_new_release_check()
+
+
+class CookieResource(Resource):
+ def render(self, request):
+ if request.getCookie(b'password') != b'deluge':
+ request.setResponseCode(FORBIDDEN)
+ return
+
+ request.setHeader(b'Content-Type', b'application/x-bittorrent')
+ with open(
+ common.get_test_data_file('ubuntu-9.04-desktop-i386.iso.torrent'), 'rb'
+ ) as _file:
+ data = _file.read()
+ return data
+
+
+class PartialDownload(Resource):
+ def getChild(self, path, request): # NOQA: N802
+ return EncodingResourceWrapper(self, [GzipEncoderFactory()])
+
+ def render(self, request):
+ with open(
+ common.get_test_data_file('ubuntu-9.04-desktop-i386.iso.torrent'), 'rb'
+ ) as _file:
+ data = _file.read()
+ request.setHeader(b'Content-Length', str(len(data)))
+ request.setHeader(b'Content-Type', b'application/x-bittorrent')
+ return data
+
+
+class RedirectResource(Resource):
+ def render(self, request):
+ request.redirect(b'/ubuntu-9.04-desktop-i386.iso.torrent')
+ return b''
+
+
+class TopLevelResource(Resource):
+ def __init__(self):
+ Resource.__init__(self)
+ self.putChild(b'cookie', CookieResource())
+ self.putChild(b'partial', PartialDownload())
+ self.putChild(b'redirect', RedirectResource())
+ self.putChild(
+ b'ubuntu-9.04-desktop-i386.iso.torrent',
+ File(common.get_test_data_file('ubuntu-9.04-desktop-i386.iso.torrent')),
+ )
+
+
+class TestCore(BaseTestCase):
+ def set_up(self):
+ self.rpcserver = RPCServer(listen=False)
+ self.core: Core = Core()
+ self.core.config.config['lsd'] = False
+ self.clock = task.Clock()
+ self.core.torrentmanager.clock = self.clock
+ self.listen_port = 51242
+ return component.start().addCallback(self.start_web_server)
+
+ def start_web_server(self, result):
+ website = Site(TopLevelResource())
+ for dummy in range(10):
+ try:
+ self.webserver = reactor.listenTCP(self.listen_port, website)
+ except CannotListenError as ex:
+ error = ex
+ self.listen_port += 1
+ else:
+ break
+ else:
+ raise error
+
+ return result
+
+ def tear_down(self):
+ def on_shutdown(result):
+ del self.rpcserver
+ del self.core
+ return self.webserver.stopListening()
+
+ return component.shutdown().addCallback(on_shutdown)
+
+ def add_torrent(self, filename, paused=False):
+ if not paused:
+ # Patch libtorrent flags starting torrents paused
+ self.patch(
+ deluge.core.torrentmanager,
+ 'LT_DEFAULT_ADD_TORRENT_FLAGS',
+ lt.torrent_flags.auto_managed
+ | lt.torrent_flags.update_subscribe
+ | lt.torrent_flags.apply_ip_filter,
+ )
+ options = {'add_paused': paused, 'auto_managed': False}
+ filepath = common.get_test_data_file(filename)
+ with open(filepath, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ torrent_id = self.core.add_torrent_file(filename, filedump, options)
+ return torrent_id
+
+ @pytest_twisted.inlineCallbacks
+ def test_add_torrent_files(self):
+ options = {}
+ filenames = ['test.torrent', 'test_torrent.file.torrent']
+ files_to_add = []
+ for f in filenames:
+ filename = common.get_test_data_file(f)
+ with open(filename, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ files_to_add.append((filename, filedump, options))
+ errors = yield self.core.add_torrent_files(files_to_add)
+ assert len(errors) == 0
+
+ @pytest_twisted.inlineCallbacks
+ def test_add_torrent_files_error_duplicate(self):
+ options = {}
+ filenames = ['test.torrent', 'test.torrent']
+ files_to_add = []
+ for f in filenames:
+ filename = common.get_test_data_file(f)
+ with open(filename, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ files_to_add.append((filename, filedump, options))
+ errors = yield self.core.add_torrent_files(files_to_add)
+ assert len(errors) == 1
+ assert str(errors[0]).startswith('Torrent already in session')
+
+ @pytest_twisted.inlineCallbacks
+ def test_add_torrent_file(self):
+ options = {}
+ filename = common.get_test_data_file('test.torrent')
+ with open(filename, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ torrent_id = yield self.core.add_torrent_file_async(filename, filedump, options)
+
+ # Get the info hash from the test.torrent
+ from deluge.bencode import bdecode, bencode
+
+ with open(filename, 'rb') as _file:
+ info_hash = sha(bencode(bdecode(_file.read())[b'info'])).hexdigest()
+ assert torrent_id == info_hash
+
+ def test_add_torrent_file_invalid_filedump(self):
+ options = {}
+ filename = common.get_test_data_file('test.torrent')
+ with pytest.raises(AddTorrentError):
+ self.core.add_torrent_file(filename, False, options)
+
+ @pytest_twisted.inlineCallbacks
+ def test_add_torrent_url(self, mock_mkstemp):
+ url = (
+ 'http://localhost:%d/ubuntu-9.04-desktop-i386.iso.torrent'
+ % self.listen_port
+ )
+ options = {}
+ info_hash = '60d5d82328b4547511fdeac9bf4d0112daa0ce00'
+
+ torrent_id = yield self.core.add_torrent_url(url, options)
+ assert torrent_id == info_hash
+ assert not os.path.isfile(mock_mkstemp[1])
+
+ async def test_add_torrent_url_with_cookie(self):
+ url = 'http://localhost:%d/cookie' % self.listen_port
+ options = {}
+ headers = {'Cookie': 'password=deluge'}
+ info_hash = '60d5d82328b4547511fdeac9bf4d0112daa0ce00'
+
+ with pytest.raises(Exception):
+ await self.core.add_torrent_url(url, options)
+
+ result = await self.core.add_torrent_url(url, options, headers)
+ assert result == info_hash
+
+ async def test_add_torrent_url_with_redirect(self):
+ url = 'http://localhost:%d/redirect' % self.listen_port
+ options = {}
+ info_hash = '60d5d82328b4547511fdeac9bf4d0112daa0ce00'
+
+ result = await self.core.add_torrent_url(url, options)
+ assert result == info_hash
+
+ async def test_add_torrent_url_with_partial_download(self):
+ url = 'http://localhost:%d/partial' % self.listen_port
+ options = {}
+ info_hash = '60d5d82328b4547511fdeac9bf4d0112daa0ce00'
+
+ result = await self.core.add_torrent_url(url, options)
+ assert result == info_hash
+
+ @pytest_twisted.inlineCallbacks
+ def test_add_torrent_magnet(self):
+ info_hash = '60d5d82328b4547511fdeac9bf4d0112daa0ce00'
+ tracker = 'udp://tracker.example.com'
+ name = 'test magnet'
+ uri = deluge.common.create_magnet_uri(info_hash, name=name, trackers=[tracker])
+ options = {}
+ torrent_id = yield self.core.add_torrent_magnet(uri, options)
+ assert torrent_id == info_hash
+ torrent_status = self.core.get_torrent_status(torrent_id, ['name', 'trackers'])
+ assert torrent_status['trackers'][0]['url'] == tracker
+ assert torrent_status['name'] == name
+
+ def test_resume_torrent(self):
+ tid1 = self.add_torrent('test.torrent', paused=True)
+ tid2 = self.add_torrent('test_torrent.file.torrent', paused=True)
+ # Assert paused
+ r1 = self.core.get_torrent_status(tid1, ['paused'])
+ assert r1['paused']
+ r2 = self.core.get_torrent_status(tid2, ['paused'])
+ assert r2['paused']
+
+ self.core.resume_torrent(tid2)
+ r1 = self.core.get_torrent_status(tid1, ['paused'])
+ assert r1['paused']
+ r2 = self.core.get_torrent_status(tid2, ['paused'])
+ assert not r2['paused']
+
+ def test_resume_torrent_list(self):
+ """Backward compatibility for list of torrent_ids."""
+ torrent_id = self.add_torrent('test.torrent', paused=True)
+ self.core.resume_torrent([torrent_id])
+ result = self.core.get_torrent_status(torrent_id, ['paused'])
+ assert not result['paused']
+
+ def test_resume_torrents(self):
+ tid1 = self.add_torrent('test.torrent', paused=True)
+ tid2 = self.add_torrent('test_torrent.file.torrent', paused=True)
+ self.core.resume_torrents([tid1, tid2])
+ r1 = self.core.get_torrent_status(tid1, ['paused'])
+ assert not r1['paused']
+ r2 = self.core.get_torrent_status(tid2, ['paused'])
+ assert not r2['paused']
+
+ def test_resume_torrents_all(self):
+ """With no torrent_ids param, resume all torrents"""
+ tid1 = self.add_torrent('test.torrent', paused=True)
+ tid2 = self.add_torrent('test_torrent.file.torrent', paused=True)
+ self.core.resume_torrents()
+ r1 = self.core.get_torrent_status(tid1, ['paused'])
+ assert not r1['paused']
+ r2 = self.core.get_torrent_status(tid2, ['paused'])
+ assert not r2['paused']
+
+ def test_pause_torrent(self):
+ tid1 = self.add_torrent('test.torrent')
+ tid2 = self.add_torrent('test_torrent.file.torrent')
+ # Assert not paused
+ r1 = self.core.get_torrent_status(tid1, ['paused'])
+ assert not r1['paused']
+ r2 = self.core.get_torrent_status(tid2, ['paused'])
+ assert not r2['paused']
+
+ self.core.pause_torrent(tid2)
+ r1 = self.core.get_torrent_status(tid1, ['paused'])
+ assert not r1['paused']
+ r2 = self.core.get_torrent_status(tid2, ['paused'])
+ assert r2['paused']
+
+ def test_pause_torrent_list(self):
+ """Backward compatibility for list of torrent_ids."""
+ torrent_id = self.add_torrent('test.torrent')
+ result = self.core.get_torrent_status(torrent_id, ['paused'])
+ assert not result['paused']
+ self.core.pause_torrent([torrent_id])
+ result = self.core.get_torrent_status(torrent_id, ['paused'])
+ assert result['paused']
+
+ def test_pause_torrents(self):
+ tid1 = self.add_torrent('test.torrent')
+ tid2 = self.add_torrent('test_torrent.file.torrent')
+
+ self.core.pause_torrents([tid1, tid2])
+ r1 = self.core.get_torrent_status(tid1, ['paused'])
+ assert r1['paused']
+ r2 = self.core.get_torrent_status(tid2, ['paused'])
+ assert r2['paused']
+
+ def test_pause_torrents_all(self):
+ """With no torrent_ids param, pause all torrents"""
+ tid1 = self.add_torrent('test.torrent')
+ tid2 = self.add_torrent('test_torrent.file.torrent')
+
+ self.core.pause_torrents()
+ r1 = self.core.get_torrent_status(tid1, ['paused'])
+ assert r1['paused']
+ r2 = self.core.get_torrent_status(tid2, ['paused'])
+ assert r2['paused']
+
+ @pytest_twisted.inlineCallbacks
+ def test_prefetch_metadata_existing(self):
+ """Check another call with same magnet returns existing deferred."""
+ magnet = 'magnet:?xt=urn:btih:ab570cdd5a17ea1b61e970bb72047de141bce173'
+ expected = ('ab570cdd5a17ea1b61e970bb72047de141bce173', b'')
+
+ d1 = self.core.prefetch_magnet_metadata(magnet)
+ d2 = self.core.prefetch_magnet_metadata(magnet)
+ dg = defer.gatherResults([d1, d2], consumeErrors=True)
+ self.clock.advance(30)
+ result = yield dg
+ assert result == [expected] * 2
+
+ @pytest_twisted.inlineCallbacks
+ def test_remove_torrent(self):
+ options = {}
+ filename = common.get_test_data_file('test.torrent')
+ with open(filename, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ torrent_id = yield self.core.add_torrent_file_async(filename, filedump, options)
+ removed = self.core.remove_torrent(torrent_id, True)
+ assert removed
+ assert len(self.core.get_session_state()) == 0
+
+ def test_remove_torrent_invalid(self):
+ with pytest.raises(InvalidTorrentError):
+ self.core.remove_torrent(
+ 'torrentidthatdoesntexist',
+ True,
+ )
+
+ @pytest_twisted.inlineCallbacks
+ def test_remove_torrents(self):
+ options = {}
+ filename = common.get_test_data_file('test.torrent')
+ with open(filename, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ torrent_id = yield self.core.add_torrent_file_async(filename, filedump, options)
+
+ filename2 = common.get_test_data_file('unicode_filenames.torrent')
+ with open(filename2, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ torrent_id2 = yield self.core.add_torrent_file_async(
+ filename2, filedump, options
+ )
+ d = self.core.remove_torrents([torrent_id, torrent_id2], True)
+
+ def test_ret(val):
+ assert val == []
+
+ d.addCallback(test_ret)
+
+ def test_session_state(val):
+ assert len(self.core.get_session_state()) == 0
+
+ d.addCallback(test_session_state)
+ yield d
+
+ @pytest_twisted.inlineCallbacks
+ def test_remove_torrents_invalid(self):
+ options = {}
+ filename = common.get_test_data_file('test.torrent')
+ with open(filename, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ torrent_id = yield self.core.add_torrent_file_async(
+ filename, filedump, options
+ )
+ val = yield self.core.remove_torrents(
+ ['invalidid1', 'invalidid2', torrent_id], False
+ )
+ assert len(val) == 2
+ assert val[0] == ('invalidid1', 'torrent_id invalidid1 not in session.')
+ assert val[1] == ('invalidid2', 'torrent_id invalidid2 not in session.')
+
+ def test_get_session_status(self):
+ status = self.core.get_session_status(
+ ['net.recv_tracker_bytes', 'net.sent_tracker_bytes']
+ )
+ assert isinstance(status, dict)
+ assert status['net.recv_tracker_bytes'] == 0
+ assert status['net.sent_tracker_bytes'] == 0
+
+ def test_get_session_status_all(self):
+ status = self.core.get_session_status([])
+ assert isinstance(status, dict)
+ assert 'upload_rate' in status
+ assert 'net.recv_bytes' in status
+
+ def test_get_session_status_depr(self):
+ status = self.core.get_session_status(['num_peers', 'num_unchoked'])
+ assert isinstance(status, dict)
+ assert status['num_peers'] == 0
+ assert status['num_unchoked'] == 0
+
+ def test_get_session_status_rates(self):
+ status = self.core.get_session_status(['upload_rate', 'download_rate'])
+ assert isinstance(status, dict)
+ assert status['upload_rate'] == 0
+
+ def test_get_session_status_ratio(self):
+ status = self.core.get_session_status(['write_hit_ratio', 'read_hit_ratio'])
+ assert isinstance(status, dict)
+ assert status['write_hit_ratio'] == 0.0
+ assert status['read_hit_ratio'] == 0.0
+
+ def test_get_free_space(self):
+ space = self.core.get_free_space('.')
+ assert isinstance(space, int)
+ assert space >= 0
+ assert self.core.get_free_space('/someinvalidpath') == -1
+
+ @pytest.mark.slow
+ def test_test_listen_port(self):
+ d = self.core.test_listen_port()
+
+ def result(r):
+ assert r in (True, False)
+
+ d.addCallback(result)
+ return d
+
+ def test_sanitize_filepath(self):
+ pathlist = {
+ '\\backslash\\path\\': 'backslash/path',
+ ' single_file ': 'single_file',
+ '..': '',
+ '/../..../': '',
+ ' Def ////ad./ / . . /b d /file': 'Def/ad./. ./b d/file',
+ '/ test /\\.. /.file/': 'test/.file',
+ 'mytorrent/subfold/file1': 'mytorrent/subfold/file1',
+ 'Torrent/folder/': 'Torrent/folder',
+ }
+
+ for key in pathlist:
+ assert (
+ deluge.core.torrent.sanitize_filepath(key, folder=False)
+ == pathlist[key]
+ )
+
+ assert (
+ deluge.core.torrent.sanitize_filepath(key, folder=True)
+ == pathlist[key] + '/'
+ )
+
+ def test_get_set_config_values(self):
+ assert self.core.get_config_values(['abc', 'foo']) == {'foo': None, 'abc': None}
+ assert self.core.get_config_value('foobar') is None
+ self.core.set_config({'abc': 'def', 'foo': 10, 'foobar': 'barfoo'})
+ assert self.core.get_config_values(['foo', 'abc']) == {'foo': 10, 'abc': 'def'}
+ assert self.core.get_config_value('foobar') == 'barfoo'
+
+ def test_read_only_config_keys(self):
+ key = 'max_upload_speed'
+ self.core.read_only_config_keys = [key]
+
+ old_value = self.core.get_config_value(key)
+ self.core.set_config({key: old_value + 10})
+ new_value = self.core.get_config_value(key)
+ assert old_value == new_value
+
+ self.core.read_only_config_keys = None
+
+ def test__create_peer_id(self):
+ assert self.core._create_peer_id('2.0.0') == '-DE200s-'
+ assert self.core._create_peer_id('2.0.0.dev15') == '-DE200D-'
+ assert self.core._create_peer_id('2.0.1rc1') == '-DE201r-'
+ assert self.core._create_peer_id('2.11.0b2') == '-DE2B0b-'
+ assert self.core._create_peer_id('2.4.12b2.dev3') == '-DE24CD-'
+
+ @pytest.mark.parametrize(
+ 'path',
+ [
+ common.get_test_data_file('deluge.png'),
+ os.path.dirname(common.get_test_data_file('deluge.png')),
+ ],
+ )
+ @pytest.mark.parametrize('piece_length', [2**14, 2**16])
+ @pytest_twisted.inlineCallbacks
+ def test_create_torrent(self, path, tmp_path, piece_length):
+ target = tmp_path / 'test.torrent'
+
+ filename, filedump = yield self.core.create_torrent(
+ path=path,
+ tracker=None,
+ piece_length=piece_length,
+ target=target,
+ add_to_session=False,
+ )
+ filecontent = base64.b64decode(filedump)
+
+ with open(target, 'rb') as f:
+ assert f.read() == filecontent
+
+ lt.torrent_info(filecontent)
diff --git a/deluge/tests/test_decorators.py b/deluge/tests/test_decorators.py
new file mode 100644
index 0000000..d2ecd1a
--- /dev/null
+++ b/deluge/tests/test_decorators.py
@@ -0,0 +1,48 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+from deluge.decorators import proxy
+
+
+class TestDecorators:
+ def test_proxy_with_simple_functions(self):
+ def negate(func, *args, **kwargs):
+ return not func(*args, **kwargs)
+
+ @proxy(negate)
+ def something(_bool):
+ return _bool
+
+ @proxy(negate)
+ @proxy(negate)
+ def double_nothing(_bool):
+ return _bool
+
+ assert something(False)
+ assert not something(True)
+ assert double_nothing(True)
+ assert not double_nothing(False)
+
+ def test_proxy_with_class_method(self):
+ def negate(func, *args, **kwargs):
+ return -func(*args, **kwargs)
+
+ class Test:
+ def __init__(self, number):
+ self.number = number
+
+ @proxy(negate)
+ def diff(self, number):
+ return self.number - number
+
+ @proxy(negate)
+ def no_diff(self, number):
+ return self.diff(number)
+
+ t = Test(5)
+ assert t.diff(1) == -4
+ assert t.no_diff(1) == 4
diff --git a/deluge/tests/test_error.py b/deluge/tests/test_error.py
new file mode 100644
index 0000000..a87d6a2
--- /dev/null
+++ b/deluge/tests/test_error.py
@@ -0,0 +1,39 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.error
+
+
+class TestError:
+ def test_deluge_error(self):
+ msg = 'Some message'
+ e = deluge.error.DelugeError(msg)
+ assert str(e) == msg
+ from twisted.internet.defer import DebugInfo
+
+ del DebugInfo.__del__ # Hides all errors
+ assert e._args == (msg,)
+ assert e._kwargs == {}
+
+ def test_incompatible_client(self):
+ version = '1.3.6'
+ e = deluge.error.IncompatibleClient(version)
+ assert (
+ str(e) == 'Your deluge client is not compatible with the daemon. '
+ 'Please upgrade your client to %s' % version
+ )
+
+ def test_not_authorized_error(self):
+ current_level = 5
+ required_level = 10
+ e = deluge.error.NotAuthorizedError(current_level, required_level)
+ assert str(e) == 'Auth level too low: %d < %d' % (current_level, required_level)
+
+ def test_bad_login_error(self):
+ message = 'Login failed'
+ username = 'deluge'
+ e = deluge.error.BadLoginError(message, username)
+ assert str(e) == message
diff --git a/deluge/tests/test_files_tab.py b/deluge/tests/test_files_tab.py
new file mode 100644
index 0000000..1e97cbb
--- /dev/null
+++ b/deluge/tests/test_files_tab.py
@@ -0,0 +1,163 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import pytest
+
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+from deluge.conftest import BaseTestCase
+from deluge.i18n import setup_translation
+
+libs_available = True
+# Allow running other tests without GTKUI dependencies available
+try:
+ from deluge.ui.gtk3.files_tab import FilesTab
+ from deluge.ui.gtk3.gtkui import DEFAULT_PREFS
+ from deluge.ui.gtk3.mainwindow import MainWindow
+except (ImportError, ValueError):
+ # gi.require_version gives ValueError if library not available
+ libs_available = False
+
+setup_translation()
+
+
+@pytest.mark.gtkui
+class TestFilesTab(BaseTestCase):
+ def set_up(self):
+ if libs_available is False:
+ pytest.skip('GTKUI dependencies not available')
+
+ ConfigManager('gtk3ui.conf', defaults=DEFAULT_PREFS)
+ self.mainwindow = MainWindow()
+ self.filestab = FilesTab()
+ self.t_id = '1'
+ self.filestab.torrent_id = self.t_id
+ self.index = 1
+
+ def tear_down(self):
+ return component.shutdown()
+
+ def print_treestore(self, title, treestore):
+ root = treestore.get_iter_first()
+ level = 1
+
+ def p_level(s, lvl):
+ print('{}{}'.format(' ' * lvl, s))
+
+ def _print_treestore_children(i, lvl):
+ while i:
+ p_level(treestore[i][0], lvl)
+ if treestore.iter_children(i):
+ _print_treestore_children(treestore.iter_children(i), lvl + 2)
+ i = treestore.iter_next(i)
+
+ print('\n%s' % title)
+ _print_treestore_children(root, level)
+ print('')
+
+ def verify_treestore(self, treestore, tree):
+ def _verify_treestore(itr, tree_values):
+ i = 0
+ while itr:
+ values = tree_values[i]
+ if treestore[itr][0] != values[0]:
+ return False
+ if treestore.iter_children(itr):
+ if not _verify_treestore(treestore.iter_children(itr), values[1]):
+ return False
+ itr = treestore.iter_next(itr)
+ i += 1
+ return True
+
+ return _verify_treestore(treestore.get_iter_first(), tree)
+
+ def test_files_tab(self):
+ self.filestab.files_list[self.t_id] = (
+ {'index': 0, 'path': '1/test_10.txt', 'offset': 0, 'size': 13},
+ {'index': 1, 'path': 'test_100.txt', 'offset': 13, 'size': 14},
+ )
+ self.filestab.update_files()
+ self.filestab._on_torrentfilerenamed_event(
+ self.t_id, self.index, '2/test_100.txt'
+ )
+
+ ret = self.verify_treestore(
+ self.filestab.treestore,
+ [['1/', [['test_10.txt']]], ['2/', [['test_100.txt']]]],
+ )
+ if not ret:
+ self.print_treestore('Treestore not expected:', self.filestab.treestore)
+ assert ret
+
+ def test_files_tab2(self):
+ self.filestab.files_list[self.t_id] = (
+ {'index': 0, 'path': '1/1/test_100.txt', 'offset': 0, 'size': 13},
+ {'index': 1, 'path': 'test_101.txt', 'offset': 13, 'size': 14},
+ )
+ self.filestab.update_files()
+ self.filestab._on_torrentfilerenamed_event(
+ self.t_id, self.index, '1/1/test_101.txt'
+ )
+
+ ret = self.verify_treestore(
+ self.filestab.treestore,
+ [['1/', [['1/', [['test_100.txt'], ['test_101.txt']]]]]],
+ )
+ if not ret:
+ self.print_treestore('Treestore not expected:', self.filestab.treestore)
+ assert ret
+
+ def test_files_tab3(self):
+ self.filestab.files_list[self.t_id] = (
+ {'index': 0, 'path': '1/test_100.txt', 'offset': 0, 'size': 13},
+ {'index': 1, 'path': 'test_101.txt', 'offset': 13, 'size': 14},
+ )
+ self.filestab.update_files()
+ self.filestab._on_torrentfilerenamed_event(
+ self.t_id, self.index, '1/test_101.txt'
+ )
+
+ ret = self.verify_treestore(
+ self.filestab.treestore, [['1/', [['test_100.txt'], ['test_101.txt']]]]
+ )
+ if not ret:
+ self.print_treestore('Treestore not expected:', self.filestab.treestore)
+ assert ret
+
+ def test_files_tab4(self):
+ self.filestab.files_list[self.t_id] = (
+ {'index': 0, 'path': '1/test_100.txt', 'offset': 0, 'size': 13},
+ {'index': 1, 'path': '1/test_101.txt', 'offset': 13, 'size': 14},
+ )
+ self.filestab.update_files()
+ self.filestab._on_torrentfilerenamed_event(
+ self.t_id, self.index, '1/2/test_101.txt'
+ )
+
+ ret = self.verify_treestore(
+ self.filestab.treestore,
+ [['1/', [['2/', [['test_101.txt']]], ['test_100.txt']]]],
+ )
+ if not ret:
+ self.print_treestore('Treestore not expected:', self.filestab.treestore)
+ assert ret
+
+ def test_files_tab5(self):
+ self.filestab.files_list[self.t_id] = (
+ {'index': 0, 'path': '1/test_100.txt', 'offset': 0, 'size': 13},
+ {'index': 1, 'path': '2/test_101.txt', 'offset': 13, 'size': 14},
+ )
+ self.filestab.update_files()
+ self.filestab._on_torrentfilerenamed_event(
+ self.t_id, self.index, '1/test_101.txt'
+ )
+
+ ret = self.verify_treestore(
+ self.filestab.treestore, [['1/', [['test_100.txt'], ['test_101.txt']]]]
+ )
+ if not ret:
+ self.print_treestore('Treestore not expected:', self.filestab.treestore)
+ assert ret
diff --git a/deluge/tests/test_httpdownloader.py b/deluge/tests/test_httpdownloader.py
new file mode 100644
index 0000000..1c27045
--- /dev/null
+++ b/deluge/tests/test_httpdownloader.py
@@ -0,0 +1,275 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+import tempfile
+from email.utils import formatdate
+
+import pytest
+import pytest_twisted
+from twisted.internet import reactor
+from twisted.internet.error import CannotListenError
+from twisted.web.error import Error, PageRedirect
+from twisted.web.http import NOT_MODIFIED
+from twisted.web.resource import EncodingResourceWrapper, Resource
+from twisted.web.server import GzipEncoderFactory, Site
+from twisted.web.util import redirectTo
+
+from deluge.httpdownloader import download_file
+from deluge.log import setup_logger
+
+temp_dir = tempfile.mkdtemp()
+
+
+def fname(name):
+ return os.path.join(temp_dir, name)
+
+
+class RedirectResource(Resource):
+ def render(self, request):
+ url = self.get_url().encode('utf8')
+ return redirectTo(url, request)
+
+
+class RenameResource(Resource):
+ def render(self, request):
+ filename = request.args.get(b'filename', [b'renamed_file'])[0]
+ request.setHeader(b'Content-Type', b'text/plain')
+ request.setHeader(b'Content-Disposition', b'attachment; filename=' + filename)
+ return b'This file should be called ' + filename
+
+
+class AttachmentResource(Resource):
+ def render(self, request):
+ content_type = b'text/plain'
+ charset = request.getHeader(b'content-charset')
+ if charset:
+ content_type += b'; charset=' + charset
+ request.setHeader(b'Content-Type', content_type)
+ request.setHeader(b'Content-Disposition', b'attachment')
+ append = request.getHeader(b'content-append') or b''
+ content = 'Attachment with no filename set{}'.format(append.decode('utf8'))
+ return (
+ content.encode(charset.decode('utf8'))
+ if charset
+ else content.encode('utf8')
+ )
+
+
+class TorrentResource(Resource):
+ def render(self, request):
+ content_type = b'application/x-bittorrent'
+ charset = request.getHeader(b'content-charset')
+ if charset:
+ content_type += b'; charset=' + charset
+ request.setHeader(b'Content-Type', content_type)
+ request.setHeader(b'Content-Disposition', b'attachment; filename=test.torrent')
+ return 'Binary attachment ignore charset 世丕且\n'.encode()
+
+
+class CookieResource(Resource):
+ def render(self, request):
+ request.setHeader(b'Content-Type', b'text/plain')
+ if request.getCookie(b'password') is None:
+ return b'Password cookie not set!'
+
+ if request.getCookie(b'password') == b'deluge':
+ return b'COOKIE MONSTER!'
+
+ return request.getCookie('password')
+
+
+class GzipResource(Resource):
+ def getChild(self, path, request): # NOQA: N802
+ return EncodingResourceWrapper(self, [GzipEncoderFactory()])
+
+ def render(self, request):
+ message = request.args.get(b'msg', [b'EFFICIENCY!'])[0]
+ request.setHeader(b'Content-Type', b'text/plain')
+ return message
+
+
+class PartialDownloadResource(Resource):
+ def __init__(self, *args, **kwargs):
+ Resource.__init__(self)
+ self.render_count = 0
+
+ def render(self, request):
+ # encoding = request.requestHeaders._rawHeaders.get('accept-encoding', None)
+ if self.render_count == 0:
+ request.setHeader(b'content-length', b'5')
+ else:
+ request.setHeader(b'content-length', b'3')
+
+ # if encoding == "deflate, gzip, x-gzip":
+ request.write('abc')
+ self.render_count += 1
+ return ''
+
+
+class TopLevelResource(Resource):
+ def __init__(self):
+ Resource.__init__(self)
+ self.putChild(b'cookie', CookieResource())
+ self.putChild(b'gzip', GzipResource())
+ self.redirect_rsrc = RedirectResource()
+ self.putChild(b'redirect', self.redirect_rsrc)
+ self.putChild(b'rename', RenameResource())
+ self.putChild(b'attachment', AttachmentResource())
+ self.putChild(b'torrent', TorrentResource())
+ self.putChild(b'partial', PartialDownloadResource())
+
+ def getChild(self, path, request): # NOQA: N802
+ if not path:
+ return self
+ else:
+ return Resource.getChild(self, path, request)
+
+ def render(self, request):
+ if request.getHeader(b'If-Modified-Since'):
+ request.setResponseCode(NOT_MODIFIED)
+ return b'<h1>Deluge HTTP Downloader tests webserver here</h1>'
+
+
+class TestDownloadFile:
+ def get_url(self, path=''):
+ return 'http://localhost:%d/%s' % (self.listen_port, path)
+
+ @pytest_twisted.async_yield_fixture(autouse=True)
+ async def setUp(self, request): # NOQA
+ self = request.instance
+ setup_logger('warning', fname('log_file'))
+ self.website = Site(TopLevelResource())
+ self.listen_port = 51242
+ self.website.resource.redirect_rsrc.get_url = self.get_url
+ for dummy in range(10):
+ try:
+ self.webserver = reactor.listenTCP(self.listen_port, self.website)
+ except CannotListenError as ex:
+ error = ex
+ self.listen_port += 1
+ else:
+ break
+ else:
+ raise error
+
+ yield
+
+ await self.webserver.stopListening()
+
+ def assert_contains(self, filename, contents):
+ with open(filename, encoding='utf8') as _file:
+ try:
+ assert _file.read() == contents
+ except Exception as ex:
+ pytest.fail(ex)
+ return filename
+
+ def assert_not_contains(self, filename, contents, file_mode=''):
+ with open(filename, encoding='utf8') as _file:
+ try:
+ assert _file.read() != contents
+ except Exception as ex:
+ pytest.fail(ex)
+ return filename
+
+ async def test_download(self):
+ filename = await download_file(self.get_url(), fname('index.html'))
+ assert filename == fname('index.html')
+
+ async def test_download_without_required_cookies(self):
+ url = self.get_url('cookie')
+ filename = await download_file(url, fname('none'))
+ self.assert_contains(filename, 'Password cookie not set!')
+
+ async def test_download_with_required_cookies(self):
+ url = self.get_url('cookie')
+ cookie = {'cookie': 'password=deluge'}
+ filename = await download_file(url, fname('monster'), headers=cookie)
+ assert filename == fname('monster')
+ self.assert_contains(filename, 'COOKIE MONSTER!')
+
+ async def test_download_with_rename(self):
+ url = self.get_url('rename?filename=renamed')
+ filename = await download_file(url, fname('original'))
+ assert filename == fname('renamed')
+ self.assert_contains(filename, 'This file should be called renamed')
+
+ async def test_download_with_rename_exists(self):
+ open(fname('renamed'), 'w').close()
+ url = self.get_url('rename?filename=renamed')
+ filename = await download_file(url, fname('original'))
+ assert filename == fname('renamed-1')
+ self.assert_contains(filename, 'This file should be called renamed')
+
+ async def test_download_with_rename_sanitised(self):
+ url = self.get_url('rename?filename=/etc/passwd')
+ filename = await download_file(url, fname('original'))
+ assert filename == fname('passwd')
+ self.assert_contains(filename, 'This file should be called /etc/passwd')
+
+ async def test_download_with_attachment_no_filename(self):
+ url = self.get_url('attachment')
+ filename = await download_file(url, fname('original'))
+ assert filename == fname('original')
+ self.assert_contains(filename, 'Attachment with no filename set')
+
+ async def test_download_with_rename_prevented(self):
+ url = self.get_url('rename?filename=spam')
+ filename = await download_file(url, fname('forced'), force_filename=True)
+ assert filename == fname('forced')
+ self.assert_contains(filename, 'This file should be called spam')
+
+ async def test_download_with_gzip_encoding(self):
+ url = self.get_url('gzip?msg=success')
+ filename = await download_file(url, fname('gzip_encoded'))
+ self.assert_contains(filename, 'success')
+
+ async def test_download_with_gzip_encoding_disabled(self):
+ url = self.get_url('gzip?msg=unzip')
+ filename = await download_file(
+ url, fname('gzip_encoded'), allow_compression=False
+ )
+ self.assert_contains(filename, 'unzip')
+
+ async def test_page_redirect_unhandled(self):
+ url = self.get_url('redirect')
+ with pytest.raises(PageRedirect):
+ await download_file(url, fname('none'), handle_redirects=False)
+
+ async def test_page_redirect(self):
+ url = self.get_url('redirect')
+ filename = await download_file(url, fname('none'), handle_redirects=True)
+ assert filename == fname('none')
+
+ async def test_page_not_found(self):
+ with pytest.raises(Error):
+ await download_file(self.get_url('page/not/found'), fname('none'))
+
+ @pytest.mark.xfail(reason="Doesn't seem like httpdownloader ever implemented this.")
+ async def test_page_not_modified(self):
+ headers = {'If-Modified-Since': formatdate(usegmt=True)}
+ with pytest.raises(Error) as exc_info:
+ await download_file(self.get_url(), fname('index.html'), headers=headers)
+ assert exc_info.value.status == NOT_MODIFIED
+
+ async def test_download_text_reencode_charset(self):
+ """Re-encode as UTF-8 specified charset for text content-type header"""
+ url = self.get_url('attachment')
+ filepath = fname('test.txt')
+ headers = {'content-charset': 'Windows-1251', 'content-append': 'бвгде'}
+ filename = await download_file(url, filepath, headers=headers)
+ assert filename == filepath
+ self.assert_contains(filename, 'Attachment with no filename setбвгде')
+
+ async def test_download_binary_ignore_charset(self):
+ """Ignore charset for binary content-type header e.g. torrent files"""
+ url = self.get_url('torrent')
+ headers = {'content-charset': 'Windows-1251'}
+ filepath = fname('test.torrent')
+ filename = await download_file(url, fname('test.torrent'), headers=headers)
+ assert filename == filepath
+ self.assert_contains(filename, 'Binary attachment ignore charset 世丕且\n')
diff --git a/deluge/tests/test_json_api.py b/deluge/tests/test_json_api.py
new file mode 100644
index 0000000..ef21e94
--- /dev/null
+++ b/deluge/tests/test_json_api.py
@@ -0,0 +1,267 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import json as json_lib
+from unittest.mock import MagicMock
+
+import pytest
+import pytest_twisted
+from twisted.internet.defer import Deferred
+from twisted.web import server
+from twisted.web.http import Request
+
+import deluge.common
+import deluge.ui.web.auth
+import deluge.ui.web.json_api
+from deluge.error import DelugeError
+from deluge.ui.web.auth import Auth
+from deluge.ui.web.json_api import JSON, JSONException
+
+from . import common
+from .common_web import WebServerMockBase
+
+common.disable_new_release_check()
+
+
+@pytest.mark.usefixtures('daemon', 'client', 'component')
+class TestJSON:
+ async def test_get_remote_methods(self):
+ json = JSON()
+ methods = await json.get_remote_methods()
+ assert type(methods) == tuple
+ assert len(methods) > 0
+
+ def test_render_fail_disconnected(self):
+ json = JSON()
+ request = MagicMock()
+ request.method = b'POST'
+ request._disconnected = True
+ # When disconnected, returns empty string
+ assert json.render(request) == ''
+
+ def test_render_fail(self):
+ json = JSON()
+ request = MagicMock()
+ request.method = b'POST'
+
+ def write(response_str):
+ request.write_was_called = True
+ response = json_lib.loads(response_str.decode())
+ assert response['result'] is None
+ assert response['id'] is None
+ assert response['error']['message'] == 'JSONException: JSON not decodable'
+ assert response['error']['code'] == 5
+
+ request.write = write
+ request.write_was_called = False
+ request._disconnected = False
+ request.getHeader.return_value = b'application/json'
+ assert json.render(request) == server.NOT_DONE_YET
+ assert request.write_was_called
+
+ def test_handle_request_invalid_method(self):
+ json = JSON()
+ request = MagicMock()
+ json_data = {'method': 'no-existing-module.test', 'id': 0, 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ request_id, result, error = json._handle_request(request)
+ assert error == {'message': 'Unknown method', 'code': 2}
+
+ def test_handle_request_invalid_json_request(self):
+ json = JSON()
+ request = MagicMock()
+ json_data = {'id': 0, 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ with pytest.raises(JSONException):
+ json._handle_request(request)
+ json_data = {'method': 'some.method', 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ with pytest.raises(JSONException):
+ json._handle_request(request)
+ json_data = {'method': 'some.method', 'id': 0}
+ request.json = json_lib.dumps(json_data).encode()
+ with pytest.raises(JSONException):
+ json._handle_request(request)
+
+ def test_on_json_request_invalid_content_type(self):
+ """Test for exception with content type not application/json"""
+ json = JSON()
+ request = MagicMock()
+ request.getHeader.return_value = b'text/plain'
+ json_data = {'method': 'some.method', 'id': 0, 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ with pytest.raises(JSONException):
+ json._on_json_request(request)
+
+ def test_on_json_request_valid_content_type(self):
+ """Ensure content-type application/json is accepted"""
+ json = JSON()
+ request = MagicMock()
+ request.getHeader.return_value = b'application/json'
+ json_data = {'method': 'some.method', 'id': 0, 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ json._on_json_request(request)
+
+ def test_on_json_request_valid_content_type_with_charset(self):
+ """Ensure content-type parameters such as charset are ignored"""
+ json = JSON()
+ request = MagicMock()
+ request.getHeader.return_value = b'application/json;charset=utf-8'
+ json_data = {'method': 'some.method', 'id': 0, 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ json._on_json_request(request)
+
+
+@pytest.mark.usefixtures('daemon', 'client', 'component')
+class TestJSONCustomUserTestCase:
+ @pytest_twisted.inlineCallbacks
+ def test_handle_request_auth_error(self):
+ json = JSON()
+ auth_conf = {'session_timeout': 10, 'sessions': {}}
+ Auth(auth_conf) # Must create the component
+
+ # Must be called to update remote methods in json object
+ yield json.get_remote_methods()
+
+ request = MagicMock()
+ request.getCookie = MagicMock(return_value=b'bad_value')
+ json_data = {'method': 'core.get_libtorrent_version', 'id': 0, 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ request_id, result, error = json._handle_request(request)
+ assert error == {'message': 'Not authenticated', 'code': 1}
+
+
+@pytest.mark.usefixtures('daemon', 'client', 'component')
+class TestRPCRaiseDelugeErrorJSON:
+ daemon_custom_script = """
+ from deluge.error import DelugeError
+ from deluge.core.rpcserver import export
+ class TestClass(object):
+ @export()
+ def test(self):
+ raise DelugeError('DelugeERROR')
+
+ test = TestClass()
+ daemon.rpcserver.register_object(test)
+"""
+
+ async def test_handle_request_method_raise_delugeerror(self):
+ json = JSON()
+
+ def get_session_id(s_id):
+ return s_id
+
+ self.patch(deluge.ui.web.auth, 'get_session_id', get_session_id)
+ auth_conf = {'session_timeout': 10, 'sessions': {}}
+ auth = Auth(auth_conf)
+ request = Request(MagicMock(), False)
+ request.base = b''
+ auth._create_session(request)
+ methods = await json.get_remote_methods()
+ # Verify the function has been registered
+ assert 'testclass.test' in methods
+
+ request = MagicMock()
+ session_id = list(auth.config['sessions'])[0]
+ request.getCookie = MagicMock(return_value=session_id.encode())
+ json_data = {'method': 'testclass.test', 'id': 0, 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ request_id, result, error = json._handle_request(request)
+ with pytest.raises(DelugeError):
+ await result
+
+
+class TestJSONRequestFailed(WebServerMockBase):
+ @pytest_twisted.async_yield_fixture(autouse=True)
+ async def set_up(self, config_dir):
+ custom_script = """
+ from deluge.error import DelugeError
+ from deluge.core.rpcserver import export
+ from twisted.internet import reactor, task
+ class TestClass(object):
+ @export()
+ def test(self):
+ def test_raise_error():
+ raise DelugeError('DelugeERROR')
+
+ return task.deferLater(reactor, 1, test_raise_error)
+
+ test = TestClass()
+ daemon.rpcserver.register_object(test)
+"""
+
+ extra_callback = {
+ 'deferred': Deferred(),
+ 'types': ['stderr'],
+ 'timeout': 10,
+ 'triggers': [
+ {
+ 'expr': 'in test_raise_error',
+ 'value': lambda reader, data, data_all: 'Test',
+ }
+ ],
+ }
+
+ def on_test_raise(*args):
+ assert 'Unhandled error in Deferred:' in daemon.stderr_out
+ assert 'in test_raise_error' in daemon.stderr_out
+
+ d, daemon = common.start_core(
+ custom_script=custom_script,
+ print_stdout=True,
+ print_stderr=False,
+ timeout=5,
+ extra_callbacks=[extra_callback],
+ config_directory=config_dir,
+ )
+ extra_callback['deferred'].addCallback(on_test_raise, daemon)
+
+ await d
+ yield
+ await daemon.kill()
+
+ @pytest_twisted.inlineCallbacks
+ def test_render_on_rpc_request_failed(self, component, client):
+ json = JSON()
+
+ methods = yield json.get_remote_methods()
+ # Verify the function has been registered
+ assert 'testclass.test' in methods
+
+ request = MagicMock()
+
+ # Circumvent authentication
+ auth = Auth({})
+ self.mock_authentication_ignore(auth)
+
+ def write(response_str):
+ request.write_was_called = True
+ response = json_lib.loads(response_str.decode())
+ assert response['result'] is None, 'BAD RESULT'
+ assert response['id'] == 0
+ assert (
+ response['error']['message']
+ == 'Failure: [Failure instance: Traceback (failure with no frames):'
+ " <class 'deluge.error.DelugeError'>: DelugeERROR\n]"
+ )
+ assert response['error']['code'] == 4
+
+ request.write = write
+ request.write_was_called = False
+ request._disconnected = False
+ request.getHeader.return_value = b'application/json'
+ json_data = {'method': 'testclass.test', 'id': 0, 'params': []}
+ request.json = json_lib.dumps(json_data).encode()
+ d = json._on_json_request(request)
+
+ def on_success(arg):
+ assert arg == server.NOT_DONE_YET
+ return True
+
+ d.addCallbacks(on_success, pytest.fail)
+ yield d
diff --git a/deluge/tests/test_log.py b/deluge/tests/test_log.py
new file mode 100644
index 0000000..f0dcbee
--- /dev/null
+++ b/deluge/tests/test_log.py
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2015 Calum Lind <calumlind@gmail.com>
+# Copyright (C) 2010 Pedro Algarvio <ufs@ufsoft.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import warnings
+
+from deluge.conftest import BaseTestCase
+from deluge.log import setup_logger
+
+
+class TestLog(BaseTestCase):
+ def set_up(self):
+ setup_logger(logging.DEBUG)
+
+ def tear_down(self):
+ setup_logger('none')
+
+ def test_old_log_deprecation_warning(self):
+ from deluge.log import LOG
+
+ with warnings.catch_warnings(record=True) as w:
+ # Cause all warnings to always be triggered.
+ warnings.simplefilter('always')
+ LOG.debug('foo')
+ assert w[-1].category == DeprecationWarning
+
+ # def test_twisted_error_log(self):
+ # from twisted.internet import defer
+ # import deluge.component as component
+ # from deluge.core.eventmanager import EventManager
+ # EventManager()
+ #
+ # d = component.start()
+ #
+ # @defer.inlineCallbacks
+ # def call(*args):
+ # yield component.pause(["EventManager"])
+ # yield component.start(["EventManager"])
+ #
+ # d.addCallback(call)
+ # return d
diff --git a/deluge/tests/test_maketorrent.py b/deluge/tests/test_maketorrent.py
new file mode 100644
index 0000000..a2e473f
--- /dev/null
+++ b/deluge/tests/test_maketorrent.py
@@ -0,0 +1,85 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+import tempfile
+
+from deluge import maketorrent
+
+
+def check_torrent(filename):
+ # Test loading with libtorrent to make sure it's valid
+ from deluge._libtorrent import lt
+
+ lt.torrent_info(filename)
+
+ # Test loading with our internal TorrentInfo class
+ from deluge.ui.common import TorrentInfo
+
+ TorrentInfo(filename)
+
+
+class TestMakeTorrent:
+ def test_save_multifile(self):
+ # Create a temporary folder for torrent creation
+ tmp_path = tempfile.mkdtemp()
+ with open(os.path.join(tmp_path, 'file_A'), 'wb') as _file:
+ _file.write(b'a' * (312 * 1024))
+ with open(os.path.join(tmp_path, 'file_B'), 'wb') as _file:
+ _file.write(b'b' * (2354 * 1024))
+ with open(os.path.join(tmp_path, 'file_C'), 'wb') as _file:
+ _file.write(b'c' * (11 * 1024))
+
+ t = maketorrent.TorrentMetadata()
+ t.data_path = tmp_path
+ tmp_fd, tmp_file = tempfile.mkstemp('.torrent')
+ t.save(tmp_file)
+
+ check_torrent(tmp_file)
+
+ os.remove(os.path.join(tmp_path, 'file_A'))
+ os.remove(os.path.join(tmp_path, 'file_B'))
+ os.remove(os.path.join(tmp_path, 'file_C'))
+ os.rmdir(tmp_path)
+ os.close(tmp_fd)
+ os.remove(tmp_file)
+
+ def test_save_singlefile(self):
+ with tempfile.TemporaryDirectory() as tmp_dir:
+ tmp_data = tmp_dir + '/data'
+ with open(tmp_data, 'wb') as _file:
+ _file.write(b'a' * (2314 * 1024))
+ t = maketorrent.TorrentMetadata()
+ t.data_path = tmp_data
+ tmp_file = tmp_dir + '/.torrent'
+ t.save(tmp_file)
+
+ check_torrent(tmp_file)
+
+ def test_save_multifile_padded(self):
+ # Create a temporary folder for torrent creation
+ tmp_path = tempfile.mkdtemp()
+ with open(os.path.join(tmp_path, 'file_A'), 'wb') as _file:
+ _file.write(b'a' * (312 * 1024))
+ with open(os.path.join(tmp_path, 'file_B'), 'wb') as _file:
+ _file.write(b'b' * (2354 * 1024))
+ with open(os.path.join(tmp_path, 'file_C'), 'wb') as _file:
+ _file.write(b'c' * (11 * 1024))
+
+ t = maketorrent.TorrentMetadata()
+ t.data_path = tmp_path
+ t.pad_files = True
+ tmp_fd, tmp_file = tempfile.mkstemp('.torrent')
+ t.save(tmp_file)
+
+ check_torrent(tmp_file)
+
+ os.remove(os.path.join(tmp_path, 'file_A'))
+ os.remove(os.path.join(tmp_path, 'file_B'))
+ os.remove(os.path.join(tmp_path, 'file_C'))
+ os.rmdir(tmp_path)
+ os.close(tmp_fd)
+ os.remove(tmp_file)
diff --git a/deluge/tests/test_maybe_coroutine.py b/deluge/tests/test_maybe_coroutine.py
new file mode 100644
index 0000000..afaf171
--- /dev/null
+++ b/deluge/tests/test_maybe_coroutine.py
@@ -0,0 +1,207 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import pytest
+import pytest_twisted
+import twisted.python.failure
+from twisted.internet import defer, reactor, task
+from twisted.internet.defer import maybeDeferred
+
+from deluge.decorators import maybe_coroutine
+
+
+@defer.inlineCallbacks
+def inline_func():
+ result = yield task.deferLater(reactor, 0, lambda: 'function_result')
+ return result
+
+
+@defer.inlineCallbacks
+def inline_error():
+ raise Exception('function_error')
+ yield
+
+
+@maybe_coroutine
+async def coro_func():
+ result = await task.deferLater(reactor, 0, lambda: 'function_result')
+ return result
+
+
+@maybe_coroutine
+async def coro_error():
+ raise Exception('function_error')
+
+
+@defer.inlineCallbacks
+def coro_func_from_inline():
+ result = yield coro_func()
+ return result
+
+
+@defer.inlineCallbacks
+def coro_error_from_inline():
+ result = yield coro_error()
+ return result
+
+
+@maybe_coroutine
+async def coro_func_from_coro():
+ return await coro_func()
+
+
+@maybe_coroutine
+async def coro_error_from_coro():
+ return await coro_error()
+
+
+@maybe_coroutine
+async def inline_func_from_coro():
+ return await inline_func()
+
+
+@maybe_coroutine
+async def inline_error_from_coro():
+ return await inline_error()
+
+
+@pytest_twisted.inlineCallbacks
+def test_standard_twisted():
+ """Sanity check that twisted tests work how we expect.
+
+ Not really testing deluge code at all.
+ """
+ result = yield inline_func()
+ assert result == 'function_result'
+
+ with pytest.raises(Exception, match='function_error'):
+ yield inline_error()
+
+
+@pytest.mark.parametrize(
+ 'function',
+ [
+ inline_func,
+ coro_func,
+ coro_func_from_coro,
+ coro_func_from_inline,
+ inline_func_from_coro,
+ ],
+)
+@pytest_twisted.inlineCallbacks
+def test_from_inline(function):
+ """Test our coroutines wrapped with maybe_coroutine as if they returned plain twisted deferreds."""
+ result = yield function()
+ assert result == 'function_result'
+
+ def cb(result):
+ assert result == 'function_result'
+
+ d = function()
+ d.addCallback(cb)
+ yield d
+
+
+@pytest.mark.parametrize(
+ 'function',
+ [
+ inline_error,
+ coro_error,
+ coro_error_from_coro,
+ coro_error_from_inline,
+ inline_error_from_coro,
+ ],
+)
+@pytest_twisted.inlineCallbacks
+def test_error_from_inline(function):
+ """Test our coroutines wrapped with maybe_coroutine as if they returned plain twisted deferreds that raise."""
+ with pytest.raises(Exception, match='function_error'):
+ yield function()
+
+ def eb(result):
+ assert isinstance(result, twisted.python.failure.Failure)
+ assert result.getErrorMessage() == 'function_error'
+
+ d = function()
+ d.addErrback(eb)
+ yield d
+
+
+@pytest.mark.parametrize(
+ 'function',
+ [
+ inline_func,
+ coro_func,
+ coro_func_from_coro,
+ coro_func_from_inline,
+ inline_func_from_coro,
+ ],
+)
+async def test_from_coro(function):
+ """Test our coroutines wrapped with maybe_coroutine work from another coroutine."""
+ result = await function()
+ assert result == 'function_result'
+
+
+@pytest.mark.parametrize(
+ 'function',
+ [
+ inline_error,
+ coro_error,
+ coro_error_from_coro,
+ coro_error_from_inline,
+ inline_error_from_coro,
+ ],
+)
+async def test_error_from_coro(function):
+ """Test our coroutines wrapped with maybe_coroutine work from another coroutine with errors."""
+ with pytest.raises(Exception, match='function_error'):
+ await function()
+
+
+async def test_tracebacks_preserved():
+ with pytest.raises(Exception) as exc:
+ await coro_error_from_coro()
+ traceback_lines = [
+ 'await coro_error_from_coro()',
+ 'return await coro_error()',
+ "raise Exception('function_error')",
+ ]
+ # If each coroutine got wrapped with ensureDeferred, the traceback will be mangled
+ # verify the coroutines passed through by checking the traceback.
+ for expected, actual in zip(traceback_lines, exc.traceback):
+ assert expected in str(actual)
+
+
+async def test_maybe_deferred_coroutine():
+ result = await maybeDeferred(coro_func)
+ assert result == 'function_result'
+
+
+async def test_callback_before_await():
+ def cb(res):
+ assert res == 'function_result'
+ return res
+
+ d = coro_func()
+ d.addCallback(cb)
+ result = await d
+ assert result == 'function_result'
+
+
+async def test_callback_after_await():
+ """If it has already been used as a coroutine, can't be retroactively turned into a Deferred.
+ This limitation could be fixed, but the extra complication doesn't feel worth it.
+ """
+
+ def cb(res):
+ pass
+
+ d = coro_func()
+ await d
+ with pytest.raises(
+ Exception, match='Cannot add callbacks to an already awaited coroutine'
+ ):
+ d.addCallback(cb)
diff --git a/deluge/tests/test_metafile.py b/deluge/tests/test_metafile.py
new file mode 100644
index 0000000..1b16750
--- /dev/null
+++ b/deluge/tests/test_metafile.py
@@ -0,0 +1,112 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+import tempfile
+
+import pytest
+
+from deluge import metafile
+from deluge._libtorrent import LT_VERSION
+from deluge.common import VersionSplit
+
+from . import common
+
+
+def check_torrent(filename):
+ # Test loading with libtorrent to make sure it's valid
+ from deluge._libtorrent import lt
+
+ lt.torrent_info(filename)
+
+ # Test loading with our internal TorrentInfo class
+ from deluge.ui.common import TorrentInfo
+
+ TorrentInfo(filename)
+
+
+class TestMetafile:
+ def test_save_multifile(self):
+ # Create a temporary folder for torrent creation
+ tmp_path = tempfile.mkdtemp()
+ with open(os.path.join(tmp_path, 'file_A'), 'wb') as tmp_file:
+ tmp_file.write(b'a' * (312 * 1024))
+ with open(os.path.join(tmp_path, 'file_B'), 'wb') as tmp_file:
+ tmp_file.write(b'b' * (2354 * 1024))
+ with open(os.path.join(tmp_path, 'file_C'), 'wb') as tmp_file:
+ tmp_file.write(b'c' * (11 * 1024))
+
+ tmp_fd, tmp_file = tempfile.mkstemp('.torrent')
+ metafile.make_meta_file(tmp_path, '', 32768, target=tmp_file)
+
+ check_torrent(tmp_file)
+
+ os.remove(os.path.join(tmp_path, 'file_A'))
+ os.remove(os.path.join(tmp_path, 'file_B'))
+ os.remove(os.path.join(tmp_path, 'file_C'))
+ os.rmdir(tmp_path)
+ os.close(tmp_fd)
+ os.remove(tmp_file)
+
+ def test_save_singlefile(self):
+ with tempfile.TemporaryDirectory() as tmp_dir:
+ tmp_data = tmp_dir + '/testdata'
+ with open(tmp_data, 'wb') as tmp_file:
+ tmp_file.write(b'a' * (2314 * 1024))
+
+ tmp_torrent = tmp_dir + '/.torrent'
+ metafile.make_meta_file(tmp_data, '', 32768, target=tmp_torrent)
+
+ check_torrent(tmp_torrent)
+
+ @pytest.mark.parametrize(
+ 'path',
+ [
+ common.get_test_data_file('deluge.png'),
+ common.get_test_data_file('unicode_filenames.torrent'),
+ os.path.dirname(common.get_test_data_file('deluge.png')),
+ ],
+ )
+ @pytest.mark.parametrize(
+ 'torrent_format',
+ [
+ metafile.TorrentFormat.V1,
+ metafile.TorrentFormat.V2,
+ metafile.TorrentFormat.HYBRID,
+ ],
+ )
+ @pytest.mark.parametrize('piece_length', [2**14, 2**15, 2**16])
+ @pytest.mark.parametrize('private', [True, False])
+ def test_create_info(self, path, torrent_format, piece_length, private):
+ our_info, our_piece_layers = metafile.makeinfo(
+ path,
+ piece_length,
+ metafile.dummy,
+ private=private,
+ torrent_format=torrent_format,
+ )
+ lt_info, lt_piece_layers = metafile.makeinfo_lt(
+ path,
+ piece_length,
+ private=private,
+ torrent_format=torrent_format,
+ )
+
+ if (
+ torrent_format == metafile.TorrentFormat.HYBRID
+ and os.path.isdir(path)
+ and VersionSplit(LT_VERSION) <= VersionSplit('2.0.7.0')
+ ):
+ # Libtorrent didn't correctly follow the standard until version 2.0.7 included
+ # https://github.com/arvidn/libtorrent/commit/74d82a0cd7c2e9e3c4294901d7eb65e247050df4
+ # If last file is a padding, ignore that file and the last piece.
+ if our_info[b'files'][-1][b'path'][0] == b'.pad':
+ our_info[b'files'] = our_info[b'files'][:-1]
+ our_info[b'pieces'] = our_info[b'pieces'][:-32]
+ lt_info[b'pieces'] = lt_info[b'pieces'][:-32]
+
+ assert our_info == lt_info
+ assert our_piece_layers == lt_piece_layers
diff --git a/deluge/tests/test_plugin_metadata.py b/deluge/tests/test_plugin_metadata.py
new file mode 100644
index 0000000..adf115d
--- /dev/null
+++ b/deluge/tests/test_plugin_metadata.py
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2015 Calum Lind <calumlind@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.pluginmanagerbase import PluginManagerBase
+
+
+class TestPluginManagerBase:
+ def test_get_plugin_info(self):
+ pm = PluginManagerBase('core.conf', 'deluge.plugin.core')
+ for p in pm.get_available_plugins():
+ for key, value in pm.get_plugin_info(p).items():
+ assert isinstance(key, str)
+ assert isinstance(value, str)
+
+ def test_get_plugin_info_invalid_name(self):
+ pm = PluginManagerBase('core.conf', 'deluge.plugin.core')
+ for key, value in pm.get_plugin_info('random').items():
+ result = 'not available' if key in ('Name', 'Version') else ''
+ assert value == result
+
+ def test_parse_pkg_info_metadata_2_1(self):
+ pkg_info = """Metadata-Version: 2.1
+Name: AutoAdd
+Version: 1.8
+Summary: Monitors folders for .torrent files.
+Home-page: http://dev.deluge-torrent.org/wiki/Plugins/AutoAdd
+Author: Chase Sterling, Pedro Algarvio
+Author-email: chase.sterling@gmail.com, pedro@algarvio.me
+License: GPLv3
+Platform: UNKNOWN
+
+Monitors folders for .torrent files.
+ """
+ plugin_info = PluginManagerBase.parse_pkg_info(pkg_info)
+ for value in plugin_info.values():
+ assert value != ''
+ result = 'Monitors folders for .torrent files.'
+ assert plugin_info['Description'] == result
diff --git a/deluge/tests/test_rpcserver.py b/deluge/tests/test_rpcserver.py
new file mode 100644
index 0000000..77c9f1e
--- /dev/null
+++ b/deluge/tests/test_rpcserver.py
@@ -0,0 +1,108 @@
+#
+# Copyright (C) 2013 Bro <bro.development@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+import deluge.error
+from deluge.common import get_localhost_auth
+from deluge.conftest import BaseTestCase
+from deluge.core import rpcserver
+from deluge.core.authmanager import AuthManager
+from deluge.core.rpcserver import DelugeRPCProtocol, RPCServer
+from deluge.log import setup_logger
+
+setup_logger('none')
+
+
+class DelugeRPCProtocolTester(DelugeRPCProtocol):
+ messages = []
+
+ def transfer_message(self, data):
+ self.messages.append(data)
+
+
+class TestRPCServer(BaseTestCase):
+ def set_up(self):
+ self.rpcserver = RPCServer(listen=False)
+ self.rpcserver.factory.protocol = DelugeRPCProtocolTester
+ self.factory = self.rpcserver.factory
+ self.session_id = '0'
+ self.request_id = 11
+ self.protocol = self.rpcserver.factory.protocol()
+ self.protocol.factory = self.factory
+ self.protocol.transport = self.protocol
+ self.factory.session_protocols[self.session_id] = self.protocol
+ self.factory.authorized_sessions[self.session_id] = None
+ self.factory.interested_events[self.session_id] = ['TorrentFolderRenamedEvent']
+ self.protocol.sessionno = self.session_id
+ return component.start()
+
+ def tear_down(self):
+ def on_shutdown(result):
+ del self.rpcserver
+
+ return component.shutdown().addCallback(on_shutdown)
+
+ def test_emit_event_for_session_id(self):
+ torrent_id = '12'
+ from deluge.event import TorrentFolderRenamedEvent
+
+ data = [torrent_id, 'new name', 'old name']
+ e = TorrentFolderRenamedEvent(*data)
+ self.rpcserver.emit_event_for_session_id(self.session_id, e)
+ msg = self.protocol.messages.pop()
+ assert msg[0] == rpcserver.RPC_EVENT, str(msg)
+ assert msg[1] == 'TorrentFolderRenamedEvent', str(msg)
+ assert msg[2] == data, str(msg)
+
+ def test_invalid_client_login(self):
+ self.protocol.dispatch(self.request_id, 'daemon.login', [1], {})
+ msg = self.protocol.messages.pop()
+ assert msg[0] == rpcserver.RPC_ERROR
+ assert msg[1] == self.request_id
+
+ def test_valid_client_login(self):
+ self.authmanager = AuthManager()
+ auth = get_localhost_auth()
+ self.protocol.dispatch(
+ self.request_id, 'daemon.login', auth, {'client_version': 'Test'}
+ )
+ msg = self.protocol.messages.pop()
+ assert msg[0] == rpcserver.RPC_RESPONSE, str(msg)
+ assert msg[1] == self.request_id, str(msg)
+ assert msg[2] == rpcserver.AUTH_LEVEL_ADMIN, str(msg)
+
+ def test_client_login_error(self):
+ # This test causes error log prints while running the test...
+ self.protocol.transport = None # This should cause AttributeError
+ self.authmanager = AuthManager()
+ auth = get_localhost_auth()
+ self.protocol.dispatch(
+ self.request_id, 'daemon.login', auth, {'client_version': 'Test'}
+ )
+ msg = self.protocol.messages.pop()
+ assert msg[0] == rpcserver.RPC_ERROR
+ assert msg[1] == self.request_id
+ assert msg[2] == 'WrappedException'
+ assert msg[3][1] == 'AttributeError'
+
+ def test_client_invalid_method_call(self):
+ self.authmanager = AuthManager()
+ auth = get_localhost_auth()
+ self.protocol.dispatch(self.request_id, 'invalid_function', auth, {})
+ msg = self.protocol.messages.pop()
+ assert msg[0] == rpcserver.RPC_ERROR
+ assert msg[1] == self.request_id
+ assert msg[2] == 'WrappedException'
+ assert msg[3][1] == 'AttributeError'
+
+ def test_daemon_info(self):
+ self.protocol.dispatch(self.request_id, 'daemon.info', [], {})
+ msg = self.protocol.messages.pop()
+ assert msg[0] == rpcserver.RPC_RESPONSE, str(msg)
+ assert msg[1] == self.request_id, str(msg)
+ assert msg[2] == deluge.common.get_version(), str(msg)
diff --git a/deluge/tests/test_security.py b/deluge/tests/test_security.py
new file mode 100644
index 0000000..c472d16
--- /dev/null
+++ b/deluge/tests/test_security.py
@@ -0,0 +1,158 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+
+import pytest
+from twisted.internet.utils import getProcessOutputAndValue
+
+import deluge.component as component
+import deluge.ui.web.server
+from deluge import configmanager
+from deluge.common import windows_check
+from deluge.conftest import BaseTestCase
+from deluge.ui.web.server import DelugeWeb
+
+from .common import get_test_data_file
+from .common_web import WebServerTestBase
+from .daemon_base import DaemonBase
+
+SECURITY_TESTS = bool(os.getenv('SECURITY_TESTS', False))
+
+
+# TODO: This whole module has not been tested since migrating tests fully to pytest
+class SecurityBaseTestCase:
+ @pytest.fixture(autouse=True)
+ def setvars(self):
+ self.home_dir = os.path.expanduser('~')
+ self.port = 8112
+
+ def _run_test(self, test):
+ d = getProcessOutputAndValue(
+ 'bash',
+ [
+ get_test_data_file('testssl.sh'),
+ '--quiet',
+ '--nodns',
+ 'none',
+ '--color',
+ '0',
+ test,
+ '127.0.0.1:%d' % self.port,
+ ],
+ )
+
+ def on_result(results):
+ if test == '-e':
+ results = results[0].split(b'\n')[7:-6]
+ assert len(results) > 3
+ else:
+ assert b'OK' in results[0]
+ assert b'NOT ok' not in results[0]
+
+ d.addCallback(on_result)
+ return d
+
+ def test_secured_webserver_protocol(self):
+ return self._run_test('-p')
+
+ def test_secured_webserver_standard_ciphers(self):
+ return self._run_test('-s')
+
+ def test_secured_webserver_heartbleed_vulnerability(self):
+ return self._run_test('-H')
+
+ def test_secured_webserver_css_injection_vulnerability(self):
+ return self._run_test('-I')
+
+ def test_secured_webserver_renegotiation_vulnerabilities(self):
+ return self._run_test('-R')
+
+ def test_secured_webserver_crime_vulnerability(self):
+ return self._run_test('-C')
+
+ def test_secured_webserver_poodle_vulnerability(self):
+ return self._run_test('-O')
+
+ def test_secured_webserver_tls_fallback_scsv_mitigation_vulnerability(self):
+ return self._run_test('-Z')
+
+ def test_secured_webserver_sweet32_vulnerability(self):
+ return self._run_test('-W')
+
+ def test_secured_webserver_beast_vulnerability(self):
+ return self._run_test('-A')
+
+ def test_secured_webserver_lucky13_vulnerability(self):
+ return self._run_test('-L')
+
+ def test_secured_webserver_freak_vulnerability(self):
+ return self._run_test('-F')
+
+ def test_secured_webserver_logjam_vulnerability(self):
+ return self._run_test('-J')
+
+ def test_secured_webserver_drown_vulnerability(self):
+ return self._run_test('-D')
+
+ def test_secured_webserver_forward_secrecy_settings(self):
+ return self._run_test('-f')
+
+ def test_secured_webserver_rc4_ciphers(self):
+ return self._run_test('-4')
+
+ def test_secured_webserver_preference(self):
+ return self._run_test('-P')
+
+ def test_secured_webserver_ciphers(self):
+ return self._run_test('-e')
+
+
+@pytest.mark.skipif(windows_check(), reason='windows cannot run .sh files')
+@pytest.mark.skipif(not SECURITY_TESTS, reason='skipping security tests')
+@pytest.mark.security
+class TestDaemonSecurity(BaseTestCase, DaemonBase, SecurityBaseTestCase):
+ def set_up(self):
+ d = self.common_set_up()
+ self.port = self.listen_port
+ d.addCallback(self.start_core)
+ d.addErrback(self.terminate_core)
+ return d
+
+ def tear_down(self):
+ d = component.shutdown()
+ d.addCallback(self.terminate_core)
+ return d
+
+
+@pytest.mark.skipif(windows_check(), reason='windows cannot run .sh files')
+@pytest.mark.skipif(not SECURITY_TESTS, reason='skipping security tests')
+@pytest.mark.security
+class TestWebUISecurity(WebServerTestBase, SecurityBaseTestCase):
+ def start_webapi(self, arg):
+ self.port = self.deluge_web.port = 8999
+
+ config_defaults = deluge.ui.web.server.CONFIG_DEFAULTS.copy()
+ config_defaults['port'] = self.deluge_web.port
+ config_defaults['https'] = True
+ self.config = configmanager.ConfigManager('web.conf', config_defaults)
+
+ self.deluge_web = DelugeWeb(daemon=False)
+
+ host = list(self.deluge_web.web_api.hostlist.config['hosts'][0])
+ host[2] = self.listen_port
+ self.deluge_web.web_api.hostlist.config['hosts'][0] = tuple(host)
+ self.host_id = host[0]
+ self.deluge_web.start()
+
+ def test_secured_webserver_headers(self):
+ return self._run_test('-h')
+
+ def test_secured_webserver_breach_vulnerability(self):
+ return self._run_test('-B')
+
+ def test_secured_webserver_ticketbleed_vulnerability(self):
+ return self._run_test('-T')
diff --git a/deluge/tests/test_sessionproxy.py b/deluge/tests/test_sessionproxy.py
new file mode 100644
index 0000000..86289cc
--- /dev/null
+++ b/deluge/tests/test_sessionproxy.py
@@ -0,0 +1,154 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+from twisted.internet.defer import maybeDeferred, succeed
+from twisted.internet.task import Clock
+
+import deluge.component as component
+import deluge.ui.sessionproxy
+from deluge.conftest import BaseTestCase
+
+
+class Core:
+ def __init__(self):
+ self.reset()
+
+ def reset(self):
+ self.torrents = {}
+ self.torrents['a'] = {'key1': 1, 'key2': 2, 'key3': 3}
+ self.torrents['b'] = {'key1': 1, 'key2': 2, 'key3': 3}
+ self.torrents['c'] = {'key1': 1, 'key2': 2, 'key3': 3}
+ self.prev_status = {}
+
+ def get_session_state(self):
+ return maybeDeferred(self.torrents.keys)
+
+ def get_torrent_status(self, torrent_id, keys, diff=False):
+ if not keys:
+ keys = list(self.torrents[torrent_id])
+
+ if not diff:
+ ret = {}
+ for key in keys:
+ ret[key] = self.torrents[torrent_id][key]
+
+ return succeed(ret)
+
+ else:
+ ret = {}
+ if torrent_id in self.prev_status:
+ for key in keys:
+ if (
+ self.prev_status[torrent_id][key]
+ != self.torrents[torrent_id][key]
+ ):
+ ret[key] = self.torrents[torrent_id][key]
+ else:
+ ret = self.torrents[torrent_id]
+ self.prev_status[torrent_id] = dict(self.torrents[torrent_id])
+ return succeed(ret)
+
+ def get_torrents_status(self, filter_dict, keys, diff=False):
+ if not filter_dict:
+ filter_dict['id'] = list(self.torrents)
+ if not keys:
+ keys = list(self.torrents['a'])
+ if not diff:
+ if 'id' in filter_dict:
+ torrents = filter_dict['id']
+ ret = {}
+ for torrent in torrents:
+ ret[torrent] = {}
+ for key in keys:
+ ret[torrent][key] = self.torrents[torrent][key]
+ return succeed(ret)
+ else:
+ if 'id' in filter_dict:
+ torrents = filter_dict['id']
+ ret = {}
+ for torrent in torrents:
+ ret[torrent] = {}
+ if torrent in self.prev_status:
+ for key in self.prev_status[torrent]:
+ if (
+ self.prev_status[torrent][key]
+ != self.torrents[torrent][key]
+ ):
+ ret[torrent][key] = self.torrents[torrent][key]
+ else:
+ ret[torrent] = dict(self.torrents[torrent])
+
+ self.prev_status[torrent] = dict(self.torrents[torrent])
+ return succeed(ret)
+
+
+class Client:
+ def __init__(self):
+ self.core = Core()
+
+ def __noop__(self, *args, **kwargs):
+ return None
+
+ def __getattr__(self, *args, **kwargs):
+ return self.__noop__
+
+
+client = Client()
+
+
+class TestSessionProxy(BaseTestCase):
+ def set_up(self):
+ self.clock = Clock()
+ self.patch(deluge.ui.sessionproxy, 'time', self.clock.seconds)
+ self.patch(deluge.ui.sessionproxy, 'client', client)
+ self.sp = deluge.ui.sessionproxy.SessionProxy()
+ client.core.reset()
+ d = self.sp.start()
+
+ def do_get_torrents_status(torrent_ids):
+ inital_keys = ['key1']
+ # Advance clock to expire the cache times
+ self.clock.advance(2)
+ return self.sp.get_torrents_status({'id': torrent_ids}, inital_keys)
+
+ d.addCallback(do_get_torrents_status)
+ return d
+
+ def tear_down(self):
+ return component.deregister(self.sp)
+
+ def test_startup(self):
+ assert client.core.torrents['a'] == self.sp.torrents['a'][1]
+
+ async def test_get_torrent_status_no_change(self):
+ result = await self.sp.get_torrent_status('a', [])
+ assert result == client.core.torrents['a']
+
+ async def test_get_torrent_status_change_with_cache(self):
+ client.core.torrents['a']['key1'] = 2
+ result = await self.sp.get_torrent_status('a', ['key1'])
+ assert result == {'key1': 1}
+
+ async def test_get_torrent_status_change_without_cache(self):
+ client.core.torrents['a']['key1'] = 2
+ self.clock.advance(self.sp.cache_time + 0.1)
+ result = await self.sp.get_torrent_status('a', [])
+ assert result == client.core.torrents['a']
+
+ async def test_get_torrent_status_key_not_updated(self):
+ self.clock.advance(self.sp.cache_time + 0.1)
+ self.sp.get_torrent_status('a', ['key1'])
+ client.core.torrents['a']['key2'] = 99
+ result = await self.sp.get_torrent_status('a', ['key2'])
+ assert result == {'key2': 99}
+
+ async def test_get_torrents_status_key_not_updated(self):
+ self.clock.advance(self.sp.cache_time + 0.1)
+ self.sp.get_torrents_status({'id': ['a']}, ['key1'])
+ client.core.torrents['a']['key2'] = 99
+ result = await self.sp.get_torrents_status({'id': ['a']}, ['key2'])
+ assert result == {'a': {'key2': 99}}
diff --git a/deluge/tests/test_torrent.py b/deluge/tests/test_torrent.py
new file mode 100644
index 0000000..6288615
--- /dev/null
+++ b/deluge/tests/test_torrent.py
@@ -0,0 +1,388 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import itertools
+import os
+import time
+from base64 import b64encode
+from unittest import mock
+
+import pytest
+from twisted.internet import defer, reactor
+from twisted.internet.task import deferLater
+
+import deluge.component as component
+import deluge.core.torrent
+import deluge.tests.common as common
+from deluge._libtorrent import lt
+from deluge.common import VersionSplit, utf8_encode_structure
+from deluge.conftest import BaseTestCase
+from deluge.core.core import Core
+from deluge.core.rpcserver import RPCServer
+from deluge.core.torrent import Torrent
+from deluge.core.torrentmanager import TorrentManager, TorrentState
+
+try:
+ from unittest.mock import AsyncMock
+except ImportError:
+ from mock import AsyncMock
+
+
+class TestTorrent(BaseTestCase):
+ def setup_config(self):
+ core_config = deluge.config.Config(
+ 'core.conf',
+ defaults=deluge.core.preferencesmanager.DEFAULT_PREFS,
+ config_dir=self.config_dir,
+ )
+ core_config.save()
+
+ def set_up(self):
+ self.setup_config()
+ self.rpcserver = RPCServer(listen=False)
+ self.core = Core()
+ self.core.config.config['lsd'] = False
+ self.core.config.config['new_release_check'] = False
+ self.session = self.core.session
+ self.torrent = None
+ return component.start()
+
+ def tear_down(self):
+ def on_shutdown(result):
+ del self.rpcserver
+ del self.core
+
+ return component.shutdown().addCallback(on_shutdown)
+
+ def print_priority_list(self, priorities):
+ tmp = ''
+ for i, p in enumerate(priorities):
+ if i % 100 == 0:
+ print(tmp)
+ tmp = ''
+ tmp += '%s' % p
+ print(tmp)
+
+ def assert_state(self, torrent, state):
+ """Assert torrent state matches expected state"""
+ torrent.update_state()
+ assert torrent.state == state
+
+ def assert_state_wait(self, torrent, expected, timeout=1, interval=0.2):
+ """Assert state but retry with timeout e.g. Allow for async lt alerts"""
+ start = time.time()
+
+ while time.time() - start < timeout:
+ torrent.update_state()
+ time.sleep(interval)
+ if torrent.state == expected:
+ break
+ else:
+ assert torrent.state == expected
+
+ def get_torrent_atp(self, filename):
+ filename = common.get_test_data_file(filename)
+ with open(filename, 'rb') as _file:
+ info = lt.torrent_info(lt.bdecode(_file.read()))
+ atp = {
+ 'ti': info,
+ 'save_path': os.getcwd(),
+ 'storage_mode': lt.storage_mode_t.storage_mode_sparse,
+ 'flags': (
+ lt.torrent_flags.auto_managed
+ | lt.torrent_flags.duplicate_is_error & ~lt.torrent_flags.paused
+ ),
+ }
+ return atp
+
+ async def test_set_file_priorities(self):
+ if getattr(lt, 'file_prio_alert', None):
+ # Libtorrent 2.0.3 and later has a file_prio_alert
+ prios_set = defer.Deferred()
+ prios_set.addTimeout(1.5, reactor)
+ component.get('AlertManager').register_handler(
+ 'file_prio_alert', lambda a: prios_set.callback(True)
+ )
+ else:
+ # On older libtorrent, we just wait a while
+ prios_set = deferLater(reactor, 0.8)
+
+ atp = self.get_torrent_atp('dir_with_6_files.torrent')
+ handle = self.session.add_torrent(atp)
+ torrent = Torrent(handle, {})
+
+ result = torrent.get_file_priorities()
+ assert all(x == 4 for x in result)
+
+ new_priorities = [3, 1, 2, 0, 5, 6, 7]
+ torrent.set_file_priorities(new_priorities)
+ assert torrent.get_file_priorities() == new_priorities
+
+ # Test with handle.piece_priorities as handle.file_priorities async
+ # updates and will return old value. Also need to remove a priority
+ # value as one file is much smaller than piece size so doesn't show.
+ await prios_set # Delay to wait for alert from lt
+ piece_prio = handle.get_piece_priorities()
+ result = all(p in piece_prio for p in [3, 2, 0, 5, 6, 7])
+ assert result
+
+ def test_set_prioritize_first_last_pieces(self):
+ piece_indexes = [
+ 0,
+ 1,
+ 50,
+ 51,
+ 52,
+ 110,
+ 111,
+ 112,
+ 113,
+ 200,
+ 201,
+ 202,
+ 212,
+ 213,
+ 214,
+ 215,
+ 216,
+ 217,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ ]
+ self.run_test_set_prioritize_first_last_pieces(
+ 'dir_with_6_files.torrent', piece_indexes
+ )
+
+ def run_test_set_prioritize_first_last_pieces(
+ self, torrent_file, prioritized_piece_indexes
+ ):
+ atp = self.get_torrent_atp(torrent_file)
+ handle = self.session.add_torrent(atp)
+
+ self.torrent = Torrent(handle, {})
+ priorities_original = handle.get_piece_priorities()
+ self.torrent.set_prioritize_first_last_pieces(True)
+ priorities = handle.get_piece_priorities()
+
+ # The length of the list of new priorites is the same as the original
+ assert len(priorities_original) == len(priorities)
+
+ # Test the priority of all the pieces against the calculated indexes.
+ for idx, priority in enumerate(priorities):
+ if idx in prioritized_piece_indexes:
+ assert priorities[idx] == 7
+ else:
+ assert priorities[idx] == 4
+
+ # self.print_priority_list(priorities)
+
+ def test_set_prioritize_first_last_pieces_false(self):
+ atp = self.get_torrent_atp('dir_with_6_files.torrent')
+ handle = self.session.add_torrent(atp)
+ self.torrent = Torrent(handle, {})
+ # First set some pieces prioritized
+ self.torrent.set_prioritize_first_last_pieces(True)
+ # Reset pirorities
+ self.torrent.set_prioritize_first_last_pieces(False)
+ priorities = handle.get_piece_priorities()
+
+ # Test the priority of the prioritized pieces
+ for i in priorities:
+ assert priorities[i] == 4
+
+ # self.print_priority_list(priorities)
+
+ def test_torrent_error_data_missing(self):
+ options = {'seed_mode': True}
+ filename = common.get_test_data_file('test_torrent.file.torrent')
+ with open(filename, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ torrent_id = self.core.add_torrent_file(filename, filedump, options)
+ torrent = self.core.torrentmanager.torrents[torrent_id]
+
+ # Inital check will fail and return to download state
+ self.assert_state_wait(torrent, 'Downloading')
+
+ # Force an error by reading (non-existant) piece from disk
+ torrent.handle.read_piece(0)
+ self.assert_state_wait(torrent, 'Error')
+
+ def test_torrent_error_resume_original_state(self):
+ options = {'seed_mode': True, 'add_paused': True}
+ filename = common.get_test_data_file('test_torrent.file.torrent')
+ with open(filename, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ torrent_id = self.core.add_torrent_file(filename, filedump, options)
+ torrent = self.core.torrentmanager.torrents[torrent_id]
+
+ orig_state = 'Paused'
+ self.assert_state(torrent, orig_state)
+
+ # Force an error by reading (non-existant) piece from disk
+ torrent.handle.read_piece(0)
+ self.assert_state_wait(torrent, 'Error')
+
+ # Clear error and verify returned to original state
+ torrent.force_recheck()
+
+ def test_torrent_error_resume_data_unaltered(self):
+ if VersionSplit(lt.__version__) >= VersionSplit('1.2.0.0'):
+ pytest.skip('Test not working as expected on lt 1.2 or greater')
+
+ resume_data = {
+ 'active_time': 13399,
+ 'num_incomplete': 16777215,
+ 'announce_to_lsd': 1,
+ 'seed_mode': 0,
+ 'pieces': '\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01',
+ 'paused': 0,
+ 'seeding_time': 13399,
+ 'last_scrape': 13399,
+ 'info-hash': '-\xc5\xd0\xe7\x1af\xfeid\x9ad\r9\xcb\x00\xa2YpIs',
+ 'max_uploads': 16777215,
+ 'max_connections': 16777215,
+ 'num_downloaders': 16777215,
+ 'total_downloaded': 0,
+ 'file-format': 'libtorrent resume file',
+ 'peers6': '',
+ 'added_time': 1411826665,
+ 'banned_peers6': '',
+ 'file_priority': [1],
+ 'last_seen_complete': 0,
+ 'total_uploaded': 0,
+ 'piece_priority': '\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01',
+ 'file-version': 1,
+ 'announce_to_dht': 1,
+ 'auto_managed': 1,
+ 'upload_rate_limit': 0,
+ 'completed_time': 1411826665,
+ 'allocation': 'sparse',
+ 'blocks per piece': 2,
+ 'download_rate_limit': 0,
+ 'libtorrent-version': '0.16.17.0',
+ 'banned_peers': '',
+ 'num_seeds': 16777215,
+ 'sequential_download': 0,
+ 'announce_to_trackers': 1,
+ 'peers': '\n\x00\x02\x0f=\xc6SC\x17]\xd8}\x7f\x00\x00\x01=\xc6',
+ 'finished_time': 13399,
+ 'last_upload': 13399,
+ 'trackers': [[]],
+ 'super_seeding': 0,
+ 'file sizes': [[512000, 1411826586]],
+ 'last_download': 13399,
+ }
+ torrent_state = TorrentState(
+ torrent_id='2dc5d0e71a66fe69649a640d39cb00a259704973',
+ filename='test_torrent.file.torrent',
+ name='',
+ save_path='/home/ubuntu/Downloads',
+ file_priorities=[1],
+ is_finished=True,
+ )
+
+ filename = common.get_test_data_file('test_torrent.file.torrent')
+ with open(filename, 'rb') as _file:
+ filedump = _file.read()
+ resume_data = utf8_encode_structure(resume_data)
+ torrent_id = self.core.torrentmanager.add(
+ state=torrent_state, filedump=filedump, resume_data=lt.bencode(resume_data)
+ )
+ torrent = self.core.torrentmanager.torrents[torrent_id]
+
+ def assert_resume_data():
+ self.assert_state(torrent, 'Error')
+ tm_resume_data = lt.bdecode(
+ self.core.torrentmanager.resume_data[torrent.torrent_id]
+ )
+ assert tm_resume_data == resume_data
+
+ return deferLater(reactor, 0.5, assert_resume_data)
+
+ def test_get_eta_seeding(self):
+ atp = self.get_torrent_atp('test_torrent.file.torrent')
+ handle = self.session.add_torrent(atp)
+ self.torrent = Torrent(handle, {})
+ assert self.torrent.get_eta() == 0
+ self.torrent.status = mock.MagicMock()
+
+ self.torrent.status.upload_payload_rate = 5000
+ self.torrent.status.download_payload_rate = 0
+ self.torrent.status.all_time_download = 10000
+ self.torrent.status.all_time_upload = 500
+ self.torrent.is_finished = True
+ self.torrent.options = {'stop_at_ratio': False}
+ # Test finished and uploading but no stop_at_ratio set.
+ assert self.torrent.get_eta() == 0
+
+ self.torrent.options = {'stop_at_ratio': True, 'stop_ratio': 1.5}
+ result = self.torrent.get_eta()
+ assert result == 2
+ assert isinstance(result, int)
+
+ def test_get_eta_downloading(self):
+ atp = self.get_torrent_atp('test_torrent.file.torrent')
+ handle = self.session.add_torrent(atp)
+ self.torrent = Torrent(handle, {})
+ assert self.torrent.get_eta() == 0
+
+ self.torrent.status = mock.MagicMock()
+ self.torrent.status.download_payload_rate = 50
+ self.torrent.status.total_wanted = 10000
+ self.torrent.status.total_wanted_done = 5000
+
+ result = self.torrent.get_eta()
+ assert result == 100
+ assert isinstance(result, int)
+
+ def test_get_name_unicode(self):
+ """Test retrieving a unicode torrent name from libtorrent."""
+ atp = self.get_torrent_atp('unicode_file.torrent')
+ handle = self.session.add_torrent(atp)
+ self.torrent = Torrent(handle, {})
+ assert self.torrent.get_name() == 'সুকুমার রায়.txt'
+
+ def test_rename_unicode(self):
+ """Test renaming file/folders with unicode filenames."""
+ atp = self.get_torrent_atp('unicode_filenames.torrent')
+ handle = self.session.add_torrent(atp)
+ self.torrent = Torrent(handle, {})
+ # Ignore TorrentManager method call
+ TorrentManager.save_resume_data = AsyncMock()
+
+ result = self.torrent.rename_folder('unicode_filenames', 'Горбачёв')
+ assert isinstance(result, defer.DeferredList)
+
+ result = self.torrent.rename_files([[0, 'new_рбачёв']])
+ assert result is None
+
+ def test_connect_peer_port(self):
+ """Test to ensure port is int for libtorrent"""
+ atp = self.get_torrent_atp('test_torrent.file.torrent')
+ handle = self.session.add_torrent(atp)
+ self.torrent = Torrent(handle, {})
+ assert not self.torrent.connect_peer('127.0.0.1', 'text')
+ assert self.torrent.connect_peer('127.0.0.1', '1234')
+
+ def test_status_cache(self):
+ atp = self.get_torrent_atp('test_torrent.file.torrent')
+ handle = self.session.add_torrent(atp)
+ mock_time = mock.Mock(return_value=time.time())
+ with mock.patch('time.time', mock_time):
+ torrent = Torrent(handle, {})
+ counter = itertools.count()
+ handle.status = mock.Mock(side_effect=counter.__next__)
+ first_status = torrent.get_lt_status()
+ assert first_status == 0, 'sanity check'
+ assert first_status == torrent.status, 'cached status should be used'
+ assert torrent.get_lt_status() == 1, 'status should update'
+ assert torrent.status == 1
+ # Advance time and verify cache expires and updates
+ mock_time.return_value += 10
+ assert torrent.status == 2
diff --git a/deluge/tests/test_torrentmanager.py b/deluge/tests/test_torrentmanager.py
new file mode 100644
index 0000000..1a5e3a9
--- /dev/null
+++ b/deluge/tests/test_torrentmanager.py
@@ -0,0 +1,146 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+import shutil
+import warnings
+from base64 import b64encode
+from unittest import mock
+
+import pytest
+import pytest_twisted
+from twisted.internet import reactor, task
+
+from deluge import component
+from deluge.bencode import bencode
+from deluge.conftest import BaseTestCase
+from deluge.core.core import Core
+from deluge.core.rpcserver import RPCServer
+from deluge.error import InvalidTorrentError
+
+from . import common
+
+warnings.filterwarnings('ignore', category=RuntimeWarning)
+warnings.resetwarnings()
+
+
+class TestTorrentmanager(BaseTestCase):
+ def set_up(self):
+ self.rpcserver = RPCServer(listen=False)
+ self.core = Core()
+ self.core.config.config['lsd'] = False
+ self.clock = task.Clock()
+ self.tm = self.core.torrentmanager
+ self.tm.callLater = self.clock.callLater
+ return component.start()
+
+ def tear_down(self):
+ def on_shutdown(result):
+ del self.rpcserver
+ del self.core
+
+ return component.shutdown().addCallback(on_shutdown)
+
+ @pytest_twisted.inlineCallbacks
+ def test_remove_torrent(self):
+ filename = common.get_test_data_file('test.torrent')
+ with open(filename, 'rb') as _file:
+ filedump = _file.read()
+ torrent_id = yield self.core.add_torrent_file_async(
+ filename, b64encode(filedump), {}
+ )
+ assert self.tm.remove(torrent_id, False)
+
+ @pytest_twisted.inlineCallbacks
+ def test_remove_magnet(self):
+ """Test remove magnet before received metadata and delete_copies is True"""
+ magnet = 'magnet:?xt=urn:btih:ab570cdd5a17ea1b61e970bb72047de141bce173'
+ options = {}
+ self.core.config.config['copy_torrent_file'] = True
+ self.core.config.config['del_copy_torrent_file'] = True
+ torrent_id = yield self.core.add_torrent_magnet(magnet, options)
+ assert self.tm.remove(torrent_id, False)
+
+ async def test_prefetch_metadata(self):
+ from deluge._libtorrent import lt
+
+ with open(common.get_test_data_file('test.torrent'), 'rb') as _file:
+ t_info = lt.torrent_info(lt.bdecode(_file.read()))
+ mock_alert = mock.MagicMock()
+ mock_alert.handle.info_hash = mock.MagicMock(
+ return_value='ab570cdd5a17ea1b61e970bb72047de141bce173'
+ )
+ mock_alert.handle.get_torrent_info = mock.MagicMock(return_value=t_info)
+
+ magnet = 'magnet:?xt=urn:btih:ab570cdd5a17ea1b61e970bb72047de141bce173'
+ d = self.tm.prefetch_metadata(magnet, 30)
+ # Make sure to use calllater, because the above prefetch call won't
+ # actually start running until we await it.
+ reactor.callLater(0, self.tm.on_alert_metadata_received, mock_alert)
+
+ expected = (
+ 'ab570cdd5a17ea1b61e970bb72047de141bce173',
+ b64encode(
+ bencode(
+ {
+ b'piece length': 32768,
+ b'sha1': (
+ b'2\xce\xb6\xa8"\xd7\xf0\xd4\xbf\xdc^K\xba\x1bh'
+ b'\x9d\xc5\xb7\xac\xdd'
+ ),
+ b'name': b'azcvsupdater_2.6.2.jar',
+ b'private': 0,
+ b'pieces': (
+ b"\xdb\x04B\x05\xc3'\xdab\xb8su97\xa9u"
+ b'\xca<w\\\x1ef\xd4\x9b\x16\xa9}\xc0\x9f:\xfd'
+ b'\x97qv\x83\xa2"\xef\x9d7\x0by!\rl\xe5v\xb7'
+ b'\x18{\xf7/"P\xe9\x8d\x01D\x9e8\xbd\x16\xe3'
+ b'\xfb-\x9d\xaa\xbcM\x11\xba\x92\xfc\x13F\xf0'
+ b'\x1c\x86x+\xc8\xd0S\xa9\x90`\xa1\xe4\x82\xe8'
+ b'\xfc\x08\xf7\xe3\xe5\xf6\x85\x1c%\xe7%\n\xed'
+ b'\xc0\x1f\xa1;\x9a\xea\xcf\x90\x0c/F>\xdf\xdagA'
+ b'\xc42|\xda\x82\xf5\xa6b\xa1\xb8#\x80wI\xd8f'
+ b'\xf8\xbd\xacW\xab\xc3s\xe0\xbbw\xf2K\xbe\xee'
+ b'\xa8rG\xe1W\xe8\xb7\xc2i\xf3\xd8\xaf\x9d\xdc'
+ b'\xd0#\xf4\xc1\x12u\xcd\x0bE?:\xe8\x9c\x1cu'
+ b'\xabb(oj\r^\xd5\xd5A\x83\x88\x9a\xa1J\x1c?'
+ b'\xa1\xd6\x8c\x83\x9e&'
+ ),
+ b'length': 307949,
+ b'name.utf-8': b'azcvsupdater_2.6.2.jar',
+ b'ed2k': b'>p\xefl\xfa]\x95K\x1b^\xc2\\;;e\xb7',
+ }
+ )
+ ),
+ )
+ assert expected == await d
+
+ async def test_prefetch_metadata_timeout(self):
+ magnet = 'magnet:?xt=urn:btih:ab570cdd5a17ea1b61e970bb72047de141bce173'
+ d = self.tm.prefetch_metadata(magnet, 30)
+ self.clock.advance(30)
+ result = await d
+ expected = ('ab570cdd5a17ea1b61e970bb72047de141bce173', b'')
+ assert result == expected
+
+ @pytest.mark.todo
+ def test_remove_torrent_false(self):
+ """Test when remove_torrent returns False"""
+ common.todo_test(self)
+
+ def test_remove_invalid_torrent(self):
+ with pytest.raises(InvalidTorrentError):
+ self.tm.remove('torrentidthatdoesntexist')
+
+ def test_open_state(self):
+ """Open a state with a UTF-8 encoded torrent filename."""
+ shutil.copy(
+ common.get_test_data_file('utf8_filename_torrents.state'),
+ os.path.join(self.config_dir, 'state', 'torrents.state'),
+ )
+
+ state = self.tm.open_state()
+ assert len(state.torrents) == 1
diff --git a/deluge/tests/test_torrentview.py b/deluge/tests/test_torrentview.py
new file mode 100644
index 0000000..9da99d8
--- /dev/null
+++ b/deluge/tests/test_torrentview.py
@@ -0,0 +1,224 @@
+#
+# Copyright (C) 2014 Bro <bro.development@gmail.com>
+# Copyright (C) 2014 Calum Lind <calumlind@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import pytest
+
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+from deluge.conftest import BaseTestCase
+from deluge.i18n import setup_translation
+
+# Allow running other tests without GTKUI dependencies available
+try:
+ # pylint: disable=ungrouped-imports
+ from gi.repository.GObject import TYPE_UINT64
+
+ from deluge.ui.gtk3.gtkui import DEFAULT_PREFS
+ from deluge.ui.gtk3.mainwindow import MainWindow
+ from deluge.ui.gtk3.menubar import MenuBar
+ from deluge.ui.gtk3.torrentdetails import TorrentDetails
+ from deluge.ui.gtk3.torrentview import TorrentView
+except (ImportError, ValueError):
+ libs_available = False
+ TYPE_UINT64 = 'Whatever'
+else:
+ libs_available = True
+
+setup_translation()
+
+
+@pytest.mark.gtkui
+class TestTorrentview(BaseTestCase):
+ default_column_index = [
+ 'filter',
+ 'torrent_id',
+ 'dirty',
+ '#',
+ 'Name',
+ 'Size',
+ 'Downloaded',
+ 'Uploaded',
+ 'Remaining',
+ 'Progress',
+ 'Seeds',
+ 'Peers',
+ 'Seeds:Peers',
+ 'Down Speed',
+ 'Up Speed',
+ 'Down Limit',
+ 'Up Limit',
+ 'ETA',
+ 'Ratio',
+ 'Avail',
+ 'Added',
+ 'Completed',
+ 'Complete Seen',
+ 'Last Transfer',
+ 'Tracker',
+ 'Download Folder',
+ 'Owner',
+ 'Shared',
+ ]
+ default_liststore_columns = [
+ bool,
+ str,
+ bool,
+ int,
+ str,
+ str, # Name
+ TYPE_UINT64,
+ TYPE_UINT64,
+ TYPE_UINT64,
+ TYPE_UINT64,
+ float,
+ str, # Progress
+ int,
+ int,
+ int,
+ int,
+ float, # Seeds, Peers
+ int,
+ int,
+ float,
+ float,
+ int,
+ float,
+ float, # ETA, Ratio, Avail
+ int,
+ int,
+ int,
+ int,
+ str,
+ str, # Tracker
+ str,
+ str,
+ bool,
+ ] # shared
+
+ def set_up(self):
+ if libs_available is False:
+ pytest.skip('GTKUI dependencies not available')
+
+ # MainWindow loads this config file, so lets make sure it contains the defaults
+ ConfigManager('gtk3ui.conf', defaults=DEFAULT_PREFS)
+ self.mainwindow = MainWindow()
+ self.torrentview = TorrentView()
+ self.torrentdetails = TorrentDetails()
+ self.menubar = MenuBar()
+
+ def tear_down(self):
+ return component.shutdown()
+
+ def test_torrentview_columns(self):
+ assert self.torrentview.column_index == self.default_column_index
+ assert self.torrentview.liststore_columns == self.default_liststore_columns
+ assert self.torrentview.columns['Download Folder'].column_indices == [30]
+
+ def test_add_column(self):
+ # Add a text column
+ test_col = 'Test column'
+ self.torrentview.add_text_column(test_col, status_field=['label'])
+ assert (
+ len(self.torrentview.liststore_columns)
+ == len(self.default_liststore_columns) + 1
+ )
+ assert len(self.torrentview.column_index) == len(self.default_column_index) + 1
+ assert self.torrentview.column_index[-1] == test_col
+ assert self.torrentview.columns[test_col].column_indices == [33]
+
+ def test_add_columns(self):
+ # Add a text column
+ test_col = 'Test column'
+ self.torrentview.add_text_column(test_col, status_field=['label'])
+
+ # Add a second text column
+ test_col2 = 'Test column2'
+ self.torrentview.add_text_column(test_col2, status_field=['label2'])
+
+ assert (
+ len(self.torrentview.liststore_columns)
+ == len(self.default_liststore_columns) + 2
+ )
+ assert len(self.torrentview.column_index) == len(self.default_column_index) + 2
+ # test_col
+ assert self.torrentview.column_index[-2] == test_col
+ assert self.torrentview.columns[test_col].column_indices == [33]
+
+ # test_col2
+ assert self.torrentview.column_index[-1] == test_col2
+ assert self.torrentview.columns[test_col2].column_indices == [34]
+
+ def test_remove_column(self):
+ # Add and remove text column
+ test_col = 'Test column'
+ self.torrentview.add_text_column(test_col, status_field=['label'])
+ self.torrentview.remove_column(test_col)
+
+ assert len(self.torrentview.liststore_columns) == len(
+ self.default_liststore_columns
+ )
+ assert len(self.torrentview.column_index) == len(self.default_column_index)
+ assert self.torrentview.column_index[-1] == self.default_column_index[-1]
+ assert self.torrentview.columns[
+ self.default_column_index[-1]
+ ].column_indices == [32]
+
+ def test_remove_columns(self):
+ # Add two columns
+ test_col = 'Test column'
+ self.torrentview.add_text_column(test_col, status_field=['label'])
+ test_col2 = 'Test column2'
+ self.torrentview.add_text_column(test_col2, status_field=['label2'])
+
+ # Remove test_col
+ self.torrentview.remove_column(test_col)
+ assert (
+ len(self.torrentview.liststore_columns)
+ == len(self.default_liststore_columns) + 1
+ )
+ assert len(self.torrentview.column_index) == len(self.default_column_index) + 1
+ assert self.torrentview.column_index[-1] == test_col2
+ assert self.torrentview.columns[test_col2].column_indices == [33]
+
+ # Remove test_col2
+ self.torrentview.remove_column(test_col2)
+ assert len(self.torrentview.liststore_columns) == len(
+ self.default_liststore_columns
+ )
+ assert len(self.torrentview.column_index) == len(self.default_column_index)
+ assert self.torrentview.column_index[-1] == self.default_column_index[-1]
+ assert self.torrentview.columns[
+ self.default_column_index[-1]
+ ].column_indices == [32]
+
+ def test_add_remove_column_multiple_types(self):
+ # Add a column with multiple column types
+ test_col3 = 'Test column3'
+ self.torrentview.add_progress_column(
+ test_col3, status_field=['progress', 'label3'], col_types=[float, str]
+ )
+ assert (
+ len(self.torrentview.liststore_columns)
+ == len(self.default_liststore_columns) + 2
+ )
+ assert len(self.torrentview.column_index) == len(self.default_column_index) + 1
+ assert self.torrentview.column_index[-1] == test_col3
+ assert self.torrentview.columns[test_col3].column_indices == [33, 34]
+
+ # Remove multiple column-types column
+ self.torrentview.remove_column(test_col3)
+
+ assert len(self.torrentview.liststore_columns) == len(
+ self.default_liststore_columns
+ )
+ assert len(self.torrentview.column_index) == len(self.default_column_index)
+ assert self.torrentview.column_index[-1] == self.default_column_index[-1]
+ assert self.torrentview.columns[
+ self.default_column_index[-1]
+ ].column_indices == [32]
diff --git a/deluge/tests/test_tracker_icons.py b/deluge/tests/test_tracker_icons.py
new file mode 100644
index 0000000..57cc138
--- /dev/null
+++ b/deluge/tests/test_tracker_icons.py
@@ -0,0 +1,71 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import os.path
+
+import pytest
+
+import deluge.component as component
+import deluge.ui.tracker_icons
+from deluge.conftest import BaseTestCase
+from deluge.ui.tracker_icons import TrackerIcon, TrackerIcons
+
+from . import common
+
+common.disable_new_release_check()
+
+
+@pytest.mark.internet
+class TestTrackerIcons(BaseTestCase):
+ def set_up(self):
+ # Disable resizing with Pillow for consistency.
+ self.patch(deluge.ui.tracker_icons, 'Image', None)
+ self.icons = TrackerIcons()
+
+ def tear_down(self):
+ return component.shutdown()
+
+ async def test_get_deluge_png(self, mock_mkstemp):
+ # Deluge has a png favicon link
+ icon = TrackerIcon(common.get_test_data_file('deluge.png'))
+ result = await self.icons.fetch('deluge-torrent.org')
+ assert result == icon
+ assert not os.path.isfile(mock_mkstemp[1])
+
+ async def test_get_google_ico(self):
+ # Google doesn't have any icon links
+ # So instead we'll grab its favicon.ico
+ icon = TrackerIcon(common.get_test_data_file('google.ico'))
+ result = await self.icons.fetch('www.google.com')
+ assert result == icon
+
+ async def test_get_google_ico_hebrew(self):
+ """Test that Google.co.il page is read as UTF-8"""
+ icon = TrackerIcon(common.get_test_data_file('google.ico'))
+ result = await self.icons.fetch('www.google.co.il')
+ assert result == icon
+
+ async def test_get_google_ico_with_redirect(self):
+ # google.com redirects to www.google.com
+ icon = TrackerIcon(common.get_test_data_file('google.ico'))
+ result = await self.icons.fetch('google.com')
+ assert result == icon
+
+ @pytest.mark.skip(reason='Site removed favicon, new SNI test will be needed')
+ async def test_get_seo_svg_with_sni(self):
+ # seo using certificates with SNI support only
+ icon = TrackerIcon(common.get_test_data_file('seo.svg'))
+ result = await self.icons.fetch('www.seo.com')
+ assert result == icon
+
+ async def test_get_empty_string_tracker(self):
+ result = await self.icons.fetch('')
+ assert result is None
+
+ async def test_invalid_host(self, mock_mkstemp):
+ """Test that TrackerIcon can handle invalid hostname"""
+ result = await self.icons.fetch('deluge.example.com')
+ assert not result
+ assert not os.path.isfile(mock_mkstemp[1])
diff --git a/deluge/tests/test_transfer.py b/deluge/tests/test_transfer.py
new file mode 100644
index 0000000..92e349b
--- /dev/null
+++ b/deluge/tests/test_transfer.py
@@ -0,0 +1,398 @@
+#
+# Copyright (C) 2012 Bro <bro.development@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import base64
+
+import pytest
+import rencode
+
+import deluge.log
+from deluge.transfer import DelugeTransferProtocol
+
+deluge.log.setup_logger('none')
+
+
+class TransferTestClass(DelugeTransferProtocol):
+ def __init__(self):
+ DelugeTransferProtocol.__init__(self)
+ self.transport = self
+ self.messages_out = []
+ self.messages_in = []
+ self.packet_count = 0
+
+ def write(self, message):
+ """
+ Called by DelugeTransferProtocol class
+ This simulates the write method of the self.transport in DelugeTransferProtocol.
+ """
+ self.messages_out.append(message)
+
+ def message_received(self, message):
+ """
+ This method overrides message_received is DelugeTransferProtocol and is
+ called with the complete message as it was sent by DelugeRPCProtocol
+ """
+ self.messages_in.append(message)
+
+ def get_messages_out_joined(self):
+ return b''.join(self.messages_out)
+
+ def get_messages_in(self):
+ return self.messages_in
+
+ def data_received_old_protocol(self, data):
+ """
+ This is the original method logic (as close as possible) for handling data receival on the client
+
+ :param data: a zlib compressed string encoded with rencode.
+
+ """
+ import zlib
+
+ print('\n=== New Data Received ===\nBytes received:', len(data))
+
+ if self._buffer:
+ # We have some data from the last dataReceived() so lets prepend it
+ print('Current buffer:', len(self._buffer) if self._buffer else '0')
+ data = self._buffer + data
+ self._buffer = None
+
+ self.packet_count += 1
+ self._bytes_received += len(data)
+
+ while data:
+ print('\n-- Handle packet data --')
+
+ print('Bytes received:', self._bytes_received)
+ print('Current data:', len(data))
+
+ if self._message_length == 0:
+ # handle_new_message uses _buffer so set data to _buffer.
+ self._buffer = data
+ self._handle_new_message()
+ data = self._buffer
+ self._buffer = None
+ self.packet_count = 1
+ print('New message of length:', self._message_length)
+
+ dobj = zlib.decompressobj()
+ try:
+ request = rencode.loads(dobj.decompress(data))
+ print('Successfully loaded message', end=' ')
+ print(
+ ' - Buffer length: %d, data length: %d, unused length: %d'
+ % (
+ len(data),
+ len(data) - len(dobj.unused_data),
+ len(dobj.unused_data),
+ )
+ )
+ print('Packet count:', self.packet_count)
+ except Exception as ex:
+ # log.debug('Received possible invalid message (%r): %s', data, e)
+ # This could be cut-off data, so we'll save this in the buffer
+ # and try to prepend it on the next dataReceived()
+ self._buffer = data
+ print(
+ 'Failed to load buffer (size %d): %s' % (len(self._buffer), str(ex))
+ )
+ return
+ else:
+ data = dobj.unused_data
+ self._message_length = 0
+
+ self.message_received(request)
+
+
+class TestDelugeTransferProtocol:
+ @pytest.fixture(autouse=True)
+ def set_up(self):
+ """
+ The expected messages corresponds to the test messages (msg1, msg2) after they've been processed
+ by DelugeTransferProtocol.send, which means that they've first been encoded with rencode,
+ and then compressed with zlib.
+ The expected messages are encoded in base64 to easily including it here in the source.
+ So before comparing the results with the expected messages, the expected messages must be decoded,
+ or the result message be encoded in base64.
+
+ """
+ self.transfer = TransferTestClass()
+ self.msg1 = (
+ 0,
+ 1,
+ {'key_int': 1242429423},
+ {'key_str': b'some string'},
+ {'key_bool': True},
+ )
+ self.msg2 = (
+ 2,
+ 3,
+ {'key_float': 12424.29423},
+ {'key_unicode': 'some string'},
+ {'key_dict_with_tuple': {'key_tuple': (1, 2, 3)}},
+ {'keylist': [4, '5', 6.7]},
+ )
+
+ self.msg1_expected_compressed_base64 = (
+ b'AQAAADF4nDvKwJjenp1aGZ+ZV+Lgxfv9PYRXXFLU'
+ b'XZyfm6oAZGTmpad3gAST8vNznAEAJhSQ'
+ )
+ self.msg2_expected_compressed_base64 = (
+ b'AQAAAF14nDvGxJzemZ1aGZ+Wk59Y4uTmpKib3g3il+ZlJuenpH'
+ b'YX5+emKhSXFGXmpadPBkmkZCaXxJdnlmTEl5QW5KRCdIOZhxmB'
+ b'hrUDuTmZxSWHWRpNnRyupaUBAHYlJxI='
+ )
+
+ def test_send_one_message(self):
+ """
+ Send one message and test that it has been sent correctoly to the
+ method 'write' in self.transport.
+
+ """
+ self.transfer.transfer_message(self.msg1)
+ # Get the data as sent by DelugeTransferProtocol
+ messages = self.transfer.get_messages_out_joined()
+ base64_encoded = base64.b64encode(messages)
+ assert base64_encoded == self.msg1_expected_compressed_base64
+
+ def test_receive_one_message(self):
+ """
+ Receive one message and test that it has been sent to the
+ method 'message_received'.
+
+ """
+ self.transfer.dataReceived(
+ base64.b64decode(self.msg1_expected_compressed_base64)
+ )
+ # Get the data as sent by DelugeTransferProtocol
+ messages = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg1) == rencode.dumps(messages)
+
+ def test_receive_old_message(self):
+ """
+ Receive an old message (with no header) and verify that the data is discarded.
+
+ """
+ self.transfer.dataReceived(rencode.dumps(self.msg1))
+ assert len(self.transfer.get_messages_in()) == 0
+ assert self.transfer._message_length == 0
+ assert len(self.transfer._buffer) == 0
+
+ def test_receive_two_concatenated_messages(self):
+ """
+ This test simply concatenates two messsages (as they're sent over the network),
+ and lets DelugeTransferProtocol receive the data as one string.
+
+ """
+ two_concatenated = base64.b64decode(
+ self.msg1_expected_compressed_base64
+ ) + base64.b64decode(self.msg2_expected_compressed_base64)
+ self.transfer.dataReceived(two_concatenated)
+
+ # Get the data as sent by DelugeTransferProtocol
+ message1 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg1) == rencode.dumps(message1)
+ message2 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg2) == rencode.dumps(message2)
+
+ def test_receive_three_messages_in_parts(self):
+ """
+ This test concatenates three messsages (as they're sent over the network),
+ and lets DelugeTransferProtocol receive the data in multiple parts.
+
+ """
+ msg_bytes = (
+ base64.b64decode(self.msg1_expected_compressed_base64)
+ + base64.b64decode(self.msg2_expected_compressed_base64)
+ + base64.b64decode(self.msg1_expected_compressed_base64)
+ )
+ packet_size = 40
+
+ one_message_byte_count = len(
+ base64.b64decode(self.msg1_expected_compressed_base64)
+ )
+ two_messages_byte_count = one_message_byte_count + len(
+ base64.b64decode(self.msg2_expected_compressed_base64)
+ )
+ three_messages_byte_count = two_messages_byte_count + len(
+ base64.b64decode(self.msg1_expected_compressed_base64)
+ )
+
+ for d in self.receive_parts_helper(msg_bytes, packet_size):
+ bytes_received = self.transfer.get_bytes_recv()
+
+ if bytes_received >= three_messages_byte_count:
+ expected_msgs_received_count = 3
+ elif bytes_received >= two_messages_byte_count:
+ expected_msgs_received_count = 2
+ elif bytes_received >= one_message_byte_count:
+ expected_msgs_received_count = 1
+ else:
+ expected_msgs_received_count = 0
+ # Verify that the expected number of complete messages has arrived
+ assert expected_msgs_received_count == len(self.transfer.get_messages_in())
+
+ # Get the data as received by DelugeTransferProtocol
+ message1 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg1) == rencode.dumps(message1)
+ message2 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg2) == rencode.dumps(message2)
+ message3 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg1) == rencode.dumps(message3)
+
+ # Remove underscore to enable test, or run the test directly:
+ def _test_rencode_fail_protocol(self):
+ """
+ This test tries to test the protocol that relies on errors from rencode.
+
+ """
+ msg_bytes = (
+ base64.b64decode(self.msg1_expected_compressed_base64)
+ + base64.b64decode(self.msg2_expected_compressed_base64)
+ + base64.b64decode(self.msg1_expected_compressed_base64)
+ )
+ packet_size = 149
+
+ one_message_byte_count = len(
+ base64.b64decode(self.msg1_expected_compressed_base64)
+ )
+ two_messages_byte_count = one_message_byte_count + len(
+ base64.b64decode(self.msg2_expected_compressed_base64)
+ )
+ three_messages_byte_count = two_messages_byte_count + len(
+ base64.b64decode(self.msg1_expected_compressed_base64)
+ )
+
+ print()
+
+ print(
+ 'Msg1 size:',
+ len(base64.b64decode(self.msg1_expected_compressed_base64)) - 4,
+ )
+ print(
+ 'Msg2 size:',
+ len(base64.b64decode(self.msg2_expected_compressed_base64)) - 4,
+ )
+ print(
+ 'Msg3 size:',
+ len(base64.b64decode(self.msg1_expected_compressed_base64)) - 4,
+ )
+
+ print('one_message_byte_count:', one_message_byte_count)
+ print('two_messages_byte_count:', two_messages_byte_count)
+ print('three_messages_byte_count:', three_messages_byte_count)
+
+ for d in self.receive_parts_helper(
+ msg_bytes, packet_size, self.transfer.data_received_old_protocol
+ ):
+ bytes_received = self.transfer.get_bytes_recv()
+
+ if bytes_received >= three_messages_byte_count:
+ expected_msgs_received_count = 3
+ elif bytes_received >= two_messages_byte_count:
+ expected_msgs_received_count = 2
+ elif bytes_received >= one_message_byte_count:
+ expected_msgs_received_count = 1
+ else:
+ expected_msgs_received_count = 0
+ # Verify that the expected number of complete messages has arrived
+ if expected_msgs_received_count != len(self.transfer.get_messages_in()):
+ print(
+ 'Expected number of messages received is %d, but %d have been received.'
+ % (
+ expected_msgs_received_count,
+ len(self.transfer.get_messages_in()),
+ )
+ )
+
+ # Get the data as received by DelugeTransferProtocol
+ message1 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg1) == rencode.dumps(message1)
+ message2 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg2) == rencode.dumps(message2)
+ message3 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg1) == rencode.dumps(message3)
+
+ def test_receive_middle_of_header(self):
+ """
+ This test concatenates two messsages (as they're sent over the network),
+ and lets DelugeTransferProtocol receive the data in two parts.
+ The first part contains the first message, plus two bytes of the next message.
+ The next part contains the rest of the message.
+
+ This is a special case, as DelugeTransferProtocol can't start parsing
+ a message until it has at least 5 bytes (the size of the header) to be able
+ to read and parse the size of the payload.
+
+ """
+ two_concatenated = base64.b64decode(
+ self.msg1_expected_compressed_base64
+ ) + base64.b64decode(self.msg2_expected_compressed_base64)
+ first_len = len(base64.b64decode(self.msg1_expected_compressed_base64))
+
+ # Now found the entire first message, and half the header of the next message (2 bytes into the header)
+ self.transfer.dataReceived(two_concatenated[: first_len + 2])
+
+ # Should be 1 message in the list
+ assert 1 == len(self.transfer.get_messages_in())
+
+ # Send the rest
+ self.transfer.dataReceived(two_concatenated[first_len + 2 :])
+
+ # Should be 2 messages in the list
+ assert 2 == len(self.transfer.get_messages_in())
+
+ # Get the data as sent by DelugeTransferProtocol
+ message1 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg1) == rencode.dumps(message1)
+ message2 = self.transfer.get_messages_in().pop(0)
+ assert rencode.dumps(self.msg2) == rencode.dumps(message2)
+
+ # Needs file containing big data structure e.g. like thetorrent list as it is transfered by the daemon
+ # def test_simulate_big_transfer(self):
+ # filename = '../deluge.torrentlist'
+ #
+ # f = open(filename, 'r')
+ # data = f.read()
+ # message_to_send = eval(data)
+ # self.transfer.transfer_message(message_to_send)
+ #
+ # Get the data as sent to the network by DelugeTransferProtocol
+ # compressed_data = self.transfer.get_messages_out_joined()
+ # packet_size = 16000 # Or something smaller...
+ #
+ # for d in self.receive_parts_helper(compressed_data, packet_size):
+ # bytes_recv = self.transfer.get_bytes_recv()
+ # if bytes_recv < len(compressed_data):
+ # self.assertEqual(len(self.transfer.get_messages_in()), 0)
+ # else:
+ # self.assertEqual(len(self.transfer.get_messages_in()), 1)
+ # Get the data as received by DelugeTransferProtocol
+ # transfered_message = self.transfer.get_messages_in().pop(0)
+ # Test that the data structures are equal
+ # self.assertEqual(transfered_message, message_to_send)
+ # self.assertTrue(transfered_message == message_to_send)
+ #
+ # f.close()
+ # f = open('rencode.torrentlist', 'w')
+ # f.write(str(transfered_message))
+ # f.close()
+
+ def receive_parts_helper(self, data, packet_size, receive_func=None):
+ byte_count = len(data)
+ sent_bytes = 0
+ while byte_count > 0:
+ to_receive = packet_size if byte_count > packet_size else byte_count
+ sent_bytes += to_receive
+ byte_count -= to_receive
+ if receive_func:
+ receive_func(data[:to_receive])
+ else:
+ self.transfer.dataReceived(data[:to_receive])
+ data = data[to_receive:]
+ yield
diff --git a/deluge/tests/test_ui_common.py b/deluge/tests/test_ui_common.py
new file mode 100644
index 0000000..87a4a2c
--- /dev/null
+++ b/deluge/tests/test_ui_common.py
@@ -0,0 +1,290 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.ui.common import TorrentInfo
+
+from . import common
+
+
+class TestUICommon:
+ def test_hash_optional_single_file(self):
+ """Ensure single file with `ed2k` and `sha1` keys are not in filetree output."""
+ filename = common.get_test_data_file('test.torrent')
+ files_tree = {'azcvsupdater_2.6.2.jar': (0, 307949, True)}
+ ti = TorrentInfo(filename, filetree=1)
+ assert ti.files_tree == files_tree
+
+ files_tree2 = {
+ 'contents': {
+ 'azcvsupdater_2.6.2.jar': {
+ 'type': 'file',
+ 'index': 0,
+ 'length': 307949,
+ 'download': True,
+ }
+ }
+ }
+ ti = TorrentInfo(filename, filetree=2)
+ assert ti.files_tree == files_tree2
+
+ def test_hash_optional_multi_file(self):
+ """Ensure multi-file with `filehash` and `ed2k` are keys not in filetree output."""
+ filename = common.get_test_data_file('filehash_field.torrent')
+ files_tree = {
+ 'torrent_filehash': {
+ 'tull.txt': (0, 54, True),
+ '還在一個人無聊嗎~還不趕緊上來聊天美.txt': (1, 54, True),
+ }
+ }
+ ti = TorrentInfo(filename, filetree=1)
+ assert ti.files_tree == files_tree
+
+ files_tree2 = {
+ 'contents': {
+ 'torrent_filehash': {
+ 'type': 'dir',
+ 'contents': {
+ 'tull.txt': {
+ 'type': 'file',
+ 'path': 'torrent_filehash/tull.txt',
+ 'length': 54,
+ 'index': 0,
+ 'download': True,
+ },
+ '還在一個人無聊嗎~還不趕緊上來聊天美.txt': {
+ 'type': 'file',
+ 'path': 'torrent_filehash/還在一個人無聊嗎~還不趕緊上來聊天美.txt',
+ 'length': 54,
+ 'index': 1,
+ 'download': True,
+ },
+ },
+ 'length': 108,
+ 'download': True,
+ }
+ },
+ 'type': 'dir',
+ }
+ ti = TorrentInfo(filename, filetree=2)
+ assert ti.files_tree == files_tree2
+
+ def test_hash_optional_md5sum(self):
+ # Ensure `md5sum` key is not included in filetree output
+ filename = common.get_test_data_file('md5sum.torrent')
+ files_tree = {'test': {'lol': (0, 4, True), 'rofl': (1, 5, True)}}
+ ti = TorrentInfo(filename, filetree=1)
+ assert ti.files_tree == files_tree
+ ti = TorrentInfo(filename, filetree=2)
+ files_tree2 = {
+ 'contents': {
+ 'test': {
+ 'type': 'dir',
+ 'contents': {
+ 'lol': {
+ 'type': 'file',
+ 'path': 'test/lol',
+ 'index': 0,
+ 'length': 4,
+ 'download': True,
+ },
+ 'rofl': {
+ 'type': 'file',
+ 'path': 'test/rofl',
+ 'index': 1,
+ 'length': 5,
+ 'download': True,
+ },
+ },
+ 'length': 9,
+ 'download': True,
+ }
+ },
+ 'type': 'dir',
+ }
+ assert ti.files_tree == files_tree2
+
+ def test_utf8_encoded_paths(self):
+ filename = common.get_test_data_file('test.torrent')
+ ti = TorrentInfo(filename)
+ assert 'azcvsupdater_2.6.2.jar' in ti.files_tree
+
+ def test_utf8_encoded_paths2(self):
+ filename = common.get_test_data_file('unicode_filenames.torrent')
+ filepath1 = '\u30c6\u30af\u30b9\u30fb\u30c6\u30af\u30b5\u30f3.mkv'
+ filepath2 = (
+ '\u041c\u0438\u0445\u0430\u0438\u043b \u0413\u043e'
+ '\u0440\u0431\u0430\u0447\u0451\u0432.mkv'
+ )
+ filepath3 = "Alisher ibn G'iyosiddin Navoiy.mkv"
+ filepath4 = 'Ascii title.mkv'
+ filepath5 = '\u09b8\u09c1\u0995\u09c1\u09ae\u09be\u09b0 \u09b0\u09be\u09df.mkv'
+
+ ti = TorrentInfo(filename)
+ files_tree = ti.files_tree['unicode_filenames']
+ assert filepath1 in files_tree
+ assert filepath2 in files_tree
+ assert filepath3 in files_tree
+ assert filepath4 in files_tree
+ assert filepath5 in files_tree
+
+ result_files = [
+ {
+ 'download': True,
+ 'path': 'unicode_filenames/' + filepath3,
+ 'size': 126158658,
+ },
+ {
+ 'download': True,
+ 'path': 'unicode_filenames/' + filepath4,
+ 'size': 189321363,
+ },
+ {
+ 'download': True,
+ 'path': 'unicode_filenames/' + filepath2,
+ 'size': 106649699,
+ },
+ {
+ 'download': True,
+ 'path': 'unicode_filenames/' + filepath5,
+ 'size': 21590269,
+ },
+ {'download': True, 'path': 'unicode_filenames/' + filepath1, 'size': 1771},
+ ]
+
+ assert len(ti.files) == len(result_files)
+
+ def test_directory_with_single_file(self):
+ filename = common.get_test_data_file('dir_with_single_file.torrent')
+
+ ti = TorrentInfo(filename)
+ expected_file_tree = {'dir_with_single_file': {'single_file.txt': (0, 9, True)}}
+ assert ti.files_tree == expected_file_tree
+
+ result_files = [
+ {
+ 'path': 'dir_with_single_file/single_file.txt',
+ 'size': 9,
+ 'download': True,
+ }
+ ]
+ assert ti.files == result_files
+
+ def test_bittorrent_v2_path(self):
+ filename = common.get_test_data_file('v2_test.torrent')
+ files_tree = {
+ 'torrent_test': {
+ 'small.txt': (0, 22, True),
+ '還在一個人無聊嗎~還不趕緊上來聊天美.txt': (1, 32, True),
+ }
+ }
+ ti = TorrentInfo(filename, filetree=1)
+ assert ti.files_tree == files_tree
+
+ files_tree2 = {
+ 'contents': {
+ 'torrent_test': {
+ 'type': 'dir',
+ 'contents': {
+ 'small.txt': {
+ 'type': 'file',
+ 'path': 'torrent_test/small.txt',
+ 'length': 22,
+ 'index': 0,
+ 'download': True,
+ },
+ '還在一個人無聊嗎~還不趕緊上來聊天美.txt': {
+ 'type': 'file',
+ 'path': 'torrent_test/還在一個人無聊嗎~還不趕緊上來聊天美.txt',
+ 'length': 32,
+ 'index': 1,
+ 'download': True,
+ },
+ },
+ 'length': 54,
+ 'download': True,
+ }
+ },
+ 'type': 'dir',
+ }
+ ti = TorrentInfo(filename, filetree=2)
+ assert ti.files_tree == files_tree2
+
+ def test_bittorrent_v2_hybrid_path(self):
+ filename = common.get_test_data_file('v2_hybrid.torrent')
+ files_tree = {
+ 'torrent_test': {
+ 'small.txt': (0, 22, True),
+ '還在一個人無聊嗎~還不趕緊上來聊天美.txt': (2, 32, True),
+ '.pad': {
+ '16362': (1, 16362, True),
+ '16352': (3, 16352, True),
+ },
+ }
+ }
+ ti = TorrentInfo(filename, filetree=1, force_bt_version=1)
+ assert ti.files_tree == files_tree
+ del files_tree['torrent_test']['.pad']
+ files_tree['torrent_test']['還在一個人無聊嗎~還不趕緊上來聊天美.txt'] = (1, 32, True)
+ ti = TorrentInfo(filename, filetree=1, force_bt_version=2)
+ assert ti.files_tree == files_tree
+
+ files_tree2 = {
+ 'contents': {
+ 'torrent_test': {
+ 'type': 'dir',
+ 'contents': {
+ 'small.txt': {
+ 'type': 'file',
+ 'path': 'torrent_test/small.txt',
+ 'length': 22,
+ 'index': 0,
+ 'download': True,
+ },
+ '還在一個人無聊嗎~還不趕緊上來聊天美.txt': {
+ 'type': 'file',
+ 'path': 'torrent_test/還在一個人無聊嗎~還不趕緊上來聊天美.txt',
+ 'length': 32,
+ 'index': 2,
+ 'download': True,
+ },
+ '.pad': {
+ 'type': 'dir',
+ 'contents': {
+ '16362': {
+ 'type': 'file',
+ 'path': 'torrent_test/.pad/16362',
+ 'length': 16362,
+ 'index': 1,
+ 'download': True,
+ },
+ '16352': {
+ 'type': 'file',
+ 'path': 'torrent_test/.pad/16352',
+ 'length': 16352,
+ 'index': 3,
+ 'download': True,
+ },
+ },
+ 'length': 32714,
+ 'download': True,
+ },
+ },
+ 'length': 32768,
+ 'download': True,
+ }
+ },
+ 'type': 'dir',
+ }
+ ti = TorrentInfo(filename, filetree=2, force_bt_version=1)
+ assert ti.files_tree == files_tree2
+ torrent_test = files_tree2['contents']['torrent_test']
+ torrent_test['length'] -= torrent_test['contents']['.pad']['length']
+ del torrent_test['contents']['.pad']
+ torrent_test['contents']['還在一個人無聊嗎~還不趕緊上來聊天美.txt']['index'] = 1
+ ti = TorrentInfo(filename, filetree=2, force_bt_version=2)
+ assert ti.files_tree == files_tree2
diff --git a/deluge/tests/test_ui_console.py b/deluge/tests/test_ui_console.py
new file mode 100644
index 0000000..34398ee
--- /dev/null
+++ b/deluge/tests/test_ui_console.py
@@ -0,0 +1,80 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import argparse
+
+import pytest
+
+from deluge.ui.console.cmdline.commands.add import Command
+from deluge.ui.console.cmdline.commands.config import json_eval
+from deluge.ui.console.widgets.fields import TextInput
+
+
+class MockParent:
+ def __init__(self):
+ self.border_off_x = 1
+ self.pane_width = 20
+ self.encoding = 'utf8'
+
+
+class TestUIConsoleField:
+ @pytest.fixture(autouse=True)
+ def set_up(self):
+ self.parent = MockParent()
+
+ def test_text_input(self):
+ def move_func(self, r, c):
+ self._cursor_row = r
+ self._cursor_col = c
+
+ t = TextInput(
+ self.parent,
+ 'name',
+ 'message',
+ move_func,
+ 20,
+ '/text/field/file/path',
+ complete=False,
+ )
+ assert t
+ assert t.handle_read(33)
+
+
+class TestUIConsoleCommands:
+ def test_add_move_completed(self):
+ completed_path = 'completed_path'
+ parser = argparse.ArgumentParser()
+ cmd = Command()
+ cmd.add_arguments(parser)
+ args = parser.parse_args(['torrent', '-m', completed_path])
+ assert args.move_completed_path == completed_path
+ args = parser.parse_args(['torrent', '--move-path', completed_path])
+ assert args.move_completed_path == completed_path
+
+ def test_config_json_eval(self):
+ assert json_eval('/downloads') == '/downloads'
+ assert json_eval('/dir/with space') == '/dir/with space'
+ assert json_eval('c:\\\\downloads') == 'c:\\\\downloads'
+ assert json_eval('c:/downloads') == 'c:/downloads'
+ # Ensure newlines are split and only first setting is used.
+ assert json_eval('setting\nwithneline') == 'setting'
+ # Allow both parentheses and square brackets.
+ assert json_eval('(8000, 8001)') == [8000, 8001]
+ assert json_eval('[8000, 8001]') == [8000, 8001]
+ assert json_eval('["abc", "def"]') == ['abc', 'def']
+ assert json_eval('{"foo": "bar"}') == {'foo': 'bar'}
+ assert json_eval('{"number": 1234}') == {'number': 1234}
+ # Hex string for peer_tos.
+ assert json_eval('0x00') == '0x00'
+ assert json_eval('1000') == 1000
+ assert json_eval('-6') == -6
+ assert json_eval('10.5') == 10.5
+ assert json_eval('True')
+ assert not json_eval('false')
+ assert json_eval('none') is None
+ # Empty values to clear config key.
+ assert json_eval('[]') == []
+ assert json_eval('') == ''
diff --git a/deluge/tests/test_ui_entry.py b/deluge/tests/test_ui_entry.py
new file mode 100644
index 0000000..9a1330e
--- /dev/null
+++ b/deluge/tests/test_ui_entry.py
@@ -0,0 +1,440 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import argparse
+import sys
+from io import StringIO
+from unittest import mock
+
+import pytest
+import pytest_twisted
+from twisted.internet import defer
+
+import deluge
+import deluge.component as component
+import deluge.ui.console
+import deluge.ui.console.cmdline.commands.quit
+import deluge.ui.console.main
+import deluge.ui.web.server
+from deluge.common import get_localhost_auth, windows_check
+from deluge.conftest import BaseTestCase
+from deluge.ui import ui_entry
+from deluge.ui.web.server import DelugeWeb
+
+from . import common
+from .daemon_base import DaemonBase
+
+DEBUG_COMMAND = False
+
+sys_stdout = sys.stdout
+# To catch output to stdout/stderr while running unit tests, we patch
+# the file descriptors in sys and argparse._sys with StringFileDescriptor.
+# Regular print statements from such tests will therefore write to the
+# StringFileDescriptor object instead of the terminal.
+# To print to terminal from the tests, use: print('Message...', file=sys_stdout)
+
+
+class StringFileDescriptor:
+ """File descriptor that writes to string buffer"""
+
+ def __init__(self, fd):
+ self.out = StringIO()
+ self.fd = fd
+ for a in ['encoding']:
+ setattr(self, a, getattr(sys_stdout, a))
+
+ def write(self, *data, **kwargs):
+ data_string = str(*data)
+ print(data_string, file=self.out, end='')
+
+ def flush(self):
+ self.out.flush()
+
+
+class UIBaseTestCase:
+ def set_up(self):
+ common.setup_test_logger(level='info', prefix=self.config_dir / self.id())
+ return component.start()
+
+ def tear_down(self):
+ return component.shutdown()
+
+ def exec_command(self):
+ if DEBUG_COMMAND:
+ print('Executing: %s\n' % sys.argv, file=sys_stdout)
+ return self.var['start_cmd']()
+
+
+class UIWithDaemonBaseTestCase(UIBaseTestCase, DaemonBase):
+ """Subclass for test that require a deluged daemon"""
+
+ def set_up(self):
+ d = self.common_set_up()
+ common.setup_test_logger(level='info', prefix=self.config_dir / self.id())
+ return d
+
+
+class TestDelugeEntry(BaseTestCase):
+ def set_up(self):
+ return component.start()
+
+ def tear_down(self):
+ return component.shutdown()
+
+ def test_deluge_help(self):
+ self.patch(sys, 'argv', ['./deluge', '-h'])
+ config = deluge.configmanager.ConfigManager('ui.conf', ui_entry.DEFAULT_PREFS)
+ config.config['default_ui'] = 'console'
+ config.save()
+
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch(argparse._sys, 'stdout', fd)
+
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ with pytest.raises(SystemExit):
+ ui_entry.start_ui()
+ assert 'usage: deluge' in fd.out.getvalue()
+ assert 'UI Options:' in fd.out.getvalue()
+ assert '* console' in fd.out.getvalue()
+
+ def test_start_default(self):
+ self.patch(sys, 'argv', ['./deluge'])
+ config = deluge.configmanager.ConfigManager('ui.conf', ui_entry.DEFAULT_PREFS)
+ config.config['default_ui'] = 'console'
+ config.save()
+
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ # Just test that no exception is raised
+ ui_entry.start_ui()
+
+ def test_start_with_log_level(self):
+ _level = []
+
+ def setup_logger(
+ level='error',
+ filename=None,
+ filemode='w',
+ logrotate=None,
+ output_stream=sys.stdout,
+ ):
+ _level.append(level)
+
+ self.patch(deluge.log, 'setup_logger', setup_logger)
+ self.patch(sys, 'argv', ['./deluge', '-L', 'info'])
+
+ config = deluge.configmanager.ConfigManager('ui.conf', ui_entry.DEFAULT_PREFS)
+ config.config['default_ui'] = 'console'
+ config.save()
+
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ # Just test that no exception is raised
+ ui_entry.start_ui()
+
+ assert _level[0] == 'info'
+
+
+class GtkUIBaseTestCase(UIBaseTestCase):
+ """Implement all GtkUI tests here"""
+
+ def test_start_gtk3ui(self):
+ self.patch(sys, 'argv', self.var['sys_arg_cmd'])
+
+ from deluge.ui.gtk3 import gtkui
+
+ with mock.patch.object(gtkui.GtkUI, 'start', autospec=True):
+ self.exec_command()
+
+
+@pytest.mark.gtkui
+class TestGtkUIDelugeScriptEntry(BaseTestCase, GtkUIBaseTestCase):
+ @pytest.fixture(autouse=True)
+ def set_var(self, request):
+ request.cls.var = {
+ 'cmd_name': 'deluge gtk',
+ 'start_cmd': ui_entry.start_ui,
+ 'sys_arg_cmd': ['./deluge', 'gtk'],
+ }
+
+
+@pytest.mark.gtkui
+class TestGtkUIScriptEntry(BaseTestCase, GtkUIBaseTestCase):
+ @pytest.fixture(autouse=True)
+ def set_var(self, request):
+ from deluge.ui import gtk3
+
+ request.cls.var = {
+ 'cmd_name': 'deluge-gtk',
+ 'start_cmd': gtk3.start,
+ 'sys_arg_cmd': ['./deluge-gtk'],
+ }
+
+
+class DelugeWebMock(DelugeWeb):
+ def __init__(self, *args, **kwargs):
+ kwargs['daemon'] = False
+ DelugeWeb.__init__(self, *args, **kwargs)
+
+
+class WebUIBaseTestCase(UIBaseTestCase):
+ """Implement all WebUI tests here"""
+
+ def test_start_webserver(self):
+ self.patch(sys, 'argv', self.var['sys_arg_cmd'])
+ self.patch(deluge.ui.web.server, 'DelugeWeb', DelugeWebMock)
+ self.exec_command()
+
+ def test_start_web_with_log_level(self):
+ _level = []
+
+ def setup_logger(
+ level='error',
+ filename=None,
+ filemode='w',
+ logrotate=None,
+ output_stream=sys.stdout,
+ ):
+ _level.append(level)
+
+ self.patch(deluge.log, 'setup_logger', setup_logger)
+ self.patch(sys, 'argv', self.var['sys_arg_cmd'] + ['-L', 'info'])
+
+ config = deluge.configmanager.ConfigManager('ui.conf', ui_entry.DEFAULT_PREFS)
+ config.config['default_ui'] = 'web'
+ config.save()
+
+ self.patch(deluge.ui.web.server, 'DelugeWeb', DelugeWebMock)
+ self.exec_command()
+ assert _level[0] == 'info'
+
+
+class TestWebUIScriptEntry(BaseTestCase, WebUIBaseTestCase):
+ @pytest.fixture(autouse=True)
+ def set_var(self, request):
+ request.cls.var = {
+ 'cmd_name': 'deluge-web',
+ 'start_cmd': deluge.ui.web.start,
+ 'sys_arg_cmd': ['./deluge-web'],
+ }
+ if not windows_check():
+ request.cls.var['sys_arg_cmd'].append('--do-not-daemonize')
+
+
+class TestWebUIDelugeScriptEntry(BaseTestCase, WebUIBaseTestCase):
+ @pytest.fixture(autouse=True)
+ def set_var(self, request):
+ request.cls.var = {
+ 'cmd_name': 'deluge web',
+ 'start_cmd': ui_entry.start_ui,
+ 'sys_arg_cmd': ['./deluge', 'web'],
+ }
+ if not windows_check():
+ request.cls.var['sys_arg_cmd'].append('--do-not-daemonize')
+
+
+class ConsoleUIBaseTestCase(UIBaseTestCase):
+ """Implement Console tests that do not require a running daemon"""
+
+ def test_start_console(self):
+ self.patch(sys, 'argv', self.var['sys_arg_cmd'])
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ self.exec_command()
+
+ def test_start_console_with_log_level(self, request):
+ _level = []
+
+ def setup_logger(
+ level='error',
+ filename=None,
+ filemode='w',
+ logrotate=None,
+ output_stream=sys.stdout,
+ ):
+ _level.append(level)
+
+ self.patch(deluge.log, 'setup_logger', setup_logger)
+ self.patch(sys, 'argv', self.var['sys_arg_cmd'] + ['-L', 'info'])
+
+ config = deluge.configmanager.ConfigManager('ui.conf', ui_entry.DEFAULT_PREFS)
+ config.config['default_ui'] = 'console'
+ config.save()
+
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ # Just test that no exception is raised
+ self.exec_command()
+
+ assert _level[0] == 'info'
+
+ def test_console_help(self):
+ self.patch(sys, 'argv', self.var['sys_arg_cmd'] + ['-h'])
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch(argparse._sys, 'stdout', fd)
+
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ with pytest.raises(SystemExit):
+ self.exec_command()
+ std_output = fd.out.getvalue()
+ assert (
+ 'usage: %s' % self.var['cmd_name']
+ ) in std_output # Check command name
+ assert 'Common Options:' in std_output
+ assert 'Console Options:' in std_output
+ assert (
+ 'Console Commands:\n The following console commands are available:'
+ in std_output
+ )
+ assert 'The following console commands are available:' in std_output
+
+ def test_console_command_info(self):
+ self.patch(sys, 'argv', self.var['sys_arg_cmd'] + ['info'])
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch(argparse._sys, 'stdout', fd)
+
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ self.exec_command()
+
+ def test_console_command_info_help(self):
+ self.patch(sys, 'argv', self.var['sys_arg_cmd'] + ['info', '-h'])
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch(argparse._sys, 'stdout', fd)
+
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ with pytest.raises(SystemExit):
+ self.exec_command()
+ std_output = fd.out.getvalue()
+ assert 'usage: info' in std_output
+ assert 'Show information about the torrents' in std_output
+
+ def test_console_unrecognized_arguments(self):
+ self.patch(
+ sys, 'argv', ['./deluge', '--ui', 'console']
+ ) # --ui is not longer supported
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch(argparse._sys, 'stderr', fd)
+ with mock.patch('deluge.ui.console.main.ConsoleUI'):
+ with pytest.raises(SystemExit):
+ self.exec_command()
+ assert 'unrecognized arguments: --ui' in fd.out.getvalue()
+
+
+class ConsoleUIWithDaemonBaseTestCase(UIWithDaemonBaseTestCase):
+ """Implement Console tests that require a running daemon"""
+
+ def set_up(self):
+ # Avoid calling reactor.shutdown after commands are executed by main.exec_args()
+ deluge.ui.console.main.reactor = common.ReactorOverride()
+ return UIWithDaemonBaseTestCase.set_up(self)
+
+ def patch_arg_command(self, command):
+ if type(command) == str:
+ command = [command]
+ username, password = get_localhost_auth()
+ self.patch(
+ sys,
+ 'argv',
+ self.var['sys_arg_cmd']
+ + ['--port']
+ + [str(self.listen_port)]
+ + ['--username']
+ + [username]
+ + ['--password']
+ + [password]
+ + command,
+ )
+
+ @pytest_twisted.inlineCallbacks
+ def test_console_command_add(self):
+ filename = common.get_test_data_file('test.torrent')
+ self.patch_arg_command([f'add "{filename}"'])
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch(sys, 'stdout', fd)
+
+ yield self.exec_command()
+
+ std_output = fd.out.getvalue()
+ assert (
+ std_output
+ == 'Attempting to add torrent: ' + filename + '\nTorrent added!\n'
+ )
+
+ @pytest_twisted.inlineCallbacks
+ def test_console_command_add_move_completed(self):
+ filename = common.get_test_data_file('test.torrent')
+ tmp_path = 'c:\\tmp' if windows_check() else '/tmp'
+ self.patch_arg_command(
+ [
+ f'add --move-path "{tmp_path}" "{filename}" ; status'
+ ' ; manage'
+ ' ab570cdd5a17ea1b61e970bb72047de141bce173'
+ ' move_completed'
+ ' move_completed_path'
+ ]
+ )
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch(sys, 'stdout', fd)
+
+ yield self.exec_command()
+
+ std_output = fd.out.getvalue()
+ assert std_output.endswith(
+ f'move_completed: True\nmove_completed_path: {tmp_path}\n'
+ ) or std_output.endswith(
+ f'move_completed_path: {tmp_path}\nmove_completed: True\n'
+ )
+
+ async def test_console_command_status(self):
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch_arg_command(['status'])
+ self.patch(sys, 'stdout', fd)
+
+ await self.exec_command()
+
+ std_output = fd.out.getvalue()
+ assert std_output.startswith('Total upload: ')
+ assert std_output.endswith(' Moving: 0\n')
+
+ @defer.inlineCallbacks
+ def test_console_command_config_set_download_location(self):
+ fd = StringFileDescriptor(sys.stdout)
+ self.patch_arg_command(['config --set download_location /downloads'])
+ self.patch(sys, 'stdout', fd)
+
+ yield self.exec_command()
+ std_output = fd.out.getvalue()
+ assert std_output.startswith('Setting "download_location" to: \'/downloads\'')
+ assert std_output.endswith('Configuration value successfully updated.\n')
+
+
+@pytest.mark.usefixtures('daemon', 'client')
+class TestConsoleScriptEntryWithDaemon(BaseTestCase, ConsoleUIWithDaemonBaseTestCase):
+ @pytest.fixture(autouse=True)
+ def set_var(self, request):
+ request.cls.var = {
+ 'cmd_name': 'deluge-console',
+ 'start_cmd': deluge.ui.console.test_start,
+ 'sys_arg_cmd': ['./deluge-console'],
+ }
+
+
+class TestConsoleScriptEntry(BaseTestCase, ConsoleUIBaseTestCase):
+ @pytest.fixture(autouse=True)
+ def set_var(self, request):
+ request.cls.var = {
+ 'cmd_name': 'deluge-console',
+ 'start_cmd': deluge.ui.console.start,
+ 'sys_arg_cmd': ['./deluge-console'],
+ }
+
+
+class TestConsoleDelugeScriptEntry(BaseTestCase, ConsoleUIBaseTestCase):
+ @pytest.fixture(autouse=True)
+ def set_var(self, request):
+ request.cls.var = {
+ 'cmd_name': 'deluge console',
+ 'start_cmd': ui_entry.start_ui,
+ 'sys_arg_cmd': ['./deluge', 'console'],
+ }
diff --git a/deluge/tests/test_ui_gtk3.py b/deluge/tests/test_ui_gtk3.py
new file mode 100644
index 0000000..e6d025c
--- /dev/null
+++ b/deluge/tests/test_ui_gtk3.py
@@ -0,0 +1,30 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import sys
+from unittest import mock
+
+import pytest
+
+
+@pytest.mark.gtkui
+class TestGTK3Common:
+ def setUp(self):
+ sys.modules['gi.repository'] = mock.MagicMock()
+
+ def tearDown(self):
+ pass
+
+ def test_cmp(self):
+ from deluge.ui.gtk3.common import cmp
+
+ assert cmp(None, None) == 0
+ assert cmp(1, None) == 1
+ assert cmp(0, None) == 1
+ assert cmp(None, 7) == -1
+ assert cmp(None, 'bar') == -1
+ assert cmp('foo', None) == 1
+ assert cmp('', None) == 1
diff --git a/deluge/tests/test_web_api.py b/deluge/tests/test_web_api.py
new file mode 100644
index 0000000..814fecf
--- /dev/null
+++ b/deluge/tests/test_web_api.py
@@ -0,0 +1,202 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import json
+from io import BytesIO
+
+import pytest
+import pytest_twisted
+from twisted.internet import defer, reactor
+from twisted.web.client import Agent, FileBodyProducer
+from twisted.web.http_headers import Headers
+from twisted.web.static import File
+
+import deluge.component as component
+
+from . import common
+from .common_web import WebServerTestBase
+
+common.disable_new_release_check()
+
+
+class TestWebAPI(WebServerTestBase):
+ @pytest.mark.xfail(reason='This just logs an error at the moment.')
+ async def test_connect_invalid_host(self):
+ with pytest.raises(Exception):
+ await self.deluge_web.web_api.connect('id')
+
+ def test_connect(self, client):
+ d = self.deluge_web.web_api.connect(self.host_id)
+
+ def on_connect(result):
+ assert type(result) == tuple
+ assert len(result) > 0
+ return result
+
+ d.addCallback(on_connect)
+ d.addErrback(self.fail)
+ return d
+
+ def test_disconnect(self):
+ d = self.deluge_web.web_api.connect(self.host_id)
+
+ @defer.inlineCallbacks
+ def on_connect(result):
+ assert self.deluge_web.web_api.connected()
+ yield self.deluge_web.web_api.disconnect()
+ assert not self.deluge_web.web_api.connected()
+
+ d.addCallback(on_connect)
+ d.addErrback(self.fail)
+ return d
+
+ def test_get_config(self):
+ config = self.deluge_web.web_api.get_config()
+ assert self.deluge_web.port == config['port']
+
+ def test_set_config(self):
+ config = self.deluge_web.web_api.get_config()
+ config['pwd_salt'] = 'new_salt'
+ config['pwd_sha1'] = 'new_sha'
+ config['sessions'] = {
+ '233f23632af0a74748bc5dd1d8717564748877baa16420e6898e17e8aa365e6e': {
+ 'login': 'skrot',
+ 'expires': 1460030877.0,
+ 'level': 10,
+ }
+ }
+ self.deluge_web.web_api.set_config(config)
+ web_config = component.get('DelugeWeb').config.config
+ assert config['pwd_salt'] != web_config['pwd_salt']
+ assert config['pwd_sha1'] != web_config['pwd_sha1']
+ assert config['sessions'] != web_config['sessions']
+
+ @defer.inlineCallbacks
+ def get_host_status(self):
+ host = list(self.deluge_web.web_api._get_host(self.host_id))
+ host[3] = 'Online'
+ host[4] = '2.0.0.dev562'
+ status = yield self.deluge_web.web_api.get_host_status(self.host_id)
+ assert status == tuple(status)
+
+ def test_get_host(self):
+ assert not self.deluge_web.web_api._get_host('invalid_id')
+ conn = list(self.deluge_web.web_api.hostlist.get_hosts_info()[0])
+ assert self.deluge_web.web_api._get_host(conn[0]) == conn[0:4]
+
+ def test_add_host(self):
+ conn = ['abcdef', '10.0.0.1', 0, 'user123', 'pass123']
+ assert not self.deluge_web.web_api._get_host(conn[0])
+ # Add valid host
+ result, host_id = self.deluge_web.web_api.add_host(
+ conn[1], conn[2], conn[3], conn[4]
+ )
+ assert result
+ conn[0] = host_id
+ assert self.deluge_web.web_api._get_host(conn[0]) == conn[0:4]
+
+ # Add already existing host
+ ret = self.deluge_web.web_api.add_host(conn[1], conn[2], conn[3], conn[4])
+ assert ret == (False, 'Host details already in hostlist')
+
+ # Add invalid port
+ conn[2] = 'bad port'
+ ret = self.deluge_web.web_api.add_host(conn[1], conn[2], conn[3], conn[4])
+ assert ret == (False, 'Invalid port. Must be an integer')
+
+ def test_remove_host(self):
+ conn = ['connection_id', '', 0, '', '']
+ self.deluge_web.web_api.hostlist.config['hosts'].append(conn)
+ assert self.deluge_web.web_api._get_host(conn[0]) == conn[0:4]
+ # Remove valid host
+ assert self.deluge_web.web_api.remove_host(conn[0])
+ assert not self.deluge_web.web_api._get_host(conn[0])
+ # Remove non-existing host
+ assert not self.deluge_web.web_api.remove_host(conn[0])
+
+ def test_get_torrent_info(self):
+ filename = common.get_test_data_file('test.torrent')
+ ret = self.deluge_web.web_api.get_torrent_info(filename)
+ assert ret['name'] == 'azcvsupdater_2.6.2.jar'
+ assert ret['info_hash'] == 'ab570cdd5a17ea1b61e970bb72047de141bce173'
+ assert 'files_tree' in ret
+
+ def test_get_torrent_info_with_md5(self):
+ filename = common.get_test_data_file('md5sum.torrent')
+ ret = self.deluge_web.web_api.get_torrent_info(filename)
+ # JSON dumping happens during response creation in normal usage
+ # JSON serialization may fail if any of the dictionary items are byte arrays rather than strings
+ ret = json.loads(json.dumps(ret))
+ assert ret['name'] == 'test'
+ assert ret['info_hash'] == 'f6408ba9944cf9fe01b547b28f336b3ee6ec32c5'
+ assert 'files_tree' in ret
+
+ def test_get_magnet_info(self):
+ ret = self.deluge_web.web_api.get_magnet_info(
+ 'magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN'
+ )
+ assert ret['name'] == '953bad769164e8482c7785a21d12166f94b9e14d'
+ assert ret['info_hash'] == '953bad769164e8482c7785a21d12166f94b9e14d'
+ assert 'files_tree' in ret
+
+ @pytest_twisted.inlineCallbacks
+ def test_get_torrent_files(self):
+ yield self.deluge_web.web_api.connect(self.host_id)
+ filename = common.get_test_data_file('test.torrent')
+ torrents = [
+ {'path': filename, 'options': {'download_location': '/home/deluge/'}}
+ ]
+ yield self.deluge_web.web_api.add_torrents(torrents)
+ ret = yield self.deluge_web.web_api.get_torrent_files(
+ 'ab570cdd5a17ea1b61e970bb72047de141bce173'
+ )
+ assert ret['type'] == 'dir'
+ assert ret['contents'] == {
+ 'azcvsupdater_2.6.2.jar': {
+ 'priority': 4,
+ 'index': 0,
+ 'offset': 0,
+ 'progress': 0.0,
+ 'path': 'azcvsupdater_2.6.2.jar',
+ 'type': 'file',
+ 'size': 307949,
+ }
+ }
+
+ @pytest_twisted.inlineCallbacks
+ def test_download_torrent_from_url(self):
+ filename = 'ubuntu-9.04-desktop-i386.iso.torrent'
+ self.deluge_web.top_level.putChild(
+ filename.encode(), File(common.get_test_data_file(filename))
+ )
+ url = 'http://localhost:%d/%s' % (self.deluge_web.port, filename)
+ res = yield self.deluge_web.web_api.download_torrent_from_url(url)
+ assert res.endswith(filename)
+
+ @pytest_twisted.inlineCallbacks
+ def test_invalid_json(self):
+ """
+ If json_api._send_response does not return server.NOT_DONE_YET
+ this error is thrown when json is invalid:
+ exceptions.RuntimeError: Request.write called on a request after Request.finish was called.
+
+ """
+ agent = Agent(reactor)
+ bad_body = b'{ method": "auth.login" }'
+ d = yield agent.request(
+ b'POST',
+ b'http://127.0.0.1:%i/json' % self.deluge_web.port,
+ Headers(
+ {
+ b'User-Agent': [b'Twisted Web Client Example'],
+ b'Content-Type': [b'application/json'],
+ }
+ ),
+ FileBodyProducer(BytesIO(bad_body)),
+ )
+ yield d
diff --git a/deluge/tests/test_web_auth.py b/deluge/tests/test_web_auth.py
new file mode 100644
index 0000000..39d66c1
--- /dev/null
+++ b/deluge/tests/test_web_auth.py
@@ -0,0 +1,33 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from unittest.mock import patch
+
+from deluge.ui.web import auth
+
+
+class MockConfig:
+ def __init__(self, config):
+ self.config = config
+
+ def __getitem__(self, key):
+ return self.config[key]
+
+ def __setitem__(self, key, value):
+ self.config[key] = value
+
+
+class TestWebAuth:
+ @patch('deluge.ui.web.auth.JSONComponent.__init__', return_value=None)
+ def test_change_password(self, mock_json):
+ config = MockConfig(
+ {
+ 'pwd_sha1': '8d8ff487626141d2b91025901d3ab57211180b48',
+ 'pwd_salt': '7555d757710158655bd1646e207dee21a89e9226',
+ }
+ )
+ webauth = auth.Auth(config)
+ assert webauth.change_password('deluge', 'deluge_new')
diff --git a/deluge/tests/test_webserver.py b/deluge/tests/test_webserver.py
new file mode 100644
index 0000000..9503f50
--- /dev/null
+++ b/deluge/tests/test_webserver.py
@@ -0,0 +1,108 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import json as json_lib
+from io import BytesIO
+
+import pytest
+import twisted.web.client
+from twisted.internet import reactor
+from twisted.web.client import Agent, FileBodyProducer
+from twisted.web.http_headers import Headers
+
+from . import common
+from .common import get_test_data_file
+from .common_web import WebServerMockBase, WebServerTestBase
+
+common.disable_new_release_check()
+
+
+class TestWebServer(WebServerTestBase, WebServerMockBase):
+ async def test_get_torrent_info(self):
+ agent = Agent(reactor)
+
+ self.mock_authentication_ignore(self.deluge_web.auth)
+
+ # This torrent file contains an uncommon field 'filehash' which must be hex
+ # encoded to allow dumping the torrent info to json. Otherwise it will fail with:
+ # UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 0: invalid continuation byte
+ filename = get_test_data_file('filehash_field.torrent')
+ input_file = (
+ '{"params": ["%s"], "method": "web.get_torrent_info", "id": 22}'
+ % filename.replace('\\', '\\\\')
+ )
+ headers = {
+ b'User-Agent': ['Twisted Web Client Example'],
+ b'Content-Type': ['application/json'],
+ }
+ url = 'http://127.0.0.1:%s/json' % self.deluge_web.port
+
+ response = await agent.request(
+ b'POST',
+ url.encode(),
+ Headers(headers),
+ FileBodyProducer(BytesIO(input_file.encode())),
+ )
+ body = await twisted.web.client.readBody(response)
+
+ try:
+ json = json_lib.loads(body.decode())
+ except Exception:
+ print('aoeu')
+ assert json['error'] is None
+ assert 'torrent_filehash' == json['result']['name']
+
+ @pytest.mark.parametrize('base', ['', '/', 'deluge'])
+ async def test_base_with_config(self, base):
+ agent = Agent(reactor)
+ root_url = f'http://127.0.0.1:{self.deluge_web.port}'
+ base_url = f'{root_url}/{base}'
+
+ self.deluge_web.base = base
+
+ response = await agent.request(b'GET', root_url.encode())
+ assert response.code == 200
+ body = await twisted.web.client.readBody(response)
+ assert 'Deluge WebUI' in body.decode()
+
+ response = await agent.request(b'GET', base_url.encode())
+ assert response.code == 200
+
+ @pytest.mark.parametrize('base', ['/', 'deluge'])
+ async def test_base_with_config_recurring_basepath(self, base):
+ agent = Agent(reactor)
+ base_url = f'http://127.0.0.1:{self.deluge_web.port}/{base}'
+
+ self.deluge_web.base = base
+
+ response = await agent.request(b'GET', base_url.encode())
+ assert response.code == 200
+
+ recursive_url = f'{base_url}/{base}'
+ response = await agent.request(b'GET', recursive_url.encode())
+ assert response.code == 404 if base.strip('/') else 200
+
+ recursive_url = f'{recursive_url}/{base}'
+ response = await agent.request(b'GET', recursive_url.encode())
+ assert response.code == 404 if base.strip('/') else 200
+
+ async def test_base_with_deluge_header(self):
+ """Ensure base path is set and HTML contains path"""
+ agent = Agent(reactor)
+ base = 'deluge'
+ url = f'http://127.0.0.1:{self.deluge_web.port}'
+ headers = Headers({'X-Deluge-Base': [base]})
+
+ response = await agent.request(b'GET', url.encode(), headers)
+ body = await twisted.web.client.readBody(response)
+ assert f'href="/{base}/' in body.decode()
+
+ # Header only changes HTML base path so ensure no resource at server path
+ url = f'{url}/{base}'
+ response = await agent.request(b'GET', url.encode(), headers)
+ assert response.code == 404
diff --git a/deluge/transfer.py b/deluge/transfer.py
new file mode 100644
index 0000000..ed7d6dd
--- /dev/null
+++ b/deluge/transfer.py
@@ -0,0 +1,158 @@
+#
+# Copyright (C) 2012 Bro <bro.development@gmail.com>
+# Copyright (C) 2018 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import struct
+import zlib
+
+import rencode
+from twisted.internet.protocol import Protocol
+
+log = logging.getLogger(__name__)
+
+PROTOCOL_VERSION = 1
+MESSAGE_HEADER_FORMAT = '!BI'
+MESSAGE_HEADER_SIZE = struct.calcsize(MESSAGE_HEADER_FORMAT)
+
+
+class DelugeTransferProtocol(Protocol):
+ """
+ Deluge RPC wire protocol.
+
+ Data messages are transferred with a header containing a protocol version
+ and the length of the data to be transferred (payload).
+
+ The format is::
+
+ ubyte uint4 bytestring
+ |.version.|..size..|.....body.....|
+
+ The version is an unsigned byte that indicates the protocol version.
+ The size is a unsigned 32-bit integer that is equal to the length of the body bytestring.
+ The body is the compressed rencoded byte string of the data object.
+ """
+
+ def __init__(self):
+ self._buffer = b'' # TODO: Look into using bytearray instead of byte string.
+ self._message_length = 0
+ self._bytes_received = 0
+ self._bytes_sent = 0
+
+ def transfer_message(self, data):
+ """
+ Transfer the data.
+
+ :param data: data to be transferred in a data structure serializable by rencode.
+ """
+ body = zlib.compress(rencode.dumps(data))
+ body_len = len(body)
+ message = struct.pack(
+ f'{MESSAGE_HEADER_FORMAT}{body_len}s',
+ PROTOCOL_VERSION,
+ body_len,
+ body,
+ )
+ self._bytes_sent += len(message)
+ self.transport.write(message)
+
+ def dataReceived(self, data): # NOQA: N802
+ """
+ This method is called whenever data is received.
+
+ :param data: a message as transferred by transfer_message, or a part of such
+ a message.
+
+ Global variables:
+ _buffer - contains the data received
+ _message_length - the length of the payload of the current message.
+
+ """
+ self._buffer += data
+ self._bytes_received += len(data)
+
+ while len(self._buffer) >= MESSAGE_HEADER_SIZE:
+ if self._message_length == 0:
+ self._handle_new_message()
+ # We have a complete packet
+ if len(self._buffer) >= self._message_length:
+ self._handle_complete_message(self._buffer[: self._message_length])
+ # Remove message data from buffer
+ self._buffer = self._buffer[self._message_length :]
+ self._message_length = 0
+ else:
+ break
+
+ def _handle_new_message(self):
+ """
+ Handle the start of a new message. This method is called only when the
+ beginning of the buffer contains data from a new message (i.e. the header).
+
+ """
+ try:
+ # Read the first bytes of the message (MESSAGE_HEADER_SIZE bytes)
+ header = self._buffer[:MESSAGE_HEADER_SIZE]
+ # Extract the length stored as an unsigned 32-bit integer
+ version, self._message_length = struct.unpack(MESSAGE_HEADER_FORMAT, header)
+ if version != PROTOCOL_VERSION:
+ raise Exception(
+ 'Received invalid protocol version: {}. PROTOCOL_VERSION is {}.'.format(
+ version, PROTOCOL_VERSION
+ )
+ )
+ # Remove the header from the buffer
+ self._buffer = self._buffer[MESSAGE_HEADER_SIZE:]
+ except Exception as ex:
+ log.warning('Error occurred when parsing message header: %s.', ex)
+ log.warning(
+ 'This version of Deluge cannot communicate with the sender of this data.'
+ )
+ self._message_length = 0
+ self._buffer = b''
+
+ def _handle_complete_message(self, data):
+ """
+ Handles a complete message as it is transferred on the network.
+
+ :param data: a zlib compressed string encoded with rencode.
+
+ """
+ try:
+ self.message_received(
+ rencode.loads(zlib.decompress(data), decode_utf8=True)
+ )
+ except Exception as ex:
+ log.warning(
+ 'Failed to decompress (%d bytes) and load serialized data with rencode: %s',
+ len(data),
+ ex,
+ )
+
+ def get_bytes_recv(self):
+ """
+ Returns the number of bytes received.
+
+ :returns: the number of bytes received
+ :rtype: int
+
+ """
+ return self._bytes_received
+
+ def get_bytes_sent(self):
+ """
+ Returns the number of bytes sent.
+
+ :returns: the number of bytes sent
+ :rtype: int
+
+ """
+ return self._bytes_sent
+
+ def message_received(self, message):
+ """Override this method to receive the complete message"""
+ pass
diff --git a/deluge/ui/__init__.py b/deluge/ui/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/deluge/ui/__init__.py
diff --git a/deluge/ui/client.py b/deluge/ui/client.py
new file mode 100644
index 0000000..0fef667
--- /dev/null
+++ b/deluge/ui/client.py
@@ -0,0 +1,857 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import subprocess
+import sys
+
+from twisted.internet import defer, reactor, ssl
+from twisted.internet.protocol import ClientFactory
+
+from deluge import error
+from deluge.common import VersionSplit, get_localhost_auth, get_version
+from deluge.decorators import deprecated
+from deluge.transfer import DelugeTransferProtocol
+
+RPC_RESPONSE = 1
+RPC_ERROR = 2
+RPC_EVENT = 3
+
+log = logging.getLogger(__name__)
+
+
+def format_kwargs(kwargs):
+ return ', '.join([key + '=' + str(value) for key, value in kwargs.items()])
+
+
+class DelugeRPCRequest:
+ """
+ This object is created whenever there is a RPCRequest to be sent to the
+ daemon. It is generally only used by the DaemonProxy's call method.
+ """
+
+ request_id = None
+ method = None
+ args = None
+ kwargs = None
+
+ def __repr__(self):
+ """
+ Returns a string of the RPCRequest in the following form:
+ method(arg, kwarg=foo, ...)
+ """
+ s = self.method + '('
+ if self.args:
+ s += ', '.join([str(x) for x in self.args])
+ if self.kwargs:
+ if self.args:
+ s += ', '
+ s += format_kwargs(self.kwargs)
+ s += ')'
+
+ return s
+
+ def format_message(self):
+ """
+ Returns a properly formatted RPCRequest based on the properties. Will
+ raise a TypeError if the properties haven't been set yet.
+
+ :returns: a properly formatted RPCRequest
+ """
+ if (
+ self.request_id is None
+ or self.method is None
+ or self.args is None
+ or self.kwargs is None
+ ):
+ raise TypeError(
+ 'You must set the properties of this object before calling format_message!'
+ )
+
+ return (self.request_id, self.method, self.args, self.kwargs)
+
+
+class DelugeRPCProtocol(DelugeTransferProtocol):
+ def connectionMade(self): # NOQA: N802
+ self.__rpc_requests = {}
+ # Set the protocol in the daemon so it can send data
+ self.factory.daemon.protocol = self
+ # Get the address of the daemon that we've connected to
+ peer = self.transport.getPeer()
+ self.factory.daemon.host = peer.host
+ self.factory.daemon.port = peer.port
+ self.factory.daemon.connected = True
+ log.debug('Connected to daemon at %s:%s..', peer.host, peer.port)
+ self.factory.daemon.connect_deferred.callback((peer.host, peer.port))
+
+ def message_received(self, request):
+ """
+ This method is called whenever we receive a message from the daemon.
+
+ :param request: a tuple that should be either a RPCResponse, RCPError or RPCSignal
+
+ """
+ if not isinstance(request, tuple):
+ log.debug('Received invalid message: type is not tuple')
+ return
+ if len(request) < 3:
+ log.debug(
+ 'Received invalid message: number of items in ' 'response is %s',
+ len(request),
+ )
+ return
+
+ message_type = request[0]
+
+ if message_type == RPC_EVENT:
+ event = request[1]
+ # log.debug('Received RPCEvent: %s', event)
+ # A RPCEvent was received from the daemon so run any handlers
+ # associated with it.
+ if event in self.factory.event_handlers:
+ for handler in self.factory.event_handlers[event]:
+ reactor.callLater(0, handler, *request[2])
+ return
+
+ request_id = request[1]
+
+ # We get the Deferred object for this request_id to either run the
+ # callbacks or the errbacks dependent on the response from the daemon.
+ d = self.factory.daemon.pop_deferred(request_id)
+
+ if message_type == RPC_RESPONSE:
+ # Run the callbacks registered with this Deferred object
+ d.callback(request[2])
+ elif message_type == RPC_ERROR:
+ # Recreate exception and errback'it
+ try:
+ # The exception class is located in deluge.error
+ try:
+ exception_cls = getattr(error, request[2])
+ exception = exception_cls(*request[3], **request[4])
+ except TypeError:
+ log.warning(
+ 'Received invalid RPC_ERROR (Old daemon?): %s', request[2]
+ )
+ return
+
+ # Ideally we would chain the deferreds instead of instance
+ # checking just to log them. But, that would mean that any
+ # errback on the fist deferred should returns it's failure
+ # so it could pass back to the 2nd deferred on the chain. But,
+ # that does not always happen.
+ # So, just do some instance checking and just log rpc error at
+ # different levels.
+ r = self.__rpc_requests[request_id]
+ msg = 'RPCError Message Received!'
+ msg += '\n' + '-' * 80
+ msg += '\n' + 'RPCRequest: ' + r.__repr__()
+ msg += '\n' + '-' * 80
+ if isinstance(exception, error.WrappedException):
+ msg += '\n' + exception.type + '\n' + exception.message + ': '
+ msg += exception.traceback
+ else:
+ msg += '\n' + request[5] + '\n' + request[2] + ': '
+ msg += str(exception)
+ msg += '\n' + '-' * 80
+
+ if not isinstance(exception, error._ClientSideRecreateError):
+ # Let's log these as errors
+ log.error(msg)
+ else:
+ # The rest just gets logged in debug level, just to log
+ # what's happening
+ log.debug(msg)
+ except Exception:
+ import traceback
+
+ log.error(
+ 'Failed to handle RPC_ERROR (Old daemon?): %s\nLocal error: %s',
+ request[2],
+ traceback.format_exc(),
+ )
+ d.errback(exception)
+ del self.__rpc_requests[request_id]
+
+ def send_request(self, request):
+ """
+ Sends a RPCRequest to the server.
+
+ :param request: RPCRequest
+
+ """
+ try:
+ # Store the DelugeRPCRequest object just in case a RPCError is sent in
+ # response to this request. We use the extra information when printing
+ # out the error for debugging purposes.
+ self.__rpc_requests[request.request_id] = request
+ # log.debug('Sending RPCRequest %s: %s', request.request_id, request)
+ # Send the request in a tuple because multiple requests can be sent at once
+ self.transfer_message((request.format_message(),))
+ except Exception as ex:
+ log.warning('Error occurred when sending message: %s', ex)
+
+
+class DelugeRPCClientFactory(ClientFactory):
+ protocol = DelugeRPCProtocol
+
+ def __init__(self, daemon, event_handlers):
+ self.daemon = daemon
+ self.event_handlers = event_handlers
+
+ def startedConnecting(self, connector): # NOQA: N802
+ log.debug('Connecting to daemon at "%s:%s"...', connector.host, connector.port)
+
+ def clientConnectionFailed(self, connector, reason): # NOQA: N802
+ log.debug(
+ 'Connection to daemon at "%s:%s" failed: %s',
+ connector.host,
+ connector.port,
+ reason.value,
+ )
+ self.daemon.connect_deferred.errback(reason)
+
+ def clientConnectionLost(self, connector, reason): # NOQA: N802
+ log.debug(
+ 'Connection lost to daemon at "%s:%s" reason: %s',
+ connector.host,
+ connector.port,
+ reason.value,
+ )
+ self.daemon.host = None
+ self.daemon.port = None
+ self.daemon.username = None
+ self.daemon.daemon_version = None
+ self.daemon.connected = False
+
+ if (
+ self.daemon.disconnect_deferred
+ and not self.daemon.disconnect_deferred.called
+ ):
+ self.daemon.disconnect_deferred.callback(reason.value)
+ self.daemon.disconnect_deferred = None
+
+ if self.daemon.disconnect_callback:
+ self.daemon.disconnect_callback()
+
+
+class DaemonProxy:
+ pass
+
+
+class DaemonSSLProxy(DaemonProxy):
+ def __init__(self, event_handlers=None):
+ if event_handlers is None:
+ event_handlers = {}
+ self.__factory = DelugeRPCClientFactory(self, event_handlers)
+ self.__factory.noisy = False
+ self.__request_counter = 0
+ self.__deferred = {}
+
+ # This is set when a connection is made to the daemon
+ self.protocol = None
+
+ # This is set when a connection is made
+ self.host = None
+ self.port = None
+ self.username = None
+ self.daemon_version = None
+ self.authentication_level = 0
+
+ self.connected = False
+
+ self.disconnect_deferred = None
+ self.disconnect_callback = None
+
+ self.auth_levels_mapping = None
+ self.auth_levels_mapping_reverse = None
+
+ def connect(self, host, port):
+ """
+ Connects to a daemon at host:port
+
+ :param host: str, the host to connect to
+ :param port: int, the listening port on the daemon
+
+ :returns: twisted.Deferred
+
+ """
+ log.debug('sslproxy.connect()')
+ self.host = host
+ self.port = port
+ self.__connector = reactor.connectSSL(
+ self.host, self.port, self.__factory, ssl.ClientContextFactory()
+ )
+ self.connect_deferred = defer.Deferred()
+ self.daemon_info_deferred = defer.Deferred()
+
+ # Upon connect we do a 'daemon.login' RPC
+ self.connect_deferred.addCallback(self.__on_connect)
+ self.connect_deferred.addErrback(self.__on_connect_fail)
+
+ return self.daemon_info_deferred
+
+ def disconnect(self):
+ log.debug('sslproxy.disconnect()')
+ self.disconnect_deferred = defer.Deferred()
+ self.__connector.disconnect()
+ return self.disconnect_deferred
+
+ def call(self, method, *args, **kwargs):
+ """
+ Makes a RPCRequest to the daemon. All methods should be in the form of
+ 'component.method'.
+
+ :params method: str, the method to call in the form of 'component.method'
+ :params args: the arguments to call the remote method with
+ :params kwargs: the keyword arguments to call the remote method with
+
+ :return: a twisted.Deferred object that will be activated when a RPCResponse
+ or RPCError is received from the daemon
+
+ """
+ # Create the DelugeRPCRequest to pass to protocol.send_request()
+ request = DelugeRPCRequest()
+ request.request_id = self.__request_counter
+ request.method = method
+ request.args = args
+ request.kwargs = kwargs
+ # Send the request to the server
+ self.protocol.send_request(request)
+ # Create a Deferred object to return and add a default errback to print
+ # the error.
+ d = defer.Deferred()
+
+ # Store the Deferred until we receive a response from the daemon
+ self.__deferred[self.__request_counter] = d
+
+ # Increment the request counter since we don't want to use the same one
+ # before a response is received.
+ self.__request_counter += 1
+
+ return d
+
+ def pop_deferred(self, request_id):
+ """
+ Pops a Deferred object. This is generally called once we receive the
+ reply we were waiting on from the server.
+
+ :param request_id: the request_id of the Deferred to pop
+ :type request_id: int
+
+ """
+ return self.__deferred.pop(request_id)
+
+ def register_event_handler(self, event, handler):
+ """
+ Registers a handler function to be called when `:param:event` is received
+ from the daemon.
+
+ :param event: the name of the event to handle
+ :type event: str
+ :param handler: the function to be called when `:param:event`
+ is emitted from the daemon
+ :type handler: function
+
+ """
+ if event not in self.__factory.event_handlers:
+ # This is a new event to handle, so we need to tell the daemon
+ # that we're interested in receiving this type of event
+ self.__factory.event_handlers[event] = []
+ if self.connected:
+ self.call('daemon.set_event_interest', [event])
+
+ # Only add the handler if it's not already registered
+ if handler not in self.__factory.event_handlers[event]:
+ self.__factory.event_handlers[event].append(handler)
+
+ def deregister_event_handler(self, event, handler):
+ """
+ Deregisters a event handler.
+
+ :param event: the name of the event
+ :type event: str
+ :param handler: the function registered
+ :type handler: function
+
+ """
+ if (
+ event in self.__factory.event_handlers
+ and handler in self.__factory.event_handlers[event]
+ ):
+ self.__factory.event_handlers[event].remove(handler)
+
+ def __on_connect(self, result):
+ log.debug('__on_connect called')
+
+ def on_info(daemon_info):
+ self.daemon_version = daemon_info
+ log.debug('Got info from daemon: %s', daemon_info)
+ self.daemon_info_deferred.callback(daemon_info)
+
+ def on_info_fail(reason):
+ log.debug('Failed to get info from daemon')
+ log.exception(reason)
+ self.daemon_info_deferred.errback(reason)
+
+ self.call('daemon.info').addCallback(on_info).addErrback(on_info_fail)
+ return self.daemon_info_deferred
+
+ def __on_connect_fail(self, reason):
+ self.daemon_info_deferred.errback(reason)
+
+ def authenticate(self, username, password):
+ log.debug('%s.authenticate: %s', self.__class__.__name__, username)
+ login_deferred = defer.Deferred()
+ d = self.call('daemon.login', username, password, client_version=get_version())
+ d.addCallbacks(
+ self.__on_login,
+ self.__on_login_fail,
+ callbackArgs=[username, login_deferred],
+ errbackArgs=[login_deferred],
+ )
+ return login_deferred
+
+ def __on_login(self, result, username, login_deferred):
+ log.debug('__on_login called: %s %s', username, result)
+ self.username = username
+ self.authentication_level = result
+ # We need to tell the daemon what events we're interested in receiving
+ if self.__factory.event_handlers:
+ self.call('daemon.set_event_interest', list(self.__factory.event_handlers))
+ self.call('core.get_auth_levels_mappings').addCallback(
+ self.__on_auth_levels_mappings
+ )
+
+ login_deferred.callback(result)
+
+ def __on_login_fail(self, result, login_deferred):
+ login_deferred.errback(result)
+
+ def __on_auth_levels_mappings(self, result):
+ auth_levels_mapping, auth_levels_mapping_reverse = result
+ self.auth_levels_mapping = auth_levels_mapping
+ self.auth_levels_mapping_reverse = auth_levels_mapping_reverse
+
+ def set_disconnect_callback(self, cb):
+ """
+ Set a function to be called when the connection to the daemon is lost
+ for any reason.
+ """
+ self.disconnect_callback = cb
+
+ def get_bytes_recv(self):
+ return self.protocol.get_bytes_recv()
+
+ def get_bytes_sent(self):
+ return self.protocol.get_bytes_sent()
+
+
+class DaemonStandaloneProxy(DaemonProxy):
+ def __init__(self, event_handlers=None):
+ if event_handlers is None:
+ event_handlers = {}
+ from deluge.core import daemon
+
+ self.__daemon = daemon.Daemon(standalone=True)
+ self.__daemon.start()
+ log.debug('daemon created!')
+ self.connected = True
+ self.host = 'localhost'
+ self.port = 58846
+ # Running in standalone mode, it's safe to import auth level
+ from deluge.core.authmanager import (
+ AUTH_LEVEL_ADMIN,
+ AUTH_LEVELS_MAPPING,
+ AUTH_LEVELS_MAPPING_REVERSE,
+ )
+
+ self.username = 'localclient'
+ self.authentication_level = AUTH_LEVEL_ADMIN
+ self.auth_levels_mapping = AUTH_LEVELS_MAPPING
+ self.auth_levels_mapping_reverse = AUTH_LEVELS_MAPPING_REVERSE
+ # Register the event handlers
+ for event in event_handlers:
+ for handler in event_handlers[event]:
+ self.__daemon.core.eventmanager.register_event_handler(event, handler)
+
+ def disconnect(self):
+ self.connected = False
+ self.__daemon = None
+
+ def call(self, method, *args, **kwargs):
+ # log.debug('call: %s %s %s', method, args, kwargs)
+
+ import copy
+
+ try:
+ m = self.__daemon.rpcserver.get_object_method(method)
+ except Exception as ex:
+ log.exception(ex)
+ return defer.fail(ex)
+ else:
+ return defer.maybeDeferred(m, *copy.deepcopy(args), **copy.deepcopy(kwargs))
+
+ def register_event_handler(self, event, handler):
+ """
+ Registers a handler function to be called when `:param:event` is
+ received from the daemon.
+
+ :param event: the name of the event to handle
+ :type event: str
+ :param handler: the function to be called when `:param:event`
+ is emitted from the daemon
+ :type handler: function
+
+ """
+ self.__daemon.core.eventmanager.register_event_handler(event, handler)
+
+ def deregister_event_handler(self, event, handler):
+ """
+ Deregisters a event handler.
+
+ :param event: the name of the event
+ :type event: str
+ :param handler: the function registered
+ :type handler: function
+
+ """
+ self.__daemon.core.eventmanager.deregister_event_handler(event, handler)
+
+
+class DottedObject:
+ """
+ This is used for dotted name calls to client
+ """
+
+ def __init__(self, daemon, method):
+ self.daemon = daemon
+ self.base = method
+
+ def __call__(self, *args, **kwargs):
+ raise Exception('You must make calls in the form of "component.method"')
+
+ def __getattr__(self, name):
+ return RemoteMethod(self.daemon, self.base + '.' + name)
+
+
+class RemoteMethod(DottedObject):
+ """
+ This is used when something like 'client.core.get_something()' is attempted.
+ """
+
+ def __call__(self, *args, **kwargs):
+ return self.daemon.call(self.base, *args, **kwargs)
+
+
+class Client:
+ """
+ This class is used to connect to a daemon process and issue RPC requests.
+ """
+
+ __event_handlers = {}
+
+ def __init__(self):
+ self._daemon_proxy = None
+ self.disconnect_callback = None
+ self.__started_standalone = False
+
+ def connect(
+ self,
+ host='127.0.0.1',
+ port=58846,
+ username='',
+ password='',
+ skip_authentication=False,
+ ):
+ """
+ Connects to a daemon process.
+
+ :param host: str, the hostname of the daemon
+ :param port: int, the port of the daemon
+ :param username: str, the username to login with
+ :param password: str, the password to login with
+
+ :returns: a Deferred object that will be called once the connection
+ has been established or fails
+ """
+
+ self._daemon_proxy = DaemonSSLProxy(dict(self.__event_handlers))
+ self._daemon_proxy.set_disconnect_callback(self.__on_disconnect)
+
+ d = self._daemon_proxy.connect(host, port)
+
+ def on_connected(daemon_version):
+ log.debug('on_connected. Daemon version: %s', daemon_version)
+ return daemon_version
+
+ def on_connect_fail(reason):
+ log.debug('on_connect_fail: %s', reason)
+ self.disconnect()
+ return reason
+
+ def on_authenticate(result, daemon_info):
+ log.debug('Authentication successful: %s', result)
+ return result
+
+ def on_authenticate_fail(reason):
+ log.debug('Failed to authenticate: %s', reason.value)
+ return reason
+
+ def authenticate(daemon_version, username, password):
+ if not username and host in ('127.0.0.1', 'localhost'):
+ # No username provided and it's localhost, so attempt to get credentials from auth file.
+ username, password = get_localhost_auth()
+
+ d = self._daemon_proxy.authenticate(username, password)
+ d.addCallback(on_authenticate, daemon_version)
+ d.addErrback(on_authenticate_fail)
+ return d
+
+ d.addCallbacks(on_connected)
+ d.addErrback(on_connect_fail)
+ if not skip_authentication:
+ d.addCallback(authenticate, username, password)
+ return d
+
+ def disconnect(self):
+ """
+ Disconnects from the daemon.
+ """
+ if self.is_standalone():
+ self._daemon_proxy.disconnect()
+ self.stop_standalone()
+ return defer.succeed(True)
+
+ if self._daemon_proxy:
+ return self._daemon_proxy.disconnect()
+
+ def start_standalone(self):
+ """
+ Starts a daemon in the same process as the client.
+ """
+ self._daemon_proxy = DaemonStandaloneProxy(self.__event_handlers)
+ self.__started_standalone = True
+
+ def stop_standalone(self):
+ """
+ Stops the daemon process in the client.
+ """
+ self._daemon_proxy = None
+ self.__started_standalone = False
+
+ @deprecated
+ def start_classic_mode(self):
+ """Deprecated: Use start_standalone"""
+ self.start_standalone()
+
+ @deprecated
+ def stop_classic_mode(self):
+ """Deprecated: Use stop_standalone"""
+ self.stop_standalone()
+
+ def start_daemon(self, port, config):
+ """Starts a daemon process.
+
+ Args:
+ port (int): Port for the daemon to listen on.
+ config (str): Config path to pass to daemon.
+
+ Returns:
+ bool: True is successfully started the daemon, False otherwise.
+
+ """
+ # subprocess.popen does not work with unicode args (with non-ascii characters) on windows
+ config = config.encode(sys.getfilesystemencoding())
+ try:
+ subprocess.Popen(['deluged', '--port=%s' % port, b'--config=%s' % config])
+ except OSError as ex:
+ from errno import ENOENT
+
+ if ex.errno == ENOENT:
+ log.error(
+ _(
+ 'Deluge cannot find the `deluged` executable, check that '
+ 'the deluged package is installed, or added to your PATH.'
+ )
+ )
+ else:
+ log.exception(ex)
+ except Exception as ex:
+ log.error('Unable to start daemon!')
+ log.exception(ex)
+ else:
+ return True
+ return False
+
+ def is_localhost(self):
+ """
+ Checks if the current connected host is a localhost or not.
+
+ :returns: bool, True if connected to a localhost
+
+ """
+ if (
+ self._daemon_proxy
+ and self._daemon_proxy.host in ('127.0.0.1', 'localhost')
+ or isinstance(self._daemon_proxy, DaemonStandaloneProxy)
+ ):
+ return True
+ return False
+
+ def is_standalone(self):
+ """
+ Checks to see if the client has been started in standalone mode.
+
+ :returns: bool, True if in standalone mode
+
+ """
+ return self.__started_standalone
+
+ @deprecated
+ def is_classicmode(self):
+ """Deprecated: Use is_standalone"""
+ self.is_standalone()
+
+ def connected(self):
+ """
+ Check to see if connected to a daemon.
+
+ :returns: bool, True if connected
+
+ """
+ return self._daemon_proxy.connected if self._daemon_proxy else False
+
+ def connection_info(self):
+ """
+ Get some info about the connection or return None if not connected.
+
+ :returns: a tuple of (host, port, username) or None if not connected
+ """
+ if self.connected():
+ return (
+ self._daemon_proxy.host,
+ self._daemon_proxy.port,
+ self._daemon_proxy.username,
+ )
+
+ return None
+
+ @property
+ def daemon_version(self) -> str:
+ """Get the connected daemon version
+
+ Returns:
+ The daemon version
+ """
+ return self._daemon_proxy.daemon_version if self.connected() else ''
+
+ def daemon_version_check_min(self, min_version=get_version()) -> bool:
+ """Check connected daemon against a minimum version.
+
+ Returns:
+ If connected daemon meets minimum version requirement.
+ """
+ if not (self.daemon_version and min_version):
+ return False
+
+ return VersionSplit(self.daemon_version) >= VersionSplit(min_version)
+
+ def register_event_handler(self, event, handler):
+ """
+ Registers a handler that will be called when an event is received from the daemon.
+
+ :params event: str, the event to handle
+ :params handler: func, the handler function, f(args)
+ """
+ if event not in self.__event_handlers:
+ self.__event_handlers[event] = []
+ self.__event_handlers[event].append(handler)
+ # We need to replicate this in the daemon proxy
+ if self._daemon_proxy:
+ self._daemon_proxy.register_event_handler(event, handler)
+
+ def deregister_event_handler(self, event, handler):
+ """
+ Deregisters a event handler.
+
+ :param event: str, the name of the event
+ :param handler: function, the function registered
+
+ """
+ if event in self.__event_handlers and handler in self.__event_handlers[event]:
+ self.__event_handlers[event].remove(handler)
+ if self._daemon_proxy:
+ self._daemon_proxy.deregister_event_handler(event, handler)
+
+ def force_call(self, block=False):
+ # no-op for now.. we'll see if we need this in the future
+ pass
+
+ def __getattr__(self, method):
+ return DottedObject(self._daemon_proxy, method)
+
+ def set_disconnect_callback(self, cb):
+ """
+ Set a function to be called whenever the client is disconnected from
+ the daemon for any reason.
+ """
+ self.disconnect_callback = cb
+
+ def __on_disconnect(self):
+ if self.disconnect_callback:
+ self.disconnect_callback()
+
+ def get_bytes_recv(self):
+ """
+ Returns the number of bytes received from the daemon.
+
+ :returns: the number of bytes received
+ :rtype: int
+ """
+ return self._daemon_proxy.get_bytes_recv()
+
+ def get_bytes_sent(self):
+ """
+ Returns the number of bytes sent to the daemon.
+
+ :returns: the number of bytes sent
+ :rtype: int
+ """
+ return self._daemon_proxy.get_bytes_sent()
+
+ def get_auth_user(self):
+ """
+ Returns the current authenticated username.
+
+ :returns: the authenticated username
+ :rtype: str
+ """
+ return self._daemon_proxy.username
+
+ def get_auth_level(self):
+ """
+ Returns the authentication level the daemon returned upon authentication.
+
+ :returns: the authentication level
+ :rtype: int
+ """
+ return self._daemon_proxy.authentication_level
+
+ @property
+ def auth_levels_mapping(self):
+ return self._daemon_proxy.auth_levels_mapping
+
+ @property
+ def auth_levels_mapping_reverse(self):
+ return self._daemon_proxy.auth_levels_mapping_reverse
+
+
+# This is the object clients will use
+client = Client()
diff --git a/deluge/ui/common.py b/deluge/ui/common.py
new file mode 100644
index 0000000..64d5ca2
--- /dev/null
+++ b/deluge/ui/common.py
@@ -0,0 +1,727 @@
+#
+# Copyright (C) Damien Churchill 2008-2009 <damoxc@gmail.com>
+# Copyright (C) Andrew Resch 2009 <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""
+The ui common module contains methods and classes that are deemed useful for all the interfaces.
+"""
+import logging
+import os
+from hashlib import sha1 as sha
+from typing import Tuple
+
+from deluge import bencode
+from deluge.common import decode_bytes
+
+log = logging.getLogger(__name__)
+
+
+# Dummy translation dicts so the text is available for Translators.
+#
+# All entries in deluge.common.TORRENT_STATE should be added here.
+#
+# No need to import these, just simply use the `_()` function around a status variable.
+def _(message):
+ return message
+
+
+STATE_TRANSLATION = {
+ 'All': _('All'),
+ 'Active': _('Active'),
+ 'Allocating': _('Allocating'),
+ 'Checking': _('Checking'),
+ 'Downloading': _('Downloading'),
+ 'Seeding': _('Seeding'),
+ 'Paused': _('Paused'),
+ 'Queued': _('Queued'),
+ 'Error': _('Error'),
+}
+
+TORRENT_DATA_FIELD = {
+ 'queue': {'name': '#', 'status': ['queue']},
+ 'name': {'name': _('Name'), 'status': ['state', 'name']},
+ 'progress_state': {'name': _('Progress'), 'status': ['progress', 'state']},
+ 'state': {'name': _('State'), 'status': ['state']},
+ 'progress': {'name': _('Progress'), 'status': ['progress']},
+ 'size': {'name': _('Size'), 'status': ['total_wanted']},
+ 'downloaded': {'name': _('Downloaded'), 'status': ['all_time_download']},
+ 'uploaded': {'name': _('Uploaded'), 'status': ['total_uploaded']},
+ 'remaining': {'name': _('Remaining'), 'status': ['total_remaining']},
+ 'ratio': {'name': _('Ratio'), 'status': ['ratio']},
+ 'download_speed': {'name': _('Down Speed'), 'status': ['download_payload_rate']},
+ 'upload_speed': {'name': _('Up Speed'), 'status': ['upload_payload_rate']},
+ 'max_download_speed': {'name': _('Down Limit'), 'status': ['max_download_speed']},
+ 'max_upload_speed': {'name': _('Up Limit'), 'status': ['max_upload_speed']},
+ 'max_connections': {'name': _('Max Connections'), 'status': ['max_connections']},
+ 'max_upload_slots': {'name': _('Max Upload Slots'), 'status': ['max_upload_slots']},
+ 'peers': {'name': _('Peers'), 'status': ['num_peers', 'total_peers']},
+ 'seeds': {'name': _('Seeds'), 'status': ['num_seeds', 'total_seeds']},
+ 'avail': {'name': _('Avail'), 'status': ['distributed_copies']},
+ 'seeds_peers_ratio': {'name': _('Seeds:Peers'), 'status': ['seeds_peers_ratio']},
+ 'time_added': {'name': _('Added'), 'status': ['time_added']},
+ 'tracker': {'name': _('Tracker'), 'status': ['tracker_host']},
+ 'download_location': {
+ 'name': _('Download Folder'),
+ 'status': ['download_location'],
+ },
+ 'seeding_time': {'name': _('Seeding Time'), 'status': ['seeding_time']},
+ 'active_time': {'name': _('Active Time'), 'status': ['active_time']},
+ 'time_since_transfer': {
+ 'name': _('Last Activity'),
+ 'status': ['time_since_transfer'],
+ },
+ 'finished_time': {'name': _('Finished Time'), 'status': ['finished_time']},
+ 'last_seen_complete': {
+ 'name': _('Complete Seen'),
+ 'status': ['last_seen_complete'],
+ },
+ 'completed_time': {'name': _('Completed'), 'status': ['completed_time']},
+ 'eta': {'name': _('ETA'), 'status': ['eta']},
+ 'shared': {'name': _('Shared'), 'status': ['shared']},
+ 'prioritize_first_last': {
+ 'name': _('Prioritize First/Last'),
+ 'status': ['prioritize_first_last'],
+ },
+ 'sequential_download': {
+ 'name': _('Sequential Download'),
+ 'status': ['sequential_download'],
+ },
+ 'is_auto_managed': {'name': _('Auto Managed'), 'status': ['is_auto_managed']},
+ 'auto_managed': {'name': _('Auto Managed'), 'status': ['auto_managed']},
+ 'stop_at_ratio': {'name': _('Stop At Ratio'), 'status': ['stop_at_ratio']},
+ 'stop_ratio': {'name': _('Stop Ratio'), 'status': ['stop_ratio']},
+ 'remove_at_ratio': {'name': _('Remove At Ratio'), 'status': ['remove_at_ratio']},
+ 'move_completed': {'name': _('Move On Completed'), 'status': ['move_completed']},
+ 'move_completed_path': {
+ 'name': _('Move Completed Path'),
+ 'status': ['move_completed_path'],
+ },
+ 'move_on_completed': {
+ 'name': _('Move On Completed'),
+ 'status': ['move_on_completed'],
+ },
+ 'move_on_completed_path': {
+ 'name': _('Move On Completed Path'),
+ 'status': ['move_on_completed_path'],
+ },
+ 'owner': {'name': _('Owner'), 'status': ['owner']},
+ 'pieces': {'name': _('Pieces'), 'status': ['num_pieces', 'piece_length']},
+ 'seed_rank': {'name': _('Seed Rank'), 'status': ['seed_rank']},
+ 'super_seeding': {'name': _('Super Seeding'), 'status': ['super_seeding']},
+}
+
+TRACKER_STATUS_TRANSLATION = [
+ _('Error'),
+ _('Warning'),
+ _('Announce OK'),
+ _('Announce Sent'),
+]
+
+PREFS_CATOG_TRANS = {
+ 'interface': _('Interface'),
+ 'downloads': _('Downloads'),
+ 'bandwidth': _('Bandwidth'),
+ 'queue': _('Queue'),
+ 'network': _('Network'),
+ 'proxy': _('Proxy'),
+ 'cache': _('Cache'),
+ 'other': _('Other'),
+ 'daemon': _('Daemon'),
+ 'plugins': _('Plugins'),
+}
+
+FILE_PRIORITY = {
+ 0: 'Skip',
+ 1: 'Low',
+ 2: 'Low',
+ 3: 'Low',
+ 4: 'Normal',
+ 5: 'High',
+ 6: 'High',
+ 7: 'High',
+ _('Skip'): 0,
+ _('Low'): 1,
+ _('Normal'): 4,
+ _('High'): 7,
+}
+
+del _
+
+# The keys from session statistics for cache status.
+DISK_CACHE_KEYS = [
+ 'disk.num_blocks_read',
+ 'disk.num_blocks_written',
+ 'disk.num_read_ops',
+ 'disk.num_write_ops',
+ 'read_hit_ratio',
+ 'write_hit_ratio',
+ 'disk.disk_blocks_in_use',
+ 'disk.read_cache_blocks',
+]
+
+
+class TorrentInfo:
+ """Collects information about a torrent file.
+
+ Args:
+ filename (str, optional): The path to the .torrent file.
+ filetree (int, optional): The version of filetree to create (defaults to 1).
+ torrent_file (dict, optional): A bdecoded .torrent file contents.
+ force_bt_version (int, optional): The BitTorrent spec to use for parsing (defaults to 1).
+
+ """
+
+ def __init__(self, filename='', filetree=1, torrent_file=None, force_bt_version=1):
+ self._filedata = None
+ if torrent_file:
+ self._metainfo = torrent_file
+ elif filename:
+ log.debug('Attempting to open %s.', filename)
+ try:
+ with open(filename, 'rb') as _file:
+ self._filedata = _file.read()
+ except OSError as ex:
+ log.warning('Unable to open %s: %s', filename, ex)
+ return
+
+ try:
+ self._metainfo = bencode.bdecode(self._filedata)
+ except bencode.BTFailure as ex:
+ log.warning('Failed to decode %s: %s', filename, ex)
+ return
+ else:
+ log.warning('Requires valid arguments.')
+ return
+
+ # info_dict with keys decoded to unicode.
+ info_dict = {k.decode(): v for k, v in self._metainfo[b'info'].items()}
+ self._info_hash = sha(bencode.bencode(info_dict)).hexdigest()
+
+ # Get encoding from torrent file if available
+ encoding = info_dict.get(
+ 'encoding', info_dict.get('codepage', b'UTF-8')
+ ).decode()
+
+ # Decode 'name' with encoding unless 'name.utf-8' found.
+ if 'name.utf-8' in info_dict:
+ self._name = decode_bytes(info_dict['name.utf-8'])
+ else:
+ self._name = decode_bytes(info_dict['name'], encoding)
+
+ meta_version = info_dict['meta version'] if 'meta version' in info_dict else -1
+ is_hybrid = 'files' in info_dict and meta_version == 2
+
+ parse_v1 = False
+ parse_v2 = False
+ if is_hybrid:
+ if force_bt_version == 1:
+ parse_v1 = True
+ elif force_bt_version == 2:
+ parse_v2 = True
+ elif 'files' in info_dict:
+ parse_v1 = True
+ elif meta_version == 2 and 'file tree' in info_dict:
+ parse_v2 = True
+
+ # Get list of files from torrent info
+ self._files = []
+ if parse_v1:
+ paths = {}
+ dirs = {}
+ prefix = self._name
+
+ for index, f in enumerate(info_dict['files']):
+ f = {k.decode(): v for k, v in f.items()}
+
+ if 'path.utf-8' in f:
+ path = decode_bytes(os.path.join(*f['path.utf-8']))
+ else:
+ path = decode_bytes(os.path.join(*f['path']), encoding)
+
+ if prefix:
+ path = os.path.join(prefix, path)
+
+ # Ensure agnostic path separator
+ path = path.replace('\\', '/')
+
+ self._files.append(
+ {'path': path, 'size': f['length'], 'download': True}
+ )
+ paths[path] = {'path': path, 'index': index, 'length': f['length']}
+
+ dirname = os.path.dirname(path)
+ while dirname:
+ dirinfo = dirs.setdefault(dirname, {})
+ dirinfo['length'] = dirinfo.get('length', 0) + f['length']
+ dirname = os.path.dirname(dirname)
+
+ if filetree == 2:
+
+ def walk(full_path, item):
+ if item['type'] == 'dir':
+ item.update(dirs[full_path])
+ else:
+ item.update(paths[full_path])
+ item['download'] = True
+
+ file_tree = FileTree2(list(paths))
+ file_tree.walk(walk)
+ else:
+
+ def walk(full_path, item):
+ if isinstance(item, dict):
+ return item
+ return [paths[full_path]['index'], paths[full_path]['length'], True]
+
+ file_tree = FileTree(paths)
+ file_tree.walk(walk)
+ self._files_tree = file_tree.get_tree()
+ elif parse_v2:
+
+ def single_file_torrent(inner_info_dict):
+ if len(inner_info_dict['file tree']) > 1:
+ return False
+
+ file_name = [key for key in inner_info_dict['file tree']][0]
+ return inner_info_dict['name'] == file_name
+
+ if not single_file_torrent(info_dict):
+ info_dict['file tree'] = {info_dict['name']: info_dict['file tree']}
+
+ if filetree == 2:
+
+ def walk(full_path, item):
+ if item['type'] == 'file':
+ item['path'] = full_path
+ self._files.append(
+ {
+ 'path': full_path,
+ 'size': item['length'],
+ 'download': True,
+ }
+ )
+ item['download'] = True
+
+ file_tree = FileTree2BTv2(info_dict['file tree'])
+ file_tree.walk(walk)
+ else:
+
+ def walk(full_path, item):
+ if isinstance(item, dict):
+ return item
+ self._files.append(
+ {'path': full_path, 'size': item[1], 'download': True}
+ )
+ return [item[0], item[1], True]
+
+ file_tree = FiletreeBTv2(info_dict['file tree'])
+ file_tree.walk(walk)
+
+ self._files_tree = file_tree.get_tree()
+ else:
+ self._files.append(
+ {'path': self._name, 'size': info_dict['length'], 'download': True}
+ )
+ if filetree == 2:
+ self._files_tree = {
+ 'contents': {
+ self._name: {
+ 'type': 'file',
+ 'index': 0,
+ 'length': info_dict['length'],
+ 'download': True,
+ }
+ }
+ }
+ else:
+ self._files_tree = {self._name: (0, info_dict['length'], True)}
+
+ @classmethod
+ def from_metadata(cls, metadata, trackers=None):
+ """Create a TorrentInfo from metadata and trackers
+
+ Args:
+ metadata (dict): A bdecoded info section of torrent file.
+ trackers (list of lists, optional): The trackers to include.
+
+ """
+ if not isinstance(metadata, dict):
+ return
+
+ metainfo = {b'info': metadata}
+ if trackers:
+ metainfo[b'announce'] = trackers[0][0].encode('utf-8')
+ trackers_utf8 = [[t.encode('utf-8') for t in tier] for tier in trackers]
+ metainfo[b'announce-list'] = trackers_utf8
+ return cls(torrent_file=metainfo)
+
+ def as_dict(self, *keys):
+ """The torrent info as a dictionary, filtered by keys.
+
+ Args:
+ keys (str): A space-separated string of keys.
+
+ Returns:
+ dict: The torrent info dict with specified keys.
+ """
+ return {key: getattr(self, key) for key in keys}
+
+ @property
+ def name(self):
+ """The name of the torrent.
+
+ Returns:
+ str: The torrent name.
+
+ """
+ return self._name
+
+ @property
+ def info_hash(self):
+ """The calculated torrent info_hash.
+
+ Returns:
+ str: The torrent info_hash.
+ """
+ return self._info_hash
+
+ @property
+ def files(self):
+ """The files that the torrent contains.
+
+ Returns:
+ list: The list of torrent files.
+
+ """
+ return self._files
+
+ @property
+ def files_tree(self):
+ """A tree of the files the torrent contains.
+
+ ::
+
+ {
+ "some_directory": {
+ "some_file": (index, size, download)
+ }
+ }
+
+ Returns:
+ dict: The tree of files.
+
+ """
+ return self._files_tree
+
+ @property
+ def metainfo(self):
+ """Returns the torrent metainfo dictionary.
+
+ This is the bdecoded torrent file contents.
+
+ Returns:
+ dict: The metainfo dictionary.
+
+ """
+ return self._metainfo
+
+ @property
+ def filedata(self):
+ """The contents of the .torrent file.
+
+ Returns:
+ bytes: The bencoded metainfo.
+
+ """
+ if not self._filedata:
+ self._filedata = bencode.bencode(self._metainfo)
+ return self._filedata
+
+
+class FileTree2:
+ """
+ Converts a list of paths, from a V1 torrent, into a file tree.
+
+ Each file will have the dictionary structure of:
+ { file_name: {type, path, index, length, download} }
+ where:
+ type (str): will always be "file"
+ path (str): the absolute file path from the root the torrent
+ index (int): the index of file in the torrent
+ length (int): the size of the file, in bytes
+ download (bool): marks the file to download
+
+ Folder will be dictionaries of files:
+ { dir1: type, contents: {file_name1: {...}, file_name2: {...}}, dir2: ... }
+ where:
+ type (str): will always be "dir"
+ contents (dict): a dictionary of inner files and folders
+
+ The entire tree will start with a root dictionary:
+ { contents: {dirs...}, type: "dir" }
+
+ Args:
+ paths (list): The paths to be converted.
+ """
+
+ def __init__(self, paths: list):
+ self.tree = {'contents': {}, 'type': 'dir'}
+
+ def get_parent(path):
+ parent = self.tree
+ while '/' in path:
+ directory, path = path.split('/', 1)
+ child = parent['contents'].get(directory)
+ if child is None:
+ parent['contents'][directory] = {'type': 'dir', 'contents': {}}
+ parent = parent['contents'][directory]
+ return parent, path
+
+ for path in paths:
+ if path[-1] == '/':
+ path = path[:-1]
+ parent, path = get_parent(path)
+ parent['contents'][path] = {'type': 'dir', 'contents': {}}
+ else:
+ parent, path = get_parent(path)
+ parent['contents'][path] = {'type': 'file'}
+
+ def get_tree(self):
+ """
+ Return the tree.
+
+ :returns: the file tree.
+ :rtype: dictionary
+ """
+ return self.tree
+
+ def walk(self, callback):
+ """
+ Walk through the file tree calling the callback function on each item
+ contained.
+
+ :param callback: The function to be used as a callback, it should have
+ the signature func(item, path) where item is a `tuple` for a file
+ and `dict` for a directory.
+ :type callback: function
+ """
+
+ def walk(directory, parent_path):
+ for path in list(directory['contents']):
+ full_path = os.path.join(parent_path, path).replace('\\', '/')
+ if directory['contents'][path]['type'] == 'dir':
+ directory['contents'][path] = (
+ callback(full_path, directory['contents'][path])
+ or directory['contents'][path]
+ )
+ walk(directory['contents'][path], full_path)
+ else:
+ directory['contents'][path] = (
+ callback(full_path, directory['contents'][path])
+ or directory['contents'][path]
+ )
+
+ walk(self.tree, '')
+
+ def __str__(self):
+ lines = []
+
+ def write(path, item):
+ depth = path.count('/')
+ path = os.path.basename(path)
+ path = path + '/' if item['type'] == 'dir' else path
+ lines.append(' ' * depth + path)
+
+ self.walk(write)
+ return '\n'.join(lines)
+
+
+class FileTree:
+ """
+ Converts a dict of paths, from a V1 torrent, into a file tree.
+
+ Each file will have the dictionary structure of:
+ { file_name: [index, length, download] }
+ Where:
+ index (int): the index of file in the torrent
+ length (int): the size of the file, in bytes
+ download (bool): marks the file to download
+
+ Folder will be dictionaries of files:
+ { dir1: {file_name1: [...], file_name2: [...]}, dir2: ... }
+
+ Args:
+ paths (dict): The paths to be converted.
+ """
+
+ def __init__(self, paths: dict):
+ self.tree = {}
+
+ def get_parent(path):
+ parent = self.tree
+ while '/' in path:
+ directory, path = path.split('/', 1)
+ child = parent.get(directory)
+ if child is None:
+ parent[directory] = {}
+ parent = parent[directory]
+ return parent, path
+
+ for path in paths:
+ if path[-1] == '/':
+ path = path[:-1]
+ parent, path = get_parent(path)
+ parent[path] = {}
+ else:
+ parent, path = get_parent(path)
+ parent[path] = []
+
+ def get_tree(self):
+ """
+ Return the tree, after first converting all file lists to a tuple.
+
+ Returns:
+ dict: the file tree.
+ """
+
+ def to_tuple(path, item):
+ if isinstance(item, dict):
+ return item
+ return tuple(item)
+
+ self.walk(to_tuple)
+ return self.tree
+
+ def walk(self, callback):
+ """
+ Walk through the file tree calling the callback function on each item
+ contained.
+
+ Args:
+ callback (function): The function to be used as a callback, it should have
+ the signature func(item, path) where item is a `tuple` for a file
+ and `dict` for a directory.
+ """
+
+ def walk(directory, parent_path):
+ for path in list(directory):
+ full_path = os.path.join(parent_path, path).replace('\\', '/')
+ if isinstance(directory[path], dict):
+ directory[path] = (
+ callback(full_path, directory[path]) or directory[path]
+ )
+ walk(directory[path], full_path)
+ else:
+ directory[path] = (
+ callback(full_path, directory[path]) or directory[path]
+ )
+
+ walk(self.tree, '')
+
+ def __str__(self):
+ lines = []
+
+ def write(path, item):
+ depth = path.count('/')
+ path = os.path.basename(path)
+ path = isinstance(item, dict) and path + '/' or path
+ lines.append(' ' * depth + path)
+
+ self.walk(write)
+ return '\n'.join(lines)
+
+
+class FiletreeBTv2(FileTree):
+ """
+ Converts a dict of paths, from a V2 torrent, into a file tree.
+
+ Each file will have the dictionary structure of:
+ { file_name: [index, length, download] }
+ Where:
+ index (int): the index of file in the torrent
+ length (int): the size of the file, in bytes
+ download (bool): marks the file to download
+
+ Folder will be dictionaries of files:
+ { dir1: {file_name1: [...], file_name2: [...]}, dir2: ... }
+
+ Args:
+ file_tree (dict): The paths to be converted.
+ """
+
+ def __init__(self, file_tree):
+ self.tree = {}
+
+ def get_parent(curr_tree_dict, index, parent) -> int:
+ for key, item in curr_tree_dict.items():
+ key = decode_bytes(key)
+ if b'' in item:
+ parent[key] = [index, item[b''][b'length']]
+ index += 1
+ else:
+ parent[key] = {}
+ index = get_parent(item, index, parent[key])
+ return index
+
+ get_parent(file_tree, 0, self.tree)
+
+
+class FileTree2BTv2(FileTree2):
+ """
+ Converts a dict of paths, from a V2 torrent, into a file tree.
+
+ Each file will have the dictionary structure of:
+ { file_name: {type, path, index, length, download} }
+ where:
+ type (str): will always be "file"
+ path (str): the absolute file path from the root the torrent
+ index (int): the index of file in the torrent
+ length (int): the size of the file, in bytes
+ download (bool): marks the file to download
+
+ Folder will be dictionaries of files:
+ { dir1: type, contents: {file_name1: {...}, file_name2: {...}}, dir2: ... }
+ where:
+ type (str): will always be "dir"
+ contents (dict): a dictionary of inner files and folders
+
+ The entire tree will start with a root dictionary:
+ { contents: {dirs...}, type: "dir" }
+
+ Args:
+ file_tree (dict): The paths to be converted.
+ """
+
+ def __init__(self, file_tree):
+ self.tree = {'contents': {}, 'type': 'dir'}
+
+ def get_parent(curr_tree_dict, index, parent) -> Tuple[int, int]:
+ total_length = 0
+ for key, item in curr_tree_dict.items():
+ key = decode_bytes(key)
+ if b'' in item:
+ length = item[b''][b'length']
+ total_length += length
+ parent['contents'][key] = {
+ 'index': index,
+ 'length': length,
+ 'type': 'file',
+ }
+ index += 1
+ else:
+ parent['contents'][key] = {
+ 'contents': {},
+ 'type': 'dir',
+ 'length': 0,
+ }
+ index, length = get_parent(item, index, parent['contents'][key])
+ parent['contents'][key]['length'] = length
+ total_length += length
+ return index, total_length
+
+ get_parent(file_tree, 0, self.tree)
diff --git a/deluge/ui/console/__init__.py b/deluge/ui/console/__init__.py
new file mode 100644
index 0000000..a09d936
--- /dev/null
+++ b/deluge/ui/console/__init__.py
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.ui.console.console import Console
+
+UI_PATH = __path__[0]
+
+
+def start():
+ Console().start()
+
+
+def test_start():
+ """Entry point for tests
+
+ A workaround for unit tests which require a deferred object to be
+ returned to run properly due to mocking the Twisted reactor.
+ """
+ return Console().start()
diff --git a/deluge/ui/console/cmdline/__init__.py b/deluge/ui/console/cmdline/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/deluge/ui/console/cmdline/__init__.py
diff --git a/deluge/ui/console/cmdline/command.py b/deluge/ui/console/cmdline/command.py
new file mode 100644
index 0000000..63dc926
--- /dev/null
+++ b/deluge/ui/console/cmdline/command.py
@@ -0,0 +1,211 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import shlex
+
+from twisted.internet import defer
+
+from deluge.ui.client import client
+from deluge.ui.console.parser import OptionParser, OptionParserError
+from deluge.ui.console.utils.colors import strip_colors
+
+log = logging.getLogger(__name__)
+
+
+class Commander:
+ def __init__(self, cmds, interactive=False):
+ self._commands = cmds
+ self.interactive = interactive
+
+ def write(self, line):
+ print(strip_colors(line))
+
+ def do_command(self, cmd_line):
+ """Run a console command.
+
+ Args:
+ cmd_line (str): Console command.
+
+ Returns:
+ Deferred: A deferred that fires when the command has been executed.
+
+ """
+ options = self.parse_command(cmd_line)
+ if options:
+ return self.exec_command(options)
+ return defer.succeed(None)
+
+ def exit(self, status=0, msg=None):
+ self._exit = True
+ if msg:
+ print(msg)
+
+ def parse_command(self, cmd_line):
+ """Parse a console command and process with argparse.
+
+ Args:
+ cmd_line (str): Console command.
+
+ Returns:
+ argparse.Namespace: The parsed command.
+
+ """
+ if not cmd_line:
+ return
+ cmd, _, line = cmd_line.partition(' ')
+ try:
+ parser = self._commands[cmd].create_parser()
+ except KeyError:
+ self.write('{!error!}Unknown command: %s' % cmd)
+ return
+
+ try:
+ args = [cmd] + self._commands[cmd].split(line)
+ except ValueError as ex:
+ self.write('{!error!}Error parsing command: %s' % ex)
+ return
+
+ # Do a little hack here to print 'command --help' properly
+ parser._print_help = parser.print_help
+
+ def print_help(f=None):
+ if self.interactive:
+ self.write(parser.format_help())
+ else:
+ parser._print_help(f)
+
+ parser.print_help = print_help
+
+ # Only these commands can be run when not connected to a daemon
+ not_connected_cmds = ['help', 'connect', 'quit']
+ aliases = []
+ for c in not_connected_cmds:
+ aliases.extend(self._commands[c].aliases)
+ not_connected_cmds.extend(aliases)
+
+ if not client.connected() and cmd not in not_connected_cmds:
+ self.write(
+ '{!error!}Not connected to a daemon, please use the connect command first.'
+ )
+ return
+
+ try:
+ options = parser.parse_args(args=args)
+ options.command = cmd
+ except TypeError as ex:
+ self.write('{!error!}Error parsing options: %s' % ex)
+ import traceback
+
+ self.write('%s' % traceback.format_exc())
+ return
+ except OptionParserError as ex:
+ import traceback
+
+ log.warning('Error parsing command "%s": %s', args, ex)
+ self.write('{!error!} %s' % ex)
+ parser.print_help()
+ return
+
+ if getattr(parser, '_exit', False):
+ return
+ return options
+
+ def exec_command(self, options, *args):
+ """Execute a console command.
+
+ Args:
+ options (argparse.Namespace): The command to execute.
+
+ Returns:
+ Deferred: A deferred that fires when command has been executed.
+
+ """
+ try:
+ ret = self._commands[options.command].handle(options)
+ except Exception as ex: # pylint: disable=broad-except
+ self.write('{!error!} %s' % ex)
+ log.exception(ex)
+ import traceback
+
+ self.write('%s' % traceback.format_exc())
+ return defer.succeed(True)
+ else:
+ return ret
+
+
+class BaseCommand:
+ usage = None
+ interactive_only = False
+ aliases = []
+ _name = 'base'
+ epilog = ''
+
+ def complete(self, text, *args):
+ return []
+
+ def handle(self, options):
+ pass
+
+ @property
+ def name(self):
+ return self._name
+
+ @property
+ def name_with_alias(self):
+ return '/'.join([self._name] + self.aliases)
+
+ @property
+ def description(self):
+ return self.__doc__
+
+ def split(self, text):
+ text = text.replace('\\', '\\\\')
+ result = shlex.split(text)
+ for i, s in enumerate(result):
+ result[i] = s.replace(r'\ ', ' ')
+ result = [s for s in result if s != '']
+ return result
+
+ def create_parser(self):
+ opts = {
+ 'prog': self.name_with_alias,
+ 'description': self.__doc__,
+ 'epilog': self.epilog,
+ }
+ if self.usage:
+ opts['usage'] = self.usage
+ parser = OptionParser(**opts)
+ parser.add_argument(self.name, metavar='')
+ parser.base_parser = parser
+ self.add_arguments(parser)
+ return parser
+
+ def add_subparser(self, subparsers):
+ opts = {
+ 'prog': self.name_with_alias,
+ 'help': self.__doc__,
+ 'description': self.__doc__,
+ }
+ if self.usage:
+ opts['usage'] = self.usage
+
+ # A workaround for aliases showing as duplicate command names in help output.
+ for cmd_name in sorted([self.name] + self.aliases):
+ if cmd_name not in subparsers._name_parser_map:
+ if cmd_name in self.aliases:
+ opts['help'] = _('`%s` alias' % self.name)
+ parser = subparsers.add_parser(cmd_name, **opts)
+ break
+
+ self.add_arguments(parser)
+
+ def add_arguments(self, parser):
+ pass
diff --git a/deluge/ui/console/cmdline/commands/__init__.py b/deluge/ui/console/cmdline/commands/__init__.py
new file mode 100644
index 0000000..39dbefe
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/__init__.py
@@ -0,0 +1,3 @@
+from deluge.ui.console.cmdline.command import BaseCommand
+
+__all__ = ['BaseCommand']
diff --git a/deluge/ui/console/cmdline/commands/add.py b/deluge/ui/console/cmdline/commands/add.py
new file mode 100644
index 0000000..706ae16
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/add.py
@@ -0,0 +1,117 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+from base64 import b64encode
+from urllib.parse import urlparse
+from urllib.request import url2pathname
+
+from twisted.internet import defer
+
+import deluge.common
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Add torrents"""
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '-p', '--path', dest='path', help=_('Download folder for torrent')
+ )
+ parser.add_argument(
+ '-m',
+ '--move-path',
+ dest='move_completed_path',
+ help=_('Move the completed torrent to this folder'),
+ )
+ parser.add_argument(
+ 'torrents',
+ metavar='<torrent>',
+ nargs='+',
+ help=_('One or more torrent files, URLs or magnet URIs'),
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ t_options = {}
+ if options.path:
+ t_options['download_location'] = os.path.abspath(
+ os.path.expanduser(options.path)
+ )
+
+ if options.move_completed_path:
+ t_options['move_completed'] = True
+ t_options['move_completed_path'] = os.path.abspath(
+ os.path.expanduser(options.move_completed_path)
+ )
+
+ def on_success(result):
+ if not result:
+ self.console.write('{!error!}Torrent was not added: Already in session')
+ else:
+ self.console.write('{!success!}Torrent added!')
+
+ def on_fail(result):
+ self.console.write('{!error!}Torrent was not added: %s' % result)
+
+ # Keep a list of deferreds to make a DeferredList
+ deferreds = []
+ for torrent in options.torrents:
+ if not torrent.strip():
+ continue
+ if deluge.common.is_url(torrent):
+ self.console.write(
+ '{!info!}Attempting to add torrent from URL: %s' % torrent
+ )
+ deferreds.append(
+ client.core.add_torrent_url(torrent, t_options)
+ .addCallback(on_success)
+ .addErrback(on_fail)
+ )
+ elif deluge.common.is_magnet(torrent):
+ self.console.write(
+ '{!info!}Attempting to add torrent from magnet URI: %s' % torrent
+ )
+ deferreds.append(
+ client.core.add_torrent_magnet(torrent, t_options)
+ .addCallback(on_success)
+ .addErrback(on_fail)
+ )
+ else:
+ # Just a file
+ if urlparse(torrent).scheme == 'file':
+ torrent = url2pathname(urlparse(torrent).path)
+ path = os.path.abspath(os.path.expanduser(torrent))
+ if not os.path.exists(path):
+ self.console.write('{!error!}%s does not exist!' % path)
+ continue
+ if not os.path.isfile(path):
+ self.console.write('{!error!}This is a directory!')
+ continue
+ self.console.write('{!info!}Attempting to add torrent: %s' % path)
+ filename = os.path.split(path)[-1]
+ with open(path, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ deferreds.append(
+ client.core.add_torrent_file_async(filename, filedump, t_options)
+ .addCallback(on_success)
+ .addErrback(on_fail)
+ )
+
+ return defer.DeferredList(deferreds)
+
+ def complete(self, line):
+ return component.get('ConsoleUI').tab_complete_path(
+ line, ext='.torrent', sort='date'
+ )
diff --git a/deluge/ui/console/cmdline/commands/cache.py b/deluge/ui/console/cmdline/commands/cache.py
new file mode 100644
index 0000000..fe6cd58
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/cache.py
@@ -0,0 +1,28 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+from deluge.ui.client import client
+from deluge.ui.common import DISK_CACHE_KEYS
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Show information about the disk cache"""
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ def on_cache_status(status):
+ for key, value in sorted(status.items()):
+ self.console.write(f'{{!info!}}{key}: {{!input!}}{value}')
+
+ return client.core.get_session_status(DISK_CACHE_KEYS).addCallback(
+ on_cache_status
+ )
diff --git a/deluge/ui/console/cmdline/commands/config.py b/deluge/ui/console/cmdline/commands/config.py
new file mode 100644
index 0000000..8b31ca3
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/config.py
@@ -0,0 +1,136 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import json
+import logging
+import re
+
+import deluge.component as component
+import deluge.ui.console.utils.colors as colors
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+log = logging.getLogger(__name__)
+
+
+def json_eval(source):
+ """Evaluates string as json data and returns Python objects."""
+ if source == '':
+ return source
+
+ src = source.splitlines()[0]
+
+ # Substitutions to enable usage of pythonic syntax.
+ if src.startswith('(') and src.endswith(')'):
+ src = re.sub(r'^\((.*)\)$', r'[\1]', src)
+ elif src.lower() in ('true', 'false'):
+ src = src.lower()
+ elif src.lower() == 'none':
+ src = 'null'
+
+ try:
+ return json.loads(src)
+ except ValueError:
+ return src
+
+
+class Command(BaseCommand):
+ """Show and set configuration values"""
+
+ usage = _('Usage: config [--set <key> <value>] [<key> [<key>...] ]')
+
+ def add_arguments(self, parser):
+ set_group = parser.add_argument_group('setting a value')
+ set_group.add_argument(
+ '-s',
+ '--set',
+ action='store',
+ metavar='<key>',
+ help=_('set value for this key'),
+ )
+ set_group.add_argument(
+ 'values', metavar='<value>', nargs='+', help=_('Value to set')
+ )
+ get_group = parser.add_argument_group('getting values')
+ get_group.add_argument(
+ 'keys',
+ metavar='<keys>',
+ nargs='*',
+ help=_('one or more keys separated by space'),
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+ if options.set:
+ return self._set_config(options)
+ else:
+ return self._get_config(options)
+
+ def _get_config(self, options):
+ def _on_get_config(config):
+ string = ''
+ for key in sorted(config):
+ if key not in options.values:
+ continue
+
+ color = '{!white,black,bold!}'
+ value = config[key]
+ try:
+ color = colors.type_color[type(value)]
+ except KeyError:
+ pass
+
+ # We need to format dicts for printing
+ if isinstance(value, dict):
+ import pprint
+
+ value = pprint.pformat(value, 2, 80)
+ new_value = []
+ for line in value.splitlines():
+ new_value.append(f'{color}{line}')
+ value = '\n'.join(new_value)
+
+ string += f'{key}: {color}{value}\n'
+ self.console.write(string.strip())
+
+ return client.core.get_config().addCallback(_on_get_config)
+
+ def _set_config(self, options):
+ config = component.get('CoreConfig')
+ key = options.set
+ val = ' '.join(options.values)
+
+ try:
+ val = json_eval(val)
+ except Exception as ex:
+ self.console.write('{!error!}%s' % ex)
+ return
+
+ if key not in config:
+ self.console.write('{!error!}Invalid key: %s' % key)
+ return
+
+ if not isinstance(config[key], type(val)):
+ try:
+ val = type(config[key])(val)
+ except TypeError:
+ self.config.write(
+ '{!error!}Configuration value provided has incorrect type.'
+ )
+ return
+
+ def on_set_config(result):
+ self.console.write('{!success!}Configuration value successfully updated.')
+
+ self.console.write(f'Setting "{key}" to: {val!r}')
+ return client.core.set_config({key: val}).addCallback(on_set_config)
+
+ def complete(self, text):
+ return [k for k in component.get('CoreConfig') if k.startswith(text)]
diff --git a/deluge/ui/console/cmdline/commands/connect.py b/deluge/ui/console/cmdline/commands/connect.py
new file mode 100644
index 0000000..4c76de3
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/connect.py
@@ -0,0 +1,78 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+log = logging.getLogger(__name__)
+
+
+class Command(BaseCommand):
+ """Connect to a new deluge server"""
+
+ usage = _('Usage: connect <host[:port]> [<username>] [<password>]')
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'host', help=_('Daemon host and port'), metavar='<host[:port]>'
+ )
+ parser.add_argument(
+ 'username', help=_('Username'), metavar='<username>', nargs='?', default=''
+ )
+ parser.add_argument(
+ 'password', help=_('Password'), metavar='<password>', nargs='?', default=''
+ )
+
+ def add_parser(self, subparsers):
+ parser = subparsers.add_parser(
+ self.name, help=self.__doc__, description=self.__doc__, prog='connect'
+ )
+ self.add_arguments(parser)
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ host = options.host
+ try:
+ host, port = host.split(':')
+ port = int(port)
+ except ValueError:
+ port = 58846
+
+ def do_connect():
+ d = client.connect(host, port, options.username, options.password)
+
+ def on_connect(result):
+ if self.console.interactive:
+ self.console.write(f'{{!success!}}Connected to {host}:{port}!')
+ return component.start()
+
+ def on_connect_fail(result):
+ self.console.write(
+ f'{{!error!}}Failed to connect to {host}:{port} with reason: {result.value.message}'
+ )
+ return result
+
+ d.addCallbacks(on_connect, on_connect_fail)
+ return d
+
+ if client.connected():
+
+ def on_disconnect(result):
+ if self.console.statusbars:
+ self.console.statusbars.update_statusbars()
+ return do_connect()
+
+ return client.disconnect().addCallback(on_disconnect)
+ else:
+ return do_connect()
diff --git a/deluge/ui/console/cmdline/commands/debug.py b/deluge/ui/console/cmdline/commands/debug.py
new file mode 100644
index 0000000..af48a8b
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/debug.py
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from twisted.internet import defer
+
+import deluge.component as component
+import deluge.log
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Enable and disable debugging"""
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'state', metavar='<on|off>', choices=['on', 'off'], help=_('The new state')
+ )
+
+ def handle(self, options):
+ if options.state == 'on':
+ deluge.log.set_logger_level('debug')
+ elif options.state == 'off':
+ deluge.log.set_logger_level('error')
+ else:
+ component.get('ConsoleUI').write('{!error!}%s' % self.usage)
+
+ return defer.succeed(True)
+
+ def complete(self, text):
+ return [x for x in ['on', 'off'] if x.startswith(text)]
diff --git a/deluge/ui/console/cmdline/commands/gui.py b/deluge/ui/console/cmdline/commands/gui.py
new file mode 100644
index 0000000..575bc9b
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/gui.py
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+
+from . import BaseCommand
+
+log = logging.getLogger(__name__)
+
+
+class Command(BaseCommand):
+ """Enable interactive mode"""
+
+ interactive_only = True
+
+ def handle(self, options):
+ console = component.get('ConsoleUI')
+ at = console.set_mode('TorrentList')
+ at.go_top = True
+ at.resume()
diff --git a/deluge/ui/console/cmdline/commands/halt.py b/deluge/ui/console/cmdline/commands/halt.py
new file mode 100644
index 0000000..608f2de
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/halt.py
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Shutdown the deluge server."""
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ def on_shutdown(result):
+ self.console.write('{!success!}Daemon was shutdown')
+
+ def on_shutdown_fail(reason):
+ self.console.write('{!error!}Unable to shutdown daemon: %s' % reason)
+
+ return (
+ client.daemon.shutdown()
+ .addCallback(on_shutdown)
+ .addErrback(on_shutdown_fail)
+ )
diff --git a/deluge/ui/console/cmdline/commands/help.py b/deluge/ui/console/cmdline/commands/help.py
new file mode 100644
index 0000000..754dadb
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/help.py
@@ -0,0 +1,71 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from twisted.internet import defer
+
+import deluge.component as component
+
+from . import BaseCommand
+
+log = logging.getLogger(__name__)
+
+
+class Command(BaseCommand):
+ """Displays help on other commands"""
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'commands', metavar='<command>', nargs='*', help=_('One or more commands')
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+ self._commands = self.console._commands
+ deferred = defer.succeed(True)
+ if options.commands:
+ for arg in options.commands:
+ try:
+ cmd = self._commands[arg]
+ except KeyError:
+ self.console.write('{!error!}Unknown command %s' % arg)
+ continue
+ try:
+ parser = cmd.create_parser()
+ self.console.write(parser.format_help())
+ except AttributeError:
+ self.console.write(cmd.__doc__ or 'No help for this command')
+ self.console.write(' ')
+ else:
+ self.console.set_batch_write(True)
+ cmds_doc = ''
+ for cmd in sorted(self._commands):
+ if cmd in self._commands[cmd].aliases:
+ continue
+ parser = self._commands[cmd].create_parser()
+ cmd_doc = (
+ '{!info!}'
+ + '%-9s' % self._commands[cmd].name_with_alias
+ + '{!input!} - '
+ + self._commands[cmd].__doc__
+ + '\n '
+ + parser.format_usage()
+ or ''
+ )
+ cmds_doc += parser.formatter.format_colors(cmd_doc)
+ self.console.write(cmds_doc)
+ self.console.write(' ')
+ self.console.write('For help on a specific command, use `<command> --help`')
+ self.console.set_batch_write(False)
+
+ return deferred
+
+ def complete(self, line):
+ return [x for x in component.get('ConsoleUI')._commands if x.startswith(line)]
diff --git a/deluge/ui/console/cmdline/commands/info.py b/deluge/ui/console/cmdline/commands/info.py
new file mode 100644
index 0000000..7ea9a67
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/info.py
@@ -0,0 +1,488 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from os.path import sep as dirsep
+
+import deluge.component as component
+import deluge.ui.console.utils.colors as colors
+from deluge.common import TORRENT_STATE, fsize, fspeed
+from deluge.ui.client import client
+from deluge.ui.common import FILE_PRIORITY
+from deluge.ui.console.utils.format_utils import (
+ f_progressbar,
+ f_seedrank_dash,
+ format_date_never,
+ format_progress,
+ format_time,
+ ftotal_sized,
+ pad_string,
+ remove_formatting,
+ shorten_hash,
+ strwidth,
+ trim_string,
+)
+
+from . import BaseCommand
+
+STATUS_KEYS = [
+ 'state',
+ 'download_location',
+ 'tracker_host',
+ 'tracker_status',
+ 'next_announce',
+ 'name',
+ 'total_size',
+ 'progress',
+ 'num_seeds',
+ 'total_seeds',
+ 'num_peers',
+ 'total_peers',
+ 'eta',
+ 'download_payload_rate',
+ 'upload_payload_rate',
+ 'ratio',
+ 'distributed_copies',
+ 'num_pieces',
+ 'piece_length',
+ 'total_done',
+ 'files',
+ 'file_priorities',
+ 'file_progress',
+ 'peers',
+ 'is_seed',
+ 'is_finished',
+ 'active_time',
+ 'seeding_time',
+ 'time_since_transfer',
+ 'last_seen_complete',
+ 'seed_rank',
+ 'all_time_download',
+ 'total_uploaded',
+ 'total_payload_download',
+ 'total_payload_upload',
+ 'time_added',
+ 'label',
+]
+
+# Add filter specific state to torrent states
+STATES = ['Active'] + TORRENT_STATE
+
+
+class Command(BaseCommand):
+ """Show information about the torrents"""
+
+ sort_help = 'sort items. Possible keys: ' + ', '.join(STATUS_KEYS)
+
+ epilog = """
+ You can give the first few characters of a torrent-id to identify the torrent.
+
+ Tab Completion in interactive mode (info *pattern*<tab>):\n
+ | First press of <tab> will output up to 15 matches;
+ | hitting <tab> a second time, will print 15 more matches;
+ | and a third press will print all remaining matches.
+ | (To modify behaviour of third <tab>, set `third_tab_lists_all` to False)
+"""
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '-v',
+ '--verbose',
+ action='store_true',
+ default=False,
+ dest='verbose',
+ help=_('Show more information per torrent.'),
+ )
+ parser.add_argument(
+ '-d',
+ '--detailed',
+ action='store_true',
+ default=False,
+ dest='detailed',
+ help=_('Show more detailed information including files and peers.'),
+ )
+ parser.add_argument(
+ '-s',
+ '--state',
+ action='store',
+ dest='state',
+ help=_('Show torrents with state STATE: %s.' % (', '.join(STATES))),
+ )
+ parser.add_argument(
+ '--sort',
+ action='store',
+ type=str,
+ default='',
+ dest='sort',
+ help=self.sort_help,
+ )
+ parser.add_argument(
+ '--sort-reverse',
+ action='store',
+ type=str,
+ default='',
+ dest='sort_rev',
+ help=_('Same as --sort but items are in reverse order.'),
+ )
+ parser.add_argument(
+ 'torrent_ids',
+ metavar='<torrent-id>',
+ nargs='*',
+ help=_('One or more torrent ids. If none is given, list all'),
+ )
+
+ def add_subparser(self, subparsers):
+ parser = subparsers.add_parser(
+ self.name,
+ prog=self.name,
+ help=self.__doc__,
+ description=self.__doc__,
+ epilog=self.epilog,
+ )
+ self.add_arguments(parser)
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+ # Compile a list of torrent_ids to request the status of
+ torrent_ids = []
+
+ if options.torrent_ids:
+ for t_id in options.torrent_ids:
+ torrent_ids.extend(self.console.match_torrent(t_id))
+ else:
+ torrent_ids.extend(self.console.match_torrent(''))
+
+ def on_torrents_status(status):
+ # Print out the information for each torrent
+ sort_key = options.sort
+ sort_reverse = False
+ if not sort_key:
+ sort_key = options.sort_rev
+ sort_reverse = True
+ if not sort_key:
+ sort_key = 'name'
+ sort_reverse = False
+ if sort_key not in STATUS_KEYS:
+ self.console.write('')
+ self.console.write(
+ '{!error!}Unknown sort key: ' + sort_key + ', will sort on name'
+ )
+ sort_key = 'name'
+ sort_reverse = False
+ for key, value in sorted(
+ status.items(),
+ key=lambda x: x[1].get(sort_key),
+ reverse=sort_reverse,
+ ):
+ self.show_info(key, status[key], options.verbose, options.detailed)
+
+ def on_torrents_status_fail(reason):
+ self.console.write('{!error!}Error getting torrent info: %s' % reason)
+
+ status_dict = {'id': torrent_ids}
+
+ if options.state:
+ options.state = options.state.capitalize()
+ if options.state in STATES:
+ status_dict.state = options.state
+ else:
+ self.console.write('Invalid state: %s' % options.state)
+ self.console.write('Possible values are: %s.' % (', '.join(STATES)))
+ return
+
+ d = client.core.get_torrents_status(status_dict, STATUS_KEYS)
+ d.addCallback(on_torrents_status)
+ d.addErrback(on_torrents_status_fail)
+ return d
+
+ def show_file_info(self, torrent_id, status):
+ spaces_per_level = 2
+
+ if hasattr(self.console, 'screen'):
+ cols = self.console.screen.cols
+ else:
+ cols = 80
+
+ prevpath = []
+ for index, torrent_file in enumerate(status['files']):
+ filename = torrent_file['path'].split(dirsep)[-1]
+ filepath = torrent_file['path'].split(dirsep)[:-1]
+
+ for depth, subdir in enumerate(filepath):
+ indent = ' ' * depth * spaces_per_level
+ if depth >= len(prevpath):
+ self.console.write(f'{indent}{{!cyan!}}{subdir}')
+ elif subdir != prevpath[depth]:
+ self.console.write(f'{indent}{{!cyan!}}{subdir}')
+
+ depth = len(filepath)
+
+ indent = ' ' * depth * spaces_per_level
+
+ col_filename = indent + filename
+ col_size = ' ({!cyan!}%s{!input!})' % fsize(torrent_file['size'])
+ col_progress = ' {!input!}%.2f%%' % (status['file_progress'][index] * 100)
+
+ col_priority = ' {!info!}Priority: '
+
+ file_priority = FILE_PRIORITY[status['file_priorities'][index]]
+
+ if status['file_progress'][index] != 1.0:
+ if file_priority == 'Skip':
+ col_priority += '{!error!}'
+ else:
+ col_priority += '{!success!}'
+ else:
+ col_priority += '{!input!}'
+ col_priority += file_priority
+
+ def tlen(string):
+ return strwidth(remove_formatting(string))
+
+ col_all_info = col_size + col_progress + col_priority
+ # Check how much space we've got left after writing all the info
+ space_left = cols - tlen(col_all_info)
+ # And how much we will potentially have with the longest possible column
+ maxlen_space_left = cols - tlen(' (1000.0 MiB) 100.00% Priority: Normal')
+ if maxlen_space_left > tlen(col_filename) + 1:
+ # If there is enough space, pad it all nicely
+ col_all_info = ''
+ col_all_info += ' ('
+ spaces_to_add = tlen(' (1000.0 MiB)') - tlen(col_size)
+ col_all_info += ' ' * spaces_to_add
+ col_all_info += col_size[2:]
+ spaces_to_add = tlen(' 100.00%') - tlen(col_progress)
+ col_all_info += ' ' * spaces_to_add
+ col_all_info += col_progress
+ spaces_to_add = tlen(' Priority: Normal') - tlen(col_priority)
+ col_all_info += col_priority
+ col_all_info += ' ' * spaces_to_add
+ # And remember to put it to the left!
+ col_filename = pad_string(
+ col_filename, maxlen_space_left - 2, side='right'
+ )
+ elif space_left > tlen(col_filename) + 1:
+ # If there is enough space, put the info to the right
+ col_filename = pad_string(col_filename, space_left - 2, side='right')
+ else:
+ # And if there is not, shorten the name
+ col_filename = trim_string(col_filename, space_left, True)
+ self.console.write(col_filename + col_all_info)
+
+ prevpath = filepath
+
+ def show_peer_info(self, torrent_id, status):
+ if len(status['peers']) == 0:
+ self.console.write(' None')
+ else:
+ s = ''
+ for peer in status['peers']:
+ if peer['seed']:
+ s += '%sSeed\t{!input!}' % colors.state_color['Seeding']
+ else:
+ s += '%sPeer\t{!input!}' % colors.state_color['Downloading']
+
+ s += peer['country'] + '\t'
+
+ if peer['ip'].count(':') == 1:
+ # IPv4
+ s += peer['ip']
+ else:
+ # IPv6
+ s += '[{}]:{}'.format(
+ ':'.join(peer['ip'].split(':')[:-1]),
+ peer['ip'].split(':')[-1],
+ )
+
+ c = peer['client']
+ s += '\t' + c
+
+ if len(c) < 16:
+ s += '\t\t'
+ else:
+ s += '\t'
+ s += '{}{}\t{}{}'.format(
+ colors.state_color['Seeding'],
+ fspeed(peer['up_speed']),
+ colors.state_color['Downloading'],
+ fspeed(peer['down_speed']),
+ )
+ s += '\n'
+
+ self.console.write(s[:-1])
+
+ def show_info(self, torrent_id, status, verbose=False, detailed=False):
+ """
+ Writes out the torrents information to the screen.
+
+ Format depends on switches given.
+ """
+ self.console.set_batch_write(True)
+
+ if hasattr(self.console, 'screen'):
+ cols = self.console.screen.cols
+ else:
+ cols = 80
+
+ sep = ' '
+
+ if verbose or detailed:
+ self.console.write('{!info!}Name: {!input!}%s' % (status['name']))
+ self.console.write('{!info!}ID: {!input!}%s' % (torrent_id))
+ s = '{{!info!}}State: {}{}'.format(
+ colors.state_color[status['state']],
+ status['state'],
+ )
+ # Only show speed if active
+ if status['state'] in ('Seeding', 'Downloading'):
+ if status['state'] != 'Seeding':
+ s += sep
+ s += '{!info!}Down Speed: {!input!}%s' % fspeed(
+ status['download_payload_rate'], shortform=True
+ )
+ s += sep
+ s += '{!info!}Up Speed: {!input!}%s' % fspeed(
+ status['upload_payload_rate'], shortform=True
+ )
+ self.console.write(s)
+
+ if status['state'] in ('Seeding', 'Downloading', 'Queued'):
+ s = '{{!info!}}Seeds: {{!input!}}{} ({})'.format(
+ status['num_seeds'],
+ status['total_seeds'],
+ )
+ s += sep
+ s += '{{!info!}}Peers: {{!input!}}{} ({})'.format(
+ status['num_peers'],
+ status['total_peers'],
+ )
+ s += sep
+ s += (
+ '{!info!}Availability: {!input!}%.2f' % status['distributed_copies']
+ )
+ s += sep
+ s += '{!info!}Seed Rank: {!input!}%s' % f_seedrank_dash(
+ status['seed_rank'], status['seeding_time']
+ )
+ self.console.write(s)
+
+ total_done = fsize(status['total_done'], shortform=True)
+ total_size = fsize(status['total_size'], shortform=True)
+ if total_done == total_size:
+ s = '{!info!}Size: {!input!}%s' % (total_size)
+ else:
+ s = f'{{!info!}}Size: {{!input!}}{total_done}/{total_size}'
+ s += sep
+ s += '{!info!}Downloaded: {!input!}%s' % fsize(
+ status['all_time_download'], shortform=True
+ )
+ s += sep
+ s += '{!info!}Uploaded: {!input!}%s' % fsize(
+ status['total_uploaded'], shortform=True
+ )
+ s += sep
+ s += '{!info!}Share Ratio: {!input!}%.2f' % status['ratio']
+ self.console.write(s)
+
+ s = '{!info!}ETA: {!input!}%s' % format_time(status['eta'])
+ s += sep
+ s += '{!info!}Seeding: {!input!}%s' % format_time(status['seeding_time'])
+ s += sep
+ s += '{!info!}Active: {!input!}%s' % format_time(status['active_time'])
+ self.console.write(s)
+
+ s = '{!info!}Last Transfer: {!input!}%s' % format_time(
+ status['time_since_transfer']
+ )
+ s += sep
+ s += '{!info!}Complete Seen: {!input!}%s' % format_date_never(
+ status['last_seen_complete']
+ )
+ self.console.write(s)
+
+ s = '{!info!}Tracker: {!input!}%s' % status['tracker_host']
+ self.console.write(s)
+
+ self.console.write(
+ '{!info!}Tracker status: {!input!}%s' % status['tracker_status']
+ )
+
+ if not status['is_finished']:
+ pbar = f_progressbar(
+ status['progress'], cols - (13 + len('%.2f%%' % status['progress']))
+ )
+ s = '{{!info!}}Progress: {{!input!}}{:.2f}% {}'.format(
+ status['progress'], pbar
+ )
+ self.console.write(s)
+
+ s = '{!info!}Download Folder: {!input!}%s' % status['download_location']
+ self.console.write(s)
+
+ if 'label' in status:
+ s = '{!info!}Label: {!input!}%s' % status['label']
+ self.console.write(s)
+
+ if detailed:
+ self.console.write('\n{!info!}Files in torrent')
+ self.show_file_info(torrent_id, status)
+ self.console.write('{!info!}Connected peers')
+ self.show_peer_info(torrent_id, status)
+ else:
+ up_color = colors.state_color['Seeding']
+ down_color = colors.state_color['Downloading']
+
+ s = '{}{}'.format(
+ colors.state_color[status['state']],
+ '[' + status['state'][0] + ']',
+ )
+
+ s += ' {!info!}' + format_progress(status['progress']).rjust(6, ' ')
+ s += ' {!input!}%s' % (status['name'])
+
+ # Shorten the ID if it's necessary. Pretty hacky
+ # XXX: should make a nice function for it that can partition and shorten stuff
+ space_left = cols - strwidth('[S] 99.99% ' + status['name'])
+
+ if self.console.interactive and space_left >= len(sep + torrent_id):
+ # Not enough line space so shorten the hash (for interactive mode).
+ torrent_id = shorten_hash(torrent_id, space_left)
+ s += sep
+ s += '{!cyan!}%s' % torrent_id
+ self.console.write(s)
+
+ dl_info = '{!info!}DL: {!input!}'
+ dl_info += '%s' % ftotal_sized(
+ status['all_time_download'], status['total_payload_download']
+ )
+
+ if status['download_payload_rate'] > 0:
+ dl_info += ' @ {}{}'.format(
+ down_color,
+ fspeed(status['download_payload_rate'], shortform=True),
+ )
+
+ ul_info = ' {!info!}UL: {!input!}'
+ ul_info += '%s' % ftotal_sized(
+ status['total_uploaded'], status['total_payload_upload']
+ )
+ if status['upload_payload_rate'] > 0:
+ ul_info += ' @ {}{}'.format(
+ up_color,
+ fspeed(status['upload_payload_rate'], shortform=True),
+ )
+
+ eta = ' {!info!}ETA: {!magenta!}%s' % format_time(status['eta'])
+
+ self.console.write(' ' + dl_info + ul_info + eta + '\n')
+
+ self.console.set_batch_write(False)
+
+ def complete(self, line):
+ # We use the ConsoleUI torrent tab complete method
+ return component.get('ConsoleUI').tab_complete_torrent(line)
diff --git a/deluge/ui/console/cmdline/commands/manage.py b/deluge/ui/console/cmdline/commands/manage.py
new file mode 100644
index 0000000..e5ea9b2
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/manage.py
@@ -0,0 +1,114 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from twisted.internet import defer
+
+import deluge.component as component
+from deluge.ui.client import client
+from deluge.ui.console.utils.common import TORRENT_OPTIONS
+
+from . import BaseCommand
+
+log = logging.getLogger(__name__)
+
+
+class Command(BaseCommand):
+ """Show and manage per-torrent options"""
+
+ usage = _('Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]')
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'torrent',
+ metavar='<torrent>',
+ help=_('an expression matched against torrent ids and torrent names'),
+ )
+ set_group = parser.add_argument_group('setting a value')
+ set_group.add_argument(
+ '-s',
+ '--set',
+ action='store',
+ metavar='<key>',
+ help=_('set value for this key'),
+ )
+ set_group.add_argument(
+ 'values', metavar='<value>', nargs='+', help=_('Value to set')
+ )
+ get_group = parser.add_argument_group('getting values')
+ get_group.add_argument(
+ 'keys',
+ metavar='<keys>',
+ nargs='*',
+ help=_('one or more keys separated by space'),
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+ if options.set:
+ return self._set_option(options)
+ else:
+ return self._get_option(options)
+
+ def _get_option(self, options):
+ def on_torrents_status(status):
+ for torrentid, data in status.items():
+ self.console.write('')
+ if 'name' in data:
+ self.console.write('{!info!}Name: {!input!}%s' % data.get('name'))
+ self.console.write('{!info!}ID: {!input!}%s' % torrentid)
+ for k, v in data.items():
+ if k != 'name':
+ self.console.write(f'{{!info!}}{k}: {{!input!}}{v}')
+
+ def on_torrents_status_fail(reason):
+ self.console.write('{!error!}Failed to get torrent data.')
+
+ torrent_ids = self.console.match_torrent(options.torrent)
+
+ request_options = []
+ for opt in options.values:
+ if opt not in TORRENT_OPTIONS:
+ self.console.write('{!error!}Unknown torrent option: %s' % opt)
+ return
+ request_options.append(opt)
+ if not request_options:
+ request_options = list(TORRENT_OPTIONS)
+ request_options.append('name')
+
+ d = client.core.get_torrents_status({'id': torrent_ids}, request_options)
+ d.addCallbacks(on_torrents_status, on_torrents_status_fail)
+ return d
+
+ def _set_option(self, options):
+ deferred = defer.Deferred()
+ key = options.set
+ val = ' '.join(options.values)
+ torrent_ids = self.console.match_torrent(options.torrent)
+
+ if key not in TORRENT_OPTIONS:
+ self.console.write('{!error!}Invalid key: %s' % key)
+ return
+
+ val = TORRENT_OPTIONS[key](val)
+
+ def on_set_config(result):
+ self.console.write('{!success!}Torrent option successfully updated.')
+ deferred.callback(True)
+
+ self.console.write(f'Setting {key} to {val} for torrents {torrent_ids}..')
+ client.core.set_torrent_options(torrent_ids, {key: val}).addCallback(
+ on_set_config
+ )
+ return deferred
+
+ def complete(self, line):
+ # We use the ConsoleUI torrent tab complete method
+ return component.get('ConsoleUI').tab_complete_torrent(line)
diff --git a/deluge/ui/console/cmdline/commands/move.py b/deluge/ui/console/cmdline/commands/move.py
new file mode 100644
index 0000000..67ee0af
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/move.py
@@ -0,0 +1,94 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os.path
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+log = logging.getLogger(__name__)
+
+
+class Command(BaseCommand):
+ """Move torrents' storage location"""
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'torrent_ids',
+ metavar='<torrent-id>',
+ nargs='+',
+ help=_('One or more torrent ids'),
+ )
+ parser.add_argument(
+ 'path', metavar='<path>', help=_('The path to move the torrents to')
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ if os.path.exists(options.path) and not os.path.isdir(options.path):
+ self.console.write(
+ '{!error!}Cannot Move Download Folder: %s exists and is not a directory'
+ % options.path
+ )
+ return
+
+ ids = []
+ names = []
+ for t_id in options.torrent_ids:
+ tid = self.console.match_torrent(t_id)
+ ids.extend(tid)
+ names.append(self.console.get_torrent_name(tid))
+
+ def on_move(res):
+ msg = 'Moved "{}" to {}'.format(', '.join(names), options.path)
+ self.console.write(msg)
+ log.info(msg)
+
+ d = client.core.move_storage(ids, options.path)
+ d.addCallback(on_move)
+ return d
+
+ def complete(self, line):
+ line = os.path.abspath(os.path.expanduser(line))
+ ret = []
+ if os.path.exists(line):
+ # This is a correct path, check to see if it's a directory
+ if os.path.isdir(line):
+ # Directory, so we need to show contents of directory
+ # ret.extend(os.listdir(line))
+ for f in os.listdir(line):
+ # Skip hidden
+ if f.startswith('.'):
+ continue
+ f = os.path.join(line, f)
+ if os.path.isdir(f):
+ f += '/'
+ ret.append(f)
+ else:
+ # This is a file, but we could be looking for another file that
+ # shares a common prefix.
+ for f in os.listdir(os.path.dirname(line)):
+ if f.startswith(os.path.split(line)[1]):
+ ret.append(os.path.join(os.path.dirname(line), f))
+ else:
+ # This path does not exist, so lets do a listdir on it's parent
+ # and find any matches.
+ ret = []
+ if os.path.isdir(os.path.dirname(line)):
+ for f in os.listdir(os.path.dirname(line)):
+ if f.startswith(os.path.split(line)[1]):
+ p = os.path.join(os.path.dirname(line), f)
+
+ if os.path.isdir(p):
+ p += '/'
+ ret.append(p)
+ return ret
diff --git a/deluge/ui/console/cmdline/commands/pause.py b/deluge/ui/console/cmdline/commands/pause.py
new file mode 100644
index 0000000..1334242
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/pause.py
@@ -0,0 +1,45 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Pause torrents"""
+
+ usage = 'pause [ * | <torrent-id> [<torrent-id> ...] ]'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'torrent_ids',
+ metavar='<torrent-id>',
+ nargs='+',
+ help=_('One or more torrent ids. Use "*" to pause all torrents'),
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ if options.torrent_ids[0] == '*':
+ client.core.pause_session()
+ return
+
+ torrent_ids = []
+ for arg in options.torrent_ids:
+ torrent_ids.extend(self.console.match_torrent(arg))
+
+ if torrent_ids:
+ return client.core.pause_torrent(torrent_ids)
+
+ def complete(self, line):
+ # We use the ConsoleUI torrent tab complete method
+ return component.get('ConsoleUI').tab_complete_torrent(line)
diff --git a/deluge/ui/console/cmdline/commands/plugin.py b/deluge/ui/console/cmdline/commands/plugin.py
new file mode 100644
index 0000000..c424cb2
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/plugin.py
@@ -0,0 +1,140 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+import deluge.configmanager
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Manage plugins"""
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '-l',
+ '--list',
+ action='store_true',
+ default=False,
+ dest='list',
+ help=_('Lists available plugins'),
+ )
+ parser.add_argument(
+ '-s',
+ '--show',
+ action='store_true',
+ default=False,
+ dest='show',
+ help=_('Shows enabled plugins'),
+ )
+ parser.add_argument(
+ '-e', '--enable', dest='enable', nargs='+', help=_('Enables a plugin')
+ )
+ parser.add_argument(
+ '-d', '--disable', dest='disable', nargs='+', help=_('Disables a plugin')
+ )
+ parser.add_argument(
+ '-r',
+ '--reload',
+ action='store_true',
+ default=False,
+ dest='reload',
+ help=_('Reload list of available plugins'),
+ )
+ parser.add_argument(
+ '-i', '--install', help=_('Install a plugin from an .egg file')
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ if options.reload:
+ client.core.pluginmanager.rescan_plugins()
+ self.console.write('{!green!}Plugin list successfully reloaded')
+ return
+
+ elif options.list:
+
+ def on_available_plugins(result):
+ self.console.write('{!info!}Available Plugins:')
+ for p in result:
+ self.console.write('{!input!} ' + p)
+
+ return client.core.get_available_plugins().addCallback(on_available_plugins)
+
+ elif options.show:
+
+ def on_enabled_plugins(result):
+ self.console.write('{!info!}Enabled Plugins:')
+ for p in result:
+ self.console.write('{!input!} ' + p)
+
+ return client.core.get_enabled_plugins().addCallback(on_enabled_plugins)
+
+ elif options.enable:
+
+ def on_available_plugins(result):
+ plugins = {}
+ for p in result:
+ plugins[p.lower()] = p
+ for arg in options.enable:
+ if arg.lower() in plugins:
+ client.core.enable_plugin(plugins[arg.lower()])
+
+ return client.core.get_available_plugins().addCallback(on_available_plugins)
+
+ elif options.disable:
+
+ def on_enabled_plugins(result):
+ plugins = {}
+ for p in result:
+ plugins[p.lower()] = p
+ for arg in options.disable:
+ if arg.lower() in plugins:
+ client.core.disable_plugin(plugins[arg.lower()])
+
+ return client.core.get_enabled_plugins().addCallback(on_enabled_plugins)
+
+ elif options.install:
+ import os.path
+ import shutil
+ from base64 import b64encode
+
+ filepath = options.install
+
+ if not os.path.exists(filepath):
+ self.console.write('{!error!}Invalid path: %s' % filepath)
+ return
+
+ config_dir = deluge.configmanager.get_config_dir()
+ filename = os.path.split(filepath)[1]
+ shutil.copyfile(filepath, os.path.join(config_dir, 'plugins', filename))
+
+ client.core.rescan_plugins()
+
+ if not client.is_localhost():
+ # We need to send this plugin to the daemon
+ with open(filepath, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ try:
+ client.core.upload_plugin(filename, filedump)
+ client.core.rescan_plugins()
+ except Exception:
+ self.console.write(
+ '{!error!}An error occurred, plugin was not installed'
+ )
+
+ self.console.write(
+ '{!green!}Plugin was successfully installed: %s' % filename
+ )
+
+ def complete(self, line):
+ return component.get('ConsoleUI').tab_complete_path(
+ line, ext='.egg', sort='name', dirs_first=-1
+ )
diff --git a/deluge/ui/console/cmdline/commands/quit.py b/deluge/ui/console/cmdline/commands/quit.py
new file mode 100644
index 0000000..4459dfc
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/quit.py
@@ -0,0 +1,22 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Exit the client"""
+
+ aliases = ['exit']
+ interactive_only = True
+
+ def handle(self, options):
+ component.get('ConsoleUI').quit()
diff --git a/deluge/ui/console/cmdline/commands/recheck.py b/deluge/ui/console/cmdline/commands/recheck.py
new file mode 100644
index 0000000..046cb0b
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/recheck.py
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Forces a recheck of the torrent data"""
+
+ usage = 'recheck [ * | <torrent-id> [<torrent-id> ...] ]'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'torrent_ids',
+ metavar='<torrent-id>',
+ nargs='+',
+ help=_('One or more torrent ids'),
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ if options.torrent_ids[0] == '*':
+ client.core.force_recheck(self.console.match_torrent(''))
+ return
+
+ torrent_ids = []
+ for arg in options.torrent_ids:
+ torrent_ids.extend(self.console.match_torrent(arg))
+
+ if torrent_ids:
+ return client.core.force_recheck(torrent_ids)
+
+ def complete(self, line):
+ # We use the ConsoleUI torrent tab complete method
+ return component.get('ConsoleUI').tab_complete_torrent(line)
diff --git a/deluge/ui/console/cmdline/commands/resume.py b/deluge/ui/console/cmdline/commands/resume.py
new file mode 100644
index 0000000..27b8528
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/resume.py
@@ -0,0 +1,45 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Resume torrents"""
+
+ usage = _('Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]')
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'torrent_ids',
+ metavar='<torrent-id>',
+ nargs='+',
+ help=_('One or more torrent ids. Use "*" to resume all torrents'),
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+
+ if options.torrent_ids[0] == '*':
+ client.core.resume_session()
+ return
+
+ torrent_ids = []
+ for t_id in options.torrent_ids:
+ torrent_ids.extend(self.console.match_torrent(t_id))
+
+ if torrent_ids:
+ return client.core.resume_torrent(torrent_ids)
+
+ def complete(self, line):
+ # We use the ConsoleUI torrent tab complete method
+ return component.get('ConsoleUI').tab_complete_torrent(line)
diff --git a/deluge/ui/console/cmdline/commands/rm.py b/deluge/ui/console/cmdline/commands/rm.py
new file mode 100644
index 0000000..4a3fd00
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/rm.py
@@ -0,0 +1,82 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+log = logging.getLogger(__name__)
+
+
+class Command(BaseCommand):
+ """Remove a torrent"""
+
+ aliases = ['del']
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--remove_data',
+ action='store_true',
+ default=False,
+ help=_('Also removes the torrent data'),
+ )
+ parser.add_argument(
+ '-c',
+ '--confirm',
+ action='store_true',
+ default=False,
+ help=_('List the matching torrents without removing.'),
+ )
+ parser.add_argument(
+ 'torrent_ids',
+ metavar='<torrent-id>',
+ nargs='+',
+ help=_('One or more torrent ids'),
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+ torrent_ids = self.console.match_torrents(options.torrent_ids)
+
+ if not options.confirm:
+ self.console.write(
+ '{!info!}%d %s %s{!info!}'
+ % (
+ len(torrent_ids),
+ _n('torrent', 'torrents', len(torrent_ids)),
+ _n('match', 'matches', len(torrent_ids)),
+ )
+ )
+ for t_id in torrent_ids:
+ name = self.console.get_torrent_name(t_id)
+ self.console.write('* %-50s (%s)' % (name, t_id))
+ self.console.write(
+ _('Confirm with -c to remove the listed torrents (Count: %d)')
+ % len(torrent_ids)
+ )
+ return
+
+ def on_removed_finished(errors):
+ if errors:
+ self.console.write(
+ 'Error(s) occurred when trying to delete torrent(s).'
+ )
+ for t_id, e_msg in errors:
+ self.console.write(f'Error removing torrent {t_id} : {e_msg}')
+
+ log.info('Removing %d torrents', len(torrent_ids))
+ d = client.core.remove_torrents(torrent_ids, options.remove_data)
+ d.addCallback(on_removed_finished)
+
+ def complete(self, line):
+ # We use the ConsoleUI torrent tab complete method
+ return component.get('ConsoleUI').tab_complete_torrent(line)
diff --git a/deluge/ui/console/cmdline/commands/status.py b/deluge/ui/console/cmdline/commands/status.py
new file mode 100644
index 0000000..05c9796
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/status.py
@@ -0,0 +1,116 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from twisted.internet import defer
+
+import deluge.component as component
+from deluge.common import TORRENT_STATE, fspeed
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+log = logging.getLogger(__name__)
+
+
+class Command(BaseCommand):
+ """Shows various status information from the daemon"""
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '-r',
+ '--raw',
+ action='store_true',
+ default=False,
+ dest='raw',
+ help=_(
+ 'Raw values for upload/download rates (without KiB/s suffix)'
+ '(useful for scripts that want to do their own parsing)'
+ ),
+ )
+ parser.add_argument(
+ '-n',
+ '--no-torrents',
+ action='store_false',
+ default=True,
+ dest='show_torrents',
+ help=_('Do not show torrent status (Improves command speed)'),
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+ self.status = None
+ self.torrents = 1 if options.show_torrents else 0
+ self.raw = options.raw
+
+ def on_session_status(status):
+ self.status = status
+
+ def on_torrents_status(status):
+ self.torrents = status
+
+ def on_torrents_status_fail(reason):
+ log.warning('Failed to retrieve session status: %s', reason)
+ self.torrents = -2
+
+ deferreds = []
+
+ ds = client.core.get_session_status(
+ [
+ 'peer.num_peers_connected',
+ 'payload_upload_rate',
+ 'payload_download_rate',
+ 'dht.dht_nodes',
+ ]
+ )
+ ds.addCallback(on_session_status)
+ deferreds.append(ds)
+
+ if options.show_torrents:
+ dt = client.core.get_torrents_status({}, ['state'])
+ dt.addCallback(on_torrents_status)
+ dt.addErrback(on_torrents_status_fail)
+ deferreds.append(dt)
+
+ return defer.DeferredList(deferreds).addCallback(self.print_status)
+
+ def print_status(self, *args):
+ self.console.set_batch_write(True)
+ if self.raw:
+ self.console.write(
+ '{!info!}Total upload: %f' % self.status['payload_upload_rate']
+ )
+ self.console.write(
+ '{!info!}Total download: %f' % self.status['payload_download_rate']
+ )
+ else:
+ self.console.write(
+ '{!info!}Total upload: %s' % fspeed(self.status['payload_upload_rate'])
+ )
+ self.console.write(
+ '{!info!}Total download: %s'
+ % fspeed(self.status['payload_download_rate'])
+ )
+ self.console.write('{!info!}DHT Nodes: %i' % self.status['dht.dht_nodes'])
+
+ if isinstance(self.torrents, int):
+ if self.torrents == -2:
+ self.console.write('{!error!}Error getting torrent info')
+ else:
+ self.console.write('{!info!}Total torrents: %i' % len(self.torrents))
+ state_counts = {}
+ for state in TORRENT_STATE:
+ state_counts[state] = 0
+ for t in self.torrents:
+ s = self.torrents[t]
+ state_counts[s['state']] += 1
+ for state in TORRENT_STATE:
+ self.console.write('{!info!} %s: %i' % (state, state_counts[state]))
+
+ self.console.set_batch_write(False)
diff --git a/deluge/ui/console/cmdline/commands/update_tracker.py b/deluge/ui/console/cmdline/commands/update_tracker.py
new file mode 100644
index 0000000..c05569d
--- /dev/null
+++ b/deluge/ui/console/cmdline/commands/update_tracker.py
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from . import BaseCommand
+
+
+class Command(BaseCommand):
+ """Update tracker for torrent(s)"""
+
+ usage = 'update_tracker [ * | <torrent-id> [<torrent-id> ...] ]'
+ aliases = ['reannounce']
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ 'torrent_ids',
+ metavar='<torrent-id>',
+ nargs='+',
+ help='One or more torrent ids. "*" updates all torrents',
+ )
+
+ def handle(self, options):
+ self.console = component.get('ConsoleUI')
+ args = options.torrent_ids
+ if options.torrent_ids[0] == '*':
+ args = ['']
+
+ torrent_ids = []
+ for arg in args:
+ torrent_ids.extend(self.console.match_torrent(arg))
+
+ client.core.force_reannounce(torrent_ids)
+
+ def complete(self, line):
+ # We use the ConsoleUI torrent tab complete method
+ return component.get('ConsoleUI').tab_complete_torrent(line)
diff --git a/deluge/ui/console/console.py b/deluge/ui/console/console.py
new file mode 100644
index 0000000..f91563f
--- /dev/null
+++ b/deluge/ui/console/console.py
@@ -0,0 +1,163 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import fnmatch
+import logging
+import os
+import sys
+
+import deluge.common
+from deluge.argparserbase import ArgParserBase, DelugeTextHelpFormatter
+from deluge.ui.ui import UI
+
+log = logging.getLogger(__name__)
+
+#
+# Note: Cannot import from console.main here because it imports the twisted reactor.
+# Console is imported from console/__init__.py loaded by the script entry points
+# defined in setup.py
+#
+
+
+def load_commands(command_dir):
+ def get_command(name):
+ command = getattr(
+ __import__(
+ 'deluge.ui.console.cmdline.commands.%s' % name, {}, {}, ['Command']
+ ),
+ 'Command',
+ )()
+ command._name = name
+ return command
+
+ try:
+ dir_list = fnmatch.filter(os.listdir(command_dir), '*.py')
+ except OSError:
+ return {}
+
+ commands = []
+ for filename in dir_list:
+ if filename.startswith('_'):
+ continue
+ cmd = get_command(os.path.splitext(filename)[0])
+ for cmd_name in [cmd._name] + cmd.aliases:
+ commands.append((cmd_name, cmd))
+ return dict(commands)
+
+
+class LogStream:
+ out = sys.stdout
+
+ def write(self, data):
+ self.out.write(data)
+
+ def flush(self):
+ self.out.flush()
+
+
+class Console(UI):
+ cmd_description = """Console or command-line user interface"""
+
+ def __init__(self, *args, **kwargs):
+ super().__init__('console', *args, log_stream=LogStream(), **kwargs)
+
+ group = self.parser.add_argument_group(
+ _('Console Options'),
+ _(
+ 'These daemon connect options will be '
+ 'used for commands, or if console ui autoconnect is enabled.'
+ ),
+ )
+ group.add_argument(
+ '-d',
+ '--daemon',
+ metavar='<ip_addr>',
+ dest='daemon_addr',
+ help=_('Deluge daemon IP address to connect to (default 127.0.0.1)'),
+ default='127.0.0.1',
+ )
+ group.add_argument(
+ '-p',
+ '--port',
+ metavar='<port>',
+ dest='daemon_port',
+ type=int,
+ help=_('Deluge daemon port to connect to (default 58846)'),
+ default='58846',
+ )
+ group.add_argument(
+ '-U',
+ '--username',
+ metavar='<user>',
+ dest='daemon_user',
+ help=_('Deluge daemon username to use when connecting'),
+ )
+ group.add_argument(
+ '-P',
+ '--password',
+ metavar='<pass>',
+ dest='daemon_pass',
+ help=_('Deluge daemon password to use when connecting'),
+ )
+ # To properly print help message for the console commands ( e.g. deluge-console info -h),
+ # we add a subparser for each command which will trigger the help/usage when given
+ from deluge.ui.console.parser import ( # import here because (see top)
+ ConsoleCommandParser,
+ )
+
+ self.console_parser = ConsoleCommandParser(
+ parents=[self.parser],
+ add_help=False,
+ prog=self.parser.prog,
+ description='Starts the Deluge console interface',
+ formatter_class=lambda prog: DelugeTextHelpFormatter(
+ prog, max_help_position=33, width=90
+ ),
+ )
+ self.parser.subparser = self.console_parser
+ self.console_parser.base_parser = self.parser
+ subparsers = self.console_parser.add_subparsers(
+ title=_('Console Commands'),
+ help=_('Description'),
+ description=_('The following console commands are available:'),
+ metavar=_('Command'),
+ dest='command',
+ )
+ from deluge.ui.console import UI_PATH # Must import here
+
+ self.console_cmds = load_commands(os.path.join(UI_PATH, 'cmdline', 'commands'))
+ for cmd in sorted(self.console_cmds):
+ self.console_cmds[cmd].add_subparser(subparsers)
+
+ def start(self):
+ if self.ui_args is None:
+ # Started directly by deluge-console script so must find the UI args manually
+ options, remaining = ArgParserBase(common_help=False).parse_known_args()
+ self.ui_args = remaining
+
+ i = self.console_parser.find_subcommand(args=self.ui_args)
+ self.console_parser.subcommand = False
+ self.parser.subcommand = False if i == -1 else True
+
+ super().start(self.console_parser)
+ from deluge.ui.console.main import ConsoleUI # import here because (see top)
+
+ def run(options):
+ try:
+ c = ConsoleUI(self.options, self.console_cmds, self.parser.log_stream)
+ return c.start_ui()
+ except Exception as ex:
+ log.exception(ex)
+ raise
+
+ return deluge.common.run_profiled(
+ run,
+ self.options,
+ output_file=self.options.profile,
+ do_profile=self.options.profile,
+ )
diff --git a/deluge/ui/console/eventlog.py b/deluge/ui/console/eventlog.py
new file mode 100644
index 0000000..c1ee6ab
--- /dev/null
+++ b/deluge/ui/console/eventlog.py
@@ -0,0 +1,125 @@
+import time
+
+import deluge.component as component
+from deluge.decorators import maybe_coroutine
+from deluge.ui.client import client
+from deluge.ui.console.utils import colors
+
+
+class EventLog(component.Component):
+ """
+ Prints out certain events as they are received from the core.
+ """
+
+ def __init__(self):
+ component.Component.__init__(self, 'EventLog')
+ self.console = component.get('ConsoleUI')
+ self.prefix = '{!event!}* [%H:%M:%S] '
+ self.date_change_format = 'On {!yellow!}%a, %d %b %Y{!input!} %Z:'
+
+ event_callbacks = {
+ 'TorrentAddedEvent': self.on_torrent_added,
+ 'PreTorrentRemovedEvent': self.on_torrent_removed,
+ 'TorrentStateChangedEvent': self.on_torrent_state_changed,
+ 'TorrentFinishedEvent': self.on_torrent_finished,
+ 'NewVersionAvailableEvent': self.on_new_version_available,
+ 'SessionPausedEvent': self.on_session_paused,
+ 'SessionResumedEvent': self.on_session_resumed,
+ 'ConfigValueChangedEvent': self.on_config_value_changed,
+ 'PluginEnabledEvent': self.on_plugin_enabled,
+ 'PluginDisabledEvent': self.on_plugin_disabled,
+ }
+
+ for event, callback in event_callbacks.items():
+ client.register_event_handler(event, callback)
+
+ self.previous_time = time.localtime(0)
+
+ @maybe_coroutine
+ async def on_torrent_added(self, torrent_id, from_state):
+ if from_state:
+ return
+
+ status = await client.core.get_torrent_status(torrent_id, ['name', 'state'])
+ self.write(
+ '{!green!}Torrent Added: {!info!}%s ({!cyan!}%s{!info!})'
+ % (status['name'], torrent_id)
+ )
+ # Write out what state the added torrent took
+ self.on_torrent_state_changed(torrent_id, status['state'])
+
+ def on_torrent_removed(self, torrent_id):
+ self.write(
+ '{!red!}Torrent Removed: {!info!}%s ({!cyan!}%s{!info!})'
+ % (self.console.get_torrent_name(torrent_id), torrent_id)
+ )
+
+ def on_torrent_state_changed(self, torrent_id, state):
+ # It's probably a new torrent, ignore it
+ if not state:
+ return
+ # Modify the state string color
+ if state in colors.state_color:
+ state = colors.state_color[state] + state
+
+ t_name = self.console.get_torrent_name(torrent_id)
+
+ # Again, it's most likely a new torrent
+ if not t_name:
+ return
+
+ self.write(f'{state}: {{!info!}}{t_name} ({{!cyan!}}{torrent_id}{{!info!}})')
+
+ def on_torrent_finished(self, torrent_id):
+ if component.get('TorrentList').config['ring_bell']:
+ import curses.beep
+
+ curses.beep()
+ self.write(
+ '{!info!}Torrent Finished: %s ({!cyan!}%s{!info!})'
+ % (self.console.get_torrent_name(torrent_id), torrent_id)
+ )
+
+ def on_new_version_available(self, version):
+ self.write('{!input!}New Deluge version available: {!info!}%s' % (version))
+
+ def on_session_paused(self):
+ self.write('{!input!}Session Paused')
+
+ def on_session_resumed(self):
+ self.write('{!green!}Session Resumed')
+
+ def on_config_value_changed(self, key, value):
+ color = '{!white,black,bold!}'
+ try:
+ color = colors.type_color[type(value)]
+ except KeyError:
+ pass
+
+ self.write(f'ConfigValueChanged: {{!input!}}{key}: {color}{value}')
+
+ def write(self, s):
+ current_time = time.localtime()
+
+ date_different = False
+ for field in ['tm_mday', 'tm_mon', 'tm_year']:
+ c = getattr(current_time, field)
+ p = getattr(self.previous_time, field)
+ if c != p:
+ date_different = True
+
+ if date_different:
+ string = time.strftime(self.date_change_format)
+ self.console.write_event(' ')
+ self.console.write_event(string)
+
+ p = time.strftime(self.prefix)
+
+ self.console.write_event(p + s)
+ self.previous_time = current_time
+
+ def on_plugin_enabled(self, name):
+ self.write('PluginEnabled: {!info!}%s' % name)
+
+ def on_plugin_disabled(self, name):
+ self.write('PluginDisabled: {!info!}%s' % name)
diff --git a/deluge/ui/console/main.py b/deluge/ui/console/main.py
new file mode 100644
index 0000000..106169f
--- /dev/null
+++ b/deluge/ui/console/main.py
@@ -0,0 +1,470 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import locale
+import logging
+import os
+import sys
+
+from twisted.internet import defer, error, reactor
+
+import deluge.common
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+from deluge.decorators import maybe_coroutine, overrides
+from deluge.ui.client import client
+from deluge.ui.console.eventlog import EventLog
+from deluge.ui.console.modes.addtorrents import AddTorrents
+from deluge.ui.console.modes.basemode import TermResizeHandler
+from deluge.ui.console.modes.cmdline import CmdLine
+from deluge.ui.console.modes.eventview import EventView
+from deluge.ui.console.modes.preferences import Preferences
+from deluge.ui.console.modes.torrentdetail import TorrentDetail
+from deluge.ui.console.modes.torrentlist.torrentlist import TorrentList
+from deluge.ui.console.utils import colors
+from deluge.ui.console.utils.config import migrate_1_to_2
+from deluge.ui.console.widgets import StatusBars
+from deluge.ui.coreconfig import CoreConfig
+from deluge.ui.sessionproxy import SessionProxy
+
+log = logging.getLogger(__name__)
+
+DEFAULT_CONSOLE_PREFS = {
+ 'ring_bell': False,
+ 'first_run': True,
+ 'language': '',
+ 'torrentview': {
+ 'sort_primary': 'queue',
+ 'sort_secondary': 'name',
+ 'show_sidebar': True,
+ 'sidebar_width': 25,
+ 'separate_complete': True,
+ 'move_selection': True,
+ 'columns': {},
+ },
+ 'addtorrents': {
+ 'show_misc_files': False, # TODO: Showing/hiding this
+ 'show_hidden_folders': False, # TODO: Showing/hiding this
+ 'sort_column': 'date',
+ 'reverse_sort': True,
+ 'last_path': '~',
+ },
+ 'cmdline': {
+ 'ignore_duplicate_lines': False,
+ 'third_tab_lists_all': False,
+ 'torrents_per_tab_press': 15,
+ 'save_command_history': True,
+ },
+}
+
+
+class MockConsoleLog:
+ def write(self, data):
+ pass
+
+ def flush(self):
+ pass
+
+
+class ConsoleUI(component.Component, TermResizeHandler):
+ def __init__(self, options, cmds, log_stream):
+ component.Component.__init__(self, 'ConsoleUI')
+ TermResizeHandler.__init__(self)
+ self.options = options
+ self.log_stream = log_stream
+
+ # keep track of events for the log view
+ self.events = []
+ self.torrents = []
+ self.statusbars = None
+ self.modes = {}
+ self.active_mode = None
+ self.initialized = False
+
+ try:
+ locale.setlocale(locale.LC_ALL, '')
+ self.encoding = locale.getpreferredencoding()
+ except locale.Error:
+ self.encoding = sys.getdefaultencoding()
+
+ log.debug('Using encoding: %s', self.encoding)
+
+ # start up the session proxy
+ self.sessionproxy = SessionProxy()
+
+ client.set_disconnect_callback(self.on_client_disconnect)
+
+ # Set the interactive flag to indicate where we should print the output
+ self.interactive = True
+ self._commands = cmds
+ self.coreconfig = CoreConfig()
+
+ def start_ui(self):
+ """Start the console UI.
+
+ Note: When running console UI reactor.run() will be called which
+ effectively blocks this function making the return value
+ insignificant. However, when running unit tests, the reacor is
+ replaced by a mock object, leaving the return deferred object
+ necessary for the tests to run properly.
+
+ Returns:
+ Deferred: If valid commands are provided, a deferred that fires when
+ all commands are executed. Else None is returned.
+ """
+ if self.options.parsed_cmds:
+ # Non-Interactive mode
+ self.interactive = False
+ if not self._commands:
+ print('No valid console commands found')
+ return
+
+ deferred = self.exec_args(self.options)
+ reactor.run()
+ return deferred
+
+ # Interactive
+
+ # We use the curses.wrapper function to prevent the console from getting
+ # messed up if an uncaught exception is experienced.
+ try:
+ from curses import wrapper
+ except ImportError:
+ wrapper = None
+
+ if deluge.common.windows_check() and not wrapper:
+ print(
+ """\nDeluge-console does not run in interactive mode on Windows. \n
+Please use commands from the command line, e.g.:\n
+deluge-console.exe help
+deluge-console.exe info
+deluge-console.exe "add --help"
+deluge-console.exe "add -p c:\\mytorrents c:\\new.torrent"
+"""
+ )
+
+ # We don't ever want log output to terminal when running in
+ # interactive mode, so insert a dummy here
+ self.log_stream.out = MockConsoleLog()
+
+ # Set Esc key delay to 0 to avoid a very annoying delay
+ # due to curses waiting in case of other key are pressed
+ # after ESC is pressed
+ os.environ.setdefault('ESCDELAY', '0')
+
+ wrapper(self.run)
+
+ @maybe_coroutine
+ async def quit(self):
+ if client.connected():
+ await client.disconnect()
+
+ try:
+ reactor.stop()
+ except error.ReactorNotRunning:
+ pass
+
+ @maybe_coroutine
+ async def exec_args(self, options):
+ """Execute console commands from command line."""
+ from deluge.ui.console.cmdline.command import Commander
+
+ commander = Commander(self._commands)
+ try:
+ if not self.interactive and options.parsed_cmds[0].command == 'connect':
+ await commander.exec_command(options.parsed_cmds.pop(0))
+ else:
+ daemon_options = (
+ options.daemon_addr,
+ options.daemon_port,
+ options.daemon_user,
+ options.daemon_pass,
+ )
+ log.info(
+ 'Connect: host=%s, port=%s, username=%s',
+ *daemon_options[0:3],
+ )
+ await client.connect(*daemon_options)
+ except Exception as reason:
+ print(
+ 'Could not connect to daemon: %s:%s\n %s'
+ % (options.daemon_addr, options.daemon_port, reason)
+ )
+ commander.do_command('quit')
+
+ await self.start_console()
+ # Wait for RPCs in start() to finish before processing commands.
+ await self.started_deferred
+
+ for cmd in options.parsed_cmds:
+ if cmd.command in ('quit', 'exit'):
+ break
+ await commander.exec_command(cmd)
+
+ commander.do_command('quit')
+
+ def run(self, stdscr):
+ """This method is called by the curses.wrapper to start the mainloop and screen.
+
+ Args:
+ stdscr (_curses.curses window): curses screen passed in from curses.wrapper.
+
+ """
+ # We want to do an interactive session, so start up the curses screen and
+ # pass it the function that handles commands
+ colors.init_colors()
+ self.stdscr = stdscr
+ self.config = ConfigManager(
+ 'console.conf', defaults=DEFAULT_CONSOLE_PREFS, file_version=2
+ )
+ self.config.run_converter((0, 1), 2, migrate_1_to_2)
+
+ self.statusbars = StatusBars()
+ from deluge.ui.console.modes.connectionmanager import ConnectionManager
+
+ self.register_mode(ConnectionManager(stdscr, self.encoding), set_mode=True)
+
+ torrentlist = self.register_mode(TorrentList(self.stdscr, self.encoding))
+ self.register_mode(CmdLine(self.stdscr, self.encoding))
+ self.register_mode(EventView(torrentlist, self.stdscr, self.encoding))
+ self.register_mode(
+ TorrentDetail(torrentlist, self.stdscr, self.config, self.encoding)
+ )
+ self.register_mode(
+ Preferences(torrentlist, self.stdscr, self.config, self.encoding)
+ )
+ self.register_mode(
+ AddTorrents(torrentlist, self.stdscr, self.config, self.encoding)
+ )
+
+ self.eventlog = EventLog()
+
+ self.active_mode.topbar = (
+ '{!status!}Deluge ' + deluge.common.get_version() + ' Console'
+ )
+ self.active_mode.bottombar = '{!status!}'
+ self.active_mode.refresh()
+ # Start the twisted mainloop
+ reactor.run()
+
+ @overrides(TermResizeHandler)
+ def on_resize(self, *args):
+ rows, cols = super().on_resize(*args)
+ for mode in self.modes:
+ self.modes[mode].on_resize(rows, cols)
+
+ def register_mode(self, mode, set_mode=False):
+ self.modes[mode.mode_name] = mode
+ if set_mode:
+ self.set_mode(mode.mode_name)
+ return mode
+
+ def set_mode(self, mode_name, refresh=False):
+ log.debug('Setting console mode: %s', mode_name)
+ mode = self.modes.get(mode_name, None)
+ if mode is None:
+ log.error('Non-existent mode requested: %s', mode_name)
+ return
+ self.stdscr.erase()
+
+ if self.active_mode:
+ self.active_mode.pause()
+ d = component.pause([self.active_mode.mode_name])
+
+ def on_mode_paused(result, mode, *args):
+ from deluge.ui.console.widgets.popup import PopupsHandler
+
+ if isinstance(mode, PopupsHandler):
+ if mode.popup is not None:
+ # If popups are not removed, they are still referenced in the memory
+ # which can cause issues as the popup's screen will not be destroyed.
+ # This can lead to the popup border being visible for short periods
+ # while the current modes' screen is repainted.
+ log.error(
+ 'Mode "%s" still has popups available after being paused.'
+ ' Ensure all popups are removed on pause!',
+ mode.popup.title,
+ )
+
+ d.addCallback(on_mode_paused, self.active_mode)
+ reactor.removeReader(self.active_mode)
+
+ self.active_mode = mode
+ self.statusbars.screen = self.active_mode
+
+ # The Screen object is designed to run as a twisted reader so that it
+ # can use twisted's select poll for non-blocking user input.
+ reactor.addReader(self.active_mode)
+ self.stdscr.clear()
+
+ if self.active_mode._component_state == 'Stopped':
+ component.start([self.active_mode.mode_name])
+ else:
+ component.resume([self.active_mode.mode_name])
+
+ mode.resume()
+ if refresh:
+ mode.refresh()
+ return mode
+
+ def switch_mode(self, func, error_smg):
+ def on_stop(arg):
+ if arg and True in arg[0]:
+ func()
+ else:
+ self.messages.append(('Error', error_smg))
+
+ component.stop(['TorrentList']).addCallback(on_stop)
+
+ def is_active_mode(self, mode):
+ return mode == self.active_mode
+
+ @maybe_coroutine
+ async def start_components(self):
+ if not self.interactive:
+ return await component.start(['SessionProxy', 'ConsoleUI', 'CoreConfig'])
+
+ await component.start()
+ component.pause(
+ [
+ 'TorrentList',
+ 'EventView',
+ 'AddTorrents',
+ 'TorrentDetail',
+ 'Preferences',
+ ]
+ )
+
+ @maybe_coroutine
+ async def start_console(self):
+ self.started_deferred = defer.Deferred()
+
+ if self.initialized:
+ await component.stop(['SessionProxy'])
+ await component.start(['SessionProxy'])
+ else:
+ self.initialized = True
+ await self.start_components()
+
+ @maybe_coroutine
+ async def start(self):
+ result = await client.core.get_session_state()
+ # Maintain a list of (torrent_id, name) for use in tab completion
+ self.torrents = []
+ self.events = []
+
+ torrents = await client.core.get_torrents_status({'id': result}, ['name'])
+ for torrent_id, status in torrents.items():
+ self.torrents.append((torrent_id, status['name']))
+
+ self.started_deferred.callback(True)
+
+ # Register event handlers to keep the torrent list up-to-date
+ client.register_event_handler('TorrentAddedEvent', self.on_torrent_added)
+ client.register_event_handler('TorrentRemovedEvent', self.on_torrent_removed)
+
+ @defer.inlineCallbacks
+ def on_torrent_added(self, event, from_state=False):
+ status = yield client.core.get_torrent_status(event, ['name'])
+ self.torrents.append((event, status['name']))
+
+ def on_torrent_removed(self, event):
+ for index, (tid, name) in enumerate(self.torrents):
+ if event == tid:
+ del self.torrents[index]
+
+ def match_torrents(self, strings):
+ return list(
+ {torrent for string in strings for torrent in self.match_torrent(string)}
+ )
+
+ def match_torrent(self, string):
+ """
+ Returns a list of torrent_id matches for the string. It will search both
+ torrent_ids and torrent names, but will only return torrent_ids.
+
+ :param string: str, the string to match on
+
+ :returns: list of matching torrent_ids. Will return an empty list if
+ no matches are found.
+
+ """
+ deluge.common.decode_bytes(string, self.encoding)
+
+ if string == '*' or string == '':
+ return [tid for tid, name in self.torrents]
+
+ match_func = '__eq__'
+ if string.startswith('*'):
+ string = string[1:]
+ match_func = 'endswith'
+ if string.endswith('*'):
+ match_func = '__contains__' if match_func == 'endswith' else 'startswith'
+ string = string[:-1]
+
+ matches = []
+ for tid, name in self.torrents:
+ deluge.common.decode_bytes(name, self.encoding)
+ if getattr(tid, match_func, None)(string) or getattr(
+ name, match_func, None
+ )(string):
+ matches.append(tid)
+ return matches
+
+ def get_torrent_name(self, torrent_id):
+ for tid, name in self.torrents:
+ if torrent_id == tid:
+ return name
+ return None
+
+ def set_batch_write(self, batch):
+ if self.interactive and isinstance(
+ self.active_mode, deluge.ui.console.modes.cmdline.CmdLine
+ ):
+ return self.active_mode.set_batch_write(batch)
+
+ def tab_complete_torrent(self, line):
+ if self.interactive and isinstance(
+ self.active_mode, deluge.ui.console.modes.cmdline.CmdLine
+ ):
+ return self.active_mode.tab_complete_torrent(line)
+
+ def tab_complete_path(
+ self, line, path_type='file', ext='', sort='name', dirs_first=True
+ ):
+ if self.interactive and isinstance(
+ self.active_mode, deluge.ui.console.modes.cmdline.CmdLine
+ ):
+ return self.active_mode.tab_complete_path(
+ line, path_type=path_type, ext=ext, sort=sort, dirs_first=dirs_first
+ )
+
+ def on_client_disconnect(self):
+ component.stop()
+
+ def write(self, s):
+ if self.interactive:
+ if isinstance(self.active_mode, deluge.ui.console.modes.cmdline.CmdLine):
+ self.active_mode.write(s)
+ else:
+ component.get('CmdLine').add_line(s, False)
+ self.events.append(s)
+ else:
+ print(colors.strip_colors(s))
+
+ def write_event(self, s):
+ if self.interactive:
+ if isinstance(self.active_mode, deluge.ui.console.modes.cmdline.CmdLine):
+ self.events.append(s)
+ self.active_mode.write(s)
+ else:
+ component.get('CmdLine').add_line(s, False)
+ self.events.append(s)
+ else:
+ print(colors.strip_colors(s))
diff --git a/deluge/ui/console/modes/__init__.py b/deluge/ui/console/modes/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/deluge/ui/console/modes/__init__.py
diff --git a/deluge/ui/console/modes/add_util.py b/deluge/ui/console/modes/add_util.py
new file mode 100644
index 0000000..9d29a1f
--- /dev/null
+++ b/deluge/ui/console/modes/add_util.py
@@ -0,0 +1,92 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import glob
+import logging
+import os
+from base64 import b64encode
+
+import deluge.common
+from deluge.ui.client import client
+from deluge.ui.common import TorrentInfo
+
+log = logging.getLogger(__name__)
+
+
+def _bracket_fixup(path):
+ if path.find('[') == -1 and path.find(']') == -1:
+ return path
+ sentinal = 256
+ while path.find(chr(sentinal)) != -1:
+ sentinal += 1
+ if sentinal > 65535:
+ log.error(
+ 'Cannot fix brackets in path, path contains all possible sentinal characters'
+ )
+ return path
+ newpath = path.replace(']', chr(sentinal))
+ newpath = newpath.replace('[', '[[]')
+ newpath = newpath.replace(chr(sentinal), '[]]')
+ return newpath
+
+
+def add_torrent(t_file, options, success_cb, fail_cb, ress):
+ t_options = {}
+ if options['path']:
+ t_options['download_location'] = os.path.expanduser(options['path'])
+ t_options['add_paused'] = options['add_paused']
+
+ is_url = (options['path_type'] != 1) and (
+ deluge.common.is_url(t_file) or options['path_type'] == 2
+ )
+ is_magnet = (
+ not (is_url) and (options['path_type'] != 1) and deluge.common.is_magnet(t_file)
+ )
+
+ if is_url or is_magnet:
+ files = [t_file]
+ else:
+ files = glob.glob(_bracket_fixup(t_file))
+ num_files = len(files)
+ ress['total'] = num_files
+
+ if num_files <= 0:
+ fail_cb('Does not exist', t_file, ress)
+
+ for f in files:
+ if is_url:
+ client.core.add_torrent_url(f, t_options).addCallback(
+ success_cb, f, ress
+ ).addErrback(fail_cb, f, ress)
+ elif is_magnet:
+ client.core.add_torrent_magnet(f, t_options).addCallback(
+ success_cb, f, ress
+ ).addErrback(fail_cb, f, ress)
+ else:
+ if not os.path.exists(f):
+ fail_cb('Does not exist', f, ress)
+ continue
+ if not os.path.isfile(f):
+ fail_cb('Is a directory', f, ress)
+ continue
+
+ try:
+ TorrentInfo(f)
+ except Exception as ex:
+ fail_cb(ex.message, f, ress)
+ continue
+
+ filename = os.path.split(f)[-1]
+ with open(f, 'rb') as _file:
+ filedump = b64encode(_file.read())
+
+ client.core.add_torrent_file_async(
+ filename, filedump, t_options
+ ).addCallback(success_cb, f, ress).addErrback(fail_cb, f, ress)
diff --git a/deluge/ui/console/modes/addtorrents.py b/deluge/ui/console/modes/addtorrents.py
new file mode 100644
index 0000000..217b63d
--- /dev/null
+++ b/deluge/ui/console/modes/addtorrents.py
@@ -0,0 +1,536 @@
+#
+# Copyright (C) 2012 Arek Stefański <asmageddon@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+from base64 import b64encode
+
+import deluge.common
+import deluge.component as component
+from deluge.decorators import overrides
+from deluge.ui.client import client
+from deluge.ui.console.modes.basemode import BaseMode
+from deluge.ui.console.modes.torrentlist.add_torrents_popup import report_add_status
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.utils import format_utils
+from deluge.ui.console.widgets.popup import InputPopup, MessagePopup
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+# Big help string that gets displayed when the user hits 'h'
+HELP_STR = """\
+This screen allows you to browse and add torrent files located on your \
+hard disk. Currently selected file is highlighted with a white background.
+You can change the selected file using the up/down arrows or the \
+PgUp/PgDown keys. Home and End keys go to the first and last file \
+in current directory respectively.
+
+Select files with the 'm' key. Use 'M' for multi-selection. Press \
+enter key to add them to session.
+
+{!info!}'h'{!normal!} - Show this help
+
+{!info!}'<'{!normal!} and {!info!}'>'{!normal!} - Change sort column and/or order
+
+{!info!}'m'{!normal!} - Mark or unmark currently highlighted file
+{!info!}'M'{!normal!} - Mark all files between current file and last selection.
+{!info!}'c'{!normal!} - Clear selection.
+
+{!info!}Left Arrow{!normal!} - Go up in directory hierarchy.
+{!info!}Right Arrow{!normal!} - Enter currently highlighted folder.
+
+{!info!}Enter{!normal!} - Enter currently highlighted folder or add torrents \
+if a file is highlighted
+
+{!info!}'q'{!normal!} - Go back to torrent overview
+"""
+
+
+class AddTorrents(BaseMode):
+ def __init__(self, parent_mode, stdscr, console_config, encoding=None):
+ self.console_config = console_config
+ self.parent_mode = parent_mode
+ self.popup = None
+ self.view_offset = 0
+ self.cursel = 0
+ self.marked = set()
+ self.last_mark = -1
+
+ path = os.path.expanduser(self.console_config['addtorrents']['last_path'])
+
+ self.path_stack = ['/'] + path.strip('/').split('/')
+ self.path_stack_pos = len(self.path_stack)
+ self.listing_files = []
+ self.listing_dirs = []
+
+ self.raw_rows = []
+ self.raw_rows_files = []
+ self.raw_rows_dirs = []
+ self.formatted_rows = []
+
+ self.sort_column = self.console_config['addtorrents']['sort_column']
+ self.reverse_sort = self.console_config['addtorrents']['reverse_sort']
+
+ BaseMode.__init__(self, stdscr, encoding)
+
+ self._listing_space = self.rows - 5
+ self.__refresh_listing()
+
+ util.safe_curs_set(util.Curser.INVISIBLE)
+ self.stdscr.notimeout(0)
+
+ @overrides(component.Component)
+ def start(self):
+ pass
+
+ @overrides(component.Component)
+ def update(self):
+ pass
+
+ def __refresh_listing(self):
+ path = os.path.join(*self.path_stack[: self.path_stack_pos])
+
+ listing = os.listdir(path)
+
+ self.listing_files = []
+ self.listing_dirs = []
+
+ self.raw_rows = []
+ self.raw_rows_files = []
+ self.raw_rows_dirs = []
+ self.formatted_rows = []
+
+ for f in listing:
+ if os.path.isdir(os.path.join(path, f)):
+ if self.console_config['addtorrents']['show_hidden_folders']:
+ self.listing_dirs.append(f)
+ elif f[0] != '.':
+ self.listing_dirs.append(f)
+ elif os.path.isfile(os.path.join(path, f)):
+ if self.console_config['addtorrents']['show_misc_files']:
+ self.listing_files.append(f)
+ elif f.endswith('.torrent'):
+ self.listing_files.append(f)
+
+ for dirname in self.listing_dirs:
+ row = []
+ full_path = os.path.join(path, dirname)
+ try:
+ size = len(os.listdir(full_path))
+ except OSError:
+ size = -1
+ time = os.stat(full_path).st_mtime
+
+ row = [dirname, size, time, full_path, 1]
+
+ self.raw_rows.append(row)
+ self.raw_rows_dirs.append(row)
+
+ # Highlight the directory we came from
+ if self.path_stack_pos < len(self.path_stack):
+ selected = self.path_stack[self.path_stack_pos]
+ ld = sorted(self.listing_dirs, key=lambda n: n.lower())
+ c = ld.index(selected)
+ self.cursel = c
+
+ if (self.view_offset + self._listing_space) <= self.cursel:
+ self.view_offset = self.cursel - self._listing_space
+
+ for filename in self.listing_files:
+ row = []
+ full_path = os.path.join(path, filename)
+ size = os.stat(full_path).st_size
+ time = os.stat(full_path).st_mtime
+
+ row = [filename, size, time, full_path, 0]
+
+ self.raw_rows.append(row)
+ self.raw_rows_files.append(row)
+
+ self.__sort_rows()
+
+ def __sort_rows(self):
+ self.console_config['addtorrents']['sort_column'] = self.sort_column
+ self.console_config['addtorrents']['reverse_sort'] = self.reverse_sort
+ self.console_config.save()
+
+ self.raw_rows_dirs.sort(key=lambda r: r[0].lower())
+
+ if self.sort_column == 'name':
+ self.raw_rows_files.sort(
+ key=lambda r: r[0].lower(), reverse=self.reverse_sort
+ )
+ elif self.sort_column == 'date':
+ self.raw_rows_files.sort(key=lambda r: r[2], reverse=self.reverse_sort)
+ self.raw_rows = self.raw_rows_dirs + self.raw_rows_files
+ self.__refresh_rows()
+
+ def __refresh_rows(self):
+ self.formatted_rows = []
+
+ for row in self.raw_rows:
+ filename = deluge.common.decode_bytes(row[0])
+ size = row[1]
+ time = row[2]
+
+ if row[4]:
+ if size != -1:
+ size_str = '%i items' % size
+ else:
+ size_str = ' unknown'
+
+ cols = [filename, size_str, deluge.common.fdate(time)]
+ widths = [self.cols - 35, 12, 23]
+ self.formatted_rows.append(format_utils.format_row(cols, widths))
+ else:
+ # Size of .torrent file itself couldn't matter less so we'll leave it out
+ cols = [filename, deluge.common.fdate(time)]
+ widths = [self.cols - 23, 23]
+ self.formatted_rows.append(format_utils.format_row(cols, widths))
+
+ def scroll_list_up(self, distance):
+ self.cursel -= distance
+ if self.cursel < 0:
+ self.cursel = 0
+
+ if self.cursel < self.view_offset + 1:
+ self.view_offset = max(self.cursel - 1, 0)
+
+ def scroll_list_down(self, distance):
+ self.cursel += distance
+ if self.cursel >= len(self.formatted_rows):
+ self.cursel = len(self.formatted_rows) - 1
+
+ if (self.view_offset + self._listing_space) <= self.cursel + 1:
+ self.view_offset = self.cursel - self._listing_space + 1
+
+ def set_popup(self, pu):
+ self.popup = pu
+ self.refresh()
+
+ @overrides(BaseMode)
+ def on_resize(self, rows, cols):
+ BaseMode.on_resize(self, rows, cols)
+ if self.popup:
+ self.popup.handle_resize()
+ self._listing_space = self.rows - 5
+ self.refresh()
+
+ def refresh(self, lines=None):
+ if self.mode_paused():
+ return
+
+ # Update the status bars
+ self.stdscr.erase()
+ self.draw_statusbars()
+
+ off = 1
+
+ # Render breadcrumbs
+ s = 'Location: '
+ for i, e in enumerate(self.path_stack):
+ if e == '/':
+ if i == self.path_stack_pos - 1:
+ s += '{!black,red,bold!}root'
+ else:
+ s += '{!red,black,bold!}root'
+ else:
+ if i == self.path_stack_pos - 1:
+ s += '{!black,white,bold!}%s' % e
+ else:
+ s += '{!white,black,bold!}%s' % e
+
+ if e != len(self.path_stack) - 1:
+ s += '{!white,black!}/'
+
+ self.add_string(off, s)
+ off += 1
+
+ # Render header
+ cols = ['Name', 'Contents', 'Modification time']
+ widths = [self.cols - 35, 12, 23]
+ s = ''
+ for i, (c, w) in enumerate(zip(cols, widths)):
+ cn = ''
+ if i == 0:
+ cn = 'name'
+ elif i == 2:
+ cn = 'date'
+
+ if cn == self.sort_column:
+ s += '{!black,green,bold!}' + c.ljust(w - 2)
+ if self.reverse_sort:
+ s += '^ '
+ else:
+ s += 'v '
+ else:
+ s += '{!green,black,bold!}' + c.ljust(w)
+ self.add_string(off, s)
+ off += 1
+
+ # Render files and folders
+ for i, row in enumerate(self.formatted_rows[self.view_offset :]):
+ i += self.view_offset
+ # It's a folder
+ color_string = ''
+ if self.raw_rows[i][4]:
+ if self.raw_rows[i][1] == -1:
+ if i == self.cursel:
+ color_string = '{!black,red,bold!}'
+ else:
+ color_string = '{!red,black!}'
+ else:
+ if i == self.cursel:
+ color_string = '{!black,cyan,bold!}'
+ else:
+ color_string = '{!cyan,black!}'
+
+ elif i == self.cursel:
+ if self.raw_rows[i][0] in self.marked:
+ color_string = '{!blue,white,bold!}'
+ else:
+ color_string = '{!black,white,bold!}'
+ elif self.raw_rows[i][0] in self.marked:
+ color_string = '{!white,blue,bold!}'
+
+ self.add_string(off, color_string + row)
+ off += 1
+
+ if off > self.rows - 2:
+ break
+
+ if not component.get('ConsoleUI').is_active_mode(self):
+ return
+
+ self.stdscr.noutrefresh()
+
+ if self.popup:
+ self.popup.refresh()
+
+ curses.doupdate()
+
+ def back_to_overview(self):
+ self.parent_mode.go_top = False
+ component.get('ConsoleUI').set_mode(self.parent_mode.mode_name)
+
+ def _perform_action(self):
+ if self.cursel < len(self.listing_dirs):
+ self._enter_dir()
+ else:
+ s = self.raw_rows[self.cursel][0]
+ if s not in self.marked:
+ self.last_mark = self.cursel
+ self.marked.add(s)
+ self._show_add_dialog()
+
+ def _enter_dir(self):
+ # Enter currently selected directory
+ dirname = self.raw_rows[self.cursel][0]
+ new_dir = self.path_stack_pos >= len(self.path_stack)
+ new_dir = new_dir or (dirname != self.path_stack[self.path_stack_pos])
+ if new_dir:
+ self.path_stack = self.path_stack[: self.path_stack_pos]
+ self.path_stack.append(dirname)
+
+ path = os.path.join(*self.path_stack[: self.path_stack_pos + 1])
+
+ if not os.access(path, os.R_OK):
+ self.path_stack = self.path_stack[: self.path_stack_pos]
+ self.popup = MessagePopup(
+ self, 'Error', '{!error!}Access denied: %s' % path
+ )
+ self.__refresh_listing()
+ return
+
+ self.path_stack_pos += 1
+
+ self.view_offset = 0
+ self.cursel = 0
+ self.last_mark = -1
+ self.marked = set()
+
+ self.__refresh_listing()
+
+ def _show_add_dialog(self):
+ def _do_add(result, **kwargs):
+ ress = {'succ': 0, 'fail': 0, 'total': len(self.marked), 'fmsg': []}
+
+ def fail_cb(msg, t_file, ress):
+ log.debug('failed to add torrent: %s: %s', t_file, msg)
+ ress['fail'] += 1
+ ress['fmsg'].append(f'{{!input!}} * {t_file}: {{!error!}}{msg}')
+ if (ress['succ'] + ress['fail']) >= ress['total']:
+ report_add_status(
+ component.get('TorrentList'),
+ ress['succ'],
+ ress['fail'],
+ ress['fmsg'],
+ )
+
+ def success_cb(tid, t_file, ress):
+ if tid:
+ log.debug('added torrent: %s (%s)', t_file, tid)
+ ress['succ'] += 1
+ if (ress['succ'] + ress['fail']) >= ress['total']:
+ report_add_status(
+ component.get('TorrentList'),
+ ress['succ'],
+ ress['fail'],
+ ress['fmsg'],
+ )
+ else:
+ fail_cb('Already in session (probably)', t_file, ress)
+
+ for m in self.marked:
+ filename = m
+ directory = os.path.join(*self.path_stack[: self.path_stack_pos])
+ path = os.path.join(directory, filename)
+ with open(path, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ t_options = {}
+ if result['location']['value']:
+ t_options['download_location'] = result['location']['value']
+ t_options['add_paused'] = result['add_paused']['value']
+
+ d = client.core.add_torrent_file_async(filename, filedump, t_options)
+ d.addCallback(success_cb, filename, ress)
+ d.addErrback(fail_cb, filename, ress)
+
+ self.console_config['addtorrents']['last_path'] = os.path.join(
+ *self.path_stack[: self.path_stack_pos]
+ )
+ self.console_config.save()
+
+ self.back_to_overview()
+
+ config = component.get('ConsoleUI').coreconfig
+ if config['add_paused']:
+ ap = 0
+ else:
+ ap = 1
+ self.popup = InputPopup(
+ self, 'Add Torrents (Esc to cancel)', close_cb=_do_add, height_req=17
+ )
+
+ msg = 'Adding torrent files:'
+ for i, m in enumerate(self.marked):
+ name = m
+ msg += '\n * {!input!}%s' % name
+ if i == 5:
+ if i < len(self.marked):
+ msg += '\n {!red!}And %i more' % (len(self.marked) - 5)
+ break
+ self.popup.add_text(msg)
+ self.popup.add_spaces(1)
+
+ self.popup.add_text_input(
+ 'location', 'Download Folder:', config['download_location'], complete=True
+ )
+ self.popup.add_select_input(
+ 'add_paused', 'Add Paused:', ['Yes', 'No'], [True, False], ap
+ )
+
+ def _go_up(self):
+ # Go up in directory hierarchy
+ if self.path_stack_pos > 1:
+ self.path_stack_pos -= 1
+
+ self.view_offset = 0
+ self.cursel = 0
+ self.last_mark = -1
+ self.marked = set()
+
+ self.__refresh_listing()
+
+ def read_input(self):
+ c = self.stdscr.getch()
+
+ if self.popup:
+ if self.popup.handle_read(c):
+ self.popup = None
+ self.refresh()
+ return
+
+ if util.is_printable_chr(c):
+ if chr(c) == 'Q':
+ component.get('ConsoleUI').quit()
+ elif chr(c) == 'q':
+ self.back_to_overview()
+ return
+
+ # Navigate the torrent list
+ if c == curses.KEY_UP:
+ self.scroll_list_up(1)
+ elif c == curses.KEY_PPAGE:
+ self.scroll_list_up(self.rows // 2)
+ elif c == curses.KEY_HOME:
+ self.scroll_list_up(len(self.formatted_rows))
+ elif c == curses.KEY_DOWN:
+ self.scroll_list_down(1)
+ elif c == curses.KEY_NPAGE:
+ self.scroll_list_down(self.rows // 2)
+ elif c == curses.KEY_END:
+ self.scroll_list_down(len(self.formatted_rows))
+ elif c == curses.KEY_RIGHT:
+ if self.cursel < len(self.listing_dirs):
+ self._enter_dir()
+ elif c == curses.KEY_LEFT:
+ self._go_up()
+ elif c in [curses.KEY_ENTER, util.KEY_ENTER2]:
+ self._perform_action()
+ elif c == util.KEY_ESC:
+ self.back_to_overview()
+ else:
+ if util.is_printable_chr(c):
+ if chr(c) == 'h':
+ self.popup = MessagePopup(self, 'Help', HELP_STR, width_req=0.75)
+ elif chr(c) == '>':
+ if self.sort_column == 'date':
+ self.reverse_sort = not self.reverse_sort
+ else:
+ self.sort_column = 'date'
+ self.reverse_sort = True
+ self.__sort_rows()
+ elif chr(c) == '<':
+ if self.sort_column == 'name':
+ self.reverse_sort = not self.reverse_sort
+ else:
+ self.sort_column = 'name'
+ self.reverse_sort = False
+ self.__sort_rows()
+ elif chr(c) == 'm':
+ s = self.raw_rows[self.cursel][0]
+ if s in self.marked:
+ self.marked.remove(s)
+ else:
+ self.marked.add(s)
+
+ self.last_mark = self.cursel
+ elif chr(c) == 'j':
+ self.scroll_list_down(1)
+ elif chr(c) == 'k':
+ self.scroll_list_up(1)
+ elif chr(c) == 'M':
+ if self.last_mark != -1:
+ if self.last_mark > self.cursel:
+ m = list(range(self.cursel, self.last_mark))
+ else:
+ m = list(range(self.last_mark, self.cursel + 1))
+
+ for i in m:
+ s = self.raw_rows[i][0]
+ self.marked.add(s)
+ elif chr(c) == 'c':
+ self.marked.clear()
+
+ self.refresh()
diff --git a/deluge/ui/console/modes/basemode.py b/deluge/ui/console/modes/basemode.py
new file mode 100644
index 0000000..a8ab1db
--- /dev/null
+++ b/deluge/ui/console/modes/basemode.py
@@ -0,0 +1,360 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import signal
+import struct
+import sys
+from typing import Tuple
+
+import deluge.component as component
+import deluge.ui.console.utils.colors as colors
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.utils.format_utils import remove_formatting
+
+try:
+ import curses
+ import curses.panel
+except ImportError:
+ pass
+
+try:
+ from fcntl import ioctl
+ from termios import TIOCGWINSZ
+except ImportError:
+ pass
+
+
+log = logging.getLogger(__name__)
+
+
+class InputKeyHandler:
+ def __init__(self):
+ self._input_result = None
+
+ def set_input_result(self, result):
+ self._input_result = result
+
+ def get_input_result(self):
+ result = self._input_result
+ self._input_result = None
+ return result
+
+ def handle_read(self, c):
+ """Handle a character read from curses screen
+
+ Returns:
+ int: One of the constants defined in util.curses_util.ReadState.
+ ReadState.IGNORED: The key was not handled. Further processing should continue.
+ ReadState.READ: The key was read and processed. Do no further processing
+ ReadState.CHANGED: The key was read and processed. Internal state was changed
+ leaving data to be read by the caller.
+
+ """
+ return util.ReadState.IGNORED
+
+
+class TermResizeHandler:
+ def __init__(self):
+ try:
+ signal.signal(signal.SIGWINCH, self.on_resize)
+ except ValueError as ex:
+ log.debug('TermResize unavailable, unable to catch SIGWINCH signal: %s', ex)
+ except AttributeError as ex:
+ log.debug('TermResize unavailable, no SIGWINCH signal on Windows: %s', ex)
+
+ @staticmethod
+ def get_window_size(fd: int = 0) -> Tuple[int, int]:
+ """Return the tty window size as row, col."""
+ return struct.unpack('4h', ioctl(fd, TIOCGWINSZ, b'\x00' * 8))[0:2]
+
+ def on_resize(self, _signum, _frame):
+ """Handler for SIGWINCH when terminal changes size"""
+ rows, cols = self.get_window_size()
+ curses.resizeterm(rows, cols)
+ return rows, cols
+
+
+class CursesStdIO:
+ """
+ fake fd to be registered as a reader with the twisted reactor.
+ Curses classes needing input should extend this
+ """
+
+ def fileno(self):
+ """We want to select on FD 0"""
+ return 0
+
+ def doRead(self): # NOQA: N802
+ """called when input is ready"""
+ pass
+
+ def logPrefix(self): # NOQA: N802
+ return 'CursesClient'
+
+
+class BaseMode(CursesStdIO, component.Component):
+ def __init__(
+ self, stdscr, encoding=None, do_refresh=True, mode_name=None, depend=None
+ ):
+ """
+ A mode that provides a curses screen designed to run as a reader in a twisted reactor.
+ This mode doesn't do much, just shows status bars and "Base Mode" on the screen
+
+ Modes should subclass this and provide overrides for:
+
+ do_read(self) - Handle user input
+ refresh(self) - draw the mode to the screen
+ add_string(self, row, string) - add a string of text to be displayed.
+ see method for detailed info
+
+ The init method of a subclass *must* call BaseMode.__init__
+
+ Useful fields after calling BaseMode.__init__:
+ self.stdscr - the curses screen
+ self.rows - # of rows on the curses screen
+ self.cols - # of cols on the curses screen
+ self.topbar - top statusbar
+ self.bottombar - bottom statusbar
+ """
+ self.mode_name = mode_name if mode_name else self.__class__.__name__
+ component.Component.__init__(self, self.mode_name, 1, depend=depend)
+ self.stdscr = stdscr
+ # Make the input calls non-blocking
+ self.stdscr.nodelay(1)
+
+ self.paused = False
+ # Strings for the 2 status bars
+ self.statusbars = component.get('StatusBars')
+ self.help_hstr = '{!status!} Press {!magenta,blue,bold!}[h]{!status!} for help'
+
+ # Keep track of the screen size
+ self.rows, self.cols = self.stdscr.getmaxyx()
+
+ if not encoding:
+ self.encoding = sys.getdefaultencoding()
+ else:
+ self.encoding = encoding
+
+ # Do a refresh right away to draw the screen
+ if do_refresh:
+ self.refresh()
+
+ def on_resize(self, rows, cols):
+ self.rows, self.cols = rows, cols
+
+ def connectionLost(self, reason): # NOQA: N802
+ self.close()
+
+ def add_string(self, row, string, scr=None, **kwargs):
+ if scr:
+ screen = scr
+ else:
+ screen = self.stdscr
+
+ return add_string(row, string, screen, self.encoding, **kwargs)
+
+ def draw_statusbars(
+ self,
+ top_row=0,
+ bottom_row=-1,
+ topbar=None,
+ bottombar=None,
+ bottombar_help=True,
+ scr=None,
+ ):
+ self.add_string(top_row, topbar if topbar else self.statusbars.topbar, scr=scr)
+ bottombar = bottombar if bottombar else self.statusbars.bottombar
+ if bottombar_help:
+ if bottombar_help is True:
+ bottombar_help = self.help_hstr
+ bottombar += (
+ ' '
+ * (
+ self.cols
+ - len(remove_formatting(bottombar))
+ - len(remove_formatting(bottombar_help))
+ )
+ + bottombar_help
+ )
+ self.add_string(self.rows + bottom_row, bottombar, scr=scr)
+
+ # This mode doesn't do anything with popups
+ def set_popup(self, popup):
+ pass
+
+ def pause(self):
+ self.paused = True
+
+ def mode_paused(self):
+ return self.paused
+
+ def resume(self):
+ self.paused = False
+ self.refresh()
+
+ def refresh(self):
+ """
+ Refreshes the screen.
+ Updates the lines based on the`:attr:lines` based on the `:attr:display_lines_offset`
+ attribute and the status bars.
+ """
+ self.stdscr.erase()
+ self.draw_statusbars()
+ # Update the status bars
+
+ self.add_string(1, '{!info!}Base Mode (or subclass has not overridden refresh)')
+
+ self.stdscr.redrawwin()
+ self.stdscr.refresh()
+
+ def doRead(self): # NOQA: N802
+ """
+ Called when there is data to be read, ie, input from the keyboard.
+ """
+ # We wrap this function to catch exceptions and shutdown the mainloop
+ try:
+ self.read_input()
+ except Exception as ex: # pylint: disable=broad-except
+ log.exception(ex)
+
+ def read_input(self):
+ # Read the character
+ self.stdscr.getch()
+ self.stdscr.refresh()
+
+ def close(self):
+ """
+ Clean up the curses stuff on exit.
+ """
+ curses.nocbreak()
+ self.stdscr.keypad(0)
+ curses.echo()
+ curses.endwin()
+
+
+def add_string(
+ row, fstring, screen, encoding, col=0, pad=True, pad_char=' ', trim='..', leaveok=0
+):
+ """
+ Adds a string to the desired `:param:row`.
+
+ Args:
+ row(int): the row number to write the string
+ row(int): the row number to write the string
+ fstring(str): the (formatted) string of text to add
+ scr(curses.window): optional window to add string to instead of self.stdscr
+ col(int): optional starting column offset
+ pad(bool): optional bool if the string should be padded out to the width of the screen
+ trim(bool): optional bool if the string should be trimmed if it is too wide for the screen
+
+ The text can be formatted with color using the following format:
+
+ "{!fg, bg, attributes, ...!}"
+
+ See: http://docs.python.org/library/curses.html#constants for attributes.
+
+ Alternatively, it can use some built-in scheme for coloring.
+ See colors.py for built-in schemes.
+
+ "{!scheme!}"
+
+ Examples:
+
+ "{!blue, black, bold!}My Text is {!white, black!}cool"
+ "{!info!}I am some info text!"
+ "{!error!}Uh oh!"
+
+ Returns:
+ int: the next row
+
+ """
+ try:
+ parsed = colors.parse_color_string(fstring)
+ except colors.BadColorString as ex:
+ log.error('Cannot add bad color string %s: %s', fstring, ex)
+ return
+
+ if leaveok:
+ screen.leaveok(leaveok)
+
+ max_y, max_x = screen.getmaxyx()
+ for index, (color, string) in enumerate(parsed):
+ # Skip printing chars beyond max_x
+ if col >= max_x:
+ break
+
+ if index + 1 == len(parsed) and pad:
+ # This is the last string so lets append some padding to it
+ string += pad_char * (max_x - (col + len(string)))
+
+ if col + len(string) > max_x:
+ remaining_chrs = max(0, max_x - col)
+ if trim:
+ string = string[0 : max(0, remaining_chrs - len(trim))] + trim
+ else:
+ string = string[0:remaining_chrs]
+
+ try:
+ screen.addstr(row, col, string.encode(encoding), color)
+ except curses.error:
+ # Ignore exception for writing offscreen.
+ pass
+
+ col += len(string)
+
+ if leaveok:
+ screen.leaveok(0)
+
+ return row + 1
+
+
+def mkpanel(color, rows, cols, tly, tlx):
+ win = curses.newwin(rows, cols, tly, tlx)
+ pan = curses.panel.new_panel(win)
+ if curses.has_colors():
+ win.bkgdset(ord(' '), curses.color_pair(color))
+ else:
+ win.bkgdset(ord(' '), curses.A_BOLD)
+ return pan
+
+
+def mkwin(color, rows, cols, tly, tlx):
+ win = curses.newwin(rows, cols, tly, tlx)
+ if curses.has_colors():
+ win.bkgdset(ord(' '), curses.color_pair(color))
+ else:
+ win.bkgdset(ord(' '), curses.A_BOLD)
+ return win
+
+
+def mkpad(color, rows, cols):
+ win = curses.newpad(rows, cols)
+ if curses.has_colors():
+ win.bkgdset(ord(' '), curses.color_pair(color))
+ else:
+ win.bkgdset(ord(' '), curses.A_BOLD)
+ return win
+
+
+def move_cursor(screen, row, col):
+ try:
+ screen.move(row, col)
+ except curses.error as ex:
+ import traceback
+
+ log.warning(
+ 'Error on screen.move(%s, %s): (curses.LINES: %s, curses.COLS: %s) Error: %s\nStack: %s',
+ row,
+ col,
+ curses.LINES,
+ curses.COLS,
+ ex,
+ ''.join(traceback.format_stack()),
+ )
diff --git a/deluge/ui/console/modes/cmdline.py b/deluge/ui/console/modes/cmdline.py
new file mode 100644
index 0000000..7b0ff2d
--- /dev/null
+++ b/deluge/ui/console/modes/cmdline.py
@@ -0,0 +1,845 @@
+#
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+import re
+
+import deluge.component as component
+import deluge.configmanager
+from deluge.decorators import overrides
+from deluge.ui.console.cmdline.command import Commander
+from deluge.ui.console.modes.basemode import BaseMode, move_cursor
+from deluge.ui.console.utils import colors
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.utils.format_utils import (
+ delete_alt_backspace,
+ remove_formatting,
+ strwidth,
+)
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+LINES_BUFFER_SIZE = 5000
+INPUT_HISTORY_SIZE = 500
+MAX_HISTFILE_SIZE = 2000
+
+
+def complete_line(line, possible_matches):
+ """Find the common prefix of possible matches.
+
+ Proritizing matching-case elements.
+ """
+
+ if not possible_matches:
+ return line
+
+ line = line.replace(r'\ ', ' ')
+
+ matches1 = []
+ matches2 = []
+
+ for match in possible_matches:
+ match = remove_formatting(match)
+ match = match.replace(r'\ ', ' ')
+ m1, m2 = '', ''
+ for i, c in enumerate(line):
+ if m1 and m2:
+ break
+ if not m1 and c != line[i]:
+ m1 = line[:i]
+ if not m2 and c.lower() != line[i].lower():
+ m2 = line[:i]
+ if not m1:
+ matches1.append(match)
+ elif not m2:
+ matches2.append(match)
+
+ possible_matches = matches1 + matches2
+
+ maxlen = 9001
+
+ for match in possible_matches[1:]:
+ for i, c in enumerate(match):
+ try:
+ if c.lower() != possible_matches[0][i].lower():
+ maxlen = min(maxlen, i)
+ break
+ except IndexError:
+ maxlen = min(maxlen, i)
+ break
+
+ return possible_matches[0][:maxlen].replace(' ', r'\ ')
+
+
+def commonprefix(m):
+ """Returns the longest common leading component from list of pathnames."""
+ if not m:
+ return ''
+ s1 = min(m)
+ s2 = max(m)
+ for i, c in enumerate(s1):
+ if c != s2[i]:
+ return s1[:i]
+ return s2
+
+
+class CmdLine(BaseMode, Commander):
+ def __init__(self, stdscr, encoding=None):
+ # Get a handle to the main console
+ self.console = component.get('ConsoleUI')
+ Commander.__init__(self, self.console._commands, interactive=True)
+
+ self.batch_write = False
+
+ # A list of strings to be displayed based on the offset (scroll)
+ self.lines = []
+ # The offset to display lines
+ self.display_lines_offset = 0
+
+ # Holds the user input and is cleared on 'enter'
+ self.input = ''
+ self.input_incomplete = ''
+
+ # Keep track of where the cursor is
+ self.input_cursor = 0
+ # Keep a history of inputs
+ self.input_history = []
+ self.input_history_index = 0
+
+ # Keep track of double- and multi-tabs
+ self.tab_count = 0
+
+ self.console_config = component.get('TorrentList').config
+
+ # To avoid having to truncate the file every time we're writing
+ # or doing it on exit(and therefore relying on an error-less
+ # or in other words clean exit, we're going to have two files
+ # that we swap around based on length
+ config_dir = deluge.configmanager.get_config_dir()
+ self.history_file = [
+ os.path.join(config_dir, 'cmd_line.hist1'),
+ os.path.join(config_dir, 'cmd_line.hist2'),
+ ]
+ self._hf_lines = [0, 0]
+ if self.console_config['cmdline']['save_command_history']:
+ try:
+ with open(self.history_file[0], encoding='utf8') as _file:
+ lines1 = _file.read().splitlines()
+ self._hf_lines[0] = len(lines1)
+ except OSError:
+ lines1 = []
+ self._hf_lines[0] = 0
+
+ try:
+ with open(self.history_file[1], encoding='utf8') as _file:
+ lines2 = _file.read().splitlines()
+ self._hf_lines[1] = len(lines2)
+ except OSError:
+ lines2 = []
+ self._hf_lines[1] = 0
+
+ # The non-full file is the active one
+ if self._hf_lines[0] > self._hf_lines[1]:
+ self.lines = lines1 + lines2
+ else:
+ self.lines = lines2 + lines1
+
+ if len(self.lines) > MAX_HISTFILE_SIZE:
+ self.lines = self.lines[-MAX_HISTFILE_SIZE:]
+
+ # Instead of having additional input history file, we can
+ # simply scan for lines beginning with ">>> "
+ for i, line in enumerate(self.lines):
+ line = remove_formatting(line)
+ if line.startswith('>>> '):
+ console_input = line[4:]
+ if self.console_config['cmdline']['ignore_duplicate_lines']:
+ if len(self.input_history) > 0:
+ if self.input_history[-1] != console_input:
+ self.input_history.append(console_input)
+ else:
+ self.input_history.append(console_input)
+
+ self.input_history_index = len(self.input_history)
+
+ # show the cursor
+ util.safe_curs_set(util.Curser.VERY_VISIBLE)
+ BaseMode.__init__(self, stdscr, encoding, depend=['SessionProxy'])
+
+ @overrides(component.Component)
+ def update(self):
+ if not component.get('ConsoleUI').is_active_mode(self):
+ return
+ # Update just the status bars
+ self.draw_statusbars(bottom_row=-2, bottombar_help=False)
+ move_cursor(self.stdscr, self.rows - 1, min(self.input_cursor, curses.COLS - 1))
+ self.stdscr.refresh()
+
+ @overrides(BaseMode)
+ def pause(self):
+ self.stdscr.leaveok(0)
+
+ @overrides(BaseMode)
+ def resume(self):
+ util.safe_curs_set(util.Curser.VERY_VISIBLE)
+
+ @overrides(BaseMode)
+ def read_input(self):
+ # Read the character
+ c = self.stdscr.getch()
+
+ # Either ESC or ALT+<some key>
+ if c == util.KEY_ESC:
+ n = self.stdscr.getch()
+ if n == -1:
+ # Escape key
+ return
+ c = [c, n]
+
+ # We remove the tab count if the key wasn't a tab
+ if c != util.KEY_TAB:
+ self.tab_count = 0
+
+ # We clear the input string and send it to the command parser on ENTER
+ if c in [curses.KEY_ENTER, util.KEY_ENTER2]:
+ if self.input:
+ if self.input.endswith('\\'):
+ self.input = self.input[:-1]
+ self.input_cursor -= 1
+ self.add_line('{!yellow,black,bold!}>>>{!input!} %s' % self.input)
+ self.do_command(self.input)
+ if len(self.input_history) == INPUT_HISTORY_SIZE:
+ # Remove the oldest input history if the max history size
+ # is reached.
+ del self.input_history[0]
+ if self.console_config['cmdline']['ignore_duplicate_lines']:
+ if len(self.input_history) > 0:
+ if self.input_history[-1] != self.input:
+ self.input_history.append(self.input)
+ else:
+ self.input_history.append(self.input)
+ else:
+ self.input_history.append(self.input)
+ self.input_history_index = len(self.input_history)
+ self.input = ''
+ self.input_incomplete = ''
+ self.input_cursor = 0
+ self.stdscr.refresh()
+
+ # Run the tab completer function
+ elif c == util.KEY_TAB:
+ # Keep track of tab hit count to know when it's double-hit
+ self.tab_count += 1
+
+ if self.tab_completer:
+ # We only call the tab completer function if we're at the end of
+ # the input string on the cursor is on a space
+ if (
+ self.input_cursor == len(self.input)
+ or self.input[self.input_cursor] == ' '
+ ):
+ self.input, self.input_cursor = self.tab_completer(
+ self.input, self.input_cursor, self.tab_count
+ )
+
+ # We use the UP and DOWN keys to cycle through input history
+ elif c == curses.KEY_UP:
+ if self.input_history_index - 1 >= 0:
+ if self.input_history_index == len(self.input_history):
+ # We're moving from non-complete input so save it just incase
+ # we move back down to it.
+ self.input_incomplete = self.input
+ # Going back in the history
+ self.input_history_index -= 1
+ self.input = self.input_history[self.input_history_index]
+ self.input_cursor = len(self.input)
+ elif c == curses.KEY_DOWN:
+ if self.input_history_index + 1 < len(self.input_history):
+ # Going forward in the history
+ self.input_history_index += 1
+ self.input = self.input_history[self.input_history_index]
+ self.input_cursor = len(self.input)
+ elif self.input_history_index + 1 == len(self.input_history):
+ # We're moving back down to an incomplete input
+ self.input_history_index += 1
+ self.input = self.input_incomplete
+ self.input_cursor = len(self.input)
+
+ # Cursor movement
+ elif c == curses.KEY_LEFT:
+ if self.input_cursor:
+ self.input_cursor -= 1
+ elif c == curses.KEY_RIGHT:
+ if self.input_cursor < len(self.input):
+ self.input_cursor += 1
+ elif c == curses.KEY_HOME:
+ self.input_cursor = 0
+ elif c == curses.KEY_END:
+ self.input_cursor = len(self.input)
+
+ # Scrolling through buffer
+ elif c == curses.KEY_PPAGE:
+ self.display_lines_offset += self.rows - 3
+ # We substract 3 for the unavailable lines and 1 extra due to len(self.lines)
+ if self.display_lines_offset > (len(self.lines) - 4 - self.rows):
+ self.display_lines_offset = len(self.lines) - 4 - self.rows
+
+ self.refresh()
+ elif c == curses.KEY_NPAGE:
+ self.display_lines_offset -= self.rows - 3
+ if self.display_lines_offset < 0:
+ self.display_lines_offset = 0
+ self.refresh()
+
+ # Delete a character in the input string based on cursor position
+ elif c in [curses.KEY_BACKSPACE, util.KEY_BACKSPACE2]:
+ if self.input and self.input_cursor > 0:
+ self.input = (
+ self.input[: self.input_cursor - 1]
+ + self.input[self.input_cursor :]
+ )
+ self.input_cursor -= 1
+ # Delete a word when alt+backspace is pressed
+ elif c == [util.KEY_ESC, util.KEY_BACKSPACE2] or c == [
+ util.KEY_ESC,
+ curses.KEY_BACKSPACE,
+ ]:
+ self.input, self.input_cursor = delete_alt_backspace(
+ self.input, self.input_cursor
+ )
+ elif c == curses.KEY_DC:
+ if self.input and self.input_cursor < len(self.input):
+ self.input = (
+ self.input[: self.input_cursor]
+ + self.input[self.input_cursor + 1 :]
+ )
+
+ # A key to add to the input string
+ else:
+ if 31 < c < 256:
+ # Emulate getwch
+ stroke = chr(c)
+ uchar = stroke
+ while not uchar:
+ try:
+ uchar = stroke.decode(self.encoding)
+ except UnicodeDecodeError:
+ c = self.stdscr.getch()
+ stroke += chr(c)
+
+ if uchar:
+ if self.input_cursor == len(self.input):
+ self.input += uchar
+ else:
+ # Insert into string
+ self.input = (
+ self.input[: self.input_cursor]
+ + uchar
+ + self.input[self.input_cursor :]
+ )
+
+ # Move the cursor forward
+ self.input_cursor += 1
+
+ self.refresh()
+
+ @overrides(BaseMode)
+ def on_resize(self, rows, cols):
+ BaseMode.on_resize(self, rows, cols)
+ self.stdscr.erase()
+ self.refresh()
+
+ @overrides(BaseMode)
+ def refresh(self):
+ """
+ Refreshes the screen.
+ Updates the lines based on the`:attr:lines` based on the `:attr:display_lines_offset`
+ attribute and the status bars.
+ """
+ if not component.get('ConsoleUI').is_active_mode(self):
+ return
+ self.stdscr.erase()
+
+ # Update the status bars
+ self.add_string(0, self.statusbars.topbar)
+ self.add_string(self.rows - 2, self.statusbars.bottombar)
+
+ # The number of rows minus the status bars and the input line
+ available_lines = self.rows - 3
+ # If the amount of lines exceeds the number of rows, we need to figure out
+ # which ones to display based on the offset
+ if len(self.lines) > available_lines:
+ # Get the lines to display based on the offset
+ offset = len(self.lines) - self.display_lines_offset
+ lines = self.lines[-(available_lines - offset) : offset]
+ elif len(self.lines) == available_lines:
+ lines = self.lines
+ else:
+ lines = [''] * (available_lines - len(self.lines))
+ lines.extend(self.lines)
+
+ # Add the lines to the screen
+ for index, line in enumerate(lines):
+ self.add_string(index + 1, line)
+
+ # Add the input string
+ self.add_string(self.rows - 1, self.input, pad=False, trim=False)
+
+ move_cursor(self.stdscr, self.rows - 1, min(self.input_cursor, curses.COLS - 1))
+ self.stdscr.redrawwin()
+ self.stdscr.refresh()
+
+ def add_line(self, text, refresh=True):
+ """
+ Add a line to the screen. This will be showed between the two bars.
+ The text can be formatted with color using the following format:
+
+ "{!fg, bg, attributes, ...!}"
+
+ See: http://docs.python.org/library/curses.html#constants for attributes.
+
+ Alternatively, it can use some built-in scheme for coloring.
+ See colors.py for built-in schemes.
+
+ "{!scheme!}"
+
+ Examples:
+
+ "{!blue, black, bold!}My Text is {!white, black!}cool"
+ "{!info!}I am some info text!"
+ "{!error!}Uh oh!"
+
+ :param text: the text to show
+ :type text: string
+ :param refresh: if True, the screen will refresh after the line is added
+ :type refresh: bool
+
+ """
+
+ if self.console_config['cmdline']['save_command_history']:
+ # Determine which file is the active one
+ # If both are under maximum, it's first, otherwise it's the one not full
+ if (
+ self._hf_lines[0] < MAX_HISTFILE_SIZE
+ and self._hf_lines[1] < MAX_HISTFILE_SIZE
+ ):
+ active_file = 0
+ elif self._hf_lines[0] == MAX_HISTFILE_SIZE:
+ active_file = 1
+ else:
+ active_file = 0
+
+ # Write the line
+ with open(self.history_file[active_file], 'a', encoding='utf8') as _file:
+ _file.write(text + '\n')
+
+ # And increment line counter
+ self._hf_lines[active_file] += 1
+
+ # If the active file reaches max size, we truncate it
+ # therefore swapping the currently active file
+ if self._hf_lines[active_file] == MAX_HISTFILE_SIZE:
+ self._hf_lines[1 - active_file] = 0
+ with open(
+ self.history_file[1 - active_file], 'w', encoding='utf8'
+ ) as _file:
+ _file.truncate(0)
+
+ def get_line_chunks(line):
+ """
+ Returns a list of 2-tuples (color string, text)
+
+ """
+ if not line or line.count('{!') != line.count('!}'):
+ return []
+
+ chunks = []
+ if not line.startswith('{!'):
+ begin = line.find('{!')
+ if begin == -1:
+ begin = len(line)
+ chunks.append(('', line[:begin]))
+ line = line[begin:]
+
+ while line:
+ # We know the line starts with "{!" here
+ end_color = line.find('!}')
+ next_color = line.find('{!', end_color)
+ if next_color == -1:
+ next_color = len(line)
+ chunks.append((line[: end_color + 2], line[end_color + 2 : next_color]))
+ line = line[next_color:]
+ return chunks
+
+ for line in text.splitlines():
+ # We need to check for line lengths here and split as necessary
+ try:
+ line_length = colors.get_line_width(line)
+ except colors.BadColorString:
+ log.error('Passed a bad colored line: %s', line)
+ continue
+
+ if line_length >= (self.cols - 1):
+ s = ''
+ # The length of the text without the color tags
+ s_len = 0
+ # We need to split this over multiple lines
+ for chunk in get_line_chunks(line):
+ if (strwidth(chunk[1]) + s_len) < (self.cols - 1):
+ # This chunk plus the current string in 's' isn't over
+ # the maximum width, so just append the color tag and text
+ s += chunk[0] + chunk[1]
+ s_len += strwidth(chunk[1])
+ else:
+ # The chunk plus the current string in 's' is too long.
+ # We need to take as much of the chunk and put it into 's'
+ # with the color tag.
+ remain = (self.cols - 1) - s_len
+ s += chunk[0] + chunk[1][:remain]
+ # We append the line since it's full
+ self.lines.append(s)
+ # Start a new 's' with the remainder chunk
+ s = chunk[0] + chunk[1][remain:]
+ s_len = strwidth(chunk[1][remain:])
+ # Append the final string which may or may not be the full width
+ if s:
+ self.lines.append(s)
+ else:
+ self.lines.append(line)
+
+ while len(self.lines) > LINES_BUFFER_SIZE:
+ # Remove the oldest line if the max buffer size has been reached
+ del self.lines[0]
+
+ if refresh:
+ self.refresh()
+
+ def _add_string(self, row, string):
+ """
+ Adds a string to the desired `:param:row`.
+
+ :param row: int, the row number to write the string
+
+ """
+ col = 0
+ try:
+ parsed = colors.parse_color_string(string)
+ except colors.BadColorString as ex:
+ log.error('Cannot add bad color string %s: %s', string, ex)
+ return
+
+ for index, (color, p_str) in enumerate(parsed):
+ if index + 1 == len(parsed):
+ # This is the last string so lets append some " " to it
+ p_str += ' ' * (self.cols - (col + strwidth(p_str)) - 1)
+ try:
+ self.stdscr.addstr(row, col, p_str.encode(self.encoding), color)
+ except curses.error:
+ pass
+
+ col += strwidth(p_str)
+
+ def set_batch_write(self, batch):
+ """
+ When this is set the screen is not refreshed after a `:meth:write` until
+ this is set to False.
+
+ :param batch: set True to prevent screen refreshes after a `:meth:write`
+ :type batch: bool
+
+ """
+ self.batch_write = batch
+ if not batch:
+ self.refresh()
+
+ def write(self, line):
+ """
+ Writes a line out
+
+ :param line: str, the line to print
+
+ """
+
+ self.add_line(line, not self.batch_write)
+
+ def tab_completer(self, line, cursor, hits):
+ """
+ Called when the user hits 'tab' and will autocomplete or show options.
+ If a command is already supplied in the line, this function will call the
+ complete method of the command.
+
+ :param line: str, the current input string
+ :param cursor: int, the cursor position in the line
+ :param second_hit: bool, if this is the second time in a row the tab key
+ has been pressed
+
+ :returns: 2-tuple (string, cursor position)
+
+ """
+ # First check to see if there is no space, this will mean that it's a
+ # command that needs to be completed.
+
+ # We don't want to split by escaped spaces
+ def split(string):
+ return re.split(r'(?<!\\) ', string)
+
+ if ' ' not in line:
+ possible_matches = []
+ # Iterate through the commands looking for ones that startwith the
+ # line.
+ for cmd in self.console._commands:
+ if cmd.startswith(line):
+ possible_matches.append(cmd)
+
+ line_prefix = ''
+ else:
+ cmd = split(line)[0]
+ if cmd in self.console._commands:
+ # Call the command's complete method to get 'er done
+ possible_matches = self.console._commands[cmd].complete(split(line)[-1])
+ line_prefix = ' '.join(split(line)[:-1]) + ' '
+ else:
+ # This is a bogus command
+ return (line, cursor)
+
+ # No matches, so just return what we got passed
+ if len(possible_matches) == 0:
+ return (line, cursor)
+ # If we only have 1 possible match, then just modify the line and
+ # return it, else we need to print out the matches without modifying
+ # the line.
+ elif len(possible_matches) == 1:
+ # Do not append space after directory names
+ new_line = line_prefix + possible_matches[0]
+ if not new_line.endswith('/') and not new_line.endswith(r'\\'):
+ new_line += ' '
+ # We only want to print eventual colors or other control characters, not return them
+ new_line = remove_formatting(new_line)
+ return (new_line, len(new_line))
+ else:
+ if hits == 1:
+ p = ' '.join(split(line)[:-1])
+
+ try:
+ l_arg = split(line)[-1]
+ except IndexError:
+ l_arg = ''
+
+ new_line = ' '.join(
+ [p, complete_line(l_arg, possible_matches)]
+ ).lstrip()
+
+ if len(remove_formatting(new_line)) > len(line):
+ line = new_line
+ cursor = len(line)
+ elif hits >= 2:
+ max_list = self.console_config['cmdline']['torrents_per_tab_press']
+ match_count = len(possible_matches)
+ listed = (hits - 2) * max_list
+ pages = (match_count - 1) // max_list + 1
+ left = match_count - listed
+ if hits == 2:
+ self.write(' ')
+
+ if match_count >= 4:
+ self.write('{!green!}Autocompletion matches:')
+ # Only list some of the matching torrents as there can be hundreds of them
+ if self.console_config['cmdline']['third_tab_lists_all']:
+ if hits == 2 and left > max_list:
+ for i in range(listed, listed + max_list):
+ match = possible_matches[i]
+ self.write(match.replace(r'\ ', ' '))
+ self.write(
+ '{!error!}And %i more. Press <tab> to list them'
+ % (left - max_list)
+ )
+ else:
+ self.tab_count = 0
+ for match in possible_matches[listed:]:
+ self.write(match.replace(r'\ ', ' '))
+ else:
+ if left > max_list:
+ for i in range(listed, listed + max_list):
+ match = possible_matches[i]
+ self.write(match.replace(r'\ ', ' '))
+ self.write(
+ '{!error!}And %i more (%i/%i). Press <tab> to view more'
+ % (left - max_list, hits - 1, pages)
+ )
+ else:
+ self.tab_count = 0
+ for match in possible_matches[listed:]:
+ self.write(match.replace(r'\ ', ' '))
+ if hits > 2:
+ self.write(
+ '{!green!}Finished listing %i torrents (%i/%i)'
+ % (match_count, hits - 1, pages)
+ )
+
+ # We only want to print eventual colors or other control characters, not return them
+ line = remove_formatting(line)
+ cursor = len(line)
+ return (line, cursor)
+
+ def tab_complete_path(
+ self, line, path_type='file', ext='', sort='name', dirs_first=1
+ ):
+ self.console = component.get('ConsoleUI')
+
+ line = line.replace('\\ ', ' ')
+ line = os.path.abspath(os.path.expanduser(line))
+ ret = []
+ if os.path.exists(line):
+ # This is a correct path, check to see if it's a directory
+ if os.path.isdir(line):
+ # Directory, so we need to show contents of directory
+ # ret.extend(os.listdir(line))
+ try:
+ for f in os.listdir(line):
+ # Skip hidden
+ if f.startswith('.'):
+ continue
+ f = os.path.join(line, f)
+ if os.path.isdir(f):
+ if os.sep == '\\': # Windows path support
+ f += '\\'
+ else: # Unix
+ f += '/'
+ elif not f.endswith(ext):
+ continue
+ ret.append(f)
+ except OSError:
+ self.console.write('{!error!}Permission denied: {!info!}%s' % line)
+ else:
+ try:
+ # This is a file, but we could be looking for another file that
+ # shares a common prefix.
+ for f in os.listdir(os.path.dirname(line)):
+ if f.startswith(os.path.split(line)[1]):
+ ret.append(os.path.join(os.path.dirname(line), f))
+ except OSError:
+ self.console.write('{!error!}Permission denied: {!info!}%s' % line)
+ else:
+ # This path does not exist, so lets do a listdir on it's parent
+ # and find any matches.
+ try:
+ ret = []
+ if os.path.isdir(os.path.dirname(line)):
+ for f in os.listdir(os.path.dirname(line)):
+ if f.startswith(os.path.split(line)[1]):
+ p = os.path.join(os.path.dirname(line), f)
+
+ if os.path.isdir(p):
+ if os.sep == '\\': # Windows path support
+ p += '\\'
+ else: # Unix
+ p += '/'
+ ret.append(p)
+ except OSError:
+ self.console.write('{!error!}Permission denied: {!info!}%s' % line)
+
+ if sort == 'date':
+ ret = sorted(ret, key=os.path.getmtime, reverse=True)
+
+ if dirs_first == 1:
+ ret = sorted(ret, key=os.path.isdir, reverse=True)
+ elif dirs_first == -1:
+ ret = sorted(ret, key=os.path.isdir, reverse=False)
+
+ # Highlight directory names
+ for i, filename in enumerate(ret):
+ if os.path.isdir(filename):
+ ret[i] = '{!cyan!}%s' % filename
+
+ for i in range(0, len(ret)):
+ ret[i] = ret[i].replace(' ', r'\ ')
+ return ret
+
+ def tab_complete_torrent(self, line):
+ """
+ Completes torrent_ids or names.
+
+ :param line: str, the string to complete
+
+ :returns: list of matches
+
+ """
+
+ empty = len(line) == 0
+
+ # Remove dangling backslashes to avoid breaking shlex
+ if line.endswith('\\'):
+ line = line[:-1]
+
+ raw_line = line
+ line = line.replace('\\ ', ' ')
+
+ possible_matches = []
+ possible_matches2 = []
+
+ match_count = 0
+ match_count2 = 0
+ for torrent_id, torrent_name in self.console.torrents:
+ if torrent_id.startswith(line):
+ match_count += 1
+ if torrent_name.startswith(line):
+ match_count += 1
+ elif torrent_name.lower().startswith(line.lower()):
+ match_count2 += 1
+
+ # Find all possible matches
+ for torrent_id, torrent_name in self.console.torrents:
+ # Escape spaces to avoid, for example, expanding "Doc" into "Doctor Who" and removing
+ # everything containing one of these words
+ escaped_name = torrent_name.replace(' ', '\\ ')
+ # If we only matched one torrent, don't add the full name or it'll also get autocompleted
+ if match_count == 1:
+ if torrent_id.startswith(line):
+ possible_matches.append(torrent_id)
+ break
+ if torrent_name.startswith(line):
+ possible_matches.append(escaped_name)
+ break
+ elif match_count == 0 and match_count2 == 1:
+ if torrent_name.lower().startswith(line.lower()):
+ possible_matches.append(escaped_name)
+ break
+ else:
+ line_len = len(raw_line)
+
+ # Let's avoid listing all torrents twice if there's no pattern
+ if not empty and torrent_id.startswith(line):
+ # Highlight the matching part
+ text = '{{!info!}}{}{{!input!}}{} - "{}"'.format(
+ torrent_id[:line_len],
+ torrent_id[line_len:],
+ torrent_name,
+ )
+ possible_matches.append(text)
+ if torrent_name.startswith(line):
+ text = '{{!info!}}{}{{!input!}}{} ({{!cyan!}}{}{{!input!}})'.format(
+ escaped_name[:line_len],
+ escaped_name[line_len:],
+ torrent_id,
+ )
+ possible_matches.append(text)
+ elif torrent_name.lower().startswith(line.lower()):
+ text = '{{!info!}}{}{{!input!}}{} ({{!cyan!}}{}{{!input!}})'.format(
+ escaped_name[:line_len],
+ escaped_name[line_len:],
+ torrent_id,
+ )
+ possible_matches2.append(text)
+
+ return possible_matches + possible_matches2
diff --git a/deluge/ui/console/modes/connectionmanager.py b/deluge/ui/console/modes/connectionmanager.py
new file mode 100644
index 0000000..ce8b6f5
--- /dev/null
+++ b/deluge/ui/console/modes/connectionmanager.py
@@ -0,0 +1,211 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.decorators import overrides
+from deluge.ui.console.modes.basemode import BaseMode
+from deluge.ui.console.utils.curses_util import is_printable_chr
+from deluge.ui.console.widgets.popup import InputPopup, PopupsHandler, SelectablePopup
+from deluge.ui.hostlist import HostList
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+
+class ConnectionManager(BaseMode, PopupsHandler):
+ def __init__(self, stdscr, encoding=None):
+ PopupsHandler.__init__(self)
+ self.statuses = {}
+ self.all_torrents = None
+ self.hostlist = HostList()
+ BaseMode.__init__(self, stdscr, encoding=encoding)
+
+ def update_select_host_popup(self):
+ if self.popup and not isinstance(self.popup, SelectablePopup):
+ # Ignore MessagePopup on popup stack upon connect fail
+ return
+
+ selected_index = self.popup.current_selection() if self.popup else None
+
+ popup = SelectablePopup(
+ self,
+ _('Select Host'),
+ self._host_selected,
+ border_off_west=1,
+ active_wrap=True,
+ )
+ popup.add_header(
+ "{!white,black,bold!}'Q'=%s, 'a'=%s, 'D'=%s"
+ % (_('Quit'), _('Add Host'), _('Delete Host')),
+ space_below=True,
+ )
+
+ for host_entry in self.hostlist.get_hosts_info():
+ host_id, hostname, port, user = host_entry
+ host_status = self.statuses.get(host_id)
+
+ state = host_status[1] if host_status else 'Offline'
+ state_color = 'green' if state in ('Online', 'Connected') else 'red'
+ host_str = f'{hostname}:{port} [{state}]'
+
+ args = {'data': host_id, 'foreground': state_color}
+ popup.add_line(
+ host_id, host_str, selectable=True, use_underline=True, **args
+ )
+
+ if selected_index:
+ popup.set_selection(selected_index)
+
+ self.push_popup(popup, clear=True)
+ self.inlist = True
+ self.refresh()
+
+ def update_hosts_status(self):
+ def on_host_status(status_info):
+ self.statuses[status_info[0]] = status_info
+ self.update_select_host_popup()
+
+ for host_entry in self.hostlist.get_hosts_info():
+ self.hostlist.get_host_status(host_entry[0]).addCallback(on_host_status)
+
+ def _on_connected(self, result):
+ def on_console_start(result):
+ component.get('ConsoleUI').set_mode('TorrentList')
+
+ d = component.get('ConsoleUI').start_console()
+ d.addCallback(on_console_start)
+
+ def _on_connect_fail(self, result):
+ self.report_message('Failed to connect!', result.getErrorMessage())
+ self.refresh()
+ if hasattr(result, 'getTraceback'):
+ log.exception(result)
+
+ def _host_selected(self, selected_host, *args, **kwargs):
+ if selected_host in self.statuses:
+ d = self.hostlist.connect_host(selected_host)
+ d.addCallback(self._on_connected)
+ d.addErrback(self._on_connect_fail)
+
+ def _do_add(self, result, **kwargs):
+ if not result or kwargs.get('close', False):
+ self.pop_popup()
+ else:
+ self.add_host(
+ result['hostname']['value'],
+ result['port']['value'],
+ result['username']['value'],
+ result['password']['value'],
+ )
+
+ def add_popup(self):
+ self.inlist = False
+ popup = InputPopup(
+ self,
+ _('Add Host (Up & Down arrows to navigate, Esc to cancel)'),
+ border_off_north=1,
+ border_off_east=1,
+ close_cb=self._do_add,
+ )
+ popup.add_text_input('hostname', _('Hostname:'))
+ popup.add_text_input('port', _('Port:'))
+ popup.add_text_input('username', _('Username:'))
+ popup.add_text_input('password', _('Password:'))
+ self.push_popup(popup, clear=True)
+ self.refresh()
+
+ def add_host(self, hostname, port, username, password):
+ log.info('Adding host: %s', hostname)
+ if port.isdecimal():
+ port = int(port)
+ try:
+ self.hostlist.add_host(hostname, port, username, password)
+ except ValueError as ex:
+ self.report_message(_('Error adding host'), f'{hostname}: {ex}')
+ else:
+ self.pop_popup()
+
+ def delete_host(self, host_id):
+ log.info('Deleting host: %s', host_id)
+ self.hostlist.remove_host(host_id)
+ self.update_select_host_popup()
+
+ @overrides(component.Component)
+ def start(self):
+ self.refresh()
+
+ @overrides(component.Component)
+ def update(self):
+ self.update_hosts_status()
+
+ @overrides(BaseMode)
+ def pause(self):
+ self.pop_popup()
+ BaseMode.pause(self)
+
+ @overrides(BaseMode)
+ def resume(self):
+ BaseMode.resume(self)
+ self.refresh()
+
+ @overrides(BaseMode)
+ def refresh(self):
+ if self.mode_paused():
+ return
+
+ self.stdscr.erase()
+ self.draw_statusbars()
+ self.stdscr.noutrefresh()
+
+ if not self.popup:
+ self.update_select_host_popup()
+
+ if self.popup:
+ self.popup.refresh()
+
+ curses.doupdate()
+
+ @overrides(BaseMode)
+ def on_resize(self, rows, cols):
+ BaseMode.on_resize(self, rows, cols)
+
+ if self.popup:
+ self.popup.handle_resize()
+
+ self.stdscr.erase()
+ self.refresh()
+
+ @overrides(BaseMode)
+ def read_input(self):
+ c = self.stdscr.getch()
+
+ if is_printable_chr(c):
+ if chr(c) == 'Q':
+ component.get('ConsoleUI').quit()
+ elif self.inlist:
+ if chr(c) == 'q':
+ return
+ elif chr(c) == 'D':
+ host_index = self.popup.current_selection()
+ host_id = self.popup.inputs[host_index].name
+ self.delete_host(host_id)
+ return
+ elif chr(c) == 'a':
+ self.add_popup()
+ return
+
+ if self.popup:
+ if self.popup.handle_read(c) and self.popup.closed():
+ self.pop_popup()
+ self.refresh()
diff --git a/deluge/ui/console/modes/eventview.py b/deluge/ui/console/modes/eventview.py
new file mode 100644
index 0000000..b6e63b0
--- /dev/null
+++ b/deluge/ui/console/modes/eventview.py
@@ -0,0 +1,112 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.decorators import overrides
+from deluge.ui.console.modes.basemode import BaseMode
+from deluge.ui.console.utils import curses_util as util
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+
+class EventView(BaseMode):
+ def __init__(self, parent_mode, stdscr, encoding=None):
+ BaseMode.__init__(self, stdscr, encoding)
+ self.parent_mode = parent_mode
+ self.offset = 0
+
+ def back_to_overview(self):
+ component.get('ConsoleUI').set_mode(self.parent_mode.mode_name)
+
+ @overrides(component.Component)
+ def update(self):
+ self.refresh()
+
+ @overrides(BaseMode)
+ def refresh(self):
+ """
+ This method just shows each line of the event log
+ """
+ events = component.get('ConsoleUI').events
+
+ self.stdscr.erase()
+ self.draw_statusbars()
+
+ if events:
+ for i, event in enumerate(events):
+ if i - self.offset >= self.rows - 2:
+ more = len(events) - self.offset - self.rows + 2
+ if more > 0:
+ self.add_string(i - self.offset, ' (And %i more)' % more)
+ break
+
+ elif i - self.offset < 0:
+ continue
+ try:
+ self.add_string(i + 1 - self.offset, event)
+ except curses.error:
+ pass # This'll just cut the line. Note: This seriously should be fixed in a better way
+ else:
+ self.add_string(1, '{!white,black,bold!}No events to show yet')
+
+ if not component.get('ConsoleUI').is_active_mode(self):
+ return
+
+ self.stdscr.noutrefresh()
+ curses.doupdate()
+
+ @overrides(BaseMode)
+ def on_resize(self, rows, cols):
+ BaseMode.on_resize(self, rows, cols)
+ self.refresh()
+
+ @overrides(BaseMode)
+ def read_input(self):
+ c = self.stdscr.getch()
+
+ if c in [ord('q'), util.KEY_ESC]:
+ self.back_to_overview()
+ return
+
+ # TODO: Scroll event list
+ jumplen = self.rows - 3
+ num_events = len(component.get('ConsoleUI').events)
+
+ if c == curses.KEY_UP:
+ self.offset -= 1
+ elif c == curses.KEY_PPAGE:
+ self.offset -= jumplen
+ elif c == curses.KEY_HOME:
+ self.offset = 0
+ elif c == curses.KEY_DOWN:
+ self.offset += 1
+ elif c == curses.KEY_NPAGE:
+ self.offset += jumplen
+ elif c == curses.KEY_END:
+ self.offset += num_events
+ elif c == ord('j'):
+ self.offset += 1
+ elif c == ord('k'):
+ self.offset -= 1
+
+ if self.offset <= 0:
+ self.offset = 0
+ elif num_events > self.rows - 3:
+ if self.offset > num_events - self.rows + 3:
+ self.offset = num_events - self.rows + 3
+ else:
+ self.offset = 0
+
+ self.refresh()
diff --git a/deluge/ui/console/modes/preferences/__init__.py b/deluge/ui/console/modes/preferences/__init__.py
new file mode 100644
index 0000000..e827d91
--- /dev/null
+++ b/deluge/ui/console/modes/preferences/__init__.py
@@ -0,0 +1,3 @@
+from deluge.ui.console.modes.preferences.preferences import Preferences
+
+__all__ = ['Preferences']
diff --git a/deluge/ui/console/modes/preferences/preference_panes.py b/deluge/ui/console/modes/preferences/preference_panes.py
new file mode 100644
index 0000000..b47bc4b
--- /dev/null
+++ b/deluge/ui/console/modes/preferences/preference_panes.py
@@ -0,0 +1,757 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.common import is_interface
+from deluge.decorators import overrides
+from deluge.i18n import get_languages
+from deluge.ui.client import client
+from deluge.ui.common import DISK_CACHE_KEYS
+from deluge.ui.console.widgets import BaseInputPane, BaseWindow
+from deluge.ui.console.widgets.fields import FloatSpinInput, TextInput
+from deluge.ui.console.widgets.popup import PopupsHandler
+
+log = logging.getLogger(__name__)
+
+
+class BasePreferencePane(BaseInputPane, BaseWindow, PopupsHandler):
+ def __init__(self, name, preferences):
+ PopupsHandler.__init__(self)
+ self.preferences = preferences
+ BaseWindow.__init__(
+ self,
+ '%s' % name,
+ self.pane_width,
+ preferences.height,
+ posy=1,
+ posx=self.pane_x_pos,
+ )
+ BaseInputPane.__init__(self, preferences, border_off_east=1)
+ self.name = name
+
+ # have we scrolled down in the list
+ self.input_offset = 0
+
+ @overrides(BaseInputPane)
+ def handle_read(self, c):
+ if self.popup:
+ ret = self.popup.handle_read(c)
+ if self.popup and self.popup.closed():
+ self.pop_popup()
+ self.refresh()
+ return ret
+ return BaseInputPane.handle_read(self, c)
+
+ @property
+ def visible_content_pane_height(self):
+ y, x = self.visible_content_pane_size
+ return y
+
+ @property
+ def pane_x_pos(self):
+ return self.preferences.sidebar_width
+
+ @property
+ def pane_width(self):
+ return self.preferences.width
+
+ @property
+ def cols(self):
+ return self.pane_width
+
+ @property
+ def rows(self):
+ return self.preferences.height
+
+ def is_active_pane(self):
+ return self.preferences.is_active_pane(self)
+
+ def create_pane(self, core_conf, console_config):
+ pass
+
+ def add_config_values(self, conf_dict):
+ for ipt in self.inputs:
+ if ipt.has_input():
+ # Need special cases for in/out ports or proxy since they are tuples or dicts.
+ if ipt.name == 'listen_ports_to' or ipt.name == 'listen_ports_from':
+ conf_dict['listen_ports'] = (
+ self.infrom.get_value(),
+ self.into.get_value(),
+ )
+ elif ipt.name == 'out_ports_to' or ipt.name == 'out_ports_from':
+ conf_dict['outgoing_ports'] = (
+ self.outfrom.get_value(),
+ self.outto.get_value(),
+ )
+ elif ipt.name == 'listen_interface':
+ listen_interface = ipt.get_value().strip()
+ if is_interface(listen_interface) or not listen_interface:
+ conf_dict['listen_interface'] = listen_interface
+ elif ipt.name == 'outgoing_interface':
+ outgoing_interface = ipt.get_value().strip()
+ if is_interface(outgoing_interface) or not outgoing_interface:
+ conf_dict['outgoing_interface'] = outgoing_interface
+ elif ipt.name.startswith('proxy_'):
+ if ipt.name == 'proxy_type':
+ conf_dict.setdefault('proxy', {})['type'] = ipt.get_value()
+ elif ipt.name == 'proxy_username':
+ conf_dict.setdefault('proxy', {})['username'] = ipt.get_value()
+ elif ipt.name == 'proxy_password':
+ conf_dict.setdefault('proxy', {})['password'] = ipt.get_value()
+ elif ipt.name == 'proxy_hostname':
+ conf_dict.setdefault('proxy', {})['hostname'] = ipt.get_value()
+ elif ipt.name == 'proxy_port':
+ conf_dict.setdefault('proxy', {})['port'] = ipt.get_value()
+ elif ipt.name == 'proxy_hostnames':
+ conf_dict.setdefault('proxy', {})[
+ 'proxy_hostnames'
+ ] = ipt.get_value()
+ elif ipt.name == 'proxy_peer_connections':
+ conf_dict.setdefault('proxy', {})[
+ 'proxy_peer_connections'
+ ] = ipt.get_value()
+ elif ipt.name == 'proxy_tracker_connections':
+ conf_dict.setdefault('proxy', {})[
+ 'proxy_tracker_connections'
+ ] = ipt.get_value()
+ elif ipt.name == 'force_proxy':
+ conf_dict.setdefault('proxy', {})['force_proxy'] = ipt.get_value()
+ elif ipt.name == 'anonymous_mode':
+ conf_dict.setdefault('proxy', {})[
+ 'anonymous_mode'
+ ] = ipt.get_value()
+ else:
+ conf_dict[ipt.name] = ipt.get_value()
+
+ if hasattr(ipt, 'get_child'):
+ c = ipt.get_child()
+ conf_dict[c.name] = c.get_value()
+
+ def update_values(self, conf_dict):
+ for ipt in self.inputs:
+ if ipt.has_input():
+ try:
+ ipt.set_value(conf_dict[ipt.name])
+ except KeyError: # just ignore if it's not in dict
+ pass
+ if hasattr(ipt, 'get_child'):
+ try:
+ c = ipt.get_child()
+ c.set_value(conf_dict[c.name])
+ except KeyError: # just ignore if it's not in dict
+ pass
+
+ def render(self, mode, screen, width, focused):
+ height = self.get_content_height()
+ self.ensure_content_pane_height(height)
+ self.screen.erase()
+
+ if focused and self.active_input == -1:
+ self.move_active_down(1)
+
+ self.render_inputs(focused=focused)
+
+ @overrides(BaseWindow)
+ def refresh(self):
+ BaseWindow.refresh(self)
+ if self.popup:
+ self.popup.refresh()
+
+ def update(self, active):
+ pass
+
+
+class InterfacePane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Interface'), preferences)
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ self.add_header(_('General options'))
+
+ self.add_checked_input(
+ 'ring_bell',
+ _('Ring system bell when a download finishes'),
+ console_config['ring_bell'],
+ )
+ self.add_header('Console UI', space_above=True)
+ self.add_checked_input(
+ 'separate_complete',
+ _('List complete torrents after incomplete regardless of sorting order'),
+ console_config['torrentview']['separate_complete'],
+ )
+ self.add_checked_input(
+ 'move_selection',
+ _('Move selection when moving torrents in the queue'),
+ console_config['torrentview']['move_selection'],
+ )
+
+ langs = get_languages()
+ langs.insert(0, ('', 'System Default'))
+ self.add_combo_input(
+ 'language', _('Language'), langs, default=console_config['language']
+ )
+ self.add_header(_('Command Line Mode'), space_above=True)
+ self.add_checked_input(
+ 'ignore_duplicate_lines',
+ _('Do not store duplicate input in history'),
+ console_config['cmdline']['ignore_duplicate_lines'],
+ )
+ self.add_checked_input(
+ 'save_command_history',
+ _('Store and load command line history in command line mode'),
+ console_config['cmdline']['save_command_history'],
+ )
+ self.add_header('')
+ self.add_checked_input(
+ 'third_tab_lists_all',
+ _('Third tab lists all remaining torrents in command line mode'),
+ console_config['cmdline']['third_tab_lists_all'],
+ )
+ self.add_int_spin_input(
+ 'torrents_per_tab_press',
+ _('Torrents per tab press'),
+ console_config['cmdline']['torrents_per_tab_press'],
+ min_val=5,
+ max_val=10000,
+ )
+
+
+class DownloadsPane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Downloads'), preferences)
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ self.add_header(_('Folders'))
+ self.add_text_input(
+ 'download_location',
+ '%s:' % _('Download To'),
+ core_conf['download_location'],
+ complete=True,
+ activate_input=True,
+ col='+1',
+ )
+ cmptxt = TextInput(
+ self.preferences,
+ 'move_completed_path',
+ None,
+ self.move,
+ self.pane_width,
+ core_conf['move_completed_path'],
+ False,
+ )
+ self.add_checkedplus_input(
+ 'move_completed',
+ '%s:' % _('Move completed to'),
+ cmptxt,
+ core_conf['move_completed'],
+ )
+ copytxt = TextInput(
+ self.preferences,
+ 'torrentfiles_location',
+ None,
+ self.move,
+ self.pane_width,
+ core_conf['torrentfiles_location'],
+ False,
+ )
+ self.add_checkedplus_input(
+ 'copy_torrent_file',
+ '%s:' % _('Copy of .torrent files to'),
+ copytxt,
+ core_conf['copy_torrent_file'],
+ )
+ self.add_checked_input(
+ 'del_copy_torrent_file',
+ _('Delete copy of torrent file on remove'),
+ core_conf['del_copy_torrent_file'],
+ )
+
+ self.add_header(_('Options'), space_above=True)
+ self.add_checked_input(
+ 'prioritize_first_last_pieces',
+ ('Prioritize first and last pieces of torrent'),
+ core_conf['prioritize_first_last_pieces'],
+ )
+ self.add_checked_input(
+ 'sequential_download',
+ _('Sequential download'),
+ core_conf['sequential_download'],
+ )
+ self.add_checked_input('add_paused', _('Add Paused'), core_conf['add_paused'])
+ self.add_checked_input(
+ 'pre_allocate_storage',
+ _('Pre-Allocate disk space'),
+ core_conf['pre_allocate_storage'],
+ )
+
+
+class NetworkPane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Network'), preferences)
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ self.add_header(_('Incomming Ports'))
+ inrand = self.add_checked_input(
+ 'random_port',
+ 'Use Random Ports Active Port: %d' % self.preferences.active_port,
+ core_conf['random_port'],
+ )
+ listen_ports = core_conf['listen_ports']
+ self.infrom = self.add_int_spin_input(
+ 'listen_ports_from',
+ ' %s:' % _('From'),
+ value=listen_ports[0],
+ min_val=0,
+ max_val=65535,
+ )
+ self.infrom.set_depend(inrand, inverse=True)
+ self.into = self.add_int_spin_input(
+ 'listen_ports_to',
+ ' %s:' % _('To'),
+ value=listen_ports[1],
+ min_val=0,
+ max_val=65535,
+ )
+ self.into.set_depend(inrand, inverse=True)
+
+ self.add_header(_('Outgoing Ports'), space_above=True)
+ outrand = self.add_checked_input(
+ 'random_outgoing_ports',
+ _('Use Random Ports'),
+ core_conf['random_outgoing_ports'],
+ )
+ out_ports = core_conf['outgoing_ports']
+ self.outfrom = self.add_int_spin_input(
+ 'out_ports_from',
+ ' %s:' % _('From'),
+ value=out_ports[0],
+ min_val=0,
+ max_val=65535,
+ )
+ self.outfrom.set_depend(outrand, inverse=True)
+ self.outto = self.add_int_spin_input(
+ 'out_ports_to',
+ ' %s:' % _('To'),
+ value=out_ports[1],
+ min_val=0,
+ max_val=65535,
+ )
+ self.outto.set_depend(outrand, inverse=True)
+
+ self.add_header(_('Incoming Interface'), space_above=True)
+ self.add_text_input(
+ 'listen_interface',
+ _('IP address of the interface to listen on (leave empty for default):'),
+ core_conf['listen_interface'],
+ )
+
+ self.add_header(_('Outgoing Interface'), space_above=True)
+ self.add_text_input(
+ 'outgoing_interface',
+ _(
+ 'The network interface name or IP address for outgoing '
+ 'BitTorrent connections. (Leave empty for default.):'
+ ),
+ core_conf['outgoing_interface'],
+ )
+
+ self.add_header('TOS', space_above=True)
+ self.add_text_input('peer_tos', 'Peer TOS Byte:', core_conf['peer_tos'])
+
+ self.add_header(_('Network Extras'), space_above=True)
+ self.add_checked_input('upnp', 'UPnP', core_conf['upnp'])
+ self.add_checked_input('natpmp', 'NAT-PMP', core_conf['natpmp'])
+ self.add_checked_input('utpex', 'Peer Exchange', core_conf['utpex'])
+ self.add_checked_input('lsd', 'LSD', core_conf['lsd'])
+ self.add_checked_input('dht', 'DHT', core_conf['dht'])
+
+ self.add_header(_('Encryption'), space_above=True)
+ self.add_select_input(
+ 'enc_in_policy',
+ '%s:' % _('Inbound'),
+ [_('Forced'), _('Enabled'), _('Disabled')],
+ [0, 1, 2],
+ core_conf['enc_in_policy'],
+ active_default=True,
+ col='+1',
+ )
+ self.add_select_input(
+ 'enc_out_policy',
+ '%s:' % _('Outbound'),
+ [_('Forced'), _('Enabled'), _('Disabled')],
+ [0, 1, 2],
+ core_conf['enc_out_policy'],
+ active_default=True,
+ )
+ self.add_select_input(
+ 'enc_level',
+ '%s:' % _('Level'),
+ [_('Handshake'), _('Full Stream'), _('Either')],
+ [0, 1, 2],
+ core_conf['enc_level'],
+ active_default=True,
+ )
+
+
+class BandwidthPane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Bandwidth'), preferences)
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ self.add_header(_('Global Bandwidth Usage'))
+ self.add_int_spin_input(
+ 'max_connections_global',
+ '%s:' % _('Maximum Connections'),
+ core_conf['max_connections_global'],
+ min_val=-1,
+ max_val=9000,
+ )
+ self.add_int_spin_input(
+ 'max_upload_slots_global',
+ '%s:' % _('Maximum Upload Slots'),
+ core_conf['max_upload_slots_global'],
+ min_val=-1,
+ max_val=9000,
+ )
+ self.add_float_spin_input(
+ 'max_download_speed',
+ '%s:' % _('Maximum Download Speed (KiB/s)'),
+ core_conf['max_download_speed'],
+ min_val=-1.0,
+ max_val=60000.0,
+ )
+ self.add_float_spin_input(
+ 'max_upload_speed',
+ '%s:' % _('Maximum Upload Speed (KiB/s)'),
+ core_conf['max_upload_speed'],
+ min_val=-1.0,
+ max_val=60000.0,
+ )
+ self.add_int_spin_input(
+ 'max_half_open_connections',
+ '%s:' % _('Maximum Half-Open Connections'),
+ core_conf['max_half_open_connections'],
+ min_val=-1,
+ max_val=9999,
+ )
+ self.add_int_spin_input(
+ 'max_connections_per_second',
+ '%s:' % _('Maximum Connection Attempts per Second'),
+ core_conf['max_connections_per_second'],
+ min_val=-1,
+ max_val=9999,
+ )
+ self.add_checked_input(
+ 'ignore_limits_on_local_network',
+ _('Ignore limits on local network'),
+ core_conf['ignore_limits_on_local_network'],
+ )
+ self.add_checked_input(
+ 'rate_limit_ip_overhead',
+ _('Rate Limit IP Overhead'),
+ core_conf['rate_limit_ip_overhead'],
+ )
+ self.add_header(_('Per Torrent Bandwidth Usage'), space_above=True)
+ self.add_int_spin_input(
+ 'max_connections_per_torrent',
+ '%s:' % _('Maximum Connections'),
+ core_conf['max_connections_per_torrent'],
+ min_val=-1,
+ max_val=9000,
+ )
+ self.add_int_spin_input(
+ 'max_upload_slots_per_torrent',
+ '%s:' % _('Maximum Upload Slots'),
+ core_conf['max_upload_slots_per_torrent'],
+ min_val=-1,
+ max_val=9000,
+ )
+ self.add_float_spin_input(
+ 'max_download_speed_per_torrent',
+ '%s:' % _('Maximum Download Speed (KiB/s)'),
+ core_conf['max_download_speed_per_torrent'],
+ min_val=-1.0,
+ max_val=60000.0,
+ )
+ self.add_float_spin_input(
+ 'max_upload_speed_per_torrent',
+ '%s:' % _('Maximum Upload Speed (KiB/s)'),
+ core_conf['max_upload_speed_per_torrent'],
+ min_val=-1.0,
+ max_val=60000.0,
+ )
+
+
+class OtherPane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Other'), preferences)
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ self.add_header(_('System Information'))
+ self.add_info_field('info1', ' Help us improve Deluge by sending us your', '')
+ self.add_info_field(
+ 'info2', ' Python version, PyGTK version, OS and processor', ''
+ )
+ self.add_info_field(
+ 'info3', ' types. Absolutely no other information is sent.', ''
+ )
+ self.add_checked_input(
+ 'send_info',
+ _('Yes, please send anonymous statistics.'),
+ core_conf['send_info'],
+ )
+ self.add_header(_('GeoIP Database'), space_above=True)
+ self.add_text_input(
+ 'geoip_db_location', 'Location:', core_conf['geoip_db_location']
+ )
+
+
+class DaemonPane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Daemon'), preferences)
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ self.add_header('Port')
+ self.add_int_spin_input(
+ 'daemon_port',
+ '%s:' % _('Daemon Port'),
+ core_conf['daemon_port'],
+ min_val=0,
+ max_val=65535,
+ )
+ self.add_header('Connections', space_above=True)
+ self.add_checked_input(
+ 'allow_remote', _('Allow remote connections'), core_conf['allow_remote']
+ )
+ self.add_header('Other', space_above=True)
+ self.add_checked_input(
+ 'new_release_check',
+ _('Periodically check the website for new releases'),
+ core_conf['new_release_check'],
+ )
+
+
+class QueuePane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Queue'), preferences)
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ self.add_header(_('New Torrents'))
+ self.add_checked_input(
+ 'queue_new_to_top', _('Queue to top'), core_conf['queue_new_to_top']
+ )
+ self.add_header(_('Active Torrents'), True)
+ self.add_int_spin_input(
+ 'max_active_limit',
+ '%s:' % _('Total'),
+ core_conf['max_active_limit'],
+ min_val=-1,
+ max_val=9999,
+ )
+ self.add_int_spin_input(
+ 'max_active_downloading',
+ '%s:' % _('Downloading'),
+ core_conf['max_active_downloading'],
+ min_val=-1,
+ max_val=9999,
+ )
+ self.add_int_spin_input(
+ 'max_active_seeding',
+ '%s:' % _('Seeding'),
+ core_conf['max_active_seeding'],
+ min_val=-1,
+ max_val=9999,
+ )
+ self.add_checked_input(
+ 'dont_count_slow_torrents',
+ 'Ignore slow torrents',
+ core_conf['dont_count_slow_torrents'],
+ )
+ self.add_checked_input(
+ 'auto_manage_prefer_seeds',
+ 'Prefer seeding torrents',
+ core_conf['auto_manage_prefer_seeds'],
+ )
+ self.add_header(_('Seeding Rotation'), space_above=True)
+ self.add_float_spin_input(
+ 'share_ratio_limit',
+ '%s:' % _('Share Ratio'),
+ core_conf['share_ratio_limit'],
+ precision=2,
+ min_val=-1.0,
+ max_val=100.0,
+ )
+ self.add_float_spin_input(
+ 'seed_time_ratio_limit',
+ '%s:' % _('Time Ratio'),
+ core_conf['seed_time_ratio_limit'],
+ precision=2,
+ min_val=-1.0,
+ max_val=100.0,
+ )
+ self.add_int_spin_input(
+ 'seed_time_limit',
+ '%s:' % _('Time (m)'),
+ core_conf['seed_time_limit'],
+ min_val=1,
+ max_val=10000,
+ )
+ seedratio = FloatSpinInput(
+ self.mode,
+ 'stop_seed_ratio',
+ '',
+ self.move,
+ core_conf['stop_seed_ratio'],
+ precision=2,
+ inc_amt=0.1,
+ min_val=0.5,
+ max_val=100.0,
+ )
+ self.add_checkedplus_input(
+ 'stop_seed_at_ratio',
+ '%s:' % _('Share Ratio Reached'),
+ seedratio,
+ core_conf['stop_seed_at_ratio'],
+ )
+ self.add_checked_input(
+ 'remove_seed_at_ratio',
+ _('Remove torrent (Unchecked pauses torrent)'),
+ core_conf['remove_seed_at_ratio'],
+ )
+
+
+class ProxyPane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Proxy'), preferences)
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ proxy = core_conf['proxy']
+
+ self.add_header(_('Proxy Settings'))
+ self.add_header(_('Proxy'), space_above=True)
+ self.add_int_spin_input(
+ 'proxy_type', '%s:' % _('Type'), proxy['type'], min_val=0, max_val=5
+ )
+ self.add_text_input('proxy_username', '%s:' % _('Username'), proxy['username'])
+ self.add_text_input('proxy_password', '%s:' % _('Password'), proxy['password'])
+ self.add_text_input('proxy_hostname', '%s:' % _('Hostname'), proxy['hostname'])
+ self.add_int_spin_input(
+ 'proxy_port', '%s:' % _('Port'), proxy['port'], min_val=0, max_val=65535
+ )
+ self.add_checked_input(
+ 'proxy_hostnames', _('Proxy Hostnames'), proxy['proxy_hostnames']
+ )
+ self.add_checked_input(
+ 'proxy_peer_connections', _('Proxy Peers'), proxy['proxy_peer_connections']
+ )
+ self.add_checked_input(
+ 'proxy_tracker_connections',
+ _('Proxy Trackers'),
+ proxy['proxy_tracker_connections'],
+ )
+ self.add_header('%s' % _('Force Proxy'), space_above=True)
+ self.add_checked_input('force_proxy', _('Force Proxy'), proxy['force_proxy'])
+ self.add_checked_input(
+ 'anonymous_mode', _('Hide Client Identity'), proxy['anonymous_mode']
+ )
+ self.add_header('%s' % _('Proxy Type Help'), space_above=True)
+ self.add_text_area(
+ 'proxy_text_area',
+ ' 0: None 1: Socks4\n'
+ ' 2: Socks5 3: Socks5 Auth\n'
+ ' 4: HTTP 5: HTTP Auth\n'
+ ' 6: I2P',
+ )
+
+
+class CachePane(BasePreferencePane):
+ def __init__(self, preferences):
+ BasePreferencePane.__init__(self, ' %s ' % _('Cache'), preferences)
+ self.created = False
+
+ @overrides(BasePreferencePane)
+ def create_pane(self, core_conf, console_config):
+ self.core_conf = core_conf
+
+ def build_pane(self, core_conf, status):
+ self.created = True
+ self.add_header(_('Settings'), space_below=True)
+ self.add_int_spin_input(
+ 'cache_size',
+ '%s:' % _('Cache Size (16 KiB blocks)'),
+ core_conf['cache_size'],
+ min_val=0,
+ max_val=99999,
+ )
+ self.add_int_spin_input(
+ 'cache_expiry',
+ '%s:' % _('Cache Expiry (seconds)'),
+ core_conf['cache_expiry'],
+ min_val=1,
+ max_val=32000,
+ )
+ self.add_header(' %s' % _('Write'), space_above=True)
+ self.add_info_field(
+ 'blocks_written',
+ ' %s:' % _('Blocks Written'),
+ status['disk.num_blocks_written'],
+ )
+ self.add_info_field(
+ 'writes', ' %s:' % _('Writes'), status['disk.num_write_ops']
+ )
+ self.add_info_field(
+ 'write_hit_ratio',
+ ' %s:' % _('Write Cache Hit Ratio'),
+ '%.2f' % status['write_hit_ratio'],
+ )
+ self.add_header(' %s' % _('Read'))
+ self.add_info_field(
+ 'blocks_read', ' %s:' % _('Blocks Read'), status['disk.num_blocks_read']
+ )
+ self.add_info_field('reads', ' %s:' % _('Reads'), status['disk.num_read_ops'])
+ self.add_info_field(
+ 'read_hit_ratio',
+ ' %s:' % _('Read Cache Hit Ratio'),
+ '%.2f' % status['read_hit_ratio'],
+ )
+ self.add_header(' %s' % _('Size'))
+ self.add_info_field(
+ 'cache_size_info',
+ ' %s:' % _('Cache Size'),
+ status['disk.disk_blocks_in_use'],
+ )
+ self.add_info_field(
+ 'read_cache_size',
+ ' %s:' % _('Read Cache Size'),
+ status['disk.read_cache_blocks'],
+ )
+
+ @overrides(BasePreferencePane)
+ def update(self, active):
+ if active:
+ client.core.get_session_status(DISK_CACHE_KEYS).addCallback(
+ self.update_cache_status_fields
+ )
+
+ def update_cache_status_fields(self, status):
+ if not self.created:
+ self.build_pane(self.core_conf, status)
+ else:
+ for ipt in self.inputs:
+ if not ipt.has_input() and ipt.name in status:
+ ipt.set_value(status[ipt.name])
+ self.preferences.refresh()
diff --git a/deluge/ui/console/modes/preferences/preferences.py b/deluge/ui/console/modes/preferences/preferences.py
new file mode 100644
index 0000000..2c95323
--- /dev/null
+++ b/deluge/ui/console/modes/preferences/preferences.py
@@ -0,0 +1,376 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+from collections import deque
+
+import deluge.component as component
+from deluge.decorators import overrides
+from deluge.ui.client import client
+from deluge.ui.console.modes.basemode import BaseMode
+from deluge.ui.console.modes.preferences.preference_panes import (
+ BandwidthPane,
+ CachePane,
+ DaemonPane,
+ DownloadsPane,
+ InterfacePane,
+ NetworkPane,
+ OtherPane,
+ ProxyPane,
+ QueuePane,
+)
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.widgets.fields import SelectInput
+from deluge.ui.console.widgets.popup import MessagePopup, PopupsHandler
+from deluge.ui.console.widgets.sidebar import Sidebar
+
+try:
+ import curses
+except ImportError:
+ pass
+
+
+log = logging.getLogger(__name__)
+
+
+# Big help string that gets displayed when the user hits 'h'
+HELP_STR = """This screen lets you view and configure various options in deluge.
+
+There are three main sections to this screen. Only one section is active at a time. \
+You can switch the active section by hitting TAB (or Shift-TAB to go back one)
+
+The section on the left displays the various categories that the settings fall in. \
+You can navigate the list using the up/down arrows
+
+The section on the right shows the settings for the selected category. When this \
+section is active you can navigate the various settings with the up/down arrows. \
+Special keys for each input type are described below.
+
+The final section is at the bottom right, the: [Cancel] [Apply] [OK] buttons.
+When this section is active, simply select the option you want using the arrow
+keys and press Enter to confim.
+
+
+Special keys for various input types are as follows:
+- For text inputs you can simply type in the value.
+
+{|indent: |}- For numeric inputs (indicated by the value being in []s), you can type a value, \
+or use PageUp and PageDown to increment/decrement the value.
+
+- For checkbox inputs use the spacebar to toggle
+
+{|indent: |}- For checkbox plus something else inputs (the something else being only visible \
+when you check the box) you can toggle the check with space, use the right \
+arrow to edit the other value, and escape to get back to the check box.
+
+"""
+
+
+class ZONE:
+ length = 3
+ CATEGORIES, PREFRENCES, ACTIONS = list(range(length))
+
+
+class PreferenceSidebar(Sidebar):
+ def __init__(self, torrentview, width):
+ height = curses.LINES - 2
+ Sidebar.__init__(
+ self, torrentview, width, height, title=None, border_off_north=1
+ )
+ self.categories = [
+ _('Interface'),
+ _('Downloads'),
+ _('Network'),
+ _('Bandwidth'),
+ _('Other'),
+ _('Daemon'),
+ _('Queue'),
+ _('Proxy'),
+ _('Cache'),
+ ]
+ for name in self.categories:
+ self.add_text_field(
+ name,
+ name,
+ selectable=True,
+ font_unfocused_active='bold',
+ color_unfocused_active='white,black',
+ )
+
+ def on_resize(self):
+ self.resize_window(curses.LINES - 2, self.width)
+
+
+class Preferences(BaseMode, PopupsHandler):
+ def __init__(self, parent_mode, stdscr, console_config, encoding=None):
+ BaseMode.__init__(self, stdscr, encoding=encoding, do_refresh=False)
+ PopupsHandler.__init__(self)
+ self.parent_mode = parent_mode
+ self.cur_cat = 0
+ self.messages = deque()
+ self.action_input = None
+ self.config_loaded = False
+ self.console_config = console_config
+ self.active_port = -1
+ self.active_zone = ZONE.CATEGORIES
+ self.sidebar_width = 15 # Width of the categories pane
+
+ self.sidebar = PreferenceSidebar(parent_mode, self.sidebar_width)
+ self.sidebar.set_focused(True)
+ self.sidebar.active_input = 0
+
+ self._calc_sizes(resize=False)
+
+ self.panes = [
+ InterfacePane(self),
+ DownloadsPane(self),
+ NetworkPane(self),
+ BandwidthPane(self),
+ OtherPane(self),
+ DaemonPane(self),
+ QueuePane(self),
+ ProxyPane(self),
+ CachePane(self),
+ ]
+
+ self.action_input = SelectInput(
+ self, None, None, [_('Cancel'), _('Apply'), _('OK')], [0, 1, 2], 0
+ )
+
+ def load_config(self):
+ if self.config_loaded:
+ return
+
+ def on_get_config(core_config):
+ self.core_config = core_config
+ self.config_loaded = True
+ for p in self.panes:
+ p.create_pane(core_config, self.console_config)
+ self.refresh()
+
+ client.core.get_config().addCallback(on_get_config)
+
+ def on_get_listen_port(port):
+ self.active_port = port
+
+ client.core.get_listen_port().addCallback(on_get_listen_port)
+
+ @property
+ def height(self):
+ # top/bottom bars: 2, Action buttons (Cancel/Apply/OK): 1
+ return self.rows - 3
+
+ @property
+ def width(self):
+ return self.prefs_width
+
+ def _calc_sizes(self, resize=True):
+ self.prefs_width = self.cols - self.sidebar_width
+
+ if not resize:
+ return
+
+ for p in self.panes:
+ p.resize_window(self.height, p.pane_width)
+
+ def _draw_preferences(self):
+ self.cur_cat = self.sidebar.active_input
+ self.panes[self.cur_cat].render(
+ self, self.stdscr, self.prefs_width, self.active_zone == ZONE.PREFRENCES
+ )
+ self.panes[self.cur_cat].refresh()
+
+ def _draw_actions(self):
+ selected = self.active_zone == ZONE.ACTIONS
+ self.stdscr.hline(self.rows - 3, self.sidebar_width, b'_', self.cols)
+ self.action_input.render(
+ self.stdscr,
+ self.rows - 2,
+ width=self.cols,
+ active=selected,
+ focus=True,
+ col=self.cols - 22,
+ )
+
+ @overrides(BaseMode)
+ def on_resize(self, rows, cols):
+ BaseMode.on_resize(self, rows, cols)
+ self._calc_sizes()
+
+ if self.popup:
+ self.popup.handle_resize()
+
+ self.sidebar.on_resize()
+ self.refresh()
+
+ @overrides(component.Component)
+ def update(self):
+ for i, p in enumerate(self.panes):
+ self.panes[i].update(i == self.cur_cat)
+
+ @overrides(BaseMode)
+ def resume(self):
+ BaseMode.resume(self)
+ self.sidebar.show()
+
+ @overrides(BaseMode)
+ def refresh(self):
+ if (
+ not component.get('ConsoleUI').is_active_mode(self)
+ or not self.config_loaded
+ ):
+ return
+
+ if self.popup is None and self.messages:
+ title, msg = self.messages.popleft()
+ self.push_popup(MessagePopup(self, title, msg))
+
+ self.stdscr.erase()
+ self.draw_statusbars()
+ self._draw_actions()
+ # Necessary to force updating the stdscr
+ self.stdscr.noutrefresh()
+
+ self.sidebar.refresh()
+
+ # do this last since it moves the cursor
+ self._draw_preferences()
+
+ if self.popup:
+ self.popup.refresh()
+
+ curses.doupdate()
+
+ def _apply_prefs(self):
+ if self.core_config is None:
+ return
+
+ def update_conf_value(key, source_dict, dest_dict, updated):
+ if dest_dict[key] != source_dict[key]:
+ dest_dict[key] = source_dict[key]
+ updated = True
+ return updated
+
+ new_core_config = {}
+ for pane in self.panes:
+ if not isinstance(pane, InterfacePane):
+ pane.add_config_values(new_core_config)
+ # Apply Core Prefs
+ if client.connected():
+ # Only do this if we're connected to a daemon
+ config_to_set = {}
+ for key in new_core_config:
+ # The values do not match so this needs to be updated
+ if self.core_config[key] != new_core_config[key]:
+ config_to_set[key] = new_core_config[key]
+
+ if config_to_set:
+ # Set each changed config value in the core
+ client.core.set_config(config_to_set)
+ client.force_call(True)
+ # Update the configuration
+ self.core_config.update(config_to_set)
+
+ # Update Interface Prefs
+ new_console_config = {}
+ didupdate = False
+ for pane in self.panes:
+ # could just access panes by index, but that would break if panes
+ # are ever reordered, so do it the slightly slower but safer way
+ if isinstance(pane, InterfacePane):
+ pane.add_config_values(new_console_config)
+ for k in ['ring_bell', 'language']:
+ didupdate = update_conf_value(
+ k, new_console_config, self.console_config, didupdate
+ )
+ for k in ['separate_complete', 'move_selection']:
+ didupdate = update_conf_value(
+ k,
+ new_console_config,
+ self.console_config['torrentview'],
+ didupdate,
+ )
+ for k in [
+ 'ignore_duplicate_lines',
+ 'save_command_history',
+ 'third_tab_lists_all',
+ 'torrents_per_tab_press',
+ ]:
+ didupdate = update_conf_value(
+ k, new_console_config, self.console_config['cmdline'], didupdate
+ )
+
+ if didupdate:
+ self.parent_mode.on_config_changed()
+
+ def _update_preferences(self, core_config):
+ self.core_config = core_config
+ for pane in self.panes:
+ pane.update_values(core_config)
+
+ def _actions_read(self, c):
+ self.action_input.handle_read(c)
+ if c in [curses.KEY_ENTER, util.KEY_ENTER2]:
+ # take action
+ if self.action_input.selected_index == 0: # Cancel
+ self.back_to_parent()
+ elif self.action_input.selected_index == 1: # Apply
+ self._apply_prefs()
+ client.core.get_config().addCallback(self._update_preferences)
+ elif self.action_input.selected_index == 2: # OK
+ self._apply_prefs()
+ self.back_to_parent()
+
+ def back_to_parent(self):
+ component.get('ConsoleUI').set_mode(self.parent_mode.mode_name)
+
+ @overrides(BaseMode)
+ def read_input(self):
+ c = self.stdscr.getch()
+
+ if self.popup:
+ if self.popup.handle_read(c):
+ self.pop_popup()
+ self.refresh()
+ return
+
+ if util.is_printable_chr(c):
+ char = chr(c)
+ if char == 'Q':
+ component.get('ConsoleUI').quit()
+ elif char == 'h':
+ self.push_popup(MessagePopup(self, 'Preferences Help', HELP_STR))
+
+ if self.sidebar.has_focus() and c == util.KEY_ESC:
+ self.back_to_parent()
+ return
+
+ def update_active_zone(val):
+ self.active_zone += val
+ if self.active_zone == -1:
+ self.active_zone = ZONE.length - 1
+ else:
+ self.active_zone %= ZONE.length
+ self.sidebar.set_focused(self.active_zone == ZONE.CATEGORIES)
+
+ if c == util.KEY_TAB:
+ update_active_zone(1)
+ elif c == curses.KEY_BTAB:
+ update_active_zone(-1)
+ else:
+ if self.active_zone == ZONE.CATEGORIES:
+ self.sidebar.handle_read(c)
+ elif self.active_zone == ZONE.PREFRENCES:
+ self.panes[self.cur_cat].handle_read(c)
+ elif self.active_zone == ZONE.ACTIONS:
+ self._actions_read(c)
+
+ self.refresh()
+
+ def is_active_pane(self, pane):
+ return pane == self.panes[self.cur_cat]
diff --git a/deluge/ui/console/modes/torrentdetail.py b/deluge/ui/console/modes/torrentdetail.py
new file mode 100644
index 0000000..4383d58
--- /dev/null
+++ b/deluge/ui/console/modes/torrentdetail.py
@@ -0,0 +1,1021 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.common import fsize
+from deluge.decorators import overrides
+from deluge.ui.client import client
+from deluge.ui.common import FILE_PRIORITY
+from deluge.ui.console.modes.basemode import BaseMode
+from deluge.ui.console.modes.torrentlist.torrentactions import (
+ ACTION,
+ torrent_actions_popup,
+)
+from deluge.ui.console.utils import colors
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.utils.column import get_column_value, torrent_data_fields
+from deluge.ui.console.utils.format_utils import (
+ format_priority,
+ format_progress,
+ format_row,
+)
+from deluge.ui.console.widgets.popup import (
+ InputPopup,
+ MessagePopup,
+ PopupsHandler,
+ SelectablePopup,
+)
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+# Big help string that gets displayed when the user hits 'h'
+HELP_STR = """\
+This screen shows detailed information about a torrent, and also the \
+information about the individual files in the torrent.
+
+You can navigate the file list with the Up/Down arrows and use space to \
+collapse/expand the file tree.
+
+All popup windows can be closed/canceled by hitting the Esc key \
+(you might need to wait a second for an Esc to register)
+
+The actions you can perform and the keys to perform them are as follows:
+
+{!info!}'h'{!normal!} - Show this help
+
+{!info!}'a'{!normal!} - Show torrent actions popup. Here you can do things like \
+pause/resume, recheck, set torrent options and so on.
+
+{!info!}'r'{!normal!} - Rename currently highlighted folder or a file. You can't \
+rename multiple files at once so you need to first clear your selection \
+with {!info!}'c'{!normal!}
+
+{!info!}'m'{!normal!} - Mark or unmark a file or a folder
+{!info!}'c'{!normal!} - Un-mark all files
+
+{!info!}Space{!normal!} - Expand/Collapse currently selected folder
+
+{!info!}Enter{!normal!} - Show priority popup in which you can set the \
+download priority of selected files and folders.
+
+{!info!}Left Arrow{!normal!} - Go back to torrent overview.
+"""
+
+
+class TorrentDetail(BaseMode, PopupsHandler):
+ def __init__(self, parent_mode, stdscr, console_config, encoding=None):
+ PopupsHandler.__init__(self)
+ self.console_config = console_config
+ self.parent_mode = parent_mode
+ self.torrentid = None
+ self.torrent_state = None
+ self._status_keys = [
+ 'files',
+ 'name',
+ 'state',
+ 'download_payload_rate',
+ 'upload_payload_rate',
+ 'progress',
+ 'eta',
+ 'all_time_download',
+ 'total_uploaded',
+ 'ratio',
+ 'num_seeds',
+ 'total_seeds',
+ 'num_peers',
+ 'total_peers',
+ 'active_time',
+ 'seeding_time',
+ 'time_added',
+ 'distributed_copies',
+ 'num_pieces',
+ 'piece_length',
+ 'download_location',
+ 'file_progress',
+ 'file_priorities',
+ 'message',
+ 'total_wanted',
+ 'tracker_host',
+ 'owner',
+ 'seed_rank',
+ 'last_seen_complete',
+ 'completed_time',
+ 'time_since_transfer',
+ 'super_seeding',
+ ]
+ self.file_list = None
+ self.current_file = None
+ self.current_file_idx = 0
+ self.file_off = 0
+ self.more_to_draw = False
+ self.full_names = None
+ self.column_string = ''
+ self.files_sep = None
+ self.marked = {}
+
+ BaseMode.__init__(self, stdscr, encoding)
+ self.column_names = ['Filename', 'Size', 'Progress', 'Priority']
+ self.__update_columns()
+
+ self._listing_start = self.rows // 2
+ self._listing_space = self._listing_start - self._listing_start
+
+ client.register_event_handler(
+ 'TorrentFileRenamedEvent', self._on_torrentfilerenamed_event
+ )
+ client.register_event_handler(
+ 'TorrentFolderRenamedEvent', self._on_torrentfolderrenamed_event
+ )
+ client.register_event_handler(
+ 'TorrentRemovedEvent', self._on_torrentremoved_event
+ )
+
+ util.safe_curs_set(util.Curser.INVISIBLE)
+ self.stdscr.notimeout(0)
+
+ def set_torrent_id(self, torrentid):
+ self.torrentid = torrentid
+ self.file_list = None
+
+ def back_to_overview(self):
+ component.get('ConsoleUI').set_mode(self.parent_mode.mode_name)
+
+ @overrides(component.Component)
+ def start(self):
+ self.update()
+
+ @overrides(component.Component)
+ def update(self, torrentid=None):
+ if torrentid:
+ self.set_torrent_id(torrentid)
+
+ if self.torrentid:
+ component.get('SessionProxy').get_torrent_status(
+ self.torrentid, self._status_keys
+ ).addCallback(self.set_state)
+
+ @overrides(BaseMode)
+ def pause(self):
+ self.set_torrent_id(None)
+
+ @overrides(BaseMode)
+ def on_resize(self, rows, cols):
+ BaseMode.on_resize(self, rows, cols)
+ self.__update_columns()
+ if self.popup:
+ self.popup.handle_resize()
+
+ self._listing_start = self.rows // 2
+ self.refresh()
+
+ def set_state(self, state):
+ if state.get('files'):
+ self.full_names = {x['index']: x['path'] for x in state['files']}
+
+ need_prio_update = False
+ if not self.file_list:
+ # don't keep getting the files once we've got them once
+ if state.get('files'):
+ self.files_sep = '{!green,black,bold,underline!}%s' % (
+ ('Files (torrent has %d files)' % len(state['files'])).center(
+ self.cols
+ )
+ )
+ self.file_list, self.file_dict = self.build_file_list(
+ state['files'], state['file_progress'], state['file_priorities']
+ )
+ else:
+ self.files_sep = '{!green,black,bold,underline!}%s' % (
+ ('Files (File list unknown)').center(self.cols)
+ )
+ need_prio_update = True
+
+ self.__fill_progress(self.file_list, state['file_progress'])
+
+ for i, prio in enumerate(state['file_priorities']):
+ if self.file_dict[i][6] != prio:
+ need_prio_update = True
+ self.file_dict[i][6] = prio
+ if need_prio_update and self.file_list:
+ self.__fill_prio(self.file_list)
+ del state['file_progress']
+ del state['file_priorities']
+ self.torrent_state = state
+ self.refresh()
+
+ def build_file_list(self, torrent_files, progress, priority):
+ """Split file list from torrent state into a directory tree.
+
+ Returns:
+
+ Tuple:
+ A list of lists in the form:
+ [file/dir_name, index, size, children, expanded, progress, priority]
+
+ Dictionary:
+ Map of file index for fast updating of progress and priorities.
+ """
+
+ file_list = []
+ file_dict = {}
+ # directory index starts from total file count.
+ dir_idx = len(torrent_files)
+ for torrent_file in torrent_files:
+ cur = file_list
+ paths = torrent_file['path'].split('/')
+ for path in paths:
+ if not cur or path != cur[-1][0]:
+ child_list = []
+ if path == paths[-1]:
+ file_progress = format_progress(
+ progress[torrent_file['index']] * 100
+ )
+ entry = [
+ path,
+ torrent_file['index'],
+ torrent_file['size'],
+ child_list,
+ False,
+ file_progress,
+ priority[torrent_file['index']],
+ ]
+ file_dict[torrent_file['index']] = entry
+ else:
+ entry = [path, dir_idx, -1, child_list, False, 0, -1]
+ file_dict[dir_idx] = entry
+ dir_idx += 1
+ cur.append(entry)
+ cur = child_list
+ else:
+ cur = cur[-1][3]
+ self.__build_sizes(file_list)
+ self.__fill_progress(file_list, progress)
+
+ return file_list, file_dict
+
+ # fill in the sizes of the directory entries based on their children
+ def __build_sizes(self, fs):
+ ret = 0
+ for f in fs:
+ if f[2] == -1:
+ val = self.__build_sizes(f[3])
+ ret += val
+ f[2] = val
+ else:
+ ret += f[2]
+ return ret
+
+ # fills in progress fields in all entries based on progs
+ # returns the # of bytes complete in all the children of fs
+ def __fill_progress(self, fs, progs):
+ if not progs:
+ return 0
+ tb = 0
+ for f in fs:
+ if f[3]: # dir, has some children
+ bd = self.__fill_progress(f[3], progs)
+ f[5] = format_progress(bd // f[2] * 100)
+ else: # file, update own prog and add to total
+ bd = f[2] * progs[f[1]]
+ f[5] = format_progress(progs[f[1]] * 100)
+ tb += bd
+ return tb
+
+ def __fill_prio(self, fs):
+ for f in fs:
+ if f[3]: # dir, so fill in children and compute our prio
+ self.__fill_prio(f[3])
+ child_prios = [e[6] for e in f[3]]
+ if len(child_prios) > 1:
+ f[6] = -2 # mixed
+ else:
+ f[6] = child_prios.pop(0)
+
+ def __update_columns(self):
+ self.column_widths = [-1, 15, 15, 20]
+ req = sum(col_width for col_width in self.column_widths if col_width >= 0)
+ if req > self.cols: # can't satisfy requests, just spread out evenly
+ cw = self.cols // len(self.column_names)
+ for i in range(0, len(self.column_widths)):
+ self.column_widths[i] = cw
+ else:
+ rem = self.cols - req
+ var_cols = len(
+ [col_width for col_width in self.column_widths if col_width < 0]
+ )
+ vw = rem // var_cols
+ for i in range(0, len(self.column_widths)):
+ if self.column_widths[i] < 0:
+ self.column_widths[i] = vw
+
+ self.column_string = '{!green,black,bold!}%s' % (
+ ''.join(
+ [
+ '%s%s'
+ % (
+ self.column_names[i],
+ ' ' * (self.column_widths[i] - len(self.column_names[i])),
+ )
+ for i in range(0, len(self.column_names))
+ ]
+ )
+ )
+
+ def _on_torrentremoved_event(self, torrent_id):
+ if torrent_id == self.torrentid:
+ self.back_to_overview()
+
+ def _on_torrentfilerenamed_event(self, torrent_id, index, new_name):
+ if torrent_id == self.torrentid:
+ self.file_dict[index][0] = new_name.split('/')[-1]
+ component.get('SessionProxy').get_torrent_status(
+ self.torrentid, self._status_keys
+ ).addCallback(self.set_state)
+
+ def _on_torrentfolderrenamed_event(self, torrent_id, old_folder, new_folder):
+ if torrent_id == self.torrentid:
+ fe = None
+ fl = None
+ for i in old_folder.strip('/').split('/'):
+ if not fl:
+ fe = fl = self.file_list
+ s = [files for files in fl if files[0].strip('/') == i][0]
+ fe = s
+ fl = s[3]
+ fe[0] = new_folder.strip('/').rpartition('/')[-1]
+
+ # self.__get_file_by_name(old_folder, self.file_list)[0] = new_folder.strip('/')
+ component.get('SessionProxy').get_torrent_status(
+ self.torrentid, self._status_keys
+ ).addCallback(self.set_state)
+
+ def draw_files(self, files, depth, off, idx):
+ color_selected = 'blue'
+ color_partially_selected = 'magenta'
+ color_highlighted = 'white'
+ for fl in files:
+ # from sys import stderr
+ # print >> stderr, fl[6]
+ # kick out if we're going to draw too low on the screen
+ if off >= self.rows - 1:
+ self.more_to_draw = True
+ return -1, -1
+
+ # default color values
+ fg = 'white'
+ bg = 'black'
+ attr = ''
+
+ priority_fg_color = {
+ -2: 'white', # Mixed
+ 0: 'red', # Skip
+ 1: 'yellow', # Low
+ 2: 'yellow',
+ 3: 'yellow',
+ 4: 'white', # Normal
+ 5: 'green',
+ 6: 'green',
+ 7: 'green', # High
+ }
+
+ fg = priority_fg_color[fl[6]]
+
+ if idx >= self.file_off:
+ # set fg/bg colors based on whether the file is selected/marked or not
+
+ if fl[1] in self.marked:
+ bg = color_selected
+ if fl[3]:
+ if self.marked[fl[1]] < self.__get_contained_files_count(
+ file_list=fl[3]
+ ):
+ bg = color_partially_selected
+ attr = 'bold'
+
+ if idx == self.current_file_idx:
+ self.current_file = fl
+ bg = color_highlighted
+ if fl[1] in self.marked:
+ fg = color_selected
+ if fl[3]:
+ if self.marked[fl[1]] < self.__get_contained_files_count(
+ file_list=fl[3]
+ ):
+ fg = color_partially_selected
+ else:
+ if fg == 'white':
+ fg = 'black'
+ attr = 'bold'
+
+ if attr:
+ color_string = f'{{!{fg},{bg},{attr}!}}'
+ else:
+ color_string = f'{{!{fg},{bg}!}}'
+
+ # actually draw the dir/file string
+ if fl[3] and fl[4]: # this is an expanded directory
+ xchar = 'v'
+ elif fl[3]: # collapsed directory
+ xchar = '>'
+ else: # file
+ xchar = '-'
+
+ r = format_row(
+ [
+ '{}{} {}'.format(' ' * depth, xchar, fl[0]),
+ fsize(fl[2]),
+ fl[5],
+ format_priority(fl[6]),
+ ],
+ self.column_widths,
+ )
+
+ self.add_string(off, f'{color_string}{r}', trim=False)
+ off += 1
+
+ if fl[3] and fl[4]:
+ # recurse if we have children and are expanded
+ off, idx = self.draw_files(fl[3], depth + 1, off, idx + 1)
+ if off < 0:
+ return (off, idx)
+ else:
+ idx += 1
+
+ return (off, idx)
+
+ def __get_file_list_length(self, file_list=None):
+ """
+ Counts length of the displayed file list.
+ """
+ if file_list is None:
+ file_list = self.file_list
+ length = 0
+ if file_list:
+ for element in file_list:
+ length += 1
+ if element[3] and element[4]:
+ length += self.__get_file_list_length(element[3])
+ return length
+
+ def __get_contained_files_count(self, file_list=None, idx=None):
+ length = 0
+ if file_list is None:
+ file_list = self.file_list
+ if idx is not None:
+ for element in file_list:
+ if element[1] == idx:
+ return self.__get_contained_files_count(file_list=element[3])
+ elif element[3]:
+ c = self.__get_contained_files_count(file_list=element[3], idx=idx)
+ if c > 0:
+ return c
+ else:
+ for element in file_list:
+ length += 1
+ if element[3]:
+ length -= 1
+ length += self.__get_contained_files_count(element[3])
+ return length
+
+ def render_header(self, row):
+ status = self.torrent_state
+
+ download_color = '{!info!}'
+ if status['download_payload_rate'] > 0:
+ download_color = colors.state_color['Downloading']
+
+ def add_field(name, row, pre_color='{!info!}', post_color='{!input!}'):
+ s = '{}{}: {}{}'.format(
+ pre_color,
+ torrent_data_fields[name]['name'],
+ post_color,
+ get_column_value(name, status),
+ )
+ if row:
+ row = self.add_string(row, s)
+ return row
+ return s
+
+ # Name
+ row = add_field('name', row)
+ # State
+ row = add_field('state', row)
+
+ # Print DL info and ETA
+ s = add_field('downloaded', 0, download_color)
+ if status['progress'] != 100.0:
+ s += '/%s' % fsize(status['total_wanted'])
+ if status['download_payload_rate'] > 0:
+ s += ' {{!yellow!}}@ {}{}'.format(
+ download_color,
+ fsize(status['download_payload_rate']),
+ )
+ s += add_field('eta', 0)
+ if s:
+ row = self.add_string(row, s)
+
+ # Print UL info and ratio
+ s = add_field('uploaded', 0, download_color)
+ if status['upload_payload_rate'] > 0:
+ s += ' {{!yellow!}}@ {}{}'.format(
+ colors.state_color['Seeding'],
+ fsize(status['upload_payload_rate']),
+ )
+ s += ' ' + add_field('ratio', 0)
+ row = self.add_string(row, s)
+
+ # Seed/peer info
+ s = '{{!info!}}{}:{{!green!}} {} {{!input!}}({})'.format(
+ torrent_data_fields['seeds']['name'],
+ status['num_seeds'],
+ status['total_seeds'],
+ )
+ row = self.add_string(row, s)
+ s = '{{!info!}}{}:{{!red!}} {} {{!input!}}({})'.format(
+ torrent_data_fields['peers']['name'],
+ status['num_peers'],
+ status['total_peers'],
+ )
+ row = self.add_string(row, s)
+
+ # Tracker
+ tracker_color = '{!green!}' if status['message'] == 'OK' else '{!red!}'
+ s = '{{!info!}}{}: {{!magenta!}}{}{{!input!}} says "{}{}{{!input!}}"'.format(
+ torrent_data_fields['tracker']['name'],
+ status['tracker_host'],
+ tracker_color,
+ status['message'],
+ )
+ row = self.add_string(row, s)
+
+ # Pieces and availability
+ s = '{{!info!}}{}: {{!yellow!}}{} {{!input!}}x {{!yellow!}}{}'.format(
+ torrent_data_fields['pieces']['name'],
+ status['num_pieces'],
+ fsize(status['piece_length']),
+ )
+ if status['distributed_copies']:
+ s += '{{!info!}}{}: {{!input!}}{}'.format(
+ torrent_data_fields['seed_rank']['name'],
+ status['seed_rank'],
+ )
+ row = self.add_string(row, s)
+
+ # Time added
+ row = add_field('time_added', row)
+ # Time active
+ row = add_field('active_time', row)
+ if status['seeding_time']:
+ row = add_field('seeding_time', row)
+ # Download Folder
+ row = add_field('download_location', row)
+ # Seed Rank
+ row = add_field('seed_rank', row)
+ # Super Seeding
+ row = add_field('super_seeding', row)
+ # Last seen complete
+ row = add_field('last_seen_complete', row)
+ # Last activity
+ row = add_field('time_since_transfer', row)
+ # Owner
+ if status['owner']:
+ row = add_field('owner', row)
+ return row
+ # Last act
+
+ @overrides(BaseMode)
+ def refresh(self, lines=None):
+ # Update the status bars
+ self.stdscr.erase()
+ self.draw_statusbars()
+
+ row = 1
+ if self.torrent_state:
+ row = self.render_header(row)
+ else:
+ self.add_string(1, 'Waiting for torrent state')
+
+ row += 1
+
+ if self.files_sep:
+ self.add_string(row, self.files_sep)
+ row += 1
+
+ self._listing_start = row
+ self._listing_space = self.rows - self._listing_start
+
+ self.add_string(row, self.column_string)
+ if self.file_list:
+ row += 1
+ self.more_to_draw = False
+ self.draw_files(self.file_list, 0, row, 0)
+
+ if not component.get('ConsoleUI').is_active_mode(self):
+ return
+
+ self.stdscr.noutrefresh()
+
+ if self.popup:
+ self.popup.refresh()
+
+ curses.doupdate()
+
+ def expcol_cur_file(self):
+ """
+ Expand or collapse current file
+ """
+ self.current_file[4] = not self.current_file[4]
+ self.refresh()
+
+ def file_list_down(self, rows=1):
+ maxlen = self.__get_file_list_length() - 1
+
+ self.current_file_idx += rows
+
+ if self.current_file_idx > maxlen:
+ self.current_file_idx = maxlen
+
+ if self.current_file_idx > self.file_off + (self._listing_space - 3):
+ self.file_off = self.current_file_idx - (self._listing_space - 3)
+
+ self.refresh()
+
+ def file_list_up(self, rows=1):
+ self.current_file_idx = max(0, self.current_file_idx - rows)
+ self.file_off = min(self.file_off, self.current_file_idx)
+ self.refresh()
+
+ # build list of priorities for all files in the torrent
+ # based on what is currently selected and a selected priority.
+ def build_prio_list(self, files, ret_list, parent_prio, selected_prio):
+ # has a priority been set on my parent (if so, I inherit it)
+ for f in files:
+ # Do not set priorities for the whole dir, just selected contents
+ if f[3]:
+ self.build_prio_list(f[3], ret_list, parent_prio, selected_prio)
+ else: # file, need to add to list
+ if f[1] in self.marked or parent_prio >= 0:
+ # selected (or parent selected), use requested priority
+ ret_list.append((f[1], selected_prio))
+ else:
+ # not selected, just keep old priority
+ ret_list.append((f[1], f[6]))
+
+ def do_priority(self, priority, was_empty):
+ plist = []
+ self.build_prio_list(self.file_list, plist, -1, priority)
+ plist.sort()
+ priorities = [p[1] for p in plist]
+ client.core.set_torrent_options(
+ [self.torrentid], {'file_priorities': priorities}
+ )
+
+ if was_empty:
+ self.marked = {}
+ return True
+
+ # show popup for priority selections
+ def show_priority_popup(self, was_empty):
+ def popup_func(name, data, was_empty, **kwargs):
+ if not name:
+ return
+ return self.do_priority(data[name], was_empty)
+
+ if self.marked:
+ popup = SelectablePopup(
+ self,
+ 'Set File Priority',
+ popup_func,
+ border_off_north=1,
+ cb_args={'was_empty': was_empty},
+ )
+ popup.add_line(
+ 'skip_priority',
+ '_Skip',
+ foreground='red',
+ cb_arg=FILE_PRIORITY['Skip'],
+ was_empty=was_empty,
+ )
+ popup.add_line(
+ 'low_priority', '_Low', cb_arg=FILE_PRIORITY['Low'], foreground='yellow'
+ )
+ popup.add_line('normal_priority', '_Normal', cb_arg=FILE_PRIORITY['Normal'])
+ popup.add_line(
+ 'high_priority',
+ '_High',
+ cb_arg=FILE_PRIORITY['High'],
+ foreground='green',
+ )
+ popup._selected = 1
+ self.push_popup(popup)
+
+ def __mark_unmark(self, idx):
+ """
+ Selects or unselects file or a catalog(along with contained files)
+ """
+ fc = self.__get_contained_files_count(idx=idx)
+ if idx not in self.marked:
+ # Not selected, select it
+ self.__mark_tree(self.file_list, idx)
+ elif self.marked[idx] < fc:
+ # Partially selected, unselect all contents
+ self.__unmark_tree(self.file_list, idx)
+ else:
+ # Selected, unselect it
+ self.__unmark_tree(self.file_list, idx)
+
+ def __mark_tree(self, file_list, idx, mark_all=False):
+ """
+ Given file_list of TorrentDetail and index of file or folder,
+ recursively selects all files contained
+ as well as marks folders higher in hierarchy as partially selected
+ """
+ total_marked = 0
+ for element in file_list:
+ marked = 0
+ # Select the file if it's the one we want or
+ # if it's inside a directory that got selected
+ if (element[1] == idx) or mark_all:
+ # If it's a folder then select everything inside
+ if element[3]:
+ marked = self.__mark_tree(element[3], idx, True)
+ self.marked[element[1]] = marked
+ else:
+ marked = 1
+ self.marked[element[1]] = 1
+ else:
+ # Does not match but the item to be selected might be inside, recurse
+ if element[3]:
+ marked = self.__mark_tree(element[3], idx, False)
+ # Partially select the folder if it contains files that were selected
+ if marked > 0:
+ self.marked[element[1]] = marked
+ else:
+ if element[1] in self.marked:
+ # It's not the element we want but it's marked so count it
+ marked = 1
+ # Count and then return total amount of files selected in all subdirectories
+ total_marked += marked
+
+ return total_marked
+
+ def __get_file_by_num(self, num, file_list, idx=0):
+ for element in file_list:
+ if idx == num:
+ return element
+ if element[3] and element[4]:
+ i = self.__get_file_by_num(num, element[3], idx + 1)
+ if not isinstance(i, int):
+ return i
+ idx = i
+ else:
+ idx += 1
+ return idx
+
+ def __get_file_by_name(self, name, file_list, idx=0):
+ for element in file_list:
+ if element[0].strip('/') == name.strip('/'):
+ return element
+ if element[3] and element[4]:
+ i = self.__get_file_by_name(name, element[3], idx + 1)
+ if not isinstance(i, int):
+ return i
+ else:
+ idx = i
+ else:
+ idx += 1
+ return idx
+
+ def __unmark_tree(self, file_list, idx, unmark_all=False):
+ """
+ Given file_list of TorrentDetail and index of file or folder,
+ recursively deselects all files contained
+ as well as marks folders higher in hierarchy as unselected or partially selected
+ """
+ total_marked = 0
+ for element in file_list:
+ marked = 0
+ # It's either the item we want to select or
+ # a contained item, deselect it
+ if (element[1] == idx) or unmark_all:
+ if element[1] in self.marked:
+ del self.marked[element[1]]
+ # Deselect all contents if it's a catalog
+ if element[3]:
+ self.__unmark_tree(element[3], idx, True)
+ else:
+ # Not file we wanted but it might be inside this folder, recurse inside
+ if element[3]:
+ marked = self.__unmark_tree(element[3], idx, False)
+ # If none of the contents remain selected, unselect this folder as well
+ if marked == 0:
+ if element[1] in self.marked:
+ del self.marked[element[1]]
+ # Otherwise update selection count
+ else:
+ self.marked[element[1]] = marked
+ else:
+ if element[1] in self.marked:
+ marked = 1
+
+ # Count and then return selection count so we can update
+ # directories higher up in the hierarchy
+ total_marked += marked
+ return total_marked
+
+ def _selection_to_file_idx(self, file_list=None, idx=0, true_idx=0, closed=False):
+ if not file_list:
+ file_list = self.file_list
+
+ for element in file_list:
+ if idx == self.current_file_idx:
+ return true_idx
+
+ # It's a folder
+ if element[3]:
+ i = self._selection_to_file_idx(
+ element[3], idx + 1, true_idx, closed or not element[4]
+ )
+ if isinstance(i, tuple):
+ idx, true_idx = i
+ if element[4]:
+ idx, true_idx = i
+ else:
+ idx += 1
+ tmp, true_idx = i
+ else:
+ return i
+ else:
+ if not closed:
+ idx += 1
+ true_idx += 1
+
+ return (idx, true_idx)
+
+ def _get_full_folder_path(self, num, file_list=None, path='', idx=0):
+ if not file_list:
+ file_list = self.file_list
+
+ for element in file_list:
+ if not element[3]:
+ idx += 1
+ continue
+ if num == idx:
+ return f'{path}{element[0]}/'
+ if element[4]:
+ i = self._get_full_folder_path(
+ num, element[3], path + element[0] + '/', idx + 1
+ )
+ if not isinstance(i, int):
+ return i
+ idx = i
+ else:
+ idx += 1
+ return idx
+
+ def _do_rename_folder(self, torrent_id, folder, new_folder):
+ client.core.rename_folder(torrent_id, folder, new_folder)
+
+ def _do_rename_file(self, torrent_id, file_idx, new_filename):
+ if not new_filename:
+ return
+ client.core.rename_files(torrent_id, [(file_idx, new_filename)])
+
+ def _show_rename_popup(self):
+ # Perhaps in the future: Renaming multiple files
+ if self.marked:
+ self.report_message(
+ 'Error (Enter to close)',
+ 'Sorry, you cannot rename multiple files, please clear '
+ 'selection with {!info!}"c"{!normal!} key',
+ )
+ else:
+ _file = self.__get_file_by_num(self.current_file_idx, self.file_list)
+ old_filename = _file[0]
+ idx = self._selection_to_file_idx()
+ tid = self.torrentid
+
+ if _file[3]:
+
+ def do_rename(result, **kwargs):
+ if (
+ not result
+ or not result['new_foldername']['value']
+ or kwargs.get('close', False)
+ ):
+ self.popup.close(None, call_cb=False)
+ return
+ old_fname = self._get_full_folder_path(self.current_file_idx)
+ new_fname = '{}/{}/'.format(
+ old_fname.strip('/').rpartition('/')[0],
+ result['new_foldername']['value'],
+ )
+ self._do_rename_folder(tid, old_fname, new_fname)
+
+ popup = InputPopup(
+ self, 'Rename folder (Esc to cancel)', close_cb=do_rename
+ )
+ popup.add_text_input(
+ 'new_foldername',
+ 'Enter new folder name:',
+ old_filename.strip('/'),
+ complete=True,
+ )
+ self.push_popup(popup)
+ else:
+
+ def do_rename(result, **kwargs):
+ if (
+ not result
+ or not result['new_filename']['value']
+ or kwargs.get('close', False)
+ ):
+ self.popup.close(None, call_cb=False)
+ return
+ fname = '{}/{}'.format(
+ self.full_names[idx].rpartition('/')[0],
+ result['new_filename']['value'],
+ )
+ self._do_rename_file(tid, idx, fname)
+
+ popup = InputPopup(self, ' Rename file ', close_cb=do_rename)
+ popup.add_text_input(
+ 'new_filename', 'Enter new filename:', old_filename, complete=True
+ )
+ self.push_popup(popup)
+
+ @overrides(BaseMode)
+ def read_input(self):
+ c = self.stdscr.getch()
+
+ if self.popup:
+ ret = self.popup.handle_read(c)
+ if ret != util.ReadState.IGNORED and self.popup.closed():
+ self.pop_popup()
+ self.refresh()
+ return
+
+ if c in [util.KEY_ESC, curses.KEY_LEFT, ord('q')]:
+ self.back_to_overview()
+ return util.ReadState.READ
+
+ if not self.torrent_state:
+ # actions below only make sense if there is a torrent state
+ return
+
+ # Navigate the torrent list
+ if c == curses.KEY_UP:
+ self.file_list_up()
+ elif c == curses.KEY_PPAGE:
+ self.file_list_up(self._listing_space - 2)
+ elif c == curses.KEY_HOME:
+ self.file_off = 0
+ self.current_file_idx = 0
+ elif c == curses.KEY_DOWN:
+ self.file_list_down()
+ elif c == curses.KEY_NPAGE:
+ self.file_list_down(self._listing_space - 2)
+ elif c == curses.KEY_END:
+ self.current_file_idx = self.__get_file_list_length() - 1
+ self.file_off = self.current_file_idx - (self._listing_space - 3)
+ elif c == curses.KEY_DC:
+ torrent_actions_popup(self, [self.torrentid], action=ACTION.REMOVE)
+ elif c in [curses.KEY_ENTER, util.KEY_ENTER2]:
+ was_empty = self.marked == {}
+ self.__mark_tree(self.file_list, self.current_file[1])
+ self.show_priority_popup(was_empty)
+ elif c == util.KEY_SPACE:
+ self.expcol_cur_file()
+ elif c == ord('m'):
+ if self.current_file:
+ self.__mark_unmark(self.current_file[1])
+ elif c == ord('r'):
+ self._show_rename_popup()
+ elif c == ord('c'):
+ self.marked = {}
+ elif c == ord('a'):
+ torrent_actions_popup(self, [self.torrentid], details=False)
+ return
+ elif c == ord('o'):
+ torrent_actions_popup(self, [self.torrentid], action=ACTION.TORRENT_OPTIONS)
+ return
+ elif c == ord('h'):
+ self.push_popup(MessagePopup(self, 'Help', HELP_STR, width_req=0.75))
+ elif c == ord('j'):
+ self.file_list_down()
+ elif c == ord('k'):
+ self.file_list_up()
+
+ self.refresh()
diff --git a/deluge/ui/console/modes/torrentlist/__init__.py b/deluge/ui/console/modes/torrentlist/__init__.py
new file mode 100644
index 0000000..48c60ce
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/__init__.py
@@ -0,0 +1,17 @@
+class ACTION:
+ PAUSE = 'pause'
+ RESUME = 'resume'
+ REANNOUNCE = 'update_tracker'
+ EDIT_TRACKERS = 3
+ RECHECK = 'force_recheck'
+ REMOVE = 'remove_torrent'
+ REMOVE_DATA = 6
+ REMOVE_NODATA = 7
+ DETAILS = 'torrent_details'
+ MOVE_STORAGE = 'move_download_folder'
+ QUEUE = 'queue'
+ QUEUE_TOP = 'queue_top'
+ QUEUE_UP = 'queue_up'
+ QUEUE_DOWN = 'queue_down'
+ QUEUE_BOTTOM = 'queue_bottom'
+ TORRENT_OPTIONS = 'torrent_options'
diff --git a/deluge/ui/console/modes/torrentlist/add_torrents_popup.py b/deluge/ui/console/modes/torrentlist/add_torrents_popup.py
new file mode 100644
index 0000000..3ff9ab7
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/add_torrents_popup.py
@@ -0,0 +1,110 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.common
+from deluge.ui.client import client
+from deluge.ui.console.widgets.popup import InputPopup, SelectablePopup
+
+log = logging.getLogger(__name__)
+
+
+def report_add_status(torrentlist, succ_cnt, fail_cnt, fail_msgs):
+ if fail_cnt == 0:
+ torrentlist.report_message(
+ 'Torrents Added', '{!success!}Successfully added %d torrent(s)' % succ_cnt
+ )
+ else:
+ msg = (
+ '{!error!}Failed to add the following %d torrent(s):\n {!input!}' % fail_cnt
+ ) + '\n '.join(fail_msgs)
+ if succ_cnt != 0:
+ msg += '\n \n{!success!}Successfully added %d torrent(s)' % succ_cnt
+ torrentlist.report_message('Torrent Add Report', msg)
+
+
+def show_torrent_add_popup(torrentlist):
+ def do_add_from_url(data=None, **kwargs):
+ torrentlist.pop_popup()
+ if not data or kwargs.get('close', False):
+ return
+
+ def fail_cb(msg, url):
+ log.debug('failed to add torrent: %s: %s', url, msg)
+ error_msg = f'{{!input!}} * {url}: {{!error!}}{msg}'
+ report_add_status(torrentlist, 0, 1, [error_msg])
+
+ def success_cb(tid, url):
+ if tid:
+ log.debug('added torrent: %s (%s)', url, tid)
+ report_add_status(torrentlist, 1, 0, [])
+ else:
+ fail_cb('Already in session (probably)', url)
+
+ url = data['url']['value']
+ if not url:
+ return
+
+ t_options = {
+ 'download_location': data['path']['value'],
+ 'add_paused': data['add_paused']['value'],
+ }
+
+ if deluge.common.is_magnet(url):
+ client.core.add_torrent_magnet(url, t_options).addCallback(
+ success_cb, url
+ ).addErrback(fail_cb, url)
+ elif deluge.common.is_url(url):
+ client.core.add_torrent_url(url, t_options).addCallback(
+ success_cb, url
+ ).addErrback(fail_cb, url)
+ else:
+ torrentlist.report_message(
+ 'Error', '{!error!}Invalid URL or magnet link: %s' % url
+ )
+ return
+
+ log.debug(
+ 'Adding Torrent(s): %s (dl path: %s) (paused: %d)',
+ url,
+ data['path']['value'],
+ data['add_paused']['value'],
+ )
+
+ def show_add_url_popup():
+ add_paused = 1 if 'add_paused' in torrentlist.coreconfig else 0
+ popup = InputPopup(
+ torrentlist, 'Add Torrent (Esc to cancel)', close_cb=do_add_from_url
+ )
+ popup.add_text_input('url', 'Enter torrent URL or Magnet link:')
+ popup.add_text_input(
+ 'path',
+ 'Enter save path:',
+ torrentlist.coreconfig.get('download_location', ''),
+ complete=True,
+ )
+ popup.add_select_input(
+ 'add_paused', 'Add Paused:', ['Yes', 'No'], [True, False], add_paused
+ )
+ torrentlist.push_popup(popup)
+
+ def option_chosen(selected, *args, **kwargs):
+ if not selected or selected == 'cancel':
+ torrentlist.pop_popup()
+ return
+ if selected == 'file':
+ torrentlist.consoleui.set_mode('AddTorrents')
+ elif selected == 'url':
+ show_add_url_popup()
+
+ popup = SelectablePopup(torrentlist, 'Add torrent', option_chosen)
+ popup.add_line('file', '- From _File(s)', use_underline=True)
+ popup.add_line('url', '- From _URL or Magnet', use_underline=True)
+ popup.add_line('cancel', '- _Cancel', use_underline=True)
+ torrentlist.push_popup(popup, clear=True)
diff --git a/deluge/ui/console/modes/torrentlist/filtersidebar.py b/deluge/ui/console/modes/torrentlist/filtersidebar.py
new file mode 100644
index 0000000..982e245
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/filtersidebar.py
@@ -0,0 +1,131 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import curses
+import logging
+
+from deluge.component import Component
+from deluge.decorators import overrides
+from deluge.ui.client import client
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.widgets import BaseInputPane
+from deluge.ui.console.widgets.sidebar import Sidebar
+
+log = logging.getLogger(__name__)
+
+
+class FilterSidebar(Sidebar, Component):
+ """The sidebar in the main torrentview
+
+ Shows the different states of the torrents and allows to filter the
+ torrents based on state.
+
+ """
+
+ def __init__(self, torrentlist, config):
+ self.config = config
+ height = curses.LINES - 2
+ width = self.config['torrentview']['sidebar_width']
+ Sidebar.__init__(
+ self,
+ torrentlist,
+ width,
+ height,
+ title=' Filter ',
+ border_off_north=1,
+ allow_resize=True,
+ )
+ Component.__init__(self, 'FilterSidebar')
+ self.checked_index = 0
+ kwargs = {
+ 'checked_char': '*',
+ 'unchecked_char': '-',
+ 'checkbox_format': ' %s ',
+ 'col': 0,
+ }
+ self.add_checked_input('All', 'All', checked=True, **kwargs)
+ self.add_checked_input('Active', 'Active', **kwargs)
+ self.add_checked_input(
+ 'Downloading', 'Downloading', color='green,black', **kwargs
+ )
+ self.add_checked_input('Seeding', 'Seeding', color='cyan,black', **kwargs)
+ self.add_checked_input('Paused', 'Paused', **kwargs)
+ self.add_checked_input('Error', 'Error', color='red,black', **kwargs)
+ self.add_checked_input('Checking', 'Checking', color='blue,black', **kwargs)
+ self.add_checked_input('Queued', 'Queued', **kwargs)
+ self.add_checked_input(
+ 'Allocating', 'Allocating', color='yellow,black', **kwargs
+ )
+ self.add_checked_input('Moving', 'Moving', color='green,black', **kwargs)
+
+ @overrides(Component)
+ def update(self):
+ if not self.hidden() and client.connected():
+ d = client.core.get_filter_tree(True, []).addCallback(
+ self._cb_update_filter_tree
+ )
+
+ def on_filter_tree_updated(changed):
+ if changed:
+ self.refresh()
+
+ d.addCallback(on_filter_tree_updated)
+
+ def _cb_update_filter_tree(self, filter_items):
+ """Callback function on client.core.get_filter_tree"""
+ states = filter_items['state']
+ largest_count = 0
+ largest_state_width = 0
+ for state in states:
+ largest_state_width = max(len(state[0]), largest_state_width)
+ largest_count = max(int(state[1]), largest_count)
+
+ border_and_spacing = 6 # Account for border + whitespace
+ filter_state_width = largest_state_width
+ filter_count_width = self.width - filter_state_width - border_and_spacing
+
+ changed = False
+ for state in states:
+ field = self.get_input(state[0])
+ if field:
+ txt = (
+ '%%-%ds%%%ds'
+ % (filter_state_width, filter_count_width)
+ % (state[0], state[1])
+ )
+ if field.set_message(txt):
+ changed = True
+ return changed
+
+ @overrides(BaseInputPane)
+ def immediate_action_cb(self, state_changed=True):
+ if state_changed:
+ self.parent.torrentview.set_torrent_filter(
+ self.inputs[self.active_input].name
+ )
+
+ @overrides(Sidebar)
+ def handle_read(self, c):
+ if c == util.KEY_SPACE:
+ if self.checked_index != self.active_input:
+ self.inputs[self.checked_index].set_value(False)
+ Sidebar.handle_read(self, c)
+ self.checked_index = self.active_input
+ return util.ReadState.READ
+ else:
+ return Sidebar.handle_read(self, c)
+
+ @overrides(Sidebar)
+ def on_resize(self, width):
+ sidebar_width = self.config['torrentview']['sidebar_width']
+ if sidebar_width != width:
+ self.config['torrentview']['sidebar_width'] = width
+ self.config.save()
+ self.resize_window(self.height, width)
+ self.parent.toggle_sidebar()
+ self.refresh()
diff --git a/deluge/ui/console/modes/torrentlist/queue_mode.py b/deluge/ui/console/modes/torrentlist/queue_mode.py
new file mode 100644
index 0000000..33af013
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/queue_mode.py
@@ -0,0 +1,154 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.ui.client import client
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.widgets.popup import MessagePopup, SelectablePopup
+
+from . import ACTION
+
+try:
+ import curses
+except ImportError:
+ pass
+
+key_to_action = {
+ curses.KEY_HOME: ACTION.QUEUE_TOP,
+ curses.KEY_UP: ACTION.QUEUE_UP,
+ curses.KEY_DOWN: ACTION.QUEUE_DOWN,
+ curses.KEY_END: ACTION.QUEUE_BOTTOM,
+}
+QUEUE_MODE_HELP_STR = """
+Change queue position of selected torrents
+
+{!info!}'+'{!normal!} - {|indent_pos:|}Move up
+{!info!}'-'{!normal!} - {|indent_pos:|}Move down
+
+{!info!}'Home'{!normal!} - {|indent_pos:|}Move to top
+{!info!}'End'{!normal!} - {|indent_pos:|}Move to bottom
+
+"""
+
+
+class QueueMode:
+ def __init__(self, torrentslist, torrent_ids):
+ self.torrentslist = torrentslist
+ self.torrentview = torrentslist.torrentview
+ self.torrent_ids = torrent_ids
+
+ def set_statusbar_args(self, statusbar_args):
+ statusbar_args[
+ 'bottombar'
+ ] = '{!black,white!}Queue mode: change queue position of selected torrents.'
+ statusbar_args['bottombar_help'] = ' Press [h] for help'
+
+ def update_cursor(self):
+ pass
+
+ def update_colors(self, tidx, colors):
+ pass
+
+ def handle_read(self, c):
+ if c in [util.KEY_ESC, util.KEY_BELL]: # If Escape key or CTRL-g, we abort
+ self.torrentslist.set_minor_mode(None)
+ elif c == ord('h'):
+ popup = MessagePopup(
+ self.torrentslist,
+ 'Help',
+ QUEUE_MODE_HELP_STR,
+ width_req=0.65,
+ border_off_west=1,
+ )
+ self.torrentslist.push_popup(popup, clear=True)
+ elif c in [
+ curses.KEY_UP,
+ curses.KEY_DOWN,
+ curses.KEY_HOME,
+ curses.KEY_END,
+ curses.KEY_NPAGE,
+ curses.KEY_PPAGE,
+ ]:
+ action = key_to_action[c]
+ self.do_queue(action)
+
+ def move_selection(self, cb_arg, qact):
+ if self.torrentslist.config['torrentview']['move_selection'] is False:
+ return
+ queue_length = 0
+ selected_num = 0
+ for tid in self.torrentview.curstate:
+ tq = self.torrentview.curstate[tid]['queue']
+ if tq != -1:
+ queue_length += 1
+ if tq in self.torrentview.marked:
+ selected_num += 1
+ if qact == ACTION.QUEUE_TOP:
+ if self.torrentview.marked:
+ self.torrentview.cursel = 1 + sorted(self.torrentview.marked).index(
+ self.torrentview.cursel
+ )
+ else:
+ self.torrentview.cursel = 1
+ self.torrentview.marked = list(range(1, selected_num + 1))
+ elif qact == ACTION.QUEUE_UP:
+ self.torrentview.cursel = max(1, self.torrentview.cursel - 1)
+ self.torrentview.marked = [marked - 1 for marked in self.torrentview.marked]
+ self.torrentview.marked = [
+ marked for marked in self.torrentview.marked if marked > 0
+ ]
+ elif qact == ACTION.QUEUE_DOWN:
+ self.torrentview.cursel = min(queue_length, self.torrentview.cursel + 1)
+ self.torrentview.marked = [marked + 1 for marked in self.torrentview.marked]
+ self.torrentview.marked = [
+ marked for marked in self.torrentview.marked if marked <= queue_length
+ ]
+ elif qact == ACTION.QUEUE_BOTTOM:
+ if self.torrentview.marked:
+ self.torrentview.cursel = (
+ queue_length
+ - selected_num
+ + 1
+ + sorted(self.torrentview.marked).index(self.torrentview.cursel)
+ )
+ else:
+ self.torrentview.cursel = queue_length
+ self.torrentview.marked = list(
+ range(queue_length - selected_num + 1, queue_length + 1)
+ )
+
+ def do_queue(self, qact, *args, **kwargs):
+ if qact == ACTION.QUEUE_TOP:
+ client.core.queue_top(self.torrent_ids).addCallback(
+ self.move_selection, qact
+ )
+ elif qact == ACTION.QUEUE_BOTTOM:
+ client.core.queue_bottom(self.torrent_ids).addCallback(
+ self.move_selection, qact
+ )
+ elif qact == ACTION.QUEUE_UP:
+ client.core.queue_up(self.torrent_ids).addCallback(
+ self.move_selection, qact
+ )
+ elif qact == ACTION.QUEUE_DOWN:
+ client.core.queue_down(self.torrent_ids).addCallback(
+ self.move_selection, qact
+ )
+
+ def popup(self, **kwargs):
+ popup = SelectablePopup(
+ self.torrentslist,
+ 'Queue Action',
+ self.do_queue,
+ cb_args=kwargs,
+ border_off_west=1,
+ )
+ popup.add_line(ACTION.QUEUE_TOP, '_Top')
+ popup.add_line(ACTION.QUEUE_UP, '_Up')
+ popup.add_line(ACTION.QUEUE_DOWN, '_Down')
+ popup.add_line(ACTION.QUEUE_BOTTOM, '_Bottom')
+ self.torrentslist.push_popup(popup)
diff --git a/deluge/ui/console/modes/torrentlist/search_mode.py b/deluge/ui/console/modes/torrentlist/search_mode.py
new file mode 100644
index 0000000..6f79628
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/search_mode.py
@@ -0,0 +1,206 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.decorators import overrides
+from deluge.ui.console.modes.basemode import InputKeyHandler, move_cursor
+from deluge.ui.console.modes.torrentlist.torrentactions import torrent_actions_popup
+from deluge.ui.console.utils import curses_util as util
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+QUEUE_MODE_HELP_STR = """
+Change queue position of selected torrents
+
+{!info!}'+'{!normal!} - {|indent_pos:|}Move up
+{!info!}'-'{!normal!} - {|indent_pos:|}Move down
+
+{!info!}'Home'{!normal!} - {|indent_pos:|}Move to top
+{!info!}'End'{!normal!} - {|indent_pos:|}Move to bottom
+
+"""
+SEARCH_EMPTY = 0
+SEARCH_FAILING = 1
+SEARCH_SUCCESS = 2
+SEARCH_START_REACHED = 3
+SEARCH_END_REACHED = 4
+SEARCH_FORMAT = {
+ SEARCH_EMPTY: '{!black,white!}Search torrents: %s{!black,white!}',
+ SEARCH_SUCCESS: '{!black,white!}Search torrents: {!black,green!}%s{!black,white!}',
+ SEARCH_FAILING: '{!black,white!}Search torrents: {!black,red!}%s{!black,white!}',
+ SEARCH_START_REACHED: '{!black,white!}Search torrents: {!black,yellow!}%s{!black,white!} (start reached)',
+ SEARCH_END_REACHED: '{!black,white!}Search torrents: {!black,yellow!}%s{!black,white!} (end reached)',
+}
+
+
+class SearchMode(InputKeyHandler):
+ def __init__(self, torrentlist):
+ super().__init__()
+ self.torrentlist = torrentlist
+ self.torrentview = torrentlist.torrentview
+ self.search_state = SEARCH_EMPTY
+ self.search_string = ''
+
+ def update_cursor(self):
+ util.safe_curs_set(util.Curser.VERY_VISIBLE)
+ move_cursor(
+ self.torrentlist.stdscr,
+ self.torrentlist.rows - 1,
+ len(self.search_string) + 17,
+ )
+
+ def set_statusbar_args(self, statusbar_args):
+ statusbar_args['bottombar'] = (
+ SEARCH_FORMAT[self.search_state] % self.search_string
+ )
+ statusbar_args['bottombar_help'] = False
+
+ def update_colors(self, tidx, colors):
+ if len(self.search_string) > 1:
+ lcase_name = self.torrentview.torrent_names[tidx].lower()
+ sstring_lower = self.search_string.lower()
+ if lcase_name.find(sstring_lower) != -1:
+ if tidx == self.torrentview.cursel:
+ pass
+ elif tidx in self.torrentview.marked:
+ colors['bg'] = 'magenta'
+ else:
+ colors['bg'] = 'green'
+ if colors['fg'] == 'green':
+ colors['fg'] = 'black'
+ colors['attr'] = 'bold'
+
+ def do_search(self, direction='first'):
+ """
+ Performs a search on visible torrent and sets cursor to the match
+
+ Args:
+ direction (str): The direction to search. Must be one of 'first', 'last', 'next' or 'previous'
+
+ """
+ search_space = list(enumerate(self.torrentview.torrent_names))
+
+ if direction == 'last':
+ search_space = reversed(search_space)
+ elif direction == 'next':
+ search_space = search_space[self.torrentview.cursel + 1 :]
+ elif direction == 'previous':
+ search_space = reversed(search_space[: self.torrentview.cursel])
+
+ search_string = self.search_string.lower()
+ for i, n in search_space:
+ n = n.lower()
+ if n.find(search_string) != -1:
+ self.torrentview.cursel = i
+ if (
+ self.torrentview.curoff
+ + self.torrentview.torrent_rows
+ - self.torrentview.torrentlist_offset
+ ) < self.torrentview.cursel:
+ self.torrentview.curoff = (
+ self.torrentview.cursel - self.torrentview.torrent_rows + 1
+ )
+ elif (self.torrentview.curoff + 1) > self.torrentview.cursel:
+ self.torrentview.curoff = max(0, self.torrentview.cursel)
+ self.search_state = SEARCH_SUCCESS
+ return
+ if direction in ['first', 'last']:
+ self.search_state = SEARCH_FAILING
+ elif direction == 'next':
+ self.search_state = SEARCH_END_REACHED
+ elif direction == 'previous':
+ self.search_state = SEARCH_START_REACHED
+
+ @overrides(InputKeyHandler)
+ def handle_read(self, c):
+ cname = self.torrentview.torrent_names[self.torrentview.cursel]
+ refresh = True
+
+ if c in [
+ util.KEY_ESC,
+ util.KEY_BELL,
+ ]: # If Escape key or CTRL-g, we abort search
+ self.torrentlist.set_minor_mode(None)
+ self.search_state = SEARCH_EMPTY
+ elif c in [curses.KEY_BACKSPACE, util.KEY_BACKSPACE2]:
+ if self.search_string:
+ self.search_string = self.search_string[:-1]
+ if cname.lower().find(self.search_string.lower()) != -1:
+ self.search_state = SEARCH_SUCCESS
+ else:
+ self.torrentlist.set_minor_mode(None)
+ self.search_state = SEARCH_EMPTY
+ elif c == curses.KEY_DC:
+ self.search_string = ''
+ self.search_state = SEARCH_SUCCESS
+ elif c == curses.KEY_UP:
+ self.do_search('previous')
+ elif c == curses.KEY_DOWN:
+ self.do_search('next')
+ elif c == curses.KEY_LEFT:
+ self.torrentlist.set_minor_mode(None)
+ self.search_state = SEARCH_EMPTY
+ elif c == ord('/'):
+ self.torrentlist.set_minor_mode(None)
+ self.search_state = SEARCH_EMPTY
+ elif c == curses.KEY_RIGHT:
+ tid = self.torrentview.current_torrent_id()
+ self.torrentlist.show_torrent_details(tid)
+ refresh = False
+ elif c == curses.KEY_HOME:
+ self.do_search('first')
+ elif c == curses.KEY_END:
+ self.do_search('last')
+ elif c in [10, curses.KEY_ENTER]:
+ self.last_mark = -1
+ tid = self.torrentview.current_torrent_id()
+ torrent_actions_popup(self.torrentlist, [tid], details=True)
+ refresh = False
+ elif c == util.KEY_ESC:
+ self.search_string = ''
+ self.search_state = SEARCH_EMPTY
+ elif c > 31 and c < 256:
+ old_search_string = self.search_string
+ stroke = chr(c)
+ uchar = stroke
+ while not uchar:
+ try:
+ uchar = stroke.decode(self.torrentlist.encoding)
+ except UnicodeDecodeError:
+ c = self.torrentlist.stdscr.getch()
+ stroke += chr(c)
+
+ if uchar:
+ self.search_string += uchar
+
+ still_matching = (
+ cname.lower().find(self.search_string.lower())
+ == cname.lower().find(old_search_string.lower())
+ and cname.lower().find(self.search_string.lower()) != -1
+ )
+
+ if self.search_string and not still_matching:
+ self.do_search()
+ elif self.search_string:
+ self.search_state = SEARCH_SUCCESS
+ else:
+ refresh = False
+
+ if not self.search_string:
+ self.search_state = SEARCH_EMPTY
+ refresh = True
+
+ if refresh:
+ self.torrentlist.refresh([])
+
+ return util.ReadState.READ
diff --git a/deluge/ui/console/modes/torrentlist/torrentactions.py b/deluge/ui/console/modes/torrentlist/torrentactions.py
new file mode 100644
index 0000000..a153e11
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/torrentactions.py
@@ -0,0 +1,272 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+
+from twisted.internet import defer
+
+import deluge.component as component
+from deluge.ui.client import client
+from deluge.ui.common import TORRENT_DATA_FIELD
+from deluge.ui.console.modes.torrentlist.queue_mode import QueueMode
+from deluge.ui.console.utils import colors
+from deluge.ui.console.utils.common import TORRENT_OPTIONS
+from deluge.ui.console.widgets.popup import InputPopup, MessagePopup, SelectablePopup
+
+from . import ACTION
+
+log = logging.getLogger(__name__)
+
+
+def action_error(error, mode):
+ mode.report_message('Error Occurred', error.getErrorMessage())
+ mode.refresh()
+
+
+def action_remove(mode=None, torrent_ids=None, **kwargs):
+ def do_remove(*args, **kwargs):
+ data = args[0] if args else None
+ if data is None or kwargs.get('close', False):
+ mode.pop_popup()
+ return True
+
+ mode.torrentview.clear_marked()
+ remove_data = data['remove_files']['value']
+
+ def on_removed_finished(errors):
+ if errors:
+ error_msgs = ''
+ for t_id, e_msg in errors:
+ error_msgs += f'Error removing torrent {t_id} : {e_msg}\n'
+ mode.report_message(
+ 'Error(s) occured when trying to delete torrent(s).', error_msgs
+ )
+ mode.refresh()
+
+ d = client.core.remove_torrents(torrent_ids, remove_data)
+ d.addCallback(on_removed_finished)
+ mode.pop_popup()
+
+ def got_status(status):
+ return (status['name'], status['state'])
+
+ callbacks = []
+ for tid in torrent_ids:
+ d = client.core.get_torrent_status(tid, ['name', 'state'])
+ callbacks.append(d.addCallback(got_status))
+
+ def remove_dialog(status):
+ status = [t_status[1] for t_status in status]
+
+ if len(torrent_ids) == 1:
+ rem_msg = '{!info!}Remove the following torrent?{!input!}'
+ else:
+ rem_msg = '{!info!}Remove the following %d torrents?{!input!}' % len(
+ torrent_ids
+ )
+
+ show_max = 6
+ for i, (name, state) in enumerate(status):
+ color = colors.state_color[state]
+ rem_msg += f'\n {color}* {{!input!}}{name}'
+ if i == show_max - 1:
+ if i < len(status) - 1:
+ rem_msg += '\n {!red!}And %i more' % (len(status) - show_max)
+ break
+
+ popup = InputPopup(
+ mode,
+ '(Esc to cancel, Enter to remove)',
+ close_cb=do_remove,
+ border_off_west=1,
+ border_off_north=1,
+ )
+ popup.add_text(rem_msg)
+ popup.add_spaces(1)
+ popup.add_select_input(
+ 'remove_files',
+ '{!info!}Torrent files:',
+ ['Keep', 'Remove'],
+ [False, True],
+ False,
+ )
+ mode.push_popup(popup)
+
+ defer.DeferredList(callbacks).addCallback(remove_dialog)
+
+
+def action_torrent_info(mode=None, torrent_ids=None, **kwargs):
+ popup = MessagePopup(mode, 'Torrent options', 'Querying core, please wait...')
+ mode.push_popup(popup)
+ torrents = torrent_ids
+ options = {}
+
+ def _do_set_torrent_options(torrent_ids, result):
+ options = {}
+ for opt, val in result.items():
+ if val['value'] not in ['multiple', None]:
+ options[opt] = val['value']
+ client.core.set_torrent_options(torrent_ids, options)
+
+ def on_torrent_status(status):
+ for key in status:
+ if key not in options:
+ options[key] = status[key]
+ elif options[key] != status[key]:
+ options[key] = 'multiple'
+
+ def create_popup(status):
+ mode.pop_popup()
+
+ def cb(result, **kwargs):
+ if result is None:
+ return
+ _do_set_torrent_options(torrent_ids, result)
+ if kwargs.get('close', False):
+ mode.pop_popup()
+ return True
+
+ option_popup = InputPopup(
+ mode,
+ ' Set Torrent Options ',
+ close_cb=cb,
+ border_off_west=1,
+ border_off_north=1,
+ base_popup=kwargs.get('base_popup', None),
+ )
+ for field in TORRENT_OPTIONS:
+ caption = '{!info!}' + TORRENT_DATA_FIELD[field]['name']
+ value = options[field]
+ if isinstance(value, ''.__class__):
+ option_popup.add_text_input(field, caption, value)
+ elif isinstance(value, bool):
+ choices = (['Yes', 'No'], [True, False], [True, False].index(value))
+ option_popup.add_select_input(
+ field, caption, choices[0], choices[1], choices[2]
+ )
+ elif isinstance(value, float):
+ option_popup.add_float_spin_input(
+ field, caption, value=value, min_val=-1
+ )
+ elif isinstance(value, int):
+ option_popup.add_int_spin_input(field, caption, value=value, min_val=-1)
+
+ mode.push_popup(option_popup)
+
+ callbacks = []
+ for tid in torrents:
+ deferred = component.get('SessionProxy').get_torrent_status(
+ tid, list(TORRENT_OPTIONS)
+ )
+ callbacks.append(deferred.addCallback(on_torrent_status))
+
+ callbacks = defer.DeferredList(callbacks)
+ callbacks.addCallback(create_popup)
+
+
+def torrent_action(action, *args, **kwargs):
+ retval = False
+ torrent_ids = kwargs.get('torrent_ids', None)
+ mode = kwargs.get('mode', None)
+
+ if torrent_ids is None:
+ return
+
+ if action == ACTION.PAUSE:
+ log.debug('Pausing torrents: %s', torrent_ids)
+ client.core.pause_torrents(torrent_ids).addErrback(action_error, mode)
+ retval = True
+ elif action == ACTION.RESUME:
+ log.debug('Resuming torrents: %s', torrent_ids)
+ client.core.resume_torrents(torrent_ids).addErrback(action_error, mode)
+ retval = True
+ elif action == ACTION.QUEUE:
+ queue_mode = QueueMode(mode, torrent_ids)
+ queue_mode.popup(**kwargs)
+ elif action == ACTION.REMOVE:
+ action_remove(**kwargs)
+ retval = True
+ elif action == ACTION.MOVE_STORAGE:
+
+ def do_move(res, **kwargs):
+ if res is None or kwargs.get('close', False):
+ mode.pop_popup()
+ return True
+
+ if os.path.exists(res['path']['value']) and not os.path.isdir(
+ res['path']['value']
+ ):
+ mode.report_message(
+ 'Cannot Move Download Folder',
+ '{!error!}%s exists and is not a directory' % res['path']['value'],
+ )
+ else:
+ log.debug('Moving %s to: %s', torrent_ids, res['path']['value'])
+ client.core.move_storage(torrent_ids, res['path']['value']).addErrback(
+ action_error, mode
+ )
+
+ popup = InputPopup(
+ mode, 'Move Download Folder', close_cb=do_move, border_off_east=1
+ )
+ popup.add_text_input('path', 'Enter path to move to:', complete=True)
+ mode.push_popup(popup)
+ elif action == ACTION.RECHECK:
+ log.debug('Rechecking torrents: %s', torrent_ids)
+ client.core.force_recheck(torrent_ids).addErrback(action_error, mode)
+ retval = True
+ elif action == ACTION.REANNOUNCE:
+ log.debug('Reannouncing torrents: %s', torrent_ids)
+ client.core.force_reannounce(torrent_ids).addErrback(action_error, mode)
+ retval = True
+ elif action == ACTION.DETAILS:
+ log.debug('Torrent details')
+ tid = mode.torrentview.current_torrent_id()
+ if tid:
+ mode.show_torrent_details(tid)
+ else:
+ log.error('No current torrent in _torrentaction, this is a bug')
+ elif action == ACTION.TORRENT_OPTIONS:
+ action_torrent_info(**kwargs)
+
+ return retval
+
+
+# Creates the popup. mode is the calling mode, tids is a list of torrents to take action upon
+def torrent_actions_popup(mode, torrent_ids, details=False, action=None, close_cb=None):
+ if action is not None:
+ torrent_action(action, mode=mode, torrent_ids=torrent_ids)
+ return
+
+ popup = SelectablePopup(
+ mode,
+ 'Torrent Actions',
+ torrent_action,
+ cb_args={'mode': mode, 'torrent_ids': torrent_ids},
+ close_cb=close_cb,
+ border_off_north=1,
+ border_off_west=1,
+ border_off_east=1,
+ )
+ popup.add_line(ACTION.PAUSE, '_Pause')
+ popup.add_line(ACTION.RESUME, '_Resume')
+ if details:
+ popup.add_divider()
+ popup.add_line(ACTION.QUEUE, 'Queue')
+ popup.add_divider()
+ popup.add_line(ACTION.REANNOUNCE, '_Update Tracker')
+ popup.add_divider()
+ popup.add_line(ACTION.REMOVE, 'Remo_ve Torrent')
+ popup.add_line(ACTION.RECHECK, '_Force Recheck')
+ popup.add_line(ACTION.MOVE_STORAGE, '_Move Download Folder')
+ popup.add_divider()
+ if details:
+ popup.add_line(ACTION.DETAILS, 'Torrent _Details')
+ popup.add_line(ACTION.TORRENT_OPTIONS, 'Torrent _Options')
+ mode.push_popup(popup)
diff --git a/deluge/ui/console/modes/torrentlist/torrentlist.py b/deluge/ui/console/modes/torrentlist/torrentlist.py
new file mode 100644
index 0000000..d3c32ec
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/torrentlist.py
@@ -0,0 +1,347 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+from collections import deque
+
+import deluge.component as component
+from deluge.component import Component
+from deluge.decorators import overrides
+from deluge.ui.client import client
+from deluge.ui.console.modes.basemode import BaseMode, mkwin
+from deluge.ui.console.modes.torrentlist import torrentview, torrentviewcolumns
+from deluge.ui.console.modes.torrentlist.add_torrents_popup import (
+ show_torrent_add_popup,
+)
+from deluge.ui.console.modes.torrentlist.filtersidebar import FilterSidebar
+from deluge.ui.console.modes.torrentlist.queue_mode import QueueMode
+from deluge.ui.console.modes.torrentlist.search_mode import SearchMode
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.widgets.popup import MessagePopup, PopupsHandler
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+
+# Big help string that gets displayed when the user hits 'h'
+HELP_STR = """
+This screen shows an overview of the current torrents Deluge is managing. \
+The currently selected torrent is indicated with a white background. \
+You can change the selected torrent using the up/down arrows or the \
+PgUp/PgDown keys. Home and End keys go to the first and last torrent \
+respectively.
+
+Operations can be performed on multiple torrents by marking them and \
+then hitting Enter. See below for the keys used to mark torrents.
+
+You can scroll a popup window that doesn't fit its content (like \
+this one) using the up/down arrows, PgUp/PgDown and Home/End keys.
+
+All popup windows can be closed/canceled by hitting the Esc key \
+or the 'q' key (does not work for dialogs like the add torrent dialog)
+
+The actions you can perform and the keys to perform them are as follows:
+
+{!info!}'h'{!normal!} - {|indent_pos:|}Show this help
+{!info!}'p'{!normal!} - {|indent_pos:|}Open preferences
+{!info!}'l'{!normal!} - {|indent_pos:|}Enter Command Line mode
+{!info!}'e'{!normal!} - {|indent_pos:|}Show the event log view ({!info!}'q'{!normal!} to go back to overview)
+
+{!info!}'a'{!normal!} - {|indent_pos:|}Add a torrent
+{!info!}Delete{!normal!} - {|indent_pos:|}Delete a torrent
+
+{!info!}'/'{!normal!} - {|indent_pos:|}Search torrent names. \
+Searching starts immediately - matching torrents are highlighted in \
+green, you can cycle through them with Up/Down arrows and Home/End keys \
+You can view torrent details with right arrow, open action popup with \
+Enter key and exit search mode with '/' key, left arrow or \
+backspace with empty search field
+
+{!info!}'f'{!normal!} - {|indent_pos:|}Show only torrents in a certain state
+ (Will open a popup where you can select the state you want to see)
+{!info!}'q'{!normal!} - {|indent_pos:|}Enter queue mode
+
+{!info!}'S'{!normal!} - {|indent_pos:|}Show or hide the sidebar
+
+{!info!}Enter{!normal!} - {|indent_pos:|}Show torrent actions popup. Here you can do things like \
+pause/resume, remove, recheck and so on. These actions \
+apply to all currently marked torrents. The currently \
+selected torrent is automatically marked when you press enter.
+
+{!info!}'o'{!normal!} - {|indent_pos:|}Show and set torrent options - this will either apply \
+to all selected torrents(but not the highlighted one) or currently \
+selected torrent if nothing is selected
+
+{!info!}'Q'{!normal!} - {|indent_pos:|}quit deluge-console
+{!info!}'C'{!normal!} - {|indent_pos:|}show connection manager
+
+{!info!}'m'{!normal!} - {|indent_pos:|}Mark a torrent
+{!info!}'M'{!normal!} - {|indent_pos:|}Mark all torrents between currently selected torrent and last marked torrent
+{!info!}'c'{!normal!} - {|indent_pos:|}Clear selection
+
+{!info!}'v'{!normal!} - {|indent_pos:|}Show a dialog which allows you to choose columns to display
+{!info!}'<' / '>'{!normal!} - {|indent_pos:|}Change column by which to sort torrents
+
+{!info!}Right Arrow{!normal!} - {|indent_pos:|}Torrent Detail Mode. This includes more detailed information \
+about the currently selected torrent, as well as a view of the \
+files in the torrent and the ability to set file priorities.
+
+{!info!}'q'/Esc{!normal!} - {|indent_pos:|}Close a popup (Note that 'q' does not work for dialogs \
+where you input something
+"""
+
+
+class TorrentList(BaseMode, PopupsHandler):
+ def __init__(self, stdscr, encoding=None):
+ BaseMode.__init__(
+ self, stdscr, encoding=encoding, do_refresh=False, depend=['SessionProxy']
+ )
+ PopupsHandler.__init__(self)
+ self.messages = deque()
+ self.last_mark = -1
+ self.go_top = False
+ self.minor_mode = None
+
+ self.consoleui = component.get('ConsoleUI')
+ self.coreconfig = self.consoleui.coreconfig
+ self.config = self.consoleui.config
+ self.sidebar = FilterSidebar(self, self.config)
+ self.torrentview_panel = mkwin(
+ curses.COLOR_GREEN,
+ curses.LINES - 1,
+ curses.COLS - self.sidebar.width,
+ 0,
+ self.sidebar.width,
+ )
+ self.torrentview = torrentview.TorrentView(self, self.config)
+
+ util.safe_curs_set(util.Curser.INVISIBLE)
+ self.stdscr.notimeout(0)
+
+ def torrentview_columns(self):
+ return self.torrentview_panel.getmaxyx()[1]
+
+ def on_config_changed(self):
+ self.config.save()
+ self.torrentview.on_config_changed()
+
+ def toggle_sidebar(self):
+ if self.config['torrentview']['show_sidebar']:
+ self.sidebar.show()
+ self.sidebar.resize_window(curses.LINES - 2, self.sidebar.width)
+ self.torrentview_panel.resize(
+ curses.LINES - 1, curses.COLS - self.sidebar.width
+ )
+ self.torrentview_panel.mvwin(0, self.sidebar.width)
+ else:
+ self.sidebar.hide()
+ self.torrentview_panel.resize(curses.LINES - 1, curses.COLS)
+ self.torrentview_panel.mvwin(0, 0)
+ self.torrentview.update_columns()
+ # After updating the columns widths, clear row cache to recreate them
+ self.torrentview.cached_rows.clear()
+ self.refresh()
+
+ @overrides(Component)
+ def start(self):
+ self.torrentview.on_config_changed()
+ self.toggle_sidebar()
+
+ if self.config['first_run']:
+ self.push_popup(
+ MessagePopup(self, 'Welcome to Deluge', HELP_STR, width_req=0.65)
+ )
+ self.config['first_run'] = False
+ self.config.save()
+
+ if client.connected():
+ self.torrentview.update(refresh=False)
+
+ @overrides(Component)
+ def update(self):
+ if self.mode_paused():
+ return
+
+ if client.connected():
+ self.torrentview.update(refresh=True)
+
+ @overrides(BaseMode)
+ def resume(self):
+ super().resume()
+
+ @overrides(BaseMode)
+ def on_resize(self, rows, cols):
+ BaseMode.on_resize(self, rows, cols)
+
+ if self.popup:
+ self.popup.handle_resize()
+
+ if not self.consoleui.is_active_mode(self):
+ return
+
+ self.toggle_sidebar()
+
+ def show_torrent_details(self, tid):
+ mode = self.consoleui.set_mode('TorrentDetail')
+ mode.update(tid)
+
+ def set_minor_mode(self, mode):
+ self.minor_mode = mode
+ self.refresh()
+
+ def _show_visible_columns_popup(self):
+ self.push_popup(torrentviewcolumns.TorrentViewColumns(self))
+
+ @overrides(BaseMode)
+ def refresh(self, lines=None):
+ # Something has requested we scroll to the top of the list
+ if self.go_top:
+ self.torrentview.cursel = 0
+ self.torrentview.curoff = 0
+ self.go_top = False
+
+ if not lines:
+ if not self.consoleui.is_active_mode(self):
+ return
+ self.stdscr.erase()
+
+ self.add_string(1, self.torrentview.column_string, scr=self.torrentview_panel)
+
+ # Update the status bars
+ statusbar_args = {'scr': self.stdscr, 'bottombar_help': True}
+ if self.torrentview.curr_filter is not None:
+ statusbar_args[
+ 'topbar'
+ ] = '{} {{!filterstatus!}}Current filter: {}'.format(
+ self.statusbars.topbar,
+ self.torrentview.curr_filter,
+ )
+
+ if self.minor_mode:
+ self.minor_mode.set_statusbar_args(statusbar_args)
+
+ self.draw_statusbars(**statusbar_args)
+
+ self.torrentview.update_torrents(lines)
+
+ if self.minor_mode:
+ self.minor_mode.update_cursor()
+ else:
+ util.safe_curs_set(util.Curser.INVISIBLE)
+
+ if not self.consoleui.is_active_mode(self):
+ return
+
+ self.stdscr.noutrefresh()
+ self.torrentview_panel.noutrefresh()
+
+ if not self.sidebar.hidden():
+ self.sidebar.refresh()
+
+ if self.popup:
+ self.popup.refresh()
+
+ curses.doupdate()
+
+ @overrides(BaseMode)
+ def read_input(self):
+ # Read the character
+ affected_lines = None
+ c = self.stdscr.getch()
+
+ # Either ESC or ALT+<some key>
+ if c == util.KEY_ESC:
+ n = self.stdscr.getch()
+ if n == -1: # Means it was the escape key
+ pass
+ else: # ALT+<some key>
+ c = [c, n]
+
+ if self.popup:
+ ret = self.popup.handle_read(c)
+ if self.popup and self.popup.closed():
+ self.pop_popup()
+ self.refresh()
+ return ret
+ if util.is_printable_chr(c):
+ if chr(c) == 'Q':
+ component.get('ConsoleUI').quit()
+ elif chr(c) == 'C':
+ self.consoleui.set_mode('ConnectionManager')
+ return
+ elif chr(c) == 'q':
+ self.torrentview.update_marked(self.torrentview.cursel)
+ self.set_minor_mode(
+ QueueMode(self, self.torrentview._selected_torrent_ids())
+ )
+ return
+ elif chr(c) == '/':
+ self.set_minor_mode(SearchMode(self))
+ return
+
+ if self.sidebar.has_focus() and c not in [curses.KEY_RIGHT]:
+ self.sidebar.handle_read(c)
+ self.refresh()
+ return
+
+ if self.torrentview.numtorrents < 0:
+ return
+ elif self.minor_mode:
+ self.minor_mode.handle_read(c)
+ return
+
+ affected_lines = None
+ # Hand off to torrentview
+ if self.torrentview.handle_read(c) == util.ReadState.CHANGED:
+ affected_lines = self.torrentview.get_input_result()
+
+ if c == curses.KEY_LEFT:
+ if not self.sidebar.has_focus():
+ self.sidebar.set_focused(True)
+ self.refresh()
+ return
+ elif c == curses.KEY_RIGHT:
+ if self.sidebar.has_focus():
+ self.sidebar.set_focused(False)
+ self.refresh()
+ return
+ # We enter a new mode for the selected torrent here
+ tid = self.torrentview.current_torrent_id()
+ if tid:
+ self.show_torrent_details(tid)
+ return
+
+ elif util.is_printable_chr(c):
+ if chr(c) == 'a':
+ show_torrent_add_popup(self)
+ elif chr(c) == 'v':
+ self._show_visible_columns_popup()
+ elif chr(c) == 'h':
+ self.push_popup(MessagePopup(self, 'Help', HELP_STR, width_req=0.65))
+ elif chr(c) == 'p':
+ mode = self.consoleui.set_mode('Preferences')
+ mode.load_config()
+ return
+ elif chr(c) == 'e':
+ self.consoleui.set_mode('EventView')
+ return
+ elif chr(c) == 'S':
+ self.config['torrentview']['show_sidebar'] = (
+ self.config['torrentview']['show_sidebar'] is False
+ )
+ self.config.save()
+ self.toggle_sidebar()
+ elif chr(c) == 'l':
+ self.consoleui.set_mode('CmdLine', refresh=True)
+ return
+
+ self.refresh(affected_lines)
diff --git a/deluge/ui/console/modes/torrentlist/torrentview.py b/deluge/ui/console/modes/torrentlist/torrentview.py
new file mode 100644
index 0000000..1ce5097
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/torrentview.py
@@ -0,0 +1,514 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.decorators import overrides
+from deluge.ui.console.modes.basemode import InputKeyHandler
+from deluge.ui.console.modes.torrentlist import torrentviewcolumns
+from deluge.ui.console.modes.torrentlist.torrentactions import torrent_actions_popup
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.utils import format_utils
+from deluge.ui.console.utils.column import (
+ get_column_value,
+ get_required_fields,
+ torrent_data_fields,
+)
+
+from . import ACTION
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+
+state_fg_colors = {
+ 'Downloading': 'green',
+ 'Seeding': 'cyan',
+ 'Error': 'red',
+ 'Queued': 'yellow',
+ 'Checking': 'blue',
+ 'Moving': 'green',
+}
+
+
+reverse_sort_fields = [
+ 'size',
+ 'download_speed',
+ 'upload_speed',
+ 'num_seeds',
+ 'num_peers',
+ 'distributed_copies',
+ 'time_added',
+ 'total_uploaded',
+ 'all_time_download',
+ 'total_remaining',
+ 'progress',
+ 'ratio',
+ 'seeding_time',
+ 'active_time',
+]
+
+
+default_column_values = {
+ 'queue': {'width': 4, 'visible': True},
+ 'name': {'width': -1, 'visible': True},
+ 'size': {'width': 8, 'visible': True},
+ 'progress': {'width': 7, 'visible': True},
+ 'download_speed': {'width': 7, 'visible': True},
+ 'upload_speed': {'width': 7, 'visible': True},
+ 'state': {'width': 13},
+ 'eta': {'width': 8, 'visible': True},
+ 'time_added': {'width': 15},
+ 'tracker': {'width': 15},
+ 'download_location': {'width': 15},
+ 'downloaded': {'width': 13},
+ 'uploaded': {'width': 7},
+ 'remaining': {'width': 13},
+ 'completed_time': {'width': 15},
+ 'last_seen_complete': {'width': 15},
+ 'max_upload_speed': {'width': 7},
+}
+
+
+default_columns = {}
+for col_i, col_name in enumerate(torrentviewcolumns.column_pref_names):
+ default_columns[col_name] = {'width': 10, 'order': col_i, 'visible': False}
+ if col_name in default_column_values:
+ default_columns[col_name].update(default_column_values[col_name])
+
+
+class TorrentView(InputKeyHandler):
+ def __init__(self, torrentlist, config):
+ super().__init__()
+ self.torrentlist = torrentlist
+ self.config = config
+ self.filter_dict = {}
+ self.curr_filter = None
+ self.cached_rows = {}
+ self.sorted_ids = None
+ self.torrent_names = None
+ self.numtorrents = -1
+ self.column_string = ''
+ self.curoff = 0
+ self.marked = []
+ self.cursel = 0
+
+ @property
+ def rows(self):
+ return self.torrentlist.rows
+
+ @property
+ def torrent_rows(self):
+ return self.torrentlist.rows - 3 # Account for header lines + columns line
+
+ @property
+ def torrentlist_offset(self):
+ return 2
+
+ def update_state(self, state, refresh=False):
+ self.curstate = state # cache in case we change sort order
+ self.cached_rows.clear()
+ self.numtorrents = len(state)
+ self.sorted_ids = self._sort_torrents(state)
+ self.torrent_names = []
+ for torrent_id in self.sorted_ids:
+ ts = self.curstate[torrent_id]
+ self.torrent_names.append(ts['name'])
+
+ if refresh:
+ self.torrentlist.refresh()
+
+ def set_torrent_filter(self, state):
+ self.curr_filter = state
+ filter_dict = {'state': [state]}
+ if state == 'All':
+ self.curr_filter = None
+ filter_dict = {}
+ self.filter_dict = filter_dict
+ self.torrentlist.go_top = True
+ self.torrentlist.update()
+ return True
+
+ def _scroll_up(self, by):
+ cursel = self.cursel
+ prevoff = self.curoff
+ self.cursel = max(self.cursel - by, 0)
+ if self.cursel < self.curoff:
+ self.curoff = self.cursel
+ affected = []
+ if prevoff == self.curoff:
+ affected.append(cursel)
+ if cursel != self.cursel:
+ affected.insert(0, self.cursel)
+ return affected
+
+ def _scroll_down(self, by):
+ cursel = self.cursel
+ prevoff = self.curoff
+ self.cursel = min(self.cursel + by, self.numtorrents - 1)
+ if (self.curoff + self.torrent_rows) <= self.cursel:
+ self.curoff = self.cursel - self.torrent_rows + 1
+ affected = []
+ if prevoff == self.curoff:
+ affected.append(cursel)
+ if cursel != self.cursel:
+ affected.append(self.cursel)
+ return affected
+
+ def current_torrent_id(self):
+ if not self.sorted_ids:
+ return None
+ return self.sorted_ids[self.cursel]
+
+ def _selected_torrent_ids(self):
+ if not self.sorted_ids:
+ return None
+ ret = []
+ for i in self.marked:
+ ret.append(self.sorted_ids[i])
+ return ret
+
+ def clear_marked(self):
+ self.marked = []
+ self.last_mark = -1
+
+ def mark_unmark(self, idx):
+ if idx in self.marked:
+ self.marked.remove(idx)
+ self.last_mark = -1
+ else:
+ self.marked.append(idx)
+ self.last_mark = idx
+
+ def add_marked(self, indices, last_marked):
+ for i in indices:
+ if i not in self.marked:
+ self.marked.append(i)
+ self.last_mark = last_marked
+
+ def update_marked(self, index, last_mark=True, clear=False):
+ if index not in self.marked:
+ if clear:
+ self.marked = []
+ self.marked.append(index)
+ if last_mark:
+ self.last_mark = index
+ return True
+ return False
+
+ def _sort_torrents(self, state):
+ """Sorts by primary and secondary sort fields."""
+
+ if not state:
+ return {}
+
+ s_primary = self.config['torrentview']['sort_primary']
+ s_secondary = self.config['torrentview']['sort_secondary']
+
+ result = state
+
+ # Sort first by secondary sort field and then primary sort field
+ # so it all works out
+
+ def sort_by_field(state, to_sort, field):
+ field = torrent_data_fields[field]['status'][0]
+ reverse = field in reverse_sort_fields
+
+ # Get first element so we can check if it has given field
+ # and if it's a string
+ first_element = state[list(state)[0]]
+ if field in first_element:
+
+ def sort_key(s):
+ try:
+ # Sort case-insensitively but preserve A>a order.
+ return state.get(s)[field].lower()
+ except AttributeError:
+ # Not a string.
+ return state.get(s)[field]
+
+ to_sort = sorted(to_sort, key=sort_key, reverse=reverse)
+
+ if field == 'eta':
+ to_sort = sorted(to_sort, key=lambda s: state.get(s)['eta'] == 0)
+
+ return to_sort
+
+ # Just in case primary and secondary fields are empty and/or
+ # both are too ambiguous, also sort by queue position first
+ if 'queue' not in [s_secondary, s_primary]:
+ result = sort_by_field(state, result, 'queue')
+ if s_secondary != s_primary:
+ result = sort_by_field(state, result, s_secondary)
+ result = sort_by_field(state, result, s_primary)
+
+ if self.config['torrentview']['separate_complete']:
+ result = sorted(
+ result, key=lambda s: state.get(s).get('progress', 0) == 100.0
+ )
+
+ return result
+
+ def _get_colors(self, row, tidx):
+ # default style
+ colors = {'fg': 'white', 'bg': 'black', 'attr': None}
+
+ if tidx in self.marked:
+ colors.update({'bg': 'blue', 'attr': 'bold'})
+
+ if tidx == self.cursel:
+ col_selected = {'bg': 'white', 'fg': 'black', 'attr': 'bold'}
+ if tidx in self.marked:
+ col_selected['fg'] = 'blue'
+ colors.update(col_selected)
+
+ colors['fg'] = state_fg_colors.get(row[1], colors['fg'])
+
+ if self.torrentlist.minor_mode:
+ self.torrentlist.minor_mode.update_colors(tidx, colors)
+ return colors
+
+ def update_torrents(self, lines):
+ # add all the torrents
+ if self.numtorrents == 0:
+ cols = self.torrentlist.torrentview_columns()
+ msg = 'No torrents match filter'.center(cols)
+ self.torrentlist.add_string(
+ 3, '{!info!}%s' % msg, scr=self.torrentlist.torrentview_panel
+ )
+ elif self.numtorrents == 0:
+ self.torrentlist.add_string(1, 'Waiting for torrents from core...')
+ return
+
+ def draw_row(index):
+ if index not in self.cached_rows:
+ ts = self.curstate[self.sorted_ids[index]]
+ self.cached_rows[index] = (
+ format_utils.format_row(
+ [get_column_value(name, ts) for name in self.cols_to_show],
+ self.column_widths,
+ ),
+ ts['state'],
+ )
+ return self.cached_rows[index]
+
+ tidx = self.curoff
+ currow = 0
+ todraw = []
+ # Affected lines are given when changing selected torrent
+ if lines:
+ for line in lines:
+ if line < tidx:
+ continue
+ if line >= (tidx + self.torrent_rows) or line >= self.numtorrents:
+ break
+ todraw.append((line, line - self.curoff, draw_row(line)))
+ else:
+ for i in range(tidx, tidx + self.torrent_rows):
+ if i >= self.numtorrents:
+ break
+ todraw.append((i, i - self.curoff, draw_row(i)))
+
+ for tidx, currow, row in todraw:
+ if (currow + self.torrentlist_offset - 1) > self.torrent_rows:
+ continue
+ colors = self._get_colors(row, tidx)
+ if colors['attr']:
+ colorstr = '{!%(fg)s,%(bg)s,%(attr)s!}' % colors
+ else:
+ colorstr = '{!%(fg)s,%(bg)s!}' % colors
+
+ self.torrentlist.add_string(
+ currow + self.torrentlist_offset,
+ f'{colorstr}{row[0]}',
+ trim=False,
+ scr=self.torrentlist.torrentview_panel,
+ )
+
+ def update(self, refresh=False):
+ d = component.get('SessionProxy').get_torrents_status(
+ self.filter_dict, self.status_fields
+ )
+ d.addCallback(self.update_state, refresh=refresh)
+
+ def on_config_changed(self):
+ s_primary = self.config['torrentview']['sort_primary']
+ s_secondary = self.config['torrentview']['sort_secondary']
+ changed = None
+ for col in default_columns:
+ if col not in self.config['torrentview']['columns']:
+ changed = self.config['torrentview']['columns'][col] = default_columns[
+ col
+ ]
+ if changed:
+ self.config.save()
+
+ self.cols_to_show = [
+ col
+ for col in sorted(
+ self.config['torrentview']['columns'],
+ key=lambda k: self.config['torrentview']['columns'][k]['order'],
+ )
+ if self.config['torrentview']['columns'][col]['visible']
+ ]
+ self.status_fields = get_required_fields(self.cols_to_show)
+
+ # we always need these, even if we're not displaying them
+ for rf in ['state', 'name', 'queue', 'progress']:
+ if rf not in self.status_fields:
+ self.status_fields.append(rf)
+
+ # same with sort keys
+ if s_primary and s_primary not in self.status_fields:
+ self.status_fields.append(s_primary)
+ if s_secondary and s_secondary not in self.status_fields:
+ self.status_fields.append(s_secondary)
+
+ self.update_columns()
+
+ def update_columns(self):
+ self.column_widths = [
+ self.config['torrentview']['columns'][col]['width']
+ for col in self.cols_to_show
+ ]
+ requested_width = sum(width for width in self.column_widths if width >= 0)
+
+ cols = self.torrentlist.torrentview_columns()
+ if requested_width > cols: # can't satisfy requests, just spread out evenly
+ cw = int(cols / len(self.cols_to_show))
+ for i in range(0, len(self.column_widths)):
+ self.column_widths[i] = cw
+ else:
+ rem = cols - requested_width
+ var_cols = len([width for width in self.column_widths if width < 0])
+ if var_cols > 0:
+ vw = int(rem / var_cols)
+ for i in range(0, len(self.column_widths)):
+ if self.column_widths[i] < 0:
+ self.column_widths[i] = vw
+
+ self.column_string = '{!header!}'
+
+ primary_sort_col_name = self.config['torrentview']['sort_primary']
+
+ for i, column in enumerate(self.cols_to_show):
+ ccol = torrent_data_fields[column]['name']
+ width = self.column_widths[i]
+
+ # Trim the column if it's too long to fit
+ if len(ccol) > width:
+ ccol = ccol[: width - 1]
+
+ # Padding
+ ccol += ' ' * (width - len(ccol))
+
+ # Highlight the primary sort column
+ if column == primary_sort_col_name:
+ if i != len(self.cols_to_show) - 1:
+ ccol = '{!black,green,bold!}%s{!header!}' % ccol
+ else:
+ ccol = ('{!black,green,bold!}%s' % ccol)[:-1]
+
+ self.column_string += ccol
+
+ @overrides(InputKeyHandler)
+ def handle_read(self, c):
+ affected_lines = None
+ if c == curses.KEY_UP:
+ if self.cursel != 0:
+ affected_lines = self._scroll_up(1)
+ elif c == curses.KEY_PPAGE:
+ affected_lines = self._scroll_up(int(self.torrent_rows / 2))
+ elif c == curses.KEY_DOWN:
+ if self.cursel < self.numtorrents:
+ affected_lines = self._scroll_down(1)
+ elif c == curses.KEY_NPAGE:
+ affected_lines = self._scroll_down(int(self.torrent_rows / 2))
+ elif c == curses.KEY_HOME:
+ affected_lines = self._scroll_up(self.cursel)
+ elif c == curses.KEY_END:
+ affected_lines = self._scroll_down(self.numtorrents - self.cursel)
+ elif c == curses.KEY_DC: # DEL
+ added = self.update_marked(self.cursel)
+
+ def on_close(**kwargs):
+ if added:
+ self.marked.pop()
+
+ torrent_actions_popup(
+ self.torrentlist,
+ self._selected_torrent_ids(),
+ action=ACTION.REMOVE,
+ close_cb=on_close,
+ )
+ elif c in [curses.KEY_ENTER, util.KEY_ENTER2] and self.numtorrents:
+ added = self.update_marked(self.cursel)
+
+ def on_close(data, **kwargs):
+ if added:
+ self.marked.remove(self.cursel)
+
+ torrent_actions_popup(
+ self.torrentlist,
+ self._selected_torrent_ids(),
+ details=True,
+ close_cb=on_close,
+ )
+ self.torrentlist.refresh()
+ elif c == ord('j'):
+ affected_lines = self._scroll_down(1)
+ elif c == ord('k'):
+ affected_lines = self._scroll_up(1)
+ elif c == ord('m'):
+ self.mark_unmark(self.cursel)
+ affected_lines = [self.cursel]
+ elif c == ord('M'):
+ if self.last_mark >= 0:
+ if self.cursel > self.last_mark:
+ mrange = list(range(self.last_mark, self.cursel + 1))
+ else:
+ mrange = list(range(self.cursel, self.last_mark))
+ self.add_marked(mrange, self.cursel)
+ affected_lines = mrange
+ else:
+ self.mark_unmark(self.cursel)
+ affected_lines = [self.cursel]
+ elif c == ord('c'):
+ self.clear_marked()
+ elif c == ord('o'):
+ if not self.marked:
+ added = self.update_marked(self.cursel, clear=True)
+ else:
+ self.last_mark = -1
+ torrent_actions_popup(
+ self.torrentlist,
+ self._selected_torrent_ids(),
+ action=ACTION.TORRENT_OPTIONS,
+ )
+ elif c in [ord('>'), ord('<')]:
+ try:
+ i = self.cols_to_show.index(self.config['torrentview']['sort_primary'])
+ except ValueError:
+ i = 0 if chr(c) == '<' else len(self.cols_to_show)
+ else:
+ i += 1 if chr(c) == '>' else -1
+
+ i = max(0, min(len(self.cols_to_show) - 1, i))
+ self.config['torrentview']['sort_primary'] = self.cols_to_show[i]
+ self.config.save()
+ self.on_config_changed()
+ self.update_columns()
+ self.torrentlist.refresh([])
+ else:
+ return util.ReadState.IGNORED
+
+ self.set_input_result(affected_lines)
+ return util.ReadState.CHANGED if affected_lines else util.ReadState.READ
diff --git a/deluge/ui/console/modes/torrentlist/torrentviewcolumns.py b/deluge/ui/console/modes/torrentlist/torrentviewcolumns.py
new file mode 100644
index 0000000..586a569
--- /dev/null
+++ b/deluge/ui/console/modes/torrentlist/torrentviewcolumns.py
@@ -0,0 +1,159 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.decorators import overrides
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.utils.column import torrent_data_fields
+from deluge.ui.console.widgets.fields import CheckedPlusInput, IntSpinInput
+from deluge.ui.console.widgets.popup import InputPopup, MessagePopup
+
+COLUMN_VIEW_HELP_STR = """
+Control column visibilty with the following actions:
+
+{!info!}'+'{!normal!} - {|indent_pos:|}Increase column width
+{!info!}'-'{!normal!} - {|indent_pos:|}Decrease column width
+
+{!info!}'CTRL+up'{!normal!} - {|indent_pos:|} Move column left
+{!info!}'CTRL+down'{!normal!} - {|indent_pos:|} Move column right
+"""
+
+column_pref_names = [
+ 'queue',
+ 'name',
+ 'size',
+ 'downloaded',
+ 'uploaded',
+ 'remaining',
+ 'state',
+ 'progress',
+ 'seeds',
+ 'peers',
+ 'seeds_peers_ratio',
+ 'download_speed',
+ 'upload_speed',
+ 'max_download_speed',
+ 'max_upload_speed',
+ 'eta',
+ 'ratio',
+ 'avail',
+ 'time_added',
+ 'completed_time',
+ 'last_seen_complete',
+ 'tracker',
+ 'download_location',
+ 'active_time',
+ 'seeding_time',
+ 'finished_time',
+ 'time_since_transfer',
+ 'shared',
+ 'owner',
+]
+
+
+class ColumnAndWidth(CheckedPlusInput):
+ def __init__(self, parent, name, message, child, on_width_func, **kwargs):
+ CheckedPlusInput.__init__(self, parent, name, message, child, **kwargs)
+ self.on_width_func = on_width_func
+
+ @overrides(CheckedPlusInput)
+ def handle_read(self, c):
+ if c in [ord('+'), ord('-')]:
+ val = self.child.get_value()
+ change = 1 if chr(c) == '+' else -1
+ self.child.set_value(val + change, validate=True)
+ self.on_width_func(self.name, self.child.get_value())
+ return util.ReadState.CHANGED
+ return CheckedPlusInput.handle_read(self, c)
+
+
+class TorrentViewColumns(InputPopup):
+ def __init__(self, torrentlist):
+ self.torrentlist = torrentlist
+ self.torrentview = torrentlist.torrentview
+
+ title = 'Visible columns (Esc to exit)'
+ InputPopup.__init__(
+ self,
+ torrentlist,
+ title,
+ close_cb=self._do_set_column_visibility,
+ immediate_action=True,
+ height_req=len(column_pref_names) - 5,
+ width_req=max(len(col) for col in column_pref_names + [title]) + 14,
+ border_off_west=1,
+ allow_rearrange=True,
+ )
+
+ msg_fmt = '%-25s'
+ self.add_header((msg_fmt % _('Columns')) + ' ' + _('Width'), space_below=True)
+
+ for colpref_name in column_pref_names:
+ col = self.torrentview.config['torrentview']['columns'][colpref_name]
+ width_spin = IntSpinInput(
+ self,
+ colpref_name + '_ width',
+ '',
+ self.move,
+ col['width'],
+ min_val=-1,
+ max_val=99,
+ fmt='%2d',
+ )
+
+ def on_width_func(name, width):
+ self.torrentview.config['torrentview']['columns'][name]['width'] = width
+
+ self._add_input(
+ ColumnAndWidth(
+ self,
+ colpref_name,
+ torrent_data_fields[colpref_name]['name'],
+ width_spin,
+ on_width_func,
+ checked=col['visible'],
+ checked_char='*',
+ msg_fmt=msg_fmt,
+ show_usage_hints=False,
+ child_always_visible=True,
+ )
+ )
+
+ def _do_set_column_visibility(
+ self, data=None, state_changed=True, close=True, **kwargs
+ ):
+ if close:
+ self.torrentlist.pop_popup()
+ return
+ elif not state_changed:
+ return
+
+ for key, value in data.items():
+ self.torrentview.config['torrentview']['columns'][key]['visible'] = value[
+ 'value'
+ ]
+ self.torrentview.config['torrentview']['columns'][key]['order'] = value[
+ 'order'
+ ]
+
+ self.torrentview.config.save()
+ self.torrentview.on_config_changed()
+ self.torrentlist.refresh([])
+
+ @overrides(InputPopup)
+ def handle_read(self, c):
+ if c == ord('h'):
+ popup = MessagePopup(
+ self.torrentlist,
+ 'Help',
+ COLUMN_VIEW_HELP_STR,
+ width_req=70,
+ border_off_west=1,
+ )
+ self.torrentlist.push_popup(popup)
+ return util.ReadState.READ
+ return InputPopup.handle_read(self, c)
diff --git a/deluge/ui/console/parser.py b/deluge/ui/console/parser.py
new file mode 100644
index 0000000..c0686b1
--- /dev/null
+++ b/deluge/ui/console/parser.py
@@ -0,0 +1,140 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import argparse
+import shlex
+
+import deluge.component as component
+from deluge.ui.console.utils.colors import ConsoleColorFormatter
+
+
+class OptionParserError(Exception):
+ pass
+
+
+class ConsoleBaseParser(argparse.ArgumentParser):
+ def format_help(self):
+ """Differs from ArgumentParser.format_help by adding the raw epilog
+ as formatted in the string. Default behavior mangles the formatting.
+
+ """
+ # Handle epilog manually to keep the text formatting
+ epilog = self.epilog
+ self.epilog = ''
+ help_str = super().format_help()
+ if epilog is not None:
+ help_str += epilog
+ self.epilog = epilog
+ return help_str
+
+
+class ConsoleCommandParser(ConsoleBaseParser):
+ def _split_args(self, args):
+ command_options = []
+ for a in args:
+ if not a:
+ continue
+ if ';' in a:
+ cmd_lines = [arg.strip() for arg in a.split(';')]
+ elif ' ' in a:
+ cmd_lines = [a]
+ else:
+ continue
+
+ for cmd_line in cmd_lines:
+ cmds = shlex.split(cmd_line)
+ cmd_options = super().parse_args(args=cmds)
+ cmd_options.command = cmds[0]
+ command_options.append(cmd_options)
+
+ return command_options
+
+ def parse_args(self, args=None):
+ """Parse known UI args and handle common and process group options.
+
+ Notes:
+ If started by deluge entry script this has already been done.
+
+ Args:
+ args (list, optional): The arguments to parse.
+
+ Returns:
+ argparse.Namespace: The parsed arguments.
+ """
+ from deluge.ui.ui_entry import AMBIGUOUS_CMD_ARGS
+
+ self.base_parser.parse_known_ui_args(args, withhold=AMBIGUOUS_CMD_ARGS)
+
+ multi_command = self._split_args(args)
+ # If multiple commands were passed to console
+ if multi_command:
+ # With multiple commands, normal parsing will fail, so only parse
+ # known arguments using the base parser, and then set
+ # options.parsed_cmds to the already parsed commands
+ options, remaining = self.base_parser.parse_known_args(args=args)
+ options.parsed_cmds = multi_command
+ else:
+ subcommand = False
+ if hasattr(self.base_parser, 'subcommand'):
+ subcommand = getattr(self.base_parser, 'subcommand')
+ if not subcommand:
+ # We must use parse_known_args to handle case when no subcommand
+ # is provided, because argparse does not support parsing without
+ # a subcommand
+ options, remaining = self.base_parser.parse_known_args(args=args)
+ # If any options remain it means they do not exist. Reparse with
+ # parse_args to trigger help message
+ if remaining:
+ options = self.base_parser.parse_args(args=args)
+ options.parsed_cmds = []
+ else:
+ options = super().parse_args(args=args)
+ options.parsed_cmds = [options]
+
+ if not hasattr(options, 'remaining'):
+ options.remaining = []
+
+ return options
+
+
+class OptionParser(ConsoleBaseParser):
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+ self.formatter = ConsoleColorFormatter()
+
+ def exit(self, status=0, msg=None):
+ self._exit = True
+ if msg:
+ print(msg)
+
+ def error(self, msg):
+ """error(msg : string)
+
+ Print a usage message incorporating 'msg' to stderr and exit.
+ If you override this in a subclass, it should not return -- it
+ should either exit or raise an exception.
+ """
+ raise OptionParserError(msg)
+
+ def print_usage(self, _file=None):
+ console = component.get('ConsoleUI')
+ if self.usage:
+ for line in self.format_usage().splitlines():
+ console.write(line)
+
+ def print_help(self, _file=None):
+ console = component.get('ConsoleUI')
+ console.set_batch_write(True)
+ for line in self.format_help().splitlines():
+ console.write(line)
+ console.set_batch_write(False)
+
+ def format_help(self):
+ """Return help formatted with colors."""
+ help_str = super().format_help()
+ return self.formatter.format_colors(help_str)
diff --git a/deluge/ui/console/utils/__init__.py b/deluge/ui/console/utils/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/deluge/ui/console/utils/__init__.py
diff --git a/deluge/ui/console/utils/colors.py b/deluge/ui/console/utils/colors.py
new file mode 100644
index 0000000..cc414fe
--- /dev/null
+++ b/deluge/ui/console/utils/colors.py
@@ -0,0 +1,323 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import re
+
+from deluge.ui.console.utils import format_utils
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+colors = [
+ 'COLOR_BLACK',
+ 'COLOR_BLUE',
+ 'COLOR_CYAN',
+ 'COLOR_GREEN',
+ 'COLOR_MAGENTA',
+ 'COLOR_RED',
+ 'COLOR_WHITE',
+ 'COLOR_YELLOW',
+]
+
+# {(fg, bg): pair_number, ...}
+color_pairs = {('white', 'black'): 0} # Special case, can't be changed
+
+# Some default color schemes
+schemes = {
+ 'input': ('white', 'black'),
+ 'normal': ('white', 'black'),
+ 'status': ('yellow', 'blue', 'bold'),
+ 'info': ('white', 'black', 'bold'),
+ 'error': ('red', 'black', 'bold'),
+ 'success': ('green', 'black', 'bold'),
+ 'event': ('magenta', 'black', 'bold'),
+ 'selected': ('black', 'white', 'bold'),
+ 'marked': ('white', 'blue', 'bold'),
+ 'selectedmarked': ('blue', 'white', 'bold'),
+ 'header': ('green', 'black', 'bold'),
+ 'filterstatus': ('green', 'blue', 'bold'),
+}
+
+# Colors for various torrent states
+state_color = {
+ 'Seeding': '{!blue,black,bold!}',
+ 'Downloading': '{!green,black,bold!}',
+ 'Paused': '{!white,black!}',
+ 'Checking': '{!green,black!}',
+ 'Queued': '{!yellow,black!}',
+ 'Error': '{!red,black,bold!}',
+ 'Moving': '{!green,black,bold!}',
+}
+
+type_color = {
+ bool: '{!yellow,black,bold!}',
+ int: '{!green,black,bold!}',
+ float: '{!green,black,bold!}',
+ str: '{!cyan,black,bold!}',
+ list: '{!magenta,black,bold!}',
+ dict: '{!white,black,bold!}',
+}
+
+tab_char = '\t'
+color_tag_start = '{!'
+color_tag_end = '!}'
+
+
+def get_color_pair(fg, bg):
+ return color_pairs[(fg, bg)]
+
+
+def init_colors():
+ curses.start_color()
+
+ # We want to redefine white/black as it makes underlining work for some terminals
+ # but can also fail on others, so we try/except
+
+ def define_pair(counter, fg_name, bg_name, fg, bg):
+ try:
+ curses.init_pair(counter, fg, bg)
+ color_pairs[(fg_name, bg_name)] = counter
+ counter += 1
+ except (curses.error, ValueError) as ex:
+ log.debug(f'Color pair {fg_name} {bg_name} not available: {ex}')
+ return counter
+
+ # Create the color_pairs dict
+ counter = 1
+ for fg in colors:
+ for bg in colors:
+ counter = define_pair(
+ counter,
+ fg[6:].lower(),
+ bg[6:].lower(),
+ getattr(curses, fg),
+ getattr(curses, bg),
+ )
+
+ counter = define_pair(counter, 'white', 'grey', curses.COLOR_WHITE, 241)
+ counter = define_pair(counter, 'black', 'whitegrey', curses.COLOR_BLACK, 249)
+ counter = define_pair(counter, 'magentadark', 'white', 99, curses.COLOR_WHITE)
+
+
+class BadColorString(Exception):
+ pass
+
+
+def check_tag_count(string):
+ """Raise BadColorString if color tag open/close not equal."""
+ if string.count(color_tag_start) != string.count(color_tag_end):
+ raise BadColorString('Number of {! is not equal to number of !}')
+
+
+def replace_tabs(line):
+ """
+ Returns a string with tabs replaced with spaces.
+
+ """
+ for i in range(line.count(tab_char)):
+ tab_length = 8 - (len(line[: line.find(tab_char)]) % 8)
+ line = line.replace(tab_char, b' ' * tab_length, 1)
+ return line
+
+
+def strip_colors(line):
+ """
+ Returns a string with the color formatting removed.
+
+ """
+ check_tag_count(line)
+
+ # Remove all the color tags
+ while line.find(color_tag_start) != -1:
+ tag_start = line.find(color_tag_start)
+ tag_end = line.find(color_tag_end) + 2
+ line = line[:tag_start] + line[tag_end:]
+
+ return line
+
+
+def get_line_length(line):
+ """
+ Returns the string length without the color formatting.
+
+ """
+ # Remove all the color tags
+ line = strip_colors(line)
+
+ # Replace tabs with the appropriate amount of spaces
+ line = replace_tabs(line)
+ return len(line)
+
+
+def get_line_width(line):
+ """
+ Get width of string considering double width characters
+
+ """
+ # Remove all the color tags
+ line = strip_colors(line)
+
+ # Replace tabs with the appropriate amount of spaces
+ line = replace_tabs(line)
+ return format_utils.strwidth(line)
+
+
+def parse_color_string(string):
+ """Parses a string and returns a list of 2-tuples (color, string).
+
+ Args:
+ string (str): The string to parse.
+ """
+ check_tag_count(string)
+
+ ret = []
+ last_color_attr = None
+ # Keep track of where the strings
+ while string.find(color_tag_start) != -1:
+ begin = string.find(color_tag_start)
+ if begin > 0:
+ ret.append(
+ (
+ curses.color_pair(
+ color_pairs[(schemes['input'][0], schemes['input'][1])]
+ ),
+ string[:begin],
+ )
+ )
+
+ end = string.find(color_tag_end)
+ if end == -1:
+ raise BadColorString('Missing closing "!}"')
+
+ # Get a list of attributes in the bracketed section
+ attrs = string[begin + 2 : end].split(',')
+
+ if len(attrs) == 1 and not attrs[0].strip(' '):
+ raise BadColorString('No description in {! !}')
+
+ def apply_attrs(cp, attrs):
+ # This function applies any additional attributes as necessary
+ for attr in attrs:
+ if attr == 'ignore':
+ continue
+ mode = '+'
+ if attr[0] in ['+', '-']:
+ mode = attr[0]
+ attr = attr[1:]
+ if mode == '+':
+ cp |= getattr(curses, 'A_' + attr.upper())
+ else:
+ cp ^= getattr(curses, 'A_' + attr.upper())
+ return cp
+
+ # Check for a builtin type first
+ if attrs[0] in schemes:
+ pair = (schemes[attrs[0]][0], schemes[attrs[0]][1])
+ if pair not in color_pairs:
+ log.debug('Color pair does not exist: %s, attrs: %s', pair, attrs)
+ pair = ('white', 'black')
+ # Get the color pair number
+ color_pair = curses.color_pair(color_pairs[pair])
+ color_pair = apply_attrs(color_pair, schemes[attrs[0]][2:])
+ last_color_attr = color_pair
+ else:
+ attrlist = ['blink', 'bold', 'dim', 'reverse', 'standout', 'underline']
+
+ if attrs[0][0] in ['+', '-']:
+ # Color is not given, so use last color
+ if last_color_attr is None:
+ raise BadColorString(
+ 'No color value given when no previous color was used!: %s'
+ % (attrs[0])
+ )
+ color_pair = last_color_attr
+ for i, attr in enumerate(attrs):
+ if attr[1:] not in attrlist:
+ raise BadColorString('Bad attribute value!: %s' % (attr))
+ else:
+ # This is a custom color scheme
+ fg = attrs[0]
+ bg = 'black' # Default to 'black' if no bg is chosen
+ if len(attrs) > 1:
+ bg = attrs[1]
+ try:
+ pair = (fg, bg)
+ if pair not in color_pairs:
+ # Color pair missing, this could be because the
+ # terminal settings allows no colors. If background is white, we
+ # assume this means selection, and use "white", "black" + reverse
+ # To have white background and black foreground
+ log.debug('Color pair does not exist: %s', pair)
+ if pair[1] == 'white':
+ if attrs[2] == 'ignore':
+ attrs[2] = 'reverse'
+ else:
+ attrs.append('reverse')
+ pair = ('white', 'black')
+ color_pair = curses.color_pair(color_pairs[pair])
+ last_color_attr = color_pair
+ attrs = attrs[2:] # Remove colors
+ except KeyError:
+ raise BadColorString(f'Bad color value in tag: {fg},{bg}')
+ # Check for additional attributes and OR them to the color_pair
+ color_pair = apply_attrs(color_pair, attrs)
+ last_color_attr = color_pair
+ # We need to find the text now, so lets try to find another {! and if
+ # there isn't one, then it's the rest of the string
+ next_begin = string.find(color_tag_start, end)
+
+ if next_begin == -1:
+ ret.append((color_pair, replace_tabs(string[end + 2 :])))
+ break
+ else:
+ ret.append((color_pair, replace_tabs(string[end + 2 : next_begin])))
+ string = string[next_begin:]
+
+ if not ret:
+ # There was no color scheme so we add it with a 0 for white on black
+ ret = [(0, string)]
+ return ret
+
+
+class ConsoleColorFormatter:
+ """
+ Format help in a way suited to deluge CmdLine mode - colors, format, indentation...
+ """
+
+ replace_dict = {
+ '<torrent-id>': '{!green!}%s{!input!}',
+ '<torrent>': '{!green!}%s{!input!}',
+ '<command>': '{!green!}%s{!input!}',
+ '<state>': '{!yellow!}%s{!input!}',
+ '\\.\\.\\.': '{!yellow!}%s{!input!}',
+ '\\s\\*\\s': '{!blue!}%s{!input!}',
+ '(?<![\\-a-z])(-[a-zA-Z0-9])': '{!red!}%s{!input!}',
+ # "(\-[a-zA-Z0-9])": "{!red!}%s{!input!}",
+ '--[_\\-a-zA-Z0-9]+': '{!green!}%s{!input!}',
+ '(\\[|\\])': '{!info!}%s{!input!}',
+ '<tab>': '{!white!}%s{!input!}',
+ '[_A-Z]{3,}': '{!cyan!}%s{!input!}',
+ '<key>': '{!cyan!}%s{!input!}',
+ '<value>': '{!cyan!}%s{!input!}',
+ 'usage:': '{!info!}%s{!input!}',
+ '<download-folder>': '{!yellow!}%s{!input!}',
+ '<torrent-file>': '{!green!}%s{!input!}',
+ }
+
+ def format_colors(self, string):
+ def r(repl):
+ return lambda s: repl % s.group()
+
+ for key, replacement in self.replace_dict.items():
+ string = re.sub(key, r(replacement), string)
+ return string
diff --git a/deluge/ui/console/utils/column.py b/deluge/ui/console/utils/column.py
new file mode 100644
index 0000000..ecbe04b
--- /dev/null
+++ b/deluge/ui/console/utils/column.py
@@ -0,0 +1,74 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import copy
+import logging
+
+import deluge.common
+from deluge.i18n import setup_translation
+from deluge.ui.common import TORRENT_DATA_FIELD
+from deluge.ui.console.utils import format_utils
+
+setup_translation()
+
+log = logging.getLogger(__name__)
+
+torrent_data_fields = copy.deepcopy(TORRENT_DATA_FIELD)
+
+formatters = {
+ 'queue': format_utils.format_queue,
+ 'name': lambda a, b: b,
+ 'state': None,
+ 'tracker': None,
+ 'download_location': None,
+ 'owner': None,
+ 'progress_state': format_utils.format_progress,
+ 'progress': format_utils.format_progress,
+ 'size': format_utils.format_size,
+ 'downloaded': format_utils.format_size,
+ 'uploaded': format_utils.format_size,
+ 'remaining': format_utils.format_size,
+ 'ratio': format_utils.format_float,
+ 'avail': format_utils.format_float,
+ 'seeds_peers_ratio': format_utils.format_float,
+ 'download_speed': format_utils.format_speed,
+ 'upload_speed': format_utils.format_speed,
+ 'max_download_speed': format_utils.format_speed,
+ 'max_upload_speed': format_utils.format_speed,
+ 'peers': format_utils.format_seeds_peers,
+ 'seeds': format_utils.format_seeds_peers,
+ 'time_added': deluge.common.fdate,
+ 'seeding_time': format_utils.format_time,
+ 'active_time': format_utils.format_time,
+ 'time_since_transfer': format_utils.format_date_dash,
+ 'finished_time': deluge.common.ftime,
+ 'last_seen_complete': format_utils.format_date_never,
+ 'completed_time': format_utils.format_date_dash,
+ 'eta': format_utils.format_time,
+ 'pieces': format_utils.format_pieces,
+}
+
+for data_field in torrent_data_fields:
+ torrent_data_fields[data_field]['formatter'] = formatters.get(data_field, str)
+
+
+def get_column_value(name, state):
+ col = torrent_data_fields[name]
+
+ if col['formatter']:
+ args = [state[key] for key in col['status']]
+ return col['formatter'](*args)
+ else:
+ return state[col['status'][0]]
+
+
+def get_required_fields(cols):
+ fields = []
+ for col in cols:
+ fields.extend(torrent_data_fields[col]['status'])
+ return fields
diff --git a/deluge/ui/console/utils/common.py b/deluge/ui/console/utils/common.py
new file mode 100644
index 0000000..fdc88c4
--- /dev/null
+++ b/deluge/ui/console/utils/common.py
@@ -0,0 +1,20 @@
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+TORRENT_OPTIONS = {
+ 'max_download_speed': float,
+ 'max_upload_speed': float,
+ 'max_connections': int,
+ 'max_upload_slots': int,
+ 'prioritize_first_last': bool,
+ 'is_auto_managed': bool,
+ 'stop_at_ratio': bool,
+ 'stop_ratio': float,
+ 'remove_at_ratio': bool,
+ 'move_completed': bool,
+ 'move_completed_path': str,
+ 'super_seeding': bool,
+}
diff --git a/deluge/ui/console/utils/config.py b/deluge/ui/console/utils/config.py
new file mode 100644
index 0000000..debb52a
--- /dev/null
+++ b/deluge/ui/console/utils/config.py
@@ -0,0 +1,118 @@
+def migrate_1_to_2(config):
+ """Create better structure by moving most settings out of dict root
+ and into sub categories. Some keys are also renamed to be consistent
+ with other UIs.
+ """
+
+ def move_key(source, dest, source_key, dest_key=None):
+ if dest_key is None:
+ dest_key = source_key
+
+ dest[dest_key] = source[source_key]
+ del source[source_key]
+
+ # These are moved to 'torrentview' sub dict
+ for k in [
+ 'sort_primary',
+ 'sort_secondary',
+ 'move_selection',
+ 'separate_complete',
+ ]:
+ move_key(config, config['torrentview'], k)
+
+ # These are moved to 'addtorrents' sub dict
+ for k in [
+ 'show_misc_files',
+ 'show_hidden_folders',
+ 'sort_column',
+ 'reverse_sort',
+ 'last_path',
+ ]:
+ move_key(config, config['addtorrents'], 'addtorrents_%s' % k, dest_key=k)
+
+ # These are moved to 'cmdline' sub dict
+ for k in [
+ 'ignore_duplicate_lines',
+ 'torrents_per_tab_press',
+ 'third_tab_lists_all',
+ ]:
+ move_key(config, config['cmdline'], k)
+
+ move_key(
+ config,
+ config['cmdline'],
+ 'save_legacy_history',
+ dest_key='save_command_history',
+ )
+
+ # Add key for localization
+ config['language'] = ''
+
+ # Migrate column settings
+ columns = [
+ 'queue',
+ 'size',
+ 'state',
+ 'progress',
+ 'seeds',
+ 'peers',
+ 'downspeed',
+ 'upspeed',
+ 'eta',
+ 'ratio',
+ 'avail',
+ 'added',
+ 'tracker',
+ 'savepath',
+ 'downloaded',
+ 'uploaded',
+ 'remaining',
+ 'owner',
+ 'downloading_time',
+ 'seeding_time',
+ 'completed',
+ 'seeds_peers_ratio',
+ 'complete_seen',
+ 'down_limit',
+ 'up_limit',
+ 'shared',
+ 'name',
+ ]
+ column_name_mapping = {
+ 'downspeed': 'download_speed',
+ 'upspeed': 'upload_speed',
+ 'added': 'time_added',
+ 'savepath': 'download_location',
+ 'completed': 'completed_time',
+ 'complete_seen': 'last_seen_complete',
+ 'down_limit': 'max_download_speed',
+ 'up_limit': 'max_upload_speed',
+ 'downloading_time': 'active_time',
+ }
+
+ from deluge.ui.console.modes.torrentlist.torrentview import default_columns
+
+ # These are moved to 'torrentview.columns' sub dict
+ for k in columns:
+ column_name = column_name_mapping.get(k, k)
+ config['torrentview']['columns'][column_name] = {}
+ if k == 'name':
+ config['torrentview']['columns'][column_name]['visible'] = True
+ else:
+ move_key(
+ config,
+ config['torrentview']['columns'][column_name],
+ 'show_%s' % k,
+ dest_key='visible',
+ )
+ move_key(
+ config,
+ config['torrentview']['columns'][column_name],
+ '%s_width' % k,
+ dest_key='width',
+ )
+ config['torrentview']['columns'][column_name]['order'] = default_columns[
+ column_name
+ ]['order']
+
+ return config
diff --git a/deluge/ui/console/utils/curses_util.py b/deluge/ui/console/utils/curses_util.py
new file mode 100644
index 0000000..50b0444
--- /dev/null
+++ b/deluge/ui/console/utils/curses_util.py
@@ -0,0 +1,62 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+try:
+ import curses
+except ImportError:
+ pass
+
+KEY_BELL = 7 # CTRL-/ ^G (curses.keyname(KEY_BELL) == "^G")
+KEY_TAB = 9
+KEY_ENTER2 = 10
+KEY_ESC = 27
+KEY_SPACE = 32
+KEY_BACKSPACE2 = 127
+
+KEY_ALT_AND_ARROW_UP = 564
+KEY_ALT_AND_ARROW_DOWN = 523
+
+KEY_ALT_AND_KEY_PPAGE = 553
+KEY_ALT_AND_KEY_NPAGE = 548
+
+KEY_CTRL_AND_ARROW_UP = 566
+KEY_CTRL_AND_ARROW_DOWN = 525
+
+
+def is_printable_chr(c):
+ return c >= 32 and c <= 126
+
+
+def is_int_chr(c):
+ return c > 47 and c < 58
+
+
+class Curser:
+ INVISIBLE = 0
+ NORMAL = 1
+ VERY_VISIBLE = 2
+
+
+def safe_curs_set(visibility):
+ """
+ Args:
+ visibility(int): 0, 1, or 2, for invisible, normal, or very visible
+
+ curses.curs_set fails on monochrome terminals so use this
+ to ignore errors
+ """
+ try:
+ curses.curs_set(visibility)
+ except curses.error:
+ pass
+
+
+class ReadState:
+ IGNORED = 0
+ READ = 1
+ CHANGED = 2
diff --git a/deluge/ui/console/utils/format_utils.py b/deluge/ui/console/utils/format_utils.py
new file mode 100644
index 0000000..50ec191
--- /dev/null
+++ b/deluge/ui/console/utils/format_utils.py
@@ -0,0 +1,350 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import re
+from collections import deque
+from unicodedata import east_asian_width, normalize
+
+import deluge.common
+from deluge.ui.common import FILE_PRIORITY
+
+
+def format_size(size):
+ return deluge.common.fsize(size, shortform=True)
+
+
+def format_speed(speed):
+ if speed > 0:
+ return deluge.common.fspeed(speed, shortform=True)
+ else:
+ return '-'
+
+
+def format_time(time):
+ if time > 0:
+ return deluge.common.ftime(time)
+ elif time == 0:
+ return '-'
+ else:
+ return '∞'
+
+
+def format_date_dash(time):
+ if time > 0:
+ return deluge.common.fdate(time, date_only=True)
+ else:
+ return '-'
+
+
+def format_date_never(time):
+ if time > 0:
+ return deluge.common.fdate(time, date_only=True)
+ else:
+ return 'Never'
+
+
+def format_float(x):
+ if x < 0:
+ return '-'
+ else:
+ return '%.3f' % x
+
+
+def format_seeds_peers(num, total):
+ return '%d (%d)' % (num, total)
+
+
+def format_progress(value):
+ return ('%.2f' % value).rstrip('0').rstrip('.') + '%'
+
+
+def f_progressbar(progress, width):
+ """
+ Returns a string of a progress bar.
+
+ :param progress: float, a value between 0-100
+
+ :returns: str, a progress bar based on width
+
+ """
+
+ w = width - 2 # we use a [] for the beginning and end
+ s = '['
+ p = int(round((progress / 100) * w))
+ s += '#' * p
+ s += '-' * (w - p)
+ s += ']'
+ return s
+
+
+def f_seedrank_dash(seed_rank, seeding_time):
+ """Display value if seeding otherwise dash"""
+
+ if seeding_time > 0:
+ if seed_rank >= 1000:
+ return '%ik' % (seed_rank // 1000)
+ else:
+ return str(seed_rank)
+ else:
+ return '-'
+
+
+def ftotal_sized(first, second):
+ return '{} ({})'.format(
+ deluge.common.fsize(first, shortform=True),
+ deluge.common.fsize(second, shortform=True),
+ )
+
+
+def format_pieces(num, size):
+ return '%d (%s)' % (num, deluge.common.fsize(size, shortform=True))
+
+
+def format_priority(prio):
+ if prio == -2:
+ return '[Mixed]'
+ elif prio < 0:
+ return '-'
+ return FILE_PRIORITY[prio]
+
+
+def format_queue(qnum):
+ if qnum < 0:
+ return ''
+ return '%d' % (qnum + 1)
+
+
+def trim_string(string, w, have_dbls):
+ if w <= 0:
+ return ''
+ elif w == 1:
+ return ' '
+ elif have_dbls:
+ # have to do this the slow way
+ chrs = []
+ width = 4
+ idx = 0
+ while width < w:
+ chrs.append(string[idx])
+ if east_asian_width(string[idx]) in 'WF':
+ width += 2
+ else:
+ width += 1
+ idx += 1
+ if width != w:
+ chrs.pop()
+ chrs.append('.')
+ return '%s ' % (''.join(chrs))
+ else:
+ return '%s ' % (string[0 : w - 1])
+
+
+def format_column(col, lim):
+ try:
+ # might have some double width chars
+ col = normalize('NFC', col)
+ dbls = sum(east_asian_width(c) in 'WF' for c in col)
+ except TypeError:
+ dbls = 0
+
+ size = len(col) + dbls
+ if size >= lim - 1:
+ return trim_string(col, lim, dbls > 0)
+ else:
+ return '{}{}'.format(col, ' ' * (lim - size))
+
+
+def format_row(row, column_widths):
+ return ''.join(
+ [format_column(row[i], column_widths[i]) for i in range(0, len(row))]
+ )
+
+
+_strip_re = re.compile(r'\{!.*?!\}')
+_format_code = re.compile(r'\{\|(.*)\|\}')
+
+
+def remove_formatting(string):
+ return re.sub(_strip_re, '', string)
+
+
+def shorten_hash(tid, space_left, min_width=13, placeholder='...'):
+ """Shorten the supplied torrent infohash by removing chars from the middle.
+
+ Use a placeholder to indicate shortened.
+ If unable to shorten will justify so entire tid is on the next line.
+
+ """
+ tid = tid.strip()
+ if space_left >= min_width:
+ mid = len(tid) // 2
+ trim, remain = divmod(len(tid) + len(placeholder) - space_left, 2)
+ return tid[0 : mid - trim] + placeholder + tid[mid + trim + remain :]
+ else:
+ # Justity the tid so it is completely on the next line.
+ return tid.rjust(len(tid) + space_left)
+
+
+def wrap_string(string, width, min_lines=0, strip_colors=True):
+ """
+ Wrap a string to fit in a particular width. Returns a list of output lines.
+
+ :param string: str, the string to wrap
+ :param width: int, the maximum width of a line of text
+ :param min_lines: int, extra lines will be added so the output tuple contains at least min_lines lines
+ :param strip_colors: boolean, if True, text in {!!} blocks will not be considered as adding to the
+ width of the line. They will still be present in the output.
+ """
+ ret = []
+ s1 = string.split('\n')
+ indent = ''
+
+ def insert_clr(s, offset, mtchs, clrs):
+ end_pos = offset + len(s)
+ while mtchs and (mtchs[0] <= end_pos) and (mtchs[0] >= offset):
+ mtc = mtchs.popleft() - offset
+ clr = clrs.popleft()
+ end_pos += len(clr)
+ s = f'{s[:mtc]}{clr}{s[mtc:]}'
+ return s
+
+ for s in s1:
+ offset = 0
+ indent = ''
+ m = _format_code.search(remove_formatting(s))
+ if m:
+ if m.group(1).startswith('indent:'):
+ indent = m.group(1)[len('indent:') :]
+ elif m.group(1).startswith('indent_pos:'):
+ begin = m.start(0)
+ indent = ' ' * begin
+ s = _format_code.sub('', s)
+
+ if strip_colors:
+ mtchs = deque()
+ clrs = deque()
+ for m in _strip_re.finditer(s):
+ mtchs.append(m.start())
+ clrs.append(m.group())
+ cstr = _strip_re.sub('', s)
+ else:
+ cstr = s
+
+ def append_indent(line, string, offset):
+ """Prepends indent to string if specified"""
+ if indent and offset != 0:
+ string = indent + string
+ line.append(string)
+
+ while cstr:
+ # max with for a line. If indent is specified, we account for this
+ max_width = width - (len(indent) if offset != 0 else 0)
+ if len(cstr) < max_width:
+ break
+ sidx = cstr.rfind(' ', 0, max_width - 1)
+ sidx += 1
+ if sidx > 0:
+ if strip_colors:
+ to_app = cstr[0:sidx]
+ to_app = insert_clr(to_app, offset, mtchs, clrs)
+ append_indent(ret, to_app, offset)
+ offset += len(to_app)
+ else:
+ append_indent(ret, cstr[0:sidx], offset)
+ cstr = cstr[sidx:]
+ if not cstr:
+ cstr = None
+ break
+ else:
+ # can't find a reasonable split, just split at width
+ if strip_colors:
+ to_app = cstr[0:width]
+ to_app = insert_clr(to_app, offset, mtchs, clrs)
+ append_indent(ret, to_app, offset)
+ offset += len(to_app)
+ else:
+ append_indent(ret, cstr[0:width], offset)
+ cstr = cstr[width:]
+ if not cstr:
+ cstr = None
+ break
+ if cstr is not None:
+ to_append = cstr
+ if strip_colors:
+ to_append = insert_clr(cstr, offset, mtchs, clrs)
+ append_indent(ret, to_append, offset)
+
+ if min_lines > 0:
+ for i in range(len(ret), min_lines):
+ ret.append(' ')
+
+ # Carry colors over to the next line
+ last_color_string = ''
+ for i, line in enumerate(ret):
+ if i != 0:
+ ret[i] = f'{last_color_string}{ret[i]}'
+
+ colors = re.findall('\\{![^!]+!\\}', line)
+ if colors:
+ last_color_string = colors[-1]
+
+ return ret
+
+
+def strwidth(string):
+ """
+ Measure width of a string considering asian double width characters
+ """
+ return sum(1 + (east_asian_width(char) in ['W', 'F']) for char in string)
+
+
+def pad_string(string, length, character=' ', side='right'):
+ """
+ Pad string with specified character to desired length, considering double width characters.
+ """
+ w = strwidth(string)
+ diff = length - w
+ if side == 'left':
+ return f'{character * diff}{string}'
+ elif side == 'right':
+ return f'{string}{character * diff}'
+
+
+def delete_alt_backspace(input_text, input_cursor, sep_chars=' *?!._~-#$^;\'"/'):
+ """
+ Remove text from input_text on ALT+backspace
+ Stop removing when countering any of the sep chars
+ """
+ deleted = 0
+ seg_start = input_text[:input_cursor]
+ seg_end = input_text[input_cursor:]
+ none_space_deleted = False # Track if any none-space characters have been deleted
+
+ while seg_start and input_cursor > 0:
+ if (not seg_start) or (input_cursor == 0):
+ break
+ if deleted and seg_start[-1] in sep_chars:
+ if seg_start[-1] == ' ':
+ if seg_start[-2] == ' ' or none_space_deleted is False:
+ # Continue as long as:
+ # * next char is also a space
+ # * no none-space characters have been deleted
+ pass
+ else:
+ break
+ else:
+ break
+
+ if not none_space_deleted:
+ none_space_deleted = seg_start[-1] != ' '
+ seg_start = seg_start[:-1]
+ deleted += 1
+ input_cursor -= 1
+
+ input_text = seg_start + seg_end
+ return input_text, input_cursor
diff --git a/deluge/ui/console/widgets/__init__.py b/deluge/ui/console/widgets/__init__.py
new file mode 100644
index 0000000..bc88a3b
--- /dev/null
+++ b/deluge/ui/console/widgets/__init__.py
@@ -0,0 +1,5 @@
+from deluge.ui.console.widgets.inputpane import BaseInputPane
+from deluge.ui.console.widgets.statusbars import StatusBars
+from deluge.ui.console.widgets.window import BaseWindow
+
+__all__ = ['BaseInputPane', 'StatusBars', 'BaseWindow']
diff --git a/deluge/ui/console/widgets/fields.py b/deluge/ui/console/widgets/fields.py
new file mode 100644
index 0000000..d8d892d
--- /dev/null
+++ b/deluge/ui/console/widgets/fields.py
@@ -0,0 +1,1202 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+
+from deluge.decorators import overrides
+from deluge.ui.console.modes.basemode import InputKeyHandler
+from deluge.ui.console.utils import colors
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.utils.format_utils import (
+ delete_alt_backspace,
+ remove_formatting,
+ wrap_string,
+)
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+
+class BaseField(InputKeyHandler):
+ def __init__(self, parent=None, name=None, selectable=True, **kwargs):
+ super().__init__()
+ self.name = name
+ self.parent = parent
+ self.fmt_keys = {}
+ self.set_fmt_key('font', 'ignore', kwargs)
+ self.set_fmt_key('color', 'white,black', kwargs)
+ self.set_fmt_key('color_end', 'white,black', kwargs)
+ self.set_fmt_key('color_active', 'black,white', kwargs)
+ self.set_fmt_key('color_unfocused', 'color', kwargs)
+ self.set_fmt_key('color_unfocused_active', 'black,whitegrey', kwargs)
+ self.set_fmt_key('font_active', 'font', kwargs)
+ self.set_fmt_key('font_unfocused', 'font', kwargs)
+ self.set_fmt_key('font_unfocused_active', 'font_active', kwargs)
+ self.default_col = kwargs.get('col', -1)
+ self._selectable = selectable
+ self.value = None
+
+ def selectable(self):
+ return self.has_input() and not self.depend_skip() and self._selectable
+
+ def set_fmt_key(self, key, default, kwargsdict=None):
+ value = self.fmt_keys.get(default, default)
+ if kwargsdict:
+ value = kwargsdict.get(key, value)
+ self.fmt_keys[key] = value
+
+ def get_fmt_keys(self, focused, active, **kwargs):
+ color_key = kwargs.get('color_key', 'color')
+ font_key = 'font'
+ if not focused:
+ color_key += '_unfocused'
+ font_key += '_unfocused'
+ if active:
+ color_key += '_active'
+ font_key += '_active'
+ return color_key, font_key
+
+ def build_fmt_string(self, focused, active, value_key='msg', **kwargs):
+ color_key, font_key = self.get_fmt_keys(focused, active, **kwargs)
+ return '{{!%({})s,%({})s!}}%({})s{{!%({})s!}}'.format(
+ color_key,
+ font_key,
+ value_key,
+ 'color_end',
+ )
+
+ def depend_skip(self):
+ return False
+
+ def has_input(self):
+ return True
+
+ @overrides(InputKeyHandler)
+ def handle_read(self, c):
+ return util.ReadState.IGNORED
+
+ def render(self, screen, row, **kwargs):
+ return 0
+
+ @property
+ def height(self):
+ return 1
+
+ def set_value(self, value):
+ self.value = value
+
+ def get_value(self):
+ return self.value
+
+
+class NoInputField(BaseField):
+ @overrides(BaseField)
+ def has_input(self):
+ return False
+
+
+class InputField(BaseField):
+ def __init__(self, parent, name, message, format_default=None, **kwargs):
+ BaseField.__init__(self, parent=parent, name=name, **kwargs)
+ self.format_default = format_default
+ self.message = None
+ self.set_message(message)
+
+ depend = None
+
+ @overrides(BaseField)
+ def handle_read(self, c):
+ if c in [curses.KEY_ENTER, util.KEY_ENTER2, util.KEY_BACKSPACE2, 113]:
+ return util.ReadState.READ
+ return util.ReadState.IGNORED
+
+ def set_message(self, msg):
+ changed = self.message != msg
+ self.message = msg
+ return changed
+
+ def set_depend(self, i, inverse=False):
+ if not isinstance(i, CheckedInput):
+ raise Exception('Can only depend on CheckedInputs')
+ self.depend = i
+ self.inverse = inverse
+
+ def depend_skip(self):
+ if not self.depend:
+ return False
+ if self.inverse:
+ return self.depend.checked
+ else:
+ return not self.depend.checked
+
+
+class Header(NoInputField):
+ def __init__(self, parent, header, space_above, space_below, **kwargs):
+ if 'name' not in kwargs:
+ kwargs['name'] = header
+ NoInputField.__init__(self, parent=parent, **kwargs)
+ self.header = '{!white,black,bold!}%s' % header
+ self.space_above = space_above
+ self.space_below = space_below
+
+ @overrides(BaseField)
+ def render(self, screen, row, col=0, **kwargs):
+ rows = 1
+ if self.space_above:
+ row += 1
+ rows += 1
+ self.parent.add_string(row, self.header, scr=screen, col=col, pad=False)
+ if self.space_below:
+ rows += 1
+ return rows
+
+ @property
+ def height(self):
+ return 1 + int(self.space_above) + int(self.space_below)
+
+
+class InfoField(NoInputField):
+ def __init__(self, parent, name, label, value, **kwargs):
+ NoInputField.__init__(self, parent=parent, name=name, **kwargs)
+ self.label = label
+ self.value = value
+ self.txt = f'{label} {value}'
+
+ @overrides(BaseField)
+ def render(self, screen, row, col=0, **kwargs):
+ self.parent.add_string(row, self.txt, scr=screen, col=col, pad=False)
+ return 1
+
+ @overrides(BaseField)
+ def set_value(self, v):
+ self.value = v
+ if isinstance(v, float):
+ self.txt = f'{self.label} {self.value:.2f}'
+ else:
+ self.txt = f'{self.label} {self.value}'
+
+
+class CheckedInput(InputField):
+ def __init__(
+ self,
+ parent,
+ name,
+ message,
+ checked=False,
+ checked_char='X',
+ unchecked_char=' ',
+ checkbox_format='[%s] ',
+ **kwargs,
+ ):
+ InputField.__init__(self, parent, name, message, **kwargs)
+ self.set_value(checked)
+ self.fmt_keys.update(
+ {
+ 'msg': message,
+ 'checkbox_format': checkbox_format,
+ 'unchecked_char': unchecked_char,
+ 'checked_char': checked_char,
+ }
+ )
+ self.set_fmt_key('font_checked', 'font', kwargs)
+ self.set_fmt_key('font_unfocused_checked', 'font_checked', kwargs)
+ self.set_fmt_key('font_active_checked', 'font_active', kwargs)
+ self.set_fmt_key('font_unfocused_active_checked', 'font_active_checked', kwargs)
+ self.set_fmt_key('color_checked', 'color', kwargs)
+ self.set_fmt_key('color_active_checked', 'color_active', kwargs)
+ self.set_fmt_key('color_unfocused_checked', 'color_checked', kwargs)
+ self.set_fmt_key(
+ 'color_unfocused_active_checked', 'color_unfocused_active', kwargs
+ )
+
+ @property
+ def checked(self):
+ return self.value
+
+ @overrides(BaseField)
+ def get_fmt_keys(self, focused, active, **kwargs):
+ color_key, font_key = super().get_fmt_keys(focused, active, **kwargs)
+ if self.checked:
+ color_key += '_checked'
+ font_key += '_checked'
+ return color_key, font_key
+
+ def build_msg_string(self, focused, active):
+ fmt_str = self.build_fmt_string(focused, active)
+ char = self.fmt_keys['checked_char' if self.checked else 'unchecked_char']
+ chk_box = ''
+ try:
+ chk_box = self.fmt_keys['checkbox_format'] % char
+ except KeyError:
+ pass
+ msg = fmt_str % self.fmt_keys
+ return chk_box + msg
+
+ @overrides(InputField)
+ def render(self, screen, row, col=0, **kwargs):
+ string = self.build_msg_string(kwargs.get('focused'), kwargs.get('active'))
+
+ self.parent.add_string(row, string, scr=screen, col=col, pad=False)
+ return 1
+
+ @overrides(InputField)
+ def handle_read(self, c):
+ if c == util.KEY_SPACE:
+ self.set_value(not self.checked)
+ return util.ReadState.CHANGED
+ return util.ReadState.IGNORED
+
+ @overrides(InputField)
+ def set_message(self, msg):
+ changed = InputField.set_message(self, msg)
+ if 'msg' in self.fmt_keys and self.fmt_keys['msg'] != msg:
+ changed = True
+ self.fmt_keys.update({'msg': msg})
+
+ return changed
+
+
+class CheckedPlusInput(CheckedInput):
+ def __init__(
+ self,
+ parent,
+ name,
+ message,
+ child,
+ child_always_visible=False,
+ show_usage_hints=True,
+ msg_fmt='%s ',
+ **kwargs,
+ ):
+ CheckedInput.__init__(self, parent, name, message, **kwargs)
+ self.child = child
+ self.child_active = False
+ self.show_usage_hints = show_usage_hints
+ self.msg_fmt = msg_fmt
+ self.child_always_visible = child_always_visible
+
+ @property
+ def height(self):
+ return max(2 if self.show_usage_hints else 1, self.child.height)
+
+ @overrides(CheckedInput)
+ def render(
+ self, screen, row, width=None, active=False, focused=False, col=0, **kwargs
+ ):
+ isact = active and not self.child_active
+ CheckedInput.render(
+ self, screen, row, width=width, active=isact, focused=focused, col=col
+ )
+ rows = 1
+ if self.show_usage_hints and (
+ self.child_always_visible or (active and self.checked)
+ ):
+ msg = '(esc to leave)' if self.child_active else '(right arrow to edit)'
+ self.parent.add_string(row + 1, msg, scr=screen, col=col, pad=False)
+ rows += 1
+
+ msglen = len(
+ self.msg_fmt % colors.strip_colors(self.build_msg_string(focused, active))
+ )
+ # show child
+ if self.checked or self.child_always_visible:
+ crows = self.child.render(
+ screen,
+ row,
+ width=width - msglen,
+ active=self.child_active and active,
+ col=col + msglen,
+ cursor_offset=msglen,
+ )
+ rows = max(rows, crows)
+ else:
+ self.parent.add_string(
+ row,
+ '(enable to view/edit value)',
+ scr=screen,
+ col=col + msglen,
+ pad=False,
+ )
+ return rows
+
+ @overrides(CheckedInput)
+ def handle_read(self, c):
+ if self.child_active:
+ if c == util.KEY_ESC: # leave child on esc
+ self.child_active = False
+ return util.ReadState.READ
+ # pass keys through to child
+ return self.child.handle_read(c)
+ else:
+ if c == util.KEY_SPACE:
+ self.set_value(not self.checked)
+ return util.ReadState.CHANGED
+ if (self.checked or self.child_always_visible) and c == curses.KEY_RIGHT:
+ self.child_active = True
+ return util.ReadState.READ
+ return util.ReadState.IGNORED
+
+ def get_child(self):
+ return self.child
+
+
+class IntSpinInput(InputField):
+ def __init__(
+ self,
+ parent,
+ name,
+ message,
+ move_func,
+ value,
+ min_val=None,
+ max_val=None,
+ inc_amt=1,
+ incr_large=10,
+ strict_validation=False,
+ fmt='%d',
+ **kwargs,
+ ):
+ InputField.__init__(self, parent, name, message, **kwargs)
+ self.convert_func = int
+ self.fmt = fmt
+ self.valstr = str(value)
+ self.default_str = self.valstr
+ self.set_value(value)
+ self.default_value = self.value
+ self.last_valid_value = self.value
+ self.last_active = False
+ self.cursor = len(self.valstr)
+ self.cursoff = (
+ colors.get_line_width(self.message) + 3
+ ) # + 4 for the " [ " in the rendered string
+ self.move_func = move_func
+ self.strict_validation = strict_validation
+ self.min_val = min_val
+ self.max_val = max_val
+ self.inc_amt = inc_amt
+ self.incr_large = incr_large
+
+ def validate_value(self, value, on_invalid=None):
+ if (self.min_val is not None) and value < self.min_val:
+ value = on_invalid if on_invalid else self.min_val
+ if (self.max_val is not None) and value > self.max_val:
+ value = on_invalid if on_invalid else self.max_val
+ return value
+
+ @overrides(InputField)
+ def render(
+ self, screen, row, active=False, focused=True, col=0, cursor_offset=0, **kwargs
+ ):
+ if active:
+ self.last_active = True
+ elif self.last_active:
+ self.set_value(
+ self.valstr, validate=True, value_on_fail=self.last_valid_value
+ )
+ self.last_active = False
+
+ fmt_str = self.build_fmt_string(focused, active, value_key='value')
+ value_format = '%(msg)s {!input!}'
+ if not self.valstr:
+ value_format += '[ ]'
+ elif self.format_default and self.valstr == self.default_str:
+ value_format += '[ {!magenta,black!}%(value)s{!input!} ]'
+ else:
+ value_format += '[ ' + fmt_str + ' ]'
+
+ self.parent.add_string(
+ row,
+ value_format
+ % dict({'msg': self.message, 'value': '%s' % self.valstr}, **self.fmt_keys),
+ scr=screen,
+ col=col,
+ pad=False,
+ )
+ if active:
+ if focused:
+ util.safe_curs_set(util.Curser.NORMAL)
+ self.move_func(row, self.cursor + self.cursoff + cursor_offset)
+ else:
+ util.safe_curs_set(util.Curser.INVISIBLE)
+ return 1
+
+ @overrides(InputField)
+ def handle_read(self, c):
+ if c == util.KEY_SPACE:
+ return util.ReadState.READ
+ elif c == curses.KEY_PPAGE:
+ self.set_value(self.value + self.inc_amt, validate=True)
+ elif c == curses.KEY_NPAGE:
+ self.set_value(self.value - self.inc_amt, validate=True)
+ elif c == util.KEY_ALT_AND_KEY_PPAGE:
+ self.set_value(self.value + self.incr_large, validate=True)
+ elif c == util.KEY_ALT_AND_KEY_NPAGE:
+ self.set_value(self.value - self.incr_large, validate=True)
+ elif c == curses.KEY_LEFT:
+ self.cursor = max(0, self.cursor - 1)
+ elif c == curses.KEY_RIGHT:
+ self.cursor = min(len(self.valstr), self.cursor + 1)
+ elif c == curses.KEY_HOME:
+ self.cursor = 0
+ elif c == curses.KEY_END:
+ self.cursor = len(self.valstr)
+ elif c == curses.KEY_BACKSPACE or c == util.KEY_BACKSPACE2:
+ if self.valstr and self.cursor > 0:
+ new_val = self.valstr[: self.cursor - 1] + self.valstr[self.cursor :]
+ self.set_value(
+ new_val,
+ validate=False,
+ cursor=self.cursor - 1,
+ cursor_on_fail=True,
+ value_on_fail=self.valstr if self.strict_validation else None,
+ )
+ elif c == curses.KEY_DC: # Del
+ if self.valstr and self.cursor <= len(self.valstr):
+ if self.cursor == 0:
+ new_val = self.valstr[1:]
+ else:
+ new_val = (
+ self.valstr[: self.cursor] + self.valstr[self.cursor + 1 :]
+ )
+ self.set_value(
+ new_val,
+ validate=False,
+ cursor=False,
+ value_on_fail=self.valstr if self.strict_validation else None,
+ cursor_on_fail=True,
+ )
+ elif c == ord('-'): # minus
+ self.set_value(
+ self.value - 1,
+ validate=True,
+ cursor=True,
+ cursor_on_fail=True,
+ value_on_fail=self.value,
+ on_invalid=self.value,
+ )
+ elif c == ord('+'): # plus
+ self.set_value(
+ self.value + 1,
+ validate=True,
+ cursor=True,
+ cursor_on_fail=True,
+ value_on_fail=self.value,
+ on_invalid=self.value,
+ )
+ elif util.is_int_chr(c):
+ if self.strict_validation:
+ new_val = (
+ self.valstr[: self.cursor - 1]
+ + chr(c)
+ + self.valstr[self.cursor - 1 :]
+ )
+ self.set_value(
+ new_val,
+ validate=True,
+ cursor=self.cursor + 1,
+ value_on_fail=self.valstr,
+ on_invalid=self.value,
+ )
+ else:
+ minus_place = self.valstr.find('-')
+ if self.cursor > minus_place:
+ new_val = (
+ self.valstr[: self.cursor] + chr(c) + self.valstr[self.cursor :]
+ )
+ self.set_value(
+ new_val,
+ validate=True,
+ cursor=self.cursor + 1,
+ on_invalid=self.value,
+ )
+ else:
+ return util.ReadState.IGNORED
+ return util.ReadState.READ
+
+ @overrides(BaseField)
+ def set_value(
+ self,
+ val,
+ cursor=True,
+ validate=False,
+ cursor_on_fail=False,
+ value_on_fail=None,
+ on_invalid=None,
+ ):
+ value = None
+ try:
+ value = self.convert_func(val)
+ if validate:
+ validated = self.validate_value(value, on_invalid)
+ if validated != value:
+ # Value was not valid, so use validated value instead.
+ # Also set cursor according to validated value
+ cursor = True
+ value = validated
+
+ new_valstr = self.fmt % value
+ if new_valstr == self.valstr:
+ # If string has not change, keep cursor
+ cursor = False
+ self.valstr = new_valstr
+ self.last_valid_value = self.value = value
+ except ValueError:
+ if value_on_fail is not None:
+ self.set_value(
+ value_on_fail,
+ cursor=cursor,
+ cursor_on_fail=cursor_on_fail,
+ validate=validate,
+ on_invalid=on_invalid,
+ )
+ return
+ self.value = None
+ self.valstr = val
+ if cursor_on_fail:
+ self.cursor = cursor
+ except TypeError:
+ import traceback
+
+ log.warning('TypeError: %s', ''.join(traceback.format_exc()))
+ else:
+ if cursor is True:
+ self.cursor = len(self.valstr)
+ elif cursor is not False:
+ self.cursor = cursor
+
+
+class FloatSpinInput(IntSpinInput):
+ def __init__(self, parent, message, name, move_func, value, precision=1, **kwargs):
+ self.precision = precision
+ IntSpinInput.__init__(self, parent, message, name, move_func, value, **kwargs)
+ self.fmt = '%%.%df' % precision
+ self.convert_func = lambda valstr: round(float(valstr), self.precision)
+ self.set_value(value)
+ self.cursor = len(self.valstr)
+
+ @overrides(IntSpinInput)
+ def handle_read(self, c):
+ if c == ord('.'):
+ minus_place = self.valstr.find('-')
+ if self.cursor <= minus_place:
+ return util.ReadState.READ
+ point_place = self.valstr.find('.')
+ if point_place >= 0:
+ return util.ReadState.READ
+ new_val = self.valstr[: self.cursor] + chr(c) + self.valstr[self.cursor :]
+ self.set_value(new_val, validate=True, cursor=self.cursor + 1)
+ else:
+ return IntSpinInput.handle_read(self, c)
+
+
+class SelectInput(InputField):
+ def __init__(
+ self,
+ parent,
+ name,
+ message,
+ opts,
+ vals,
+ active_index,
+ active_default=False,
+ require_select_action=True,
+ **kwargs,
+ ):
+ InputField.__init__(self, parent, name, message, **kwargs)
+ self.opts = opts
+ self.vals = vals
+ self.active_index = active_index
+ self.selected_index = active_index
+ self.default_option = active_index if active_default else None
+ self.require_select_action = require_select_action
+ self.fmt_keys.update({'font_active': 'bold'})
+ font_selected = kwargs.get('font_selected', 'bold,underline')
+
+ self.set_fmt_key('font_selected', font_selected, kwargs)
+ self.set_fmt_key('font_active_selected', 'font_selected', kwargs)
+ self.set_fmt_key('font_unfocused_selected', 'font_selected', kwargs)
+ self.set_fmt_key(
+ 'font_unfocused_active_selected', 'font_active_selected', kwargs
+ )
+
+ self.set_fmt_key('color_selected', 'color', kwargs)
+ self.set_fmt_key('color_active_selected', 'color_active', kwargs)
+ self.set_fmt_key('color_unfocused_selected', 'color_selected', kwargs)
+ self.set_fmt_key(
+ 'color_unfocused_active_selected', 'color_unfocused_active', kwargs
+ )
+ self.set_fmt_key('color_default_value', 'magenta,black', kwargs)
+
+ self.set_fmt_key('color_default_value', 'magenta,black')
+ self.set_fmt_key('color_default_value_active', 'magentadark,white')
+ self.set_fmt_key('color_default_value_selected', 'color_default_value', kwargs)
+ self.set_fmt_key('color_default_value_unfocused', 'color_default_value', kwargs)
+ self.set_fmt_key(
+ 'color_default_value_unfocused_selected',
+ 'color_default_value_selected',
+ kwargs,
+ )
+ self.set_fmt_key('color_default_value_active_selected', 'magentadark,white')
+ self.set_fmt_key(
+ 'color_default_value_unfocused_active_selected',
+ 'color_unfocused_active',
+ kwargs,
+ )
+
+ @property
+ def height(self):
+ return 1 + bool(self.message)
+
+ @overrides(BaseField)
+ def get_fmt_keys(self, focused, active, selected=False, **kwargs):
+ color_key, font_key = super().get_fmt_keys(focused, active, **kwargs)
+ if selected:
+ color_key += '_selected'
+ font_key += '_selected'
+ return color_key, font_key
+
+ @overrides(InputField)
+ def render(self, screen, row, active=False, focused=True, col=0, **kwargs):
+ if self.message:
+ self.parent.add_string(row, self.message, scr=screen, col=col, pad=False)
+ row += 1
+
+ off = col + 1
+ for i, opt in enumerate(self.opts):
+ self.fmt_keys['msg'] = opt
+ fmt_args = {'selected': i == self.selected_index}
+ if i == self.default_option:
+ fmt_args['color_key'] = 'color_default_value'
+ fmt = self.build_fmt_string(
+ focused, (i == self.active_index) and active, **fmt_args
+ )
+ string = '[%s]' % (fmt % self.fmt_keys)
+ self.parent.add_string(row, string, scr=screen, col=off, pad=False)
+ off += len(opt) + 3
+ if self.message:
+ return 2
+ else:
+ return 1
+
+ @overrides(InputField)
+ def handle_read(self, c):
+ if c == curses.KEY_LEFT:
+ self.active_index = max(0, self.active_index - 1)
+ if not self.require_select_action:
+ self.selected_index = self.active_index
+ elif c == curses.KEY_RIGHT:
+ self.active_index = min(len(self.opts) - 1, self.active_index + 1)
+ if not self.require_select_action:
+ self.selected_index = self.active_index
+ elif c == ord(' '):
+ if self.require_select_action:
+ self.selected_index = self.active_index
+ else:
+ return util.ReadState.IGNORED
+ return util.ReadState.READ
+
+ @overrides(BaseField)
+ def get_value(self):
+ return self.vals[self.selected_index]
+
+ @overrides(BaseField)
+ def set_value(self, value):
+ for i, val in enumerate(self.vals):
+ if value == val:
+ self.selected_index = i
+ return
+ raise Exception('Invalid value for SelectInput')
+
+
+class TextInput(InputField):
+ def __init__(
+ self,
+ parent,
+ name,
+ message,
+ move_func,
+ width,
+ value,
+ complete=False,
+ activate_input=False,
+ **kwargs,
+ ):
+ InputField.__init__(self, parent, name, message, **kwargs)
+ self.move_func = move_func
+ self._width = width
+ self.value = value if value else ''
+ self.default_value = value
+ self.complete = complete
+ self.tab_count = 0
+ self.cursor = len(self.value)
+ self.opts = None
+ self.opt_off = 0
+ self.value_offset = 0
+ self.activate_input = activate_input # Wether input must be activated
+ self.input_active = not self.activate_input
+
+ @property
+ def width(self):
+ return self._width
+
+ @property
+ def height(self):
+ return 1 + bool(self.message)
+
+ def calculate_textfield_value(self, width, cursor_offset):
+ cursor_width = width
+
+ if self.cursor > (cursor_width - 1):
+ c_pos_abs = self.cursor - cursor_width
+ if cursor_width <= (self.cursor - self.value_offset):
+ new_cur = c_pos_abs + 1
+ self.value_offset = new_cur
+ else:
+ if self.cursor >= len(self.value):
+ c_pos_abs = len(self.value) - cursor_width
+ new_cur = c_pos_abs + 1
+ self.value_offset = new_cur
+ vstr = self.value[self.value_offset :]
+
+ if len(vstr) > cursor_width:
+ vstr = vstr[:cursor_width]
+ vstr = vstr.ljust(cursor_width)
+ else:
+ if len(self.value) <= cursor_width:
+ self.value_offset = 0
+ vstr = self.value.ljust(cursor_width)
+ else:
+ self.value_offset = min(self.value_offset, self.cursor)
+ vstr = self.value[self.value_offset :]
+ if len(vstr) > cursor_width:
+ vstr = vstr[:cursor_width]
+ vstr = vstr.ljust(cursor_width)
+
+ return vstr
+
+ def calculate_cursor_pos(self, width, col):
+ cursor_width = width
+ x_pos = self.cursor + col
+
+ if (self.cursor + col - self.value_offset) > cursor_width:
+ x_pos += self.value_offset
+ else:
+ x_pos -= self.value_offset
+
+ return min(width - 1 + col, x_pos)
+
+ @overrides(InputField)
+ def render(
+ self,
+ screen,
+ row,
+ width=None,
+ active=False,
+ focused=True,
+ col=0,
+ cursor_offset=0,
+ **kwargs,
+ ):
+ if not self.value and not active and len(self.default_value) != 0:
+ self.value = self.default_value
+ self.cursor = len(self.value)
+
+ if self.message:
+ self.parent.add_string(row, self.message, scr=screen, col=col, pad=False)
+ row += 1
+
+ vstr = self.calculate_textfield_value(width, cursor_offset)
+
+ if active:
+ if self.opts:
+ self.parent.add_string(
+ row + 1, self.opts[self.opt_off :], scr=screen, col=col, pad=False
+ )
+
+ if focused and self.input_active:
+ util.safe_curs_set(
+ util.Curser.NORMAL
+ ) # Make cursor visible when text field is focused
+ x_pos = self.calculate_cursor_pos(width, col)
+ self.move_func(row, x_pos)
+
+ fmt = '{!black,white,bold!}%s'
+ if (
+ self.format_default
+ and len(self.value) != 0
+ and self.value == self.default_value
+ ):
+ fmt = '{!magenta,white!}%s'
+ if not active or not focused or self.input_active:
+ fmt = '{!white,grey,bold!}%s'
+
+ self.parent.add_string(
+ row, fmt % vstr, scr=screen, col=col, pad=False, trim=False
+ )
+ return self.height
+
+ @overrides(BaseField)
+ def set_value(self, val):
+ self.value = val
+ self.cursor = len(self.value)
+
+ @overrides(InputField)
+ def handle_read(self, c):
+ """
+ Return False when key was swallowed, i.e. we recognised
+ the key and no further action by other components should
+ be performed.
+ """
+ if self.activate_input:
+ if not self.input_active:
+ if c in [
+ curses.KEY_LEFT,
+ curses.KEY_RIGHT,
+ curses.KEY_HOME,
+ curses.KEY_END,
+ curses.KEY_ENTER,
+ util.KEY_ENTER2,
+ ]:
+ self.input_active = True
+ return util.ReadState.READ
+ else:
+ return util.ReadState.IGNORED
+ elif c == util.KEY_ESC:
+ self.input_active = False
+ return util.ReadState.READ
+
+ if c == util.KEY_TAB and self.complete:
+ # Keep track of tab hit count to know when it's double-hit
+ self.tab_count += 1
+ if self.tab_count > 1:
+ second_hit = True
+ self.tab_count = 0
+ else:
+ second_hit = False
+
+ # We only call the tab completer function if we're at the end of
+ # the input string on the cursor is on a space
+ if self.cursor == len(self.value) or self.value[self.cursor] == ' ':
+ if self.opts:
+ prev = self.opt_off
+ self.opt_off += self.width - 3
+ # now find previous double space, best guess at a split point
+ # in future could keep opts unjoined to get this really right
+ self.opt_off = self.opts.rfind(' ', 0, self.opt_off) + 2
+ if (
+ second_hit and self.opt_off == prev
+ ): # double tap and we're at the end
+ self.opt_off = 0
+ else:
+ opts = self.do_complete(self.value)
+ if len(opts) == 1: # only one option, just complete it
+ self.value = opts[0]
+ self.cursor = len(opts[0])
+ self.tab_count = 0
+ elif len(opts) > 1:
+ prefix = os.path.commonprefix(opts)
+ if prefix:
+ self.value = prefix
+ self.cursor = len(prefix)
+
+ if (
+ len(opts) > 1 and second_hit
+ ): # display multiple options on second tab hit
+ sp = self.value.rfind(os.sep) + 1
+ self.opts = ' '.join([o[sp:] for o in opts])
+
+ # Cursor movement
+ elif c == curses.KEY_LEFT:
+ self.cursor = max(0, self.cursor - 1)
+ elif c == curses.KEY_RIGHT:
+ self.cursor = min(len(self.value), self.cursor + 1)
+ elif c == curses.KEY_HOME:
+ self.cursor = 0
+ elif c == curses.KEY_END:
+ self.cursor = len(self.value)
+
+ # Delete a character in the input string based on cursor position
+ elif c == curses.KEY_BACKSPACE or c == util.KEY_BACKSPACE2:
+ if self.value and self.cursor > 0:
+ self.value = self.value[: self.cursor - 1] + self.value[self.cursor :]
+ self.cursor -= 1
+ elif c == [util.KEY_ESC, util.KEY_BACKSPACE2] or c == [
+ util.KEY_ESC,
+ curses.KEY_BACKSPACE,
+ ]:
+ self.value, self.cursor = delete_alt_backspace(self.value, self.cursor)
+ elif c == curses.KEY_DC:
+ if self.value and self.cursor < len(self.value):
+ self.value = self.value[: self.cursor] + self.value[self.cursor + 1 :]
+ elif c > 31 and c < 256:
+ # Emulate getwch
+ stroke = chr(c)
+ uchar = stroke
+ while not uchar:
+ try:
+ uchar = stroke.decode(self.parent.encoding)
+ except UnicodeDecodeError:
+ c = self.parent.parent.stdscr.getch()
+ stroke += chr(c)
+ if uchar:
+ if self.cursor == len(self.value):
+ self.value += uchar
+ else:
+ # Insert into string
+ self.value = (
+ self.value[: self.cursor] + uchar + self.value[self.cursor :]
+ )
+ # Move the cursor forward
+ self.cursor += 1
+
+ else:
+ self.opts = None
+ self.opt_off = 0
+ self.tab_count = 0
+ return util.ReadState.IGNORED
+ return util.ReadState.READ
+
+ def do_complete(self, line):
+ line = os.path.abspath(os.path.expanduser(line))
+ ret = []
+ if os.path.exists(line):
+ # This is a correct path, check to see if it's a directory
+ if os.path.isdir(line):
+ # Directory, so we need to show contents of directory
+ for f in os.listdir(line):
+ # Skip hidden
+ if f.startswith('.'):
+ continue
+ f = os.path.join(line, f)
+ if os.path.isdir(f):
+ f += os.sep
+ ret.append(f)
+ else:
+ # This is a file, but we could be looking for another file that
+ # shares a common prefix.
+ for f in os.listdir(os.path.dirname(line)):
+ if f.startswith(os.path.split(line)[1]):
+ ret.append(os.path.join(os.path.dirname(line), f))
+ else:
+ # This path does not exist, so lets do a listdir on it's parent
+ # and find any matches.
+ ret = []
+ if os.path.isdir(os.path.dirname(line)):
+ for f in os.listdir(os.path.dirname(line)):
+ if f.startswith(os.path.split(line)[1]):
+ p = os.path.join(os.path.dirname(line), f)
+
+ if os.path.isdir(p):
+ p += os.sep
+ ret.append(p)
+ return ret
+
+
+class ComboInput(InputField):
+ def __init__(
+ self, parent, name, message, choices, default=None, searchable=True, **kwargs
+ ):
+ InputField.__init__(self, parent, name, message, **kwargs)
+ self.choices = choices
+ self.default = default
+ self.set_value(default)
+ max_width = 0
+ for c in choices:
+ max_width = max(max_width, len(c[1]))
+ self.choices_width = max_width
+ self.searchable = searchable
+
+ @overrides(BaseField)
+ def render(self, screen, row, col=0, **kwargs):
+ fmt_str = self.build_fmt_string(kwargs.get('focused'), kwargs.get('active'))
+ string = '%s: [%10s]' % (self.message, fmt_str % self.fmt_keys)
+ self.parent.add_string(row, string, scr=screen, col=col, pad=False)
+ return 1
+
+ def _lang_selected(self, selected, *args, **kwargs):
+ if selected is not None:
+ self.set_value(selected)
+ self.parent.pop_popup()
+
+ @overrides(InputField)
+ def handle_read(self, c):
+ if c in [util.KEY_SPACE, curses.KEY_ENTER, util.KEY_ENTER2]:
+
+ def search_handler(key):
+ """Handle keyboard input to seach the list"""
+ if not util.is_printable_chr(key):
+ return
+ selected = select_popup.current_selection()
+
+ def select_in_range(begin, end):
+ for i in range(begin, end):
+ val = select_popup.inputs[i].get_value()
+ if val.lower().startswith(chr(key)):
+ select_popup.set_selection(i)
+ return True
+ return False
+
+ # First search downwards
+ if not select_in_range(selected + 1, len(select_popup.inputs)):
+ # No match, so start at beginning
+ select_in_range(0, selected)
+
+ from deluge.ui.console.widgets.popup import ( # Must import here
+ SelectablePopup,
+ )
+
+ select_popup = SelectablePopup(
+ self.parent,
+ ' %s ' % _('Select Language'),
+ self._lang_selected,
+ input_cb=search_handler if self.searchable else None,
+ border_off_west=1,
+ active_wrap=False,
+ width_req=self.choices_width + 12,
+ )
+ for choice in self.choices:
+ args = {'data': choice[0]}
+ select_popup.add_line(
+ choice[0],
+ choice[1],
+ selectable=True,
+ selected=choice[0] == self.get_value(),
+ **args,
+ )
+ self.parent.push_popup(select_popup)
+ return util.ReadState.CHANGED
+ return util.ReadState.IGNORED
+
+ @overrides(BaseField)
+ def set_value(self, val):
+ self.value = val
+ msg = None
+ for c in self.choices:
+ if c[0] == val:
+ msg = c[1]
+ break
+ if msg is None:
+ log.warning(
+ 'Setting value "%s" found nothing in choices: %s', val, self.choices
+ )
+ self.fmt_keys.update({'msg': msg})
+
+
+class TextField(BaseField):
+ def __init__(self, parent, name, value, selectable=True, value_fmt='%s', **kwargs):
+ BaseField.__init__(
+ self, parent=parent, name=name, selectable=selectable, **kwargs
+ )
+ self.value = value
+ self.value_fmt = value_fmt
+ self.set_value(value)
+
+ @overrides(BaseField)
+ def set_value(self, value):
+ self.value = value
+ self.txt = self.value_fmt % (value)
+
+ @overrides(BaseField)
+ def has_input(self):
+ return True
+
+ @overrides(BaseField)
+ def render(self, screen, row, active=False, focused=False, col=0, **kwargs):
+ util.safe_curs_set(
+ util.Curser.INVISIBLE
+ ) # Make cursor invisible when text field is active
+ fmt = self.build_fmt_string(focused, active)
+ self.fmt_keys['msg'] = self.txt
+ string = fmt % self.fmt_keys
+ self.parent.add_string(row, string, scr=screen, col=col, pad=False, trim=False)
+ return 1
+
+
+class TextArea(TextField):
+ def __init__(self, parent, name, value, value_fmt='%s', **kwargs):
+ TextField.__init__(
+ self, parent, name, value, selectable=False, value_fmt=value_fmt, **kwargs
+ )
+
+ @overrides(TextField)
+ def render(self, screen, row, col=0, **kwargs):
+ util.safe_curs_set(
+ util.Curser.INVISIBLE
+ ) # Make cursor invisible when text field is active
+ color = '{!white,black!}'
+ lines = wrap_string(self.txt, self.parent.width - 3, 3, True)
+
+ for i, line in enumerate(lines):
+ self.parent.add_string(
+ row + i,
+ f'{color}{line}',
+ scr=screen,
+ col=col,
+ pad=False,
+ trim=False,
+ )
+ return len(lines)
+
+ @property
+ def height(self):
+ lines = wrap_string(self.txt, self.parent.width - 3, 3, True)
+ return len(lines)
+
+ @overrides(TextField)
+ def has_input(self):
+ return False
+
+
+class DividerField(NoInputField):
+ def __init__(
+ self,
+ parent,
+ name,
+ value,
+ selectable=False,
+ fill_width=True,
+ value_fmt='%s',
+ **kwargs,
+ ):
+ NoInputField.__init__(
+ self, parent=parent, name=name, selectable=selectable, **kwargs
+ )
+ self.value = value
+ self.value_fmt = value_fmt
+ self.set_value(value)
+ self.fill_width = fill_width
+
+ @overrides(BaseField)
+ def set_value(self, value):
+ self.value = value
+ self.txt = self.value_fmt % (value)
+
+ @overrides(BaseField)
+ def render(
+ self, screen, row, active=False, focused=False, col=0, width=None, **kwargs
+ ):
+ util.safe_curs_set(
+ util.Curser.INVISIBLE
+ ) # Make cursor invisible when text field is active
+ fmt = self.build_fmt_string(focused, active)
+ self.fmt_keys['msg'] = self.txt
+ if self.fill_width:
+ self.fmt_keys['msg'] = ''
+ string_len = len(remove_formatting(fmt % self.fmt_keys))
+ fill_len = width - string_len - (len(self.txt) - 1)
+ self.fmt_keys['msg'] = self.txt * fill_len
+ string = fmt % self.fmt_keys
+ self.parent.add_string(row, string, scr=screen, col=col, pad=False, trim=False)
+ return 1
diff --git a/deluge/ui/console/widgets/inputpane.py b/deluge/ui/console/widgets/inputpane.py
new file mode 100644
index 0000000..d8d2175
--- /dev/null
+++ b/deluge/ui/console/widgets/inputpane.py
@@ -0,0 +1,394 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.decorators import overrides
+from deluge.ui.console.modes.basemode import InputKeyHandler, move_cursor
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.widgets.fields import (
+ CheckedInput,
+ CheckedPlusInput,
+ ComboInput,
+ DividerField,
+ FloatSpinInput,
+ Header,
+ InfoField,
+ IntSpinInput,
+ NoInputField,
+ SelectInput,
+ TextArea,
+ TextField,
+ TextInput,
+)
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+
+class BaseInputPane(InputKeyHandler):
+ def __init__(
+ self,
+ mode,
+ allow_rearrange=False,
+ immediate_action=False,
+ set_first_input_active=True,
+ border_off_west=0,
+ border_off_north=0,
+ border_off_east=0,
+ border_off_south=0,
+ active_wrap=False,
+ **kwargs
+ ):
+ InputKeyHandler.__init__(self)
+ self.inputs = []
+ self.mode = mode
+ self.active_input = 0
+ self.set_first_input_active = set_first_input_active
+ self.allow_rearrange = allow_rearrange
+ self.immediate_action = immediate_action
+ self.move_active_many = 4
+ self.active_wrap = active_wrap
+ self.lineoff = 0
+ self.border_off_west = border_off_west
+ self.border_off_north = border_off_north
+ self.border_off_east = border_off_east
+ self.border_off_south = border_off_south
+ self.last_lineoff_move = 0
+
+ if not hasattr(self, 'visible_content_pane_height'):
+ log.error(
+ 'The class "%s" does not have the attribute "%s" required by super class "%s"',
+ self.__class__.__name__,
+ 'visible_content_pane_height',
+ BaseInputPane.__name__,
+ )
+ raise AttributeError('visible_content_pane_height')
+
+ @property
+ def visible_content_pane_width(self):
+ return self.mode.width
+
+ def add_spaces(self, num):
+ string = ''
+ for i in range(num):
+ string += '\n'
+
+ self.add_text_area('space %d' % len(self.inputs), string)
+
+ def add_text(self, string):
+ self.add_text_area('', string)
+
+ def move(self, r, c):
+ self._cursor_row = r
+ self._cursor_col = c
+
+ def get_input(self, name):
+ for e in self.inputs:
+ if e.name == name:
+ return e
+
+ def _add_input(self, input_element):
+ for e in self.inputs:
+ if isinstance(e, NoInputField):
+ continue
+ if e.name == input_element.name:
+ import traceback
+
+ log.warning(
+ 'Input element with name "%s" already exists in input pane (%s):\n%s',
+ input_element.name,
+ e,
+ ''.join(traceback.format_stack(limit=5)),
+ )
+ return
+
+ self.inputs.append(input_element)
+ if self.set_first_input_active and input_element.selectable():
+ self.active_input = len(self.inputs) - 1
+ self.set_first_input_active = False
+ return input_element
+
+ def add_header(self, header, space_above=False, space_below=False, **kwargs):
+ return self._add_input(Header(self, header, space_above, space_below, **kwargs))
+
+ def add_info_field(self, name, label, value):
+ return self._add_input(InfoField(self, name, label, value))
+
+ def add_text_field(self, name, message, selectable=True, col='+1', **kwargs):
+ return self._add_input(
+ TextField(self, name, message, selectable=selectable, col=col, **kwargs)
+ )
+
+ def add_text_area(self, name, message, **kwargs):
+ return self._add_input(TextArea(self, name, message, **kwargs))
+
+ def add_divider_field(self, name, message, **kwargs):
+ return self._add_input(DividerField(self, name, message, **kwargs))
+
+ def add_text_input(self, name, message, value='', col='+1', **kwargs):
+ """
+ Add a text input field
+
+ :param message: string to display above the input field
+ :param name: name of the field, for the return callback
+ :param value: initial value of the field
+ :param complete: should completion be run when tab is hit and this field is active
+ """
+ return self._add_input(
+ TextInput(
+ self,
+ name,
+ message,
+ self.move,
+ self.visible_content_pane_width,
+ value,
+ col=col,
+ **kwargs
+ )
+ )
+
+ def add_select_input(self, name, message, opts, vals, default_index=0, **kwargs):
+ return self._add_input(
+ SelectInput(self, name, message, opts, vals, default_index, **kwargs)
+ )
+
+ def add_checked_input(self, name, message, checked=False, col='+1', **kwargs):
+ return self._add_input(
+ CheckedInput(self, name, message, checked=checked, col=col, **kwargs)
+ )
+
+ def add_checkedplus_input(
+ self, name, message, child, checked=False, col='+1', **kwargs
+ ):
+ return self._add_input(
+ CheckedPlusInput(
+ self, name, message, child, checked=checked, col=col, **kwargs
+ )
+ )
+
+ def add_float_spin_input(self, name, message, value=0.0, col='+1', **kwargs):
+ return self._add_input(
+ FloatSpinInput(self, name, message, self.move, value, col=col, **kwargs)
+ )
+
+ def add_int_spin_input(self, name, message, value=0, col='+1', **kwargs):
+ return self._add_input(
+ IntSpinInput(self, name, message, self.move, value, col=col, **kwargs)
+ )
+
+ def add_combo_input(self, name, message, choices, col='+1', **kwargs):
+ return self._add_input(
+ ComboInput(self, name, message, choices, col=col, **kwargs)
+ )
+
+ @overrides(InputKeyHandler)
+ def handle_read(self, c):
+ if not self.inputs: # no inputs added yet
+ return util.ReadState.IGNORED
+ ret = self.inputs[self.active_input].handle_read(c)
+ if ret != util.ReadState.IGNORED:
+ if self.immediate_action:
+ self.immediate_action_cb(
+ state_changed=False if ret == util.ReadState.READ else True
+ )
+ return ret
+
+ ret = util.ReadState.READ
+
+ if c == curses.KEY_UP:
+ self.move_active_up(1)
+ elif c == curses.KEY_DOWN:
+ self.move_active_down(1)
+ elif c == curses.KEY_HOME:
+ self.move_active_up(len(self.inputs))
+ elif c == curses.KEY_END:
+ self.move_active_down(len(self.inputs))
+ elif c == curses.KEY_PPAGE:
+ self.move_active_up(self.move_active_many)
+ elif c == curses.KEY_NPAGE:
+ self.move_active_down(self.move_active_many)
+ elif c == util.KEY_ALT_AND_ARROW_UP:
+ self.lineoff = max(self.lineoff - 1, 0)
+ elif c == util.KEY_ALT_AND_ARROW_DOWN:
+ tot_height = self.get_content_height()
+ self.lineoff = min(
+ self.lineoff + 1, tot_height - self.visible_content_pane_height
+ )
+ elif c == util.KEY_CTRL_AND_ARROW_UP:
+ if not self.allow_rearrange:
+ return ret
+ val = self.inputs.pop(self.active_input)
+ self.active_input -= 1
+ self.inputs.insert(self.active_input, val)
+ if self.immediate_action:
+ self.immediate_action_cb(state_changed=True)
+ elif c == util.KEY_CTRL_AND_ARROW_DOWN:
+ if not self.allow_rearrange:
+ return ret
+ val = self.inputs.pop(self.active_input)
+ self.active_input += 1
+ self.inputs.insert(self.active_input, val)
+ if self.immediate_action:
+ self.immediate_action_cb(state_changed=True)
+ else:
+ ret = util.ReadState.IGNORED
+ return ret
+
+ def get_values(self):
+ vals = {}
+ for i, ipt in enumerate(self.inputs):
+ if not ipt.has_input():
+ continue
+ vals[ipt.name] = {
+ 'value': ipt.get_value(),
+ 'order': i,
+ 'active': self.active_input == i,
+ }
+ return vals
+
+ def immediate_action_cb(self, state_changed=True):
+ pass
+
+ def move_active(self, direction, amount):
+ """
+ direction == -1: Up
+ direction == 1: Down
+
+ """
+ self.last_lineoff_move = direction * amount
+
+ if direction > 0:
+ if self.active_wrap:
+ limit = self.active_input - 1
+ if limit < 0:
+ limit = len(self.inputs) + limit
+ else:
+ limit = len(self.inputs) - 1
+ else:
+ limit = 0
+ if self.active_wrap:
+ limit = self.active_input + 1
+
+ def next_move(nc, direction, limit):
+ next_index = nc
+ while next_index != limit:
+ next_index += direction
+ if direction > 0:
+ next_index %= len(self.inputs)
+ elif next_index < 0:
+ next_index = len(self.inputs) + next_index
+
+ if self.inputs[next_index].selectable():
+ return next_index
+ if next_index == limit:
+ return nc
+ return nc
+
+ next_sel = self.active_input
+ for a in range(amount):
+ cur_sel = next_sel
+ next_sel = next_move(next_sel, direction, limit)
+ if cur_sel == next_sel:
+ tot_height = (
+ self.get_content_height()
+ + self.border_off_north
+ + self.border_off_south
+ )
+ if direction > 0:
+ self.lineoff = min(
+ self.lineoff + 1, tot_height - self.visible_content_pane_height
+ )
+ else:
+ self.lineoff = max(self.lineoff - 1, 0)
+
+ if next_sel is not None:
+ self.active_input = next_sel
+
+ def move_active_up(self, amount):
+ self.move_active(-1, amount)
+ if self.immediate_action:
+ self.immediate_action_cb(state_changed=False)
+
+ def move_active_down(self, amount):
+ self.move_active(1, amount)
+ if self.immediate_action:
+ self.immediate_action_cb(state_changed=False)
+
+ def get_content_height(self):
+ height = 0
+ for i, ipt in enumerate(self.inputs):
+ if ipt.depend_skip():
+ continue
+ height += ipt.height
+ return height
+
+ def ensure_active_visible(self):
+ start_row = 0
+ end_row = self.border_off_north
+ for i, ipt in enumerate(self.inputs):
+ if ipt.depend_skip():
+ continue
+ start_row = end_row
+ end_row += ipt.height
+ if i != self.active_input or not ipt.has_input():
+ continue
+ height = self.visible_content_pane_height
+ if end_row > height + self.lineoff:
+ self.lineoff += end_row - (
+ height + self.lineoff
+ ) # Correct result depends on paranthesis
+ elif start_row < self.lineoff:
+ self.lineoff -= self.lineoff - start_row
+ break
+
+ def render_inputs(self, focused=False):
+ self._cursor_row = -1
+ self._cursor_col = -1
+ util.safe_curs_set(util.Curser.INVISIBLE)
+
+ self.ensure_active_visible()
+
+ crow = self.border_off_north
+ for i, ipt in enumerate(self.inputs):
+ if ipt.depend_skip():
+ continue
+ col = self.border_off_west
+ field_width = self.width - self.border_off_east - self.border_off_west
+ cursor_offset = self.border_off_west
+
+ if ipt.default_col != -1:
+ default_col = int(ipt.default_col)
+ if isinstance(ipt.default_col, ''.__class__) and ipt.default_col[0] in [
+ '+',
+ '-',
+ ]:
+ col += default_col
+ cursor_offset += default_col
+ field_width -= default_col # Increase to col must be reflected here
+ else:
+ col = default_col
+ crow += ipt.render(
+ self.screen,
+ crow,
+ width=field_width,
+ active=i == self.active_input,
+ focused=focused,
+ col=col,
+ cursor_offset=cursor_offset,
+ )
+
+ if self._cursor_row >= 0:
+ util.safe_curs_set(util.Curser.VERY_VISIBLE)
+ move_cursor(self.screen, self._cursor_row, self._cursor_col)
diff --git a/deluge/ui/console/widgets/popup.py b/deluge/ui/console/widgets/popup.py
new file mode 100644
index 0000000..07d667d
--- /dev/null
+++ b/deluge/ui/console/widgets/popup.py
@@ -0,0 +1,398 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.decorators import overrides
+from deluge.ui.console.modes.basemode import InputKeyHandler
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.utils import format_utils
+from deluge.ui.console.widgets import BaseInputPane, BaseWindow
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+
+class ALIGN:
+ TOP_LEFT = 1
+ TOP_CENTER = 2
+ TOP_RIGHT = 3
+ MIDDLE_LEFT = 4
+ MIDDLE_CENTER = 5
+ MIDDLE_RIGHT = 6
+ BOTTOM_LEFT = 7
+ BOTTOM_CENTER = 8
+ BOTTOM_RIGHT = 9
+ DEFAULT = MIDDLE_CENTER
+
+
+class PopupsHandler:
+ def __init__(self):
+ self._popups = []
+
+ @property
+ def popup(self):
+ if self._popups:
+ return self._popups[-1]
+ return None
+
+ def push_popup(self, pu, clear=False):
+ if clear:
+ self._popups = []
+ self._popups.append(pu)
+
+ def pop_popup(self):
+ if self.popup:
+ return self._popups.pop()
+
+ def report_message(self, title, message):
+ self.push_popup(MessagePopup(self, title, message))
+
+
+class Popup(BaseWindow, InputKeyHandler):
+ def __init__(
+ self,
+ parent_mode,
+ title,
+ width_req=0,
+ height_req=0,
+ align=ALIGN.DEFAULT,
+ close_cb=None,
+ encoding=None,
+ base_popup=None,
+ **kwargs
+ ):
+ """
+ Init a new popup. The default constructor will handle sizing and borders and the like.
+
+ Args:
+ parent_mode (basemode subclass): The mode which the popup will be drawn over
+ title (str): the title of the popup window
+ width_req (int or float): An integer value will be used as the width of the popup in character.
+ A float value will indicate the requested ratio in relation to the
+ parents screen width.
+ height_req (int or float): An integer value will be used as the height of the popup in character.
+ A float value will indicate the requested ratio in relation to the
+ parents screen height.
+ align (ALIGN): The alignment controlling the position of the popup on the screen.
+ close_cb (func): Function to be called when the popup is closed
+ encoding (str): The terminal encoding
+ base_popup (Popup): A popup used to inherit width_req and height_req if not explicitly specified.
+
+ Note: The parent mode is responsible for calling refresh on any popups it wants to show.
+ This should be called as the last thing in the parents refresh method.
+
+ The parent *must* also call read_input on the popup instead of/in addition to
+ running its own read_input code if it wants to have the popup handle user input.
+
+ Popups have two methods that must be implemented:
+
+ refresh(self) - draw the popup window to screen. this default mode simply draws a bordered window
+ with the supplied title to the screen
+
+ read_input(self) - handle user input to the popup.
+
+ """
+ InputKeyHandler.__init__(self)
+ self.parent = parent_mode
+ self.close_cb = close_cb
+ self.height_req = height_req
+ self.width_req = width_req
+ self.align = align
+ if base_popup:
+ if not self.width_req:
+ self.width_req = base_popup.width_req
+ if not self.height_req:
+ self.height_req = base_popup.height_req
+
+ hr, wr, posy, posx = self.calculate_size()
+ BaseWindow.__init__(self, title, wr, hr, encoding=None)
+ self.move_window(posy, posx)
+ self._closed = False
+
+ @overrides(BaseWindow)
+ def refresh(self):
+ self.screen.erase()
+ height = self.get_content_height()
+ self.ensure_content_pane_height(
+ height + self.border_off_north + self.border_off_south
+ )
+ BaseInputPane.render_inputs(self, focused=True)
+ BaseWindow.refresh(self)
+
+ def calculate_size(self):
+ if isinstance(self.height_req, float) and 0.0 < self.height_req <= 1.0:
+ height = int((self.parent.rows - 2) * self.height_req)
+ else:
+ height = self.height_req
+
+ if isinstance(self.width_req, float) and 0.0 < self.width_req <= 1.0:
+ width = int((self.parent.cols - 2) * self.width_req)
+ else:
+ width = self.width_req
+
+ # Height
+ if height == 0:
+ height = int(self.parent.rows / 2)
+ elif height == -1:
+ height = self.parent.rows - 2
+ elif height > self.parent.rows - 2:
+ height = self.parent.rows - 2
+
+ # Width
+ if width == 0:
+ width = int(self.parent.cols / 2)
+ elif width == -1:
+ width = self.parent.cols
+ elif width >= self.parent.cols:
+ width = self.parent.cols
+
+ if self.align in [ALIGN.TOP_CENTER, ALIGN.TOP_LEFT, ALIGN.TOP_RIGHT]:
+ begin_y = 1
+ elif self.align in [ALIGN.MIDDLE_CENTER, ALIGN.MIDDLE_LEFT, ALIGN.MIDDLE_RIGHT]:
+ begin_y = (self.parent.rows / 2) - (height / 2)
+ elif self.align in [ALIGN.BOTTOM_CENTER, ALIGN.BOTTOM_LEFT, ALIGN.BOTTOM_RIGHT]:
+ begin_y = self.parent.rows - height - 1
+
+ if self.align in [ALIGN.TOP_LEFT, ALIGN.MIDDLE_LEFT, ALIGN.BOTTOM_LEFT]:
+ begin_x = 0
+ elif self.align in [ALIGN.TOP_CENTER, ALIGN.MIDDLE_CENTER, ALIGN.BOTTOM_CENTER]:
+ begin_x = (self.parent.cols / 2) - (width / 2)
+ elif self.align in [ALIGN.TOP_RIGHT, ALIGN.MIDDLE_RIGHT, ALIGN.BOTTOM_RIGHT]:
+ begin_x = self.parent.cols - width
+
+ return height, width, begin_y, begin_x
+
+ def handle_resize(self):
+ height, width, begin_y, begin_x = self.calculate_size()
+ self.resize_window(height, width)
+ self.move_window(begin_y, begin_x)
+
+ def closed(self):
+ return self._closed
+
+ def close(self, *args, **kwargs):
+ self._closed = True
+ if kwargs.get('call_cb', True):
+ self._call_close_cb(*args)
+ self.panel.hide()
+
+ def _call_close_cb(self, *args, **kwargs):
+ if self.close_cb:
+ self.close_cb(*args, base_popup=self, **kwargs)
+
+ @overrides(InputKeyHandler)
+ def handle_read(self, c):
+ if c == util.KEY_ESC: # close on esc, no action
+ self.close(None)
+ return util.ReadState.READ
+ return util.ReadState.IGNORED
+
+
+class SelectablePopup(BaseInputPane, Popup):
+ """
+ A popup which will let the user select from some of the lines that are added.
+ """
+
+ def __init__(
+ self,
+ parent_mode,
+ title,
+ selection_cb,
+ close_cb=None,
+ input_cb=None,
+ allow_rearrange=False,
+ immediate_action=False,
+ **kwargs
+ ):
+ """
+ Args:
+ parent_mode (basemode subclass): The mode which the popup will be drawn over
+ title (str): the title of the popup window
+ selection_cb (func): Function to be called on selection
+ close_cb (func, optional): Function to be called when the popup is closed
+ input_cb (func, optional): Function to be called on every keyboard input
+ allow_rearrange (bool): Allow rearranging the selectable value
+ immediate_action (bool): If immediate_action_cb should be called for every action
+ kwargs (dict): Arguments passed to Popup
+
+ """
+ Popup.__init__(self, parent_mode, title, close_cb=close_cb, **kwargs)
+ kwargs.update(
+ {'allow_rearrange': allow_rearrange, 'immediate_action': immediate_action}
+ )
+ BaseInputPane.__init__(self, self, **kwargs)
+ self.selection_cb = selection_cb
+ self.input_cb = input_cb
+ self.hotkeys = {}
+ self.cb_arg = {}
+ self.cb_args = kwargs.get('cb_args', {})
+ if 'base_popup' not in self.cb_args:
+ self.cb_args['base_popup'] = self
+
+ @property
+ @overrides(BaseWindow)
+ def visible_content_pane_height(self):
+ """We want to use the Popup property"""
+ return Popup.visible_content_pane_height.fget(self)
+
+ def current_selection(self):
+ """Returns a tuple of (selected index, selected data)."""
+ return self.active_input
+
+ def set_selection(self, index):
+ """Set a selected index"""
+ self.active_input = min(index, len(self.inputs) - 1)
+
+ def add_line(
+ self,
+ name,
+ string,
+ use_underline=True,
+ cb_arg=None,
+ foreground=None,
+ selectable=True,
+ selected=False,
+ **kwargs
+ ):
+ hotkey = None
+ self.cb_arg[name] = cb_arg
+ if use_underline:
+ udx = string.find('_')
+ if udx >= 0:
+ hotkey = string[udx].lower()
+ string = (
+ string[:udx]
+ + '{!+underline!}'
+ + string[udx + 1]
+ + '{!-underline!}'
+ + string[udx + 2 :]
+ )
+
+ kwargs['selectable'] = selectable
+ if foreground:
+ kwargs['color_active'] = '%s,white' % foreground
+ kwargs['color'] = '%s,black' % foreground
+
+ field = self.add_text_field(name, string, **kwargs)
+ if hotkey:
+ self.hotkeys[hotkey] = field
+
+ if selected:
+ self.set_selection(len(self.inputs) - 1)
+
+ @overrides(Popup, BaseInputPane)
+ def handle_read(self, c):
+ if c in [curses.KEY_ENTER, util.KEY_ENTER2]:
+ for k, v in self.get_values().items():
+ if v['active']:
+ if self.selection_cb(k, **dict(self.cb_args, data=self.cb_arg)):
+ self.close(None)
+ return util.ReadState.READ
+ else:
+ ret = BaseInputPane.handle_read(self, c)
+ if ret != util.ReadState.IGNORED:
+ return ret
+ ret = Popup.handle_read(self, c)
+ if ret != util.ReadState.IGNORED:
+ if self.selection_cb(None):
+ self.close(None)
+ return ret
+
+ if self.input_cb:
+ self.input_cb(c)
+
+ self.refresh()
+ return util.ReadState.IGNORED
+
+ def add_divider(self, message=None, char='-', fill_width=True, color='white'):
+ if message is not None:
+ fill_width = False
+ else:
+ message = char
+ self.add_divider_field('', message, selectable=False, fill_width=fill_width)
+
+
+class MessagePopup(Popup, BaseInputPane):
+ """
+ Popup that just displays a message
+ """
+
+ def __init__(
+ self,
+ parent_mode,
+ title,
+ message,
+ align=ALIGN.DEFAULT,
+ height_req=0.75,
+ width_req=0.5,
+ **kwargs
+ ):
+ self.message = message
+ Popup.__init__(
+ self,
+ parent_mode,
+ title,
+ align=align,
+ height_req=height_req,
+ width_req=width_req,
+ )
+ BaseInputPane.__init__(self, self, immediate_action=True, **kwargs)
+ lns = format_utils.wrap_string(self.message, self.width - 3, 3, True)
+
+ if isinstance(self.height_req, float):
+ self.height_req = min(len(lns) + 2, int(parent_mode.rows * self.height_req))
+
+ self.handle_resize()
+ self.no_refresh = False
+ self.add_text_area('TextMessage', message)
+
+ @overrides(Popup, BaseInputPane)
+ def handle_read(self, c):
+ ret = BaseInputPane.handle_read(self, c)
+ if ret != util.ReadState.IGNORED:
+ return ret
+ return Popup.handle_read(self, c)
+
+
+class InputPopup(Popup, BaseInputPane):
+ def __init__(self, parent_mode, title, **kwargs):
+ Popup.__init__(self, parent_mode, title, **kwargs)
+ BaseInputPane.__init__(self, self, **kwargs)
+ # We need to replicate some things in order to wrap our inputs
+ self.encoding = parent_mode.encoding
+
+ def _handle_callback(self, state_changed=True, close=True):
+ self._call_close_cb(self.get_values(), state_changed=state_changed, close=close)
+
+ @overrides(BaseInputPane)
+ def immediate_action_cb(self, state_changed=True):
+ self._handle_callback(state_changed=state_changed, close=False)
+
+ @overrides(Popup, BaseInputPane)
+ def handle_read(self, c):
+ ret = BaseInputPane.handle_read(self, c)
+ if ret != util.ReadState.IGNORED:
+ return ret
+
+ if c in [curses.KEY_ENTER, util.KEY_ENTER2]:
+ if self.close_cb:
+ self._handle_callback(state_changed=False, close=False)
+ util.safe_curs_set(util.Curser.INVISIBLE)
+ return util.ReadState.READ
+ elif c == util.KEY_ESC: # close on esc, no action
+ self._handle_callback(state_changed=False, close=True)
+ self.close(None)
+ return util.ReadState.READ
+
+ self.refresh()
+ return util.ReadState.READ
diff --git a/deluge/ui/console/widgets/sidebar.py b/deluge/ui/console/widgets/sidebar.py
new file mode 100644
index 0000000..4015a13
--- /dev/null
+++ b/deluge/ui/console/widgets/sidebar.py
@@ -0,0 +1,79 @@
+#
+# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import curses
+import logging
+
+from deluge.decorators import overrides
+from deluge.ui.console.modes.basemode import add_string
+from deluge.ui.console.utils import curses_util as util
+from deluge.ui.console.widgets import BaseInputPane, BaseWindow
+
+log = logging.getLogger(__name__)
+
+
+class Sidebar(BaseInputPane, BaseWindow):
+ """Base sidebar widget that handles choosing a selected widget
+ with Up/Down arrows.
+
+ Shows the different states of the torrents and allows to filter the
+ torrents based on state.
+
+ """
+
+ def __init__(
+ self, torrentlist, width, height, title=None, allow_resize=False, **kwargs
+ ):
+ BaseWindow.__init__(self, title, width, height, posy=1)
+ BaseInputPane.__init__(self, self, immediate_action=True, **kwargs)
+ self.parent = torrentlist
+ self.focused = False
+ self.allow_resize = allow_resize
+
+ def set_focused(self, focused):
+ self.focused = focused
+
+ def has_focus(self):
+ return self.focused and not self.hidden()
+
+ @overrides(BaseInputPane)
+ def handle_read(self, c):
+ if c == curses.KEY_UP:
+ self.move_active_up(1)
+ elif c == curses.KEY_DOWN:
+ self.move_active_down(1)
+ elif self.allow_resize and c in [ord('+'), ord('-')]:
+ width = self.visible_content_pane_width + (1 if c == ord('+') else -1)
+ self.on_resize(width)
+ else:
+ return BaseInputPane.handle_read(self, c)
+ return util.ReadState.READ
+
+ def on_resize(self, width):
+ self.resize_window(self.height, width)
+
+ @overrides(BaseWindow)
+ def refresh(self):
+ height = self.get_content_height()
+ self.ensure_content_pane_height(
+ height + self.border_off_north + self.border_off_south
+ )
+ BaseInputPane.render_inputs(self, focused=self.has_focus())
+ BaseWindow.refresh(self)
+
+ def _refresh(self):
+ self.screen.erase()
+ height = self.get_content_height()
+ self.ensure_content_pane_height(
+ height + self.border_off_north + self.border_off_south
+ )
+ BaseInputPane.render_inputs(self, focused=True)
+ BaseWindow.refresh(self)
+
+ def add_string(self, row, string, scr=None, **kwargs):
+ add_string(row, string, self.screen, self.parent.encoding, **kwargs)
diff --git a/deluge/ui/console/widgets/statusbars.py b/deluge/ui/console/widgets/statusbars.py
new file mode 100644
index 0000000..1b91737
--- /dev/null
+++ b/deluge/ui/console/widgets/statusbars.py
@@ -0,0 +1,124 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import deluge.common
+import deluge.component as component
+from deluge.ui.client import client
+
+DEFAULT_DAEMON_PORT = 58846
+
+
+class StatusBars(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'StatusBars', 2, depend=['CoreConfig'])
+ self.config = component.get('CoreConfig')
+
+ # Hold some values we get from the core
+ self.connections = 0
+ self.download = ''
+ self.upload = ''
+ self.dht = 0
+ self.external_ip = ''
+
+ # Default values
+ self.topbar = '{!status!}Deluge %s Console - ' % deluge.common.get_version()
+ self.bottombar = '{!status!}C: %s' % self.connections
+
+ def start(self):
+ self.update()
+
+ def update(self):
+ def on_get_session_status(status):
+ self.upload = deluge.common.fsize(status['payload_upload_rate'])
+ self.download = deluge.common.fsize(status['payload_download_rate'])
+ self.connections = status['peer.num_peers_connected']
+ if 'dht_nodes' in status:
+ self.dht = status['dht.dht_nodes']
+
+ self.update_statusbars()
+
+ def on_get_external_ip(external_ip):
+ self.external_ip = external_ip
+
+ keys = [
+ 'peer.num_peers_connected',
+ 'payload_upload_rate',
+ 'payload_download_rate',
+ ]
+
+ if self.config['dht']:
+ keys.append('dht.dht_nodes')
+
+ client.core.get_session_status(keys).addCallback(on_get_session_status)
+ client.core.get_external_ip().addCallback(on_get_external_ip)
+
+ def update_statusbars(self):
+ # Update the topbar string
+ self.topbar = '{!status!}Deluge %s Console - ' % deluge.common.get_version()
+
+ if client.connected():
+ info = client.connection_info()
+ connection_info = ''
+
+ # Client name
+ if info[2] == 'localclient':
+ connection_info += '{!white,blue!}%s'
+ else:
+ connection_info += '{!green,blue,bold!}%s'
+
+ # Hostname
+ if info[0] == '127.0.0.1':
+ connection_info += '{!white,blue,bold!}@{!white,blue!}%s'
+ else:
+ connection_info += '{!white,blue,bold!}@{!red,blue,bold!}%s'
+
+ # Port
+ if info[1] == DEFAULT_DAEMON_PORT:
+ connection_info += '{!white,blue!}:%s'
+ else:
+ connection_info += '{!status!}:%s'
+
+ # Change color back to normal, just in case
+ connection_info += '{!status!}'
+
+ self.topbar += connection_info % (info[2], info[0], info[1])
+ else:
+ self.topbar += 'Not Connected'
+
+ # Update the bottombar string
+ self.bottombar = '{!status!}C: {!white,blue!}%s{!status!}' % self.connections
+
+ if self.config['max_connections_global'] > -1:
+ self.bottombar += ' (%s)' % self.config['max_connections_global']
+
+ if self.download != '0.0 KiB':
+ self.bottombar += ' D: {!magenta,blue,bold!}%s{!status!}' % self.download
+ else:
+ self.bottombar += ' D: {!white,blue!}%s{!status!}' % self.download
+
+ if self.config['max_download_speed'] > -1:
+ self.bottombar += (
+ ' (%s ' % self.config['max_download_speed'] + _('KiB/s') + ')'
+ )
+
+ if self.upload != '0.0 KiB':
+ self.bottombar += ' U: {!green,blue,bold!}%s{!status!}' % self.upload
+ else:
+ self.bottombar += ' U: {!white,blue!}%s{!status!}' % self.upload
+
+ if self.config['max_upload_speed'] > -1:
+ self.bottombar += (
+ ' (%s ' % self.config['max_upload_speed'] + _('KiB/s') + ')'
+ )
+
+ if self.config['dht']:
+ self.bottombar += ' ' + _('DHT') + ': {!white,blue!}%s{!status!}' % self.dht
+
+ self.bottombar += ' ' + _('IP {!white,blue!}%s{!status!}') % (
+ self.external_ip if self.external_ip else _('n/a')
+ )
diff --git a/deluge/ui/console/widgets/window.py b/deluge/ui/console/widgets/window.py
new file mode 100644
index 0000000..77aff88
--- /dev/null
+++ b/deluge/ui/console/widgets/window.py
@@ -0,0 +1,182 @@
+#
+# Copyright (C) 2011 Nick Lanham <nick@afternight.org>
+# Copyright (C) 2008-2009 Ido Abramovich <ido.deluge@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from deluge.ui.console.modes.basemode import add_string, mkpad, mkpanel
+from deluge.ui.console.utils.colors import get_color_pair
+
+try:
+ import curses
+except ImportError:
+ pass
+
+log = logging.getLogger(__name__)
+
+
+class BaseWindow:
+ """
+ BaseWindow creates a curses screen to be used for showing panels and popup dialogs
+ """
+
+ def __init__(self, title, width, height, posy=0, posx=0, encoding=None):
+ """
+ Args:
+ title (str): The title of the panel
+ width (int): Width of the panel
+ height (int): Height of the panel
+ posy (int): Position of the panel's first row relative to the terminal screen
+ posx (int): Position of the panel's first column relative to the terminal screen
+ encoding (str): Terminal encoding
+ """
+ self.title = title
+ self.posy, self.posx = posy, posx
+ if encoding is None:
+ from deluge import component
+
+ encoding = component.get('ConsoleUI').encoding
+ self.encoding = encoding
+
+ self.panel = mkpanel(curses.COLOR_GREEN, height, width, posy, posx)
+ self.outer_screen = self.panel.window()
+ self.outer_screen.bkgdset(0, curses.COLOR_RED)
+ by, bx = self.outer_screen.getbegyx()
+ self.screen = mkpad(get_color_pair('white', 'black'), height - 1, width - 2)
+ self._height, self._width = self.outer_screen.getmaxyx()
+
+ @property
+ def height(self):
+ return self._height
+
+ @property
+ def width(self):
+ return self._width
+
+ def add_string(self, row, string, scr=None, **kwargs):
+ scr = scr if scr else self.screen
+ add_string(row, string, scr, self.encoding, **kwargs)
+
+ def hide(self):
+ self.panel.hide()
+
+ def show(self):
+ self.panel.show()
+
+ def hidden(self):
+ return self.panel.hidden()
+
+ def set_title(self, title):
+ self.title = title
+
+ @property
+ def visible_content_pane_size(self):
+ y, x = self.outer_screen.getmaxyx()
+ return (y - 2, x - 2)
+
+ @property
+ def visible_content_pane_height(self):
+ y, x = self.visible_content_pane_size
+ return y
+
+ @property
+ def visible_content_pane_width(self):
+ y, x = self.visible_content_pane_size
+ return x
+
+ def getmaxyx(self):
+ return self.screen.getmaxyx()
+
+ def resize_window(self, rows, cols):
+ self.outer_screen.resize(rows, cols)
+ self.screen.resize(rows - 2, cols - 2)
+ self._height, self._width = rows, cols
+
+ def move_window(self, posy, posx):
+ posy = int(posy)
+ posx = int(posx)
+ self.outer_screen.mvwin(posy, posx)
+ self.posy = posy
+ self.posx = posx
+ self._height, self._width = self.screen.getmaxyx()
+
+ def ensure_content_pane_height(self, height):
+ max_y, max_x = self.screen.getmaxyx()
+ if max_y < height:
+ self.screen.resize(height, max_x)
+
+ def draw_scroll_indicator(self, screen):
+ content_height = self.get_content_height()
+ if content_height <= self.visible_content_pane_height:
+ return
+
+ percent_scroll = float(self.lineoff) / (
+ content_height - self.visible_content_pane_height
+ )
+ indicator_row = int(self.visible_content_pane_height * percent_scroll) + 1
+
+ # Never greater than height
+ indicator_row = min(indicator_row, self.visible_content_pane_height)
+ indicator_col = self.width + 1
+
+ add_string(
+ indicator_row,
+ '{!red,black,bold!}#',
+ screen,
+ self.encoding,
+ col=indicator_col,
+ pad=False,
+ trim=False,
+ )
+
+ def refresh(self):
+ height, width = self.visible_content_pane_size
+ self.outer_screen.erase()
+ self.outer_screen.border(0, 0, 0, 0)
+
+ if self.title:
+ toff = max(1, (self.width // 2) - (len(self.title) // 2))
+ self.add_string(
+ 0,
+ '{!white,black,bold!}%s' % self.title,
+ scr=self.outer_screen,
+ col=toff,
+ pad=False,
+ )
+
+ self.draw_scroll_indicator(self.outer_screen)
+ self.outer_screen.noutrefresh()
+
+ try:
+ # pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol
+ # the p arguments refer to the upper left corner of the pad region to be displayed and
+ # the s arguments define a clipping box on the screen within which the pad region is to be displayed.
+ pminrow = self.lineoff
+ pmincol = 0
+ sminrow = self.posy + 1
+ smincol = self.posx + 1
+ smaxrow = height + self.posy
+ smaxcol = width + self.posx
+ self.screen.noutrefresh(
+ pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol
+ )
+ except curses.error as ex:
+ import traceback
+
+ log.warning(
+ 'Error on screen.noutrefresh(%s, %s, %s, %s, %s, %s) Error: %s\nStack: %s',
+ pminrow,
+ pmincol,
+ sminrow,
+ smincol,
+ smaxrow,
+ smaxcol,
+ ex,
+ ''.join(traceback.format_stack()),
+ )
diff --git a/deluge/ui/coreconfig.py b/deluge/ui/coreconfig.py
new file mode 100644
index 0000000..1e2927b
--- /dev/null
+++ b/deluge/ui/coreconfig.py
@@ -0,0 +1,51 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.ui.client import client
+
+log = logging.getLogger(__name__)
+
+
+class CoreConfig(component.Component):
+ def __init__(self):
+ log.debug('CoreConfig init..')
+ component.Component.__init__(self, 'CoreConfig')
+ self.config = {}
+
+ def on_configvaluechanged_event(key, value):
+ self.config[key] = value
+
+ client.register_event_handler(
+ 'ConfigValueChangedEvent', on_configvaluechanged_event
+ )
+
+ def start(self):
+ def on_get_config(config):
+ self.config = config
+ return config
+
+ return client.core.get_config().addCallback(on_get_config)
+
+ def stop(self):
+ self.config = {}
+
+ def __contains__(self, key):
+ return key in self.config
+
+ def __getitem__(self, key):
+ return self.config[key]
+
+ def __setitem__(self, key, value):
+ client.core.set_config({key: value})
+
+ def __getattr__(self, attr):
+ # We treat this directly interacting with the dictionary
+ return getattr(self.config, attr)
diff --git a/deluge/ui/countries.py b/deluge/ui/countries.py
new file mode 100644
index 0000000..eb94df6
--- /dev/null
+++ b/deluge/ui/countries.py
@@ -0,0 +1,253 @@
+#
+# This file is public domain.
+#
+
+# ISO 3166-1 country names and codes
+COUNTRIES = {
+ 'AF': _('Afghanistan'),
+ 'AX': _('Aland Islands'),
+ 'AL': _('Albania'),
+ 'DZ': _('Algeria'),
+ 'AS': _('American Samoa'),
+ 'AD': _('Andorra'),
+ 'AO': _('Angola'),
+ 'AI': _('Anguilla'),
+ 'AQ': _('Antarctica'),
+ 'AG': _('Antigua and Barbuda'),
+ 'AR': _('Argentina'),
+ 'AM': _('Armenia'),
+ 'AW': _('Aruba'),
+ 'AU': _('Australia'),
+ 'AT': _('Austria'),
+ 'AZ': _('Azerbaijan'),
+ 'BS': _('Bahamas'),
+ 'BH': _('Bahrain'),
+ 'BD': _('Bangladesh'),
+ 'BB': _('Barbados'),
+ 'BY': _('Belarus'),
+ 'BE': _('Belgium'),
+ 'BZ': _('Belize'),
+ 'BJ': _('Benin'),
+ 'BM': _('Bermuda'),
+ 'BT': _('Bhutan'),
+ 'BO': _('Bolivia'),
+ 'BA': _('Bosnia and Herzegovina'),
+ 'BW': _('Botswana'),
+ 'BV': _('Bouvet Island'),
+ 'BR': _('Brazil'),
+ 'IO': _('British Indian Ocean Territory'),
+ 'BN': _('Brunei Darussalam'),
+ 'BG': _('Bulgaria'),
+ 'BF': _('Burkina Faso'),
+ 'BI': _('Burundi'),
+ 'KH': _('Cambodia'),
+ 'CM': _('Cameroon'),
+ 'CA': _('Canada'),
+ 'CV': _('Cape Verde'),
+ 'KY': _('Cayman Islands'),
+ 'CF': _('Central African Republic'),
+ 'TD': _('Chad'),
+ 'CL': _('Chile'),
+ 'CN': _('China'),
+ 'CX': _('Christmas Island'),
+ 'CC': _('Cocos (Keeling) Islands'),
+ 'CO': _('Colombia'),
+ 'KM': _('Comoros'),
+ 'CG': _('Congo'),
+ 'CD': _('Congo, The Democratic Republic of the'),
+ 'CK': _('Cook Islands'),
+ 'CR': _('Costa Rica'),
+ 'CI': _("Cote d'Ivoire"),
+ 'HR': _('Croatia'),
+ 'CU': _('Cuba'),
+ 'CY': _('Cyprus'),
+ 'CZ': _('Czech Republic'),
+ 'DK': _('Denmark'),
+ 'DJ': _('Djibouti'),
+ 'DM': _('Dominica'),
+ 'DO': _('Dominican Republic'),
+ 'EC': _('Ecuador'),
+ 'EG': _('Egypt'),
+ 'SV': _('El Salvador'),
+ 'GQ': _('Equatorial Guinea'),
+ 'ER': _('Eritrea'),
+ 'EE': _('Estonia'),
+ 'ET': _('Ethiopia'),
+ 'FK': _('Falkland Islands (Malvinas)'),
+ 'FO': _('Faroe Islands'),
+ 'FJ': _('Fiji'),
+ 'FI': _('Finland'),
+ 'FR': _('France'),
+ 'GF': _('French Guiana'),
+ 'PF': _('French Polynesia'),
+ 'TF': _('French Southern Territories'),
+ 'GA': _('Gabon'),
+ 'GM': _('Gambia'),
+ 'GE': _('Georgia'),
+ 'DE': _('Germany'),
+ 'GH': _('Ghana'),
+ 'GI': _('Gibraltar'),
+ 'GR': _('Greece'),
+ 'GL': _('Greenland'),
+ 'GD': _('Grenada'),
+ 'GP': _('Guadeloupe'),
+ 'GU': _('Guam'),
+ 'GT': _('Guatemala'),
+ 'GG': _('Guernsey'),
+ 'GN': _('Guinea'),
+ 'GW': _('Guinea-Bissau'),
+ 'GY': _('Guyana'),
+ 'HT': _('Haiti'),
+ 'HM': _('Heard Island and McDonald Islands'),
+ 'VA': _('Holy See (Vatican City State)'),
+ 'HN': _('Honduras'),
+ 'HK': _('Hong Kong'),
+ 'HU': _('Hungary'),
+ 'IS': _('Iceland'),
+ 'IN': _('India'),
+ 'ID': _('Indonesia'),
+ 'IR': _('Iran, Islamic Republic of'),
+ 'IQ': _('Iraq'),
+ 'IE': _('Ireland'),
+ 'IM': _('Isle of Man'),
+ 'IL': _('Israel'),
+ 'IT': _('Italy'),
+ 'JM': _('Jamaica'),
+ 'JP': _('Japan'),
+ 'JE': _('Jersey'),
+ 'JO': _('Jordan'),
+ 'KZ': _('Kazakhstan'),
+ 'KE': _('Kenya'),
+ 'KI': _('Kiribati'),
+ 'KP': _("Korea, Democratic People's Republic of"),
+ 'KR': _('Korea, Republic of'),
+ 'KW': _('Kuwait'),
+ 'KG': _('Kyrgyzstan'),
+ 'LA': _("Lao People's Democratic Republic"),
+ 'LV': _('Latvia'),
+ 'LB': _('Lebanon'),
+ 'LS': _('Lesotho'),
+ 'LR': _('Liberia'),
+ 'LY': _('Libyan Arab Jamahiriya'),
+ 'LI': _('Liechtenstein'),
+ 'LT': _('Lithuania'),
+ 'LU': _('Luxembourg'),
+ 'MO': _('Macao'),
+ 'MK': _('Macedonia, The Former Yugoslav Republic of'),
+ 'MG': _('Madagascar'),
+ 'MW': _('Malawi'),
+ 'MY': _('Malaysia'),
+ 'MV': _('Maldives'),
+ 'ML': _('Mali'),
+ 'MT': _('Malta'),
+ 'MH': _('Marshall Islands'),
+ 'MQ': _('Martinique'),
+ 'MR': _('Mauritania'),
+ 'MU': _('Mauritius'),
+ 'YT': _('Mayotte'),
+ 'MX': _('Mexico'),
+ 'FM': _('Micronesia, Federated States of'),
+ 'MD': _('Moldova'),
+ 'MC': _('Monaco'),
+ 'MN': _('Mongolia'),
+ 'ME': _('Montenegro'),
+ 'MS': _('Montserrat'),
+ 'MA': _('Morocco'),
+ 'MZ': _('Mozambique'),
+ 'MM': _('Myanmar'),
+ 'NA': _('Namibia'),
+ 'NR': _('Nauru'),
+ 'NP': _('Nepal'),
+ 'NL': _('Netherlands'),
+ 'AN': _('Netherlands Antilles'),
+ 'NC': _('New Caledonia'),
+ 'NZ': _('New Zealand'),
+ 'NI': _('Nicaragua'),
+ 'NE': _('Niger'),
+ 'NG': _('Nigeria'),
+ 'NU': _('Niue'),
+ 'NF': _('Norfolk Island'),
+ 'MP': _('Northern Mariana Islands'),
+ 'NO': _('Norway'),
+ 'OM': _('Oman'),
+ 'PK': _('Pakistan'),
+ 'PW': _('Palau'),
+ 'PS': _('Palestinian Territory, Occupied'),
+ 'PA': _('Panama'),
+ 'PG': _('Papua New Guinea'),
+ 'PY': _('Paraguay'),
+ 'PE': _('Peru'),
+ 'PH': _('Philippines'),
+ 'PN': _('Pitcairn'),
+ 'PL': _('Poland'),
+ 'PT': _('Portugal'),
+ 'PR': _('Puerto Rico'),
+ 'QA': _('Qatar'),
+ 'RE': _('Reunion'),
+ 'RO': _('Romania'),
+ 'RU': _('Russian Federation'),
+ 'RW': _('Rwanda'),
+ 'BL': _('Saint Barthelemy'),
+ 'SH': _('Saint Helena'),
+ 'KN': _('Saint Kitts and Nevis'),
+ 'LC': _('Saint Lucia'),
+ 'MF': _('Saint Martin'),
+ 'PM': _('Saint Pierre and Miquelon'),
+ 'VC': _('Saint Vincent and the Grenadines'),
+ 'WS': _('Samoa'),
+ 'SM': _('San Marino'),
+ 'ST': _('Sao Tome and Principe'),
+ 'SA': _('Saudi Arabia'),
+ 'SN': _('Senegal'),
+ 'RS': _('Serbia'),
+ 'SC': _('Seychelles'),
+ 'SL': _('Sierra Leone'),
+ 'SG': _('Singapore'),
+ 'SK': _('Slovakia'),
+ 'SI': _('Slovenia'),
+ 'SB': _('Solomon Islands'),
+ 'SO': _('Somalia'),
+ 'ZA': _('South Africa'),
+ 'GS': _('South Georgia and the South Sandwich Islands'),
+ 'ES': _('Spain'),
+ 'LK': _('Sri Lanka'),
+ 'SD': _('Sudan'),
+ 'SR': _('Suriname'),
+ 'SJ': _('Svalbard and Jan Mayen'),
+ 'SZ': _('Swaziland'),
+ 'SE': _('Sweden'),
+ 'CH': _('Switzerland'),
+ 'SY': _('Syrian Arab Republic'),
+ 'TW': _('Taiwan'),
+ 'TJ': _('Tajikistan'),
+ 'TZ': _('Tanzania, United Republic of'),
+ 'TH': _('Thailand'),
+ 'TL': _('Timor-Leste'),
+ 'TG': _('Togo'),
+ 'TK': _('Tokelau'),
+ 'TO': _('Tonga'),
+ 'TT': _('Trinidad and Tobago'),
+ 'TN': _('Tunisia'),
+ 'TR': _('Turkey'),
+ 'TM': _('Turkmenistan'),
+ 'TC': _('Turks and Caicos Islands'),
+ 'TV': _('Tuvalu'),
+ 'UG': _('Uganda'),
+ 'UA': _('Ukraine'),
+ 'AE': _('United Arab Emirates'),
+ 'GB': _('United Kingdom'),
+ 'US': _('United States'),
+ 'UM': _('United States Minor Outlying Islands'),
+ 'UY': _('Uruguay'),
+ 'UZ': _('Uzbekistan'),
+ 'VU': _('Vanuatu'),
+ 'VE': _('Venezuela'),
+ 'VN': _('Viet Nam'),
+ 'VG': _('Virgin Islands, British'),
+ 'VI': _('Virgin Islands, U.S.'),
+ 'WF': _('Wallis and Futuna'),
+ 'EH': _('Western Sahara'),
+ 'YE': _('Yemen'),
+ 'ZM': _('Zambia'),
+ 'ZW': _('Zimbabwe'),
+}
diff --git a/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png b/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png
new file mode 100644
index 0000000..32aa26a
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png
new file mode 100644
index 0000000..1291dfa
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png b/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png
new file mode 100644
index 0000000..1291dfa
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png b/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png
new file mode 100644
index 0000000..93c6feb
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png
new file mode 100644
index 0000000..95b13e3
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png b/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png
new file mode 100644
index 0000000..95b13e3
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png
new file mode 100644
index 0000000..96ab753
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png b/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png
new file mode 100644
index 0000000..96ab753
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png b/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png
new file mode 100644
index 0000000..4ba3bb9
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png b/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png
new file mode 100644
index 0000000..916f136
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png b/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png
new file mode 100644
index 0000000..92d35fa
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png b/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png
new file mode 100644
index 0000000..95592bb
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png b/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png
new file mode 100644
index 0000000..464dd69
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png b/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png
new file mode 100644
index 0000000..fb87321
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png b/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png
new file mode 100644
index 0000000..f313ed3
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png b/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png
new file mode 100644
index 0000000..9b8d3ab
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/scalable/apps/deluge.svg b/deluge/ui/data/icons/hicolor/scalable/apps/deluge.svg
new file mode 100644
index 0000000..4f29f73
--- /dev/null
+++ b/deluge/ui/data/icons/hicolor/scalable/apps/deluge.svg
@@ -0,0 +1,610 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
+ sodipodi:docname="deluge.svg"
+ inkscape:export-xdpi="32"
+ inkscape:export-ydpi="32"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/Desktop/test1b.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile2" />
+ <linearGradient
+ id="linearGradient4345"
+ inkscape:collect="always">
+ <stop
+ id="stop4347"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4349"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4345"
+ id="radialGradient5878"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.56833945,-0.14774444,0.12240592,0.69984003,9.8157812,6.7018745)"
+ cx="11.707551"
+ cy="36.527763"
+ fx="11.707551"
+ fy="36.527763"
+ r="14.33681" />
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k4="-7.2400000000000002"
+ k3="5.5899999999999999"
+ k2="4.9299999999999997"
+ k1="8.1400000000000006" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4977"
+ id="radialGradient4375"
+ cx="19.015932"
+ cy="19.611181"
+ fx="19.015932"
+ fy="19.611181"
+ r="15.627373"
+ gradientTransform="matrix(-0.21582873,1.1173231,-1.0803619,-0.20155681,42.177326,-6.1234)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.65098039"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.92"
+ inkscape:cx="3.3184766"
+ inkscape:cy="26.850801"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1981"
+ inkscape:window-height="1097"
+ inkscape:window-x="67"
+ inkscape:window-y="27"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true"
+ inkscape:pagecheckerboard="false"
+ showborder="true"
+ borderlayer="false"
+ scale-x="2">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="24,41.875"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="34.626135,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid4297" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="fill:#4c90e8;fill-opacity:1;fill-rule:evenodd;stroke:#094491;stroke-width:3.19036889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24.00916,2.8848679 35.921225,21.107868 c 7.631218,11.674181 -0.393962,24.296949 -11.919555,24.296949 -11.525593,0 -19.5637412,-12.627213 -11.925606,-24.293557 z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="wave fill"
+ style="display:inline">
+ <path
+ style="display:inline;fill:#094491;fill-opacity:1;fill-rule:evenodd;stroke-width:0.43658349;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 28.249173,24.076764 c -6.513399,-2.656088 -9.930764,4.129513 -8.844266,7.299777 2.363892,6.897492 11.278562,8.624272 17.861607,-2.864877 0,0 0.07021,1.386537 0.139797,2.046235 0.884013,8.376987 -6.162376,13.70953 -13.302295,13.605305 -7.139921,-0.104225 -9.320813,-2.876749 -11.424685,-6.068739 -3.4133569,-5.178732 -2.561398,-13.615464 2.027677,-17.561337 5.237731,-4.328395 11.004287,-2.017675 13.542165,3.543636 z"
+ id="path2969"
+ sodipodi:nodetypes="cscszscc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="display:none"
+ inkscape:label="wave fill light"
+ id="g4327"
+ inkscape:groupmode="layer">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscszscc"
+ id="path4329"
+ d="m 24.811452,24.996951 c -6.049549,-2.467385 -7.648816,3.683738 -6.639688,6.628769 2.195546,6.407462 11.948502,7.605174 18.062738,-3.067723 0,0 0.11598,1.28803 0.180639,1.900859 0.82106,7.781844 -5.621926,12.735535 -12.253379,12.638715 -6.631454,-0.09682 -8.657036,-2.672368 -10.611083,-5.637583 -3.170275,-4.810809 -2.429788,-11.327408 1.78168,-14.840553 4.864733,-3.959831 8.798281,-0.09585 9.479093,2.377516 z"
+ style="display:inline;fill:#99c3f9;fill-opacity:1;fill-rule:evenodd;stroke-width:0.40552941;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer6"
+ inkscape:label="wave stroke 1.3px and fill "
+ style="display:none">
+ <path
+ style="display:inline;fill:#99c3f9;fill-opacity:1;fill-rule:evenodd;stroke:#094491 icc-color(sRGB, 0.18046845, 0.27837034, 0.41960784);stroke-width:1.33399999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 23.761543,24.179576 c -6.481311,-1.72424 -6.932125,6.183803 -5.453851,8.969604 2.408248,4.538333 12.206251,5.377175 17.706883,-3.282742 0,0 0.07651,2.193563 0.02062,2.77892 -0.534334,5.596549 -6.848986,9.789262 -11.999526,9.621298 -5.243605,-0.170999 -8.282469,-2.549917 -10.154056,-5.379263 -3.036492,-4.590373 -2.048612,-10.811985 1.554101,-13.80496 4.248899,-3.646516 7.44994,-0.562347 8.325827,1.097143 z"
+ id="path2969-6"
+ sodipodi:nodetypes="cscssscc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="display:none"
+ inkscape:label="wave stroke 2px and fill "
+ id="g4217"
+ inkscape:groupmode="layer">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscssscc"
+ id="path4219"
+ d="m 23.507553,23.925586 c -6.495438,-1.064032 -6.790118,6.421446 -5.149063,9.579179 2.304561,4.434459 10.903063,6.282759 17.3005,-2.825561 0,0 -0.02509,1.990372 -0.08098,2.575729 -0.534334,5.596549 -6.391805,8.925697 -11.542345,8.757733 -5.243605,-0.170999 -8.247979,-2.119778 -10.001662,-5.023677 -2.772156,-4.590373 -2.467304,-9.592836 0.487345,-12.585811 3.100966,-3.879425 7.831125,-2.714919 8.986201,-0.477592 z"
+ style="display:inline;fill:#99c3f9;fill-opacity:1;fill-rule:evenodd;stroke:#094491 icc-color(sRGB, 0.18046845, 0.27837034, 0.41960784);stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="gradient inner wave "
+ style="display:none">
+ <path
+ style="fill:url(#radialGradient5878);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 23.55546,23.805666 c -6.490966,-1.345852 -7.700279,4.84717 -6.759909,8.059555 1.100923,3.760845 4.033145,7.507508 11.754513,5.50458 -3.268904,5.846892 -11.255492,4.570412 -13.940353,0.387138 -2.563055,-3.993493 -2.992402,-9.05746 -1.115519,-11.776277 4.049097,-6.655711 9.485026,-4.029293 10.061268,-2.174996 z"
+ id="path3868"
+ sodipodi:nodetypes="cscscc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="display:inline"
+ inkscape:label="solid inner wavelet small"
+ id="g4476"
+ inkscape:groupmode="layer">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscszc"
+ id="path4478"
+ d="m 24.158349,21.568695 c -7.295351,0.177796 -8.680227,8.584045 -6.659444,12.185022 2.809336,5.006167 7.071815,5.968946 12.90485,4.121032 -3.330593,3.620896 -10.166138,4.579185 -14.809086,-0.592946 -3.194749,-3.558875 -3.473998,-8.525976 -1.256883,-12.674161 2.217115,-4.148189 6.638012,-5.301549 9.820563,-3.038947 z"
+ style="fill:#83b8f9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.07657671" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="g4486"
+ inkscape:label="solid inner wavelet larger"
+ style="display:none">
+ <path
+ style="fill:#99c3f9;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 21.55277,22.974939 c -5.188765,1.005551 -6.173294,6.973638 -4.694095,10.155871 2.191227,4.714034 8.449957,8.07696 17.664862,0.691234 -5.828901,10.827975 -14.873199,7.043001 -17.313798,4.977307 -1.97159,-1.66873 -4.164846,-4.855384 -4.11832,-8.341257 0.09522,-7.134172 6.604293,-9.266569 8.461351,-7.483155 z"
+ id="path4488"
+ sodipodi:nodetypes="cscssc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Finish"
+ style="display:none"
+ sodipodi:insensitive="true">
+ <path
+ style="display:inline;opacity:0.68800001;fill:url(#radialGradient4375);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.01508224;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 23.956644,1.939572 -11.98159,18.384686 c -3.9618093,5.166305 -3.6931007,11.439356 -2.4054307,15.8855 5.3079527,10.817522 14.5668877,9.659123 14.5668877,9.659123 0,0 6.868403,-0.005 11.475831,-5.120874 2.283123,-2.535051 5.325726,-9.801674 2.662706,-16.234991 -0.49634,-1.028711 -3.75284,-6.551522 -4.429455,-7.554788 z"
+ id="path4279"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccsccc" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/active.svg b/deluge/ui/data/pixmaps/active.svg
new file mode 100644
index 0000000..2e6116a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/active.svg
@@ -0,0 +1,612 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="active.svg"
+ inkscape:export-xdpi="30"
+ inkscape:export-ydpi="30"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/projects/deluge-logo/deluge_download16svg.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile4484" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k1="8.1400000000000006"
+ k2="4.9299999999999997"
+ k3="5.5899999999999999"
+ k4="-7.2400000000000002" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ <filter
+ id="filter6406-6"
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000001"
+ x="-0.050000001">
+ <feFlood
+ id="feFlood6408-0"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410-6"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur6412-2"
+ stdDeviation="0.20000000000000001"
+ result="blur" />
+ <feOffset
+ id="feOffset6414-6"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416-1"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.17254902"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.627417"
+ inkscape:cx="23.537703"
+ inkscape:cy="24.61952"
+ inkscape:current-layer="layer5"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="23.9375,24.5625"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ <sodipodi:guide
+ position="21.25,21"
+ orientation="0,1"
+ id="guide4229" />
+ <sodipodi:guide
+ position="35.84375,19.53125"
+ orientation="0,1"
+ id="guide5116" />
+ <sodipodi:guide
+ position="30.21875,22.46875"
+ orientation="0,1"
+ id="guide5118" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid4217" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="base droplet"
+ inkscape:groupmode="layer"
+ style="display:none">
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#129b00;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter6406)"
+ d="M 23.295622,2.4822833 35.490217,21.297229 C 43.30243,33.350632 35.08691,46.383433 23.287956,46.383433 11.489002,46.383433 3.2602089,33.346045 11.079504,21.30073 Z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="base droplet copy 1"
+ style="display:none" />
+ <g
+ style="display:inline"
+ inkscape:groupmode="layer"
+ inkscape:label="base droplet copy"
+ id="g4225">
+ <path
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="csscc"
+ id="path4227"
+ d="m 38.395387,28.809989 c 1.339184,9.392872 -5.759479,17.573444 -15.107431,17.573444 -5.899477,0 -10.906414,-3.259347 -13.4610694,-8.024358 C 8.3379994,35.581962 7.7795043,32.31798 8.1679076,28.840613 Z"
+ style="display:inline;fill:#16c816;fill-opacity:1;fill-rule:evenodd;stroke:#129b00;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="display:inline;fill:#6699ff;fill-opacity:1;fill-rule:evenodd;stroke:#3366cc;stroke-width:2.96343851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24.073654,4.7518625 35.13741,21.680202 c 0.830822,1.271218 1.561747,2.541942 1.952222,3.843334 l -26.064146,0.03312 c 0.398283,-1.282502 1.126319,-2.592255 1.964886,-3.8733 z"
+ id="path2069-8"
+ sodipodi:nodetypes="csccsc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:#16c816;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 36.879847,27.238166 C 38.115698,38.19401 31.666974,44.823427 23.184624,44.750996 14.702274,44.678564 8.2127922,37.110525 9.6490039,27.219671 Z"
+ id="path4228"
+ sodipodi:nodetypes="czcc"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="csccsc"
+ id="path4239"
+ d="M 24.011154,7.3143625 33.51241,21.805202 c 0.832698,1.26999 2.522684,3.932567 2.920972,5.249584 l -24.751646,-0.02935 c 0.398283,-1.282502 2.041931,-3.742425 2.871136,-5.02955 z"
+ style="display:inline;fill:#6699ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.96343851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="seed/download icon"
+ style="display:inline">
+ <path
+ sodipodi:type="star"
+ style="opacity:1;fill:#005000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5039"
+ sodipodi:sides="3"
+ sodipodi:cx="23.9375"
+ sodipodi:cy="21.1875"
+ sodipodi:r1="4.6958261"
+ sodipodi:r2="2.347913"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 28.004205,23.535413 -4.066705,0 -4.066705,0 2.033353,-3.521869 2.033352,-3.52187 2.033352,3.521869 z"
+ transform="matrix(-1.8442451,0,0,-0.99379036,68.146617,57.377998)"
+ inkscape:transform-center-y="-1.1666696" />
+ <rect
+ style="display:inline;opacity:1;fill:#0e2960;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364-1-7-0"
+ width="8.3000002"
+ height="4.2000003"
+ x="19.75"
+ y="21.788212" />
+ <rect
+ style="display:inline;opacity:1;fill:#005000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364-1-7"
+ width="8.3000002"
+ height="4.2000003"
+ x="-28.049999"
+ y="-32.268642"
+ transform="scale(-1,-1)" />
+ <path
+ sodipodi:type="star"
+ style="display:inline;opacity:1;fill:#0e2960;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5039-2"
+ sodipodi:sides="3"
+ sodipodi:cx="23.9375"
+ sodipodi:cy="21.1875"
+ sodipodi:r1="4.6958261"
+ sodipodi:r2="2.347913"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 28.004205,23.535413 -4.066705,0 -4.066705,0 2.033353,-3.521869 2.033352,-3.52187 2.033352,3.521869 z"
+ inkscape:transform-center-y="-1.1666662"
+ transform="matrix(1.8442451,0,0,0.99379036,-20.146617,-3.2560397)" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/active16.png b/deluge/ui/data/pixmaps/active16.png
new file mode 100644
index 0000000..e5bab66
--- /dev/null
+++ b/deluge/ui/data/pixmaps/active16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/alert.svg b/deluge/ui/data/pixmaps/alert.svg
new file mode 100644
index 0000000..8f73872
--- /dev/null
+++ b/deluge/ui/data/pixmaps/alert.svg
@@ -0,0 +1,512 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="alert.svg"
+ inkscape:export-xdpi="960"
+ inkscape:export-ydpi="960"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/projects/deluge-logo/deluge.512.x.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile4484" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k1="8.1400000000000006"
+ k2="4.9299999999999997"
+ k3="5.5899999999999999"
+ k4="-7.2400000000000002" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.17254902"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="28.836938"
+ inkscape:cy="22.782595"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="23.9375,24.5625"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="38.448931,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid4214" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="base droplet"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="fill:#e6381f;fill-opacity:1;fill-rule:evenodd;stroke:#a60e0e;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
+ d="M 23.295622,2.4822833 35.490217,21.297229 C 43.30243,33.350632 35.08691,46.383433 23.287956,46.383433 11.489002,46.383433 3.2602089,33.346045 11.079504,21.30073 Z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="seed/download icon"
+ style="display:none">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:17.90330505px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#630000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="12.545032"
+ y="40.473927"
+ id="text5111"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0196557,0.98072319)"><tspan
+ sodipodi:role="line"
+ id="tspan5113"
+ x="12.545032"
+ y="40.473927"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:35.80661011px;font-family:'Courier 10 Pitch';-inkscape-font-specification:'Courier 10 Pitch Bold';fill:#630000;fill-opacity:1;stroke:none">!</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="seed/download icon 1"
+ style="display:inline">
+ <path
+ style="display:inline;opacity:1;fill:#630000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 20.966529,17.53531 6,0 -0.97907,14.309359 -3.824288,0 z"
+ id="rect4203"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;opacity:1;fill:#630000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 21.203402,33.393779 5.5,0 0,5.5 -5.5,0 z"
+ id="rect4206"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/alert16.png b/deluge/ui/data/pixmaps/alert16.png
new file mode 100644
index 0000000..49028db
--- /dev/null
+++ b/deluge/ui/data/pixmaps/alert16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/all.svg b/deluge/ui/data/pixmaps/all.svg
new file mode 100644
index 0000000..6dd99c9
--- /dev/null
+++ b/deluge/ui/data/pixmaps/all.svg
@@ -0,0 +1,826 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="all.svg"
+ inkscape:export-xdpi="960"
+ inkscape:export-ydpi="960"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/projects/deluge-logo/deluge.512.x.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile4484" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k1="8.1400000000000006"
+ k2="4.9299999999999997"
+ k3="5.5899999999999999"
+ k4="-7.2400000000000002" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ <filter
+ id="filter6406-6"
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000001"
+ x="-0.050000001">
+ <feFlood
+ id="feFlood6408-1"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410-2"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur6412-9"
+ stdDeviation="0.20000000000000001"
+ result="blur" />
+ <feOffset
+ id="feOffset6414-3"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416-1"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2" />
+ </filter>
+ <filter
+ id="filter6406-4"
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000001"
+ x="-0.050000001">
+ <feFlood
+ id="feFlood6408-7"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410-8"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur6412-4"
+ stdDeviation="0.20000000000000001"
+ result="blur" />
+ <feOffset
+ id="feOffset6414-5"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416-0"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2" />
+ </filter>
+ <filter
+ id="filter6406-1"
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000001"
+ x="-0.050000001">
+ <feFlood
+ id="feFlood6408-0"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410-6"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur6412-3"
+ stdDeviation="0.20000000000000001"
+ result="blur" />
+ <feOffset
+ id="feOffset6414-2"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416-06"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2" />
+ </filter>
+ <filter
+ id="filter6406-65"
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000001"
+ x="-0.050000001">
+ <feFlood
+ id="feFlood6408-6"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410-9"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur6412-37"
+ stdDeviation="0.20000000000000001"
+ result="blur" />
+ <feOffset
+ id="feOffset6414-4"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416-5"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.17254902"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.627418"
+ inkscape:cx="24.522092"
+ inkscape:cy="23.789911"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="23.9375,24.5625"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="38.448931,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="seed/download icon"
+ style="display:none" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="paused"
+ style="display:none">
+ <g
+ id="g6424"
+ transform="matrix(0.5,0,0,0.5,2.9837572,-5.2773854)">
+ <path
+ transform="matrix(0.90726715,0,0,0.89972834,26.239516,15.92952)"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cszsc"
+ id="path2069-9"
+ d="M 23.295622,2.4822833 35.490217,21.297229 C 43.30243,33.350632 35.08691,46.383433 23.287956,46.383433 11.489002,46.383433 3.2602089,33.346045 11.079504,21.30073 Z"
+ style="display:inline;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter6406-6)" />
+ <rect
+ y="35.411037"
+ x="48.613716"
+ height="16"
+ width="5.5"
+ id="rect4364"
+ style="display:inline;opacity:1;fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="35.411037"
+ x="40.426212"
+ height="16"
+ width="5.5"
+ id="rect4364-1"
+ style="display:inline;opacity:1;fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ </g>
+ <g
+ id="layer1"
+ inkscape:label="alert"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="display:inline;fill:#e6381f;fill-opacity:1;fill-rule:evenodd;stroke:#a60e0e;stroke-width:1.48663402;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 23.83453,3.7818049 5.550226,8.4922441 c 3.555636,5.44038 -0.183561,11.322817 -5.553715,11.322817 -5.370156,0 -9.115393,-5.884508 -5.556534,-11.321236 z"
+ id="path2069-8"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:1;fill:#630000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 22.275814,10.194729 3.009951,0 -0.491159,7.178411 -1.918487,0 z"
+ id="rect4203"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;opacity:1;fill:#630000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 22.394643,18.150264 2.759122,0 0,2.759121 -2.759122,0 z"
+ id="rect4206"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer6"
+ inkscape:label="queue"
+ style="display:inline">
+ <g
+ id="g4381"
+ transform="matrix(0.50041261,0,0,0.50041261,10.301289,13.764121)">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cszsc"
+ id="path2069-23"
+ d="M 43.762814,0.18101753 54.826569,17.109357 c 7.087764,10.844788 -0.365907,22.570769 -11.07071,22.570769 -10.704803,0 -18.170517,-11.730108 -11.076327,-22.567619 z"
+ style="display:inline;fill:#dcdc00;fill-opacity:1;fill-rule:evenodd;stroke:#b4b400;stroke-width:2.96343851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="25.66815"
+ x="35.689159"
+ height="4"
+ width="16"
+ id="rect4221-3-6-7"
+ style="display:inline;opacity:1;fill:#6a6a00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.03118205;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="19.302549"
+ x="35.689159"
+ height="4"
+ width="16"
+ id="rect4221-3-9-5"
+ style="display:inline;opacity:1;fill:#6a6a00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.03118205;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ inkscape:transform-center-x="2.0998475e-05"
+ inkscape:transform-center-y="-0.7497936"
+ transform="matrix(0,121.76383,-210.90115,0,3630.2786,-2895.3827)"
+ d="m 23.88441,17.006021 0.01848,-0.01067 0.01848,-0.01067 0,0.02134 0,0.02134 -0.01848,-0.01067 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="4.1887903"
+ sodipodi:arg1="3.1415927"
+ sodipodi:r2="0.012318929"
+ sodipodi:r1="0.024637857"
+ sodipodi:cy="17.006021"
+ sodipodi:cx="23.909048"
+ sodipodi:sides="3"
+ id="path4266-5-9"
+ style="display:inline;opacity:1;fill:#6a6a00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.97536206;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <path
+ inkscape:transform-center-x="-0.00022730407"
+ inkscape:transform-center-y="0.74972138"
+ transform="matrix(0,-121.76383,210.90115,0,-3542.9004,2944.2596)"
+ d="m 23.88441,17.006021 0.01848,-0.01067 0.01848,-0.01067 0,0.02134 0,0.02134 -0.01848,-0.01067 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="4.1887903"
+ sodipodi:arg1="3.1415927"
+ sodipodi:r2="0.012318929"
+ sodipodi:r1="0.024637857"
+ sodipodi:cy="17.006021"
+ sodipodi:cx="23.909048"
+ sodipodi:sides="3"
+ id="path4266-5-3-2"
+ style="display:inline;opacity:1;fill:#6a6a00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.97536206;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="seed"
+ style="display:inline">
+ <g
+ id="g4316"
+ transform="matrix(0.50386528,0,0,0.50386528,18.968897,3.1952438)">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cszsc"
+ id="path2069-18"
+ d="m -6.3533765,21.261638 11.063755,16.928339 c 7.0877645,10.844788 -0.365907,22.570769 -11.07071,22.570769 -10.7048035,0 -18.1705175,-11.730108 -11.0763275,-22.567619 z"
+ style="display:inline;fill:#6699ff;fill-opacity:1;fill-rule:evenodd;stroke:#3366cc;stroke-width:2.96343851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="49.509773"
+ x="-10.666519"
+ height="4.5"
+ width="8.5"
+ id="rect4364-1-36"
+ style="display:inline;opacity:1;fill:#0f3171;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ inkscape:transform-center-y="1.3125004"
+ transform="matrix(1.9671947,0,0,1.1180142,-53.583459,15.251026)"
+ d="m 28.004205,23.535413 -4.066705,0 -4.066705,0 2.033353,-3.521869 2.033352,-3.52187 2.033352,3.521869 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5707963"
+ sodipodi:arg1="0.52359878"
+ sodipodi:r2="2.347913"
+ sodipodi:r1="4.6958261"
+ sodipodi:cy="21.1875"
+ sodipodi:cx="23.9375"
+ sodipodi:sides="3"
+ id="path5039-7"
+ style="display:inline;opacity:1;fill:#0f3171;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <rect
+ y="43.411861"
+ x="-10.68544"
+ height="4.5"
+ width="8.5"
+ id="rect4364-1-3"
+ style="display:inline;opacity:1;fill:#0f3171;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="down"
+ style="display:inline">
+ <g
+ transform="matrix(0.99398243,0,0,0.99398243,26.888997,23.507801)"
+ style="display:inline"
+ id="g4334">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cszsc"
+ id="path2069-7"
+ d="M -2.9505196,0.78380503 2.6291501,9.3211008 C 6.2036493,14.790341 2.444616,20.703985 -2.9540272,20.703985 c -5.3986437,0 -9.1637498,-5.915725 -5.5860106,-11.3812956 z"
+ style="display:inline;fill:#16c816;fill-opacity:1;fill-rule:evenodd;stroke:#129b00;stroke-width:1.49452055;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ transform="scale(-1,-1)"
+ y="-10.455302"
+ x="0.89548177"
+ height="2.2694387"
+ width="4.2766037"
+ id="rect4364-1-9"
+ style="display:inline;opacity:1;fill:#005000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ inkscape:transform-center-y="-0.65561611"
+ transform="matrix(-0.99209509,0,0,-0.55846672,20.75849,27.675627)"
+ d="m 28.004205,23.535413 -4.066705,0 -4.066705,0 2.033353,-3.521869 2.033352,-3.52187 2.033352,3.521869 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5707963"
+ sodipodi:arg1="0.52359878"
+ sodipodi:r2="2.347913"
+ sodipodi:r1="4.6958261"
+ sodipodi:cy="21.1875"
+ sodipodi:cx="23.9375"
+ sodipodi:sides="3"
+ id="path5039-2"
+ style="display:inline;opacity:1;fill:#005000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <rect
+ transform="scale(-1,-1)"
+ y="-13.625159"
+ x="0.88536817"
+ height="2.2694387"
+ width="4.2766037"
+ id="rect4364-1-3-0"
+ style="display:inline;opacity:1;fill:#005000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/all16.png b/deluge/ui/data/pixmaps/all16.png
new file mode 100644
index 0000000..1a9ba90
--- /dev/null
+++ b/deluge/ui/data/pixmaps/all16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/checking.svg b/deluge/ui/data/pixmaps/checking.svg
new file mode 100644
index 0000000..4d64b7e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/checking.svg
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="deluge_checking.svg"
+ inkscape:export-xdpi="960"
+ inkscape:export-ydpi="960"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/projects/deluge-logo/deluge.512.x.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile4484" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k1="8.1400000000000006"
+ k2="4.9299999999999997"
+ k3="5.5899999999999999"
+ k4="-7.2400000000000002" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.17254902"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.313709"
+ inkscape:cx="37.39656"
+ inkscape:cy="17.410941"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="23.9375,24.5625"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="38.448931,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="base droplet"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter6406)"
+ d="M 23.295622,2.4822833 35.490217,21.297229 C 43.30243,33.350632 35.08691,46.383433 23.287956,46.383433 11.489002,46.383433 3.2602089,33.346045 11.079504,21.30073 Z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="paused icon"
+ style="display:none">
+ <rect
+ style="display:inline;opacity:1;fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364"
+ width="5.5"
+ height="16"
+ x="25.3125"
+ y="22" />
+ <rect
+ style="display:inline;opacity:1;fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364-1"
+ width="5.5"
+ height="16"
+ x="17.125"
+ y="22" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="checking icon">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666666;fill-opacity:1;stroke:none;stroke-width:0.48776338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 15.70911,22.157482 c 0.119914,0.199935 0.418813,8.847951 0.34197,8.725818 -0.05095,-0.115892 9.029726,-0.318613 9.052253,-0.33886 -0.04746,0.004 -2.879595,-2.667362 -2.855268,-2.629987 2.723225,-2.451281 6.566426,-1.740041 6.843087,3.098922 0.276661,4.838963 -7.571006,6.978129 -8.064694,0.917979 l -4.575574,-0.07664 c 0.742237,4.962428 4.540705,7.477492 7.550683,7.485704 3.009978,0.0082 8.821989,-1.590934 8.794824,-8.313673 -0.02717,-6.722739 -4.319772,-8.932187 -8.343129,-8.887584 -4.023357,0.0446 -5.694705,2.520898 -5.856847,2.535638 0,0 -2.784162,-2.424246 -2.887305,-2.517317 z"
+ id="path3485"
+ sodipodi:nodetypes="cccczcczzzcc" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/checking16.png b/deluge/ui/data/pixmaps/checking16.png
new file mode 100644
index 0000000..9961675
--- /dev/null
+++ b/deluge/ui/data/pixmaps/checking16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/deluge-about.png b/deluge/ui/data/pixmaps/deluge-about.png
new file mode 100644
index 0000000..0b4ff4e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/deluge-about.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/deluge.ico b/deluge/ui/data/pixmaps/deluge.ico
new file mode 100644
index 0000000..854f867
--- /dev/null
+++ b/deluge/ui/data/pixmaps/deluge.ico
Binary files differ
diff --git a/deluge/ui/data/pixmaps/deluge.png b/deluge/ui/data/pixmaps/deluge.png
new file mode 100644
index 0000000..95592bb
--- /dev/null
+++ b/deluge/ui/data/pixmaps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/deluge.svg b/deluge/ui/data/pixmaps/deluge.svg
new file mode 100644
index 0000000..4f29f73
--- /dev/null
+++ b/deluge/ui/data/pixmaps/deluge.svg
@@ -0,0 +1,610 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
+ sodipodi:docname="deluge.svg"
+ inkscape:export-xdpi="32"
+ inkscape:export-ydpi="32"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/Desktop/test1b.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile2" />
+ <linearGradient
+ id="linearGradient4345"
+ inkscape:collect="always">
+ <stop
+ id="stop4347"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4349"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4345"
+ id="radialGradient5878"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.56833945,-0.14774444,0.12240592,0.69984003,9.8157812,6.7018745)"
+ cx="11.707551"
+ cy="36.527763"
+ fx="11.707551"
+ fy="36.527763"
+ r="14.33681" />
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k4="-7.2400000000000002"
+ k3="5.5899999999999999"
+ k2="4.9299999999999997"
+ k1="8.1400000000000006" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4977"
+ id="radialGradient4375"
+ cx="19.015932"
+ cy="19.611181"
+ fx="19.015932"
+ fy="19.611181"
+ r="15.627373"
+ gradientTransform="matrix(-0.21582873,1.1173231,-1.0803619,-0.20155681,42.177326,-6.1234)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.65098039"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.92"
+ inkscape:cx="3.3184766"
+ inkscape:cy="26.850801"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1981"
+ inkscape:window-height="1097"
+ inkscape:window-x="67"
+ inkscape:window-y="27"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true"
+ inkscape:pagecheckerboard="false"
+ showborder="true"
+ borderlayer="false"
+ scale-x="2">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="24,41.875"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="34.626135,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid4297" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="fill:#4c90e8;fill-opacity:1;fill-rule:evenodd;stroke:#094491;stroke-width:3.19036889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24.00916,2.8848679 35.921225,21.107868 c 7.631218,11.674181 -0.393962,24.296949 -11.919555,24.296949 -11.525593,0 -19.5637412,-12.627213 -11.925606,-24.293557 z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="wave fill"
+ style="display:inline">
+ <path
+ style="display:inline;fill:#094491;fill-opacity:1;fill-rule:evenodd;stroke-width:0.43658349;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 28.249173,24.076764 c -6.513399,-2.656088 -9.930764,4.129513 -8.844266,7.299777 2.363892,6.897492 11.278562,8.624272 17.861607,-2.864877 0,0 0.07021,1.386537 0.139797,2.046235 0.884013,8.376987 -6.162376,13.70953 -13.302295,13.605305 -7.139921,-0.104225 -9.320813,-2.876749 -11.424685,-6.068739 -3.4133569,-5.178732 -2.561398,-13.615464 2.027677,-17.561337 5.237731,-4.328395 11.004287,-2.017675 13.542165,3.543636 z"
+ id="path2969"
+ sodipodi:nodetypes="cscszscc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="display:none"
+ inkscape:label="wave fill light"
+ id="g4327"
+ inkscape:groupmode="layer">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscszscc"
+ id="path4329"
+ d="m 24.811452,24.996951 c -6.049549,-2.467385 -7.648816,3.683738 -6.639688,6.628769 2.195546,6.407462 11.948502,7.605174 18.062738,-3.067723 0,0 0.11598,1.28803 0.180639,1.900859 0.82106,7.781844 -5.621926,12.735535 -12.253379,12.638715 -6.631454,-0.09682 -8.657036,-2.672368 -10.611083,-5.637583 -3.170275,-4.810809 -2.429788,-11.327408 1.78168,-14.840553 4.864733,-3.959831 8.798281,-0.09585 9.479093,2.377516 z"
+ style="display:inline;fill:#99c3f9;fill-opacity:1;fill-rule:evenodd;stroke-width:0.40552941;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer6"
+ inkscape:label="wave stroke 1.3px and fill "
+ style="display:none">
+ <path
+ style="display:inline;fill:#99c3f9;fill-opacity:1;fill-rule:evenodd;stroke:#094491 icc-color(sRGB, 0.18046845, 0.27837034, 0.41960784);stroke-width:1.33399999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 23.761543,24.179576 c -6.481311,-1.72424 -6.932125,6.183803 -5.453851,8.969604 2.408248,4.538333 12.206251,5.377175 17.706883,-3.282742 0,0 0.07651,2.193563 0.02062,2.77892 -0.534334,5.596549 -6.848986,9.789262 -11.999526,9.621298 -5.243605,-0.170999 -8.282469,-2.549917 -10.154056,-5.379263 -3.036492,-4.590373 -2.048612,-10.811985 1.554101,-13.80496 4.248899,-3.646516 7.44994,-0.562347 8.325827,1.097143 z"
+ id="path2969-6"
+ sodipodi:nodetypes="cscssscc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="display:none"
+ inkscape:label="wave stroke 2px and fill "
+ id="g4217"
+ inkscape:groupmode="layer">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscssscc"
+ id="path4219"
+ d="m 23.507553,23.925586 c -6.495438,-1.064032 -6.790118,6.421446 -5.149063,9.579179 2.304561,4.434459 10.903063,6.282759 17.3005,-2.825561 0,0 -0.02509,1.990372 -0.08098,2.575729 -0.534334,5.596549 -6.391805,8.925697 -11.542345,8.757733 -5.243605,-0.170999 -8.247979,-2.119778 -10.001662,-5.023677 -2.772156,-4.590373 -2.467304,-9.592836 0.487345,-12.585811 3.100966,-3.879425 7.831125,-2.714919 8.986201,-0.477592 z"
+ style="display:inline;fill:#99c3f9;fill-opacity:1;fill-rule:evenodd;stroke:#094491 icc-color(sRGB, 0.18046845, 0.27837034, 0.41960784);stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="gradient inner wave "
+ style="display:none">
+ <path
+ style="fill:url(#radialGradient5878);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 23.55546,23.805666 c -6.490966,-1.345852 -7.700279,4.84717 -6.759909,8.059555 1.100923,3.760845 4.033145,7.507508 11.754513,5.50458 -3.268904,5.846892 -11.255492,4.570412 -13.940353,0.387138 -2.563055,-3.993493 -2.992402,-9.05746 -1.115519,-11.776277 4.049097,-6.655711 9.485026,-4.029293 10.061268,-2.174996 z"
+ id="path3868"
+ sodipodi:nodetypes="cscscc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="display:inline"
+ inkscape:label="solid inner wavelet small"
+ id="g4476"
+ inkscape:groupmode="layer">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscszc"
+ id="path4478"
+ d="m 24.158349,21.568695 c -7.295351,0.177796 -8.680227,8.584045 -6.659444,12.185022 2.809336,5.006167 7.071815,5.968946 12.90485,4.121032 -3.330593,3.620896 -10.166138,4.579185 -14.809086,-0.592946 -3.194749,-3.558875 -3.473998,-8.525976 -1.256883,-12.674161 2.217115,-4.148189 6.638012,-5.301549 9.820563,-3.038947 z"
+ style="fill:#83b8f9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.07657671" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="g4486"
+ inkscape:label="solid inner wavelet larger"
+ style="display:none">
+ <path
+ style="fill:#99c3f9;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 21.55277,22.974939 c -5.188765,1.005551 -6.173294,6.973638 -4.694095,10.155871 2.191227,4.714034 8.449957,8.07696 17.664862,0.691234 -5.828901,10.827975 -14.873199,7.043001 -17.313798,4.977307 -1.97159,-1.66873 -4.164846,-4.855384 -4.11832,-8.341257 0.09522,-7.134172 6.604293,-9.266569 8.461351,-7.483155 z"
+ id="path4488"
+ sodipodi:nodetypes="cscssc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Finish"
+ style="display:none"
+ sodipodi:insensitive="true">
+ <path
+ style="display:inline;opacity:0.68800001;fill:url(#radialGradient4375);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.01508224;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 23.956644,1.939572 -11.98159,18.384686 c -3.9618093,5.166305 -3.6931007,11.439356 -2.4054307,15.8855 5.3079527,10.817522 14.5668877,9.659123 14.5668877,9.659123 0,0 6.868403,-0.005 11.475831,-5.120874 2.283123,-2.535051 5.325726,-9.801674 2.662706,-16.234991 -0.49634,-1.028711 -3.75284,-6.551522 -4.429455,-7.554788 z"
+ id="path4279"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccsccc" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/deluge16.png b/deluge/ui/data/pixmaps/deluge16.png
new file mode 100644
index 0000000..1291dfa
--- /dev/null
+++ b/deluge/ui/data/pixmaps/deluge16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/dht.svg b/deluge/ui/data/pixmaps/dht.svg
new file mode 100644
index 0000000..f145d0b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/dht.svg
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="128"
+ height="128"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="dht.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andrew/Projects/deluge/trunk/deluge/data/pixmaps/dht16.png"
+ inkscape:export-xdpi="1.9579109"
+ inkscape:export-ydpi="1.9579109"
+ version="1.1">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10561" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6568542"
+ inkscape:cx="51.409667"
+ inkscape:cy="66.916781"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ showgrid="false"
+ inkscape:showpageshadow="false"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-924.36219)">
+ <path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 51.371573,974.02754 4.703341,36.73196"
+ id="path3695"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 63.256291,969.16777 23.581249,23.7999"
+ id="path3699"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 31.776499,981.71786 4.647106,-9.48366"
+ id="path3697"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 69.943212,952.70635 12.971145,2.50294"
+ id="path3691"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 67.557838,1019.8019 14.681475,-5.7109"
+ id="path3693"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <circle
+ style="opacity:1;fill:#16c816;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3437"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ cx="47.440121"
+ cy="951.93445"
+ r="24.014807" />
+ <circle
+ style="opacity:1;fill:#4c90e8;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3443"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ cx="23.889254"
+ cy="997.40765"
+ r="18.128822" />
+ <circle
+ style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3445"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ cx="95.936546"
+ cy="960.33722"
+ r="14.597237" />
+ <circle
+ style="opacity:1;fill:#4c90e8;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3439"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ cx="99.223282"
+ cy="1006.9724"
+ r="21.189529" />
+ <circle
+ style="opacity:1;fill:#16c816;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3441"
+ inkscape:export-filename="/home/andrew/dht16-2.png"
+ inkscape:export-xdpi="3.8918922"
+ inkscape:export-ydpi="3.8918922"
+ cx="54.840214"
+ cy="1026.1222"
+ r="18.364264" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/dht16.png b/deluge/ui/data/pixmaps/dht16.png
new file mode 100644
index 0000000..2396bb1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/dht16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/downloading.svg b/deluge/ui/data/pixmaps/downloading.svg
new file mode 100644
index 0000000..d48cb69
--- /dev/null
+++ b/deluge/ui/data/pixmaps/downloading.svg
@@ -0,0 +1,515 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="downloading.svg"
+ inkscape:export-xdpi="30"
+ inkscape:export-ydpi="30"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/projects/deluge-logo/deluge_download16.svg.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile4484" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k1="8.1400000000000006"
+ k2="4.9299999999999997"
+ k3="5.5899999999999999"
+ k4="-7.2400000000000002" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.17254902"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="22.077879"
+ inkscape:cy="23.209575"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="23.9375,24.5625"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="38.448931,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid4225" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="base droplet"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="fill:#16c816;fill-opacity:1;fill-rule:evenodd;stroke:#129b00;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
+ d="M 23.295622,2.4822833 35.490217,21.297229 C 43.30243,33.350632 35.08691,46.383433 23.287956,46.383433 11.489002,46.383433 3.2602089,33.346045 11.079504,21.30073 Z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="seed/download icon"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#005000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364-1"
+ width="8.4799452"
+ height="4.5"
+ x="-28.148525"
+ y="-23.929176"
+ transform="scale(-1,-1)" />
+ <path
+ sodipodi:type="star"
+ style="opacity:1;fill:#005000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5039"
+ sodipodi:sides="3"
+ sodipodi:cx="23.9375"
+ sodipodi:cy="21.1875"
+ sodipodi:r1="4.6958261"
+ sodipodi:r2="2.347913"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 28.004205,23.535413 -4.066705,0 -4.066705,0 2.033353,-3.521869 2.033352,-3.52187 2.033352,3.521869 z"
+ transform="matrix(-1.9671947,0,0,-1.1073664,71.085518,58.074825)"
+ inkscape:transform-center-y="-1.3000008" />
+ <rect
+ style="display:inline;opacity:1;fill:#005000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364-1-3"
+ width="8.4799452"
+ height="4.5"
+ x="-28.168579"
+ y="-30.214588"
+ transform="scale(-1,-1)" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/downloading16.png b/deluge/ui/data/pixmaps/downloading16.png
new file mode 100644
index 0000000..e64aa5a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/downloading16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ad.png b/deluge/ui/data/pixmaps/flags/ad.png
new file mode 100644
index 0000000..cc5ab1e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ad.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ae.png b/deluge/ui/data/pixmaps/flags/ae.png
new file mode 100644
index 0000000..590256f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ae.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/af.png b/deluge/ui/data/pixmaps/flags/af.png
new file mode 100644
index 0000000..d8faed3
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/af.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ag.png b/deluge/ui/data/pixmaps/flags/ag.png
new file mode 100644
index 0000000..7c6d7db
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ag.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ai.png b/deluge/ui/data/pixmaps/flags/ai.png
new file mode 100644
index 0000000..37c723c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ai.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/al.png b/deluge/ui/data/pixmaps/flags/al.png
new file mode 100644
index 0000000..71f9d0a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/al.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/am.png b/deluge/ui/data/pixmaps/flags/am.png
new file mode 100644
index 0000000..8bc88a2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/am.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/an.png b/deluge/ui/data/pixmaps/flags/an.png
new file mode 100644
index 0000000..49220a4
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/an.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ao.png b/deluge/ui/data/pixmaps/flags/ao.png
new file mode 100644
index 0000000..9f1dcb4
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ao.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/aq.png b/deluge/ui/data/pixmaps/flags/aq.png
new file mode 100644
index 0000000..de9bc8f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/aq.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ar.png b/deluge/ui/data/pixmaps/flags/ar.png
new file mode 100644
index 0000000..e3a87c8
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ar.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/as.png b/deluge/ui/data/pixmaps/flags/as.png
new file mode 100644
index 0000000..1d00ab0
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/as.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/at.png b/deluge/ui/data/pixmaps/flags/at.png
new file mode 100644
index 0000000..475bd12
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/at.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/au.png b/deluge/ui/data/pixmaps/flags/au.png
new file mode 100644
index 0000000..0335dbf
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/au.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/aw.png b/deluge/ui/data/pixmaps/flags/aw.png
new file mode 100644
index 0000000..fc58bef
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/aw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ax.png b/deluge/ui/data/pixmaps/flags/ax.png
new file mode 100644
index 0000000..134b2ac
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ax.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/az.png b/deluge/ui/data/pixmaps/flags/az.png
new file mode 100644
index 0000000..e225bd2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/az.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ba.png b/deluge/ui/data/pixmaps/flags/ba.png
new file mode 100644
index 0000000..bc87325
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ba.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bb.png b/deluge/ui/data/pixmaps/flags/bb.png
new file mode 100644
index 0000000..c908dcd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bb.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bd.png b/deluge/ui/data/pixmaps/flags/bd.png
new file mode 100644
index 0000000..23fea0e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bd.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/be.png b/deluge/ui/data/pixmaps/flags/be.png
new file mode 100644
index 0000000..bc09e3c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/be.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bf.png b/deluge/ui/data/pixmaps/flags/bf.png
new file mode 100644
index 0000000..aa7238b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bg.png b/deluge/ui/data/pixmaps/flags/bg.png
new file mode 100644
index 0000000..b60e401
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bh.png b/deluge/ui/data/pixmaps/flags/bh.png
new file mode 100644
index 0000000..812126b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bi.png b/deluge/ui/data/pixmaps/flags/bi.png
new file mode 100644
index 0000000..21ead6b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bi.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bj.png b/deluge/ui/data/pixmaps/flags/bj.png
new file mode 100644
index 0000000..6b9a538
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bm.png b/deluge/ui/data/pixmaps/flags/bm.png
new file mode 100644
index 0000000..c1859d1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bn.png b/deluge/ui/data/pixmaps/flags/bn.png
new file mode 100644
index 0000000..a18d496
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bo.png b/deluge/ui/data/pixmaps/flags/bo.png
new file mode 100644
index 0000000..1b25cd9
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bo.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/br.png b/deluge/ui/data/pixmaps/flags/br.png
new file mode 100644
index 0000000..b1a884c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/br.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bs.png b/deluge/ui/data/pixmaps/flags/bs.png
new file mode 100644
index 0000000..dec86f3
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bs.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bt.png b/deluge/ui/data/pixmaps/flags/bt.png
new file mode 100644
index 0000000..3942fc9
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bv.png b/deluge/ui/data/pixmaps/flags/bv.png
new file mode 100644
index 0000000..faaa529
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bw.png b/deluge/ui/data/pixmaps/flags/bw.png
new file mode 100644
index 0000000..d5e0284
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/by.png b/deluge/ui/data/pixmaps/flags/by.png
new file mode 100644
index 0000000..a6c5f6c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/by.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bz.png b/deluge/ui/data/pixmaps/flags/bz.png
new file mode 100644
index 0000000..63f7428
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/bz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ca.png b/deluge/ui/data/pixmaps/flags/ca.png
new file mode 100644
index 0000000..1e53d20
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ca.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cc.png b/deluge/ui/data/pixmaps/flags/cc.png
new file mode 100644
index 0000000..a518e48
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cd.png b/deluge/ui/data/pixmaps/flags/cd.png
new file mode 100644
index 0000000..69886e6
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cd.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cf.png b/deluge/ui/data/pixmaps/flags/cf.png
new file mode 100644
index 0000000..1b9ea85
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cg.png b/deluge/ui/data/pixmaps/flags/cg.png
new file mode 100644
index 0000000..45422bb
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ch.png b/deluge/ui/data/pixmaps/flags/ch.png
new file mode 100644
index 0000000..1553916
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ch.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ci.png b/deluge/ui/data/pixmaps/flags/ci.png
new file mode 100644
index 0000000..5f670c7
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ci.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ck.png b/deluge/ui/data/pixmaps/flags/ck.png
new file mode 100644
index 0000000..904192b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ck.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cl.png b/deluge/ui/data/pixmaps/flags/cl.png
new file mode 100644
index 0000000..afb270e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cm.png b/deluge/ui/data/pixmaps/flags/cm.png
new file mode 100644
index 0000000..395dd9f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cn.png b/deluge/ui/data/pixmaps/flags/cn.png
new file mode 100644
index 0000000..28ab66c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/co.png b/deluge/ui/data/pixmaps/flags/co.png
new file mode 100644
index 0000000..d31a69d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/co.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cr.png b/deluge/ui/data/pixmaps/flags/cr.png
new file mode 100644
index 0000000..e892b41
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cs.png b/deluge/ui/data/pixmaps/flags/cs.png
new file mode 100644
index 0000000..cd58f89
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cs.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cu.png b/deluge/ui/data/pixmaps/flags/cu.png
new file mode 100644
index 0000000..64205ed
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cv.png b/deluge/ui/data/pixmaps/flags/cv.png
new file mode 100644
index 0000000..54f1abd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cx.png b/deluge/ui/data/pixmaps/flags/cx.png
new file mode 100644
index 0000000..198e299
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cx.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cy.png b/deluge/ui/data/pixmaps/flags/cy.png
new file mode 100644
index 0000000..6993e6b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cy.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cz.png b/deluge/ui/data/pixmaps/flags/cz.png
new file mode 100644
index 0000000..830f6a7
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/cz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/de.png b/deluge/ui/data/pixmaps/flags/de.png
new file mode 100644
index 0000000..3d07860
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/de.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/dj.png b/deluge/ui/data/pixmaps/flags/dj.png
new file mode 100644
index 0000000..ca361d0
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/dj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/dk.png b/deluge/ui/data/pixmaps/flags/dk.png
new file mode 100644
index 0000000..3b4d12d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/dk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/dm.png b/deluge/ui/data/pixmaps/flags/dm.png
new file mode 100644
index 0000000..2767c49
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/dm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/do.png b/deluge/ui/data/pixmaps/flags/do.png
new file mode 100644
index 0000000..df9b90d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/do.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/dz.png b/deluge/ui/data/pixmaps/flags/dz.png
new file mode 100644
index 0000000..a450eef
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/dz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ec.png b/deluge/ui/data/pixmaps/flags/ec.png
new file mode 100644
index 0000000..26b50cd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ec.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ee.png b/deluge/ui/data/pixmaps/flags/ee.png
new file mode 100644
index 0000000..aa2a0b9
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ee.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/eg.png b/deluge/ui/data/pixmaps/flags/eg.png
new file mode 100644
index 0000000..26e80b9
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/eg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/eh.png b/deluge/ui/data/pixmaps/flags/eh.png
new file mode 100644
index 0000000..39982d2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/eh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/er.png b/deluge/ui/data/pixmaps/flags/er.png
new file mode 100644
index 0000000..d30b89f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/er.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/es.png b/deluge/ui/data/pixmaps/flags/es.png
new file mode 100644
index 0000000..afcffef
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/es.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/et.png b/deluge/ui/data/pixmaps/flags/et.png
new file mode 100644
index 0000000..a2c5d3b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/et.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fi.png b/deluge/ui/data/pixmaps/flags/fi.png
new file mode 100644
index 0000000..c897026
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/fi.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fj.png b/deluge/ui/data/pixmaps/flags/fj.png
new file mode 100644
index 0000000..805d3b2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/fj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fk.png b/deluge/ui/data/pixmaps/flags/fk.png
new file mode 100644
index 0000000..184e890
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/fk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fm.png b/deluge/ui/data/pixmaps/flags/fm.png
new file mode 100644
index 0000000..601dba9
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/fm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fo.png b/deluge/ui/data/pixmaps/flags/fo.png
new file mode 100644
index 0000000..63ef1bd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/fo.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fr.png b/deluge/ui/data/pixmaps/flags/fr.png
new file mode 100644
index 0000000..84dd917
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/fr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fx.png b/deluge/ui/data/pixmaps/flags/fx.png
new file mode 100644
index 0000000..e1bb1dd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/fx.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ga.png b/deluge/ui/data/pixmaps/flags/ga.png
new file mode 100644
index 0000000..e584067
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ga.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gb.png b/deluge/ui/data/pixmaps/flags/gb.png
new file mode 100644
index 0000000..4a351b7
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gb.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gd.png b/deluge/ui/data/pixmaps/flags/gd.png
new file mode 100644
index 0000000..56f2d2b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gd.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ge.png b/deluge/ui/data/pixmaps/flags/ge.png
new file mode 100644
index 0000000..e2389a1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ge.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gf.png b/deluge/ui/data/pixmaps/flags/gf.png
new file mode 100644
index 0000000..84dd917
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gg.png b/deluge/ui/data/pixmaps/flags/gg.png
new file mode 100644
index 0000000..3057a73
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gh.png b/deluge/ui/data/pixmaps/flags/gh.png
new file mode 100644
index 0000000..39f91b1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gi.png b/deluge/ui/data/pixmaps/flags/gi.png
new file mode 100644
index 0000000..3e631b3
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gi.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gl.png b/deluge/ui/data/pixmaps/flags/gl.png
new file mode 100644
index 0000000..40b4434
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gm.png b/deluge/ui/data/pixmaps/flags/gm.png
new file mode 100644
index 0000000..05be830
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gn.png b/deluge/ui/data/pixmaps/flags/gn.png
new file mode 100644
index 0000000..8794951
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gp.png b/deluge/ui/data/pixmaps/flags/gp.png
new file mode 100644
index 0000000..a8340a2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gq.png b/deluge/ui/data/pixmaps/flags/gq.png
new file mode 100644
index 0000000..f773395
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gq.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gr.png b/deluge/ui/data/pixmaps/flags/gr.png
new file mode 100644
index 0000000..840b534
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gs.png b/deluge/ui/data/pixmaps/flags/gs.png
new file mode 100644
index 0000000..ab0a7c7
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gs.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gt.png b/deluge/ui/data/pixmaps/flags/gt.png
new file mode 100644
index 0000000..d9b836e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gu.png b/deluge/ui/data/pixmaps/flags/gu.png
new file mode 100644
index 0000000..4886da3
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gw.png b/deluge/ui/data/pixmaps/flags/gw.png
new file mode 100644
index 0000000..db172bd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gy.png b/deluge/ui/data/pixmaps/flags/gy.png
new file mode 100644
index 0000000..6424d8e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/gy.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hk.png b/deluge/ui/data/pixmaps/flags/hk.png
new file mode 100644
index 0000000..e969f86
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/hk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hm.png b/deluge/ui/data/pixmaps/flags/hm.png
new file mode 100644
index 0000000..0335dbf
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/hm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hn.png b/deluge/ui/data/pixmaps/flags/hn.png
new file mode 100644
index 0000000..e3faca9
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/hn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hr.png b/deluge/ui/data/pixmaps/flags/hr.png
new file mode 100644
index 0000000..aa64bf8
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/hr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ht.png b/deluge/ui/data/pixmaps/flags/ht.png
new file mode 100644
index 0000000..bbcfd7e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ht.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hu.png b/deluge/ui/data/pixmaps/flags/hu.png
new file mode 100644
index 0000000..6f20d2b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/hu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/id.png b/deluge/ui/data/pixmaps/flags/id.png
new file mode 100644
index 0000000..b1cdf79
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/id.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ie.png b/deluge/ui/data/pixmaps/flags/ie.png
new file mode 100644
index 0000000..238d3b3
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ie.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/il.png b/deluge/ui/data/pixmaps/flags/il.png
new file mode 100644
index 0000000..9c73906
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/il.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/in.png b/deluge/ui/data/pixmaps/flags/in.png
new file mode 100644
index 0000000..0f5801e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/in.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/io.png b/deluge/ui/data/pixmaps/flags/io.png
new file mode 100644
index 0000000..5e4d175
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/io.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/iq.png b/deluge/ui/data/pixmaps/flags/iq.png
new file mode 100644
index 0000000..221fbc6
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/iq.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ir.png b/deluge/ui/data/pixmaps/flags/ir.png
new file mode 100644
index 0000000..8992fa4
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ir.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/is.png b/deluge/ui/data/pixmaps/flags/is.png
new file mode 100644
index 0000000..3f5d5c4
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/is.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/it.png b/deluge/ui/data/pixmaps/flags/it.png
new file mode 100644
index 0000000..ad34d9f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/it.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/je.png b/deluge/ui/data/pixmaps/flags/je.png
new file mode 100644
index 0000000..0d5752d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/je.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/jm.png b/deluge/ui/data/pixmaps/flags/jm.png
new file mode 100644
index 0000000..1f8b4be
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/jm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/jo.png b/deluge/ui/data/pixmaps/flags/jo.png
new file mode 100644
index 0000000..8202d6c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/jo.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/jp.png b/deluge/ui/data/pixmaps/flags/jp.png
new file mode 100644
index 0000000..def1d3c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/jp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ke.png b/deluge/ui/data/pixmaps/flags/ke.png
new file mode 100644
index 0000000..2adad2d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ke.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kg.png b/deluge/ui/data/pixmaps/flags/kg.png
new file mode 100644
index 0000000..8be5235
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/kg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kh.png b/deluge/ui/data/pixmaps/flags/kh.png
new file mode 100644
index 0000000..24da972
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/kh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ki.png b/deluge/ui/data/pixmaps/flags/ki.png
new file mode 100644
index 0000000..db57066
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ki.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/km.png b/deluge/ui/data/pixmaps/flags/km.png
new file mode 100644
index 0000000..625437d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/km.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kn.png b/deluge/ui/data/pixmaps/flags/kn.png
new file mode 100644
index 0000000..e408227
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/kn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kp.png b/deluge/ui/data/pixmaps/flags/kp.png
new file mode 100644
index 0000000..fb473ec
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/kp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kr.png b/deluge/ui/data/pixmaps/flags/kr.png
new file mode 100644
index 0000000..55bcf38
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/kr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kw.png b/deluge/ui/data/pixmaps/flags/kw.png
new file mode 100644
index 0000000..565cc03
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/kw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ky.png b/deluge/ui/data/pixmaps/flags/ky.png
new file mode 100644
index 0000000..b08b3bc
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ky.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kz.png b/deluge/ui/data/pixmaps/flags/kz.png
new file mode 100644
index 0000000..49fcc26
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/kz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/la.png b/deluge/ui/data/pixmaps/flags/la.png
new file mode 100644
index 0000000..0098f1b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/la.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lb.png b/deluge/ui/data/pixmaps/flags/lb.png
new file mode 100644
index 0000000..c519388
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/lb.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lc.png b/deluge/ui/data/pixmaps/flags/lc.png
new file mode 100644
index 0000000..f42f007
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/lc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/li.png b/deluge/ui/data/pixmaps/flags/li.png
new file mode 100644
index 0000000..02f7548
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/li.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lk.png b/deluge/ui/data/pixmaps/flags/lk.png
new file mode 100644
index 0000000..22abcdb
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/lk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lr.png b/deluge/ui/data/pixmaps/flags/lr.png
new file mode 100644
index 0000000..676fda7
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/lr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ls.png b/deluge/ui/data/pixmaps/flags/ls.png
new file mode 100644
index 0000000..3a2fcae
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ls.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lt.png b/deluge/ui/data/pixmaps/flags/lt.png
new file mode 100644
index 0000000..05a445c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/lt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lu.png b/deluge/ui/data/pixmaps/flags/lu.png
new file mode 100644
index 0000000..c9d4d72
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/lu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lv.png b/deluge/ui/data/pixmaps/flags/lv.png
new file mode 100644
index 0000000..72504d1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/lv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ly.png b/deluge/ui/data/pixmaps/flags/ly.png
new file mode 100644
index 0000000..ebd3cf6
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ly.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ma.png b/deluge/ui/data/pixmaps/flags/ma.png
new file mode 100644
index 0000000..62d7065
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ma.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mc.png b/deluge/ui/data/pixmaps/flags/mc.png
new file mode 100644
index 0000000..3f2d6be
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/md.png b/deluge/ui/data/pixmaps/flags/md.png
new file mode 100644
index 0000000..c72632e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/md.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/me.png b/deluge/ui/data/pixmaps/flags/me.png
new file mode 100644
index 0000000..0760fb8
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/me.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mg.png b/deluge/ui/data/pixmaps/flags/mg.png
new file mode 100644
index 0000000..7000ff0
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mh.png b/deluge/ui/data/pixmaps/flags/mh.png
new file mode 100644
index 0000000..fe2caef
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mk.png b/deluge/ui/data/pixmaps/flags/mk.png
new file mode 100644
index 0000000..8739fee
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ml.png b/deluge/ui/data/pixmaps/flags/ml.png
new file mode 100644
index 0000000..f35c3a3
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ml.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mm.png b/deluge/ui/data/pixmaps/flags/mm.png
new file mode 100644
index 0000000..94bcb93
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mn.png b/deluge/ui/data/pixmaps/flags/mn.png
new file mode 100644
index 0000000..8e20c1d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mo.png b/deluge/ui/data/pixmaps/flags/mo.png
new file mode 100644
index 0000000..bbc14de
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mo.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mp.png b/deluge/ui/data/pixmaps/flags/mp.png
new file mode 100644
index 0000000..ab6d5b8
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mq.png b/deluge/ui/data/pixmaps/flags/mq.png
new file mode 100644
index 0000000..9f52d15
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mq.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mr.png b/deluge/ui/data/pixmaps/flags/mr.png
new file mode 100644
index 0000000..e335ec2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ms.png b/deluge/ui/data/pixmaps/flags/ms.png
new file mode 100644
index 0000000..addd144
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ms.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mt.png b/deluge/ui/data/pixmaps/flags/mt.png
new file mode 100644
index 0000000..497c59f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mu.png b/deluge/ui/data/pixmaps/flags/mu.png
new file mode 100644
index 0000000..38b6687
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mv.png b/deluge/ui/data/pixmaps/flags/mv.png
new file mode 100644
index 0000000..1185f13
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mw.png b/deluge/ui/data/pixmaps/flags/mw.png
new file mode 100644
index 0000000..d68ffee
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mx.png b/deluge/ui/data/pixmaps/flags/mx.png
new file mode 100644
index 0000000..996bcae
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mx.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/my.png b/deluge/ui/data/pixmaps/flags/my.png
new file mode 100644
index 0000000..2b13696
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/my.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mz.png b/deluge/ui/data/pixmaps/flags/mz.png
new file mode 100644
index 0000000..484e998
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/mz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/na.png b/deluge/ui/data/pixmaps/flags/na.png
new file mode 100644
index 0000000..806e2d6
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/na.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nc.png b/deluge/ui/data/pixmaps/flags/nc.png
new file mode 100644
index 0000000..de2314a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/nc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ne.png b/deluge/ui/data/pixmaps/flags/ne.png
new file mode 100644
index 0000000..f76deb1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ne.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nf.png b/deluge/ui/data/pixmaps/flags/nf.png
new file mode 100644
index 0000000..5ddabca
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/nf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ng.png b/deluge/ui/data/pixmaps/flags/ng.png
new file mode 100644
index 0000000..4e66ac3
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ng.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ni.png b/deluge/ui/data/pixmaps/flags/ni.png
new file mode 100644
index 0000000..6d0cd86
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ni.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nl.png b/deluge/ui/data/pixmaps/flags/nl.png
new file mode 100644
index 0000000..b0653cc
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/nl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/no.png b/deluge/ui/data/pixmaps/flags/no.png
new file mode 100644
index 0000000..faaa529
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/no.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/np.png b/deluge/ui/data/pixmaps/flags/np.png
new file mode 100644
index 0000000..9e16108
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/np.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nr.png b/deluge/ui/data/pixmaps/flags/nr.png
new file mode 100644
index 0000000..c28d3ee
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/nr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nu.png b/deluge/ui/data/pixmaps/flags/nu.png
new file mode 100644
index 0000000..9e82b5e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/nu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nz.png b/deluge/ui/data/pixmaps/flags/nz.png
new file mode 100644
index 0000000..db73874
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/nz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/om.png b/deluge/ui/data/pixmaps/flags/om.png
new file mode 100644
index 0000000..aa02242
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/om.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pa.png b/deluge/ui/data/pixmaps/flags/pa.png
new file mode 100644
index 0000000..810268a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pa.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pe.png b/deluge/ui/data/pixmaps/flags/pe.png
new file mode 100644
index 0000000..9fc0740
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pe.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pf.png b/deluge/ui/data/pixmaps/flags/pf.png
new file mode 100644
index 0000000..9a05d66
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pg.png b/deluge/ui/data/pixmaps/flags/pg.png
new file mode 100644
index 0000000..e4ec2d1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ph.png b/deluge/ui/data/pixmaps/flags/ph.png
new file mode 100644
index 0000000..4232094
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ph.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pk.png b/deluge/ui/data/pixmaps/flags/pk.png
new file mode 100644
index 0000000..bb4822f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pl.png b/deluge/ui/data/pixmaps/flags/pl.png
new file mode 100644
index 0000000..843568a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pm.png b/deluge/ui/data/pixmaps/flags/pm.png
new file mode 100644
index 0000000..f167375
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pn.png b/deluge/ui/data/pixmaps/flags/pn.png
new file mode 100644
index 0000000..8577faf
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pr.png b/deluge/ui/data/pixmaps/flags/pr.png
new file mode 100644
index 0000000..0dc6d8d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ps.png b/deluge/ui/data/pixmaps/flags/ps.png
new file mode 100644
index 0000000..3955b5c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ps.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pt.png b/deluge/ui/data/pixmaps/flags/pt.png
new file mode 100644
index 0000000..ee95fc8
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pw.png b/deluge/ui/data/pixmaps/flags/pw.png
new file mode 100644
index 0000000..43d9dcb
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/pw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/py.png b/deluge/ui/data/pixmaps/flags/py.png
new file mode 100644
index 0000000..bc5d77d
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/py.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/qa.png b/deluge/ui/data/pixmaps/flags/qa.png
new file mode 100644
index 0000000..09709cc
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/qa.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/re.png b/deluge/ui/data/pixmaps/flags/re.png
new file mode 100644
index 0000000..84dd917
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/re.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ro.png b/deluge/ui/data/pixmaps/flags/ro.png
new file mode 100644
index 0000000..594f245
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ro.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/rs.png b/deluge/ui/data/pixmaps/flags/rs.png
new file mode 100644
index 0000000..03176f7
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/rs.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ru.png b/deluge/ui/data/pixmaps/flags/ru.png
new file mode 100644
index 0000000..723f732
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ru.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/rw.png b/deluge/ui/data/pixmaps/flags/rw.png
new file mode 100644
index 0000000..c7e422a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/rw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sa.png b/deluge/ui/data/pixmaps/flags/sa.png
new file mode 100644
index 0000000..bd19de2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sa.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sb.png b/deluge/ui/data/pixmaps/flags/sb.png
new file mode 100644
index 0000000..65998c6
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sb.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sc.png b/deluge/ui/data/pixmaps/flags/sc.png
new file mode 100644
index 0000000..e0bbfa7
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sd.png b/deluge/ui/data/pixmaps/flags/sd.png
new file mode 100644
index 0000000..cbca3d2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sd.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/se.png b/deluge/ui/data/pixmaps/flags/se.png
new file mode 100644
index 0000000..e3d273a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/se.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sg.png b/deluge/ui/data/pixmaps/flags/sg.png
new file mode 100644
index 0000000..898748b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sh.png b/deluge/ui/data/pixmaps/flags/sh.png
new file mode 100644
index 0000000..cb5282e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/si.png b/deluge/ui/data/pixmaps/flags/si.png
new file mode 100644
index 0000000..d2f976b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/si.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sj.png b/deluge/ui/data/pixmaps/flags/sj.png
new file mode 100644
index 0000000..faaa529
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sk.png b/deluge/ui/data/pixmaps/flags/sk.png
new file mode 100644
index 0000000..6f36d14
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sl.png b/deluge/ui/data/pixmaps/flags/sl.png
new file mode 100644
index 0000000..3d70d22
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sm.png b/deluge/ui/data/pixmaps/flags/sm.png
new file mode 100644
index 0000000..168dc78
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sn.png b/deluge/ui/data/pixmaps/flags/sn.png
new file mode 100644
index 0000000..3be2d4c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/so.png b/deluge/ui/data/pixmaps/flags/so.png
new file mode 100644
index 0000000..c3169fa
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/so.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sr.png b/deluge/ui/data/pixmaps/flags/sr.png
new file mode 100644
index 0000000..006f86f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/st.png b/deluge/ui/data/pixmaps/flags/st.png
new file mode 100644
index 0000000..086db35
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/st.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sv.png b/deluge/ui/data/pixmaps/flags/sv.png
new file mode 100644
index 0000000..691fc66
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sy.png b/deluge/ui/data/pixmaps/flags/sy.png
new file mode 100644
index 0000000..5a28ce6
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sy.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sz.png b/deluge/ui/data/pixmaps/flags/sz.png
new file mode 100644
index 0000000..fba6bef
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/sz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tc.png b/deluge/ui/data/pixmaps/flags/tc.png
new file mode 100644
index 0000000..dfecacd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/td.png b/deluge/ui/data/pixmaps/flags/td.png
new file mode 100644
index 0000000..27b6cb8
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/td.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tf.png b/deluge/ui/data/pixmaps/flags/tf.png
new file mode 100644
index 0000000..0f56fa0
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tg.png b/deluge/ui/data/pixmaps/flags/tg.png
new file mode 100644
index 0000000..fecc10c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/th.png b/deluge/ui/data/pixmaps/flags/th.png
new file mode 100644
index 0000000..744865f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/th.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tj.png b/deluge/ui/data/pixmaps/flags/tj.png
new file mode 100644
index 0000000..837dd2c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tk.png b/deluge/ui/data/pixmaps/flags/tk.png
new file mode 100644
index 0000000..218ca79
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tl.png b/deluge/ui/data/pixmaps/flags/tl.png
new file mode 100644
index 0000000..843ec67
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tm.png b/deluge/ui/data/pixmaps/flags/tm.png
new file mode 100644
index 0000000..6356f3c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tn.png b/deluge/ui/data/pixmaps/flags/tn.png
new file mode 100644
index 0000000..fdf73c0
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/to.png b/deluge/ui/data/pixmaps/flags/to.png
new file mode 100644
index 0000000..7bd4389
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/to.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tp.png b/deluge/ui/data/pixmaps/flags/tp.png
new file mode 100644
index 0000000..a8bb82f
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tr.png b/deluge/ui/data/pixmaps/flags/tr.png
new file mode 100644
index 0000000..34b5a1c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tt.png b/deluge/ui/data/pixmaps/flags/tt.png
new file mode 100644
index 0000000..7ff729b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tv.png b/deluge/ui/data/pixmaps/flags/tv.png
new file mode 100644
index 0000000..ff201fd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tw.png b/deluge/ui/data/pixmaps/flags/tw.png
new file mode 100644
index 0000000..9bf75fd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tz.png b/deluge/ui/data/pixmaps/flags/tz.png
new file mode 100644
index 0000000..38fbdf1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/tz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ua.png b/deluge/ui/data/pixmaps/flags/ua.png
new file mode 100644
index 0000000..08e38f9
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ua.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ug.png b/deluge/ui/data/pixmaps/flags/ug.png
new file mode 100644
index 0000000..2fa3e44
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ug.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/um.png b/deluge/ui/data/pixmaps/flags/um.png
new file mode 100644
index 0000000..a0617bd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/um.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/us.png b/deluge/ui/data/pixmaps/flags/us.png
new file mode 100644
index 0000000..5e0b8cf
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/us.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/uy.png b/deluge/ui/data/pixmaps/flags/uy.png
new file mode 100644
index 0000000..e69713a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/uy.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/uz.png b/deluge/ui/data/pixmaps/flags/uz.png
new file mode 100644
index 0000000..5d3d7c1
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/uz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/va.png b/deluge/ui/data/pixmaps/flags/va.png
new file mode 100644
index 0000000..af8f6b2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/va.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vc.png b/deluge/ui/data/pixmaps/flags/vc.png
new file mode 100644
index 0000000..cf1d6e2
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/vc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ve.png b/deluge/ui/data/pixmaps/flags/ve.png
new file mode 100644
index 0000000..e26b28a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ve.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vg.png b/deluge/ui/data/pixmaps/flags/vg.png
new file mode 100644
index 0000000..3ece564
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/vg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vi.png b/deluge/ui/data/pixmaps/flags/vi.png
new file mode 100644
index 0000000..54d5c0e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/vi.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vn.png b/deluge/ui/data/pixmaps/flags/vn.png
new file mode 100644
index 0000000..8a69703
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/vn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vu.png b/deluge/ui/data/pixmaps/flags/vu.png
new file mode 100644
index 0000000..2794923
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/vu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/wf.png b/deluge/ui/data/pixmaps/flags/wf.png
new file mode 100644
index 0000000..574d08a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/wf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ws.png b/deluge/ui/data/pixmaps/flags/ws.png
new file mode 100644
index 0000000..6339a17
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ws.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ye.png b/deluge/ui/data/pixmaps/flags/ye.png
new file mode 100644
index 0000000..c9187dd
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/ye.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/yt.png b/deluge/ui/data/pixmaps/flags/yt.png
new file mode 100644
index 0000000..41ef4a7
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/yt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/yu.png b/deluge/ui/data/pixmaps/flags/yu.png
new file mode 100644
index 0000000..18fbde6
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/yu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/za.png b/deluge/ui/data/pixmaps/flags/za.png
new file mode 100644
index 0000000..04146b5
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/za.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/zm.png b/deluge/ui/data/pixmaps/flags/zm.png
new file mode 100644
index 0000000..363b4df
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/zm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/zw.png b/deluge/ui/data/pixmaps/flags/zw.png
new file mode 100644
index 0000000..030b147
--- /dev/null
+++ b/deluge/ui/data/pixmaps/flags/zw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/inactive.svg b/deluge/ui/data/pixmaps/inactive.svg
new file mode 100644
index 0000000..644f5f3
--- /dev/null
+++ b/deluge/ui/data/pixmaps/inactive.svg
@@ -0,0 +1,492 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="deluge_paused.svg"
+ inkscape:export-xdpi="960"
+ inkscape:export-ydpi="960"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/projects/deluge-logo/deluge.512.x.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile4484" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k1="8.1400000000000006"
+ k2="4.9299999999999997"
+ k3="5.5899999999999999"
+ k4="-7.2400000000000002" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.17254902"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="44.452879"
+ inkscape:cy="23.209575"
+ inkscape:current-layer="layer5"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="23.9375,24.5625"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="38.448931,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="base droplet"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter6406)"
+ d="M 23.295622,2.4822833 35.490217,21.297229 C 43.30243,33.350632 35.08691,46.383433 23.287956,46.383433 11.489002,46.383433 3.2602089,33.346045 11.079504,21.30073 Z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="paused icon">
+ <rect
+ style="display:inline;opacity:1;fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364"
+ width="5.5"
+ height="16"
+ x="25.3125"
+ y="22" />
+ <rect
+ style="display:inline;opacity:1;fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364-1"
+ width="5.5"
+ height="16"
+ x="17.125"
+ y="22" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/inactive16.png b/deluge/ui/data/pixmaps/inactive16.png
new file mode 100644
index 0000000..e434dad
--- /dev/null
+++ b/deluge/ui/data/pixmaps/inactive16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/loading.gif b/deluge/ui/data/pixmaps/loading.gif
new file mode 100644
index 0000000..09d621e
--- /dev/null
+++ b/deluge/ui/data/pixmaps/loading.gif
Binary files differ
diff --git a/deluge/ui/data/pixmaps/magnet.svg b/deluge/ui/data/pixmaps/magnet.svg
new file mode 100644
index 0000000..f470b33
--- /dev/null
+++ b/deluge/ui/data/pixmaps/magnet.svg
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg16888"
+ sodipodi:version="0.32"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+ sodipodi:docname="magnet.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.1"
+ inkscape:export-filename="/home/kali/code/deluge/deluge/ui/data/pixmaps/x-deluge-copy-magnet-uri-icon.png"
+ inkscape:export-xdpi="227.45343"
+ inkscape:export-ydpi="227.45343">
+ <defs
+ id="defs16890" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="9.3390267"
+ inkscape:cx="18.71894"
+ inkscape:cy="13.37636"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="925"
+ inkscape:window-x="0"
+ inkscape:window-y="31"
+ inkscape:grid-points="true"
+ inkscape:document-rotation="0"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata16893">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:date>November 2007</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Luca Ferretti</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>http://www.gnome.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>edit</rdf:li>
+ <rdf:li>copy</rdf:li>
+ <rdf:li>copy to clipboard</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/LGPL/2.1/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/LGPL/2.1/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="stroke-width:0.084844;fill:#ff0000;fill-opacity:1"
+ d="m 19.334232,31.418784 a 0.90623357,1.1438367 0 0 0 0.906233,-1.14384 V 25.31832 c 0,-12.210457 12.083111,-12.191395 12.083111,0 v 4.956624 a 0.90623357,1.1438367 0 0 0 0.906233,1.14384 h 11.471402 a 0.90623357,1.1438367 0 0 0 0.906234,-1.153375 c -0.0073,-2.039841 -0.04535,-3.841381 0,-5.080542 0,-14.35515 -10.283474,-23.5058431 -19.389614,-23.5058431 -9.106142,0 -19.257461,9.1506931 -19.257461,23.5153781 0.045378,1.220091 0.015034,3.145549 0,5.071007 a 0.90623357,1.1438367 0 0 0 0.9062351,1.153375 z"
+ id="path1134" />
+ <path
+ style="stroke-width:0.084844;fill:#515151;fill-opacity:0.54381627"
+ d="m 6.9490455,35.612845 v 7.63511 a 2.7187006,3.4315101 0 0 0 2.7186865,3.431514 h 7.85403 a 2.7187006,3.4315101 0 0 0 2.718703,-3.431514 V 35.62238 A 0.90623357,1.1438367 0 0 0 19.334232,34.478548 H 7.8552793 a 0.89792643,1.1333516 0 0 0 -0.9062338,1.134297 z"
+ id="path1132" />
+ <path
+ style="stroke-width:0.084844;fill:#515151;fill-opacity:0.54381627"
+ d="m 33.224525,34.469013 h 11.484252 a 0.90623357,1.1438367 0 0 1 0.906219,1.143832 v 7.625583 a 2.7187006,3.4315101 0 0 1 -2.718688,3.431506 h -7.85403 a 2.7187006,3.4315101 0 0 1 -2.718702,-3.431506 v -7.625583 a 0.89792643,1.1333516 0 0 1 0.900949,-1.143832 z"
+ id="path267" />
+ </g>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ style="display:none">
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:7.09866;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3157"
+ width="30.975992"
+ height="30.975992"
+ x="18.097294"
+ y="17.130117" />
+ <rect
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect11064"
+ width="15.487996"
+ height="13.551996"
+ x="21.323959"
+ y="31.327448"
+ ry="1.9584693" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect11066"
+ width="11.615996"
+ height="9.6799974"
+ x="23.259958"
+ y="33.263447"
+ ry="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 25.195958,36.167447 h 7.743998"
+ id="path12037" />
+ <path
+ id="path13008"
+ d="m 25.195958,40.039446 h 7.743998"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16900"
+ width="15.487996"
+ height="13.551996"
+ x="30.358624"
+ y="20.356785"
+ ry="2.0447536" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16902"
+ width="11.615996"
+ height="9.6799974"
+ x="32.294624"
+ y="22.292784"
+ ry="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 34.230623,25.196783 h 7.743998"
+ id="path16904" />
+ <path
+ id="path16906"
+ d="m 34.230623,29.068782 h 7.743998"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/magnet16.png b/deluge/ui/data/pixmaps/magnet16.png
new file mode 100644
index 0000000..6fc25ed
--- /dev/null
+++ b/deluge/ui/data/pixmaps/magnet16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/magnet_add.svg b/deluge/ui/data/pixmaps/magnet_add.svg
new file mode 100644
index 0000000..d9ba67a
--- /dev/null
+++ b/deluge/ui/data/pixmaps/magnet_add.svg
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg16888"
+ sodipodi:version="0.32"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+ sodipodi:docname="add-magnet.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.1"
+ inkscape:export-filename="/home/kali/code/deluge/deluge/ui/data/pixmaps/x-deluge-copy-magnet-uri-icon.png"
+ inkscape:export-xdpi="227.45343"
+ inkscape:export-ydpi="227.45343">
+ <defs
+ id="defs16890" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="6.6036891"
+ inkscape:cx="24.635975"
+ inkscape:cy="13.381649"
+ inkscape:current-layer="layer3"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="925"
+ inkscape:window-x="0"
+ inkscape:window-y="31"
+ inkscape:grid-points="true"
+ inkscape:document-rotation="0"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata16893">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:date>November 2007</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Luca Ferretti</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>http://www.gnome.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>edit</rdf:li>
+ <rdf:li>copy</rdf:li>
+ <rdf:li>copy to clipboard</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/LGPL/2.1/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/LGPL/2.1/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ff0000;fill-opacity:1;stroke-width:0.084844"
+ d="m 19.334232,31.418784 a 0.90623357,1.1438367 0 0 0 0.906233,-1.14384 V 25.31832 c 0,-12.210457 12.083111,-12.191395 12.083111,0 v 4.956624 a 0.90623357,1.1438367 0 0 0 0.906233,1.14384 h 11.471402 a 0.90623357,1.1438367 0 0 0 0.906234,-1.153375 c -0.0073,-2.039841 -0.04535,-3.841381 0,-5.080542 0,-14.35515 -10.283474,-23.5058431 -19.389614,-23.5058431 -9.106142,0 -19.257461,9.1506931 -19.257461,23.5153781 0.045378,1.220091 0.015034,3.145549 0,5.071007 a 0.90623357,1.1438367 0 0 0 0.9062351,1.153375 z"
+ id="path1134" />
+ <path
+ style="fill:#515151;fill-opacity:0.543816;stroke-width:0.084844"
+ d="m 6.9490455,35.612845 v 7.63511 a 2.7187006,3.4315101 0 0 0 2.7186865,3.431514 h 7.85403 a 2.7187006,3.4315101 0 0 0 2.718703,-3.431514 V 35.62238 A 0.90623357,1.1438367 0 0 0 19.334232,34.478548 H 7.8552793 a 0.89792643,1.1333516 0 0 0 -0.9062338,1.134297 z"
+ id="path1132" />
+ <path
+ style="fill:#515151;fill-opacity:0.543816;stroke-width:0.084844"
+ d="m 33.224525,34.469013 h 11.484252 a 0.90623357,1.1438367 0 0 1 0.906219,1.143832 v 7.625583 a 2.7187006,3.4315101 0 0 1 -2.718688,3.431506 h -7.85403 a 2.7187006,3.4315101 0 0 1 -2.718702,-3.431506 v -7.625583 a 0.89792643,1.1333516 0 0 1 0.900949,-1.143832 z"
+ id="path267" />
+ </g>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ style="display:none">
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:7.09866;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3157"
+ width="30.975992"
+ height="30.975992"
+ x="18.097294"
+ y="17.130117" />
+ <rect
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect11064"
+ width="15.487996"
+ height="13.551996"
+ x="21.323959"
+ y="31.327448"
+ ry="1.9584693" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect11066"
+ width="11.615996"
+ height="9.6799974"
+ x="23.259958"
+ y="33.263447"
+ ry="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 25.195958,36.167447 h 7.743998"
+ id="path12037" />
+ <path
+ id="path13008"
+ d="m 25.195958,40.039446 h 7.743998"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16900"
+ width="15.487996"
+ height="13.551996"
+ x="30.358624"
+ y="20.356785"
+ ry="2.0447536" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16902"
+ width="11.615996"
+ height="9.6799974"
+ x="32.294624"
+ y="22.292784"
+ ry="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 34.230623,25.196783 h 7.743998"
+ id="path16904" />
+ <path
+ id="path16906"
+ d="m 34.230623,29.068782 h 7.743998"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Layer 3">
+ <path
+ id="text1353"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#03ff48;fill-opacity:1;stroke:#000000;stroke-width:0.674513;stroke-opacity:1"
+ d="m 8.4078166,2.1897337 c 10e-7,1.9963132 0,3.9926271 0,5.9889403 -2.445989,0 -4.891978,0 -7.337967,0 0,2.545234 0,5.090468 0,7.635701 2.445989,0 4.891978,0 7.337967,0 0,2.445989 0,4.891978 0,7.337968 2.5364514,0 5.0729034,0 7.6093534,0 1e-6,-2.44599 0,-4.891979 0,-7.337968 2.44599,0 4.891979,0 7.337968,0 0,-2.545233 0,-5.090467 0,-7.635701 -2.445989,0 -4.891978,0 -7.337968,0 1e-6,-2.445989 0,-4.891978 0,-7.33796734 -2.53645,0 -5.072902,0 -7.6093534,0 0,0.44967504 10e-7,0.89935104 0,1.34902704 z" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/magnet_add16.png b/deluge/ui/data/pixmaps/magnet_add16.png
new file mode 100644
index 0000000..f6010f5
--- /dev/null
+++ b/deluge/ui/data/pixmaps/magnet_add16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/magnet_copy.svg b/deluge/ui/data/pixmaps/magnet_copy.svg
new file mode 100644
index 0000000..dd4ba42
--- /dev/null
+++ b/deluge/ui/data/pixmaps/magnet_copy.svg
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg16888"
+ sodipodi:version="0.32"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+ sodipodi:docname="copy-magnet.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.1">
+ <defs
+ id="defs16890" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="9.3390267"
+ inkscape:cx="20.00387"
+ inkscape:cy="13.37636"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="925"
+ inkscape:window-x="0"
+ inkscape:window-y="31"
+ inkscape:grid-points="true"
+ inkscape:document-rotation="0"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata16893">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:date>November 2007</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Luca Ferretti</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>http://www.gnome.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>edit</rdf:li>
+ <rdf:li>copy</rdf:li>
+ <rdf:li>copy to clipboard</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/LGPL/2.1/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/LGPL/2.1/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="stroke-width:0.084844;fill:#ff0000;fill-opacity:1"
+ d="m 19.334232,31.418784 a 0.90623357,1.1438367 0 0 0 0.906233,-1.14384 V 25.31832 c 0,-12.210457 12.083111,-12.191395 12.083111,0 v 4.956624 a 0.90623357,1.1438367 0 0 0 0.906233,1.14384 h 11.471402 a 0.90623357,1.1438367 0 0 0 0.906234,-1.153375 c -0.0073,-2.039841 -0.04535,-3.841381 0,-5.080542 0,-14.35515 -10.283474,-23.5058431 -19.389614,-23.5058431 -9.106142,0 -19.257461,9.1506931 -19.257461,23.5153781 0.045378,1.220091 0.015034,3.145549 0,5.071007 a 0.90623357,1.1438367 0 0 0 0.9062351,1.153375 z"
+ id="path1134" />
+ <path
+ style="stroke-width:0.084844;fill:#515151;fill-opacity:0.54381627"
+ d="m 6.9490455,35.612845 v 7.63511 a 2.7187006,3.4315101 0 0 0 2.7186865,3.431514 h 7.85403 a 2.7187006,3.4315101 0 0 0 2.718703,-3.431514 V 35.62238 A 0.90623357,1.1438367 0 0 0 19.334232,34.478548 H 7.8552793 a 0.89792643,1.1333516 0 0 0 -0.9062338,1.134297 z"
+ id="path1132" />
+ <path
+ style="stroke-width:0.084844;fill:#515151;fill-opacity:0.54381627"
+ d="m 33.224525,34.469013 h 11.484252 a 0.90623357,1.1438367 0 0 1 0.906219,1.143832 v 7.625583 a 2.7187006,3.4315101 0 0 1 -2.718688,3.431506 h -7.85403 a 2.7187006,3.4315101 0 0 1 -2.718702,-3.431506 v -7.625583 a 0.89792643,1.1333516 0 0 1 0.900949,-1.143832 z"
+ id="path267" />
+ </g>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:7.09866;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3157"
+ width="30.975992"
+ height="30.975992"
+ x="18.097294"
+ y="17.130117" />
+ <rect
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect11064"
+ width="15.487996"
+ height="13.551996"
+ x="21.323959"
+ y="31.327448"
+ ry="1.9584693" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect11066"
+ width="11.615996"
+ height="9.6799974"
+ x="23.259958"
+ y="33.263447"
+ ry="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 25.195958,36.167447 h 7.743998"
+ id="path12037" />
+ <path
+ id="path13008"
+ d="m 25.195958,40.039446 h 7.743998"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16900"
+ width="15.487996"
+ height="13.551996"
+ x="30.358624"
+ y="20.356785"
+ ry="2.0447536" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.16267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16902"
+ width="11.615996"
+ height="9.6799974"
+ x="32.294624"
+ y="22.292784"
+ ry="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 34.230623,25.196783 h 7.743998"
+ id="path16904" />
+ <path
+ id="path16906"
+ d="m 34.230623,29.068782 h 7.743998"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/magnet_copy16.png b/deluge/ui/data/pixmaps/magnet_copy16.png
new file mode 100644
index 0000000..9b4ec6b
--- /dev/null
+++ b/deluge/ui/data/pixmaps/magnet_copy16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/queued.svg b/deluge/ui/data/pixmaps/queued.svg
new file mode 100644
index 0000000..a3c2d1c
--- /dev/null
+++ b/deluge/ui/data/pixmaps/queued.svg
@@ -0,0 +1,532 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="queued.svg"
+ inkscape:export-xdpi="960"
+ inkscape:export-ydpi="960"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/projects/deluge-logo/deluge.512.x.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile4484" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k1="8.1400000000000006"
+ k2="4.9299999999999997"
+ k3="5.5899999999999999"
+ k4="-7.2400000000000002" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.17254902"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="26.569169"
+ inkscape:cy="27.737594"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="23.9375,24.5625"
+ id="guide3058"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="38.448931,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid4206" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="base droplet"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="fill:#dcdc00;fill-opacity:1;fill-rule:evenodd;stroke:#b4b400;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
+ d="M 23.295622,2.4822833 35.490217,21.297229 C 43.30243,33.350632 35.08691,46.383433 23.287956,46.383433 11.489002,46.383433 3.2602089,33.346045 11.079504,21.30073 Z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="queue icon"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#6a6a00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.03118205;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4221-3-6"
+ width="16"
+ height="4"
+ x="16"
+ y="30.238995" />
+ <rect
+ style="display:inline;opacity:1;fill:#6a6a00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.03118205;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4221-3-9"
+ width="16"
+ height="4"
+ x="16"
+ y="23.873394" />
+ <path
+ sodipodi:type="star"
+ style="display:inline;opacity:1;fill:#6a6a00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.97536206;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4266-5"
+ sodipodi:sides="3"
+ sodipodi:cx="23.909048"
+ sodipodi:cy="17.006021"
+ sodipodi:r1="0.024637857"
+ sodipodi:r2="0.012318929"
+ sodipodi:arg1="3.1415927"
+ sodipodi:arg2="4.1887903"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 23.88441,17.006021 0.01848,-0.01067 0.01848,-0.01067 0,0.02134 0,0.02134 -0.01848,-0.01067 z"
+ transform="matrix(0,121.76383,-210.90115,0,3610.5895,-2890.8119)"
+ inkscape:transform-center-y="-0.7497936"
+ inkscape:transform-center-x="2.0998475e-05" />
+ <path
+ sodipodi:type="star"
+ style="display:inline;opacity:1;fill:#6a6a00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.97536206;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4266-5-3"
+ sodipodi:sides="3"
+ sodipodi:cx="23.909048"
+ sodipodi:cy="17.006021"
+ sodipodi:r1="0.024637857"
+ sodipodi:r2="0.012318929"
+ sodipodi:arg1="3.1415927"
+ sodipodi:arg2="4.1887903"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 23.88441,17.006021 0.01848,-0.01067 0.01848,-0.01067 0,0.02134 0,0.02134 -0.01848,-0.01067 z"
+ transform="matrix(0,-121.76383,210.90115,0,-3562.5895,2948.8304)"
+ inkscape:transform-center-y="0.74972138"
+ inkscape:transform-center-x="-0.00022730407" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/queued16.png b/deluge/ui/data/pixmaps/queued16.png
new file mode 100644
index 0000000..74db4c5
--- /dev/null
+++ b/deluge/ui/data/pixmaps/queued16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/seeding.svg b/deluge/ui/data/pixmaps/seeding.svg
new file mode 100644
index 0000000..e98b4a0
--- /dev/null
+++ b/deluge/ui/data/pixmaps/seeding.svg
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg3440"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="seeding.svg"
+ inkscape:export-xdpi="960"
+ inkscape:export-ydpi="960"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ version="1.1"
+ inkscape:export-filename="/home/calum/projects/deluge-logo/deluge.512.x.png">
+ <defs
+ id="defs3">
+ <color-profile
+ name="sRGB"
+ xlink:href="/usr/share/color/icc/sRGB.icc"
+ id="color-profile4484" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2973">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2975" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2977" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845;"
+ offset="1.0000000"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1.0000000;"
+ offset="0.75000000"
+ id="stop4346" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3966" />
+ </linearGradient>
+ <radialGradient
+ r="13.994944"
+ fy="33.506763"
+ fx="-10.089286"
+ cy="33.506763"
+ cx="-10.089286"
+ gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4019"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4004"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
+ r="14.057444"
+ fy="31.329016"
+ fx="-10.323107"
+ cy="31.329016"
+ cx="-10.323107"
+ id="radialGradient3999"
+ xlink:href="#linearGradient3993"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
+ r="13.994946"
+ fy="24.241488"
+ fx="61.662098"
+ cy="24.241488"
+ cx="61.662098"
+ id="radialGradient3943"
+ xlink:href="#linearGradient1312"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient1312">
+ <stop
+ id="stop1314"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop1316"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3993">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3997" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="radialGradient3866"
+ cx="-22.375"
+ cy="18.499998"
+ fx="-22.375"
+ fy="18.499998"
+ r="14.33462"
+ gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="12.289036"
+ fy="63.965388"
+ fx="15.115514"
+ cy="63.965388"
+ cx="15.115514"
+ gradientTransform="scale(1.643990,0.608276)"
+ id="radialGradient5000"
+ xlink:href="#linearGradient4114"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4989">
+ <stop
+ id="stop4991"
+ offset="0"
+ style="stop-color:#47abff;stop-opacity:1" />
+ <stop
+ id="stop4993"
+ offset="0.35955963"
+ style="stop-color:#53a6ff;stop-opacity:1" />
+ <stop
+ id="stop4995"
+ offset="0.79518169"
+ style="stop-color:#286cbb;stop-opacity:1" />
+ <stop
+ id="stop4997"
+ offset="1"
+ style="stop-color:#003d87;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4977">
+ <stop
+ id="stop4979"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop4981"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <filter
+ id="filter6406"
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ height="1.2"
+ width="1.2"
+ y="-0.15000000000000002"
+ x="-0.050000000000000017">
+ <feFlood
+ id="feFlood6408"
+ flood-opacity="0.50171821305841924"
+ flood-color="rgb(50,51,108)"
+ result="flood"
+ stdDeviation="0.01" />
+ <feComposite
+ id="feComposite6410"
+ in2="SourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1"
+ k1="8.1400000000000006"
+ k2="4.9299999999999997"
+ k3="5.5899999999999999"
+ k4="-7.2400000000000002" />
+ <feGaussianBlur
+ id="feGaussianBlur6412"
+ stdDeviation="0.20000000000000001"
+ result="blur"
+ in="composite" />
+ <feOffset
+ id="feOffset6414"
+ dx="0.29999999999999999"
+ dy="0.29999999999999999"
+ result="offset"
+ flood-opacity="0.5" />
+ <feComposite
+ id="feComposite6416"
+ in2="offset"
+ in="SourceGraphic"
+ result="composite2"
+ operator="" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Drop Shadow"
+ id="filter4258">
+ <feFlood
+ flood-opacity="0.80200501253132828"
+ flood-color="rgb(197,204,222)"
+ result="flood"
+ id="feFlood4260" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4262"
+ flood-opacity="0.80000000000000004" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0.5"
+ result="blur"
+ id="feGaussianBlur4264" />
+ <feOffset
+ dx="-0"
+ dy="-0.5"
+ result="offset"
+ id="feOffset4266" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite4268" />
+ </filter>
+ <filter
+ id="filter4290"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB;">
+ <feFlood
+ id="feFlood4292"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.59999999999999998" />
+ <feComposite
+ id="feComposite4294"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4296"
+ result="blur"
+ stdDeviation="6.7999999999999998"
+ in="composite1" />
+ <feOffset
+ id="feOffset4298"
+ result="offset"
+ dy="1.9000000000000004"
+ dx="0.69999999999999996"
+ flood-opacity="0.68000000000000005" />
+ <feComposite
+ id="feComposite4300"
+ result="composite2"
+ in2="offset"
+ in="SourceGraphic"
+ operator="" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.17254902"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="33.265379"
+ inkscape:cy="23.209575"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="1"
+ width="512px"
+ units="px"
+ inkscape:snap-global="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-others="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="4.331,47"
+ id="guide3056"
+ inkscape:label=""
+ inkscape:color="rgb(99,99,125)" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="40,25.375"
+ id="guide5866" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="38.448931,29.742679"
+ id="guide5868" />
+ <sodipodi:guide
+ position="3.8890873,1"
+ orientation="0,1"
+ id="guide4521"
+ inkscape:label=""
+ inkscape:color="rgb(106,106,146)" />
+ <sodipodi:guide
+ position="1,17.324"
+ orientation="1,0"
+ id="guide4523"
+ inkscape:label=""
+ inkscape:color="rgb(152,152,181)" />
+ <sodipodi:guide
+ position="47,33.852737"
+ orientation="1,0"
+ id="guide4525"
+ inkscape:label=""
+ inkscape:color="rgb(121,121,172)" />
+ <sodipodi:guide
+ position="13.433908,46"
+ orientation="0,1"
+ id="guide4527"
+ inkscape:label=""
+ inkscape:color="rgb(255,40,0)" />
+ <sodipodi:guide
+ position="8,36.135"
+ orientation="1,0"
+ id="guide4529"
+ inkscape:label=""
+ inkscape:color="rgb(255,11,0)" />
+ <sodipodi:guide
+ position="40,26.436782"
+ orientation="1,0"
+ id="guide4531"
+ inkscape:label=""
+ inkscape:color="rgb(255,6,0)" />
+ <sodipodi:guide
+ position="34.052,2"
+ orientation="0,1"
+ id="guide4533"
+ inkscape:label=""
+ inkscape:color="rgb(255,0,5)" />
+ <sodipodi:guide
+ position="36.879276,26"
+ orientation="0,1"
+ id="guide4542"
+ inkscape:label=""
+ inkscape:color="rgb(0,0,255)" />
+ <sodipodi:guide
+ position="43.660795,14.731391"
+ orientation="0,1"
+ id="guide4546" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid4215" />
+ <sodipodi:guide
+ position="24,45"
+ orientation="1,0"
+ id="guide4225" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Tuomas Kuosmanen</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>internet</rdf:li>
+ <rdf:li>tools</rdf:li>
+ <rdf:li>applications</rdf:li>
+ <rdf:li>category</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="base droplet"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ style="fill:#6699ff;fill-opacity:1;fill-rule:evenodd;stroke:#3366cc;stroke-width:3.27999091;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
+ d="M 23.295622,2.4822833 35.490217,21.297229 C 43.30243,33.350632 35.08691,46.383433 23.287956,46.383433 11.489002,46.383433 3.2602089,33.346045 11.079504,21.30073 Z"
+ id="path2069"
+ sodipodi:nodetypes="cszsc"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.90726715,0,0,0.89972834,2.9383017,2.518482)" />
+ <rect
+ style="display:inline;opacity:1;fill:#0f3171;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364-1-36"
+ width="8.5"
+ height="4.5"
+ x="19.760511"
+ y="33" />
+ <path
+ sodipodi:type="star"
+ style="display:inline;opacity:1;fill:#0f3171;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5039-7"
+ sodipodi:sides="3"
+ sodipodi:cx="23.9375"
+ sodipodi:cy="21.1875"
+ sodipodi:r1="4.6958261"
+ sodipodi:r2="2.347913"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 28.004205,23.535413 -4.066705,0 -4.066705,0 2.033353,-3.521869 2.033352,-3.52187 2.033352,3.521869 z"
+ transform="matrix(1.9671947,0,0,1.1180142,-23.156428,-1.2587488)"
+ inkscape:transform-center-y="1.3125004" />
+ <rect
+ style="display:inline;opacity:1;fill:#0f3171;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4364-1-3"
+ width="8.5"
+ height="4.5"
+ x="19.74159"
+ y="26.902088" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="paused icon" />
+</svg>
diff --git a/deluge/ui/data/pixmaps/seeding16.png b/deluge/ui/data/pixmaps/seeding16.png
new file mode 100644
index 0000000..2d9dc58
--- /dev/null
+++ b/deluge/ui/data/pixmaps/seeding16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/tracker_all16.png b/deluge/ui/data/pixmaps/tracker_all16.png
new file mode 100644
index 0000000..10a8f98
--- /dev/null
+++ b/deluge/ui/data/pixmaps/tracker_all16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/tracker_warning16.png b/deluge/ui/data/pixmaps/tracker_warning16.png
new file mode 100644
index 0000000..7c29972
--- /dev/null
+++ b/deluge/ui/data/pixmaps/tracker_warning16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/traffic.svg b/deluge/ui/data/pixmaps/traffic.svg
new file mode 100644
index 0000000..bea6164
--- /dev/null
+++ b/deluge/ui/data/pixmaps/traffic.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="128"
+ height="128"
+ id="svg2517"
+ sodipodi:version="0.32"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="traffic.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andrew/Projects/deluge/trunk/deluge/data/pixmaps/traffic16.png"
+ inkscape:export-xdpi="2.459017"
+ inkscape:export-ydpi="2.459017"
+ version="1.1">
+ <defs
+ id="defs2519">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2525" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="56.051291"
+ inkscape:cy="66.506813"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1861"
+ inkscape:window-height="1176"
+ inkscape:window-x="59"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3336"
+ empspacing="1"
+ dotted="false" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2522">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-924.36218)">
+ <path
+ style="opacity:1;fill:#4c90e8;fill-opacity:1;stroke:#000000;stroke-width:4.088;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 79.742286,929.51964 c -14.206752,13.93715 -28.471266,27.83834 -42.678018,41.77545 7.643855,0.014 15.306814,-0.0139 22.950711,0 0,16.50389 0,33.00771 0,49.51151 13.581299,0 27.16264,0 40.743951,0 0,-16.4609 0,-32.92164 0,-49.38258 7.04267,0.0129 14.10294,-0.0129 21.14561,0 -14.04989,-13.98881 -28.112421,-27.91554 -42.162254,-41.90438 z"
+ id="rect2634"
+ inkscape:export-filename="/home/andrew/Projects/deluge/trunk/deluge/data/pixmaps/traffic32.png"
+ inkscape:export-xdpi="4.9180341"
+ inkscape:export-ydpi="4.9180341"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:#16c816;fill-opacity:1;stroke:#000000;stroke-width:4.088;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 48.980975,1047.5605 c -14.206752,-13.9372 -28.471263,-27.8383 -42.6780126,-41.7755 7.6438566,-0.014 15.3068146,0.014 22.9507156,0 0,-16.5037 0,-33.00759 0,-49.51147 13.581288,0 27.162629,0 40.74397,0 0,16.46089 0,32.92179 0,49.38257 7.042653,-0.014 14.102929,0.013 21.145603,0 -14.049885,13.9888 -28.112433,27.9156 -42.162276,41.9044 z"
+ id="path2528"
+ inkscape:export-filename="/home/andrew/Projects/deluge/trunk/deluge/data/pixmaps/traffic32.png"
+ inkscape:export-xdpi="4.9180341"
+ inkscape:export-ydpi="4.9180341"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/deluge/ui/data/pixmaps/traffic16.png b/deluge/ui/data/pixmaps/traffic16.png
new file mode 100644
index 0000000..b4ce5ea
--- /dev/null
+++ b/deluge/ui/data/pixmaps/traffic16.png
Binary files differ
diff --git a/deluge/ui/data/share/applications/deluge.desktop.in b/deluge/ui/data/share/applications/deluge.desktop.in
new file mode 100644
index 0000000..4335b6d
--- /dev/null
+++ b/deluge/ui/data/share/applications/deluge.desktop.in
@@ -0,0 +1,17 @@
+[Desktop Entry]
+Version=1.0
+_Name=Deluge
+_GenericName=BitTorrent Client
+_X-GNOME-FullName=Deluge BitTorrent Client
+_Comment=Download and share files over BitTorrent
+_Keywords=bittorrent;torrent;magnet;download;p2p;torrents;downloading;uploading;share;sharing;
+TryExec=deluge-gtk
+Exec=deluge-gtk %U
+Icon=deluge
+Terminal=false
+Type=Application
+Categories=Network;FileTransfer;P2P;GTK;
+StartupWMClass=deluge
+StartupNotify=true
+MimeType=application/x-bittorrent;x-scheme-handler/magnet;
+X-GNOME-UsesNotifications=true
diff --git a/deluge/ui/data/share/metainfo/deluge.metainfo.xml.in b/deluge/ui/data/share/metainfo/deluge.metainfo.xml.in
new file mode 100644
index 0000000..dcbf063
--- /dev/null
+++ b/deluge/ui/data/share/metainfo/deluge.metainfo.xml.in
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop">
+ <id>deluge.desktop</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>GPL-3.0+</project_license>
+ <translation type="gettext">deluge</translation>
+ <_developer_name>Deluge Team</_developer_name>
+ <_summary>
+ Deluge is a lightweight, Free Software, cross-platform BitTorrent client.
+ </_summary>
+ <url type="homepage">https://www.deluge-torrent.org/</url>
+ <url type="bugtracker">https://dev.deluge-torrent.org</url>
+ <description>
+ <_p>Deluge contains the common features to BitTorrent clients such as
+ Protocol Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX),
+ UPnP, NAT-PMP, Proxy support, Web seeds, global and per-torrent speed
+ limits. As Deluge heavily utilises the libtorrent library it has a
+ comprehensive list of the features provided.</_p>
+ <_p>Deluge has been designed to run as both a normal standalone desktop
+ application and as a client-server. In Thinclient mode a Deluge daemon
+ handles all the BitTorrent activity and is able to run on headless machines
+ with the user-interfaces connecting remotely from any other platform.</_p>
+ </description>
+ <screenshots>
+ <screenshot type="default">
+ <image>https://upload.wikimedia.org/wikipedia/commons/5/50/Deluge-torrent.png</image>
+ </screenshot>
+ </screenshots>
+ <launchable type="desktop-id">deluge.desktop</launchable>
+</component>
diff --git a/deluge/ui/gtk3/__init__.py b/deluge/ui/gtk3/__init__.py
new file mode 100644
index 0000000..d1b4ec5
--- /dev/null
+++ b/deluge/ui/gtk3/__init__.py
@@ -0,0 +1,63 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+from os import environ
+
+from deluge.ui.ui import UI
+
+log = logging.getLogger(__name__)
+# Hide pygame community banner
+environ['PYGAME_HIDE_SUPPORT_PROMPT'] = '1'
+
+
+# Keep this class in __init__.py to avoid the console having to import everything in gtkui.py
+class Gtk(UI):
+ cmd_description = """GTK-based graphical user interface"""
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(
+ 'gtk', *args, description='Starts the Deluge GTK+ interface', **kwargs
+ )
+
+ group = self.parser.add_argument_group(_('GTK Options'))
+ group.add_argument(
+ 'torrents',
+ metavar='<torrent>',
+ nargs='*',
+ default=None,
+ help=_(
+ 'Add one or more torrent files, torrent URLs or magnet URIs'
+ ' to a currently running Deluge GTK instance'
+ ),
+ )
+
+ def start(self):
+ super().start()
+ import deluge.common
+
+ from .gtkui import GtkUI
+
+ def run(options):
+ try:
+ gtkui = GtkUI(options)
+ gtkui.start()
+ except Exception as ex:
+ log.exception(ex)
+ raise
+
+ deluge.common.run_profiled(
+ run,
+ self.options,
+ output_file=self.options.profile,
+ do_profile=self.options.profile,
+ )
+
+
+def start():
+ Gtk().start()
diff --git a/deluge/ui/gtk3/aboutdialog.py b/deluge/ui/gtk3/aboutdialog.py
new file mode 100644
index 0000000..fe3452b
--- /dev/null
+++ b/deluge/ui/gtk3/aboutdialog.py
@@ -0,0 +1,854 @@
+#
+# Copyright (C) 2007 Marcos Mobley ('markybob') <markybob@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from datetime import date
+
+from gi.repository import Gtk
+
+import deluge.component as component
+from deluge.common import get_version, open_url_in_browser, windows_check
+from deluge.ui.client import client
+
+from .common import get_deluge_icon, get_pixbuf
+
+
+class AboutDialog:
+ def __init__(self):
+ self.about = Gtk.AboutDialog()
+ self.about.set_transient_for(component.get('MainWindow').window)
+ self.about.set_position(Gtk.WindowPosition.CENTER)
+ self.about.set_name(_('Deluge'))
+ self.about.set_program_name(_('Deluge'))
+ if windows_check():
+
+ def url_hook(dialog, url):
+ """Url hook for Windows OS which has no default browser."""
+ open_url_in_browser(url)
+ return True
+
+ self.about.connect('activate-link', url_hook)
+
+ version = get_version()
+
+ self.about.set_copyright(
+ _('Copyright %(year_start)s-%(year_end)s Deluge Team')
+ % {'year_start': 2007, 'year_end': date.today().year}
+ )
+ self.about.set_comments(
+ _('A peer-to-peer file sharing program\nutilizing the BitTorrent protocol.')
+ + '\n\n'
+ + _('Client:')
+ + ' %s\n' % version
+ )
+ self.about.set_version(version)
+ self.about.set_authors(
+ [
+ _('Current Developers:'),
+ 'Andrew Resch',
+ 'Damien Churchill',
+ 'John Garland',
+ 'Calum Lind',
+ '',
+ 'libtorrent (libtorrent.org):',
+ 'Arvid Norberg',
+ '',
+ _('Past Developers or Contributors:'),
+ 'Zach Tibbitts',
+ 'Alon Zakai',
+ 'Marcos Mobley',
+ 'Alex Dedul',
+ 'Sadrul Habib Chowdhury',
+ 'Ido Abramovich',
+ 'Martijn Voncken',
+ ]
+ )
+ self.about.set_artists(['Andrew Wedderburn', 'Andrew Resch'])
+ self.about.set_translator_credits(
+ '\n'.join(
+ [
+ 'Aaron Wang Shi',
+ 'abbigss',
+ 'ABCdatos',
+ 'Abcx',
+ 'Actam',
+ 'Adam',
+ 'adaminikisi',
+ 'adi_oporanu',
+ 'Adrian Goll',
+ 'afby',
+ 'Ahmades',
+ 'Ahmad Farghal',
+ 'Ahmad Gharbeia أحمد غربية',
+ 'akira',
+ 'Aki Sivula',
+ 'Alan Pepelko',
+ 'Alberto',
+ 'Alberto Ferrer',
+ 'alcatr4z',
+ 'AlckO',
+ 'Aleksej Korgenkov',
+ 'Alessio Treglia',
+ 'Alexander Ilyashov',
+ 'Alexander Matveev',
+ 'Alexander Saltykov',
+ 'Alexander Taubenkorb',
+ 'Alexander Telenga',
+ 'Alexander Yurtsev',
+ 'Alexandre Martani',
+ 'Alexandre Rosenfeld',
+ 'Alexandre Sapata Carbonell',
+ 'Alexey Osipov',
+ 'Alin Claudiu Radut',
+ 'allah',
+ 'AlSim',
+ 'Alvaro Carrillanca P.',
+ 'A.Matveev',
+ 'Andras Hipsag',
+ 'András Kárász',
+ 'Andrea Ratto',
+ 'Andreas Johansson',
+ 'Andreas Str',
+ 'André F. Oliveira',
+ 'AndreiF',
+ 'andrewh',
+ 'Angel Guzman Maeso',
+ 'Aníbal Deboni Neto',
+ 'animarval',
+ 'Antonio Cono',
+ 'antoniojreyes',
+ 'Anton Shestakov',
+ 'Anton Yakutovich',
+ 'antou',
+ 'Arkadiusz Kalinowski',
+ 'Artin',
+ 'artir',
+ 'Astur',
+ 'Athanasios Lefteris',
+ 'Athmane MOKRAOUI (ButterflyOfFire)',
+ 'Augusta Carla Klug',
+ 'Avoledo Marco',
+ 'axaard',
+ 'AxelRafn',
+ 'Axezium',
+ 'Ayont',
+ 'b3rx',
+ 'Bae Taegil',
+ 'Bajusz Tamás',
+ "Balaam's Miracle",
+ 'Ballestein',
+ 'Bent Ole Fosse',
+ 'berto89',
+ 'bigx',
+ 'Bjorn Inge Berg',
+ 'blackbird',
+ 'Blackeyed',
+ 'blackmx',
+ 'BlueSky',
+ 'Blutheo',
+ 'bmhm',
+ 'bob00work',
+ 'boenki',
+ 'Bogdan Bădic-Spătariu',
+ 'bonpu',
+ 'Boone',
+ 'boss01',
+ 'Branislav Jovanović',
+ 'bronze',
+ 'brownie',
+ 'Brus46',
+ 'bumper',
+ 'butely',
+ 'BXCracer',
+ 'c0nfidencal',
+ 'Can Kaya',
+ 'Carlos Alexandro Becker',
+ 'cassianoleal',
+ 'Cédric.h',
+ 'César Rubén',
+ 'chaoswizard',
+ 'Chen Tao',
+ 'chicha',
+ 'Chien Cheng Wei',
+ 'Christian Kopac',
+ 'Christian Widell',
+ 'Christoffer Brodd-Reijer',
+ 'christooss',
+ 'CityAceE',
+ 'Clopy',
+ 'Clusty',
+ 'cnu',
+ 'Commandant',
+ 'Constantinos Koniaris',
+ 'Coolmax',
+ 'cosmix',
+ 'Costin Chirvasuta',
+ 'CoVaLiDiTy',
+ 'cow_2001',
+ 'Crispin Kirchner',
+ 'crom',
+ 'Cruster',
+ 'Cybolic',
+ 'Dan Bishop',
+ 'Danek',
+ 'Dani',
+ 'Daniel Demarco',
+ 'Daniel Ferreira',
+ 'Daniel Frank',
+ 'Daniel Holm',
+ 'Daniel Høyer Iversen',
+ 'Daniel Marynicz',
+ 'Daniel Nylander',
+ 'Daniel Patriche',
+ 'Daniel Schildt',
+ 'Daniil Sorokin',
+ 'Dante Díaz',
+ 'Daria Michalska',
+ 'DarkenCZ',
+ 'Darren',
+ 'Daspah',
+ 'David Eurenius',
+ 'davidhjelm',
+ 'David Machakhelidze',
+ 'Dawid Dziurdzia',
+ 'Daya Adianto ',
+ 'dcruz',
+ 'Deady',
+ 'Dereck Wonnacott',
+ 'Devgru',
+ 'Devid Antonio Filoni' 'DevilDogTG',
+ 'di0rz`',
+ 'Dialecti Valsamou',
+ 'Diego Medeiros',
+ 'Dkzoffy',
+ 'Dmitrij D. Czarkoff',
+ 'Dmitriy Geels',
+ 'Dmitry Olyenyov',
+ 'Dominik Kozaczko',
+ 'Dominik Lübben',
+ 'doomster',
+ 'Dorota Król',
+ 'Doyen Philippe',
+ 'Dread Knight',
+ 'DreamSonic',
+ 'duan',
+ 'Duong Thanh An',
+ 'DvoglavaZver',
+ 'dwori',
+ 'dylansmrjones',
+ 'Ebuntor',
+ 'Edgar Alejandro Jarquin Flores',
+ 'Eetu',
+ 'ekerazha',
+ 'Elias Julkunen',
+ 'elparia',
+ 'Emberke',
+ 'Emiliano Goday Caneda',
+ 'EndelWar',
+ 'eng.essam',
+ 'enubuntu',
+ 'ercangun',
+ 'Erdal Ronahi',
+ 'ergin üresin',
+ 'Eric',
+ 'Éric Lassauge',
+ 'Erlend Finvåg',
+ 'Errdil',
+ 'ethan shalev',
+ 'Evgeni Spasov',
+ 'ezekielnin',
+ 'Fabian Ordelmans',
+ 'Fabio Mazanatti',
+ 'Fábio Nogueira',
+ 'FaCuZ',
+ 'Felipe Lerena',
+ 'Fernando Pereira',
+ 'fjetland',
+ 'Florian Schäfer',
+ 'FoBoS',
+ 'Folke',
+ 'Force',
+ 'fosk',
+ 'fragarray',
+ 'freddeg',
+ 'Frédéric Perrin',
+ 'Fredrik Kilegran',
+ 'FreeAtMind',
+ 'Fulvio Ciucci',
+ 'Gabor Kelemen',
+ 'Galatsanos Panagiotis',
+ 'Gaussian',
+ 'gdevitis',
+ 'Georg Brzyk',
+ 'George Dumitrescu',
+ 'Georgi Arabadjiev',
+ 'Georg Sieber',
+ 'Gerd Radecke',
+ 'Germán Heusdens',
+ 'Gianni Vialetto',
+ 'Gigih Aji Ibrahim',
+ 'Giorgio Wicklein',
+ 'Giovanni Rapagnani',
+ 'Giuseppe',
+ 'gl',
+ 'glen',
+ 'granjerox',
+ 'Green Fish',
+ 'greentea',
+ 'Greyhound',
+ 'G. U.',
+ 'Guillaume BENOIT',
+ 'Guillaume Pelletier',
+ 'Gustavo Henrique Klug',
+ 'gutocarvalho',
+ 'Guybrush88',
+ 'Hans Rødtang',
+ 'HardDisk',
+ 'Hargas Gábor',
+ 'Heitor Thury Barreiros Barbosa',
+ 'helios91940',
+ 'helix84',
+ 'Helton Rodrigues',
+ 'Hendrik Luup',
+ 'Henrique Ferreiro',
+ 'Henry Goury-Laffont',
+ 'Hezy Amiel',
+ 'hidro',
+ 'hoball',
+ 'hokten',
+ 'Holmsss',
+ 'hristo.num',
+ 'Hubert Życiński',
+ 'Hyo',
+ 'Iarwain',
+ 'ibe',
+ 'ibear',
+ 'Id2ndR',
+ 'Igor Zubarev',
+ 'IKON (Ion)',
+ 'imen',
+ 'Ionuț Jula',
+ 'Isabelle STEVANT',
+ 'István Nyitrai',
+ 'Ivan Petrovic',
+ 'Ivan Prignano',
+ 'IvaSerge',
+ 'jackmc',
+ 'Jacks0nxD',
+ 'Jack Shen',
+ 'Jacky Yeung',
+ 'Jacques Stadler',
+ 'Janek Thomaschewski',
+ 'Jan Kaláb',
+ 'Jan Niklas Hasse',
+ 'Jasper Groenewegen',
+ 'Javi Rodríguez',
+ 'Jayasimha (ಜಯಸಿಂಹ)',
+ 'jeannich',
+ 'Jeff Bailes',
+ 'Jesse Zilstorff',
+ 'Joan Duran',
+ 'João Santos',
+ 'Joar Bagge',
+ 'Joe Anderson',
+ 'Joel Calado',
+ 'Johan Linde',
+ 'John Garland',
+ 'Jojan',
+ 'jollyr0ger',
+ 'Jonas Bo Grimsgaard',
+ 'Jonas Granqvist',
+ 'Jonas Slivka',
+ 'Jonathan Zeppettini',
+ 'Jørgen',
+ 'Jørgen Tellnes',
+ 'josé',
+ 'José Geraldo Gouvêa',
+ 'José Iván León Islas',
+ 'José Lou C.',
+ 'Jose Sun',
+ 'Jr.',
+ 'Jukka Kauppinen',
+ 'Julián Alarcón',
+ 'julietgolf',
+ 'Jusic',
+ 'Justzupi',
+ 'Kaarel',
+ 'Kai Thomsen',
+ 'Kalman Tarnay',
+ 'Kamil Páral',
+ 'Kane_F',
+ 'kaotiks@gmail.com',
+ 'Kateikyoushii',
+ 'kaxhinaz',
+ 'Kazuhiro NISHIYAMA',
+ 'Kerberos',
+ 'Keresztes Ákos',
+ 'kevintyk',
+ 'kiersie',
+ 'Kimbo^',
+ 'Kim Lübbe',
+ 'kitzOgen',
+ 'Kjetil Rydland',
+ 'kluon',
+ 'kmikz',
+ 'Knedlyk',
+ 'koleoptero',
+ 'Kőrösi Krisztián',
+ 'Kouta',
+ 'Krakatos',
+ 'Krešo Kunjas',
+ 'kripken',
+ 'Kristaps',
+ 'Kristian Øllegaard',
+ 'Kristoffer Egil Bonarjee',
+ 'Krzysztof Janowski',
+ 'Krzysztof Zawada',
+ 'Larry Wei Liu',
+ 'laughterwym',
+ 'Laur Mõtus',
+ 'lazka',
+ 'leandrud',
+ 'lê bình',
+ 'Le Coz Florent',
+ 'Leo',
+ 'liorda',
+ 'LKRaider',
+ 'LoLo_SaG',
+ 'Long Tran',
+ 'Lorenz',
+ 'Low Kian Seong',
+ 'Luca Andrea Rossi',
+ 'Luca Ferretti',
+ 'Lucky LIX',
+ 'Luis Gomes',
+ 'Luis Reis',
+ 'Łukasz Wyszyński',
+ 'luojie-dune',
+ 'maaark',
+ 'Maciej Chojnacki',
+ 'Maciej Meller',
+ 'Mads Peter Rommedahl',
+ 'Major Kong',
+ 'Malaki',
+ 'malde',
+ 'Malte Lenz',
+ 'Mantas Kriaučiūnas',
+ 'Mara Sorella',
+ 'Marcin',
+ 'Marcin Falkiewicz',
+ 'marcobra',
+ 'Marco da Silva',
+ 'Marco de Moulin',
+ 'Marco Rodrigues',
+ 'Marcos',
+ 'Marcos Escalier',
+ 'Marcos Mobley',
+ 'Marcus Ekstrom',
+ 'Marek Dębowski',
+ 'Mário Buči',
+ 'Mario Munda',
+ 'Marius Andersen',
+ 'Marius Hudea',
+ 'Marius Mihai',
+ 'Mariusz Cielecki',
+ 'Mark Krapivner',
+ 'marko-markovic',
+ 'Markus Brummer',
+ 'Markus Sutter',
+ 'Martin',
+ 'Martin Dybdal',
+ 'Martin Iglesias',
+ 'Martin Lettner',
+ 'Martin Pihl',
+ 'Masoud Kalali',
+ 'mat02',
+ 'Matej Urbančič',
+ 'Mathias-K',
+ 'Mathieu Arès',
+ 'Mathieu D. (MatToufoutu)',
+ 'Mathijs',
+ 'Matrik',
+ 'Matteo Renzulli',
+ 'Matteo Settenvini',
+ 'Matthew Gadd',
+ 'Matthias Benkard',
+ 'Matthias Mailänder',
+ 'Mattias Ohlsson',
+ 'Mauro de Carvalho',
+ 'Max Molchanov',
+ 'Me',
+ 'MercuryCC',
+ 'Mert Bozkurt',
+ 'Mert Dirik',
+ 'MFX',
+ 'mhietar',
+ 'mibtha',
+ 'Michael Budde',
+ 'Michael Kaliszka',
+ 'Michalis Makaronides',
+ 'Michał Tokarczyk',
+ 'Miguel Pires da Rosa',
+ 'Mihai Capotă',
+ 'Miika Metsälä',
+ 'Mikael Fernblad',
+ 'Mike Sierra',
+ 'mikhalek',
+ 'Milan Prvulović',
+ 'Milo Casagrande',
+ 'Mindaugas',
+ 'Miroslav Matejaš',
+ 'misel',
+ 'mithras',
+ 'Mitja Pagon',
+ 'M.Kitchen',
+ 'Mohamed Magdy',
+ 'moonkey',
+ 'MrBlonde',
+ 'muczy',
+ 'Münir Ekinci',
+ 'Mustafa Temizel',
+ 'mvoncken',
+ 'Mytonn',
+ 'NagyMarton',
+ 'neaion',
+ 'Neil Lin',
+ 'Nemo',
+ 'Nerijus Arlauskas',
+ 'Nicklas Larsson',
+ 'Nicolaj Wyke',
+ 'Nicola Piovesan',
+ 'Nicolas Sabatier',
+ 'Nicolas Velin',
+ 'Nightfall',
+ 'NiKoB',
+ 'Nikolai M. Riabov',
+ 'Niko_Thien',
+ 'niska',
+ 'Nithir',
+ 'noisemonkey',
+ 'nomemohes',
+ 'nosense',
+ 'null',
+ 'Nuno Estêvão',
+ 'Nuno Santos',
+ 'nxxs',
+ 'nyo',
+ 'obo',
+ 'Ojan',
+ 'Olav Andreas Lindekleiv',
+ 'oldbeggar',
+ 'Olivier FAURAX',
+ 'orphe',
+ 'osantana',
+ 'Osman Tosun',
+ 'OssiR',
+ 'otypoks',
+ 'ounn',
+ 'Oz123',
+ 'Özgür BASKIN',
+ 'Pablo Carmona A.',
+ 'Pablo Ledesma',
+ 'Pablo Navarro Castillo',
+ 'Paco Molinero',
+ 'Pål-Eivind Johnsen',
+ 'pano',
+ 'Paolo Naldini',
+ 'Paracelsus',
+ 'Patryk13_03',
+ 'Patryk Skorupa',
+ 'PattogoTehen',
+ 'Paul Lange',
+ 'Pavcio',
+ 'Paweł Wysocki',
+ 'Pedro Brites Moita',
+ 'Pedro Clemente Pereira Neto',
+ 'Pekka "PEXI" Niemistö',
+ 'Penegal',
+ 'Penzo',
+ 'perdido',
+ 'Peter Kotrcka',
+ 'Peter Skov',
+ 'Peter Van den Bosch',
+ 'Petter Eklund',
+ 'Petter Viklund',
+ 'phatsphere',
+ 'Phenomen',
+ 'Philipi',
+ 'Philippides Homer',
+ 'phoenix',
+ 'pidi',
+ 'Pierre Quillery',
+ 'Pierre Rudloff',
+ 'Pierre Slamich',
+ 'Pietrao',
+ 'Piotr Strębski',
+ 'Piotr Wicijowski',
+ 'Pittmann Tamás',
+ 'Playmolas',
+ 'Prescott',
+ 'Prescott_SK',
+ 'pronull',
+ 'Przemysław Kulczycki',
+ 'Pumy',
+ 'pushpika',
+ 'PY',
+ 'qubicllj',
+ 'r21vo',
+ 'Rafał Barański',
+ 'rainofchaos',
+ 'Rajbir',
+ 'ras0ir',
+ 'Rat',
+ 'rd1381',
+ 'Renato',
+ 'Rene Hennig',
+ 'Rene Pärts',
+ 'Ricardo Duarte',
+ 'Richard',
+ 'Robert Hrovat',
+ 'Roberth Sjonøy',
+ 'Robert Lundmark',
+ 'Robin Jakobsson',
+ 'Robin Kåveland',
+ 'Rodrigo Donado',
+ 'Roel Groeneveld',
+ 'rohmaru',
+ 'Rolf Christensen',
+ 'Rolf Leggewie',
+ 'Roni Kantis',
+ 'Ronmi',
+ 'Rostislav Raykov',
+ 'royto',
+ 'RuiAmaro',
+ 'Rui Araújo',
+ 'Rui Moura',
+ 'Rune Svendsen',
+ 'Rusna',
+ 'Rytis',
+ 'Sabirov Mikhail',
+ 'salseeg',
+ 'Sami Koskinen',
+ 'Samir van de Sand',
+ 'Samuel Arroyo Acuña',
+ 'Samuel R. C. Vale',
+ 'Sanel',
+ 'Santi',
+ 'Santi Martínez Cantelli',
+ 'Sardan',
+ 'Sargate Kanogan',
+ 'Sarmad Jari',
+ 'Saša Bodiroža',
+ 'sat0shi',
+ 'Saulius Pranckevičius',
+ 'Savvas Radevic',
+ 'Sebastian Krauß',
+ 'Sebastián Porta',
+ 'Sedir',
+ 'Sefa Denizoğlu',
+ 'sekolands',
+ 'Selim Suerkan',
+ 'semsomi',
+ 'Sergii Golovatiuk',
+ 'setarcos',
+ 'Sheki',
+ 'Shironeko',
+ 'Shlomil',
+ 'silfiriel',
+ 'Simone Tolotti',
+ 'Simone Vendemia',
+ 'sirkubador',
+ 'Sławomir Więch',
+ 'slip',
+ 'slyon',
+ 'smoke',
+ 'Sonja',
+ 'spectral',
+ 'spin_555',
+ 'spitf1r3',
+ 'Spiziuz',
+ 'Spyros Theodoritsis',
+ 'SqUe',
+ 'Squigly',
+ 'srtck',
+ 'Stefan Horning',
+ 'Stefano Maggiolo',
+ 'Stefano Roberto Soleti',
+ 'steinberger',
+ 'Stéphane Travostino',
+ 'Stephan Klein',
+ 'Steven De Winter',
+ 'Stevie',
+ 'Stian24',
+ 'stylius',
+ 'Sukarn Maini',
+ 'Sunjae Park',
+ 'Susana Pereira',
+ 'szymon siglowy',
+ 'takercena',
+ 'TAS',
+ 'Taygeto',
+ 'temy4',
+ 'texxxxxx',
+ 'thamood',
+ 'Thanos Chatziathanassiou',
+ 'Tharawut Paripaiboon',
+ 'Theodoor',
+ 'Théophane Anestis',
+ 'Thor Marius K. Høgås',
+ 'Tiago Silva',
+ 'Tiago Sousa',
+ 'Tikkel',
+ 'tim__b',
+ 'Tim Bordemann',
+ 'Tim Fuchs',
+ 'Tim Kornhammar',
+ 'Timo',
+ 'Timo Jyrinki',
+ 'Timothy Babych',
+ 'TitkosRejtozo',
+ 'Tom',
+ 'Tomas Gustavsson',
+ 'Tomas Valentukevičius',
+ 'Tomasz Dominikowski',
+ 'Tomislav Plavčić',
+ 'Tom Mannerhagen',
+ 'Tommy Mikkelsen',
+ 'Tom Verdaat',
+ 'Tony Manco',
+ 'Tor Erling H. Opsahl',
+ 'Toudi',
+ 'tqm_z',
+ 'Trapanator',
+ 'Tribaal',
+ 'Triton',
+ 'TuniX12',
+ 'Tuomo Sipola',
+ 'turbojugend_gr',
+ 'Turtle.net',
+ 'twilight',
+ 'tymmej',
+ 'Ulrik',
+ 'Umarzuki Mochlis',
+ 'unikob',
+ 'Vadim Gusev',
+ 'Vagi',
+ 'Valentin Bora',
+ 'Valmantas Palikša',
+ 'VASKITTU',
+ 'Vassilis Skoullis',
+ 'vetal17',
+ 'vicedo',
+ 'viki',
+ 'villads hamann',
+ 'Vincent Garibal',
+ 'Vincent Ortalda',
+ 'vinchi007',
+ 'Vinícius de Figueiredo Silva',
+ 'Vinzenz Vietzke',
+ 'virtoo',
+ 'virtual_spirit',
+ 'Vitor Caike',
+ 'Vitor Lamas Gatti',
+ 'Vladimir Lazic',
+ 'Vladimir Sharshov',
+ 'Wanderlust',
+ 'Wander Nauta',
+ 'Ward De Ridder',
+ 'WebCrusader',
+ 'webdr',
+ 'Wentao Tang',
+ 'wilana',
+ 'Wilfredo Ernesto Guerrero Campos',
+ 'Wim Champagne',
+ 'World Sucks',
+ 'Xabi Ezpeleta',
+ 'Xavi de Moner',
+ 'XavierToo',
+ 'XChesser',
+ 'Xiaodong Xu',
+ 'xyb',
+ 'Yaron',
+ 'Yasen Pramatarov',
+ 'YesPoX',
+ 'Yuren Ju',
+ 'Yves MATHIEU',
+ 'zekopeko',
+ 'zhuqin',
+ 'Zissan',
+ 'Γιάννης Κατσαμπίρης',
+ 'Артём Попов',
+ 'Миша',
+ 'Шаймарданов Максим',
+ '蔡查理',
+ ]
+ )
+ )
+ self.about.set_wrap_license(True)
+ self.about.set_license(
+ _(
+ 'This program is free software; you can redistribute it and/or '
+ 'modify it under the terms of the GNU General Public License as '
+ 'published by the Free Software Foundation; either version 3 of '
+ 'the License, or (at your option) any later version. \n\n'
+ 'This program '
+ 'is distributed in the hope that it will be useful, but WITHOUT '
+ 'ANY WARRANTY; without even the implied warranty of '
+ 'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU '
+ 'General Public License for more details. \n\n'
+ 'You should have received '
+ 'a copy of the GNU General Public License along with this program; '
+ 'if not, see <http://www.gnu.org/licenses>. \n\n'
+ 'In addition, as a '
+ 'special exception, the copyright holders give permission to link '
+ 'the code of portions of this program with the OpenSSL library. '
+ 'You must obey the GNU General Public License in all respects for '
+ 'all of the code used other than OpenSSL. \n\n'
+ 'If you modify file(s) '
+ 'with this exception, you may extend this exception to your '
+ 'version of the file(s), but you are not obligated to do so. If '
+ 'you do not wish to do so, delete this exception statement from '
+ 'your version. If you delete this exception statement from all '
+ 'source files in the program, then also delete it here.'
+ )
+ )
+ self.about.set_website('http://deluge-torrent.org')
+ self.about.set_website_label('deluge-torrent.org')
+
+ self.about.set_icon(get_deluge_icon())
+ self.about.set_logo(get_pixbuf('deluge-about.png'))
+
+ if client.connected():
+ if not client.is_standalone():
+ self.about.set_comments(
+ self.about.get_comments() + _('Server:') + ' %coreversion%\n'
+ )
+
+ self.about.set_comments(
+ self.about.get_comments() + '\n' + _('libtorrent:') + ' %ltversion%\n'
+ )
+
+ def on_lt_version(result):
+ c = self.about.get_comments()
+ c = c.replace('%ltversion%', result)
+ self.about.set_comments(c)
+
+ def on_info(result):
+ c = self.about.get_comments()
+ c = c.replace('%coreversion%', result)
+ self.about.set_comments(c)
+ client.core.get_libtorrent_version().addCallback(on_lt_version)
+
+ if not client.is_standalone():
+ client.daemon.info().addCallback(on_info)
+ else:
+ client.core.get_libtorrent_version().addCallback(on_lt_version)
+
+ def run(self):
+ self.about.show_all()
+ self.about.run()
+ self.about.destroy()
diff --git a/deluge/ui/gtk3/addtorrentdialog.py b/deluge/ui/gtk3/addtorrentdialog.py
new file mode 100644
index 0000000..aa71cc4
--- /dev/null
+++ b/deluge/ui/gtk3/addtorrentdialog.py
@@ -0,0 +1,1103 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+from base64 import b64decode, b64encode
+from xml.sax.saxutils import escape as xml_escape
+from xml.sax.saxutils import unescape as xml_unescape
+
+from gi.repository import Gtk
+from gi.repository.GObject import TYPE_INT64, TYPE_UINT64
+
+import deluge.component as component
+from deluge.bencode import bdecode
+from deluge.common import (
+ create_magnet_uri,
+ decode_bytes,
+ fsize,
+ get_magnet_info,
+ is_infohash,
+ is_magnet,
+ is_url,
+ resource_filename,
+)
+from deluge.configmanager import ConfigManager
+from deluge.httpdownloader import download_file
+from deluge.ui.client import client
+from deluge.ui.common import TorrentInfo
+
+from .common import (
+ get_clipboard_text,
+ listview_replace_treestore,
+ reparent_iter,
+ windowing,
+)
+from .dialogs import ErrorDialog
+from .edittrackersdialog import trackers_tiers_from_text
+from .path_chooser import PathChooser
+from .torrentview_data_funcs import cell_data_size
+
+log = logging.getLogger(__name__)
+
+
+class AddTorrentDialog(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'AddTorrentDialog')
+ self.builder = Gtk.Builder()
+ # The base dialog
+ self.builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'add_torrent_dialog.ui')
+ )
+ )
+ # The infohash dialog
+ self.builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'add_torrent_dialog.infohash.ui')
+ )
+ )
+ # The url dialog
+ self.builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'add_torrent_dialog.url.ui')
+ )
+ )
+
+ self.dialog = self.builder.get_object('dialog_add_torrent')
+
+ self.dialog.connect('delete-event', self._on_delete_event)
+
+ self.builder.connect_signals(self)
+
+ # download?, path, filesize, sequence number, inconsistent?
+ self.files_treestore = Gtk.TreeStore(
+ bool, str, TYPE_UINT64, TYPE_INT64, bool, str
+ )
+ self.files_treestore.set_sort_column_id(1, Gtk.SortType.ASCENDING)
+
+ # Holds the files info
+ self.files = {}
+ self.infos = {}
+ self.core_config = {}
+ self.options = {}
+
+ self.previous_selected_torrent = None
+
+ self.listview_torrents = self.builder.get_object('listview_torrents')
+ self.listview_files = self.builder.get_object('listview_files')
+
+ self.prefetching_magnets = []
+
+ render = Gtk.CellRendererText()
+ render.connect('edited', self._on_torrent_name_edit)
+ render.set_property('editable', True)
+ column = Gtk.TreeViewColumn(_('Torrent'), render, text=1)
+ self.listview_torrents.append_column(column)
+
+ render = Gtk.CellRendererToggle()
+ render.connect('toggled', self._on_file_toggled)
+ column = Gtk.TreeViewColumn(None, render, active=0, inconsistent=4)
+ self.listview_files.append_column(column)
+
+ column = Gtk.TreeViewColumn(_('Filename'))
+ render = Gtk.CellRendererPixbuf()
+ column.pack_start(render, False)
+ column.add_attribute(render, 'icon-name', 5)
+ render = Gtk.CellRendererText()
+ render.set_property('editable', True)
+ render.connect('edited', self._on_filename_edited)
+ column.pack_start(render, True)
+ column.add_attribute(render, 'text', 1)
+ column.set_expand(True)
+ self.listview_files.append_column(column)
+
+ render = Gtk.CellRendererText()
+ column = Gtk.TreeViewColumn(_('Size'))
+ column.pack_start(render, True)
+ column.set_cell_data_func(render, cell_data_size, 2)
+ self.listview_files.append_column(column)
+
+ self.torrent_liststore = Gtk.ListStore(str, str, str)
+ self.listview_torrents.set_model(self.torrent_liststore)
+ self.listview_torrents.set_tooltip_column(2)
+ self.listview_files.set_model(self.files_treestore)
+
+ self.listview_files.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.listview_torrents.get_selection().connect(
+ 'changed', self._on_torrent_changed
+ )
+ self.torrent_liststore.connect('row-inserted', self.update_dialog_title_count)
+ self.torrent_liststore.connect('row-deleted', self.update_dialog_title_count)
+
+ self.setup_move_completed_path_chooser()
+ self.setup_download_location_path_chooser()
+
+ # Get default config values from the core
+ self.core_keys = [
+ 'pre_allocate_storage',
+ 'max_connections_per_torrent',
+ 'max_upload_slots_per_torrent',
+ 'max_upload_speed_per_torrent',
+ 'max_download_speed_per_torrent',
+ 'prioritize_first_last_pieces',
+ 'sequential_download',
+ 'add_paused',
+ 'download_location',
+ 'download_location_paths_list',
+ 'move_completed',
+ 'move_completed_path',
+ 'move_completed_paths_list',
+ 'super_seeding',
+ ]
+ # self.core_keys += self.move_completed_path_chooser.get_config_keys()
+ self.builder.get_object('notebook1').connect(
+ 'switch-page', self._on_switch_page
+ )
+
+ def start(self):
+ self.update_core_config()
+
+ def show(self, focus=False):
+ self.update_core_config(True, focus)
+
+ def _show(self, focus=False):
+ main_window = component.get('MainWindow')
+ if main_window.is_on_active_workspace():
+ self.dialog.set_transient_for(main_window.window)
+ else:
+ self.dialog.set_transient_for(None)
+ self.dialog.set_position(Gtk.WindowPosition.CENTER)
+
+ if focus:
+ timestamp = main_window.get_timestamp()
+ if windowing('X11'):
+ # Use present with X11 set_user_time since
+ # present_with_time is inconsistent.
+ self.dialog.present()
+ self.dialog.get_window().set_user_time(timestamp)
+ else:
+ self.dialog.present_with_time(timestamp)
+ else:
+ self.dialog.present()
+
+ def hide(self):
+ self.dialog.hide()
+ self.files = {}
+ self.infos = {}
+ self.options = {}
+ self.previous_selected_torrent = None
+ self.torrent_liststore.clear()
+ self.files_treestore.clear()
+ self.prefetching_magnets = []
+ self.dialog.set_transient_for(component.get('MainWindow').window)
+
+ def _on_config_values(self, config, show=False, focus=False):
+ self.core_config = config
+ if self.core_config:
+ self.set_default_options()
+ if show:
+ self._show(focus)
+
+ def update_core_config(self, show=False, focus=False):
+ # Send requests to the core for these config values
+ d = client.core.get_config_values(self.core_keys)
+ d.addCallback(self._on_config_values, show, focus)
+
+ def _add_torrent_liststore(self, info_hash, name, filename, files, filedata):
+ """Add a torrent to torrent_liststore."""
+ if info_hash in self.files:
+ return False
+
+ torrent_row = [info_hash, name, xml_escape(filename)]
+ row_iter = self.torrent_liststore.append(torrent_row)
+ self.files[info_hash] = files
+ self.infos[info_hash] = filedata
+ self.listview_torrents.get_selection().select_iter(row_iter)
+
+ self.set_default_options()
+ self.save_torrent_options(row_iter)
+
+ return row_iter
+
+ def update_dialog_title_count(self, *args):
+ """Update the AddTorrent dialog title with current torrent count."""
+ self.dialog.set_title(_('Add Torrents (%d)') % len(self.torrent_liststore))
+
+ def show_already_added_dialog(self, count):
+ """Show a message about trying to add duplicate torrents."""
+ log.debug('Tried to add %d duplicate torrents!', count)
+ ErrorDialog(
+ _('Duplicate torrent(s)'),
+ _(
+ 'You cannot add the same torrent twice.'
+ ' %d torrents were already added.' % count
+ ),
+ self.dialog,
+ ).run()
+
+ def add_from_files(self, filenames):
+ already_added = 0
+
+ for filename in filenames:
+ # Get the torrent data from the torrent file
+ try:
+ info = TorrentInfo(filename)
+ except Exception as ex:
+ log.debug('Unable to open torrent file: %s', ex)
+ ErrorDialog(_('Invalid File'), ex, self.dialog).run()
+ continue
+
+ if not self._add_torrent_liststore(
+ info.info_hash, info.name, filename, info.files, info.filedata
+ ):
+ already_added += 1
+
+ if already_added:
+ self.show_already_added_dialog(already_added)
+
+ def _on_uri_metadata(self, result, uri, trackers):
+ """Process prefetched metadata to allow file priority selection."""
+ info_hash, metadata = result
+ log.debug('magnet metadata for %s (%s)', uri, info_hash)
+ if info_hash not in self.prefetching_magnets:
+ return
+
+ if metadata:
+ metadata = bdecode(b64decode(metadata))
+ info = TorrentInfo.from_metadata(metadata, [[t] for t in trackers])
+ self.files[info_hash] = info.files
+ self.infos[info_hash] = info.filedata
+ else:
+ log.info('Unable to fetch metadata for magnet: %s', uri)
+ self.prefetching_magnets.remove(info_hash)
+ self._on_torrent_changed(self.listview_torrents.get_selection())
+
+ def _on_uri_metadata_fail(self, result, info_hash):
+ self.prefetching_magnets.remove(info_hash)
+ self._on_torrent_changed(self.listview_torrents.get_selection())
+
+ def prefetch_waiting_message(self, torrent_id, files):
+ """Show magnet files fetching or failed message above files list."""
+ if torrent_id in self.prefetching_magnets:
+ self.builder.get_object('prefetch_label').set_text(
+ _('Please wait for files...')
+ )
+ self.builder.get_object('prefetch_spinner').show()
+ self.builder.get_object('prefetch_hbox').show()
+ elif not files:
+ self.builder.get_object('prefetch_label').set_text(
+ _('Unable to download files for this magnet')
+ )
+ self.builder.get_object('prefetch_spinner').hide()
+ self.builder.get_object('prefetch_hbox').show()
+ else:
+ self.builder.get_object('prefetch_hbox').hide()
+
+ def add_from_magnets(self, uris):
+ """Add a list of magnet URIs to torrent_liststore."""
+ already_added = 0
+
+ for uri in uris:
+ magnet = get_magnet_info(uri)
+ if not magnet:
+ log.error('Invalid magnet: %s', uri)
+ continue
+
+ torrent_id = magnet['info_hash']
+ files = magnet['files_tree']
+ if not self._add_torrent_liststore(
+ torrent_id, magnet['name'], uri, files, None
+ ):
+ already_added += 1
+ continue
+
+ if files:
+ continue
+
+ self.prefetching_magnets.append(torrent_id)
+ self.prefetch_waiting_message(torrent_id, None)
+ d = client.core.prefetch_magnet_metadata(uri)
+ d.addCallback(self._on_uri_metadata, uri, magnet['trackers'])
+ d.addErrback(self._on_uri_metadata_fail, torrent_id)
+
+ if already_added:
+ self.show_already_added_dialog(already_added)
+
+ def _on_torrent_changed(self, treeselection):
+ (model, row) = treeselection.get_selected()
+ if row is None or not model.iter_is_valid(row):
+ self.files_treestore.clear()
+ self.previous_selected_torrent = None
+ return
+
+ if model[row][0] not in self.files:
+ self.files_treestore.clear()
+ self.previous_selected_torrent = None
+ return
+
+ # Save the previous torrents options
+ self.save_torrent_options()
+
+ torrent_id = model.get_value(row, 0)
+ # Update files list
+ files_list = self.files[torrent_id]
+ self.prepare_file_store(files_list)
+
+ if self.core_config == {}:
+ self.update_core_config()
+
+ # Update the options frame
+ self.update_torrent_options(torrent_id)
+ # Update magnet prefetch message
+ self.prefetch_waiting_message(torrent_id, files_list)
+
+ self.previous_selected_torrent = row
+
+ def _on_torrent_name_edit(self, w, row, new_name):
+ # TODO: Update torrent name
+ pass
+
+ def _on_switch_page(self, widget, page, page_num):
+ # Save the torrent options when switching notebook pages
+ self.save_torrent_options()
+
+ def prepare_file_store(self, files):
+ with listview_replace_treestore(self.listview_files):
+ split_files = {}
+ for idx, _file in enumerate(files):
+ self.prepare_file(
+ _file, _file['path'], idx, _file.get('download', True), split_files
+ )
+ self.add_files(None, split_files)
+ root = Gtk.TreePath.new_first()
+ self.listview_files.expand_row(root, False)
+
+ def prepare_file(self, _file, file_name, file_num, download, files_storage):
+ first_slash_index = file_name.find('/')
+ if first_slash_index == -1:
+ files_storage[file_name] = (file_num, _file, download)
+ else:
+ file_name_chunk = file_name[: first_slash_index + 1]
+ if file_name_chunk not in files_storage:
+ files_storage[file_name_chunk] = {}
+ self.prepare_file(
+ _file,
+ file_name[first_slash_index + 1 :],
+ file_num,
+ download,
+ files_storage[file_name_chunk],
+ )
+
+ def add_files(self, parent_iter, split_files):
+ ret = 0
+ for key, value in split_files.items():
+ if key.endswith('/'):
+ chunk_iter = self.files_treestore.append(
+ parent_iter, [True, key, 0, -1, False, 'folder-symbolic']
+ )
+ chunk_size = self.add_files(chunk_iter, value)
+ self.files_treestore.set(chunk_iter, 2, chunk_size)
+ ret += chunk_size
+ else:
+ self.files_treestore.append(
+ parent_iter,
+ [
+ value[2],
+ key,
+ value[1]['size'],
+ value[0],
+ False,
+ 'text-x-generic-symbolic',
+ ],
+ )
+ ret += value[1]['size']
+ if parent_iter and self.files_treestore.iter_has_child(parent_iter):
+ # Iterate through the children and see what we should label the
+ # folder, download true, download false or inconsistent.
+ itr = self.files_treestore.iter_children(parent_iter)
+ download = []
+ download_value = False
+ inconsistent = False
+ while itr:
+ download.append(self.files_treestore.get_value(itr, 0))
+ itr = self.files_treestore.iter_next(itr)
+
+ if sum(download) == len(download):
+ download_value = True
+ elif sum(download) == 0:
+ download_value = False
+ else:
+ inconsistent = True
+
+ self.files_treestore.set_value(parent_iter, 0, download_value)
+ self.files_treestore.set_value(parent_iter, 4, inconsistent)
+ return ret
+
+ def load_path_choosers_data(self):
+ self.move_completed_path_chooser.set_text(
+ self.core_config['move_completed_path'], cursor_end=False, default_text=True
+ )
+ self.download_location_path_chooser.set_text(
+ self.core_config['download_location'], cursor_end=False, default_text=True
+ )
+ self.builder.get_object('chk_move_completed').set_active(
+ self.core_config['move_completed']
+ )
+ self.move_completed_path_chooser.set_sensitive(
+ self.core_config['move_completed']
+ )
+
+ def setup_move_completed_path_chooser(self):
+ self.move_completed_hbox = self.builder.get_object(
+ 'hbox_move_completed_chooser'
+ )
+ self.move_completed_path_chooser = PathChooser(
+ 'move_completed_paths_list', parent=self.dialog
+ )
+ self.move_completed_hbox.add(self.move_completed_path_chooser)
+ self.move_completed_hbox.show_all()
+
+ def setup_download_location_path_chooser(self):
+ self.download_location_hbox = self.builder.get_object(
+ 'hbox_download_location_chooser'
+ )
+ self.download_location_path_chooser = PathChooser(
+ 'download_location_paths_list', parent=self.dialog
+ )
+ self.download_location_hbox.add(self.download_location_path_chooser)
+ self.download_location_hbox.show_all()
+
+ def update_torrent_options(self, torrent_id):
+ if torrent_id not in self.options:
+ self.set_default_options()
+ return
+
+ options = self.options[torrent_id]
+
+ self.download_location_path_chooser.set_text(
+ options['download_location'], cursor_end=True
+ )
+ self.move_completed_path_chooser.set_text(
+ options['move_completed_path'], cursor_end=True
+ )
+
+ self.builder.get_object('spin_maxdown').set_value(options['max_download_speed'])
+ self.builder.get_object('spin_maxup').set_value(options['max_upload_speed'])
+ self.builder.get_object('spin_maxconnections').set_value(
+ options['max_connections']
+ )
+ self.builder.get_object('spin_maxupslots').set_value(
+ options['max_upload_slots']
+ )
+ self.builder.get_object('chk_paused').set_active(options['add_paused'])
+ self.builder.get_object('chk_pre_alloc').set_active(
+ options['pre_allocate_storage']
+ )
+ self.builder.get_object('chk_prioritize').set_active(
+ options['prioritize_first_last_pieces']
+ )
+ self.builder.get_object('chk_sequential_download').set_active(
+ options['sequential_download']
+ )
+ self.builder.get_object('chk_move_completed').set_active(
+ options['move_completed']
+ )
+ self.builder.get_object('chk_super_seeding').set_active(
+ options['super_seeding']
+ )
+
+ def save_torrent_options(self, row=None):
+ # Keeps the torrent options dictionary up-to-date with what the user has
+ # selected.
+ if row is None:
+ if self.previous_selected_torrent and self.torrent_liststore.iter_is_valid(
+ self.previous_selected_torrent
+ ):
+ row = self.previous_selected_torrent
+ else:
+ return
+
+ torrent_id = self.torrent_liststore.get_value(row, 0)
+
+ if torrent_id in self.options:
+ options = self.options[torrent_id]
+ else:
+ options = {}
+
+ options['download_location'] = decode_bytes(
+ self.download_location_path_chooser.get_text()
+ )
+ options['move_completed_path'] = decode_bytes(
+ self.move_completed_path_chooser.get_text()
+ )
+ options['pre_allocate_storage'] = self.builder.get_object(
+ 'chk_pre_alloc'
+ ).get_active()
+ options['move_completed'] = self.builder.get_object(
+ 'chk_move_completed'
+ ).get_active()
+ options['max_download_speed'] = self.builder.get_object(
+ 'spin_maxdown'
+ ).get_value()
+ options['max_upload_speed'] = self.builder.get_object('spin_maxup').get_value()
+ options['max_connections'] = self.builder.get_object(
+ 'spin_maxconnections'
+ ).get_value_as_int()
+ options['max_upload_slots'] = self.builder.get_object(
+ 'spin_maxupslots'
+ ).get_value_as_int()
+ options['add_paused'] = self.builder.get_object('chk_paused').get_active()
+ options['prioritize_first_last_pieces'] = self.builder.get_object(
+ 'chk_prioritize'
+ ).get_active()
+ options['sequential_download'] = (
+ self.builder.get_object('chk_sequential_download').get_active() or False
+ )
+ options['move_completed'] = self.builder.get_object(
+ 'chk_move_completed'
+ ).get_active()
+ options['seed_mode'] = self.builder.get_object('chk_seed_mode').get_active()
+ options['super_seeding'] = self.builder.get_object(
+ 'chk_super_seeding'
+ ).get_active()
+
+ self.options[torrent_id] = options
+
+ # Save the file priorities
+ files_priorities = self.build_priorities(
+ self.files_treestore.get_iter_first(), {}
+ )
+
+ if len(files_priorities) > 0:
+ for i, file_dict in enumerate(self.files[torrent_id]):
+ file_dict['download'] = files_priorities[i]
+
+ def build_priorities(self, _iter, priorities):
+ while _iter is not None:
+ if self.files_treestore.iter_has_child(_iter):
+ self.build_priorities(
+ self.files_treestore.iter_children(_iter), priorities
+ )
+ elif not self.files_treestore.get_value(_iter, 1).endswith('/'):
+ priorities[
+ self.files_treestore.get_value(_iter, 3)
+ ] = self.files_treestore.get_value(_iter, 0)
+ _iter = self.files_treestore.iter_next(_iter)
+ return priorities
+
+ def set_default_options(self):
+ if not self.core_config:
+ # update_core_config will call this method again.
+ self.update_core_config()
+ return
+
+ self.load_path_choosers_data()
+
+ self.builder.get_object('chk_pre_alloc').set_active(
+ self.core_config['pre_allocate_storage']
+ )
+ self.builder.get_object('spin_maxdown').set_value(
+ self.core_config['max_download_speed_per_torrent']
+ )
+ self.builder.get_object('spin_maxup').set_value(
+ self.core_config['max_upload_speed_per_torrent']
+ )
+ self.builder.get_object('spin_maxconnections').set_value(
+ self.core_config['max_connections_per_torrent']
+ )
+ self.builder.get_object('spin_maxupslots').set_value(
+ self.core_config['max_upload_slots_per_torrent']
+ )
+ self.builder.get_object('chk_paused').set_active(self.core_config['add_paused'])
+ self.builder.get_object('chk_prioritize').set_active(
+ self.core_config['prioritize_first_last_pieces']
+ )
+ self.builder.get_object('chk_sequential_download').set_active(
+ self.core_config['sequential_download']
+ )
+ self.builder.get_object('chk_move_completed').set_active(
+ self.core_config['move_completed']
+ )
+ self.builder.get_object('chk_seed_mode').set_active(False)
+ self.builder.get_object('chk_super_seeding').set_active(
+ self.core_config['super_seeding']
+ )
+
+ def get_file_priorities(self, torrent_id):
+ # A list of priorities
+ files_list = []
+
+ for file_dict in self.files[torrent_id]:
+ if not file_dict['download']:
+ files_list.append(0)
+ else:
+ # Default lt file priority is 4
+ files_list.append(4)
+
+ return files_list
+
+ def _on_file_toggled(self, render, path):
+ (model, paths) = self.listview_files.get_selection().get_selected_rows()
+ if len(paths) > 1:
+ for path in paths:
+ row = model.get_iter(path)
+ self.toggle_iter(row)
+ else:
+ row = model.get_iter(path)
+ self.toggle_iter(row)
+ self.update_treeview_toggles(self.files_treestore.get_iter_first())
+
+ def toggle_iter(self, _iter, toggle_to=None):
+ if toggle_to is None:
+ toggle_to = not self.files_treestore.get_value(_iter, 0)
+ self.files_treestore.set_value(_iter, 0, toggle_to)
+ if self.files_treestore.iter_has_child(_iter):
+ child = self.files_treestore.iter_children(_iter)
+ while child is not None:
+ self.toggle_iter(child, toggle_to)
+ child = self.files_treestore.iter_next(child)
+
+ def update_treeview_toggles(self, _iter):
+ toggle_inconsistent = -1
+ this_level_toggle = None
+ while _iter is not None:
+ if self.files_treestore.iter_has_child(_iter):
+ toggle = self.update_treeview_toggles(
+ self.files_treestore.iter_children(_iter)
+ )
+ if toggle == toggle_inconsistent:
+ self.files_treestore.set_value(_iter, 4, True)
+ else:
+ self.files_treestore.set_value(_iter, 0, toggle)
+ # set inconsistent to false
+ self.files_treestore.set_value(_iter, 4, False)
+ else:
+ toggle = self.files_treestore.get_value(_iter, 0)
+ if this_level_toggle is None:
+ this_level_toggle = toggle
+ elif this_level_toggle != toggle:
+ this_level_toggle = toggle_inconsistent
+ _iter = self.files_treestore.iter_next(_iter)
+ return this_level_toggle
+
+ def on_button_file_clicked(self, widget):
+ log.debug('on_button_file_clicked')
+ # Setup the filechooserdialog
+ chooser = Gtk.FileChooserDialog(
+ _('Choose a .torrent file'),
+ None,
+ Gtk.FileChooserAction.OPEN,
+ buttons=(
+ _('_Cancel'),
+ Gtk.ResponseType.CANCEL,
+ _('_Open'),
+ Gtk.ResponseType.OK,
+ ),
+ )
+
+ chooser.set_transient_for(self.dialog)
+ chooser.set_select_multiple(True)
+ chooser.set_property('skip-taskbar-hint', True)
+ chooser.set_local_only(False)
+
+ # Add .torrent and * file filters
+ file_filter = Gtk.FileFilter()
+ file_filter.set_name(_('Torrent files'))
+ file_filter.add_pattern('*.' + 'torrent')
+ chooser.add_filter(file_filter)
+ file_filter = Gtk.FileFilter()
+ file_filter.set_name(_('All files'))
+ file_filter.add_pattern('*')
+ chooser.add_filter(file_filter)
+
+ # Load the 'default_load_path' from the config
+ self.config = ConfigManager('gtk3ui.conf')
+ if (
+ 'default_load_path' in self.config
+ and self.config['default_load_path'] is not None
+ ):
+ chooser.set_current_folder(self.config['default_load_path'])
+
+ # Run the dialog
+ response = chooser.run()
+
+ if response == Gtk.ResponseType.OK:
+ result = [decode_bytes(f) for f in chooser.get_filenames()]
+ self.config['default_load_path'] = decode_bytes(
+ chooser.get_current_folder()
+ )
+ else:
+ chooser.destroy()
+ return
+
+ chooser.destroy()
+ self.add_from_files(result)
+
+ def on_button_url_clicked(self, widget):
+ log.debug('on_button_url_clicked')
+ dialog = self.builder.get_object('url_dialog')
+ entry = self.builder.get_object('entry_url')
+
+ dialog.set_default_response(Gtk.ResponseType.OK)
+ dialog.set_transient_for(self.dialog)
+ entry.grab_focus()
+
+ text = get_clipboard_text()
+ if text and is_url(text) or is_magnet(text):
+ entry.set_text(text)
+
+ dialog.show_all()
+ response = dialog.run()
+
+ if response == Gtk.ResponseType.OK:
+ url = decode_bytes(entry.get_text())
+ else:
+ url = None
+
+ entry.set_text('')
+ dialog.hide()
+
+ # This is where we need to fetch the .torrent file from the URL and
+ # add it to the list.
+ log.debug('url: %s', url)
+ if url:
+ if is_url(url):
+ self.add_from_url(url)
+ elif is_magnet(url):
+ self.add_from_magnets([url])
+ else:
+ ErrorDialog(
+ _('Invalid URL'),
+ '{} {}'.format(url, _('is not a valid URL.')),
+ self.dialog,
+ ).run()
+
+ def add_from_url(self, url):
+ dialog = Gtk.Dialog(
+ _('Downloading...'),
+ flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
+ parent=self.dialog,
+ )
+ dialog.set_transient_for(self.dialog)
+
+ pb = Gtk.ProgressBar()
+ dialog.vbox.pack_start(pb, True, True, 0)
+ dialog.show_all()
+
+ # Create a tmp file path
+ import tempfile
+
+ tmp_fd, tmp_file = tempfile.mkstemp(prefix='deluge_url.', suffix='.torrent')
+
+ def on_part(data, current_length, total_length):
+ if total_length:
+ percent = current_length / total_length
+ pb.set_fraction(percent)
+ pb.set_text(
+ '%.2f%% (%s / %s)'
+ % (percent * 100, fsize(current_length), fsize(total_length))
+ )
+ else:
+ pb.pulse()
+ pb.set_text('%s' % fsize(current_length))
+
+ def on_download_success(result):
+ self.add_from_files([result])
+ dialog.destroy()
+
+ def on_download_fail(result):
+ log.debug('Download failed: %s', result)
+ dialog.destroy()
+ ErrorDialog(
+ _('Download Failed'),
+ '{} {}'.format(_('Failed to download:'), url),
+ details=result.getErrorMessage(),
+ parent=self.dialog,
+ ).run()
+ return result
+
+ d = download_file(url, tmp_file, on_part)
+ os.close(tmp_fd)
+ d.addCallbacks(on_download_success, on_download_fail)
+
+ def on_button_hash_clicked(self, widget):
+ log.debug('on_button_hash_clicked')
+ dialog = self.builder.get_object('dialog_infohash')
+ entry = self.builder.get_object('entry_hash')
+ textview = self.builder.get_object('text_trackers')
+
+ dialog.set_default_response(Gtk.ResponseType.OK)
+ dialog.set_transient_for(self.dialog)
+ entry.grab_focus()
+
+ text = get_clipboard_text()
+ if is_infohash(text):
+ entry.set_text(text)
+
+ dialog.show_all()
+ response = dialog.run()
+ infohash = decode_bytes(entry.get_text()).strip()
+ if response == Gtk.ResponseType.OK and is_infohash(infohash):
+ # Create a list of trackers from the textview buffer
+ tview_buf = textview.get_buffer()
+ trackers_text = decode_bytes(
+ tview_buf.get_text(*tview_buf.get_bounds(), include_hidden_chars=False)
+ )
+ log.debug('Create torrent tracker lines: %s', trackers_text)
+ trackers = list(trackers_tiers_from_text(trackers_text).keys())
+
+ # Convert the information to a magnet URI, this is just easier to
+ # handle this way.
+ log.debug('trackers: %s', trackers)
+ magnet = create_magnet_uri(infohash, infohash, trackers)
+ log.debug('magnet URI: %s', magnet)
+ self.add_from_magnets([magnet])
+
+ entry.set_text('')
+ textview.get_buffer().set_text('')
+ dialog.hide()
+
+ def on_button_remove_clicked(self, widget):
+ log.debug('on_button_remove_clicked')
+ (model, row) = self.listview_torrents.get_selection().get_selected()
+ if row is None:
+ return
+
+ torrent_id = model.get_value(row, 0)
+
+ model.remove(row)
+ del self.files[torrent_id]
+ del self.infos[torrent_id]
+
+ def on_button_trackers_clicked(self, widget):
+ log.debug('on_button_trackers_clicked')
+
+ def on_button_cancel_clicked(self, widget):
+ log.debug('on_button_cancel_clicked')
+ self.hide()
+
+ def on_button_add_clicked(self, widget):
+ log.debug('on_button_add_clicked')
+ self.add_torrents()
+ self.hide()
+
+ def add_torrents(self):
+ (model, row) = self.listview_torrents.get_selection().get_selected()
+ if row is not None:
+ self.save_torrent_options(row)
+
+ torrents_to_add = []
+
+ row = self.torrent_liststore.get_iter_first()
+ while row is not None:
+ torrent_id = self.torrent_liststore.get_value(row, 0)
+ filename = xml_unescape(
+ decode_bytes(self.torrent_liststore.get_value(row, 2))
+ )
+ try:
+ options = self.options[torrent_id]
+ except KeyError:
+ options = None
+
+ file_priorities = self.get_file_priorities(torrent_id)
+ if options is not None:
+ options['file_priorities'] = file_priorities
+
+ if self.infos[torrent_id]:
+ torrents_to_add.append(
+ (
+ os.path.split(filename)[-1],
+ b64encode(self.infos[torrent_id]),
+ options,
+ )
+ )
+ elif is_magnet(filename):
+ client.core.add_torrent_magnet(filename, options).addErrback(log.debug)
+
+ row = self.torrent_liststore.iter_next(row)
+
+ def on_torrents_added(errors):
+ if errors:
+ log.info(
+ 'Failed to add %d out of %d torrents.',
+ len(errors),
+ len(torrents_to_add),
+ )
+ for e in errors:
+ log.info('Torrent add failed: %s', e)
+ else:
+ log.info('Successfully added %d torrents.', len(torrents_to_add))
+
+ if torrents_to_add:
+ client.core.add_torrent_files(torrents_to_add).addCallback(
+ on_torrents_added
+ )
+
+ def on_button_apply_clicked(self, widget):
+ log.debug('on_button_apply_clicked')
+ (model, row) = self.listview_torrents.get_selection().get_selected()
+ if row is None:
+ return
+
+ self.save_torrent_options(row)
+
+ # The options, except file renames, we want all the torrents to have
+ options = self.options[model.get_value(row, 0)].copy()
+ options.pop('mapped_files', None)
+
+ # Set all the torrent options
+ row = model.get_iter_first()
+ while row is not None:
+ torrent_id = model.get_value(row, 0)
+ self.options[torrent_id].update(options)
+ row = model.iter_next(row)
+
+ def on_button_revert_clicked(self, widget):
+ log.debug('on_button_revert_clicked')
+ (model, row) = self.listview_torrents.get_selection().get_selected()
+ if row is None:
+ return
+
+ del self.options[model.get_value(row, 0)]
+ self.set_default_options()
+
+ def on_chk_move_completed_toggled(self, widget):
+ value = widget.get_active()
+ self.move_completed_path_chooser.set_sensitive(value)
+
+ def _on_delete_event(self, widget, event):
+ self.hide()
+ return True
+
+ def get_file_path(self, row, path=''):
+ if not row:
+ return path
+
+ path = self.files_treestore[row][1] + path
+ return self.get_file_path(self.files_treestore.iter_parent(row), path)
+
+ def _on_filename_edited(self, renderer, path, new_text):
+ index = self.files_treestore[path][3]
+
+ # Ensure agnostic path separator
+ new_text = new_text.replace('\\', '/')
+
+ new_text = new_text.strip('/').strip()
+
+ # Return if the text hasn't changed
+ if new_text == self.files_treestore[path][1]:
+ return
+
+ # Get the tree iter
+ itr = self.files_treestore.get_iter(path)
+
+ # Get the torrent_id
+ (model, row) = self.listview_torrents.get_selection().get_selected()
+ torrent_id = model[row][0]
+
+ if 'mapped_files' not in self.options[torrent_id]:
+ self.options[torrent_id]['mapped_files'] = {}
+
+ if index > -1:
+ # We're renaming a file! Yay! That's easy!
+ if not new_text:
+ return
+ parent = self.files_treestore.iter_parent(itr)
+ file_path = os.path.join(self.get_file_path(parent), new_text)
+ # Don't rename if filename exists
+ if parent:
+ for row in self.files_treestore[parent].iterchildren():
+ if new_text == row[1]:
+ return
+ if '/' in new_text:
+ # There are folders in this path, so we need to create them
+ # and then move the file iter to top
+ split_text = new_text.split('/')
+ for s in split_text[:-1]:
+ parent = self.files_treestore.append(
+ parent, [True, s, 0, -1, False, 'folder-symbolic']
+ )
+
+ self.files_treestore[itr][1] = split_text[-1]
+ reparent_iter(self.files_treestore, itr, parent)
+ else:
+ # Update the row's text
+ self.files_treestore[itr][1] = new_text
+
+ # Update the mapped_files dict in the options with the index and new
+ # file path.
+ # We'll send this to the core when adding the torrent so it knows
+ # what to rename before adding.
+ self.options[torrent_id]['mapped_files'][index] = file_path
+ self.files[torrent_id][index]['path'] = file_path
+ else:
+ # Folder!
+ def walk_tree(row):
+ if not row:
+ return
+
+ # Get the file path base once, since it will be the same for
+ # all siblings
+ file_path_base = self.get_file_path(
+ self.files_treestore.iter_parent(row)
+ )
+
+ # Iterate through all the siblings at this level
+ while row:
+ # We recurse if there are children
+ if self.files_treestore.iter_has_child(row):
+ walk_tree(self.files_treestore.iter_children(row))
+
+ index = self.files_treestore[row][3]
+
+ if index > -1:
+ # Get the new full path for this file
+ file_path = file_path_base + self.files_treestore[row][1]
+
+ # Update the file path in the mapped_files dict
+ self.options[torrent_id]['mapped_files'][index] = file_path
+ self.files[torrent_id][index]['path'] = file_path
+
+ # Get the next siblings iter
+ row = self.files_treestore.iter_next(row)
+
+ # Update the treestore row first so that when walking the tree
+ # we can construct the new proper paths
+
+ # We need to check if this folder has been split
+ if '/' in new_text:
+ # It's been split, so we need to add new folders and then re-parent
+ # itr.
+ parent = self.files_treestore.iter_parent(itr)
+ split_text = new_text.split('/')
+ for s in split_text[:-1]:
+ # We don't iterate over the last item because we'll just use
+ # the existing itr and change the text
+ parent = self.files_treestore.append(
+ parent, [True, s + '/', 0, -1, False, 'folder-symbolic']
+ )
+
+ self.files_treestore[itr][1] = split_text[-1] + '/'
+
+ # Now re-parent itr to parent
+ reparent_iter(self.files_treestore, itr, parent)
+ itr = parent
+
+ # We need to re-expand the view because it might contracted
+ # if we change the root iter
+ root = Gtk.TreePath.new_first()
+ self.listview_files.expand_row(root, False)
+ else:
+ # This was a simple folder rename without any splits, so just
+ # change the path for itr
+ self.files_treestore[itr][1] = new_text + '/'
+
+ # Walk through the tree from 'itr' and add all the new file paths
+ # to the 'mapped_files' option
+ walk_tree(itr)
diff --git a/deluge/ui/gtk3/common.py b/deluge/ui/gtk3/common.py
new file mode 100644
index 0000000..42a14b4
--- /dev/null
+++ b/deluge/ui/gtk3/common.py
@@ -0,0 +1,435 @@
+#
+# Copyright (C) 2008 Marcos Mobley ('markybob') <markybob@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+"""Common functions for various parts of gtkui to use."""
+import contextlib
+import logging
+import os
+import pickle
+import shutil
+import sys
+
+from gi.repository.Gdk import SELECTION_CLIPBOARD, SELECTION_PRIMARY, Display
+from gi.repository.GdkPixbuf import Colorspace, Pixbuf
+from gi.repository.GLib import GError
+from gi.repository.Gtk import (
+ Clipboard,
+ IconTheme,
+ Menu,
+ MenuItem,
+ RadioMenuItem,
+ SeparatorMenuItem,
+ SortType,
+)
+
+from deluge.common import get_pixmap, is_ip, osx_check, windows_check
+
+log = logging.getLogger(__name__)
+
+
+def cmp(x, y):
+ """Replacement for built-in function cmp that was removed in Python 3.
+
+ Compare the two objects x and y and return an integer according to
+ the outcome. The return value is negative if x < y, zero if x == y
+ and strictly positive if x > y.
+ """
+
+ try:
+ return (x > y) - (x < y)
+ except TypeError:
+ # Handle NoneType comparison
+ if x is None:
+ if y is None:
+ return 0
+ return -1
+ elif y is None:
+ return 1
+ else:
+ raise
+
+
+def create_blank_pixbuf(size=16):
+ pix = Pixbuf.new(Colorspace.RGB, True, 8, size, size)
+ pix.fill(0x0)
+ return pix
+
+
+def get_pixbuf(filename: str, size: int = 0) -> Pixbuf:
+ """Creates a new pixbuf by loading an image from file
+
+ Args:
+ filename: An image file to load
+ size: Specify a size constraint (equal aspect ratio)
+
+ Returns:
+ A newly created pixbuf
+
+ """
+ # Skip ico and gif that cause Pixbuf crash on Windows
+ # https://dev.deluge-torrent.org/ticket/3501
+ if windows_check() and filename.endswith(('.ico', '.gif')):
+ return create_blank_pixbuf(size)
+
+ if not os.path.isabs(filename):
+ filename = get_pixmap(filename)
+
+ pixbuf = None
+ try:
+ if size:
+ pixbuf = Pixbuf.new_from_file_at_size(filename, size, size)
+ else:
+ pixbuf = Pixbuf.new_from_file(filename)
+ except GError as ex:
+ # Failed to load the pixbuf (Bad image file), so return a blank pixbuf.
+ log.warning(ex)
+
+ return pixbuf or create_blank_pixbuf(size or 16)
+
+
+# Status icons.. Create them from file only once to avoid constantly re-creating them.
+icon_downloading = get_pixbuf('downloading16.png')
+icon_seeding = get_pixbuf('seeding16.png')
+icon_inactive = get_pixbuf('inactive16.png')
+icon_alert = get_pixbuf('alert16.png')
+icon_queued = get_pixbuf('queued16.png')
+icon_checking = get_pixbuf('checking16.png')
+
+
+def get_logo(size):
+ """A Deluge logo.
+
+ Params:
+ size (int): Size of logo in pixels
+
+ Returns:
+ Pixbuf: deluge logo
+ """
+ filename = 'deluge.svg'
+ if windows_check():
+ filename = 'deluge.png'
+ return get_pixbuf(filename, size)
+
+
+def build_menu_radio_list(
+ value_list,
+ callback,
+ pref_value=None,
+ suffix=None,
+ show_notset=False,
+ notset_label='∞',
+ notset_lessthan=0,
+ show_other=False,
+):
+ """Build a menu with radio menu items from a list and connect them to the callback.
+
+ Params:
+ value_list [list]: List of values to build into a menu.
+ callback (function): The function to call when menu item is clicked.
+ pref_value (int): A preferred value to insert into value_list
+ suffix (str): Append a suffix the the menu items in value_list.
+ show_notset (bool): Show the unlimited menu item.
+ notset_label (str): The text for the unlimited menu item.
+ notset_lessthan (int): Activates the unlimited menu item if pref_value is less than this.
+ show_other (bool): Show the `Other` menu item.
+
+ The pref_value is what you would like to test for the default active radio item.
+
+ Returns:
+ Menu: The menu radio
+ """
+ menu = Menu()
+ # Create menuitem to prevent unwanted toggled callback when creating menu.
+ menuitem = RadioMenuItem()
+ group = menuitem.get_group()
+
+ if pref_value > -1 and pref_value not in value_list:
+ value_list.pop()
+ value_list.append(pref_value)
+
+ for value in sorted(value_list):
+ item_text = str(value)
+ if suffix:
+ item_text += ' ' + suffix
+ menuitem = RadioMenuItem.new_with_label(group, item_text)
+ if pref_value and value == pref_value:
+ menuitem.set_active(True)
+ if callback:
+ menuitem.connect('toggled', callback)
+ menu.append(menuitem)
+
+ if show_notset:
+ menuitem = RadioMenuItem.new_with_label(group, notset_label)
+ menuitem.set_name('unlimited')
+ if pref_value and pref_value < notset_lessthan:
+ menuitem.set_active(True)
+ menuitem.connect('toggled', callback)
+ menu.append(menuitem)
+
+ if show_other:
+ menuitem = SeparatorMenuItem()
+ menu.append(menuitem)
+ menuitem = MenuItem.new_with_label(_('Other...'))
+ menuitem.set_name('other')
+ menuitem.connect('activate', callback)
+ menu.append(menuitem)
+
+ return menu
+
+
+def reparent_iter(treestore, itr, parent, move_siblings=False):
+ """
+ This effectively moves itr plus it's children to be a child of parent in treestore
+
+ Params:
+ treestore (gtkTreeStore): the treestore
+ itr (gtkTreeIter): the iter to move
+ parent (gtkTreeIter): the new parent for itr
+ move_siblings (bool): if True, it will move all itr's siblings to parent
+ """
+ src = itr
+
+ def move_children(i, dest):
+ while i:
+ n_cols = treestore.append(
+ dest, treestore.get(i, *range(treestore.get_n_columns()))
+ )
+ to_remove = i
+ if treestore.iter_children(i):
+ move_children(treestore.iter_children(i), n_cols)
+ if not move_siblings and i == src:
+ i = None
+ else:
+ i = treestore.iter_next(i)
+
+ treestore.remove(to_remove)
+
+ move_children(itr, parent)
+
+
+def get_deluge_icon():
+ """The deluge icon for use in dialogs.
+
+ It will first attempt to get the icon from the theme and will fallback to using an image
+ that is distributed with the package.
+
+ Returns:
+ Pixbuf: the deluge icon
+ """
+ if windows_check():
+ return get_logo(32)
+ else:
+ try:
+ icon_theme = IconTheme.get_default()
+ return icon_theme.load_icon('deluge', 64, 0)
+ except GError:
+ return get_logo(64)
+
+
+def associate_magnet_links(overwrite=False):
+ """
+ Associates magnet links to Deluge.
+
+ Params:
+ overwrite (bool): if this is True, the current setting will be overwritten
+
+ Returns:
+ bool: True if association was set
+ """
+
+ if windows_check():
+ import winreg
+
+ try:
+ hkey = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, 'Magnet')
+ except OSError:
+ overwrite = True
+ else:
+ winreg.CloseKey(hkey)
+
+ if overwrite:
+ deluge_exe = os.path.join(os.path.dirname(sys.executable), 'deluge.exe')
+ try:
+ magnet_key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, 'Magnet')
+ except OSError:
+ # Could not create for all users, falling back to current user
+ magnet_key = winreg.CreateKey(
+ winreg.HKEY_CURRENT_USER, 'Software\\Classes\\Magnet'
+ )
+
+ winreg.SetValue(magnet_key, '', winreg.REG_SZ, 'URL:Magnet Protocol')
+ winreg.SetValueEx(magnet_key, 'URL Protocol', 0, winreg.REG_SZ, '')
+ winreg.SetValueEx(magnet_key, 'BrowserFlags', 0, winreg.REG_DWORD, 0x8)
+ winreg.SetValue(magnet_key, 'DefaultIcon', winreg.REG_SZ, f'{deluge_exe},0')
+ winreg.SetValue(
+ magnet_key,
+ r'shell\open\command',
+ winreg.REG_SZ,
+ f'"{deluge_exe}" "%1"',
+ )
+ winreg.CloseKey(magnet_key)
+
+ # Don't try associate magnet on OSX see: #2420
+ elif not osx_check():
+ # gconf method is only available in a GNOME environment
+ try:
+ import gi
+
+ gi.require_version('GConf', '2.0')
+ from gi.repository import GConf
+ except ValueError:
+ log.debug(
+ 'gconf not available, so will not attempt to register magnet URI handler'
+ )
+ return False
+ else:
+ key = '/desktop/gnome/url-handlers/magnet/command'
+ gconf_client = GConf.Client.get_default()
+ if (gconf_client.get(key) and overwrite) or not gconf_client.get(key):
+ # We are either going to overwrite the key, or do it if it hasn't been set yet
+ if gconf_client.set_string(key, 'deluge "%s"'):
+ gconf_client.set_bool(
+ '/desktop/gnome/url-handlers/magnet/needs_terminal', False
+ )
+ gconf_client.set_bool(
+ '/desktop/gnome/url-handlers/magnet/enabled', True
+ )
+ log.info('Deluge registered as default magnet URI handler!')
+ return True
+ else:
+ log.error(
+ 'Unable to register Deluge as default magnet URI handler.'
+ )
+ return False
+ return False
+
+
+def save_pickled_state_file(filename, state):
+ """Save a file in the config directory and creates a backup
+
+ Params:
+ filename (str): Filename to be saved to config
+ state (state): The data to be pickled and written to file
+ """
+ from deluge.configmanager import get_config_dir
+
+ filepath = os.path.join(get_config_dir(), 'gtk3ui_state', filename)
+ filepath_bak = filepath + '.bak'
+ filepath_tmp = filepath + '.tmp'
+
+ try:
+ if os.path.isfile(filepath):
+ log.debug('Creating backup of %s at: %s', filename, filepath_bak)
+ shutil.copy2(filepath, filepath_bak)
+ except OSError as ex:
+ log.error('Unable to backup %s to %s: %s', filepath, filepath_bak, ex)
+ else:
+ log.info('Saving the %s at: %s', filename, filepath)
+ try:
+ with open(filepath_tmp, 'wb') as _file:
+ # Pickle the state object
+ pickle.dump(state, _file, protocol=2)
+ _file.flush()
+ os.fsync(_file.fileno())
+ shutil.move(filepath_tmp, filepath)
+ except (OSError, EOFError, pickle.PicklingError) as ex:
+ log.error('Unable to save %s: %s', filename, ex)
+ if os.path.isfile(filepath_bak):
+ log.info('Restoring backup of %s from: %s', filename, filepath_bak)
+ shutil.move(filepath_bak, filepath)
+
+
+def load_pickled_state_file(filename):
+ """Loads a file from the config directory, attempting backup if original fails to load.
+
+ Params:
+ filename (str): Filename to be loaded from config
+
+ Returns:
+ state: the unpickled state
+ """
+ from deluge.configmanager import get_config_dir
+
+ filepath = os.path.join(get_config_dir(), 'gtk3ui_state', filename)
+ filepath_bak = filepath + '.bak'
+
+ for _filepath in (filepath, filepath_bak):
+ log.info('Opening %s for load: %s', filename, _filepath)
+ try:
+ with open(_filepath, 'rb') as _file:
+ state = pickle.load(_file, encoding='utf8')
+ except (OSError, pickle.UnpicklingError) as ex:
+ log.warning('Unable to load %s: %s', _filepath, ex)
+ else:
+ log.info('Successfully loaded %s: %s', filename, _filepath)
+ return state
+
+
+@contextlib.contextmanager
+def listview_replace_treestore(listview):
+ """Prepare a listview's treestore to be entirely replaced.
+
+ Params:
+ listview: a listview backed by a treestore
+ """
+ # From http://faq.pygtk.org/index.py?req=show&file=faq13.043.htp
+ # "tips for improving performance when adding many rows to a Treeview"
+ listview.freeze_child_notify()
+ treestore = listview.get_model()
+ listview.set_model(None)
+ treestore.clear()
+ treestore.set_default_sort_func(lambda *args: 0)
+ original_sort = treestore.get_sort_column_id()
+ treestore.set_sort_column_id(-1, SortType.ASCENDING)
+
+ yield
+
+ if original_sort != (None, None):
+ treestore.set_sort_column_id(*original_sort)
+
+ listview.set_model(treestore)
+ listview.thaw_child_notify()
+
+
+def get_clipboard_text():
+ text = (
+ Clipboard.get(SELECTION_CLIPBOARD).wait_for_text()
+ or Clipboard.get(SELECTION_PRIMARY).wait_for_text()
+ )
+ if text:
+ return text.strip()
+
+
+def windowing(like):
+ return like.lower() in str(type(Display.get_default())).lower()
+
+
+def parse_ip_port(text):
+ """Return an IP and port from text.
+
+ Parses both IPv4 and IPv6.
+
+ Params:
+ text (str): Text to be parsed for IP and port.
+
+ Returns:
+ tuple: (ip (str), port (int))
+
+ """
+ if '.' in text:
+ # ipv4
+ ip, __, port = text.rpartition(':')
+ elif '[' in text:
+ # ipv6
+ ip, __, port = text.partition('[')[2].partition(']:')
+ else:
+ return None, None
+
+ if ip and is_ip(ip) and port.isdigit():
+ return ip, int(port)
+ else:
+ return None, None
diff --git a/deluge/ui/gtk3/connectionmanager.py b/deluge/ui/gtk3/connectionmanager.py
new file mode 100644
index 0000000..b53dd8e
--- /dev/null
+++ b/deluge/ui/gtk3/connectionmanager.py
@@ -0,0 +1,560 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+from socket import gaierror, getaddrinfo
+from urllib.parse import urlparse
+
+from gi.repository import Gtk
+from twisted.internet import defer, reactor
+
+import deluge.component as component
+from deluge.common import resource_filename, windows_check
+from deluge.configmanager import ConfigManager, get_config_dir
+from deluge.error import AuthenticationRequired, BadLoginError, IncompatibleClient
+from deluge.ui.client import Client, client
+from deluge.ui.hostlist import DEFAULT_PORT, LOCALHOST, HostList
+
+from .common import get_clipboard_text
+from .dialogs import AuthenticationDialog, ErrorDialog
+
+log = logging.getLogger(__name__)
+
+HOSTLIST_COL_ID = 0
+HOSTLIST_COL_HOST = 1
+HOSTLIST_COL_PORT = 2
+HOSTLIST_COL_USER = 3
+HOSTLIST_COL_PASS = 4
+HOSTLIST_COL_STATUS = 5
+HOSTLIST_COL_VERSION = 6
+HOSTLIST_COL_STATUS_I18N = 7
+
+HOSTLIST_ICONS = {
+ 'offline': 'action-unavailable-symbolic',
+ 'online': 'network-server-symbolic',
+ 'connected': 'network-transmit-receive-symbolic',
+}
+STATUS_I18N = {
+ 'offline': _('Offline'),
+ 'online': _('Online'),
+ 'connected': _('Connected'),
+}
+
+
+def cell_render_host(column, cell, model, row, data):
+ host, port, username = model.get(row, *data)
+ text = host + ':' + str(port)
+ if username:
+ text = username + '@' + text
+ cell.set_property('text', text)
+
+
+def cell_render_status_icon(column, cell, model, row, data):
+ status = model[row][data]
+ status = status if status else 'offline'
+ icon_name = HOSTLIST_ICONS.get(status, None)
+ cell.set_property('icon-name', icon_name)
+
+
+class ConnectionManager(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'ConnectionManager')
+ self.gtkui_config = ConfigManager('gtk3ui.conf')
+ self.hostlist = HostList()
+ self.running = False
+
+ # Component overrides
+ def start(self):
+ pass
+
+ def stop(self):
+ # Close this dialog when we are shutting down
+ if self.running:
+ self.connection_manager.response(Gtk.ResponseType.CLOSE)
+
+ def shutdown(self):
+ pass
+
+ # Public methods
+ def show(self):
+ """Show the ConnectionManager dialog."""
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'connection_manager.ui')
+ )
+ )
+ self.connection_manager = self.builder.get_object('connection_manager')
+ self.connection_manager.set_transient_for(component.get('MainWindow').window)
+
+ # Setup the hostlist liststore and treeview
+ self.treeview = self.builder.get_object('treeview_hostlist')
+ self.treeview.set_tooltip_column(HOSTLIST_COL_STATUS_I18N)
+ self.liststore = self.builder.get_object('liststore_hostlist')
+
+ render = Gtk.CellRendererPixbuf()
+ column = Gtk.TreeViewColumn(_('Status'), render)
+ column.set_cell_data_func(render, cell_render_status_icon, HOSTLIST_COL_STATUS)
+ self.treeview.append_column(column)
+
+ render = Gtk.CellRendererText()
+ column = Gtk.TreeViewColumn(_('Host'), render, text=HOSTLIST_COL_HOST)
+ host_data = (HOSTLIST_COL_HOST, HOSTLIST_COL_PORT, HOSTLIST_COL_USER)
+ column.set_cell_data_func(render, cell_render_host, host_data)
+ column.set_expand(True)
+ self.treeview.append_column(column)
+
+ column = Gtk.TreeViewColumn(
+ _('Version'), Gtk.CellRendererText(), text=HOSTLIST_COL_VERSION
+ )
+ self.treeview.append_column(column)
+
+ # Load any saved host entries
+ self._load_liststore()
+ # Set widgets to values from gtkui config.
+ self._load_widget_config()
+ self._update_widget_buttons()
+
+ # Connect the signals to the handlers
+ self.builder.connect_signals(self)
+ self.treeview.get_selection().connect(
+ 'changed', self.on_hostlist_selection_changed
+ )
+
+ # Set running True before update status call.
+ self.running = True
+
+ if windows_check():
+ # Call to simulate() required to workaround showing daemon status (see #2813)
+ reactor.simulate()
+ self._update_host_status()
+
+ # Trigger the on_selection_changed code and select the first host if possible
+ self.treeview.get_selection().unselect_all()
+ if len(self.liststore):
+ self.treeview.get_selection().select_path(0)
+
+ # Run the dialog
+ self.connection_manager.run()
+
+ # Dialog closed so cleanup.
+ self.running = False
+ self.connection_manager.destroy()
+ del self.builder
+ del self.connection_manager
+ del self.liststore
+ del self.treeview
+
+ def _load_liststore(self):
+ """Load saved host entries"""
+ for host_entry in self.hostlist.get_hosts_info():
+ host_id, host, port, username = host_entry
+ self.liststore.append([host_id, host, port, username, '', '', '', ''])
+
+ def _load_widget_config(self):
+ """Set the widgets to show the correct options from the config."""
+ self.builder.get_object('chk_autoconnect').set_active(
+ self.gtkui_config['autoconnect']
+ )
+ self.builder.get_object('chk_autostart').set_active(
+ self.gtkui_config['autostart_localhost']
+ )
+ self.builder.get_object('chk_donotshow').set_active(
+ not self.gtkui_config['show_connection_manager_on_start']
+ )
+
+ def _update_host_status(self):
+ """Updates the host status"""
+ if not self.running:
+ # Callback likely fired after the window closed.
+ return
+
+ def on_host_status(status_info, row):
+ if self.running and row:
+ status = status_info[1].lower()
+ row[HOSTLIST_COL_STATUS] = status
+ row[HOSTLIST_COL_STATUS_I18N] = STATUS_I18N[status]
+ row[HOSTLIST_COL_VERSION] = status_info[2]
+ self._update_widget_buttons()
+
+ deferreds = []
+ for row in self.liststore:
+ host_id = row[HOSTLIST_COL_ID]
+ d = self.hostlist.get_host_status(host_id)
+ try:
+ d.addCallback(on_host_status, row)
+ except AttributeError:
+ on_host_status(d, row)
+ else:
+ deferreds.append(d)
+ defer.DeferredList(deferreds)
+
+ def _update_widget_buttons(self):
+ """Updates the dialog button states."""
+ self.builder.get_object('button_refresh').set_sensitive(len(self.liststore))
+ self.builder.get_object('button_startdaemon').set_sensitive(False)
+ self.builder.get_object('button_connect').set_sensitive(False)
+ self.builder.get_object('button_connect').set_label(_('C_onnect'))
+ self.builder.get_object('button_edithost').set_sensitive(False)
+ self.builder.get_object('button_removehost').set_sensitive(False)
+ self.builder.get_object('button_startdaemon').set_sensitive(False)
+ self.builder.get_object('image_startdaemon').set_from_icon_name(
+ 'system-run-symbolic', Gtk.IconSize.BUTTON
+ )
+ self.builder.get_object('label_startdaemon').set_text_with_mnemonic(
+ _('_Start Daemon')
+ )
+
+ model, row = self.treeview.get_selection().get_selected()
+ if row:
+ self.builder.get_object('button_edithost').set_sensitive(True)
+ self.builder.get_object('button_removehost').set_sensitive(True)
+ else:
+ return
+
+ # Get selected host info.
+ __, host, port, __, __, status, __, __ = model[row]
+
+ try:
+ getaddrinfo(host, None)
+ except gaierror as ex:
+ log.error(
+ 'Error resolving host %s to ip: %s', row[HOSTLIST_COL_HOST], ex.args[1]
+ )
+ self.builder.get_object('button_connect').set_sensitive(False)
+ return
+
+ log.debug('Host Status: %s, %s', host, status)
+
+ # Check to see if the host is online
+ if status == 'connected' or status == 'online':
+ self.builder.get_object('button_connect').set_sensitive(True)
+ self.builder.get_object('image_startdaemon').set_from_icon_name(
+ 'process-stop-symbolic', Gtk.IconSize.MENU
+ )
+ self.builder.get_object('label_startdaemon').set_text_with_mnemonic(
+ _('_Stop Daemon')
+ )
+ self.builder.get_object('button_startdaemon').set_sensitive(False)
+ if status == 'connected':
+ # Display a disconnect button if we're connected to this host
+ self.builder.get_object('button_connect').set_label(_('_Disconnect'))
+ self.builder.get_object('button_removehost').set_sensitive(False)
+ # Currently can only stop daemon when connected to it
+ self.builder.get_object('button_startdaemon').set_sensitive(True)
+ elif host in LOCALHOST:
+ # If localhost we can start the dameon.
+ self.builder.get_object('button_startdaemon').set_sensitive(True)
+
+ def start_daemon(self, port, config):
+ """Attempts to start local daemon process and will show an ErrorDialog if not.
+
+ Args:
+ port (int): Port for the daemon to listen on.
+ config (str): Config path to pass to daemon.
+
+ Returns:
+ bool: True is successfully started the daemon, False otherwise.
+
+ """
+ if client.start_daemon(port, config):
+ log.debug('Localhost daemon started')
+ reactor.callLater(1, self._update_host_status)
+ return True
+ else:
+ ErrorDialog(
+ _('Unable to start daemon!'),
+ _('Check deluged package is installed and logs for further details'),
+ ).run()
+ return False
+
+ # Signal handlers
+ def _connect(self, host_id, username=None, password=None, try_counter=0):
+ def do_connect(result, username=None, password=None, *args):
+ log.debug('Attempting to connect to daemon...')
+ for host_entry in self.hostlist.config['hosts']:
+ if host_entry[0] == host_id:
+ __, host, port, host_user, host_pass = host_entry
+
+ username = username if username else host_user
+ password = password if password else host_pass
+
+ d = client.connect(host, port, username, password)
+ d.addCallback(self._on_connect, host_id)
+ d.addErrback(self._on_connect_fail, host_id, try_counter)
+ return d
+
+ if client.connected():
+ return client.disconnect().addCallback(do_connect, username, password)
+ else:
+ return do_connect(None, username, password)
+
+ def _on_connect(self, daemon_info, host_id):
+ log.debug('Connected to daemon: %s', host_id)
+ if self.gtkui_config['autoconnect']:
+ self.gtkui_config['autoconnect_host_id'] = host_id
+ if self.running:
+ # When connected to a client, and then trying to connect to another,
+ # this component will be stopped(while the connect deferred is
+ # running), so, self.connection_manager will be deleted.
+ # If that's not the case, close the dialog.
+ self.connection_manager.response(Gtk.ResponseType.OK)
+ component.start()
+
+ def _on_connect_fail(self, reason, host_id, try_counter):
+ log.debug('Failed to connect: %s', reason.value)
+
+ if reason.check(AuthenticationRequired, BadLoginError):
+ log.debug('PasswordRequired exception')
+ dialog = AuthenticationDialog(reason.value.message, reason.value.username)
+
+ def dialog_finished(response_id):
+ if response_id == Gtk.ResponseType.OK:
+ self._connect(host_id, dialog.get_username(), dialog.get_password())
+
+ return dialog.run().addCallback(dialog_finished)
+
+ elif reason.check(IncompatibleClient):
+ return ErrorDialog(_('Incompatible Client'), reason.value.message).run()
+
+ if try_counter:
+ log.info('Retrying connection.. Retries left: %s', try_counter)
+ return reactor.callLater(
+ 0.5, self._connect, host_id, try_counter=try_counter - 1
+ )
+
+ msg = str(reason.value)
+ if not self.gtkui_config['autostart_localhost']:
+ msg += '\n' + _(
+ 'Auto-starting the daemon locally is not enabled. '
+ 'See "Options" on the "Connection Manager".'
+ )
+ ErrorDialog(_('Failed To Connect'), msg).run()
+
+ def on_button_connect_clicked(self, widget=None):
+ """Button handler for connect to or disconnect from daemon."""
+ model, row = self.treeview.get_selection().get_selected()
+ if not row:
+ return
+
+ host_id, host, port, __, __, status, __, __ = model[row]
+ # If status is connected then connect button disconnects instead.
+ if status == 'connected':
+
+ def on_disconnect(reason):
+ self._update_host_status()
+
+ return client.disconnect().addCallback(on_disconnect)
+
+ try_counter = 0
+ auto_start = self.builder.get_object('chk_autostart').get_active()
+ if auto_start and host in LOCALHOST and status == 'offline':
+ # Start the local daemon and then connect with retries set.
+ if self.start_daemon(port, get_config_dir()):
+ try_counter = 6
+ else:
+ # Don't attempt to connect to offline daemon.
+ return
+
+ self._connect(host_id, try_counter=try_counter)
+
+ def on_button_close_clicked(self, widget):
+ self.connection_manager.response(Gtk.ResponseType.CLOSE)
+
+ def _run_addhost_dialog(self, edit_host_info=None):
+ """Create and runs the add host dialog.
+
+ Supplying edit_host_info changes the dialog to an edit dialog.
+
+ Args:
+ edit_host_info (list): A list of (host, port, user, pass) to edit.
+
+ Returns:
+ list: The new host info values (host, port, user, pass).
+
+ """
+ self.builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'connection_manager.addhost.ui')
+ )
+ )
+ dialog = self.builder.get_object('addhost_dialog')
+ dialog.set_transient_for(self.connection_manager)
+ hostname_entry = self.builder.get_object('entry_hostname')
+ port_spinbutton = self.builder.get_object('spinbutton_port')
+ username_entry = self.builder.get_object('entry_username')
+ password_entry = self.builder.get_object('entry_password')
+
+ if edit_host_info:
+ dialog.set_title(_('Edit Host'))
+ hostname_entry.set_text(edit_host_info[0])
+ port_spinbutton.set_value(edit_host_info[1])
+ username_entry.set_text(edit_host_info[2])
+ password_entry.set_text(edit_host_info[3])
+
+ response = dialog.run()
+ new_host_info = []
+ if response:
+ new_host_info.append(hostname_entry.get_text())
+ new_host_info.append(port_spinbutton.get_value_as_int())
+ new_host_info.append(username_entry.get_text())
+ new_host_info.append(password_entry.get_text())
+
+ dialog.destroy()
+ return new_host_info
+
+ def on_button_addhost_clicked(self, widget):
+ log.debug('on_button_addhost_clicked')
+ host_info = self._run_addhost_dialog()
+ if host_info:
+ hostname, port, username, password = host_info
+ try:
+ host_id = self.hostlist.add_host(hostname, port, username, password)
+ except ValueError as ex:
+ ErrorDialog(_('Error Adding Host'), ex).run()
+ else:
+ status = 'offline'
+ version = ''
+ self.liststore.append(
+ [
+ host_id,
+ hostname,
+ port,
+ username,
+ password,
+ status,
+ version,
+ STATUS_I18N[status],
+ ]
+ )
+ self._update_host_status()
+
+ def on_button_edithost_clicked(self, widget=None):
+ log.debug('on_button_edithost_clicked')
+ model, row = self.treeview.get_selection().get_selected()
+ status = model[row][HOSTLIST_COL_STATUS]
+ host_id = model[row][HOSTLIST_COL_ID]
+ host_info = [
+ self.liststore[row][HOSTLIST_COL_HOST],
+ self.liststore[row][HOSTLIST_COL_PORT],
+ self.liststore[row][HOSTLIST_COL_USER],
+ self.liststore[row][HOSTLIST_COL_PASS],
+ ]
+
+ new_host_info = self._run_addhost_dialog(edit_host_info=host_info)
+ if new_host_info:
+ hostname, port, username, password = new_host_info
+ try:
+ self.hostlist.update_host(host_id, hostname, port, username, password)
+ except ValueError as ex:
+ ErrorDialog(_('Error Updating Host'), ex).run()
+ else:
+ self.liststore[row] = (
+ host_id,
+ hostname,
+ port,
+ username,
+ password,
+ '',
+ '',
+ '',
+ )
+ self._update_host_status()
+
+ if status == 'connected':
+
+ def on_disconnect(reason):
+ self._update_host_status()
+
+ client.disconnect().addCallback(on_disconnect)
+
+ def on_button_removehost_clicked(self, widget):
+ log.debug('on_button_removehost_clicked')
+ # Get the selected rows
+ model, row = self.treeview.get_selection().get_selected()
+ self.hostlist.remove_host(model[row][HOSTLIST_COL_ID])
+ self.liststore.remove(row)
+ # Update the hostlist
+ self._update_host_status()
+
+ def on_button_startdaemon_clicked(self, widget):
+ log.debug('on_button_startdaemon_clicked')
+ if not self.liststore.iter_n_children(None):
+ # There is nothing in the list, so lets create a localhost entry
+ try:
+ self.hostlist.add_default_host()
+ except ValueError as ex:
+ log.error('Error adding default host: %s', ex)
+ else:
+ self.start_daemon(DEFAULT_PORT, get_config_dir())
+ finally:
+ return
+
+ paths = self.treeview.get_selection().get_selected_rows()[1]
+ if len(paths):
+ __, host, port, user, password, status, __, __ = self.liststore[paths[0]]
+ else:
+ return
+
+ if host not in LOCALHOST:
+ return
+
+ def on_daemon_status_change(result):
+ """Daemon start/stop callback"""
+ reactor.callLater(0.7, self._update_host_status)
+
+ if status in ('online', 'connected'):
+ # Button will stop the daemon if status is online or connected.
+ def on_connect(d, c):
+ """Client callback to call daemon shutdown"""
+ c.daemon.shutdown().addCallback(on_daemon_status_change)
+
+ if client.connected() and (host, port, user) == client.connection_info():
+ client.daemon.shutdown().addCallback(on_daemon_status_change)
+ elif user and password:
+ c = Client()
+ c.connect(host, port, user, password).addCallback(on_connect, c)
+ else:
+ # Otherwise button will start the daemon.
+ self.start_daemon(port, get_config_dir())
+
+ def on_button_refresh_clicked(self, widget):
+ self._update_host_status()
+
+ def on_hostlist_row_activated(self, tree, path, view_column):
+ self.on_button_connect_clicked()
+
+ def on_hostlist_selection_changed(self, treeselection):
+ self._update_widget_buttons()
+
+ def on_chk_toggled(self, widget):
+ self.gtkui_config['autoconnect'] = self.builder.get_object(
+ 'chk_autoconnect'
+ ).get_active()
+ self.gtkui_config['autostart_localhost'] = self.builder.get_object(
+ 'chk_autostart'
+ ).get_active()
+ self.gtkui_config[
+ 'show_connection_manager_on_start'
+ ] = not self.builder.get_object('chk_donotshow').get_active()
+
+ def on_entry_host_paste_clipboard(self, widget):
+ text = get_clipboard_text()
+ log.debug('on_entry_proxy_host_paste-clipboard: got paste: %s', text)
+ text = text if '//' in text else '//' + text
+ parsed = urlparse(text)
+ if parsed.hostname:
+ widget.set_text(parsed.hostname)
+ widget.emit_stop_by_name('paste-clipboard')
+ if parsed.port:
+ self.builder.get_object('spinbutton_port').set_value(parsed.port)
+ if parsed.username:
+ self.builder.get_object('entry_username').set_text(parsed.username)
+ if parsed.password:
+ self.builder.get_object('entry_password').set_text(parsed.password)
diff --git a/deluge/ui/gtk3/createtorrentdialog.py b/deluge/ui/gtk3/createtorrentdialog.py
new file mode 100644
index 0000000..e9f1690
--- /dev/null
+++ b/deluge/ui/gtk3/createtorrentdialog.py
@@ -0,0 +1,517 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os.path
+from base64 import b64encode
+
+from gi.repository import Gtk
+from gi.repository.GObject import TYPE_UINT64, idle_add
+from twisted.internet.threads import deferToThread
+
+import deluge.component as component
+from deluge.common import decode_bytes, get_path_size, is_url, resource_filename
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+from .edittrackersdialog import (
+ last_tier_trackers_from_liststore,
+ trackers_tiers_from_text,
+)
+from .torrentview_data_funcs import cell_data_size
+
+log = logging.getLogger(__name__)
+
+
+class CreateTorrentDialog:
+ def __init__(self):
+ pass
+
+ def show(self):
+ self.builder = Gtk.Builder()
+
+ ui_filenames = [
+ 'create_torrent_dialog.ui',
+ 'create_torrent_dialog.remote_path.ui',
+ 'create_torrent_dialog.remote_save.ui',
+ 'create_torrent_dialog.progress.ui',
+ ]
+ for filename in ui_filenames:
+ self.builder.add_from_file(
+ resource_filename(__package__, os.path.join('glade', filename))
+ )
+
+ self.config = ConfigManager('gtk3ui.conf')
+
+ self.dialog = self.builder.get_object('create_torrent_dialog')
+ self.dialog.set_transient_for(component.get('MainWindow').window)
+
+ self.builder.connect_signals(self)
+
+ # path, icon, size
+ self.files_treestore = Gtk.TreeStore(str, str, TYPE_UINT64)
+
+ column = Gtk.TreeViewColumn(_('Filename'))
+ render = Gtk.CellRendererPixbuf()
+ column.pack_start(render, False)
+ column.add_attribute(render, 'icon-name', 1)
+ render = Gtk.CellRendererText()
+ column.pack_start(render, True)
+ column.add_attribute(render, 'text', 0)
+ column.set_expand(True)
+ self.builder.get_object('treeview_files').append_column(column)
+
+ column = Gtk.TreeViewColumn(_('Size'))
+ render = Gtk.CellRendererText()
+ column.pack_start(render, True)
+ column.set_cell_data_func(render, cell_data_size, 2)
+ self.builder.get_object('treeview_files').append_column(column)
+
+ self.builder.get_object('treeview_files').set_model(self.files_treestore)
+ self.builder.get_object('treeview_files').set_show_expanders(False)
+
+ # tier, url
+ self.trackers_liststore = Gtk.ListStore(int, str)
+
+ self.builder.get_object('tracker_treeview').append_column(
+ Gtk.TreeViewColumn(_('Tier'), Gtk.CellRendererText(), text=0)
+ )
+ self.builder.get_object('tracker_treeview').append_column(
+ Gtk.TreeViewColumn(_('Tracker'), Gtk.CellRendererText(), text=1)
+ )
+
+ self.builder.get_object('tracker_treeview').set_model(self.trackers_liststore)
+ self.trackers_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+
+ if not client.is_localhost() and client.connected():
+ self.builder.get_object('button_remote_path').show()
+ else:
+ self.builder.get_object('button_remote_path').hide()
+
+ self.dialog.show()
+
+ def parse_piece_size_text(self, value):
+ psize, metric = value.split()
+ psize = int(psize)
+ if psize < 32:
+ # This is a MiB value
+ psize = psize * 1024 * 1024
+ else:
+ # This is a KiB value
+ psize = psize * 1024
+
+ return psize
+
+ def adjust_piece_size(self):
+ """Adjusts the recommended piece based on the file/folder/path selected."""
+ size = self.files_treestore[0][2]
+ model = self.builder.get_object('combo_piece_size').get_model()
+ for index, value in enumerate(model):
+ psize = self.parse_piece_size_text(value[0])
+ pieces = size // psize
+ if pieces < 2048 or (index + 1) == len(model):
+ self.builder.get_object('combo_piece_size').set_active(index)
+ break
+
+ def on_button_file_clicked(self, widget):
+ log.debug('on_button_file_clicked')
+ # Setup the filechooserdialog
+ chooser = Gtk.FileChooserDialog(
+ _('Choose a file'),
+ self.dialog,
+ Gtk.FileChooserAction.OPEN,
+ buttons=(
+ _('_Cancel'),
+ Gtk.ResponseType.CANCEL,
+ _('_Open'),
+ Gtk.ResponseType.OK,
+ ),
+ )
+
+ chooser.set_transient_for(self.dialog)
+ chooser.set_select_multiple(False)
+ chooser.set_property('skip-taskbar-hint', True)
+
+ # Run the dialog
+ response = chooser.run()
+
+ if response == Gtk.ResponseType.OK:
+ result = chooser.get_filename()
+ else:
+ chooser.destroy()
+ return
+
+ path = decode_bytes(result)
+
+ self.files_treestore.clear()
+ self.files_treestore.append(
+ None, [result, 'text-x-generic-symbolic', get_path_size(path)]
+ )
+ self.adjust_piece_size()
+ chooser.destroy()
+
+ def on_button_folder_clicked(self, widget):
+ log.debug('on_button_folder_clicked')
+ # Setup the filechooserdialog
+ chooser = Gtk.FileChooserDialog(
+ _('Choose a folder'),
+ self.dialog,
+ Gtk.FileChooserAction.SELECT_FOLDER,
+ buttons=(
+ _('_Cancel'),
+ Gtk.ResponseType.CANCEL,
+ _('_Open'),
+ Gtk.ResponseType.OK,
+ ),
+ )
+
+ chooser.set_transient_for(self.dialog)
+ chooser.set_select_multiple(False)
+ chooser.set_property('skip-taskbar-hint', True)
+ # Run the dialog
+ response = chooser.run()
+
+ if response == Gtk.ResponseType.OK:
+ result = chooser.get_filename()
+ else:
+ chooser.destroy()
+ return
+
+ path = decode_bytes(result)
+
+ self.files_treestore.clear()
+ self.files_treestore.append(
+ None, [result, 'document-open-symbolic', get_path_size(path)]
+ )
+ self.adjust_piece_size()
+ chooser.destroy()
+
+ def on_button_remote_path_clicked(self, widget):
+ log.debug('on_button_remote_path_clicked')
+ dialog = self.builder.get_object('remote_path_dialog')
+ entry = self.builder.get_object('entry_path')
+ dialog.set_transient_for(self.dialog)
+ entry.set_text('/')
+ entry.grab_focus()
+ response = dialog.run()
+
+ if response == Gtk.ResponseType.OK:
+ result = entry.get_text()
+
+ def _on_get_path_size(size):
+ log.debug('size: %s', size)
+ if size > 0:
+ self.files_treestore.clear()
+ self.files_treestore.append(
+ None, [result, 'network-workgroup-symbolic', size]
+ )
+ self.adjust_piece_size()
+
+ client.core.get_path_size(result).addCallback(_on_get_path_size)
+ client.force_call(True)
+
+ dialog.hide()
+
+ def on_button_cancel_clicked(self, widget):
+ log.debug('on_button_cancel_clicked')
+ self.dialog.destroy()
+
+ def on_button_save_clicked(self, widget):
+ log.debug('on_button_save_clicked')
+ if len(self.files_treestore) == 0:
+ return
+
+ # Get the path
+ path = self.files_treestore[0][0].rstrip('\\/')
+ torrent_filename = '%s.torrent' % os.path.split(path)[-1]
+
+ is_remote = 'network' in self.files_treestore[0][1]
+
+ if is_remote:
+ # This is a remote path
+ dialog = self.builder.get_object('remote_save_dialog')
+ dialog.set_transient_for(self.dialog)
+ dialog_save_path = self.builder.get_object('entry_save_path')
+ dialog_save_path.set_text(path + '.torrent')
+ response = dialog.run()
+ if response == Gtk.ResponseType.OK:
+ result = dialog_save_path.get_text()
+ else:
+ dialog.hide()
+ return
+ dialog.hide()
+ else:
+ # Setup the filechooserdialog
+ chooser = Gtk.FileChooserDialog(
+ _('Save .torrent file'),
+ self.dialog,
+ Gtk.FileChooserAction.SAVE,
+ buttons=(
+ _('_Cancel'),
+ Gtk.ResponseType.CANCEL,
+ _('_Save'),
+ Gtk.ResponseType.OK,
+ ),
+ )
+
+ chooser.set_transient_for(self.dialog)
+ chooser.set_select_multiple(False)
+ chooser.set_property('skip-taskbar-hint', True)
+
+ # Add .torrent and * file filters
+ file_filter = Gtk.FileFilter()
+ file_filter.set_name(_('Torrent files'))
+ file_filter.add_pattern('*.' + 'torrent')
+ chooser.add_filter(file_filter)
+ file_filter = Gtk.FileFilter()
+ file_filter.set_name(_('All files'))
+ file_filter.add_pattern('*')
+ chooser.add_filter(file_filter)
+
+ chooser.set_current_name(torrent_filename)
+ # Run the dialog
+ response = chooser.run()
+
+ if response == Gtk.ResponseType.OK:
+ result = chooser.get_filename()
+ else:
+ chooser.destroy()
+ return
+ chooser.destroy()
+
+ # Fix up torrent filename
+ if len(result) < 9:
+ result += '.torrent'
+ elif result[-8:] != '.torrent':
+ result += '.torrent'
+
+ # Get a list of trackers
+ trackers = []
+ if not len(self.trackers_liststore):
+ tracker = None
+ else:
+ # Create a list of lists [[tier0, ...], [tier1, ...], ...]
+ tier_dict = {}
+ for tier, tracker in self.trackers_liststore:
+ tier_dict.setdefault(tier, []).append(tracker)
+
+ trackers = [tier_dict[tier] for tier in sorted(tier_dict)]
+ # Get the first tracker in the first tier
+ tracker = trackers[0][0]
+
+ # Get a list of webseeds
+ textview_buf = self.builder.get_object('textview_webseeds').get_buffer()
+ lines = (
+ textview_buf.get_text(
+ *textview_buf.get_bounds(), include_hidden_chars=False
+ )
+ .strip()
+ .split('\n')
+ )
+ webseeds = []
+ for line in lines:
+ line = line.replace('\\', '/') # Fix any mistyped urls.
+ if is_url(line):
+ webseeds.append(line)
+ # Get the piece length in bytes
+ combo = self.builder.get_object('combo_piece_size')
+ piece_length = self.parse_piece_size_text(
+ combo.get_model()[combo.get_active()][0]
+ )
+
+ author = self.builder.get_object('entry_author').get_text()
+ comment = self.builder.get_object('entry_comments').get_text()
+ private = self.builder.get_object('chk_private_flag').get_active()
+ add_to_session = self.builder.get_object('chk_add_to_session').get_active()
+
+ if is_remote:
+
+ def torrent_created():
+ self.builder.get_object('progress_dialog').hide()
+ client.deregister_event_handler(
+ 'CreateTorrentProgressEvent', on_create_torrent_progress_event
+ )
+
+ def on_create_torrent_progress_event(piece_count, num_pieces):
+ self._on_create_torrent_progress(piece_count, num_pieces)
+ if piece_count == num_pieces:
+ from twisted.internet import reactor
+
+ reactor.callLater(0.5, torrent_created)
+
+ client.register_event_handler(
+ 'CreateTorrentProgressEvent', on_create_torrent_progress_event
+ )
+
+ client.core.create_torrent(
+ decode_bytes(path),
+ tracker,
+ piece_length,
+ comment,
+ decode_bytes(result),
+ webseeds,
+ private,
+ author,
+ trackers,
+ add_to_session,
+ )
+
+ else:
+
+ def hide_progress(result):
+ self.builder.get_object('progress_dialog').hide()
+
+ deferToThread(
+ self.create_torrent,
+ decode_bytes(path),
+ tracker,
+ piece_length,
+ self._on_create_torrent_progress,
+ comment,
+ decode_bytes(result),
+ webseeds,
+ private,
+ author,
+ trackers,
+ add_to_session,
+ ).addCallback(hide_progress)
+
+ # Setup progress dialog
+ self.builder.get_object('progress_dialog').set_transient_for(
+ component.get('MainWindow').window
+ )
+ self.builder.get_object('progress_dialog').show_all()
+
+ self.dialog.destroy()
+
+ def create_torrent(
+ self,
+ path,
+ tracker,
+ piece_length,
+ progress,
+ comment,
+ target,
+ webseeds,
+ private,
+ created_by,
+ trackers,
+ add_to_session,
+ ):
+ import deluge.metafile
+
+ deluge.metafile.make_meta_file(
+ path,
+ tracker,
+ piece_length,
+ progress=progress,
+ comment=comment,
+ target=target,
+ webseeds=webseeds,
+ private=private,
+ created_by=created_by,
+ trackers=trackers,
+ )
+
+ if add_to_session:
+ with open(target, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ client.core.add_torrent_file_async(
+ os.path.split(target)[-1],
+ filedump,
+ {'download_location': os.path.split(path)[0]},
+ )
+
+ def _on_create_torrent_progress(self, value, num_pieces):
+ percent = value / num_pieces
+
+ def update_pbar_with_gobject(percent):
+ pbar = self.builder.get_object('progressbar')
+ pbar.set_text('%.2f%%' % (percent * 100))
+ pbar.set_fraction(percent)
+ return False
+
+ if percent >= 0 and percent <= 1.0:
+ # Make sure there are no threads race conditions that can
+ # crash the UI while updating it.
+ idle_add(update_pbar_with_gobject, percent)
+
+ def on_button_up_clicked(self, widget):
+ log.debug('on_button_up_clicked')
+ row = (
+ self.builder.get_object('tracker_treeview')
+ .get_selection()
+ .get_selected()[1]
+ )
+ if row is None:
+ return
+ if self.trackers_liststore[row][0] == 0:
+ return
+ else:
+ self.trackers_liststore[row][0] -= 1
+
+ def on_button_down_clicked(self, widget):
+ log.debug('on_button_down_clicked')
+ row = (
+ self.builder.get_object('tracker_treeview')
+ .get_selection()
+ .get_selected()[1]
+ )
+ if row is None:
+ return
+ self.trackers_liststore[row][0] += 1
+
+ def on_button_add_clicked(self, widget):
+ log.debug('on_button_add_clicked')
+ builder = Gtk.Builder()
+ builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'edit_trackers.add.ui')
+ )
+ )
+ dialog = builder.get_object('add_tracker_dialog')
+ dialog.set_transient_for(self.dialog)
+ textview = builder.get_object('textview_trackers')
+ if self.config['createtorrent.trackers']:
+ textview.get_buffer().set_text(
+ '\n'.join(self.config['createtorrent.trackers'])
+ )
+ else:
+ textview.get_buffer().set_text('')
+ textview.grab_focus()
+ response = dialog.run()
+
+ if response == Gtk.ResponseType.OK:
+ # Create a list of trackers from the textview buffer
+ textview_buf = textview.get_buffer()
+ trackers_text = textview_buf.get_text(
+ *textview_buf.get_bounds(), include_hidden_chars=False
+ )
+ log.debug('Create torrent tracker lines: %s', trackers_text)
+ self.config['createtorrent.trackers'] = trackers_text.split('/n')
+
+ # Append trackers liststore with unique trackers and tiers starting from last tier number.
+ last_tier, orig_trackers = last_tier_trackers_from_liststore(
+ self.trackers_liststore
+ )
+ for tracker, tier in trackers_tiers_from_text(trackers_text).items():
+ if tracker not in orig_trackers:
+ self.trackers_liststore.append([tier + last_tier, tracker])
+
+ dialog.destroy()
+
+ def on_button_remove_clicked(self, widget):
+ log.debug('on_button_remove_clicked')
+ row = (
+ self.builder.get_object('tracker_treeview')
+ .get_selection()
+ .get_selected()[1]
+ )
+ if row is None:
+ return
+ self.trackers_liststore.remove(row)
diff --git a/deluge/ui/gtk3/details_tab.py b/deluge/ui/gtk3/details_tab.py
new file mode 100644
index 0000000..04a5eab
--- /dev/null
+++ b/deluge/ui/gtk3/details_tab.py
@@ -0,0 +1,71 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+from xml.sax.saxutils import escape as xml_escape
+
+import deluge.component as component
+from deluge.common import decode_bytes, fdate, fsize, is_url
+
+from .tab_data_funcs import fdate_or_dash, fpieces_num_size
+from .torrentdetails import Tab
+
+log = logging.getLogger(__name__)
+
+
+class DetailsTab(Tab):
+ def __init__(self):
+ super().__init__('Details', 'details_tab', 'details_tab_label')
+
+ self.add_tab_widget('summary_name', None, ('name',))
+ self.add_tab_widget('summary_total_size', fsize, ('total_size',))
+ self.add_tab_widget('summary_num_files', str, ('num_files',))
+ self.add_tab_widget('summary_completed', fdate_or_dash, ('completed_time',))
+ self.add_tab_widget('summary_date_added', fdate, ('time_added',))
+ self.add_tab_widget('summary_torrent_path', None, ('download_location',))
+ self.add_tab_widget('summary_hash', str, ('hash',))
+ self.add_tab_widget('summary_comments', str, ('comment',))
+ self.add_tab_widget('summary_creator', str, ('creator',))
+ self.add_tab_widget(
+ 'summary_pieces', fpieces_num_size, ('num_pieces', 'piece_length')
+ )
+
+ def update(self):
+ # Get the first selected torrent
+ selected = component.get('TorrentView').get_selected_torrents()
+
+ # Only use the first torrent in the list or return if None selected
+ if selected:
+ selected = selected[0]
+ else:
+ # No torrent is selected in the torrentview
+ self.clear()
+ return
+
+ session = component.get('SessionProxy')
+ session.get_torrent_status(selected, self.status_keys).addCallback(
+ self._on_get_torrent_status
+ )
+
+ def _on_get_torrent_status(self, status):
+ # Check to see if we got valid data from the core
+ if status is None:
+ return
+
+ # Update all the label widgets
+ for widget in self.tab_widgets.values():
+ txt = xml_escape(self.widget_status_as_fstr(widget, status))
+ if decode_bytes(widget.obj.get_text()) != txt:
+ if 'comment' in widget.status_keys and is_url(txt):
+ widget.obj.set_markup(f'<a href="{txt}">{txt}</a>')
+ else:
+ widget.obj.set_markup(txt)
+
+ def clear(self):
+ for widget in self.tab_widgets.values():
+ widget.obj.set_text('')
diff --git a/deluge/ui/gtk3/dialogs.py b/deluge/ui/gtk3/dialogs.py
new file mode 100644
index 0000000..db337d3
--- /dev/null
+++ b/deluge/ui/gtk3/dialogs.py
@@ -0,0 +1,498 @@
+#
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+# pylint: disable=super-on-old-class
+
+from collections import namedtuple
+
+from gi.repository import Gtk
+from twisted.internet import defer
+
+import deluge.component as component
+from deluge.common import windows_check
+
+from .common import get_deluge_icon, get_pixbuf
+
+Account = namedtuple('Account', 'username password authlevel')
+
+
+class BaseDialog(Gtk.Dialog):
+ """
+ Base dialog class that should be used with all dialogs.
+ """
+
+ def __init__(self, header, text, icon, buttons, parent=None):
+ """
+ :param header: str, the header portion of the dialog
+ :param text: str, the text body of the dialog
+ :param icon: icon name from icon theme or icon filename.
+ :param buttons: tuple, of icon name and responses
+ :param parent: gtkWindow, the parent window, if None it will default to the
+ MainWindow
+ """
+ super().__init__(
+ title=header,
+ parent=parent if parent else component.get('MainWindow').window,
+ flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
+ buttons=buttons,
+ )
+
+ self.set_icon(get_deluge_icon())
+
+ self.connect('delete-event', self._on_delete_event)
+ self.connect('response', self._on_response)
+
+ # Setup all the formatting and such to make our dialog look pretty
+ self.set_border_width(5)
+ self.set_default_size(200, 100)
+ hbox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing=5)
+ image = Gtk.Image()
+ if icon.endswith('.svg') or icon.endswith('.png'):
+ # Hack for Windows since it doesn't support svg
+ if icon.endswith('.svg') and windows_check():
+ icon = icon.rpartition('.svg')[0] + '16.png'
+ image.set_from_pixbuf(get_pixbuf(icon, 24))
+ else:
+ image.set_from_icon_name(icon, Gtk.IconSize.LARGE_TOOLBAR)
+ image.set_alignment(0.5, 0.0)
+ hbox.pack_start(image, False, False, 0)
+ vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, spacing=5)
+ tlabel = Gtk.Label(label=text)
+ tlabel.set_use_markup(True)
+ tlabel.set_line_wrap(True)
+ tlabel.set_alignment(0.0, 0.5)
+ vbox.pack_start(tlabel, False, False, 0)
+ hbox.pack_start(vbox, False, False, 0)
+ self.vbox.pack_start(hbox, False, False, 0)
+ self.vbox.set_spacing(5)
+ self.vbox.show_all()
+
+ def _on_delete_event(self, widget, event):
+ self.destroy()
+ self.deferred.callback(Gtk.ResponseType.DELETE_EVENT)
+
+ def _on_response(self, widget, response):
+ self.destroy()
+ self.deferred.callback(response)
+
+ def run(self):
+ """
+ Shows the dialog and returns a Deferred object. The deferred, when fired
+ will contain the response ID.
+ """
+ self.deferred = defer.Deferred()
+ self.show()
+ return self.deferred
+
+
+class YesNoDialog(BaseDialog):
+ """
+ Displays a dialog asking the user to select Yes or No to a question.
+
+ When run(), it will return either a Gtk.ResponseType.YES or a Gtk.ResponseType.NO.
+
+ """
+
+ def __init__(self, header, text, parent=None):
+ """
+ :param header: see `:class:BaseDialog`
+ :param text: see `:class:BaseDialog`
+ :param parent: see `:class:BaseDialog`
+ """
+ super().__init__(
+ header,
+ text,
+ 'dialog-question',
+ (_('_No'), Gtk.ResponseType.NO, _('_Yes'), Gtk.ResponseType.YES),
+ parent,
+ )
+ # Use the preferred size calculated from the content
+ self.set_default_size(-1, -1)
+
+
+class InformationDialog(BaseDialog):
+ """
+ Displays an information dialog.
+
+ When run(), it will return a Gtk.ResponseType.CLOSE.
+ """
+
+ def __init__(self, header, text, parent=None):
+ """
+ :param header: see `:class:BaseDialog`
+ :param text: see `:class:BaseDialog`
+ :param parent: see `:class:BaseDialog`
+ """
+ super().__init__(
+ header,
+ text,
+ 'dialog-information',
+ (_('_Close'), Gtk.ResponseType.CLOSE),
+ parent,
+ )
+
+
+class ErrorDialog(BaseDialog):
+ """
+ Displays an error dialog with optional details text for more information.
+
+ When run(), it will return a Gtk.ResponseType.CLOSE.
+ """
+
+ def __init__(self, header, text, parent=None, details=None, traceback=False):
+ """
+ :param header: see `:class:BaseDialog`
+ :param text: see `:class:BaseDialog`
+ :param parent: see `:class:BaseDialog`
+ :param details: extra information that will be displayed in a
+ scrollable textview
+ :type details: string
+ :param traceback: show the traceback information in the details area
+ :type traceback: bool
+ """
+ super().__init__(
+ header, text, 'dialog-error', (_('_Close'), Gtk.ResponseType.CLOSE), parent
+ )
+
+ if traceback:
+ import sys
+ import traceback
+
+ tb = sys.exc_info()
+ tb = traceback.format_exc(tb[2])
+ if details:
+ details += '\n' + tb
+ else:
+ details = tb
+
+ if details:
+ self.set_default_size(600, 400)
+ textview = Gtk.TextView()
+ textview.set_editable(False)
+ textview.get_buffer().set_text(details)
+ sw = Gtk.ScrolledWindow()
+ sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+ sw.set_shadow_type(Gtk.ShadowType.IN)
+ sw.add(textview)
+ label = Gtk.Label(label=_('Details:'))
+ label.set_alignment(0.0, 0.5)
+ self.vbox.pack_start(label, False, False, 0)
+ self.vbox.pack_start(sw, True, True, 0)
+ self.vbox.show_all()
+
+
+class AuthenticationDialog(BaseDialog):
+ """
+ Displays a dialog with entry fields asking for username and password.
+
+ When run(), it will return either a Gtk.ResponseType.CANCEL or a
+ Gtk.ResponseType.OK.
+ """
+
+ def __init__(self, err_msg='', username=None, parent=None):
+ """
+ :param err_msg: the error message we got back from the server
+ :type err_msg: string
+ """
+ super().__init__(
+ _('Authenticate'),
+ err_msg,
+ 'dialog-password',
+ (_('_Cancel'), Gtk.ResponseType.CANCEL, _('C_onnect'), Gtk.ResponseType.OK),
+ parent,
+ )
+
+ table = Gtk.Table(2, 2, False)
+ self.username_label = Gtk.Label()
+ self.username_label.set_markup('<b>' + _('Username:') + '</b>')
+ self.username_label.set_alignment(1.0, 0.5)
+ self.username_label.set_padding(5, 5)
+ self.username_entry = Gtk.Entry()
+ table.attach(self.username_label, 0, 1, 0, 1)
+ table.attach(self.username_entry, 1, 2, 0, 1)
+
+ self.password_label = Gtk.Label()
+ self.password_label.set_markup('<b>' + _('Password:') + '</b>')
+ self.password_label.set_alignment(1.0, 0.5)
+ self.password_label.set_padding(5, 5)
+ self.password_entry = Gtk.Entry()
+ self.password_entry.set_visibility(False)
+ self.password_entry.connect('activate', self.on_password_activate)
+ table.attach(self.password_label, 0, 1, 1, 2)
+ table.attach(self.password_entry, 1, 2, 1, 2)
+
+ self.vbox.pack_start(table, False, False, padding=5)
+ self.set_focus(self.password_entry)
+ if username:
+ self.username_entry.set_text(username)
+ self.username_entry.set_editable(False)
+ self.set_focus(self.password_entry)
+ else:
+ self.set_focus(self.username_entry)
+ self.show_all()
+
+ def get_username(self):
+ return self.username_entry.get_text()
+
+ def get_password(self):
+ return self.password_entry.get_text()
+
+ def on_password_activate(self, widget):
+ self.response(Gtk.ResponseType.OK)
+
+
+class AccountDialog(BaseDialog):
+ def __init__(
+ self,
+ username=None,
+ password=None,
+ authlevel=None,
+ levels_mapping=None,
+ parent=None,
+ ):
+ if username:
+ super().__init__(
+ _('Edit Account'),
+ _('Edit existing account'),
+ 'dialog-information',
+ (
+ _('_Cancel'),
+ Gtk.ResponseType.CANCEL,
+ _('_Apply'),
+ Gtk.ResponseType.OK,
+ ),
+ parent,
+ )
+ else:
+ super().__init__(
+ _('New Account'),
+ _('Create a new account'),
+ 'dialog-information',
+ (_('_Cancel'), Gtk.ResponseType.CANCEL, _('_Add'), Gtk.ResponseType.OK),
+ parent,
+ )
+
+ self.account = None
+
+ table = Gtk.Table(2, 3, False)
+ username_label = Gtk.Label()
+ username_label.set_markup('<b>' + _('Username:') + '</b>')
+ username_label.set_alignment(1.0, 0.5)
+ username_label.set_padding(5, 5)
+ self.username_entry = Gtk.Entry()
+ table.attach(username_label, 0, 1, 0, 1)
+ table.attach(self.username_entry, 1, 2, 0, 1)
+
+ authlevel_label = Gtk.Label()
+ authlevel_label.set_markup('<b>' + _('Authentication Level:') + '</b>')
+ authlevel_label.set_alignment(1.0, 0.5)
+ authlevel_label.set_padding(5, 5)
+
+ # combo_box_new_text is deprecated but no other pygtk alternative.
+ self.authlevel_combo = Gtk.ComboBoxText()
+ active_idx = None
+ for idx, level in enumerate(levels_mapping):
+ self.authlevel_combo.append_text(level)
+ if authlevel and authlevel == level:
+ active_idx = idx
+ elif not authlevel and level == 'DEFAULT':
+ active_idx = idx
+
+ if active_idx is not None:
+ self.authlevel_combo.set_active(active_idx)
+
+ table.attach(authlevel_label, 0, 1, 1, 2)
+ table.attach(self.authlevel_combo, 1, 2, 1, 2)
+
+ password_label = Gtk.Label()
+ password_label.set_markup('<b>' + _('Password:') + '</b>')
+ password_label.set_alignment(1.0, 0.5)
+ password_label.set_padding(5, 5)
+ self.password_entry = Gtk.Entry()
+ self.password_entry.set_visibility(False)
+ table.attach(password_label, 0, 1, 2, 3)
+ table.attach(self.password_entry, 1, 2, 2, 3)
+
+ self.vbox.pack_start(table, False, False, padding=5)
+ if username:
+ self.username_entry.set_text(username)
+ self.username_entry.set_editable(False)
+ else:
+ self.set_focus(self.username_entry)
+
+ if password:
+ self.password_entry.set_text(username)
+
+ self.vbox.show_all()
+
+ def _on_response(self, widget, response):
+ if response == Gtk.ResponseType.OK:
+ self.account = Account(
+ self.username_entry.get_text(),
+ self.password_entry.get_text(),
+ self.authlevel_combo.get_active_text(),
+ )
+ self.destroy()
+ self.deferred.callback(response)
+
+
+class OtherDialog(BaseDialog):
+ """
+ Displays a dialog with a spinner for setting a value.
+
+ Returns:
+ int or float:
+ """
+
+ def __init__(
+ self, header, text='', unit_text='', icon=None, default=0, parent=None
+ ):
+ self.value_type = type(default)
+ if self.value_type not in (int, float):
+ raise TypeError('default value needs to be an int or float')
+
+ if not icon:
+ icon = 'dialog-information'
+
+ super().__init__(
+ header,
+ text,
+ icon,
+ (_('_Cancel'), Gtk.ResponseType.CANCEL, _('_Apply'), Gtk.ResponseType.OK),
+ parent,
+ )
+
+ hbox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing=5)
+ alignment_spacer = Gtk.Alignment()
+ hbox.pack_start(alignment_spacer, True, True, 0)
+ alignment_spin = Gtk.Alignment(xalign=1, yalign=0.5, xscale=1, yscale=1)
+ adjustment_spin = Gtk.Adjustment(
+ value=-1, lower=-1, upper=2097151, step_increment=1, page_increment=10
+ )
+ self.spinbutton = Gtk.SpinButton(
+ adjustment=adjustment_spin, climb_rate=0, digits=0
+ )
+ self.spinbutton.set_value(default)
+ self.spinbutton.select_region(0, -1)
+ self.spinbutton.set_width_chars(6)
+ self.spinbutton.set_alignment(1)
+ self.spinbutton.set_max_length(6)
+ if self.value_type is float:
+ self.spinbutton.set_digits(1)
+ alignment_spin.add(self.spinbutton)
+ hbox.pack_start(alignment_spin, False, True, 0)
+ label_type = Gtk.Label()
+ label_type.set_text(unit_text)
+ label_type.set_alignment(0.0, 0.5)
+ hbox.pack_start(label_type, True, True, 0)
+
+ self.vbox.pack_start(hbox, False, False, padding=5)
+ self.vbox.show_all()
+
+ def _on_delete_event(self, widget, event):
+ self.deferred.callback(None)
+ self.destroy()
+
+ def _on_response(self, widget, response):
+ value = None
+ if response == Gtk.ResponseType.OK:
+ if self.value_type is int:
+ value = self.spinbutton.get_value_as_int()
+ else:
+ value = self.spinbutton.get_value()
+ self.deferred.callback(value)
+ self.destroy()
+
+
+class PasswordDialog(BaseDialog):
+ """
+ Displays a dialog with an entry field asking for a password.
+
+ When run(), it will return either a Gtk.ResponseType.CANCEL or a Gtk.ResponseType.OK.
+ """
+
+ def __init__(self, password_msg='', parent=None):
+ """
+ :param password_msg: the error message we got back from the server
+ :type password_msg: string
+ """
+ super().__init__(
+ header=_('Password Protected'),
+ text=password_msg,
+ icon='dialog-password',
+ buttons=(
+ _('_Cancel'),
+ Gtk.ResponseType.CANCEL,
+ _('_OK'),
+ Gtk.ResponseType.OK,
+ ),
+ parent=parent,
+ )
+
+ table = Gtk.Table(1, 2, False)
+ self.password_label = Gtk.Label()
+ self.password_label.set_markup('<b>' + _('Password:') + '</b>')
+ self.password_label.set_alignment(1.0, 0.5)
+ self.password_label.set_padding(5, 5)
+ self.password_entry = Gtk.Entry()
+ self.password_entry.set_visibility(False)
+ self.password_entry.connect('activate', self.on_password_activate)
+ table.attach(self.password_label, 0, 1, 1, 2)
+ table.attach(self.password_entry, 1, 2, 1, 2)
+
+ self.vbox.pack_start(table, False, False, padding=5)
+ self.set_focus(self.password_entry)
+
+ self.show_all()
+
+ def get_password(self):
+ return self.password_entry.get_text()
+
+ def on_password_activate(self, widget):
+ self.response(Gtk.ResponseType.OK)
+
+
+class CopyMagnetDialog(BaseDialog):
+ """
+ Displays a dialog with a magnet URI
+ """
+
+ def __init__(self, torrent_magnet='', parent=None):
+ super().__init__(
+ header=_('Copy Magnet URI'),
+ text='',
+ icon='magnet_copy.svg',
+ buttons=(_('_Close'), Gtk.ResponseType.CLOSE),
+ parent=parent,
+ )
+ self.copied = False
+
+ table = Gtk.Table(1, 2, False)
+ self.magnet_entry = Gtk.Entry()
+ self.magnet_entry.set_text(torrent_magnet)
+ self.magnet_entry.set_editable(False)
+ self.magnet_entry.connect('copy-clipboard', self.on_copy_emitted)
+ table.attach(self.magnet_entry, 0, 1, 0, 1)
+
+ copy_button = Gtk.Button.new_with_label(_('Copy'))
+ copy_button.connect('clicked', self.on_copy_clicked)
+ table.attach(copy_button, 1, 2, 0, 1)
+
+ self.vbox.pack_start(table, False, False, padding=5)
+ self.set_focus(self.magnet_entry)
+
+ self.show_all()
+
+ def on_copy_clicked(self, widget):
+ self.magnet_entry.select_region(0, -1)
+ self.magnet_entry.copy_clipboard()
+ self.magnet_entry.set_position(0)
+ self.copied = True
+
+ def on_copy_emitted(self, widget):
+ self.copied = True
diff --git a/deluge/ui/gtk3/edittrackersdialog.py b/deluge/ui/gtk3/edittrackersdialog.py
new file mode 100644
index 0000000..861e392
--- /dev/null
+++ b/deluge/ui/gtk3/edittrackersdialog.py
@@ -0,0 +1,348 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os.path
+
+from gi.repository import Gdk, Gtk
+from twisted.internet import defer
+
+import deluge.component as component
+from deluge.common import is_url, resource_filename
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+from .common import get_deluge_icon
+
+log = logging.getLogger(__name__)
+
+
+def last_tier_trackers_from_liststore(trackers_liststore):
+ """Create a list of tracker from existing liststore and find last tier number.
+
+ Args:
+ tracker_liststore (Gtk.ListStore): A Gtk.ListStore with [tier (int), tracker (str)] rows.
+
+ Returns:
+ tuple(int, list): A tuple containing last tier number and list of trackers.
+
+ """
+
+ last_tier = 0
+ trackers_from_liststore = []
+ for tier, tracker in trackers_liststore:
+ trackers_from_liststore.append(tracker)
+ if tier >= last_tier:
+ last_tier = tier + 1
+
+ return last_tier, trackers_from_liststore
+
+
+def trackers_tiers_from_text(text_str=''):
+ """Create a list of trackers from text.
+
+ Any duplicate trackers are removed.
+
+ Args:
+ text_input (str): A block of text with tracker separated by newlines.
+
+ Returns:
+ list: The list of trackers.
+
+ Notes:
+ Trackers should be separated by newlines and empty line denotes start of new tier.
+
+ """
+
+ trackers = {}
+ tier = 0
+
+ lines = text_str.strip().split('\n')
+ for line in lines:
+ if not line:
+ tier += 1
+ continue
+ line = line.replace('\\', '/') # Fix any mistyped urls.
+ if is_url(line) and line not in trackers:
+ trackers[line] = tier
+
+ return trackers
+
+
+class EditTrackersDialog:
+ def __init__(self, torrent_id, parent=None):
+ self.torrent_id = torrent_id
+ self.builder = Gtk.Builder()
+ self.gtkui_config = ConfigManager('gtk3ui.conf')
+
+ # Main dialog
+ self.builder.add_from_file(
+ resource_filename(__package__, os.path.join('glade', 'edit_trackers.ui'))
+ )
+ # add tracker dialog
+ self.builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'edit_trackers.add.ui')
+ )
+ )
+ # edit tracker dialog
+ self.builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'edit_trackers.edit.ui')
+ )
+ )
+
+ self.dialog = self.builder.get_object('edit_trackers_dialog')
+ self.treeview = self.builder.get_object('tracker_treeview')
+ self.add_tracker_dialog = self.builder.get_object('add_tracker_dialog')
+ self.add_tracker_dialog.set_transient_for(self.dialog)
+ self.edit_tracker_entry = self.builder.get_object('edit_tracker_entry')
+ self.edit_tracker_entry.set_transient_for(self.dialog)
+ self.dialog.set_icon(get_deluge_icon())
+
+ self.load_edit_trackers_dialog_state()
+
+ if parent is not None:
+ self.dialog.set_transient_for(parent)
+
+ # Connect the signals
+ self.builder.connect_signals(self)
+
+ # Create a liststore for tier, url
+ self.liststore = Gtk.ListStore(int, str)
+
+ # Create the columns
+ self.treeview.append_column(
+ Gtk.TreeViewColumn(_('Tier'), Gtk.CellRendererText(), text=0)
+ )
+ self.treeview.append_column(
+ Gtk.TreeViewColumn(_('Tracker'), Gtk.CellRendererText(), text=1)
+ )
+
+ self.treeview.set_model(self.liststore)
+ self.liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+
+ self.dialog.connect('delete-event', self._on_delete_event)
+ self.dialog.connect('response', self._on_response)
+ self.treeview.connect('button_press_event', self.on_button_press_event)
+
+ self.add_tracker_dialog.connect('key-press-event', self.on_key_add_press_event)
+ self.add_tracker_dialog.connect('delete-event', self.on_delete_event_add)
+ self.edit_tracker_entry.connect('key-press-event', self.on_key_edit_press_event)
+ self.edit_tracker_entry.connect('delete-event', self.on_delete_event_edit)
+
+ def run(self):
+ # Make sure we have a torrent_id.. if not just return
+ if self.torrent_id is None:
+ return
+
+ # Get the trackers for this torrent
+ session = component.get('SessionProxy')
+ session.get_torrent_status(self.torrent_id, ['trackers']).addCallback(
+ self._on_get_torrent_status
+ )
+ client.force_call()
+
+ self.deferred = defer.Deferred()
+ return self.deferred
+
+ def __del__(self):
+ del self.gtkui_config
+
+ def load_edit_trackers_dialog_state(self):
+ w = self.gtkui_config['edit_trackers_dialog_width']
+ h = self.gtkui_config['edit_trackers_dialog_height']
+ if w is not None and h is not None:
+ self.dialog.resize(w, h)
+
+ def on_edit_trackers_dialog_configure_event(self, widget, event):
+ self.gtkui_config['edit_trackers_dialog_width'] = event.width
+ self.gtkui_config['edit_trackers_dialog_height'] = event.height
+
+ def _on_delete_event(self, widget, event):
+ self.deferred.callback(Gtk.ResponseType.DELETE_EVENT)
+ self.dialog.destroy()
+
+ def _on_response(self, widget, response):
+ if response == 1:
+ self.trackers = []
+
+ def each(model, path, _iter, data):
+ tracker = {}
+ tracker['tier'] = model.get_value(_iter, 0)
+ tracker['url'] = model.get_value(_iter, 1)
+ self.trackers.append(tracker)
+
+ self.liststore.foreach(each, None)
+ if self.old_trackers != self.trackers:
+ # Set the torrens trackers
+ client.core.set_torrent_trackers(self.torrent_id, self.trackers)
+ self.deferred.callback(Gtk.ResponseType.OK)
+ else:
+ self.deferred.callback(Gtk.ResponseType.CANCEL)
+ else:
+ self.deferred.callback(Gtk.ResponseType.CANCEL)
+ self.dialog.destroy()
+
+ def _on_get_torrent_status(self, status):
+ """Display trackers dialog"""
+ self.old_trackers = list(status['trackers'])
+ for tracker in self.old_trackers:
+ self.add_tracker(tracker['tier'], tracker['url'])
+ self.treeview.set_cursor(0)
+ self.dialog.show()
+
+ def add_tracker(self, tier, url):
+ """Adds a tracker to the list"""
+ self.liststore.append([tier, url])
+
+ def get_selected(self):
+ """Returns the selected tracker"""
+ return self.treeview.get_selection().get_selected()[1]
+
+ def on_button_add_clicked(self, widget):
+ log.debug('on_button_add_clicked')
+ # Show the add tracker dialog
+ self.add_tracker_dialog.show()
+ self.builder.get_object('textview_trackers').grab_focus()
+ self.dialog.set_sensitive(False)
+
+ def on_button_remove_clicked(self, widget):
+ log.debug('on_button_remove_clicked')
+ selected = self.get_selected()
+ if selected is not None:
+ self.liststore.remove(selected)
+
+ def on_button_edit_clicked(self, widget):
+ """edits an existing tracker on edit button click"""
+ log.debug('on_button_edit_clicked')
+ self._edit_tracker()
+
+ def on_button_press_event(self, widget, event):
+ """edits an existing tracker on double click on tracker name"""
+ if event.type == Gdk.EventType.DOUBLE_BUTTON_PRESS:
+ log.debug('button_press_event double click')
+ self._edit_tracker()
+
+ def _edit_tracker(self):
+ """edits an existing tracker"""
+ selected = self.get_selected()
+ if selected:
+ tracker = self.liststore.get_value(selected, 1)
+ self.builder.get_object('entry_edit_tracker').set_text(tracker)
+ self.edit_tracker_entry.show()
+ self.edit_tracker_entry.grab_focus()
+ self.dialog.set_sensitive(False)
+
+ def _close_edit_dialog(self):
+ self.dialog.set_sensitive(True)
+ self.edit_tracker_entry.hide()
+
+ def on_button_edit_cancel_clicked(self, widget):
+ """handles the cancel button"""
+ log.debug('on_button_edit_cancel_clicked')
+ self._close_edit_dialog()
+
+ def on_key_edit_press_event(self, widget, event):
+ """handles Escape key press"""
+ if event.keyval == Gdk.KEY_Escape:
+ log.debug('on_key_edit_press_event')
+ self._close_edit_dialog()
+
+ def on_delete_event_edit(self, widget, event):
+ """handles the Top-Right X button"""
+ log.debug('on_delete_event_edit')
+ self._close_edit_dialog()
+ return True
+
+ def on_button_edit_ok_clicked(self, widget):
+ log.debug('on_button_edit_ok_clicked')
+ selected = self.get_selected()
+ tracker = self.builder.get_object('entry_edit_tracker').get_text()
+ self.liststore.set_value(selected, 1, tracker)
+ self.dialog.set_sensitive(True)
+ self.edit_tracker_entry.hide()
+
+ def on_button_up_clicked(self, widget):
+ log.debug('on_button_up_clicked')
+ selected = self.get_selected()
+ num_rows = self.liststore.iter_n_children(None)
+ if selected is not None and num_rows > 1:
+ tier = self.liststore.get_value(selected, 0)
+ if tier <= 0:
+ return
+ new_tier = tier - 1
+ # Now change the tier for this tracker
+ self.liststore.set_value(selected, 0, new_tier)
+
+ def on_button_down_clicked(self, widget):
+ log.debug('on_button_down_clicked')
+ selected = self.get_selected()
+ num_rows = self.liststore.iter_n_children(None)
+ if selected is not None and num_rows > 1:
+ tier = self.liststore.get_value(selected, 0)
+ new_tier = tier + 1
+ # Now change the tier for this tracker
+ self.liststore.set_value(selected, 0, new_tier)
+
+ def on_button_add_ok_clicked(self, widget):
+ log.debug('on_button_add_ok_clicked')
+
+ # Create a list of trackers from the textview widget
+ textview_buf = self.builder.get_object('textview_trackers').get_buffer()
+ trackers_text = textview_buf.get_text(
+ *textview_buf.get_bounds(), include_hidden_chars=False
+ )
+
+ for tracker in trackers_tiers_from_text(trackers_text):
+ # Figure out what tier number to use.. it's going to be the highest+1
+ # Also check for duplicates
+ # Check if there are any entries
+ duplicate = False
+ highest_tier = -1
+ for row in self.liststore:
+ tier = row[0]
+ if tier > highest_tier:
+ highest_tier = tier
+ if tracker == row[1]:
+ duplicate = True
+ break
+
+ # If not a duplicate, then add it to the list
+ if not duplicate:
+ # Add the tracker to the list
+ self.add_tracker(highest_tier + 1, tracker)
+
+ # Clear the entry widget and hide the dialog
+ textview_buf.set_text('')
+ self.dialog.set_sensitive(True)
+ self.add_tracker_dialog.hide()
+
+ def _discard_and_close_add_dialog(self):
+ # Clear the entry widget and hide the dialog
+ b = Gtk.TextBuffer()
+ self.builder.get_object('textview_trackers').set_buffer(b)
+ self.dialog.set_sensitive(True)
+ self.add_tracker_dialog.hide()
+
+ def on_button_add_cancel_clicked(self, widget):
+ """handles the cancel button"""
+ log.debug('on_button_add_cancel_clicked')
+ self._discard_and_close_add_dialog()
+
+ def on_key_add_press_event(self, widget, event):
+ """handles Escape key press"""
+ if event.keyval == Gdk.KEY_Escape:
+ log.debug('on_key_add_press_event')
+ self._discard_and_close_add_dialog()
+
+ def on_delete_event_add(self, widget, event):
+ """handles the Top-Right X button"""
+ log.debug('on_delete_event_add')
+ self._discard_and_close_add_dialog()
+ return True
diff --git a/deluge/ui/gtk3/files_tab.py b/deluge/ui/gtk3/files_tab.py
new file mode 100644
index 0000000..6e0fba4
--- /dev/null
+++ b/deluge/ui/gtk3/files_tab.py
@@ -0,0 +1,863 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import json
+import logging
+import os.path
+
+import gi # isort:skip (Required before Gtk import).
+
+gi.require_version('Gtk', '3.0')
+
+# isort:imports-thirdparty
+from gi.repository import Gio, Gtk
+from gi.repository.Gdk import DragAction, ModifierType, keyval_name
+from gi.repository.GObject import TYPE_UINT64
+
+# isort:imports-firstparty
+import deluge.component as component
+from deluge.common import open_file, show_file
+from deluge.ui.client import client
+from deluge.ui.common import FILE_PRIORITY
+
+# isort:imports-localfolder
+from .common import (
+ listview_replace_treestore,
+ load_pickled_state_file,
+ reparent_iter,
+ save_pickled_state_file,
+)
+from .torrentdetails import Tab
+from .torrentview_data_funcs import cell_data_size
+
+log = logging.getLogger(__name__)
+
+CELL_PRIORITY_ICONS = {
+ FILE_PRIORITY['Skip']: 'action-unavailable-symbolic',
+ FILE_PRIORITY['Low']: 'go-down-symbolic',
+ FILE_PRIORITY['Normal']: 'go-next-symbolic',
+ FILE_PRIORITY['High']: 'go-up-symbolic',
+}
+
+G_ICON_DIRECTORY = Gio.content_type_get_icon('inode/directory')
+
+
+def cell_priority(column, cell, model, row, data):
+ if model.get_value(row, 5) == -1:
+ # This is a folder, so lets just set it blank for now
+ cell.set_property('text', '')
+ return
+ priority = model.get_value(row, data)
+ cell.set_property('text', _(FILE_PRIORITY[priority]))
+
+
+def cell_priority_icon(column, cell, model, row, data):
+ if model.get_value(row, 5) == -1:
+ # This is a folder, so lets just set it blank for now
+ cell.set_property('icon-name', None)
+ return
+ priority = model.get_value(row, data)
+ cell.set_property('icon-name', CELL_PRIORITY_ICONS[priority])
+
+
+def cell_filename(column, cell, model, row, data):
+ """Only show the tail portion of the file path"""
+ filepath = model.get_value(row, data)
+ cell.set_property('text', os.path.split(filepath)[1])
+
+
+def cell_progress(column, cell, model, row, data):
+ text = model.get_value(row, data[0])
+ value = model.get_value(row, data[1])
+ cell.set_property('visible', True)
+ cell.set_property('text', text)
+ cell.set_property('value', value)
+
+
+class FilesTab(Tab):
+ def __init__(self):
+ super().__init__('Files', 'files_tab', 'files_tab_label')
+
+ self.listview = self.main_builder.get_object('files_listview')
+ # filename, size, progress string, progress value, priority, file index, icon id
+ self.treestore = Gtk.TreeStore(str, TYPE_UINT64, str, float, int, int, Gio.Icon)
+ self.treestore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+
+ # We need to store the row that's being edited to prevent updating it until
+ # it's been done editing
+ self._editing_index = None
+
+ # Filename column
+ self.filename_column_name = _('Filename')
+ column = Gtk.TreeViewColumn(self.filename_column_name)
+ render = Gtk.CellRendererPixbuf()
+ column.pack_start(render, False)
+ column.add_attribute(render, 'gicon', 6)
+ render = Gtk.CellRendererText()
+ render.set_property('editable', True)
+ render.connect('edited', self._on_filename_edited)
+ render.connect('editing-started', self._on_filename_editing_start)
+ render.connect('editing-canceled', self._on_filename_editing_canceled)
+ column.pack_start(render, True)
+ column.add_attribute(render, 'text', 0)
+ column.set_sort_column_id(0)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(200)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ # Size column
+ column = Gtk.TreeViewColumn(_('Size'))
+ render = Gtk.CellRendererText()
+ column.pack_start(render, False)
+ column.set_cell_data_func(render, cell_data_size, 1)
+ column.set_sort_column_id(1)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(50)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ # Progress column
+ column = Gtk.TreeViewColumn(_('Progress'))
+ render = Gtk.CellRendererProgress()
+ render.set_padding(0, 1)
+ column.pack_start(render, True)
+ column.set_cell_data_func(render, cell_progress, (2, 3))
+ column.set_sort_column_id(3)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(100)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ # Priority column
+ column = Gtk.TreeViewColumn(_('Priority'))
+ render = Gtk.CellRendererPixbuf()
+ column.pack_start(render, False)
+ column.set_cell_data_func(render, cell_priority_icon, 4)
+ render = Gtk.CellRendererText()
+ column.pack_start(render, False)
+ column.set_cell_data_func(render, cell_priority, 4)
+ column.set_sort_column_id(4)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(100)
+ # Bugfix: Last column needs max_width set to stop scrollbar appearing
+ column.set_max_width(200)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ self.listview.set_model(self.treestore)
+
+ self.listview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+
+ self.file_menu = self.main_builder.get_object('menu_file_tab')
+ self.file_menu_priority_items = [
+ self.main_builder.get_object('menuitem_skip'),
+ self.main_builder.get_object('menuitem_low'),
+ self.main_builder.get_object('menuitem_normal'),
+ self.main_builder.get_object('menuitem_high'),
+ self.main_builder.get_object('menuitem_priority_sep'),
+ ]
+
+ self.localhost_widgets = [
+ self.main_builder.get_object('menuitem_open_file'),
+ self.main_builder.get_object('menuitem_show_file'),
+ self.main_builder.get_object('menuitem3'),
+ ]
+
+ self.listview.connect('row-activated', self._on_row_activated)
+ self.listview.connect('key-press-event', self._on_key_press_event)
+ self.listview.connect('button-press-event', self._on_button_press_event)
+
+ self.listview.enable_model_drag_source(
+ ModifierType.BUTTON1_MASK,
+ [('text/plain', 0, 0)],
+ DragAction.DEFAULT | DragAction.MOVE,
+ )
+ self.listview.enable_model_drag_dest([('text/plain', 0, 0)], DragAction.DEFAULT)
+
+ self.listview.connect('drag_data_get', self._on_drag_data_get_data)
+ self.listview.connect('drag_data_received', self._on_drag_data_received_data)
+
+ component.get('MainWindow').connect_signals(self)
+
+ # Connect to various events from the daemon
+ client.register_event_handler(
+ 'TorrentFileRenamedEvent', self._on_torrentfilerenamed_event
+ )
+ client.register_event_handler(
+ 'TorrentFolderRenamedEvent', self._on_torrentfolderrenamed_event
+ )
+ client.register_event_handler(
+ 'TorrentRemovedEvent', self._on_torrentremoved_event
+ )
+
+ # Attempt to load state
+ self.load_state()
+
+ # torrent_id: (filepath, size)
+ self.files_list = {}
+
+ self.torrent_id = None
+
+ def start(self):
+ attr = 'hide' if not client.is_localhost() else 'show'
+ for widget in self.localhost_widgets:
+ getattr(widget, attr)()
+
+ def save_state(self):
+ # Get the current sort order of the view
+ column_id, sort_order = self.treestore.get_sort_column_id()
+
+ # Setup state dict
+ state = {
+ 'columns': {},
+ 'sort_id': int(column_id) if column_id >= 0 else None,
+ 'sort_order': int(sort_order) if sort_order >= 0 else None,
+ }
+
+ for index, column in enumerate(self.listview.get_columns()):
+ state['columns'][column.get_title()] = {
+ 'position': index,
+ 'width': column.get_width(),
+ }
+
+ save_pickled_state_file('files_tab.state', state)
+
+ def load_state(self):
+ state = load_pickled_state_file('files_tab.state')
+
+ if not state:
+ return
+
+ if state['sort_id'] is not None and state['sort_order'] is not None:
+ self.treestore.set_sort_column_id(state['sort_id'], state['sort_order'])
+
+ for index, column in enumerate(self.listview.get_columns()):
+ cname = column.get_title()
+ if cname in state['columns']:
+ cstate = state['columns'][cname]
+ column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
+ column.set_fixed_width(cstate['width'] if cstate['width'] > 0 else 10)
+ if state['sort_id'] == index and state['sort_order'] is not None:
+ column.set_sort_indicator(True)
+ column.set_sort_order(state['sort_order'])
+ if cstate['position'] != index:
+ # Column is in wrong position
+ if cstate['position'] == 0:
+ self.listview.move_column_after(column, None)
+ elif (
+ self.listview.get_columns()[cstate['position'] - 1].get_title()
+ != cname
+ ):
+ self.listview.move_column_after(
+ column, self.listview.get_columns()[cstate['position'] - 1]
+ )
+
+ def update(self):
+ # Get the first selected torrent
+ torrent_id = component.get('TorrentView').get_selected_torrents()
+
+ # Only use the first torrent in the list or return if None selected
+ if len(torrent_id) != 0:
+ torrent_id = torrent_id[0]
+ else:
+ # No torrent is selected in the torrentview
+ self.clear()
+ return
+
+ status_keys = ['file_progress', 'file_priorities']
+ if torrent_id != self.torrent_id:
+ # We only want to do this if the torrent_id has changed
+ self.treestore.clear()
+ self.torrent_id = torrent_id
+ status_keys += ['storage_mode', 'is_seed']
+
+ if self.torrent_id in self.files_list:
+ # We already have the files list stored, so just update the view
+ self.update_files()
+
+ if (
+ self.torrent_id not in self.files_list
+ or not self.files_list[self.torrent_id]
+ ):
+ # We need to get the files list
+ log.debug('Getting file list from core..')
+ status_keys += ['files']
+
+ component.get('SessionProxy').get_torrent_status(
+ self.torrent_id, status_keys
+ ).addCallback(self._on_get_torrent_status, self.torrent_id)
+
+ def clear(self):
+ self.treestore.clear()
+ self.torrent_id = None
+
+ def _on_row_activated(self, tree, path, view_column):
+ self.on_menuitem_open_file_activate(None)
+
+ def get_file_path(self, row, path=''):
+ if not row:
+ return path
+
+ path = self.treestore.get_value(row, 0) + path
+ return self.get_file_path(self.treestore.iter_parent(row), path)
+
+ def _on_open_file(self, status):
+ paths = self.listview.get_selection().get_selected_rows()[1]
+ selected = []
+ for path in paths:
+ selected.append(self.treestore.get_iter(path))
+
+ for select in selected:
+ path = self.get_file_path(select).split('/')
+ filepath = os.path.join(status['download_location'], *path)
+ log.debug('Open file: %s', filepath)
+ timestamp = component.get('MainWindow').get_timestamp()
+ open_file(filepath, timestamp=timestamp)
+
+ def _on_show_file(self, status):
+ paths = self.listview.get_selection().get_selected_rows()[1]
+ selected = []
+ for path in paths:
+ selected.append(self.treestore.get_iter(path))
+
+ for select in selected:
+ path = self.get_file_path(select).split('/')
+ filepath = os.path.join(status['download_location'], *path)
+ log.debug('Show file: %s', filepath)
+ timestamp = component.get('MainWindow').get_timestamp()
+ show_file(filepath, timestamp=timestamp)
+
+ # The following 3 methods create the folder/file view in the treeview
+ def prepare_file_store(self, torrent_files):
+ split_files = {}
+ for index, torrent_file in enumerate(torrent_files):
+ self.prepare_file(torrent_file, torrent_file['path'], index, split_files)
+ self.add_files(None, split_files)
+
+ def prepare_file(self, torrent_file, file_name, file_num, files_storage):
+ first_slash_index = file_name.find('/')
+ if first_slash_index == -1:
+ files_storage[file_name] = (file_num, torrent_file)
+ else:
+ file_name_chunk = file_name[: first_slash_index + 1]
+ if file_name_chunk not in files_storage:
+ files_storage[file_name_chunk] = {}
+ self.prepare_file(
+ torrent_file,
+ file_name[first_slash_index + 1 :],
+ file_num,
+ files_storage[file_name_chunk],
+ )
+
+ def add_files(self, parent_iter, split_files):
+ chunk_size_total = 0
+ for key, value in split_files.items():
+ if key.endswith('/'):
+ chunk_iter = self.treestore.append(
+ parent_iter, [key, 0, '', 0, 0, -1, G_ICON_DIRECTORY]
+ )
+ chunk_size = self.add_files(chunk_iter, value)
+ self.treestore.set(chunk_iter, 1, chunk_size)
+ chunk_size_total += chunk_size
+ else:
+ mime_type, uncertain = Gio.content_type_guess(key, None)
+ if not uncertain and mime_type:
+ mime_icon = Gio.content_type_get_symbolic_icon(mime_type)
+ else:
+ mime_icon = Gio.content_type_get_symbolic_icon('text/plain')
+ self.treestore.append(
+ parent_iter, [key, value[1]['size'], '', 0, 0, value[0], mime_icon]
+ )
+ chunk_size_total += value[1]['size']
+ return chunk_size_total
+
+ def update_files(self):
+ with listview_replace_treestore(self.listview):
+ self.prepare_file_store(self.files_list[self.torrent_id])
+ root = Gtk.TreePath.new_first()
+ self.listview.expand_row(root, False)
+
+ def get_selected_files(self):
+ """Returns a list of file indexes that are selected."""
+
+ def get_iter_children(itr, selected):
+ i = self.treestore.iter_children(itr)
+ while i:
+ selected.append(self.treestore[i][5])
+ if self.treestore.iter_has_child(i):
+ get_iter_children(i, selected)
+ i = self.treestore.iter_next(i)
+
+ selected = []
+ paths = self.listview.get_selection().get_selected_rows()[1]
+ for path in paths:
+ i = self.treestore.get_iter(path)
+ selected.append(self.treestore[i][5])
+ if self.treestore.iter_has_child(i):
+ get_iter_children(i, selected)
+
+ return selected
+
+ def get_files_from_tree(self, rows, files_list, indent):
+ if not rows:
+ return None
+
+ for row in rows:
+ if row[5] > -1:
+ files_list.append((row[5], row))
+ self.get_files_from_tree(row.iterchildren(), files_list, indent + 1)
+ return None
+
+ def update_folder_percentages(self):
+ """Go through the tree and update the folder complete percentages."""
+ root = self.treestore.get_iter_first()
+ if root is None or self.treestore[root][5] != -1:
+ return
+
+ def get_completed_bytes(row):
+ completed_bytes = 0
+ parent = self.treestore.iter_parent(row)
+ while row:
+ if self.treestore.iter_children(row):
+ completed_bytes += get_completed_bytes(
+ self.treestore.iter_children(row)
+ )
+ else:
+ completed_bytes += (
+ self.treestore[row][1] * self.treestore[row][3] / 100
+ )
+
+ row = self.treestore.iter_next(row)
+
+ try:
+ value = completed_bytes / self.treestore[parent][1] * 100
+ except ZeroDivisionError:
+ # Catch the unusual error found when moving folders around
+ value = 0
+ self.treestore[parent][3] = value
+ self.treestore[parent][2] = '%i%%' % value
+ return completed_bytes
+
+ get_completed_bytes(self.treestore.iter_children(root))
+
+ def _on_get_torrent_status(self, status, torrent_id):
+ # Check stored torrent id matches the callback id
+ if self.torrent_id != torrent_id:
+ return
+
+ if 'is_seed' in status:
+ self.__is_seed = status['is_seed']
+
+ if 'files' in status:
+ self.files_list[self.torrent_id] = status['files']
+ self.update_files()
+
+ # (index, iter)
+ files_list = []
+ self.get_files_from_tree(self.treestore, files_list, 0)
+ files_list.sort()
+ for index, row in files_list:
+ # Do not update a row that is being edited
+ if self._editing_index == row[5]:
+ continue
+
+ try:
+ progress_string = '%i%%' % (status['file_progress'][index] * 100)
+ except IndexError:
+ continue
+ if row[2] != progress_string:
+ row[2] = progress_string
+ progress_value = status['file_progress'][index] * 100
+ if row[3] != progress_value:
+ row[3] = progress_value
+ file_priority = status['file_priorities'][index]
+ if row[4] != file_priority:
+ row[4] = file_priority
+ if self._editing_index != -1:
+ # Only update if no folder is being edited
+ self.update_folder_percentages()
+
+ def _on_button_press_event(self, widget, event):
+ """This is a callback for showing the right-click context menu."""
+ log.debug('on_button_press_event')
+ # We only care about right-clicks
+ if event.button == 3:
+ x, y = event.get_coords()
+ cursor_path = self.listview.get_path_at_pos(int(x), int(y))
+ if not cursor_path:
+ return
+
+ paths = self.listview.get_selection().get_selected_rows()[1]
+ if cursor_path[0] not in paths:
+ row = self.treestore.get_iter(cursor_path[0])
+ self.listview.get_selection().unselect_all()
+ self.listview.get_selection().select_iter(row)
+
+ for widget in self.file_menu_priority_items:
+ widget.set_sensitive(not self.__is_seed)
+
+ self.file_menu.popup(None, None, None, None, event.button, event.time)
+ return True
+
+ def _on_key_press_event(self, widget, event):
+ keyname = keyval_name(event.keyval)
+ if keyname is not None:
+ func = getattr(self, 'keypress_' + keyname.lower(), None)
+ selected_rows = self.listview.get_selection().get_selected_rows()[1]
+ if func and selected_rows:
+ return func(event)
+
+ def keypress_menu(self, event):
+ self.file_menu.popup(None, None, None, None, 3, event.time)
+ return True
+
+ def keypress_f2(self, event):
+ path, col = self.listview.get_cursor()
+ for column in self.listview.get_columns():
+ if column.get_title() == self.filename_column_name:
+ self.listview.set_cursor(path, column, True)
+ return True
+
+ def on_menuitem_open_file_activate(self, menuitem):
+ if client.is_localhost:
+ component.get('SessionProxy').get_torrent_status(
+ self.torrent_id, ['download_location']
+ ).addCallback(self._on_open_file)
+
+ def on_menuitem_show_file_activate(self, menuitem):
+ if client.is_localhost:
+ component.get('SessionProxy').get_torrent_status(
+ self.torrent_id, ['download_location']
+ ).addCallback(self._on_show_file)
+
+ def _set_file_priorities_on_user_change(self, selected, priority):
+ """Sets the file priorities in the core. It will change the selected with the 'priority'"""
+ file_priorities = []
+
+ def set_file_priority(model, path, _iter, data):
+ index = model.get_value(_iter, 5)
+ if index in selected and index != -1:
+ file_priorities.append((index, priority))
+ elif index != -1:
+ file_priorities.append((index, model.get_value(_iter, 4)))
+
+ self.treestore.foreach(set_file_priority, None)
+ file_priorities.sort()
+ priorities = [p[1] for p in file_priorities]
+ log.debug('priorities: %s', priorities)
+ client.core.set_torrent_options(
+ [self.torrent_id], {'file_priorities': priorities}
+ )
+
+ def on_menuitem_skip_activate(self, menuitem):
+ self._set_file_priorities_on_user_change(
+ self.get_selected_files(), FILE_PRIORITY['Skip']
+ )
+
+ def on_menuitem_low_activate(self, menuitem):
+ self._set_file_priorities_on_user_change(
+ self.get_selected_files(), FILE_PRIORITY['Low']
+ )
+
+ def on_menuitem_normal_activate(self, menuitem):
+ self._set_file_priorities_on_user_change(
+ self.get_selected_files(), FILE_PRIORITY['Normal']
+ )
+
+ def on_menuitem_high_activate(self, menuitem):
+ self._set_file_priorities_on_user_change(
+ self.get_selected_files(), FILE_PRIORITY['High']
+ )
+
+ def on_menuitem_expand_all_activate(self, menuitem):
+ self.listview.expand_all()
+
+ def _on_filename_edited(self, renderer, path, new_text):
+ index = self.treestore[path][5]
+ log.debug('new_text: %s', new_text)
+
+ # Don't do anything if the text hasn't changed
+ if new_text == self.treestore[path][0]:
+ self._editing_index = None
+ return
+
+ if index > -1:
+ # We are renaming a file
+ itr = self.treestore.get_iter(path)
+ # Recurse through the treestore to get the actual path of the file
+
+ def get_filepath(i):
+ ip = self.treestore.iter_parent(i)
+ fp = ''
+ while ip:
+ fp = self.treestore[ip][0] + fp
+ ip = self.treestore.iter_parent(ip)
+ return fp
+
+ # Only recurse if file is in a folder..
+ if self.treestore.iter_parent(itr):
+ filepath = get_filepath(itr) + new_text
+ else:
+ filepath = new_text
+
+ log.debug('filepath: %s', filepath)
+
+ client.core.rename_files(self.torrent_id, [(index, filepath)])
+ else:
+ # We are renaming a folder
+ folder = self.treestore[path][0]
+
+ parent_path = ''
+ itr = self.treestore.iter_parent(self.treestore.get_iter(path))
+ while itr:
+ parent_path = self.treestore[itr][0] + parent_path
+ itr = self.treestore.iter_parent(itr)
+
+ client.core.rename_folder(
+ self.torrent_id, parent_path + folder, parent_path + new_text
+ )
+
+ self._editing_index = None
+
+ def _on_filename_editing_start(self, renderer, editable, path):
+ self._editing_index = self.treestore[path][5]
+
+ def _on_filename_editing_canceled(self, renderer):
+ self._editing_index = None
+
+ def _on_torrentfilerenamed_event(self, torrent_id, index, name):
+ log.debug('index: %s name: %s', index, name)
+
+ if torrent_id not in self.files_list:
+ return
+
+ old_name = self.files_list[torrent_id][index]['path']
+ self.files_list[torrent_id][index]['path'] = name
+
+ # We need to update the filename displayed if we're currently viewing
+ # this torrents files.
+ if torrent_id != self.torrent_id:
+ return
+
+ old_name_parent = old_name.split('/')[:-1]
+ parent_path = name.split('/')[:-1]
+
+ if old_name_parent != parent_path:
+ if parent_path:
+ for i, p in enumerate(parent_path):
+ p_itr = self.get_iter_at_path('/'.join(parent_path[: i + 1]) + '/')
+ if not p_itr:
+ p_itr = self.get_iter_at_path('/'.join(parent_path[:i]) + '/')
+ p_itr = self.treestore.append(
+ p_itr,
+ [parent_path[i] + '/', 0, '', 0, 0, -1, G_ICON_DIRECTORY],
+ )
+ p_itr = self.get_iter_at_path('/'.join(parent_path) + '/')
+ old_name_itr = self.get_iter_at_path(old_name)
+ self.treestore.append(
+ p_itr,
+ self.treestore.get(
+ old_name_itr, *range(self.treestore.get_n_columns())
+ ),
+ )
+ self.treestore.remove(old_name_itr)
+
+ # Remove old parent path
+ p_itr = self.get_iter_at_path('/'.join(old_name_parent) + '/')
+ self.remove_childless_folders(p_itr)
+ else:
+ new_folders = name.split('/')[:-1]
+ parent_iter = None
+ for f in new_folders:
+ parent_iter = self.treestore.append(
+ parent_iter, [f + '/', 0, '', 0, 0, -1, G_ICON_DIRECTORY]
+ )
+ child = self.get_iter_at_path(old_name)
+ self.treestore.append(
+ parent_iter,
+ self.treestore.get(child, *range(self.treestore.get_n_columns())),
+ )
+ self.treestore.remove(child)
+
+ else:
+ # This is just changing a filename without any folder changes
+ def set_file_name(model, path, itr, user_data):
+ if model[itr][5] == index:
+ model[itr][0] = os.path.split(name)[-1]
+ return True
+
+ self.treestore.foreach(set_file_name, None)
+
+ def get_iter_at_path(self, filepath):
+ """Returns the gtkTreeIter for filepath."""
+ log.debug('get_iter_at_path: %s', filepath)
+ is_dir = False
+ if filepath[-1] == '/':
+ is_dir = True
+
+ filepath = filepath.split('/')
+ if '' in filepath:
+ filepath.remove('')
+
+ path_iter = None
+ itr = self.treestore.iter_children(None)
+ level = 0
+ while itr:
+ ipath = self.treestore[itr][0]
+ if (level + 1) != len(filepath) and ipath == filepath[level] + '/':
+ # We're not at the last index, but we do have a match
+ itr = self.treestore.iter_children(itr)
+ level += 1
+ continue
+ elif (level + 1) == len(filepath) and ipath == (
+ filepath[level] + '/' if is_dir else filepath[level]
+ ):
+ # This is the iter we've been searching for
+ path_iter = itr
+ break
+ else:
+ itr = self.treestore.iter_next(itr)
+ continue
+ return path_iter
+
+ def remove_childless_folders(self, itr):
+ """Goes up the tree removing childless itrs starting at itr."""
+ while not self.treestore.iter_children(itr):
+ parent = self.treestore.iter_parent(itr)
+ self.treestore.remove(itr)
+ itr = parent
+
+ def _on_torrentfolderrenamed_event(self, torrent_id, old_folder, new_folder):
+ log.debug('on_torrent_folder_renamed_signal')
+ log.debug('old_folder: %s new_folder: %s', old_folder, new_folder)
+
+ if torrent_id not in self.files_list:
+ return
+
+ if old_folder[-1] != '/':
+ old_folder += '/'
+
+ if len(new_folder) > 0 and new_folder[-1] != '/':
+ new_folder += '/'
+
+ for fd in self.files_list[torrent_id]:
+ if fd['path'].startswith(old_folder):
+ fd['path'] = fd['path'].replace(old_folder, new_folder, 1)
+
+ if torrent_id == self.torrent_id:
+ old_split = old_folder.split('/')
+ try:
+ old_split.remove('')
+ except ValueError:
+ pass
+
+ new_split = new_folder.split('/')
+ try:
+ new_split.remove('')
+ except ValueError:
+ pass
+
+ old_folder_iter = self.get_iter_at_path(old_folder)
+ old_folder_iter_parent = self.treestore.iter_parent(old_folder_iter)
+
+ new_folder_iter = self.get_iter_at_path(new_folder) if new_folder else None
+
+ if len(new_split) == len(old_split):
+ # These are at the same tree depth, so it's a simple rename
+ self.treestore[old_folder_iter][0] = new_split[-1] + '/'
+ return
+ if new_folder_iter:
+ # This means that a folder by this name already exists
+ reparent_iter(
+ self.treestore,
+ self.treestore.iter_children(old_folder_iter),
+ new_folder_iter,
+ )
+ else:
+ parent = old_folder_iter_parent
+ if new_split:
+ for ns in new_split[:-1]:
+ parent = self.treestore.append(
+ parent, [ns + '/', 0, '', 0, 0, -1, G_ICON_DIRECTORY]
+ )
+
+ self.treestore[old_folder_iter][0] = new_split[-1] + '/'
+ reparent_iter(self.treestore, old_folder_iter, parent)
+ else:
+ child_itr = self.treestore.iter_children(old_folder_iter)
+ reparent_iter(
+ self.treestore,
+ child_itr,
+ old_folder_iter_parent,
+ move_siblings=True,
+ )
+
+ # We need to check if the old_folder_iter no longer has children
+ # and if so, we delete it
+ self.remove_childless_folders(old_folder_iter)
+
+ def _on_torrentremoved_event(self, torrent_id):
+ if torrent_id in self.files_list:
+ del self.files_list[torrent_id]
+
+ def _on_drag_data_get_data(self, treeview, context, selection, target_id, etime):
+ paths = self.listview.get_selection().get_selected_rows()[1]
+ selection.set_text(json.dumps([str(path) for path in paths]), -1)
+
+ def _on_drag_data_received_data(
+ self, treeview, context, x, y, selection, info, etime
+ ):
+ try:
+ selected = json.loads(selection.get_data())
+ except TypeError:
+ log.debug('Invalid selection data: %s', selection.get_data())
+ return
+ log.debug('selection.data: %s', selected)
+ drop_info = treeview.get_dest_row_at_pos(x, y)
+ model = treeview.get_model()
+ if drop_info:
+ itr = model.get_iter(drop_info[0])
+ parent_iter = model.iter_parent(itr)
+ parent_path = ''
+ if model[itr][5] == -1:
+ parent_path += model[itr][0]
+
+ while parent_iter:
+ parent_path = model[parent_iter][0] + parent_path
+ parent_iter = model.iter_parent(parent_iter)
+
+ if model[selected[0]][5] == -1:
+ log.debug('parent_path: %s', parent_path)
+ log.debug('rename_to: %s', parent_path + model[selected[0]][0])
+ # Get the full path of the folder we want to rename
+ pp = ''
+ itr = self.treestore.iter_parent(self.treestore.get_iter(selected[0]))
+ while itr:
+ pp = self.treestore[itr][0] + pp
+ itr = self.treestore.iter_parent(itr)
+ client.core.rename_folder(
+ self.torrent_id,
+ pp + model[selected[0]][0],
+ parent_path + model[selected[0]][0],
+ )
+ else:
+ # [(index, filepath), ...]
+ to_rename = []
+ for s in selected:
+ to_rename.append((model[s][5], parent_path + model[s][0]))
+ log.debug('to_rename: %s', to_rename)
+ client.core.rename_files(self.torrent_id, to_rename)
diff --git a/deluge/ui/gtk3/filtertreeview.py b/deluge/ui/gtk3/filtertreeview.py
new file mode 100644
index 0000000..40752d7
--- /dev/null
+++ b/deluge/ui/gtk3/filtertreeview.py
@@ -0,0 +1,370 @@
+#
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+# 2008 Andrew Resch <andrewresch@gmail.com>
+# 2014 Calum Lind <calumlind@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+import warnings
+
+from gi.repository import Gtk
+from gi.repository.GdkPixbuf import Pixbuf
+from gi.repository.Pango import EllipsizeMode
+
+import deluge.component as component
+from deluge.common import TORRENT_STATE, decode_bytes, resource_filename
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+from .common import get_pixbuf
+
+log = logging.getLogger(__name__)
+
+STATE_PIX = {
+ 'All': 'all',
+ 'Downloading': 'downloading',
+ 'Seeding': 'seeding',
+ 'Paused': 'inactive',
+ 'Checking': 'checking',
+ 'Queued': 'queued',
+ 'Error': 'alert',
+ 'Active': 'active',
+ 'Allocating': 'checking',
+ 'Moving': 'checking',
+}
+
+TRACKER_PIX = {'All': 'tracker_all', 'Error': 'tracker_warning'}
+
+FILTER_COLUMN = 5
+
+
+class FilterTreeView(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'FilterTreeView', interval=2)
+ self.config = ConfigManager('gtk3ui.conf')
+
+ self.tracker_icons = component.get('TrackerIcons')
+
+ self.sidebar = component.get('SideBar')
+ self.treeview = Gtk.TreeView()
+ self.sidebar.add_tab(self.treeview, 'filters', 'Filters')
+
+ # set filter to all when hidden:
+ self.sidebar.notebook.connect('hide', self._on_hide)
+
+ # Create the treestore
+ # cat, value, label, count, pixmap, visible
+ self.treestore = Gtk.TreeStore(str, str, str, int, Pixbuf, bool)
+
+ # Create the column and cells
+ column = Gtk.TreeViewColumn('Filters')
+ column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
+ # icon cell
+ self.cell_pix = Gtk.CellRendererPixbuf()
+ column.pack_start(self.cell_pix, expand=False)
+ column.add_attribute(self.cell_pix, 'pixbuf', 4)
+ # label cell
+ cell_label = Gtk.CellRendererText()
+ cell_label.set_property('ellipsize', EllipsizeMode.END)
+ column.pack_start(cell_label, expand=True)
+ column.set_cell_data_func(cell_label, self.render_cell_data, None)
+ # count cell
+ self.cell_count = Gtk.CellRendererText()
+ self.cell_count.set_property('xalign', 1.0)
+ self.cell_count.set_padding(3, 0)
+ column.pack_start(self.cell_count, expand=False)
+
+ self.treeview.append_column(column)
+
+ # Style
+ self.treeview.set_show_expanders(True)
+ self.treeview.set_headers_visible(False)
+ self.treeview.set_level_indentation(-21)
+ # Force theme to use expander-size so we don't cut out entries due to indentation hack.
+ provider = Gtk.CssProvider()
+ provider.load_from_data(b'* {-GtkTreeView-expander-size: 9;}')
+ context = self.treeview.get_style_context()
+ context.add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
+
+ self.treeview.set_model(self.treestore)
+ self.treeview.get_selection().connect('changed', self.on_selection_changed)
+ self.create_model_filter()
+
+ self.treeview.connect('button-press-event', self.on_button_press_event)
+
+ # filtertree menu
+ builder = Gtk.Builder()
+ builder.add_from_file(
+ resource_filename(__package__, os.path.join('glade', 'filtertree_menu.ui'))
+ )
+ self.menu = builder.get_object('filtertree_menu')
+ builder.connect_signals(self)
+
+ self.default_menu_items = self.menu.get_children()
+
+ # add Cat nodes:
+ self.cat_nodes = {}
+ self.filters = {}
+
+ def start(self):
+ self.cat_nodes = {}
+ self.filters = {}
+ # initial order of state filter:
+ self.cat_nodes['state'] = self.treestore.append(
+ None, ['cat', 'state', _('States'), 0, None, False]
+ )
+ for state in ['All', 'Active'] + TORRENT_STATE:
+ self.update_row('state', state, 0, _(state))
+
+ self.cat_nodes['tracker_host'] = self.treestore.append(
+ None, ['cat', 'tracker_host', _('Trackers'), 0, None, False]
+ )
+ self.update_row('tracker_host', 'All', 0, _('All'))
+ self.update_row('tracker_host', 'Error', 0, _('Error'))
+ self.update_row('tracker_host', '', 0, _('None'))
+
+ self.cat_nodes['owner'] = self.treestore.append(
+ None, ['cat', 'owner', _('Owner'), 0, None, False]
+ )
+ self.update_row('owner', 'localclient', 0, _('Admin'))
+ self.update_row('owner', '', 0, _('None'))
+
+ # We set to this expand the rows on start-up
+ self.expand_rows = True
+
+ self.selected_path = None
+
+ def stop(self):
+ self.treestore.clear()
+
+ def create_model_filter(self):
+ self.model_filter = self.treestore.filter_new()
+ self.model_filter.set_visible_column(FILTER_COLUMN)
+ self.treeview.set_model(self.model_filter)
+
+ def cb_update_filter_tree(self, filter_items):
+ # create missing cat_nodes
+ for cat in filter_items:
+ if cat not in self.cat_nodes:
+ label = _(cat)
+ if cat == 'label':
+ label = _('Labels')
+ self.cat_nodes[cat] = self.treestore.append(
+ None, ['cat', cat, label, 0, None, False]
+ )
+
+ # update rows
+ visible_filters = []
+ for cat, filters in filter_items.items():
+ for value, count in filters:
+ self.update_row(cat, value, count)
+ visible_filters.append((cat, value))
+
+ # hide root-categories not returned by core-part of the plugin.
+ for cat in self.cat_nodes:
+ self.treestore.set_value(
+ self.cat_nodes[cat],
+ FILTER_COLUMN,
+ True if cat in filter_items else False,
+ )
+
+ # hide items not returned by core-plugin.
+ for f in self.filters:
+ if f not in visible_filters:
+ self.treestore.set_value(self.filters[f], FILTER_COLUMN, False)
+
+ if self.expand_rows:
+ self.treeview.expand_all()
+ self.expand_rows = False
+
+ if not self.selected_path:
+ self.select_default_filter()
+
+ def update_row(self, cat, value, count, label=None):
+ def on_get_icon(icon):
+ if icon:
+ self.set_row_image(cat, value, icon.get_filename())
+
+ if (cat, value) in self.filters:
+ row = self.filters[(cat, value)]
+ self.treestore.set_value(row, 3, count)
+ else:
+ pix = self.get_pixmap(cat, value)
+
+ if value == '':
+ if cat == 'label':
+ label = _('No Label')
+ elif cat == 'owner':
+ label = _('No Owner')
+ elif not label and value:
+ label = _(value)
+
+ row = self.treestore.append(
+ self.cat_nodes[cat], [cat, value, label, count, pix, True]
+ )
+ self.filters[(cat, value)] = row
+
+ if cat == 'tracker_host' and value not in ('All', 'Error') and value:
+ d = self.tracker_icons.fetch(value)
+ d.addCallback(on_get_icon)
+
+ self.treestore.set_value(row, FILTER_COLUMN, True)
+ return row
+
+ def render_cell_data(self, column, cell, model, row, data):
+ cat = model.get_value(row, 0)
+ label = decode_bytes(model.get_value(row, 2))
+ count = model.get_value(row, 3)
+
+ # Suppress Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed
+ original_filters = warnings.filters[:]
+ warnings.simplefilter('ignore')
+ try:
+ pix = model.get_value(row, 4)
+ finally:
+ warnings.filters = original_filters
+
+ self.cell_pix.set_property('visible', True if pix else False)
+
+ if cat == 'cat':
+ self.cell_count.set_property('visible', False)
+ cell.set_padding(10, 2)
+ label = '<b>%s</b>' % label
+ else:
+ count_txt = '<small>%s</small>' % count
+ self.cell_count.set_property('markup', count_txt)
+ self.cell_count.set_property('visible', True)
+ cell.set_padding(2, 1)
+ cell.set_property('markup', label)
+
+ def get_pixmap(self, cat, value):
+ pix = None
+ if cat == 'state':
+ pix = STATE_PIX.get(value, None)
+ elif cat == 'tracker_host':
+ pix = TRACKER_PIX.get(value, None)
+
+ if pix:
+ return get_pixbuf('%s16.png' % pix)
+
+ def set_row_image(self, cat, value, filename):
+ pix = get_pixbuf(filename, size=16)
+ row = self.filters[(cat, value)]
+ self.treestore.set_value(row, 4, pix)
+ return False
+
+ def on_selection_changed(self, selection):
+ try:
+ (model, row) = self.treeview.get_selection().get_selected()
+ if not row:
+ log.debug('nothing selected')
+ return
+
+ cat = model.get_value(row, 0)
+ value = model.get_value(row, 1)
+
+ filter_dict = {cat: [value]}
+ if value == 'All' or cat == 'cat':
+ filter_dict = {}
+
+ component.get('TorrentView').set_filter(filter_dict)
+
+ self.selected_path = model.get_path(row)
+
+ except Exception as ex:
+ log.debug(ex)
+ # paths is likely None .. so lets return None
+ return None
+
+ def update(self):
+ try:
+ hide_cat = []
+ if not self.config['sidebar_show_trackers']:
+ hide_cat.append('tracker_host')
+ if not self.config['sidebar_show_owners']:
+ hide_cat.append('owner')
+ client.core.get_filter_tree(
+ self.config['sidebar_show_zero'], hide_cat
+ ).addCallback(self.cb_update_filter_tree)
+ except Exception as ex:
+ log.debug(ex)
+
+ # Callbacks #
+ def on_button_press_event(self, widget, event):
+ """This is a callback for showing the right-click context menu."""
+ x, y = event.get_coords()
+ path = self.treeview.get_path_at_pos(int(x), int(y))
+ if not path:
+ return
+ path = path[0]
+ cat = self.model_filter[path][0]
+
+ if event.button == 1:
+ # Prevent selecting a category label
+ if cat == 'cat':
+ if self.treeview.row_expanded(path):
+ self.treeview.collapse_row(path)
+ else:
+ self.treeview.expand_row(path, False)
+ if not self.selected_path:
+ self.select_default_filter()
+ else:
+ self.treeview.get_selection().select_path(self.selected_path)
+ return True
+
+ elif event.button == 3:
+ # assign current cat, value to self:
+ x, y = event.get_coords()
+ path = self.treeview.get_path_at_pos(int(x), int(y))
+ if not path:
+ return
+ row = self.model_filter.get_iter(path[0])
+ self.cat = self.model_filter.get_value(row, 0)
+ self.value = self.model_filter.get_value(row, 1)
+ self.count = self.model_filter.get_value(row, 3)
+
+ # Show the pop-up menu
+ self.set_menu_sensitivity()
+ self.menu.hide()
+ self.menu.popup(None, None, None, None, event.button, event.time)
+ self.menu.show()
+
+ if cat == 'cat':
+ # Do not select the row
+ return True
+
+ def set_menu_sensitivity(self):
+ # select-all/pause/resume
+ sensitive = self.cat != 'cat' and self.count != 0
+ for item in self.default_menu_items:
+ item.set_sensitive(sensitive)
+
+ def select_all(self):
+ """For use in popup menu."""
+ component.get('TorrentView').treeview.get_selection().select_all()
+
+ def on_select_all(self, event):
+ self.select_all()
+
+ def on_pause_all(self, event):
+ self.select_all()
+ func = getattr(component.get('MenuBar'), 'on_menuitem_%s_activate' % 'pause')
+ func(event)
+
+ def on_resume_all(self, event):
+ self.select_all()
+ func = getattr(component.get('MenuBar'), 'on_menuitem_%s_activate' % 'resume')
+ func(event)
+
+ def _on_hide(self, *args):
+ self.select_default_filter()
+
+ def select_default_filter(self):
+ row = self.filters[('state', 'All')]
+ path = self.treestore.get_path(row)
+ self.treeview.get_selection().select_path(path)
diff --git a/deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui b/deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui
new file mode 100644
index 0000000..8adbad3
--- /dev/null
+++ b/deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="dialog_infohash">
+ <property name="width_request">462</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Add Infohash</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="decorated">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_magnet_add_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_magnet_add_ok">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image_dialog_magnet">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-revert-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">From Infohash</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Infohash:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_hash">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">True</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Trackers:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTextView" id="text_trackers">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button_magnet_add_cancel</action-widget>
+ <action-widget response="-5">button_magnet_add_ok</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/add_torrent_dialog.ui b/deluge/ui/gtk3/glade/add_torrent_dialog.ui
new file mode 100644
index 0000000..b0f507d
--- /dev/null
+++ b/deluge/ui/gtk3/glade/add_torrent_dialog.ui
@@ -0,0 +1,1031 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkDialog" id="dialog_add_torrent">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Add Torrents</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_cancel_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add">
+ <property name="label" translatable="yes">_Add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="vpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">3</property>
+ <property name="left_padding">5</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <property name="min_content_height">50</property>
+ <child>
+ <object class="GtkTreeView" id="listview_torrents">
+ <property name="height_request">71</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection1"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">center</property>
+ <child>
+ <object class="GtkButton" id="button_file">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_file_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-open-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_url">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_url_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">insert-link-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_URL</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_hash">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_hash_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-revert-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Info_hash</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_remove">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_remove_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-remove-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Remove</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">5</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_border">False</property>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkAlignment" id="alignment9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">5</property>
+ <child>
+ <object class="GtkBox" id="prefetch_hbox">
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkSpinner" id="prefetch_spinner">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="prefetch_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Please wait for files...</property>
+ <property name="xalign">0</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="border_width">2</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="listview_files">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="border_width">1</property>
+ <property name="headers_visible">False</property>
+ <property name="enable_tree_lines">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection2"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkBox" id="hbox11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage" id="image9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-open-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Fi_les</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">3</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkFrame" id="frame7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="bottom_padding">1</property>
+ <property name="left_padding">5</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkBox" id="hbox_download_location_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Download Folder</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">5</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkBox" id="hbox_move_completed_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_move_completed">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="margin_right">10</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_move_completed_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Move Complete Folder</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkFrame" id="frame6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">7</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_paused">
+ <property name="label" translatable="yes">Add In _Paused State</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_prioritize">
+ <property name="label" translatable="yes">Prioritize First/Last Pieces</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_sequential_download">
+ <property name="label" translatable="yes">Sequential Download</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">When enabled, the piece picker will pick pieces in
+sequence instead of rarest first.
+
+Enabling sequential download will affect the piece
+distribution negatively in the swarm. It should be
+used sparingly.</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_seed_mode">
+ <property name="label" translatable="yes">Skip File Hash Check</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_markup">Useful if adding a complete torrent for seeding.</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_super_seeding">
+ <property name="label" translatable="yes">Super Seeding</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_markup">Useful if adding a complete torrent for seeding.</property>
+ <property name="halign">start</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_pre_alloc">
+ <property name="label" translatable="yes">Preallocate Disk Space</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Preallocate the disk space for the torrent files</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkGrid" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkSpinButton" id="spin_maxup">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment2</property>
+ <property name="update_policy">if-valid</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_maxconnections">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment3</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_maxupslots">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment4</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_maxdown">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Maximum torrent download speed</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Down Speed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Maximum torrent upload speed</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Up Speed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Maximum torrent connections</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Connections:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Maximum torrent upload slots</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Upload Slots:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Bandwidth</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkButton" id="button_apply">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_apply_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="icon_name">emblem-ok-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Apply To All</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButton" id="button_revert">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_revert_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-revert-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Revert To Defaults</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkBox" id="hbox12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage" id="image10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-properties-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Options</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_add</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkListStore" id="liststore1"/>
+</interface>
diff --git a/deluge/ui/gtk3/glade/add_torrent_dialog.url.ui b/deluge/ui/gtk3/glade/add_torrent_dialog.url.ui
new file mode 100644
index 0000000..6b75b23
--- /dev/null
+++ b/deluge/ui/gtk3/glade/add_torrent_dialog.url.ui
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="url_dialog">
+ <property name="width_request">462</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Add URL</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="decorated">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_add_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add_ok">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-add-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">From URL</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">URL:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_url">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">True</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button_add_cancel</action-widget>
+ <action-widget response="-5">button_add_ok</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/connect_peer_dialog.ui b/deluge/ui/gtk3/glade/connect_peer_dialog.ui
new file mode 100644
index 0000000..4a60751
--- /dev/null
+++ b/deluge/ui/gtk3/glade/connect_peer_dialog.ui
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="connect_peer_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Add Peer</property>
+ <property name="window_position">mouse</property>
+ <property name="type_hint">dialog</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="decorated">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button1">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-add-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add Peer</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="txt_ip">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">True</property>
+ <property name="width_chars">39</property>
+ <property name="text" translatable="yes">hostname:port</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button2</action-widget>
+ <action-widget response="1">button1</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/connection_manager.addhost.ui b/deluge/ui/gtk3/glade/connection_manager.addhost.ui
new file mode 100644
index 0000000..ea5376e
--- /dev/null
+++ b/deluge/ui/gtk3/glade/connection_manager.addhost.ui
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.2 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment_port">
+ <property name="upper">65535</property>
+ <property name="value">58846</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkDialog" id="addhost_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Add Host</property>
+ <property name="modal">True</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child type="titlebar">
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">15</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_addhost_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_addhost_add">
+ <property name="label" translatable="yes">_Save</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Hostname:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_hostname">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">True</property>
+ <property name="truncate_multiline">True</property>
+ <signal name="paste-clipboard" handler="on_entry_host_paste_clipboard" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Port:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton_port">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">start</property>
+ <property name="max_length">5</property>
+ <property name="invisible_char">•</property>
+ <property name="width_chars">5</property>
+ <property name="max_width_chars">5</property>
+ <property name="progress_pulse_step">1</property>
+ <property name="adjustment">adjustment_port</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Username:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_username">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="invisible_char">•</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Password:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_password">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="visibility">False</property>
+ <property name="invisible_char">•</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_addhost_cancel</action-widget>
+ <action-widget response="1">button_addhost_add</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/connection_manager.ui b/deluge/ui/gtk3/glade/connection_manager.ui
new file mode 100644
index 0000000..44f4b34
--- /dev/null
+++ b/deluge/ui/gtk3/glade/connection_manager.ui
@@ -0,0 +1,394 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkListStore" id="liststore_hostlist">
+ <columns>
+ <!-- column-name host_id -->
+ <column type="gchararray"/>
+ <!-- column-name hostname -->
+ <column type="gchararray"/>
+ <!-- column-name port -->
+ <column type="gint"/>
+ <!-- column-name username -->
+ <column type="gchararray"/>
+ <!-- column-name password -->
+ <column type="gchararray"/>
+ <!-- column-name status -->
+ <column type="gchararray"/>
+ <!-- column-name version -->
+ <column type="gchararray"/>
+ <!-- column-name status_i18n -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkDialog" id="connection_manager">
+ <property name="can_focus">False</property>
+ <property name="has_focus">True</property>
+ <property name="is_focus">True</property>
+ <property name="title" translatable="yes">Connection Manager</property>
+ <property name="modal">True</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="default_width">300</property>
+ <property name="default_height">285</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_close">
+ <property name="label" translatable="yes">_Close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_close_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_connect">
+ <property name="label" translatable="yes">C_onnect</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_connect_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">5</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkTreeView" id="treeview_hostlist">
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="model">liststore_hostlist</property>
+ <signal name="row-activated" handler="on_hostlist_row_activated" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">3</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="button_addhost">
+ <property name="label" translatable="yes">_Add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_addhost_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_edithost">
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_edithost_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_removehost">
+ <property name="label" translatable="yes">_Remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_removehost_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_refresh">
+ <property name="label" translatable="yes">_Refresh</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_refresh_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButton" id="button_startdaemon">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_startdaemon_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image_startdaemon">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">system-run-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">3</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_startdaemon">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Start Daemon</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Deluge Daemons</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="expanded">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">5</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_autoconnect">
+ <property name="label" translatable="yes">Auto-connect to selected Daemon</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_autostart">
+ <property name="label" translatable="yes">Auto-start localhost daemon (if required)</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_donotshow">
+ <property name="label" translatable="yes">Hide this dialog</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Startup Options</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_close</action-widget>
+ <action-widget response="0">button_connect</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui b/deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui
new file mode 100644
index 0000000..e46ef17
--- /dev/null
+++ b/deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="progress_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Creating Torrent</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar">
+ <property name="width_request">200</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui b/deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui
new file mode 100644
index 0000000..4328330
--- /dev/null
+++ b/deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="remote_path_dialog">
+ <property name="width_request">462</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Enter Remote Path</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="decorated">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_add_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add_ok">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">network-workgroup-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Remote Path</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Path:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_path">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">True</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button_add_cancel</action-widget>
+ <action-widget response="-5">button_add_ok</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui b/deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui
new file mode 100644
index 0000000..7123054
--- /dev/null
+++ b/deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="remote_save_dialog">
+ <property name="width_request">462</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Save .torrent as</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="decorated">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_add_cancel1">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add_ok1">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">network-workgroup-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Save .torrent file</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Path:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_save_path">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">True</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button_add_cancel1</action-widget>
+ <action-widget response="-5">button_add_ok1</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/create_torrent_dialog.ui b/deluge/ui/gtk3/glade/create_torrent_dialog.ui
new file mode 100644
index 0000000..0d15940
--- /dev/null
+++ b/deluge/ui/gtk3/glade/create_torrent_dialog.ui
@@ -0,0 +1,844 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkListStore" id="liststore1">
+ <columns>
+ <!-- column-name item -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">32 KiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">64 KiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">128 KiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">256 KiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">512 KiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">1 MiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">2 MiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">4 MiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">8 MiB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">16 MiB</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkWindow" id="create_torrent_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Create Torrent</property>
+ <property name="window_position">center-on-parent</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-new-symbolic</property>
+ <property name="icon_size">5</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Create Torrent</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="treeview_files">
+ <property name="height_request">30</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection1"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">center</property>
+ <child>
+ <object class="GtkButton" id="button_file">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_file_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-new-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_folder">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_folder_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">folder-open-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Fol_der</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_remote_path">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_remote_path_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">network-workgroup-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Remote Path</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Files</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="bottom_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Author:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_author">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Comments:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_comments">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkBox" id="hbox11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">dialog-information-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Info</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="bottom_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="tracker_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection2"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="vbuttonbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">1</property>
+ <property name="layout_style">center</property>
+ <child>
+ <object class="GtkButton" id="button_up">
+ <property name="label" translatable="yes">_Up</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_up_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add">
+ <property name="label" translatable="yes">_Add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_remove">
+ <property name="label" translatable="yes">_Remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_remove_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_down">
+ <property name="label" translatable="yes">_Down</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_down_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkBox" id="hbox12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">text-editor-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Trackers</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="bottom_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <child>
+ <object class="GtkTextView" id="textview_webseeds">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkBox" id="hbox13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">network-workgroup-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Webseeds</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="bottom_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Piece Size:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combo_piece_size">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">liststore1</property>
+ <property name="active">2</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_private_flag">
+ <property name="label" translatable="yes">Set Private Flag</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_add_to_session">
+ <property name="label" translatable="yes">Add this torrent to the session</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkBox" id="hbox14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">preferences-other-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Options</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_cancel_clicked" swapped="no"/>
+ <accelerator key="Escape" signal="clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_save">
+ <property name="label" translatable="yes">_Save</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_save_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/edit_trackers.add.ui b/deluge/ui/gtk3/glade/edit_trackers.add.ui
new file mode 100644
index 0000000..39d1978
--- /dev/null
+++ b/deluge/ui/gtk3/glade/edit_trackers.add.ui
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="add_tracker_dialog">
+ <property name="width_request">400</property>
+ <property name="height_request">200</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Add Tracker</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_add_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_add_cancel_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add_ok">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_add_ok_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-add-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add Trackers</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Trackers:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTextView" id="textview_trackers">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="left_margin">1</property>
+ <property name="right_margin">1</property>
+ <property name="accepts_tab">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button_add_cancel</action-widget>
+ <action-widget response="-5">button_add_ok</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/edit_trackers.edit.ui b/deluge/ui/gtk3/glade/edit_trackers.edit.ui
new file mode 100644
index 0000000..fc3e51b
--- /dev/null
+++ b/deluge/ui/gtk3/glade/edit_trackers.edit.ui
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="edit_tracker_entry">
+ <property name="width_request">400</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Edit Tracker</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_add_cancel1">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_edit_cancel_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add_ok1">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_edit_ok_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">text-editor-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Edit Tracker</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Tracker:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_edit_tracker">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">True</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_add_cancel1</action-widget>
+ <action-widget response="1">button_add_ok1</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/edit_trackers.ui b/deluge/ui/gtk3/glade/edit_trackers.ui
new file mode 100644
index 0000000..9b77a9b
--- /dev/null
+++ b/deluge/ui/gtk3/glade/edit_trackers.ui
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="edit_trackers_dialog">
+ <property name="width_request">400</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Edit Trackers</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="default_width">400</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <signal name="configure-event" handler="on_edit_trackers_dialog_configure_event" swapped="no"/>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_ok">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">text-editor-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Edit Trackers</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="tracker_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="vbuttonbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">1</property>
+ <property name="layout_style">center</property>
+ <child>
+ <object class="GtkButton" id="button_up">
+ <property name="label" translatable="yes">_Up</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_up_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add">
+ <property name="label" translatable="yes">_Add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_exit">
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_edit_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_remove">
+ <property name="label" translatable="yes">_Remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_remove_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_down">
+ <property name="label" translatable="yes">_Down</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_down_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="1">button_ok</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/filtertree_menu.ui b/deluge/ui/gtk3/glade/filtertree_menu.ui
new file mode 100644
index 0000000..d2861e1
--- /dev/null
+++ b/deluge/ui/gtk3/glade/filtertree_menu.ui
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkImage" id="image22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">edit-select-all-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image22">
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playback-pause-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playback-start-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkMenu" id="filtertree_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="select_all">
+ <property name="label" translatable="yes">_Select All</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image22</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_select_all" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_pause">
+ <property name="label" translatable="yes">_Pause All</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image22</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_pause_all" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_resume">
+ <property name="label" translatable="yes">Resu_me All</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Resume selected torrents.</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image23</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_resume_all" swapped="no"/>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/main_window.new_release.ui b/deluge/ui/gtk3/glade/main_window.new_release.ui
new file mode 100644
index 0000000..f9c7fd5
--- /dev/null
+++ b/deluge/ui/gtk3/glade/main_window.new_release.ui
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="new_release_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">New Release</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="icon_name">deluge</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_close_new_release">
+ <property name="label" translatable="yes">_Close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_goto_downloads">
+ <property name="label" translatable="yes">_Goto Website</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">10</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image_new_release">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">image-missing</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">New Release Available!</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">5</property>
+ <child>
+ <object class="GtkGrid" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">2</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="label_available_version">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_available_version_text">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Available Version:</property>
+ <attributes>
+ <attribute name="style" value="italic"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_client_version">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_server_version">
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_server_version_text">
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Server Version</property>
+ <attributes>
+ <attribute name="style" value="italic"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_client_version_text">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Current Version:</property>
+ <attributes>
+ <attribute name="style" value="italic"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_do_not_show_new_release">
+ <property name="label" translatable="yes">Do not show this dialog in the future</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_close_new_release</action-widget>
+ <action-widget response="0">button_goto_downloads</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui b/deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui
new file mode 100644
index 0000000..dd5d66b
--- /dev/null
+++ b/deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">zoom-fit-best-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">action-unavailable-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-next-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-up-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-down-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-open-symbolic</property>
+ </object>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">folder-open-symbolic</property>
+ </object>
+ <object class="GtkMenu" id="menu_file_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_open_file">
+ <property name="label" translatable="yes">_Open File</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image6</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_open_file_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_show_file">
+ <property name="label" translatable="yes">_Show Folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image7</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_show_file_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_expand_all">
+ <property name="label" translatable="yes">_Expand All</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image1</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_expand_all_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem_priority_sep">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_skip">
+ <property name="label" translatable="yes">_Skip</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image2</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_skip_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_low">
+ <property name="label" translatable="yes">_Low</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image5</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_low_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_normal">
+ <property name="label" translatable="yes">_Normal</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image3</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_normal_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_high">
+ <property name="label" translatable="yes">_High</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image4</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_high_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui b/deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui
new file mode 100644
index 0000000..d35ef77
--- /dev/null
+++ b/deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-add-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkMenu" id="menu_peer_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="add_peer_menuitem">
+ <property name="label" translatable="yes">_Add Peer</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Add a peer by its IP</property>
+ <property name="use_underline">True</property>
+ <property name="image">image1</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_add_peer_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/main_window.tabs.ui b/deluge/ui/gtk3/glade/main_window.tabs.ui
new file mode 100644
index 0000000..7ecf618
--- /dev/null
+++ b/deluge/ui/gtk3/glade/main_window.tabs.ui
@@ -0,0 +1,1657 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.2 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="spin_max_connections_adjustment">
+ <property name="lower">-1</property>
+ <property name="upper">999999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <signal name="value-changed" handler="on_spin_value_changed" swapped="no"/>
+ </object>
+ <object class="GtkAdjustment" id="spin_max_download_adjustment">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <signal name="value-changed" handler="on_spin_value_changed" swapped="no"/>
+ </object>
+ <object class="GtkAdjustment" id="spin_max_upload_adjustment">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <signal name="value-changed" handler="on_spin_value_changed" swapped="no"/>
+ </object>
+ <object class="GtkAdjustment" id="spin_max_upload_slots_adjustment">
+ <property name="lower">-1</property>
+ <property name="upper">999999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <signal name="value-changed" handler="on_spin_value_changed" swapped="no"/>
+ </object>
+ <object class="GtkAdjustment" id="spin_stop_ratio_adjustment">
+ <property name="upper">999999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <signal name="value-changed" handler="on_spin_value_changed" swapped="no"/>
+ </object>
+ <object class="GtkWindow" id="tabs">
+ <property name="can_focus">False</property>
+ <child type="titlebar">
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="dummy_nb_see_main_win_torrent_info">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="enable_popup">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="status_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment43">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">10</property>
+ <property name="right_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="status_progress_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkProgressBar" id="progressbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pulse_step">0.10000000149</property>
+ <property name="show_text">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="table8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="summary_download_speed">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_total_downloaded">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_upload_speed">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">15</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_seed_rank">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_availability">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ <property name="wrap_mode">word-char</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_share_ratio">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_peers">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">10</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_eta">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_active_time">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_seed_time">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_last_transfer">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ <property name="wrap_mode">char</property>
+ </object>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_last_seen_complete">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ <property name="wrap_mode">char</property>
+ </object>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label42">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Down Speed:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label43">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Up Speed:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label38">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Downloaded:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label39">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Uploaded:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_seeds">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">10</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_total_uploaded">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">15</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_seeds">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Seeds:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_peers">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Peers:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label41">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Share Ratio:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_availablity">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Availability:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_seed_rank">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Seed Rank:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_eta">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">ETA Time:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_last_transfer">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Last Transfer:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_active_time">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Active Time:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_last_seen_complete">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Complete Seen:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_seed_time">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Seeding Time:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="status_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Status</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="details_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment54">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">10</property>
+ <property name="right_padding">15</property>
+ <child>
+ <object class="GtkGrid" id="table_details">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="summary_name">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="wrap">True</property>
+ <property name="wrap_mode">word-char</property>
+ <property name="selectable">True</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_total_size">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_num_files">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_completed">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_date_added">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_pieces">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Pieces:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_pieces">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_hash">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="width_chars">40</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_torrent_path">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="wrap">True</property>
+ <property name="wrap_mode">char</property>
+ <property name="selectable">True</property>
+ <property name="ellipsize">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_comments">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="wrap_mode">char</property>
+ <property name="selectable">True</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_creator">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="wrap_mode">char</property>
+ <property name="selectable">True</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_name">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Name:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_path">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Download Folder:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_date_added">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Added:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_total_size">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Total Size:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_num_files">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Total Files:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_hash">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Hash:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_creator">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Created By:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_comments">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Comments:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_completed">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Completed:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="vseparator5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="height">3</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="details_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Details</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="files_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkTreeView" id="files_listview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection1"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="files_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Fi_les</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="peers_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkTreeView" id="peers_listview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection2"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="peers_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Peers</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="options_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">5</property>
+ <property name="right_padding">15</property>
+ <child>
+ <object class="GtkGrid" id="table6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkAlignment" id="alignment8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="left_padding">5</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label_owner">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Owner:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_owner">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap_mode">char</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">10</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_shared">
+ <property name="label" translatable="yes">Shared</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_prioritize_first_last">
+ <property name="label" translatable="yes">Prioritize First/Last</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_sequential_download">
+ <property name="label" translatable="yes">Sequential Download</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_super_seeding">
+ <property name="label" translatable="yes">Super Seeding</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_move_completed">
+ <property name="label" translatable="yes">Move completed:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_move_completed_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox_move_completed_path_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">15</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_auto_managed">
+ <property name="label" translatable="yes">Auto Managed</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_stop_at_ratio">
+ <property name="label" translatable="yes">Stop seed at ratio:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_stop_at_ratio_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <property name="right_padding">10</property>
+ <child>
+ <object class="GtkSpinButton" id="spin_stop_ratio">
+ <property name="width_request">50</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">spin_stop_ratio_adjustment</property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_remove_at_ratio">
+ <property name="label" translatable="yes">Remove at ratio</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_toggled" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">7</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButton" id="button_apply">
+ <property name="label" translatable="yes">_Apply</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_apply_clicked" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkGrid" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="row_spacing">2</property>
+ <property name="column_spacing">4</property>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_connections">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">spin_max_connections_adjustment</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_upload">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">spin_max_upload_adjustment</property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_download">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">spin_max_download_adjustment</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Upload Speed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">K/s</property>
+ <property name="ellipsize">start</property>
+ <attributes>
+ <attribute name="scale" value="0.90000000000000002"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">K/s</property>
+ <attributes>
+ <attribute name="scale" value="0.90000000000000002"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_upload_slots">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">spin_max_upload_slots_adjustment</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Download Speed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Connections:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Upload Slots:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Bandwidth Limits</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="options_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Options</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="trackers_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">10</property>
+ <property name="right_padding">15</property>
+ <child>
+ <object class="GtkGrid" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="label_tracker">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Current Tracker:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_tracker">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_next_announce">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_tracker_status">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ <property name="wrap_mode">char</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_tracker_total">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary_private">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap_mode">char</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_tracker_total">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Total Trackers:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_tracker_status">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Tracker Status:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_next_announce">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Next Announce:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_private">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Private Torrent:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_edit_trackers">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">start</property>
+ <property name="top_padding">5</property>
+ <child>
+ <object class="GtkButton" id="button_edit_trackers">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_edit_trackers_clicked" swapped="no"/>
+ <child>
+ <object class="GtkLabel" id="label_edit_trackers">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Edit Trackers</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="trackers_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Trackers</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/main_window.ui b/deluge/ui/gtk3/glade/main_window.ui
new file mode 100644
index 0000000..e726756
--- /dev/null
+++ b/deluge/ui/gtk3/glade/main_window.ui
@@ -0,0 +1,797 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.2 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkImage" id="about-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">help-about-symbolic</property>
+ </object>
+ <object class="GtkImage" id="add-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-add-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="lower">-1</property>
+ <property name="upper">999999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="lower">-1</property>
+ <property name="upper">99999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="lower">-1</property>
+ <property name="upper">999999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="lower">-1</property>
+ <property name="upper">999999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment5">
+ <property name="upper">99999</property>
+ <property name="value">2</property>
+ <property name="step_increment">0.10000000000000001</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkImage" id="connection-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">preferences-system-network-symbolic</property>
+ </object>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-up-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-top-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">zoom-fit-best-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkAccelGroup" id="main_accelgroup"/>
+ <object class="GtkImage" id="new-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-new-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="prefs-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">preferences-system-symbolic</property>
+ </object>
+ <object class="GtkImage" id="quit-daemon-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">system-shutdown-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="quit_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">application-exit-symbolic</property>
+ </object>
+ <object class="GtkWindow" id="main_window">
+ <property name="can_focus">False</property>
+ <property name="title">Deluge</property>
+ <accel-groups>
+ <group name="main_accelgroup"/>
+ </accel-groups>
+ <child type="titlebar">
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="menu_file">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="submenu_file">
+ <property name="can_focus">False</property>
+ <property name="accel_group">main_accelgroup</property>
+ <property name="accel_path">&lt;Deluge-MainWindow&gt;/File</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_addtorrent">
+ <property name="label" translatable="yes">_Add Torrent</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">add-image</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_addtorrent_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_createtorrent">
+ <property name="label" translatable="yes">_Create Torrent</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">new-image</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_createtorrent_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem">
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_quitdaemon">
+ <property name="label" translatable="yes">Quit &amp; _Shutdown Daemon</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">quit-daemon-image</property>
+ <property name="use_stock">False</property>
+ <property name="always_show_image">True</property>
+ <signal name="activate" handler="on_menuitem_quitdaemon_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_quit">
+ <property name="label" translatable="yes">_Quit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">quit_image</property>
+ <property name="use_stock">False</property>
+ <property name="accel_group">main_accelgroup</property>
+ <signal name="activate" handler="on_menuitem_quit_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menu_edit">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="submenu_edit">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="accel_group">main_accelgroup</property>
+ <property name="accel_path">&lt;Deluge-MainWindow&gt;/Edit</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_preferences">
+ <property name="label" translatable="yes">_Preferences</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">prefs-image</property>
+ <property name="use_stock">False</property>
+ <property name="accel_group">main_accelgroup</property>
+ <signal name="activate" handler="on_menuitem_preferences_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_connectionmanager">
+ <property name="label" translatable="yes">_Connection Manager</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">connection-image</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_connectionmanager_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menu_torrent">
+ <property name="can_focus">False</property>
+ <property name="accel_path">&lt;MainWindow&gt;/Torrent</property>
+ <property name="label" translatable="yes">_Torrent</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menu_view">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_View</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="submenu_view">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="accel_group">main_accelgroup</property>
+ <property name="accel_path">&lt;Deluge-MainWindow&gt;/View</property>
+ <child>
+ <object class="GtkCheckMenuItem" id="menuitem_toolbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Toolbar</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <signal name="toggled" handler="on_menuitem_toolbar_toggled" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="menuitem_sidebar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Sidebar</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <signal name="toggled" handler="on_menuitem_sidebar_toggled" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="menuitem_statusbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Status_bar</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <signal name="toggled" handler="on_menuitem_statusbar_toggled" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menu_tabs">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">T_abs</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menu_columns">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Columns</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="find_menuitem">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Find ...</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_search_filter_toggle" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menu_Sidebar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">S_idebar</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <child>
+ <object class="GtkCheckMenuItem" id="sidebar_show_zero">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Show _Zero Hits</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <signal name="toggled" handler="on_menuitem_sidebar_zero_toggled" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="sidebar_show_trackers">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Show _Trackers</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <signal name="toggled" handler="on_menuitem_sidebar_trackers_toggled" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="sidebar_show_owners">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Show _Owners</property>
+ <property name="active">True</property>
+ <signal name="toggled" handler="on_menuitem_sidebar_owners_toggled" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menu_help">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="submenu_help">
+ <property name="can_focus">False</property>
+ <property name="accel_group">main_accelgroup</property>
+ <property name="accel_path">&lt;Deluge-MainWindow&gt;/Help</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_homepage">
+ <property name="label" translatable="yes">_Homepage</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_homepage_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_faq">
+ <property name="label" translatable="yes">_FAQ</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Frequently Asked Questions</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_faq_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_community">
+ <property name="label" translatable="yes">_Community</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">False</property>
+ <property name="always_show_image">True</property>
+ <signal name="activate" handler="on_menuitem_community_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem56">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_about">
+ <property name="label" translatable="yes">_About</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">about-image</property>
+ <property name="use_stock">False</property>
+ <property name="accel_group">main_accelgroup</property>
+ <signal name="activate" handler="on_menuitem_about_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="toolbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_size">2</property>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_add">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Add torrent</property>
+ <property name="label" translatable="yes">Add Torrent</property>
+ <property name="icon_name">list-add-symbolic</property>
+ <signal name="clicked" handler="on_toolbutton_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_remove">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Remove torrent</property>
+ <property name="label" translatable="yes">Remove Torrent</property>
+ <property name="icon_name">list-remove-symbolic</property>
+ <signal name="clicked" handler="on_toolbutton_remove_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_filter">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Filter torrents by name.
+This will filter torrents for the current selection on the sidebar.</property>
+ <property name="label" translatable="yes">Filter</property>
+ <property name="icon_name">system-search-symbolic</property>
+ <signal name="clicked" handler="on_search_filter_toggle" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem" id="separatortoolitem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_pause">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Pause the selected torrents</property>
+ <property name="label" translatable="yes">Pause</property>
+ <property name="icon_name">media-playback-pause-symbolic</property>
+ <signal name="clicked" handler="on_toolbutton_pause_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_resume">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Resume the selected torrents</property>
+ <property name="label" translatable="yes">Resume</property>
+ <property name="icon_name">media-playback-start-symbolic</property>
+ <signal name="clicked" handler="on_toolbutton_resume_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem" id="separatortoolitem2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_queue_up">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Queue Torrent Up</property>
+ <property name="label" translatable="yes">Queue Up</property>
+ <property name="icon_name">go-up-symbolic</property>
+ <signal name="clicked" handler="on_toolbutton_queue_up_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_queue_down">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Queue Torrent Down</property>
+ <property name="label" translatable="yes">Queue Down</property>
+ <property name="icon_name">go-down-symbolic</property>
+ <signal name="clicked" handler="on_toolbutton_queue_down_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem" id="toolbutton1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_preferences">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Preferences</property>
+ <property name="label" translatable="yes">Preferences</property>
+ <property name="icon_name">preferences-system-symbolic</property>
+ <signal name="clicked" handler="on_toolbutton_preferences_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_connectionmanager">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Connection Manager</property>
+ <property name="label" translatable="yes">Connection Manager</property>
+ <property name="icon_name">preferences-system-network-symbolic</property>
+ <signal name="clicked" handler="on_toolbutton_connectionmanager_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <child>
+ <object class="GtkPaned" id="tabsbar_pane">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkPaned" id="sidebar_pane">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkNotebook" id="sidebar_notebook">
+ <property name="can_focus">True</property>
+ <property name="scrollable">True</property>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="search_box">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButton" id="close_search_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Close</property>
+ <property name="relief">none</property>
+ <signal name="clicked" handler="on_close_search_button_clicked" swapped="no"/>
+ <child>
+ <object class="GtkImage" id="close_search_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">window-close-symbolic</property>
+ <property name="icon_size">2</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Filter:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">1</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="search_torrents_entry">
+ <property name="width_request">350</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Filter torrents by name.
+This will filter torrents for the current selection on the sidebar.</property>
+ <property name="invisible_char">•</property>
+ <property name="truncate_multiline">True</property>
+ <property name="caps_lock_warning">False</property>
+ <property name="secondary_icon_name">edit-clear-symbolic</property>
+ <property name="primary_icon_sensitive">False</property>
+ <property name="secondary_icon_tooltip_text" translatable="yes">Clear the search</property>
+ <property name="secondary_icon_tooltip_markup" translatable="yes">Clear the search</property>
+ <signal name="changed" handler="on_search_torrents_entry_changed" swapped="no"/>
+ <signal name="icon-press" handler="on_search_torrents_entry_icon_press" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">1</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="search_torrents_match">
+ <property name="label" translatable="yes">_Match Case</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_search_torrents_match_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">1</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">out</property>
+ <child>
+ <object class="GtkTreeView" id="torrent_view">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="rules_hint">True</property>
+ <property name="enable_search">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="torrent_info">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tab_pos">left</property>
+ <property name="show_border">False</property>
+ <property name="scrollable">True</property>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="statusbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/move_storage_dialog.ui b/deluge/ui/gtk3/glade/move_storage_dialog.ui
new file mode 100644
index 0000000..542d40a
--- /dev/null
+++ b/deluge/ui/gtk3/glade/move_storage_dialog.ui
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="move_storage_dialog">
+ <property name="width_request">500</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Move Download Folder</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_ok">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-save-as-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Move the torrent(s) download folder.</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Destination:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button_cancel</action-widget>
+ <action-widget response="-5">button_ok</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/other_dialog.ui b/deluge/ui/gtk3/glade/other_dialog.ui
new file mode 100644
index 0000000..01a5597
--- /dev/null
+++ b/deluge/ui/gtk3/glade/other_dialog.ui
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="value">-1</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkDialog" id="other_dialog">
+ <property name="app_paintable">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="modal">True</property>
+ <property name="window_position">mouse</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button3">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button4">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkImage" id="image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_header">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label">label</property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator2">
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">6</property>
+ <property name="activates_default">True</property>
+ <property name="width_chars">6</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_type">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">label</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button3</action-widget>
+ <action-widget response="-5">button4</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/path_combo_chooser.ui b/deluge/ui/gtk3/glade/path_combo_chooser.ui
new file mode 100644
index 0000000..871bac0
--- /dev/null
+++ b/deluge/ui/gtk3/glade/path_combo_chooser.ui
@@ -0,0 +1,1001 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="lower">-1</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkDialog" id="completion_config_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Properties</property>
+ <property name="modal">True</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <signal name="delete-event" handler="on_completion_config_dialog_delete_event" swapped="no"/>
+ <signal name="key-release-event" handler="on_completion_config_dialog_key_release_event" swapped="no"/>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="config_dialog_button_close">
+ <property name="label" translatable="yes">Close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_config_dialog_button_close_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="config_general_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">3</property>
+ <property name="left_padding">15</property>
+ <property name="right_padding">10</property>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="visible_rows_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Max drop down rows</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="visible_rows_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">2</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ <signal name="value-changed" handler="on_visible_rows_spinbutton_value_changed" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;General&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">3</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="show_path_entry_checkbutton">
+ <property name="label" translatable="yes">Show path entry</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_show_path_entry_checkbutton_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="show_filechooser_checkbutton">
+ <property name="label" translatable="yes">Show file chooser</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_show_filechooser_checkbutton_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkCheckButton" id="show_folder_name_on_button_checkbutton">
+ <property name="label" translatable="yes">Show folder name</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_show_folder_name_on_button_checkbutton_toggled" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Path Chooser Type</property>
+ <property name="use_markup">True</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">3</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkGrid" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkCheckButton" id="enable_auto_completion_checkbutton">
+ <property name="label" translatable="yes">Enable autocomplete</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_enable_auto_completion_checkbutton_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="show_hidden_files_checkbutton">
+ <property name="label" translatable="yes">Show hidden files</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_show_hidden_files_checkbutton_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="set_completion_accelerator_button">
+ <property name="label" translatable="yes">Set new key</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Press this key to set new key accelerators to trigger auto-complete</property>
+ <signal name="activate" handler="on_set_completion_accelerator_button_pressed" swapped="no"/>
+ <signal name="clicked" handler="on_set_completion_accelerator_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Autocomplete</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="config_short_cuts_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">etched-out</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">4</property>
+ <property name="bottom_padding">5</property>
+ <property name="left_padding">15</property>
+ <property name="right_padding">5</property>
+ <child>
+ <object class="GtkGrid" id="table3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">2</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Autocomplete</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Save path</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Ctrl+S</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="completion_accelerator_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Ctrl+E</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Ctrl+R</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Ctrl+H</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Ctrl+D</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Edit path</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Remove path</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin_right">8</property>
+ <property name="label" translatable="yes">Toggle hidden files</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Default path</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Shortcuts</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">config_dialog_button_close</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkWindow" id="combobox_window">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="entry_combobox_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">3</property>
+ <signal name="realize" handler="on_entry_combobox_hbox_realize" swapped="no"/>
+ <child>
+ <object class="GtkFileChooserButton" id="filechooser_button">
+ <property name="width_request">160</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="action">select-folder</property>
+ <property name="local_only">False</property>
+ <property name="preview_widget_active">False</property>
+ <property name="title" translatable="yes">Select a Directory</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_open_dialog">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_open_dialog_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">folder-open-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="folder_name_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_text">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="invisible_char">•</property>
+ <signal name="changed" handler="on_entry_text_changed" swapped="no"/>
+ <signal name="delete-text" handler="on_entry_text_delete_text" swapped="no"/>
+ <signal name="focus-out-event" handler="on_entry_text_focus_out_event" swapped="no"/>
+ <signal name="insert-text" handler="on_entry_text_insert_text" swapped="yes"/>
+ <signal name="key-press-event" handler="on_entry_text_key_press_event" swapped="no"/>
+ <signal name="scroll-event" handler="on_entry_text_scroll_event" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="button_toggle_dropdown">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Saved paths</property>
+ <signal name="button-press-event" handler="on_button_toggle_dropdown_button_press_event" swapped="no"/>
+ <signal name="scroll-event" handler="on_button_toggle_dropdown_scroll_event" swapped="no"/>
+ <signal name="toggled" handler="on_button_toggle_dropdown_toggled" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="height_request">15</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkArrow" id="arrow2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="arrow_type">down</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkListStore" id="completion_tree_store">
+ <columns>
+ <!-- column-name text -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkWindow" id="completion_popup_window">
+ <property name="can_focus">False</property>
+ <property name="type">popup</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">combo</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="decorated">False</property>
+ <property name="deletable">False</property>
+ <signal name="button-press-event" handler="on_completion_popup_window_button_press_event" swapped="no"/>
+ <signal name="focus-out-event" handler="on_completion_popup_window_focus_out_event" swapped="no"/>
+ <signal name="key-press-event" handler="on_completion_popup_window_key_press_event" swapped="no"/>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="popup_content_box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">3</property>
+ <property name="spacing">1</property>
+ <child>
+ <object class="GtkScrolledWindow" id="completion_scrolled_window">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="completion_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="model">completion_tree_store</property>
+ <property name="headers_visible">False</property>
+ <property name="headers_clickable">False</property>
+ <property name="enable_search">False</property>
+ <property name="search_column">0</property>
+ <property name="show_expanders">False</property>
+ <signal name="button-press-event" handler="on_completion_treeview_mouse_button_press_event" swapped="no"/>
+ <signal name="key-press-event" handler="on_completion_treeview_key_press_event" swapped="no"/>
+ <signal name="motion-notify-event" handler="on_completion_treeview_motion_notify_event" swapped="no"/>
+ <signal name="scroll-event" handler="on_completion_treeview_scroll_event" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection1"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="completion_treeview_column">
+ <property name="sizing">autosize</property>
+ <property name="fixed_width">129</property>
+ <property name="title" translatable="yes">column</property>
+ <property name="expand">True</property>
+ <child>
+ <object class="GtkCellRendererText" id="completion_cellrenderertext"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkDialog" id="filechooserdialog">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Choose a folder</property>
+ <property name="modal">True</property>
+ <property name="window_position">center</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="box1">
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="buttonbox1">
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="filechooser_button_cancel">
+ <property name="label" translatable="yes">Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="filechooser_button_open">
+ <property name="label" translatable="yes">Open</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserWidget" id="filechooser_widget">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action">select-folder</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="2">filechooser_button_cancel</action-widget>
+ <action-widget response="0">filechooser_button_open</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkListStore" id="stored_values_tree_store">
+ <columns>
+ <!-- column-name text -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkWindow" id="stored_values_popup_window">
+ <property name="can_focus">False</property>
+ <property name="type">popup</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">popup-menu</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="decorated">False</property>
+ <property name="deletable">False</property>
+ <signal name="button-press-event" handler="on_stored_values_popup_window_button_press_event" swapped="no"/>
+ <signal name="focus-out-event" handler="on_stored_values_popup_window_focus_out_event" swapped="no"/>
+ <signal name="hide" handler="on_stored_values_popup_window_hide" swapped="no"/>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">3</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="stored_values_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="model">stored_values_tree_store</property>
+ <property name="headers_visible">False</property>
+ <property name="headers_clickable">False</property>
+ <property name="search_column">0</property>
+ <property name="show_expanders">False</property>
+ <signal name="button-press-event" handler="on_stored_values_treeview_mouse_button_press_event" swapped="no"/>
+ <signal name="key-press-event" handler="on_stored_values_treeview_key_press_event" swapped="no"/>
+ <signal name="key-release-event" handler="on_stored_values_treeview_key_release_event" swapped="no"/>
+ <signal name="scroll-event" handler="on_stored_values_treeview_scroll_event" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection2"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="stored_values_treeview_column">
+ <property name="sizing">autosize</property>
+ <property name="fixed_width">127</property>
+ <property name="title" translatable="yes">column</property>
+ <property name="expand">True</property>
+ <child>
+ <object class="GtkCellRendererText" id="stored_values_cellrenderertext">
+ <signal name="edited" handler="on_cellrenderertext_edited" swapped="no"/>
+ </object>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkButtonBox" id="buttonbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">1</property>
+ <property name="layout_style">start</property>
+ <signal name="key-press-event" handler="on_buttonbox_key_press_event" swapped="no"/>
+ <child>
+ <object class="GtkButton" id="button_add">
+ <property name="label" translatable="yes">Add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Add the current entry value to the list</property>
+ <signal name="clicked" handler="on_button_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_edit">
+ <property name="label" translatable="yes">Edit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Edit the selected entry</property>
+ <signal name="clicked" handler="on_button_edit_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_remove">
+ <property name="label" translatable="yes">Remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Remove the selected entry</property>
+ <signal name="clicked" handler="on_button_remove_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_up">
+ <property name="label" translatable="yes">Up</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Move the selected entry up</property>
+ <signal name="clicked" handler="on_button_up_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_down">
+ <property name="label" translatable="yes">Down</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Move the selected entry down</property>
+ <signal name="clicked" handler="on_button_down_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_default">
+ <property name="label" translatable="yes">Default</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">No default path set</property>
+ <signal name="clicked" handler="on_button_default_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_properties">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Open properties dialog</property>
+ <signal name="clicked" handler="on_button_properties_clicked" swapped="no"/>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-properties-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">2</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/preferences_dialog.ui b/deluge/ui/gtk3/glade/preferences_dialog.ui
new file mode 100644
index 0000000..720dc6b
--- /dev/null
+++ b/deluge/ui/gtk3/glade/preferences_dialog.ui
@@ -0,0 +1,5014 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.2 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAdjustment" id="adjustment_cache_expiry">
+ <property name="lower">1</property>
+ <property name="upper">32000</property>
+ <property name="value">60</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_cache_size">
+ <property name="upper">999999</property>
+ <property name="value">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_share_ratio">
+ <property name="lower">0.5</property>
+ <property name="upper">100</property>
+ <property name="value">2</property>
+ <property name="step_increment">0.10000000000000001</property>
+ <property name="page_increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_share_ratio_limit">
+ <property name="lower">-1</property>
+ <property name="upper">100</property>
+ <property name="value">1.5</property>
+ <property name="step_increment">0.10000000000000001</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_active">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_daemon_port">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_downloading">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_incoming_port">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_conn_global">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_conn_per_sec">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_conn_per_torrent">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_download">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_download_per_torrent">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_half_open_conn">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_upload">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_upload_per_torrent">
+ <property name="lower">-1</property>
+ <property name="upper">2097151</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_upload_slots_global">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_max_upload_slots_per_torrent">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_outgoing_port_max">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_outgoing_port_min">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_proxy_port">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_seed_time_limit">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_spin_seeding">
+ <property name="lower">-1</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_time_ratio_limit">
+ <property name="lower">-1</property>
+ <property name="upper">100</property>
+ <property name="value">6</property>
+ <property name="step_increment">0.10000000000000001</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkListStore" id="liststore1">
+ <columns>
+ <!-- column-name item -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Forced</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Enabled</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Disabled</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="liststore2">
+ <columns>
+ <!-- column-name item -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Handshake</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Full Stream</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Either</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="liststore3">
+ <columns>
+ <!-- column-name item -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Forced</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Enabled</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Disabled</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="liststore8">
+ <columns>
+ <!-- column-name language_code -->
+ <column type="gchararray"/>
+ <!-- column-name language_name -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkListStore" id="liststore_proxy">
+ <columns>
+ <!-- column-name item -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">None</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Socks4</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Socks5</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Socks5 Auth</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">HTTP</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">HTTP Auth</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">I2P</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkDialog" id="pref_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Preferences</property>
+ <property name="modal">True</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="default_width">450</property>
+ <property name="default_height">500</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <signal name="configure-event" handler="on_pref_dialog_configure_event" swapped="no"/>
+ <signal name="delete-event" handler="on_pref_dialog_delete_event" swapped="no"/>
+ <child type="titlebar">
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_cancel_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_apply">
+ <property name="label" translatable="yes">_Apply</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_apply_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_ok">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_ok_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="hpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <child>
+ <object class="GtkTreeView" id="treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection1"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">False</property>
+ <property name="scrollable">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="InterfaceScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="interface_viewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="interface_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame_app_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment_app_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">3</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="hbox_app_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkRadioButton" id="radio_standalone">
+ <property name="label" translatable="yes">Standalone</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">The standalone self-contained application</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radio_thinclient">
+ <property name="label" translatable="yes">Thin Client</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Connect to a Deluge daemon (deluged)</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radio_standalone</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">7</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label_client_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Application Mode</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame29">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment47">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox27">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_show_rate_in_title">
+ <property name="label" translatable="yes">Show session speed in titlebar</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_focus_main_window_on_add">
+ <property name="label" translatable="yes">Focus window when adding torrent</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="urldetect_toggle">
+ <property name="label" translatable="yes">Detect torrent URLs from clipboard</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Automatically open Add Torrent dialog when clipboard contains a torrent URL</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_urldetect_toggle_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="piecesbar_toggle">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">The pieces bar
+will increase bandwidth use between client
+and daemon (does not apply in Standalone mode).</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_piecesbar_toggle_toggled" swapped="no"/>
+ <child>
+ <object class="GtkLabel" id="label62">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show a pieces bar in Status tab</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkExpander" id="piecebar_colors_expander">
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment58">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">25</property>
+ <child>
+ <object class="GtkGrid" id="table6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">1</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label66">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Completed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="completed_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="color-set" handler="on_completed_color_set" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label67">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Downloading:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="downloading_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="color-set" handler="on_downloading_color_set" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label69">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Waiting:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="waiting_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="color-set" handler="on_waiting_color_set" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label70">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Missing:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="missing_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="color-set" handler="on_missing_color_set" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="revert_color_completed">
+ <property name="label" translatable="yes">_Revert</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Revert color to default</property>
+ <property name="use_underline">True</property>
+ <property name="image_position">right</property>
+ <signal name="clicked" handler="on_revert_color_completed_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="revert_color_downloading">
+ <property name="label" translatable="yes">_Revert</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Revert color to default</property>
+ <property name="use_underline">True</property>
+ <property name="image_position">right</property>
+ <signal name="clicked" handler="on_revert_color_downloading_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="revert_color_waiting">
+ <property name="label" translatable="yes">_Revert</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Revert color to default</property>
+ <property name="use_underline">True</property>
+ <property name="image_position">right</property>
+ <signal name="clicked" handler="on_revert_color_waiting_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="revert_color_missing">
+ <property name="label" translatable="yes">_Revert</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Revert color to default</property>
+ <property name="use_underline">True</property>
+ <property name="image_position">right</property>
+ <signal name="clicked" handler="on_revert_color_missing_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label73">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Piece Colors</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label106">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Main Window</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_use_tray">
+ <property name="label" translatable="yes">Enable system tray icon</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_tray_type">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="hbox_tray_type">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkRadioButton" id="radio_appind">
+ <property name="label" translatable="yes">App Indicator</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radio_systray</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radio_systray">
+ <property name="label" translatable="yes">Systray</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_min_on_close">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_min_on_close">
+ <property name="label" translatable="yes">Minimize to tray on close</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_start_in_tray">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_start_in_tray">
+ <property name="label" translatable="yes">Start in tray</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_lock_tray">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="bottom_padding">3</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_lock_tray">
+ <property name="label" translatable="yes">Password protect system tray</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_tray_password">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">20</property>
+ <child>
+ <object class="GtkBox" id="hbox_tray_password">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="password_label">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Password:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="txt_tray_password">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="visibility">False</property>
+ <property name="width_chars">16</property>
+ <property name="text">********</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label52">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">System Tray</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame_theme">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment_theme">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="top-padding">3</property>
+ <property name="left-padding">10</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_prefer_dark_theme">
+ <property name="label" translatable="yes">Prefer Dark</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip_text" translatable="yes">If available, use dark variant of GTK theme.</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label_theme">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Theme</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment35">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkAlignment" id="alignment36">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_show_new_releases">
+ <property name="label" translatable="yes">Notify about new releases</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label43">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Updates</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton_language">
+ <property name="label" translatable="yes">System Default</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbutton_language_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">20</property>
+ <child>
+ <object class="GtkComboBox" id="combobox_language">
+ <property name="can_focus">False</property>
+ <property name="model">liststore8</property>
+ <property name="active">0</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext8"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Language&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label29">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">page 6</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="DownloadsScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="downloads_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">1</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_move_completed">
+ <property name="label" translatable="yes">Move completed to:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_copy_torrent_file">
+ <property name="label" translatable="yes">Copy of .torrent files to:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_del_copy_torrent_file">
+ <property name="label" translatable="yes">Delete copy of torrent file on remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Delete the copy of the torrent file created when the torrent is removed</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Download to:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">15</property>
+ <child>
+ <object class="GtkBox" id="hbox_download_to_path_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">15</property>
+ <child>
+ <object class="GtkBox" id="hbox_move_completed_to_path_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment30">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">15</property>
+ <child>
+ <object class="GtkBox" id="hbox_copy_torrent_files_path_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Download Folders</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="newvbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_prioritize_first_last_pieces">
+ <property name="label" translatable="yes">Prioritize first and last pieces of torrent</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Prioritize first and last pieces of files in torrent</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_sequential_download">
+ <property name="label" translatable="yes">Sequential download</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">When enabled, the piece picker will pick pieces in
+sequence instead of rarest first.
+
+Enabling sequential download will affect the piece
+distribution negatively in the swarm. It should be
+used sparingly.</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_add_paused">
+ <property name="label" translatable="yes">Add torrents in Paused state</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_pre_allocation">
+ <property name="label" translatable="yes">Pre-allocate disk space</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Pre-allocate the disk space for the torrent files</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add Torrent Options</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_show_dialog">
+ <property name="label" translatable="yes">Always show</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_focus_dialog">
+ <property name="label" translatable="yes">Bring the dialog to focus</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label47">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add Torrents Dialog</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">3</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">page 7</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="BandwidthScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkGrid" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_connections_per_second">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_spin_max_conn_per_sec</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_half_open_connections">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_spin_max_half_open_conn</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label58">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Connection Attempts per Second:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label57">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Half-Open Connections:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The maximum number of connections allowed. Set -1 for unlimited.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Connections:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The maximum upload slots for all torrents. Set -1 for unlimited.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Upload Slots:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_connections_global">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The maximum number of connections allowed. Set -1 for unlimited.</property>
+ <property name="adjustment">adjustment_spin_max_conn_global</property>
+ <property name="climb_rate">1</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">if-valid</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The maximum download speed for all torrents. Set -1 for unlimited.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Download Speed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_download">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The maximum download speed for all torrents. Set -1 for unlimited.</property>
+ <property name="adjustment">adjustment_spin_max_download</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_upload">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The maximum upload speed for all torrents. Set -1 for unlimited.</property>
+ <property name="adjustment">adjustment_spin_max_upload</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_upload_slots_global">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The maximum upload slots for all torrents. Set -1 for unlimited.</property>
+ <property name="adjustment">adjustment_spin_max_upload_slots_global</property>
+ <property name="climb_rate">1</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The maximum upload speed for all torrents. Set -1 for unlimited.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Upload Speed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment28">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">5</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_ignore_limits_on_local_network">
+ <property name="label" translatable="yes">Ignore limits on local network</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment40">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">5</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_rate_limit_ip_overhead">
+ <property name="label" translatable="yes">Rate limit IP overhead</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">If checked, the estimated TCP/IP overhead is drained from the rate limiters, to avoid exceeding the limits with the total traffic</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label37">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Global Bandwidth Limits</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_upload_slots_per_torrent">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The maximum upload slots per torrent. Set -1 for unlimited.</property>
+ <property name="adjustment">adjustment_spin_max_upload_slots_per_torrent</property>
+ <property name="climb_rate">1</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_connections_per_torrent">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The maximum number of connections per torrent. Set -1 for unlimited.</property>
+ <property name="adjustment">adjustment_spin_max_conn_per_torrent</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Connections:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Upload Slots:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label31">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Download Speed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label32">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Upload Speed:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_download_per_torrent">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The maximum number download speed per torrent. Set -1 for unlimited.</property>
+ <property name="adjustment">adjustment_spin_max_download_per_torrent</property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_max_upload_per_torrent">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The maximum upload speed per torrent. Set -1 for unlimited.</property>
+ <property name="adjustment">adjustment_spin_max_upload_per_torrent</property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label33">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Per-Torrent Bandwidth Limits</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label38">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">page 8</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="QueueScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <child>
+ <object class="GtkBox" id="queue_prefs_box2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkFrame" id="frame10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_queue_new_top">
+ <property name="label" translatable="yes">Queue to top</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label36">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">New Torrents</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkGrid" id="table3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkSpinButton" id="spin_active">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_spin_active</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_seeding">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_spin_seeding</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label27">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Seeding:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label48">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Total:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_downloading">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_spin_downloading</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label42">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Downloading:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_dont_count_slow_torrents">
+ <property name="label" translatable="yes">Ignore slow torrents</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Torrents not transferring any data do not count towards download/seeding active count.</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_auto_manage_prefer_seeds">
+ <property name="label" translatable="yes">Prefer seeding torrents</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Give preference to seeding torrents over downloading torrents.</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label49">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Active Torrents</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment24">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="label53">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Share Ratio:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label54">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Time Ratio:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label55">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Time (m):</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_seed_time_limit">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">adjustment_spin_seed_time_limit</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_seed_time_ratio_limit">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">adjustment_time_ratio_limit</property>
+ <property name="digits">2</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_share_ratio_limit">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">adjustment_share_ratio_limit</property>
+ <property name="digits">2</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label50">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Seeding Rotation</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_share_ratio">
+ <property name="label" translatable="yes">Share Ratio:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_share_ratio">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">adjustment_share_ratio</property>
+ <property name="digits">2</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="radio_pause_ratio">
+ <property name="label" translatable="yes">Pause Torrent</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radio_remove_ratio">
+ <property name="label" translatable="yes">Remove Torrent</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radio_pause_ratio</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">3</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Share Ratio Reached</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label64">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">page 10</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="NetworkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame31">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment51">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkEntry" id="entry_interface">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">IP address or network interface name to listen for incoming BitTorrent connections. Leave empty to use system default.</property>
+ <property name="max_length">40</property>
+ <property name="width_chars">15</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label110">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Incoming Interface</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkSpinButton" id="spin_incoming_port">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">5</property>
+ <property name="max_width_chars">6</property>
+ <property name="adjustment">adjustment_spin_incoming_port</property>
+ <property name="climb_rate">1</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_random_incoming_port">
+ <property name="label" translatable="yes">Random</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Uses random ports in range 49152 to 65525</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Active Port:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="active_port_label">
+ <property name="width_request">50</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">0</property>
+ <property name="width_chars">5</property>
+ <attributes>
+ <attribute name="style" value="italic"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_testport">
+ <property name="label" translatable="yes">Test Active Port</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image_position">right</property>
+ <signal name="clicked" handler="on_test_port_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment31">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkSpinner" id="port_spinner">
+ <property name="visible">False</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment48">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkImage" id="port_img">
+ <property name="can_focus">False</property>
+ <property name="icon_name">dialog-question-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Incoming Port</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkEntry" id="entry_outgoing_interface">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">
+ IP address or network interface name for outgoing BitTorrent connections. Leave empty to use system default.
+ </property>
+ <property name="max_length">40</property>
+ <property name="invisible_char">●</property>
+ <property name="width_chars">15</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Outgoing Interface</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame26">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment34">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_random_outgoing_ports">
+ <property name="label" translatable="yes">Random</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Uses random ports in range 49152 to 65525</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_toggle" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label77">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">From:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_outgoing_port_min">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">5</property>
+ <property name="width_chars">7</property>
+ <property name="adjustment">adjustment_spin_outgoing_port_min</property>
+ <property name="climb_rate">1</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label78">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">To:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_outgoing_port_max">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">5</property>
+ <property name="width_chars">7</property>
+ <property name="adjustment">adjustment_spin_outgoing_port_max</property>
+ <property name="climb_rate">1</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label79">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Outgoing Ports</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkGrid" id="table7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkComboBox" id="combo_encout">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">liststore3</property>
+ <signal name="changed" handler="on_combo_encryption_changed" swapped="no"/>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext3"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combo_encin">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">liststore1</property>
+ <signal name="changed" handler="on_combo_encryption_changed" swapped="no"/>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Outgoing:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Incoming:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="hbox15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Level:</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combo_enclevel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="model">liststore2</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext2"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Encryption</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">4</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkGrid" id="table8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">1</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_upnp">
+ <property name="label" translatable="yes">UPnP</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Universal Plug and Play</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_natpmp">
+ <property name="label" translatable="yes">NAT-PMP</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">NAT Port Mapping Protocol</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_utpex">
+ <property name="label" translatable="yes">Peer Exchange</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Exchanges peers between clients. (Disabling requires restart)</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_lsd">
+ <property name="label" translatable="yes">LSD</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Local Service Discovery finds local peers on your network.</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_dht">
+ <property name="label" translatable="yes">DHT</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Distributed hash table may improve the amount of active connections.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label_peer_tos">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Peer TOS Byte:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_peer_tos">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">4</property>
+ <property name="invisible_char">•</property>
+ <property name="width_chars">1</property>
+ <property name="text">0x00</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Network Extras</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label65">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">page 11</property>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="ProxyScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox26">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkFrame" id="frame_proxy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment29">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label_proxy_pass">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Password:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_proxy_pass">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="visibility">False</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_proxy_host">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Hostname:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_proxy_host">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="truncate_multiline">True</property>
+ <signal name="paste-clipboard" handler="on_entry_proxy_host_paste_clipboard" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_proxy_port">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Port:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_proxy_port">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkSpinButton" id="spin_proxy_port">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_spin_proxy_port</property>
+ <property name="numeric">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_proxy_user">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combo_proxy_type">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">liststore_proxy</property>
+ <signal name="changed" handler="on_combo_proxy_type_changed" swapped="no"/>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext4"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_proxy_user">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Username:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_proxy_host_resolve">
+ <property name="label" translatable="yes">Proxy Hostnames</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Hostnames should be attempted to be resolved through
+the proxy instead of using the local DNS service</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_proxy_peer_conn">
+ <property name="label" translatable="yes">Proxy Peers</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Proxy peer and web seed connections.</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_proxy_tracker_conn">
+ <property name="label" translatable="yes">Proxy Trackers</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label_proxy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Proxy</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame_anon_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkAlignment" id="alignment_force_proxy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_force_proxy">
+ <property name="label" translatable="yes">Force Proxy Use</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_anon_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_anonymous_mode">
+ <property name="label" translatable="yes">Hide Client Identity</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Attempt to hide client identity and only use proxy for incoming connections.</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label_force_proxy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Force Proxy</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label71">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">page 11</property>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="CacheScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox31">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame32">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment53">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label114">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Cache Size (16 KiB blocks):</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label115">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">The number of seconds from the last cached write to a piece in the write cache, to when it's forcefully flushed to disk. Default is 60 seconds.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Cache Expiry (seconds):</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_cache_size">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">adjustment_cache_size</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">if-valid</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_cache_expiry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">5</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">adjustment_cache_expiry</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label112">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Settings</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame33">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment54">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox32">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame34">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment55">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label116">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The total number of 16 KiB blocks written to disk since this session was started.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Blocks Written:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label120">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The total number of write operations performed since this session was started.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Writes:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label124">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The ratio (blocks_written - writes) / blocks_written represents the number of saved write operations per total write operations, i.e. a kind of cache hit ratio for the write cache.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Write Cache Hit Ratio:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_cache_num_blocks_written">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_cache_write_ops">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_cache_write_hit_ratio">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label132">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Write</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame35">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment56">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label118">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The number of blocks that were requested from the bittorrent engine (from peers), that were served from disk or cache.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Blocks Read:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label122">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The cache hit ratio for the read cache.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Read Cache Hit Ratio:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_cache_num_blocks_read">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_cache_read_hit_ratio">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label121">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">The total number of read operations performed since this session was started.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Reads:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_cache_read_ops">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label133">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Read</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame36">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment57">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label123">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">The number of 16 KiB blocks currently in the disk cache. This includes both read and write cache.</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Cache Size:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label117">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Read Cache Size:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_cache_disk_blocks_in_use">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_cache_read_cache_blocks">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label134">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Size</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="button_cache_refresh">
+ <property name="label" translatable="yes">_Refresh</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_cache_refresh_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label113">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Status</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label72">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">page 12</property>
+ </object>
+ <packing>
+ <property name="position">6</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="OtherScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment37">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">40</property>
+ <child>
+ <object class="GtkBox" id="vbox19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkLabel" id="label44">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Help us improve Deluge by sending us your Python version, PyGTK version, OS and processor types. Absolutely no other information is sent.</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">2</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_send_info">
+ <property name="label" translatable="yes">Yes, please send anonymous statistics</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label45">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">System Information</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame30">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment49">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="box20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label109">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Location:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_geoip">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">If Deluge cannot find the database file at this location it will fallback to using DNS to resolve the peer's country.</property>
+ <property name="invisible_char">●</property>
+ <property name="truncate_multiline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label108">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">GeoIP Database</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment25">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="button_associate_magnet">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_associate_magnet_clicked" swapped="no"/>
+ <child>
+ <object class="GtkBox" id="hbox16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image_magnet">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">image-missing</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label60">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Associate with Deluge</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Magnet Links</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="DaemonScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">2</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="vbox14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="hbox12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label41">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Daemon port:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spin_daemon_port">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_width_chars">6</property>
+ <property name="adjustment">adjustment_spin_daemon_port</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label35">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Port</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_allow_remote_connections">
+ <property name="label" translatable="yes">Allow Remote Connections</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label39">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Connections</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment27">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">5</property>
+ <property name="left_padding">10</property>
+ <child>
+ <object class="GtkCheckButton" id="chk_new_releases">
+ <property name="label" translatable="yes">Periodically check the website for new releases</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label56">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Other</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="AccountsFrame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment33">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">20</property>
+ <child>
+ <object class="GtkBox" id="hbox22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkButtonBox" id="vbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">5</property>
+ <property name="homogeneous">True</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="accounts_add">
+ <property name="label" translatable="yes">_Add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_accounts_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="accounts_edit">
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_accounts_edit_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="accounts_delete">
+ <property name="label" translatable="yes">_Delete</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_accounts_delete_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">4</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <property name="min_content_height">150</property>
+ <child>
+ <object class="GtkTreeView" id="accounts_listview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection2"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label61">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Accounts</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="PluginsScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkBox" id="vbox28">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkPaned" id="vpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow12">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="plugin_listview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection3"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow11">
+ <property name="height_request">115</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="viewport12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkFrame" id="frame8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment26">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="table10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label_plugin_details">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_plugin_version">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_plugin_author">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label85">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Details:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label84">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Version:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label82">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Author:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label86">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Homepage:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label87">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Author Email:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_plugin_homepage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_plugin_email">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label81">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Info</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">center</property>
+ <child>
+ <object class="GtkButton" id="button_plugin_install">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_plugin_install_clicked" swapped="no"/>
+ <child>
+ <object class="GtkLabel" id="label28">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Install</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_rescan_plugins">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_rescan_plugins_clicked" swapped="no"/>
+ <child>
+ <object class="GtkLabel" id="label30">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Refresh</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_find_plugins">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_find_plugins_clicked" swapped="no"/>
+ <child>
+ <object class="GtkLabel" id="label107">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Find More...</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_apply</action-widget>
+ <action-widget response="0">button_ok</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/queuedtorrents.ui b/deluge/ui/gtk3/glade/queuedtorrents.ui
new file mode 100644
index 0000000..528ef64
--- /dev/null
+++ b/deluge/ui/gtk3/glade/queuedtorrents.ui
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="queued_torrents_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Queued Torrents</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="default_width">450</property>
+ <property name="default_height">300</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_close">
+ <property name="label" translatable="yes">_Close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_close_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add">
+ <property name="label" translatable="yes">_Add</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="is_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-add-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add Queued Torrents</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeselection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="button_remove">
+ <property name="label" translatable="yes">_Remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_remove_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_clear">
+ <property name="label" translatable="yes">_Clear</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_button_clear_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="chk_autoadd">
+ <property name="label" translatable="yes">Automatically add torrents on connect</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_chk_autoadd_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_close</action-widget>
+ <action-widget response="0">button_add</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/remove_torrent_dialog.ui b/deluge/ui/gtk3/glade/remove_torrent_dialog.ui
new file mode 100644
index 0000000..4a92037
--- /dev/null
+++ b/deluge/ui/gtk3/glade/remove_torrent_dialog.ui
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkDialog" id="remove_torrent_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Remove Torrent</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="cancel_button">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="ok_button">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">dialog-warning-symbolic</property>
+ <property name="icon_size">6</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_title">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Remove the selected torrent(s)?</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.3"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_torrents">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="ellipsize">end</property>
+ <attributes>
+ <attribute name="style" value="italic"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="delete_files">
+ <property name="label" translatable="yes">Include downloaded files</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_delete_files_toggled" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="warning_label">
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">(This is permanent!)</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="0.90000000000000002"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">1</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">cancel_button</action-widget>
+ <action-widget response="-5">ok_button</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/torrent_menu.options.ui b/deluge/ui/gtk3/glade/torrent_menu.options.ui
new file mode 100644
index 0000000..df34445
--- /dev/null
+++ b/deluge/ui/gtk3/glade/torrent_menu.options.ui
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkImage" id="download-limit-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">deluge-downloading</property>
+ </object>
+ <object class="GtkImage" id="max-connections-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">network-transmit-receive-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="upload-limit-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">deluge-seeding</property>
+ </object>
+ <object class="GtkImage" id="upload-slots-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">view-sort-descending-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkMenu" id="options_torrent_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_down_speed">
+ <property name="label" translatable="yes">_Download Speed Limit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">download-limit-image</property>
+ <property name="use_stock">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_up_speed">
+ <property name="label" translatable="yes">_Upload Speed Limit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">upload-limit-image</property>
+ <property name="use_stock">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_max_connections">
+ <property name="label" translatable="yes">_Connection Limit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">max-connections-image</property>
+ <property name="use_stock">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_upload_slots">
+ <property name="label" translatable="yes">Upload _Slot Limit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">upload-slots-image</property>
+ <property name="use_stock">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem_stop_seed_at_ratio">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Stop seed at _ratio</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem_auto_managed">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Auto Managed</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem_super_seeding">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">_Super Seeding</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem_change_owner">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Change Ownership</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/torrent_menu.queue.ui b/deluge/ui/gtk3/glade/torrent_menu.queue.ui
new file mode 100644
index 0000000..a120af2
--- /dev/null
+++ b/deluge/ui/gtk3/glade/torrent_menu.queue.ui
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-top-symbolic</property>
+ </object>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-up-symbolic</property>
+ </object>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-down-symbolic</property>
+ </object>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-bottom-symbolic</property>
+ </object>
+ <object class="GtkMenu" id="queue_torrent_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_queue_top">
+ <property name="label" translatable="yes">Top</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="image">image5</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_queue_top_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_queue_up">
+ <property name="label" translatable="yes">Up</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="image">image6</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_queue_up_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_queue_down">
+ <property name="label" translatable="yes">Down</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="image">image7</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_queue_down_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_queue_bottom">
+ <property name="label" translatable="yes">Bottom</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="image">image8</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_queue_bottom_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/torrent_menu.ui b/deluge/ui/gtk3/glade/torrent_menu.ui
new file mode 100644
index 0000000..c9ee289
--- /dev/null
+++ b/deluge/ui/gtk3/glade/torrent_menu.ui
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAccelGroup" id="accelgroup1"/>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">preferences-system-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image1">
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playback-stop-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-edit-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playback-start-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image14">
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playback-pause-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image15">
+ <property name="can_focus">False</property>
+ <property name="icon_name">edit-copy-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playlist-shuffle-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playlist-repeat-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">view-refresh-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">edit-redo-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">folder-open-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">document-save-as-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="menu-item-image9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-remove-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkMenu" id="torrent_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_open_folder">
+ <property name="label" translatable="yes">_Open Download Folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image7</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_open_folder_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separator4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_pause">
+ <property name="label" translatable="yes">_Pause</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image14</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_pause_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_resume">
+ <property name="label" translatable="yes">Resu_me</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Resume selected torrents.</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image13</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_resume_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_options">
+ <property name="label" translatable="yes">Opt_ions</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image1</property>
+ <property name="use_stock">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separator_menuitem16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_queue">
+ <property name="label" translatable="yes">_Queue</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image19</property>
+ <property name="use_stock">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_copymagnet">
+ <property name="label" translatable="yes">_Copy Magnet URI</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image15</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_copymagnet_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_updatetracker">
+ <property name="label" translatable="yes">_Update Tracker</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image5</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_updatetracker_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_edittrackers">
+ <property name="label" translatable="yes">_Edit Trackers</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image12</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_edittrackers_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_remove">
+ <property name="label" translatable="yes">_Remove Torrent</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image9</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_remove_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separator3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_recheck">
+ <property name="label" translatable="yes">_Force Re-check</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image6</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_recheck_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_move">
+ <property name="label" translatable="yes">_Move Download Folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">menu-item-image8</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_move_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/glade/tray_menu.ui b/deluge/ui/gtk3/glade/tray_menu.ui
new file mode 100644
index 0000000..060b7a0
--- /dev/null
+++ b/deluge/ui/gtk3/glade/tray_menu.ui
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAccelGroup" id="accelgroup1"/>
+ <object class="GtkImage" id="add-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">list-add-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="download-limit-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="pause-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playback-stop-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="quit-daemon-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">system-shutdown-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="quit-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">application-exit-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="resume-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playlist-repeat-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkImage" id="upload-limit-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_size">1</property>
+ </object>
+ <object class="GtkMenu" id="tray_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckMenuItem" id="menuitem_show_deluge">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Show Deluge</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_menuitem_show_deluge_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_add_torrent">
+ <property name="label" translatable="yes">_Add Torrent</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">add-image</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_add_torrent_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_pause_session">
+ <property name="label" translatable="yes">_Pause Session</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">pause-image</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_pause_session_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_resume_session">
+ <property name="label" translatable="yes">_Resume Session</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">resume-image</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_resume_session_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_download_limit">
+ <property name="label" translatable="yes">_Download Speed Limit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">download-limit-image</property>
+ <property name="use_stock">False</property>
+ <property name="always_show_image">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_upload_limit">
+ <property name="label" translatable="yes">_Upload Speed Limit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">upload-limit-image</property>
+ <property name="use_stock">False</property>
+ <property name="always_show_image">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_quitdaemon">
+ <property name="label" translatable="yes">Quit &amp; Shutdown Daemon</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">quit-daemon-image</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_quitdaemon_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_quit">
+ <property name="label" translatable="yes">_Quit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">quit-image</property>
+ <property name="use_stock">False</property>
+ <property name="accel_group">accelgroup1</property>
+ <signal name="activate" handler="on_menuitem_quit_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/deluge/ui/gtk3/gtkui.py b/deluge/ui/gtk3/gtkui.py
new file mode 100644
index 0000000..73a7c97
--- /dev/null
+++ b/deluge/ui/gtk3/gtkui.py
@@ -0,0 +1,399 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+# pylint: disable=wrong-import-position
+
+import logging
+import os
+import signal
+import sys
+import time
+
+import gi # isort:skip (Required before Gtk import).
+
+gi.require_version('Gtk', '3.0')
+gi.require_version('Gdk', '3.0')
+
+# isort:imports-thirdparty
+from gi.repository.GLib import set_prgname
+from gi.repository.Gtk import Builder, ResponseType
+from twisted.internet import defer, gtk3reactor
+from twisted.internet.error import ReactorAlreadyInstalledError
+from twisted.internet.task import LoopingCall
+
+try:
+ # Install twisted reactor, before any other modules import reactor.
+ reactor = gtk3reactor.install()
+except ReactorAlreadyInstalledError:
+ # Running unit tests so already installed a rector
+ from twisted.internet import reactor
+
+# isort:imports-firstparty
+import deluge.component as component
+from deluge.common import (
+ fsize,
+ fspeed,
+ get_default_download_dir,
+ osx_check,
+ windows_check,
+)
+from deluge.configmanager import ConfigManager, get_config_dir
+from deluge.error import DaemonRunningError, LibtorrentImportError
+from deluge.i18n import I18N_DOMAIN, set_language, setup_translation
+from deluge.ui.client import client
+from deluge.ui.hostlist import LOCALHOST
+from deluge.ui.sessionproxy import SessionProxy
+from deluge.ui.tracker_icons import TrackerIcons
+
+# isort:imports-localfolder
+from .addtorrentdialog import AddTorrentDialog
+from .common import associate_magnet_links, windowing
+from .connectionmanager import ConnectionManager
+from .dialogs import YesNoDialog
+from .filtertreeview import FilterTreeView
+from .ipcinterface import IPCInterface, process_args
+from .mainwindow import MainWindow
+from .menubar import MenuBar
+from .pluginmanager import PluginManager
+from .preferences import Preferences
+from .queuedtorrents import QueuedTorrents
+from .sidebar import SideBar
+from .statusbar import StatusBar
+from .systemtray import SystemTray
+from .toolbar import ToolBar
+from .torrentdetails import TorrentDetails
+from .torrentview import TorrentView
+
+set_prgname('deluge')
+log = logging.getLogger(__name__)
+
+try:
+ from setproctitle import getproctitle, setproctitle
+except ImportError:
+
+ def setproctitle(title):
+ return
+
+ def getproctitle():
+ return
+
+
+DEFAULT_PREFS = {
+ 'standalone': True,
+ 'prefer_dark_theme': False,
+ 'interactive_add': True,
+ 'focus_add_dialog': True,
+ 'enable_system_tray': True,
+ 'close_to_tray': False,
+ 'start_in_tray': False,
+ 'enable_appindicator': True,
+ 'lock_tray': False,
+ 'tray_password': '',
+ 'check_new_releases': True,
+ 'default_load_path': None,
+ 'window_maximized': False,
+ 'window_x_pos': 0,
+ 'window_y_pos': 0,
+ 'window_width': 640,
+ 'window_height': 480,
+ 'pref_dialog_width': None,
+ 'pref_dialog_height': None,
+ 'edit_trackers_dialog_width': None,
+ 'edit_trackers_dialog_height': None,
+ 'tray_download_speed_list': [5.0, 10.0, 30.0, 80.0, 300.0],
+ 'tray_upload_speed_list': [5.0, 10.0, 30.0, 80.0, 300.0],
+ 'connection_limit_list': [50, 100, 200, 300, 500],
+ 'enabled_plugins': [],
+ 'show_connection_manager_on_start': True,
+ 'autoconnect': False,
+ 'autoconnect_host_id': None,
+ 'autostart_localhost': False,
+ 'autoadd_queued': False,
+ 'choose_directory_dialog_path': get_default_download_dir(),
+ 'show_new_releases': True,
+ 'show_sidebar': True,
+ 'show_toolbar': True,
+ 'show_statusbar': True,
+ 'show_tabsbar': True,
+ 'tabsbar_tab_pos': 'top',
+ 'tabsbar_position': 235,
+ 'sidebar_show_zero': False,
+ 'sidebar_show_trackers': True,
+ 'sidebar_show_owners': True,
+ 'sidebar_position': 170,
+ 'show_rate_in_title': False,
+ 'createtorrent.trackers': [],
+ 'show_piecesbar': False,
+ 'detect_urls': True,
+ 'pieces_color_missing': [65535, 0, 0],
+ 'pieces_color_waiting': [4874, 56494, 0],
+ 'pieces_color_downloading': [65535, 55255, 0],
+ 'pieces_color_completed': [4883, 26985, 56540],
+ 'focus_main_window_on_add': True,
+ 'language': None,
+}
+
+
+class GtkUI:
+ def __init__(self, args):
+ # Setup gtkbuilder/glade translation
+ setup_translation()
+ Builder().set_translation_domain(I18N_DOMAIN)
+
+ # Setup signals
+ def on_die(*args):
+ log.debug('OS signal "die" caught with args: %s', args)
+ reactor.stop()
+
+ self.osxapp = None
+ if windows_check():
+ from win32api import SetConsoleCtrlHandler
+
+ SetConsoleCtrlHandler(on_die, True)
+ log.debug('Win32 "die" handler registered')
+ elif osx_check() and windowing('quartz'):
+ try:
+ import gtkosx_application
+ except ImportError:
+ pass
+ else:
+ self.osxapp = gtkosx_application.gtkosx_application_get()
+ self.osxapp.connect('NSApplicationWillTerminate', on_die)
+ log.debug('OSX quartz "die" handler registered')
+
+ # Set process name again to fix gtk issue
+ setproctitle(getproctitle())
+
+ # Attempt to register a magnet URI handler with gconf, but do not overwrite
+ # if already set by another program.
+ associate_magnet_links(False)
+
+ # Make sure gtk3ui.conf has at least the defaults set
+ self.config = ConfigManager('gtk3ui.conf', DEFAULT_PREFS)
+
+ # Make sure the gtkui state folder has been created
+ if not os.path.exists(os.path.join(get_config_dir(), 'gtk3ui_state')):
+ os.makedirs(os.path.join(get_config_dir(), 'gtk3ui_state'))
+
+ # Set language
+ if self.config['language'] is not None:
+ set_language(self.config['language'])
+
+ # Start the IPC Interface before anything else.. Just in case we are
+ # already running.
+ self.queuedtorrents = QueuedTorrents()
+ self.ipcinterface = IPCInterface(args.torrents)
+
+ # We make sure that the UI components start once we get a core URI
+ client.set_disconnect_callback(self.__on_disconnect)
+
+ self.trackericons = TrackerIcons()
+ self.sessionproxy = SessionProxy()
+ # Initialize various components of the gtkui
+ self.mainwindow = MainWindow()
+ self.menubar = MenuBar()
+ self.toolbar = ToolBar()
+ self.torrentview = TorrentView()
+ self.torrentdetails = TorrentDetails()
+ self.sidebar = SideBar()
+ self.filtertreeview = FilterTreeView()
+ self.preferences = Preferences()
+ self.systemtray = SystemTray()
+ self.statusbar = StatusBar()
+ self.addtorrentdialog = AddTorrentDialog()
+
+ if self.osxapp:
+
+ def nsapp_open_file(osxapp, filename):
+ # Ignore command name which is raised at app launch (python opening main script).
+ if filename == sys.argv[0]:
+ return True
+ process_args([filename])
+
+ self.osxapp.connect('NSApplicationOpenFile', nsapp_open_file)
+ from .menubar_osx import menubar_osx
+
+ menubar_osx(self, self.osxapp)
+ self.osxapp.ready()
+
+ # Initialize the plugins
+ self.plugins = PluginManager()
+
+ # Show the connection manager
+ self.connectionmanager = ConnectionManager()
+
+ # Setup RPC stats logging
+ # daemon_bps: time, bytes_sent, bytes_recv
+ self.daemon_bps = (0, 0, 0)
+ self.rpc_stats = LoopingCall(self.log_rpc_stats)
+ self.closing = False
+
+ # Twisted catches signals to terminate, so have it call a pre_shutdown method.
+ reactor.addSystemEventTrigger('before', 'gtkui_close', self.close)
+
+ def gtkui_sigint_handler(num, frame):
+ log.debug('SIGINT signal caught, firing event: gtkui_close')
+ reactor.callLater(0, reactor.fireSystemEvent, 'gtkui_close')
+
+ signal.signal(signal.SIGINT, gtkui_sigint_handler)
+
+ def start(self):
+ reactor.callWhenRunning(self._on_reactor_start)
+ reactor.run()
+ # Reactor is not running. Any async callbacks (Deferreds) can no longer
+ # be processed from this point on.
+
+ def shutdown(self, *args, **kwargs):
+ log.debug('GTKUI shutting down...')
+ # Shutdown all components
+ if client.is_standalone:
+ return component.shutdown()
+
+ @defer.inlineCallbacks
+ def close(self):
+ if self.closing:
+ return
+ self.closing = True
+ # Make sure the config is saved.
+ self.config.save()
+ # Ensure columns state is saved
+ self.torrentview.save_state()
+ # Shut down components
+ yield self.shutdown()
+
+ # The gtk modal dialogs (e.g. Preferences) can prevent the application
+ # quitting, so force exiting by destroying MainWindow. Must be done here
+ # to avoid hanging when quitting with SIGINT (CTRL-C).
+ self.mainwindow.window.destroy()
+
+ reactor.stop()
+
+ # Restart the application after closing if MainWindow restart attribute set.
+ if component.get('MainWindow').restart:
+ os.execv(sys.argv[0], sys.argv)
+
+ def log_rpc_stats(self):
+ """Log RPC statistics for thinclient mode."""
+ if not client.connected():
+ return
+
+ t = time.time()
+ recv = client.get_bytes_recv()
+ sent = client.get_bytes_sent()
+ delta_time = t - self.daemon_bps[0]
+ delta_sent = sent - self.daemon_bps[1]
+ delta_recv = recv - self.daemon_bps[2]
+ self.daemon_bps = (t, sent, recv)
+ sent_rate = fspeed(delta_sent / delta_time)
+ recv_rate = fspeed(delta_recv / delta_time)
+ log.debug(
+ 'RPC: Sent %s (%s) Recv %s (%s)',
+ fsize(sent),
+ sent_rate,
+ fsize(recv),
+ recv_rate,
+ )
+
+ def _on_reactor_start(self):
+ log.debug('_on_reactor_start')
+ self.mainwindow.first_show()
+
+ if not self.config['standalone']:
+ return self._start_thinclient()
+
+ err_msg = ''
+ try:
+ client.start_standalone()
+ except DaemonRunningError:
+ err_msg = _(
+ 'A Deluge daemon (deluged) is already running.\n'
+ 'To use Standalone mode, stop local daemon and restart Deluge.'
+ )
+ except LibtorrentImportError as ex:
+ if 'libtorrent library not found' in str(ex):
+ err_msg = _(
+ 'Only Thin Client mode is available because libtorrent is not installed.\n'
+ 'To use Standalone mode, please install libtorrent package.'
+ )
+ else:
+ log.exception(ex)
+ err_msg = _(
+ 'Only Thin Client mode is available due to libtorrent import error: %s\n'
+ 'To use Standalone mode, please see logs for error details.'
+ % (str(ex))
+ )
+
+ except ImportError as ex:
+ log.exception(ex)
+ err_msg = _(
+ 'Only Thin Client mode is available due to unknown Import Error.\n'
+ 'To use Standalone mode, please see logs for error details.'
+ )
+ except Exception as ex:
+ log.exception(ex)
+ err_msg = _(
+ 'Only Thin Client mode is available due to unknown Import Error.\n'
+ 'To use Standalone mode, please see logs for error details.'
+ )
+ else:
+ component.start()
+ return
+
+ def on_dialog_response(response):
+ """User response to switching mode dialog."""
+ if response == ResponseType.YES:
+ # Turning off standalone
+ self.config['standalone'] = False
+ self._start_thinclient()
+ else:
+ # User want keep Standalone Mode so just quit.
+ self.mainwindow.quit()
+
+ # An error occurred so ask user to switch from Standalone to Thin Client mode.
+ err_msg += '\n\n' + _('Continue in Thin Client mode?')
+ d = YesNoDialog(_('Change User Interface Mode'), err_msg).run()
+ d.addCallback(on_dialog_response)
+
+ def _start_thinclient(self):
+ """Start the gtkui in thinclient mode"""
+ if log.isEnabledFor(logging.DEBUG):
+ self.rpc_stats.start(10)
+
+ # Check to see if we need to start the localhost daemon
+ if self.config['autostart_localhost']:
+
+ def on_localhost_status(status_info, port):
+ if status_info[1] == 'Offline':
+ log.debug('Autostarting localhost: %s', host_config[0:3])
+ self.connectionmanager.start_daemon(port, get_config_dir())
+
+ for host_config in self.connectionmanager.hostlist.config['hosts']:
+ if host_config[1] in LOCALHOST:
+ d = self.connectionmanager.hostlist.get_host_status(host_config[0])
+ d.addCallback(on_localhost_status, host_config[2])
+ break
+
+ # Autoconnect to a host
+ if self.config['autoconnect']:
+ for host_config in self.connectionmanager.hostlist.config['hosts']:
+ host_id, host, port, user, __ = host_config
+ if host_id == self.config['autoconnect_host_id']:
+ log.debug('Trying to connect to %s@%s:%s', user, host, port)
+ self.connectionmanager._connect(host_id, try_counter=6)
+ break
+
+ if self.config['show_connection_manager_on_start']:
+ # Dialog is blocking so call last.
+ self.connectionmanager.show()
+
+ def __on_disconnect(self):
+ """
+ Called when disconnected from the daemon. We basically just stop all
+ the components here.
+ """
+ self.daemon_bps = (0, 0, 0)
+ component.stop()
diff --git a/deluge/ui/gtk3/ipcinterface.py b/deluge/ui/gtk3/ipcinterface.py
new file mode 100644
index 0000000..0ef28d8
--- /dev/null
+++ b/deluge/ui/gtk3/ipcinterface.py
@@ -0,0 +1,221 @@
+#
+# Copyright (C) 2008-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+import sys
+from base64 import b64encode
+from glob import glob
+from tempfile import mkstemp
+from urllib.parse import urlparse
+from urllib.request import url2pathname
+
+import rencode
+import twisted.internet.error
+from twisted.internet import reactor
+from twisted.internet.protocol import ClientFactory, Factory, Protocol, connectionDone
+
+import deluge.component as component
+from deluge.common import decode_bytes, is_magnet, is_url, windows_check
+from deluge.configmanager import ConfigManager, get_config_dir
+from deluge.ui.client import client
+
+log = logging.getLogger(__name__)
+
+
+class IPCProtocolServer(Protocol):
+ def __init__(self):
+ pass
+
+ def dataReceived(self, data): # NOQA: N802
+ config = ConfigManager('gtk3ui.conf')
+ data = rencode.loads(data, decode_utf8=True)
+ if not data or config['focus_main_window_on_add']:
+ component.get('MainWindow').present()
+ process_args(data)
+
+
+class IPCProtocolClient(Protocol):
+ def __init__(self):
+ pass
+
+ def connectionMade(self): # NOQA: N802
+ self.transport.write(rencode.dumps(self.factory.args))
+ self.transport.loseConnection()
+
+ def connectionLost(self, reason=connectionDone): # NOQA: N802
+ reactor.stop()
+ self.factory.stop = True
+
+
+class IPCClientFactory(ClientFactory):
+ protocol = IPCProtocolClient
+
+ def __init__(self):
+ self.stop = False
+
+ def clientConnectionFailed(self, connector, reason): # NOQA: N802
+ log.warning('Connection to running instance failed.')
+ reactor.stop()
+
+
+class IPCInterface(component.Component):
+ def __init__(self, args):
+ component.Component.__init__(self, 'IPCInterface')
+ self.listener = None
+ ipc_dir = get_config_dir('ipc')
+ if not os.path.exists(ipc_dir):
+ os.makedirs(ipc_dir)
+ socket = os.path.join(ipc_dir, 'deluge-gtk')
+ if windows_check():
+ # If we're on windows we need to check the global mutex to see if deluge is
+ # already running.
+ import win32api
+ import win32event
+ import winerror
+
+ self.mutex = win32event.CreateMutex(None, False, 'deluge')
+ if win32api.GetLastError() != winerror.ERROR_ALREADY_EXISTS:
+ # Create listen socket
+ self.factory = Factory()
+ self.factory.protocol = IPCProtocolServer
+ import random
+
+ port = random.randrange(20000, 65535)
+ self.listener = reactor.listenTCP(port, self.factory)
+ # Store the port number in the socket file
+ with open(socket, 'w') as _file:
+ _file.write(str(port))
+ # We need to process any args when starting this process
+ process_args(args)
+ else:
+ # Send to existing deluge process
+ with open(socket) as _file:
+ port = int(_file.readline())
+ self.factory = ClientFactory()
+ self.factory.args = args
+ self.factory.protocol = IPCProtocolClient
+ reactor.connectTCP('127.0.0.1', port, self.factory)
+ reactor.run()
+ sys.exit(0)
+ else:
+ # Find and remove any restart tempfiles
+ restart_tempfile = glob(os.path.join(ipc_dir, 'restart.*'))
+ for f in restart_tempfile:
+ os.remove(f)
+ lockfile = socket + '.lock'
+ log.debug('Checking if lockfile exists: %s', lockfile)
+ if os.path.lexists(lockfile):
+
+ def delete_lockfile():
+ log.debug('Delete stale lockfile.')
+ try:
+ os.remove(lockfile)
+ os.remove(socket)
+ except OSError as ex:
+ log.error('Failed to delete lockfile: %s', ex)
+
+ try:
+ os.kill(int(os.readlink(lockfile)), 0)
+ except OSError:
+ delete_lockfile()
+ else:
+ if restart_tempfile:
+ log.warning(
+ 'Found running PID but it is not a Deluge process, removing lockfile...'
+ )
+ delete_lockfile()
+ try:
+ self.factory = Factory()
+ self.factory.protocol = IPCProtocolServer
+ self.listener = reactor.listenUNIX(socket, self.factory, wantPID=True)
+ except twisted.internet.error.CannotListenError as ex:
+ log.info(
+ 'Deluge is already running! Sending arguments to running instance...'
+ )
+ self.factory = IPCClientFactory()
+ self.factory.args = args
+ reactor.connectUNIX(socket, self.factory, checkPID=True)
+ reactor.run()
+ if self.factory.stop:
+ log.info('Success sending arguments to running Deluge.')
+ from gi.repository.Gdk import notify_startup_complete
+
+ notify_startup_complete()
+ sys.exit(0)
+ else:
+ if restart_tempfile:
+ log.error('Deluge restart failed: %s', ex)
+ sys.exit(1)
+ else:
+ log.warning('Restarting Deluge... (%s)', ex)
+ # Create a tempfile to keep track of restart
+ mkstemp(prefix='restart.', dir=ipc_dir)
+ os.execv(sys.argv[0], sys.argv)
+ else:
+ process_args(args)
+
+ def shutdown(self):
+ if windows_check():
+ import win32api
+
+ win32api.CloseHandle(self.mutex)
+ if self.listener:
+ return self.listener.stopListening()
+
+
+def process_args(args):
+ """Process arguments sent to already running Deluge"""
+ # Make sure args is a list
+ args = list(args)
+ log.debug('Processing args from other process: %s', args)
+ if not client.connected():
+ # We're not connected so add these to the queue
+ log.debug('Not connected to host.. Adding to queue.')
+ component.get('QueuedTorrents').add_to_queue(args)
+ return
+ config = ConfigManager('gtk3ui.conf')
+
+ for arg in args:
+ if not arg.strip():
+ continue
+ log.debug('arg: %s', arg)
+
+ if is_url(arg):
+ log.debug('Attempting to add url (%s) from external source...', arg)
+ if config['interactive_add']:
+ component.get('AddTorrentDialog').add_from_url(arg)
+ component.get('AddTorrentDialog').show(config['focus_add_dialog'])
+ else:
+ client.core.add_torrent_url(arg, None)
+
+ elif is_magnet(arg):
+ log.debug('Attempting to add magnet (%s) from external source...', arg)
+ if config['interactive_add']:
+ component.get('AddTorrentDialog').add_from_magnets([arg])
+ component.get('AddTorrentDialog').show(config['focus_add_dialog'])
+ else:
+ client.core.add_torrent_magnet(arg, {})
+
+ else:
+ log.debug('Attempting to add file (%s) from external source...', arg)
+ if urlparse(arg).scheme == 'file':
+ arg = url2pathname(urlparse(arg).path)
+ path = os.path.abspath(decode_bytes(arg))
+
+ if not os.path.exists(path):
+ log.error('No such file: %s', path)
+ continue
+
+ if config['interactive_add']:
+ component.get('AddTorrentDialog').add_from_files([path])
+ component.get('AddTorrentDialog').show(config['focus_add_dialog'])
+ else:
+ with open(path, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ client.core.add_torrent_file(os.path.split(path)[-1], filedump, None)
diff --git a/deluge/ui/gtk3/listview.py b/deluge/ui/gtk3/listview.py
new file mode 100644
index 0000000..a80d795
--- /dev/null
+++ b/deluge/ui/gtk3/listview.py
@@ -0,0 +1,831 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from gi.repository import GObject, Gtk
+
+from deluge.common import decode_bytes
+
+from .common import cmp, load_pickled_state_file, save_pickled_state_file
+
+log = logging.getLogger(__name__)
+
+
+class ListViewColumnState:
+ """Class used for saving/loading column state."""
+
+ def __init__(self, name, position, width, visible, sort, sort_order):
+ self.name = name
+ self.position = position
+ self.width = width
+ self.visible = visible
+ self.sort = sort
+ self.sort_order = sort_order
+
+
+class ListView:
+ """ListView is used to make custom GtkTreeViews. It supports the adding
+ and removing of columns, creating a menu for a column toggle list and
+ support for 'status_field's which are used while updating the columns data.
+ """
+
+ class ListViewColumn:
+ """Holds information regarding a column in the ListView"""
+
+ def __init__(self, name, column_indices):
+ # Name is how a column is identified and is also the header
+ self.name = name
+ # Column_indices holds the indexes to the liststore_columns that
+ # this column utilizes. It is stored as a list.
+ self.column_indices = column_indices
+ # Column is a reference to the GtkTreeViewColumn object
+ self.column = None
+ # This is the name of the status field that the column will query
+ # the core for if an update is called.
+ self.status_field = None
+ # If column is 'hidden' then it will not be visible and will not
+ # show up in any menu listing; it cannot be shown ever.
+ self.hidden = False
+ # If this is set, it is used to sort the model
+ self.sort_func = None
+ self.sort_id = None
+ # Values needed to update TreeViewColumns
+ self.column_type = None
+ self.renderer = None
+ self.text_index = 0
+ self.value_index = 0
+ self.pixbuf_index = 0
+ self.data_func = None
+
+ class TreeviewColumn(Gtk.TreeViewColumn):
+ """
+ TreeViewColumn does not signal right-click events, and we need them
+ This subclass is equivalent to TreeViewColumn, but it signals these events
+
+ Most of the code of this class comes from Quod Libet (http://www.sacredchao.net/quodlibet)
+ """
+
+ __gsignals__ = {
+ 'button-press-event': (GObject.SignalFlags.RUN_LAST, None, (object,))
+ }
+
+ def __init__(self, title=None, cell_renderer=None, **args):
+ """Constructor, see Gtk.TreeViewColumn"""
+ Gtk.TreeViewColumn.__init__(self, title, cell_renderer, **args)
+ label = Gtk.Label(label=title)
+ self.set_widget(label)
+ label.show()
+ label.__realize = label.connect('realize', self.on_realize)
+ self.title = title
+ self.data_func = None
+ self.data_func_data = None
+ self.cell_renderer = None
+
+ def on_realize(self, widget):
+ widget.disconnect(widget.__realize)
+ del widget.__realize
+ button = widget.get_ancestor(Gtk.Button)
+ if button is not None:
+ button.connect('button-press-event', self.on_button_pressed)
+
+ def on_button_pressed(self, widget, event):
+ self.emit('button-press-event', event)
+
+ def set_cell_data_func_attributes(self, cell_renderer, func, func_data=None):
+ """Store the values to be set by set_cell_data_func"""
+ self.data_func = func
+ self.data_func_data = func_data
+ self.cell_renderer = cell_renderer
+
+ def set_visible(self, visible):
+ Gtk.TreeViewColumn.set_visible(self, visible)
+ if self.data_func:
+ if not visible:
+ # Set data function to None to prevent unnecessary calls when column is hidden
+ self.set_cell_data_func(self.cell_renderer, None, func_data=None)
+ else:
+ self.set_cell_data_func(
+ self.cell_renderer, self.data_func, self.data_func_data
+ )
+
+ def set_col_attributes(self, renderer, add=True, **kw):
+ if add is True:
+ for attr, value in kw.items():
+ self.add_attribute(renderer, attr, value)
+ else:
+ self.set_attributes(renderer, **kw)
+
+ def __init__(self, treeview_widget=None, state_file=None):
+ log.debug('ListView initialized..')
+
+ if treeview_widget is not None:
+ # User supplied a treeview widget
+ self.treeview = treeview_widget
+ else:
+ self.treeview = Gtk.TreeView()
+
+ self.treeview.set_enable_search(True)
+ self.treeview.set_search_equal_func(self.on_keypress_search_by_name, None)
+
+ if state_file:
+ self.load_state(state_file)
+
+ self.liststore = None
+ self.model_filter = None
+
+ self.treeview.set_reorderable(False)
+ self.treeview.set_rubber_banding(True) # Enable mouse multi-row selection.
+ self.treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+
+ # Dictionary of 'header' or 'name' to ListViewColumn object
+ self.columns = {}
+ # Column_index keeps track of the order of the visible columns.
+ self.column_index = []
+ # The column types for the list store.. this may have more entries than
+ # visible columns due to some columns utilizing more than 1 liststore
+ # column and some columns being hidden.
+ self.liststore_columns = []
+ # The GtkMenu that is created after every addition, removal or reorder
+ self.menu = None
+ # A list of menus that self.menu will be a submenu of everytime it is
+ # created.
+ self.checklist_menus = []
+
+ # Store removed columns state. This is needed for plugins that remove
+ # their columns prior to having the state list saved on shutdown.
+ self.removed_columns_state = []
+
+ # Since gtk TreeModelSort doesn't do stable sort, remember last sort order so we can
+ self.last_sort_order = {}
+ self.unique_column_id = None
+ self.default_sort_column_id = None
+
+ # Create the model filter and column
+ self.add_bool_column('filter', hidden=True)
+
+ def create_model_filter(self):
+ """create new filter-model
+ must be called after listview.create_new_liststore
+ """
+ model_filter = self.liststore.filter_new()
+ model_filter.set_visible_column(self.columns['filter'].column_indices[0])
+ self.model_filter = Gtk.TreeModelSort(model=model_filter)
+ self.model_filter.connect('sort-column-changed', self.on_model_sort_changed)
+ self.model_filter.connect('row-inserted', self.on_model_row_inserted)
+ self.treeview.set_model(self.model_filter)
+ self.set_sort_functions()
+ self.set_model_sort()
+
+ def set_model_sort(self):
+ column_state = self.get_sort_column_from_state()
+ if column_state:
+ self.treeview.get_model().set_sort_column_id(
+ column_state.sort, column_state.sort_order
+ )
+ # Using the default sort column
+ elif self.default_sort_column_id:
+ self.model_filter.set_sort_column_id(
+ self.default_sort_column_id, Gtk.SortType.ASCENDING
+ )
+ self.model_filter.set_default_sort_func(
+ self.generic_sort_func, self.get_column_index(_('Added'))[0]
+ )
+
+ def get_sort_column_from_state(self):
+ """Find the first (should only be one) state with sort enabled"""
+ if self.state is None:
+ return None
+ for column_state in self.state:
+ if column_state.sort is not None and column_state.sort > -1:
+ return column_state
+ return None
+
+ def on_model_sort_changed(self, model):
+ if self.unique_column_id:
+ self.last_sort_order = {}
+
+ def record_position(model, path, _iter, data):
+ unique_id = model[_iter][self.unique_column_id]
+ self.last_sort_order[unique_id] = int(str(path))
+
+ model.foreach(record_position, None)
+
+ def on_model_row_inserted(self, model, path, _iter):
+ if self.unique_column_id:
+ self.last_sort_order.setdefault(
+ model[_iter][self.unique_column_id], len(model) - 1
+ )
+
+ def stabilize_sort_func(self, sort_func):
+ def stabilized(model, iter1, iter2, data):
+ result = sort_func(model, iter1, iter2, data)
+ if result == 0 and self.unique_column_id:
+ unique1 = model[iter1][self.unique_column_id]
+ unique2 = model[iter2][self.unique_column_id]
+ if unique1 in self.last_sort_order and unique2 in self.last_sort_order:
+ result = cmp(
+ self.last_sort_order[unique1], self.last_sort_order[unique2]
+ )
+ # If all else fails, fall back to sorting by unique column
+ if result == 0:
+ result = cmp(unique1, unique2)
+
+ return result
+
+ return stabilized
+
+ def generic_sort_func(self, model, iter1, iter2, data):
+ return cmp(model[iter1][data], model[iter2][data])
+
+ def set_sort_functions(self):
+ for column in self.columns.values():
+ sort_func = column.sort_func or self.generic_sort_func
+ self.model_filter.set_sort_func(
+ column.sort_id, self.stabilize_sort_func(sort_func), column.sort_id
+ )
+
+ def create_column_state(self, column, position=None):
+ if not position:
+ # Find the position
+ for index, c in enumerate(self.treeview.get_columns()):
+ if column.get_title() == c.get_title():
+ position = index
+ break
+ sort = None
+ if self.model_filter:
+ sort_id, order = self.model_filter.get_sort_column_id()
+ col_title = decode_bytes(column.get_title())
+ if self.get_column_name(sort_id) == col_title:
+ sort = sort_id
+
+ return ListViewColumnState(
+ column.get_title(),
+ position,
+ column.get_width(),
+ column.get_visible(),
+ sort,
+ int(column.get_sort_order()),
+ )
+
+ def save_state(self, filename):
+ """Saves the listview state (column positions and visibility) to
+ filename."""
+ # A list of ListViewColumnStates
+ state = []
+
+ # Workaround for all zero widths after removing column on shutdown
+ if not any(c.get_width() for c in self.treeview.get_columns()):
+ return
+
+ # Get the list of TreeViewColumns from the TreeView
+ for counter, column in enumerate(self.treeview.get_columns()):
+ # Append a new column state to the state list
+ state.append(self.create_column_state(column, counter))
+
+ state += self.removed_columns_state
+
+ self.state = state
+ save_pickled_state_file(filename, state)
+
+ def load_state(self, filename):
+ """Load the listview state from filename."""
+ self.state = load_pickled_state_file(filename)
+
+ def set_treeview(self, treeview_widget):
+ """Set the treeview widget that this listview uses."""
+ self.treeview = treeview_widget
+ self.treeview.set_model(self.liststore)
+ return
+
+ def get_column_index(self, name):
+ """Get the liststore column indices belonging to this column.
+ Will return a list.
+ """
+ return self.columns[name].column_indices
+
+ def get_column_name(self, index):
+ """Get the header name for a liststore column index"""
+ for key, value in self.columns.items():
+ if index in value.column_indices:
+ return key
+
+ def get_state_field_column(self, field):
+ """Returns the column number for the state field"""
+ for column in self.columns:
+ if self.columns[column].status_field is None:
+ continue
+
+ for f in self.columns[column].status_field:
+ if field == f:
+ return self.columns[column].column_indices[
+ self.columns[column].status_field.index(f)
+ ]
+
+ def on_menuitem_toggled(self, widget):
+ """Callback for the generated column menuitems."""
+ # Get the column name from the widget
+ name = widget.get_child().get_text()
+
+ # Set the column's visibility based on the widgets active state
+ try:
+ self.columns[name].column.set_visible(widget.get_active())
+ except KeyError:
+ self.columns[decode_bytes(name)].column.set_visible(widget.get_active())
+ return
+
+ def on_treeview_header_right_clicked(self, column, event):
+ if event.button == 3:
+ self.menu.popup(None, None, None, None, event.button, event.get_time())
+
+ def register_checklist_menu(self, menu):
+ """Register a checklist menu with the listview. It will automatically
+ attach any new checklist menu it makes to this menu.
+ """
+ self.checklist_menus.append(menu)
+
+ def create_checklist_menu(self):
+ """Creates a menu used for toggling the display of columns."""
+ menu = self.menu = Gtk.Menu()
+ # Iterate through the column_index list to preserve order
+ for name in self.column_index:
+ column = self.columns[name]
+ # If the column is hidden, then we do not want to show it in the
+ # menu.
+ if column.hidden is True:
+ continue
+ menuitem = Gtk.CheckMenuItem.new_with_label(column.name)
+ # If the column is currently visible, make sure it's set active
+ # (or checked) in the menu.
+ if column.column.get_visible() is True:
+ menuitem.set_active(True)
+ # Connect to the 'toggled' event
+ menuitem.connect('toggled', self.on_menuitem_toggled)
+ # Add the new checkmenuitem to the menu
+ menu.append(menuitem)
+
+ # Attach this new menu to all the checklist_menus
+ for _menu in self.checklist_menus:
+ _menu.set_submenu(menu)
+ _menu.show_all()
+ return menu
+
+ def create_new_liststore(self):
+ """Creates a new GtkListStore based on the liststore_columns list"""
+ # Create a new liststore with added column and move the data from the
+ # old one to the new one.
+ new_list = Gtk.ListStore(*tuple(self.liststore_columns))
+
+ # This function is used in the liststore.foreach method with user_data
+ # being the new liststore and the columns list
+ def copy_row(model, path, row, user_data):
+ new_list, columns = user_data
+ new_row = new_list.append()
+ for column in range(len(columns)):
+ # Get the current value of the column for this row
+ value = model.get_value(row, column)
+ # Set the value of this row and column in the new liststore
+ new_list.set_value(new_row, column, value)
+
+ # Do the actual row copy
+ if self.liststore is not None:
+ self.liststore.foreach(copy_row, (new_list, self.columns))
+
+ self.liststore = new_list
+
+ def update_treeview_column(self, header, add=True):
+ """Update TreeViewColumn based on ListView column mappings"""
+ column = self.columns[header]
+ tree_column = self.columns[header].column
+
+ if column.column_type == 'text':
+ if add:
+ tree_column.pack_start(column.renderer, True)
+ tree_column.set_col_attributes(
+ column.renderer, add=add, text=column.column_indices[column.text_index]
+ )
+ elif column.column_type == 'bool':
+ if add:
+ tree_column.pack_start(column.renderer, True)
+ tree_column.set_col_attributes(
+ column.renderer, active=column.column_indices[0]
+ )
+ elif column.column_type == 'func':
+ if add:
+ tree_column.pack_start(column.renderer, True)
+ indice_arg = column.column_indices[0]
+ if len(column.column_indices) > 1:
+ indice_arg = tuple(column.column_indices)
+ tree_column.set_cell_data_func(
+ column.renderer, column.data_func, indice_arg
+ )
+ elif column.column_type == 'progress':
+ if add:
+ tree_column.pack_start(column.renderer, True)
+ if column.data_func is None:
+ tree_column.set_col_attributes(
+ column.renderer,
+ add=add,
+ text=column.column_indices[column.text_index],
+ value=column.column_indices[column.value_index],
+ )
+ else:
+ tree_column.set_cell_data_func(
+ column.renderer, column.data_func, tuple(column.column_indices)
+ )
+ elif column.column_type == 'texticon':
+ if add:
+ tree_column.pack_start(column.renderer[column.pixbuf_index], False)
+ tree_column.pack_start(column.renderer[column.text_index], True)
+ tree_column.set_col_attributes(
+ column.renderer[column.text_index],
+ add=add,
+ text=column.column_indices[column.text_index],
+ )
+ if column.data_func is not None:
+ tree_column.set_cell_data_func(
+ column.renderer[column.pixbuf_index],
+ column.data_func,
+ column.column_indices[column.pixbuf_index],
+ )
+ return True
+
+ def remove_column(self, header):
+ """Removes the column with the name 'header' from the listview"""
+ # Store a copy of this columns state in case it's re-added
+ state = self.create_column_state(self.columns[header].column)
+ self.removed_columns_state.append(state)
+ # Only remove column if column is associated with the treeview. This avoids
+ # warning on shutdown when GTKUI is closed before plugins try to remove columns
+ if self.columns[header].column.get_tree_view() is not None:
+ self.treeview.remove_column(self.columns[header].column)
+ # Get the column indices
+ column_indices = self.columns[header].column_indices
+ # Delete the column
+ del self.columns[header]
+ self.column_index.remove(header)
+ # Shift the column_indices values of those columns affected by the
+ # removal. Any column_indices > the one removed.
+ for column in self.columns.values():
+ if column.column_indices[0] > column_indices[0]:
+ # We need to shift this column_indices
+ for i, index in enumerate(column.column_indices):
+ column.column_indices[i] = index - len(column_indices)
+ # Update the associated TreeViewColumn
+ self.update_treeview_column(column.name, add=False)
+
+ # Remove from the liststore columns list
+ for index in sorted(column_indices, reverse=True):
+ del self.liststore_columns[index]
+
+ # Create a new liststore
+ self.create_new_liststore()
+ # Create new model for the treeview
+ self.create_model_filter()
+
+ # Re-create the menu
+ self.create_checklist_menu()
+ return
+
+ def add_column(
+ self,
+ header,
+ render,
+ col_types,
+ hidden,
+ position,
+ status_field,
+ sortid,
+ text=0,
+ value=0,
+ pixbuf=0,
+ function=None,
+ column_type=None,
+ sort_func=None,
+ tooltip=None,
+ default=True,
+ unique=False,
+ default_sort=False,
+ ):
+ """Adds a column to the ListView"""
+ # Add the column types to liststore_columns
+ column_indices = []
+ if isinstance(col_types, list):
+ for col_type in col_types:
+ self.liststore_columns.append(col_type)
+ column_indices.append(len(self.liststore_columns) - 1)
+ else:
+ self.liststore_columns.append(col_types)
+ column_indices.append(len(self.liststore_columns) - 1)
+
+ # Add to the index list so we know the order of the visible columns.
+ if position is not None:
+ self.column_index.insert(position, header)
+ else:
+ self.column_index.append(header)
+
+ # Create a new column object and add it to the list
+ column = self.TreeviewColumn(header)
+ self.columns[header] = self.ListViewColumn(header, column_indices)
+ self.columns[header].column = column
+ self.columns[header].status_field = status_field
+ self.columns[header].sort_func = sort_func
+ self.columns[header].sort_id = column_indices[sortid]
+ # Store creation details
+ self.columns[header].column_type = column_type
+ self.columns[header].renderer = render
+ self.columns[header].text_index = text
+ self.columns[header].value_index = value
+ self.columns[header].pixbuf_index = pixbuf
+ self.columns[header].data_func = function
+
+ if unique:
+ self.unique_column_id = column_indices[sortid]
+ if default_sort:
+ self.default_sort_column_id = column_indices[sortid]
+
+ # Create a new list with the added column
+ self.create_new_liststore()
+
+ # Happens only on columns added after the torrent list has been loaded
+ if self.model_filter:
+ self.create_model_filter()
+
+ if column_type is None:
+ return
+
+ self.update_treeview_column(header)
+
+ column.set_sort_column_id(self.columns[header].column_indices[sortid])
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(20)
+ column.set_reorderable(True)
+ column.set_visible(not hidden)
+ column.connect('button-press-event', self.on_treeview_header_right_clicked)
+
+ if tooltip:
+ column.get_widget().set_tooltip_markup(tooltip)
+
+ # Check for loaded state and apply
+ column_in_state = False
+ if self.state is not None:
+ for column_state in self.state:
+ if header == decode_bytes(column_state.name):
+ # We found a loaded state
+ column_in_state = True
+ if column_state.width > 0:
+ column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
+ column.set_fixed_width(column_state.width)
+
+ column.set_visible(column_state.visible)
+ position = column_state.position
+ break
+
+ # Set this column to not visible if its not in the state and
+ # its not supposed to be shown by default
+ if not column_in_state and not default and not hidden:
+ column.set_visible(False)
+
+ if position is not None:
+ self.treeview.insert_column(column, position)
+ else:
+ self.treeview.append_column(column)
+
+ # Set hidden in the column
+ self.columns[header].hidden = hidden
+ self.columns[header].column = column
+ # Re-create the menu item because of the new column
+ self.create_checklist_menu()
+
+ return True
+
+ def add_text_column(
+ self,
+ header,
+ col_type=str,
+ hidden=False,
+ position=None,
+ status_field=None,
+ sortid=0,
+ column_type='text',
+ sort_func=None,
+ tooltip=None,
+ default=True,
+ unique=False,
+ default_sort=False,
+ ):
+ """Add a text column to the listview. Only the header name is required."""
+ render = Gtk.CellRendererText()
+ self.add_column(
+ header,
+ render,
+ col_type,
+ hidden,
+ position,
+ status_field,
+ sortid,
+ column_type=column_type,
+ sort_func=sort_func,
+ tooltip=tooltip,
+ default=default,
+ unique=unique,
+ default_sort=default_sort,
+ )
+
+ return True
+
+ def add_bool_column(
+ self,
+ header,
+ col_type=bool,
+ hidden=False,
+ position=None,
+ status_field=None,
+ sortid=0,
+ column_type='bool',
+ tooltip=None,
+ default=True,
+ ):
+ """Add a bool column to the listview"""
+ render = Gtk.CellRendererToggle()
+ self.add_column(
+ header,
+ render,
+ col_type,
+ hidden,
+ position,
+ status_field,
+ sortid,
+ column_type=column_type,
+ tooltip=tooltip,
+ default=default,
+ )
+
+ def add_func_column(
+ self,
+ header,
+ function,
+ col_types,
+ sortid=0,
+ hidden=False,
+ position=None,
+ status_field=None,
+ column_type='func',
+ sort_func=None,
+ tooltip=None,
+ default=True,
+ ):
+ """Add a function column to the listview. Need a header name, the
+ function and the column types."""
+
+ render = Gtk.CellRendererText()
+ self.add_column(
+ header,
+ render,
+ col_types,
+ hidden,
+ position,
+ status_field,
+ sortid,
+ column_type=column_type,
+ function=function,
+ sort_func=sort_func,
+ tooltip=tooltip,
+ default=default,
+ )
+
+ return True
+
+ def add_progress_column(
+ self,
+ header,
+ col_types=None,
+ sortid=0,
+ hidden=False,
+ position=None,
+ status_field=None,
+ function=None,
+ column_type='progress',
+ tooltip=None,
+ sort_func=None,
+ default=True,
+ ):
+ """Add a progress column to the listview."""
+
+ if col_types is None:
+ col_types = [float, str]
+ render = Gtk.CellRendererProgress()
+ self.add_column(
+ header,
+ render,
+ col_types,
+ hidden,
+ position,
+ status_field,
+ sortid,
+ function=function,
+ column_type=column_type,
+ value=0,
+ text=1,
+ tooltip=tooltip,
+ sort_func=sort_func,
+ default=default,
+ )
+
+ return True
+
+ def add_texticon_column(
+ self,
+ header,
+ col_types=None,
+ sortid=1,
+ hidden=False,
+ position=None,
+ status_field=None,
+ column_type='texticon',
+ function=None,
+ sort_func=None,
+ tooltip=None,
+ default=True,
+ default_sort=False,
+ ):
+ """Adds a texticon column to the listview."""
+ if col_types is None:
+ col_types = [str, str]
+ render1 = Gtk.CellRendererPixbuf()
+ render2 = Gtk.CellRendererText()
+
+ self.add_column(
+ header,
+ (render1, render2),
+ col_types,
+ hidden,
+ position,
+ status_field,
+ sortid,
+ column_type=column_type,
+ function=function,
+ pixbuf=0,
+ text=1,
+ tooltip=tooltip,
+ sort_func=sort_func,
+ default=default,
+ default_sort=default_sort,
+ )
+
+ return True
+
+ def on_keypress_search_by_name(self, model, column, key, _iter):
+ torrent_name_col = self.columns[_('Name')].column_indices[1]
+ return not model[_iter][torrent_name_col].lower().startswith(key.lower())
+
+ def restore_columns_order_from_state(self):
+ if self.state is None:
+ # No state file exists, so, no reordering can be done
+ return
+ columns = self.treeview.get_columns()
+
+ def find_column(header):
+ for column in columns:
+ if column.get_title() == header:
+ return column
+
+ restored_columns = []
+ for col_state in self.state:
+ if col_state.name in restored_columns:
+ # Duplicate column in state!?!?!?
+ continue
+ elif not col_state.visible:
+ # Column is not visible, no need to reposition
+ continue
+
+ try:
+ column_at_position = columns[col_state.position]
+ except IndexError:
+ # Ignore extra columns from Plugins in col_state
+ continue
+ if col_state.name == column_at_position.get_title():
+ # It's in the right position
+ continue
+ column = find_column(col_state.name)
+ if not column:
+ log.debug(
+ 'Could not find column matching "%s" on state.', col_state.name
+ )
+ # The cases where I've found that the column could not be found
+ # is when not using the english locale, ie, the default one, or
+ # when changing locales between runs.
+ # On the next load, all should be fine
+ continue
+ self.treeview.move_column_after(column, column_at_position)
+ # Get columns again to keep reordering since positions have changed
+ columns = self.treeview.get_columns()
+ restored_columns.append(col_state.name)
+ self.create_new_liststore()
diff --git a/deluge/ui/gtk3/mainwindow.py b/deluge/ui/gtk3/mainwindow.py
new file mode 100644
index 0000000..6c871d2
--- /dev/null
+++ b/deluge/ui/gtk3/mainwindow.py
@@ -0,0 +1,405 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os.path
+from hashlib import sha1 as sha
+
+import gi
+from gi.repository import Gtk
+from gi.repository.Gdk import DragAction, WindowState
+from twisted.internet import reactor
+from twisted.internet.error import ReactorNotRunning
+
+import deluge.component as component
+from deluge.common import decode_bytes, fspeed, is_magnet, is_url, resource_filename
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+from .common import get_clipboard_text, get_deluge_icon, windowing
+from .dialogs import PasswordDialog
+from .ipcinterface import process_args
+
+GdkX11 = None
+Wnck = None
+if windowing('X11'):
+ try:
+ from gi.repository import GdkX11
+ except ImportError:
+ pass
+
+ try:
+ gi.require_version('Wnck', '3.0')
+ from gi.repository import Wnck
+ except (ImportError, ValueError):
+ pass
+
+log = logging.getLogger(__name__)
+
+
+class _GtkBuilderSignalsHolder:
+ def connect_signals(self, mapping_or_class):
+ if isinstance(mapping_or_class, dict):
+ for name, handler in mapping_or_class.items():
+ if hasattr(self, name):
+ raise RuntimeError(
+ 'A handler for signal %r has already been registered: %s'
+ % (name, getattr(self, name))
+ )
+ setattr(self, name, handler)
+ else:
+ for name in dir(mapping_or_class):
+ if not name.startswith('on_'):
+ continue
+ if hasattr(self, name):
+ raise RuntimeError(
+ 'A handler for signal %r has already been registered: %s'
+ % (name, getattr(self, name))
+ )
+ setattr(self, name, getattr(mapping_or_class, name))
+
+
+class MainWindow(component.Component):
+ def __init__(self):
+ if Wnck:
+ self.screen = Wnck.Screen.get_default()
+ component.Component.__init__(self, 'MainWindow', interval=2)
+ self.config = ConfigManager('gtk3ui.conf')
+ self.main_builder = Gtk.Builder()
+
+ # Set theme
+ Gtk.Settings.get_default().set_property(
+ 'gtk-application-prefer-dark-theme',
+ self.config['prefer_dark_theme'],
+ )
+
+ # Patch this GtkBuilder to avoid connecting signals from elsewhere
+ #
+ # Think about splitting up mainwindow gtkbuilder file into the necessary parts
+ # to avoid GtkBuilder monkey patch. Those parts would then need adding to mainwindow 'by hand'.
+ self.gtk_builder_signals_holder = _GtkBuilderSignalsHolder()
+ # FIXME: The deepcopy has been removed: copy.deepcopy(self.main_builder.connect_signals)
+ self.main_builder.prev_connect_signals = self.main_builder.connect_signals
+
+ def patched_connect_signals(*a, **k):
+ raise RuntimeError(
+ 'In order to connect signals to this GtkBuilder instance please use '
+ '"component.get(\'MainWindow\').connect_signals()"'
+ )
+
+ self.main_builder.connect_signals = patched_connect_signals
+
+ # Get Gtk Builder files Main Window, New release dialog, and Tabs.
+ ui_filenames = [
+ 'main_window.ui',
+ 'main_window.new_release.ui',
+ 'main_window.tabs.ui',
+ 'main_window.tabs.menu_file.ui',
+ 'main_window.tabs.menu_peer.ui',
+ ]
+ for filename in ui_filenames:
+ self.main_builder.add_from_file(
+ resource_filename(__package__, os.path.join('glade', filename))
+ )
+
+ self.window = self.main_builder.get_object('main_window')
+ self.window.set_icon(get_deluge_icon())
+ self.tabsbar_pane = self.main_builder.get_object('tabsbar_pane')
+ self.tabsbar_torrent_info = self.main_builder.get_object('torrent_info')
+ self.sidebar_pane = self.main_builder.get_object('sidebar_pane')
+
+ # Keep a list of components to pause and resume when changing window state.
+ self.child_components = ['TorrentView', 'StatusBar', 'TorrentDetails']
+
+ # Load the window state
+ self.load_window_state()
+
+ # Keep track of window minimization state so we don't update UI when it is minimized.
+ self.is_minimized = False
+ self.restart = False
+
+ self.window.drag_dest_set(
+ Gtk.DestDefaults.ALL,
+ [Gtk.TargetEntry.new(target='text/uri-list', flags=0, info=80)],
+ DragAction.COPY,
+ )
+
+ # Connect events
+ self.window.connect('window-state-event', self.on_window_state_event)
+ self.window.connect('configure-event', self.on_window_configure_event)
+ self.window.connect('delete-event', self.on_window_delete_event)
+ self.window.connect('drag-data-received', self.on_drag_data_received_event)
+ self.window.connect('notify::is-active', self.on_focus)
+ self.tabsbar_pane.connect(
+ 'notify::position', self.on_tabsbar_pane_position_event
+ )
+ self.sidebar_pane.connect(
+ 'notify::position', self.on_sidebar_pane_position_event
+ )
+ self.window.connect('draw', self.on_expose_event)
+
+ self.config.register_set_function(
+ 'show_rate_in_title', self._on_set_show_rate_in_title, apply_now=False
+ )
+
+ client.register_event_handler(
+ 'NewVersionAvailableEvent', self.on_newversionavailable_event
+ )
+
+ self.previous_clipboard_text = ''
+ self.first_run = True
+
+ def connect_signals(self, mapping_or_class):
+ self.gtk_builder_signals_holder.connect_signals(mapping_or_class)
+
+ def first_show(self):
+ self.main_builder.prev_connect_signals(self.gtk_builder_signals_holder)
+ self.sidebar_pane.set_position(self.config['sidebar_position'])
+ self.tabsbar_pane.set_position(self.config['tabsbar_position'])
+
+ if not (
+ self.config['start_in_tray'] and self.config['enable_system_tray']
+ ) and not self.window.get_property('visible'):
+ log.debug('Showing window')
+ self.show()
+
+ while Gtk.events_pending():
+ Gtk.main_iteration()
+
+ def show(self):
+ component.resume(self.child_components)
+ self.window.show()
+
+ def hide(self):
+ component.get('TorrentView').save_state()
+ component.pause(self.child_components)
+ self.save_position()
+ self.window.hide()
+
+ def present(self):
+ def restore():
+ # Restore the proper x,y coords for the window prior to showing it
+ component.resume(self.child_components)
+ timestamp = self.get_timestamp()
+ if windowing('X11'):
+ # Use present with X11 set_user_time since
+ # present_with_time is inconsistent.
+ self.window.present()
+ self.window.get_window().set_user_time(timestamp)
+ else:
+ self.window.present_with_time(timestamp)
+ self.load_window_state()
+
+ if self.config['lock_tray'] and not self.visible():
+ dialog = PasswordDialog(_('Enter your password to show Deluge...'))
+
+ def on_dialog_response(response_id):
+ if response_id == Gtk.ResponseType.OK:
+ if (
+ self.config['tray_password']
+ == sha(decode_bytes(dialog.get_password()).encode()).hexdigest()
+ ):
+ restore()
+
+ dialog.run().addCallback(on_dialog_response)
+ else:
+ restore()
+
+ def get_timestamp(self):
+ """Returns the timestamp for the windowing server."""
+ timestamp = 0
+ gdk_window = self.window.get_window()
+ if GdkX11 and isinstance(gdk_window, GdkX11.X11Window):
+ timestamp = GdkX11.x11_get_server_time(gdk_window)
+ return timestamp
+
+ def active(self):
+ """Returns True if the window is active, False if not."""
+ return self.window.is_active()
+
+ def visible(self):
+ """Returns True if window is visible, False if not."""
+ return self.window.get_visible()
+
+ def get_builder(self):
+ """Returns a reference to the main window GTK builder object."""
+ return self.main_builder
+
+ def quit(self, shutdown=False, restart=False): # noqa: A003 python builtin
+ """Quits the GtkUI application.
+
+ Args:
+ shutdown (bool): Whether or not to shutdown the daemon as well.
+ restart (bool): Whether or not to restart the application after closing.
+
+ """
+
+ def quit_gtkui():
+ def stop_gtk_reactor(result=None):
+ self.restart = restart
+ try:
+ reactor.callLater(0, reactor.fireSystemEvent, 'gtkui_close')
+ except ReactorNotRunning:
+ log.debug('Attempted to stop the reactor but it is not running...')
+
+ if shutdown:
+ client.daemon.shutdown().addCallback(stop_gtk_reactor)
+ elif not client.is_standalone() and client.connected():
+ client.disconnect().addCallback(stop_gtk_reactor)
+ else:
+ stop_gtk_reactor()
+
+ if self.config['lock_tray'] and not self.visible():
+ dialog = PasswordDialog(_('Enter your password to Quit Deluge...'))
+
+ def on_dialog_response(response_id):
+ if response_id == Gtk.ResponseType.OK:
+ if (
+ self.config['tray_password']
+ == sha(decode_bytes(dialog.get_password()).encode()).hexdigest()
+ ):
+ quit_gtkui()
+
+ dialog.run().addCallback(on_dialog_response)
+ else:
+ quit_gtkui()
+
+ def load_window_state(self):
+ if (
+ self.config['window_x_pos'] == -32000
+ or self.config['window_x_pos'] == -32000
+ ):
+ self.config['window_x_pos'] = self.config['window_y_pos'] = 0
+
+ self.window.move(self.config['window_x_pos'], self.config['window_y_pos'])
+ self.window.resize(self.config['window_width'], self.config['window_height'])
+ if self.config['window_maximized']:
+ self.window.maximize()
+
+ def save_position(self):
+ self.config['window_maximized'] = self.window.props.is_maximized
+ if not self.config['window_maximized'] and self.visible():
+ (
+ self.config['window_x_pos'],
+ self.config['window_y_pos'],
+ ) = self.window.get_position()
+ (
+ self.config['window_width'],
+ self.config['window_height'],
+ ) = self.window.get_size()
+
+ def on_window_configure_event(self, widget, event):
+ self.save_position()
+
+ def on_window_state_event(self, widget, event):
+ if event.changed_mask & WindowState.ICONIFIED:
+ if event.new_window_state & WindowState.ICONIFIED:
+ log.debug('MainWindow is minimized..')
+ component.get('TorrentView').save_state()
+ component.pause(self.child_components)
+ self.is_minimized = True
+ else:
+ log.debug('MainWindow is not minimized..')
+ component.resume(self.child_components)
+ self.is_minimized = False
+ return False
+
+ def on_window_delete_event(self, widget, event):
+ if self.config['close_to_tray'] and self.config['enable_system_tray']:
+ self.hide()
+ else:
+ self.quit()
+
+ return True
+
+ def on_tabsbar_pane_position_event(self, obj, param):
+ self.config['tabsbar_position'] = self.tabsbar_pane.get_position()
+
+ def on_sidebar_pane_position_event(self, obj, param):
+ self.config['sidebar_position'] = self.sidebar_pane.get_position()
+
+ def on_drag_data_received_event(
+ self, widget, drag_context, x, y, selection_data, info, timestamp
+ ):
+ log.debug('Selection(s) dropped on main window %s', selection_data.get_text())
+ if selection_data.get_uris():
+ process_args(selection_data.get_uris())
+ else:
+ process_args(selection_data.get_text().split())
+ drag_context.finish(True, True, timestamp)
+
+ def on_expose_event(self, widget, event):
+ component.get('SystemTray').blink(False)
+
+ def on_focus(self, window, param):
+ if window.props.is_active and not self.first_run and self.config['detect_urls']:
+ text = get_clipboard_text()
+ if text == self.previous_clipboard_text:
+ return
+ self.previous_clipboard_text = text
+ if text and (
+ (is_url(text) and text.endswith('.torrent'))
+ or is_magnet(text)
+ and not component.get('MenuBar').magnet_copied()
+ ):
+ component.get('AddTorrentDialog').show()
+ component.get('AddTorrentDialog').on_button_url_clicked(window)
+ self.first_run = False
+
+ def stop(self):
+ self.window.set_title('Deluge')
+
+ def update(self):
+ # Update the window title
+ def _on_get_session_status(status):
+ download_rate = fspeed(
+ status['payload_download_rate'], precision=0, shortform=True
+ )
+ upload_rate = fspeed(
+ status['payload_upload_rate'], precision=0, shortform=True
+ )
+ self.window.set_title(
+ _('D: {download_rate} U: {upload_rate} - Deluge').format(
+ download_rate=download_rate, upload_rate=upload_rate
+ )
+ )
+
+ if self.config['show_rate_in_title']:
+ client.core.get_session_status(
+ ['payload_download_rate', 'payload_upload_rate']
+ ).addCallback(_on_get_session_status)
+
+ def _on_set_show_rate_in_title(self, key, value):
+ if value:
+ self.update()
+ else:
+ self.window.set_title(_('Deluge'))
+
+ def on_newversionavailable_event(self, new_version):
+ if self.config['show_new_releases']:
+ from .new_release_dialog import NewReleaseDialog
+
+ reactor.callLater(5.0, NewReleaseDialog().show, new_version)
+
+ def is_on_active_workspace(self):
+ """Determines if MainWindow is on the active workspace.
+
+ Returns:
+ bool: True if on active workspace (or wnck module not available), otherwise False.
+
+ """
+
+ if Wnck:
+ self.screen.force_update()
+ win = Wnck.Window.get(self.window.get_window().get_xid())
+ if win:
+ active_wksp = win.get_screen().get_active_workspace()
+ if active_wksp:
+ return win.is_on_workspace(active_wksp)
+ return False
+ return True
diff --git a/deluge/ui/gtk3/menubar.py b/deluge/ui/gtk3/menubar.py
new file mode 100644
index 0000000..9165320
--- /dev/null
+++ b/deluge/ui/gtk3/menubar.py
@@ -0,0 +1,640 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+import logging
+import os.path
+
+from gi.repository import Gtk
+
+import deluge.common
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+from .dialogs import CopyMagnetDialog, ErrorDialog, OtherDialog
+from .path_chooser import PathChooser
+
+log = logging.getLogger(__name__)
+
+default_main_window_accelmap = {
+ '<Deluge-MainWindow>/File/Add Torrent': '<Primary>o',
+ '<Deluge-MainWindow>/File/Create Torrent': '<Primary>n',
+ '<Deluge-MainWindow>/File/Quit & Shutdown Daemon': '<Primary><Shift>q',
+ '<Deluge-MainWindow>/File/Quit': '<Primary>q',
+ '<Deluge-MainWindow>/Edit/Preferences': '<Primary>p',
+ '<Deluge-MainWindow>/Edit/Connection Manager': '<Primary>m',
+ '<Deluge-MainWindow>/View/Find ...': '<Primary>f',
+ '<Deluge-MainWindow>/Help/FAQ': 'F1',
+}
+
+
+class MenuBar(component.Component):
+ def __init__(self):
+ log.debug('MenuBar init..')
+ component.Component.__init__(self, 'MenuBar')
+ self.mainwindow = component.get('MainWindow')
+ self.main_builder = self.mainwindow.get_builder()
+ self.config = ConfigManager('gtk3ui.conf')
+ self._magnet_copied = False
+
+ self.builder = Gtk.Builder()
+ # Get the torrent menu from the gtk builder file
+ self.builder.add_from_file(
+ deluge.common.resource_filename(
+ __package__, os.path.join('glade', 'torrent_menu.ui')
+ )
+ )
+ # Get the torrent options menu from the gtk builder file
+ self.builder.add_from_file(
+ deluge.common.resource_filename(
+ __package__, os.path.join('glade', 'torrent_menu.options.ui')
+ )
+ )
+ # Get the torrent queue menu from the gtk builder file
+ self.builder.add_from_file(
+ deluge.common.resource_filename(
+ __package__, os.path.join('glade', 'torrent_menu.queue.ui')
+ )
+ )
+
+ # Attach queue torrent menu
+ torrent_queue_menu = self.builder.get_object('queue_torrent_menu')
+ self.builder.get_object('menuitem_queue').set_submenu(torrent_queue_menu)
+ # Attach options torrent menu
+ torrent_options_menu = self.builder.get_object('options_torrent_menu')
+ self.builder.get_object('menuitem_options').set_submenu(torrent_options_menu)
+
+ self.builder.get_object('download-limit-image').set_from_file(
+ deluge.common.get_pixmap('downloading16.png')
+ )
+ self.builder.get_object('upload-limit-image').set_from_file(
+ deluge.common.get_pixmap('seeding16.png')
+ )
+
+ for menuitem in (
+ 'menuitem_down_speed',
+ 'menuitem_up_speed',
+ 'menuitem_max_connections',
+ 'menuitem_upload_slots',
+ ):
+ submenu = Gtk.Menu()
+ item = Gtk.MenuItem.new_with_label(_('Set Unlimited'))
+ item.set_name(menuitem)
+ item.connect('activate', self.on_menuitem_set_unlimited)
+ submenu.append(item)
+ item = Gtk.MenuItem.new_with_label(_('Other...'))
+ item.set_name(menuitem)
+ item.connect('activate', self.on_menuitem_set_other)
+ submenu.append(item)
+ submenu.show_all()
+ self.builder.get_object(menuitem).set_submenu(submenu)
+
+ submenu = Gtk.Menu()
+ item = Gtk.MenuItem.new_with_label(_('On'))
+ item.connect('activate', self.on_menuitem_set_automanaged_on)
+ submenu.append(item)
+ item = Gtk.MenuItem.new_with_label(_('Off'))
+ item.connect('activate', self.on_menuitem_set_automanaged_off)
+ submenu.append(item)
+ submenu.show_all()
+ self.builder.get_object('menuitem_auto_managed').set_submenu(submenu)
+
+ submenu = Gtk.Menu()
+ item = Gtk.MenuItem.new_with_label(_('Disable'))
+ item.connect('activate', self.on_menuitem_set_stop_seed_at_ratio_disable)
+ submenu.append(item)
+ item = Gtk.MenuItem.new_with_label(_('Enable...'))
+ item.set_name('menuitem_stop_seed_at_ratio')
+ item.connect('activate', self.on_menuitem_set_other)
+ submenu.append(item)
+ submenu.show_all()
+ self.builder.get_object('menuitem_stop_seed_at_ratio').set_submenu(submenu)
+
+ self.torrentmenu = self.builder.get_object('torrent_menu')
+ self.menu_torrent = self.main_builder.get_object('menu_torrent')
+
+ # Attach the torrent_menu to the Torrent file menu
+ self.menu_torrent.set_submenu(self.torrentmenu)
+
+ # Set keyboard shortcuts
+ for accel_path, accelerator in default_main_window_accelmap.items():
+ accel_key, accel_mods = Gtk.accelerator_parse(accelerator)
+ Gtk.AccelMap.change_entry(accel_path, accel_key, accel_mods, True)
+
+ # Make sure the view menuitems are showing the correct active state
+ self.main_builder.get_object('menuitem_toolbar').set_active(
+ self.config['show_toolbar']
+ )
+ self.main_builder.get_object('menuitem_sidebar').set_active(
+ self.config['show_sidebar']
+ )
+ self.main_builder.get_object('menuitem_statusbar').set_active(
+ self.config['show_statusbar']
+ )
+ self.main_builder.get_object('sidebar_show_zero').set_active(
+ self.config['sidebar_show_zero']
+ )
+ self.main_builder.get_object('sidebar_show_trackers').set_active(
+ self.config['sidebar_show_trackers']
+ )
+ self.main_builder.get_object('sidebar_show_owners').set_active(
+ self.config['sidebar_show_owners']
+ )
+
+ # Connect main window Signals #
+ self.mainwindow.connect_signals(self)
+
+ # Connect menubar signals
+ self.builder.connect_signals(self)
+
+ self.change_sensitivity = ['menuitem_addtorrent']
+
+ def magnet_copied(self):
+ """
+ lets the caller know whether a magnet was copied internally
+
+ the `mainwindow` checks every time the data in the clipboard,
+ so it will automatically open the AddTorrentURL dialog in case it
+ contains a valid link (URL to a torrent or a magnet URI).
+
+ """
+ val = self._magnet_copied
+ self._magnet_copied = False
+ return val
+
+ def start(self):
+ for widget in self.change_sensitivity:
+ self.main_builder.get_object(widget).set_sensitive(True)
+
+ # Only show open_folder menuitem and separator if connected to a localhost daemon.
+ localhost_items = ['menuitem_open_folder', 'separator4']
+ if client.is_localhost():
+ for widget in localhost_items:
+ self.builder.get_object(widget).show()
+ self.builder.get_object(widget).set_no_show_all(False)
+ else:
+ for widget in localhost_items:
+ self.builder.get_object(widget).hide()
+ self.builder.get_object(widget).set_no_show_all(True)
+
+ self.main_builder.get_object('separatormenuitem').set_visible(
+ not self.config['standalone']
+ )
+ self.main_builder.get_object('menuitem_quitdaemon').set_visible(
+ not self.config['standalone']
+ )
+ self.main_builder.get_object('menuitem_connectionmanager').set_visible(
+ not self.config['standalone']
+ )
+
+ # Show the Torrent menu because we're connected to a host
+ self.menu_torrent.show()
+
+ if client.get_auth_level() == deluge.common.AUTH_LEVEL_ADMIN:
+ # Get known accounts to allow changing ownership
+ client.core.get_known_accounts().addCallback(
+ self._on_known_accounts
+ ).addErrback(self._on_known_accounts_fail)
+
+ client.register_event_handler(
+ 'TorrentStateChangedEvent', self.on_torrentstatechanged_event
+ )
+ client.register_event_handler(
+ 'TorrentResumedEvent', self.on_torrentresumed_event
+ )
+ client.register_event_handler('SessionPausedEvent', self.on_sessionpaused_event)
+ client.register_event_handler(
+ 'SessionResumedEvent', self.on_sessionresumed_event
+ )
+
+ def stop(self):
+ log.debug('MenuBar stopping')
+
+ client.deregister_event_handler(
+ 'TorrentStateChangedEvent', self.on_torrentstatechanged_event
+ )
+ client.deregister_event_handler(
+ 'TorrentResumedEvent', self.on_torrentresumed_event
+ )
+ client.deregister_event_handler(
+ 'SessionPausedEvent', self.on_sessionpaused_event
+ )
+ client.deregister_event_handler(
+ 'SessionResumedEvent', self.on_sessionresumed_event
+ )
+
+ for widget in self.change_sensitivity:
+ self.main_builder.get_object(widget).set_sensitive(False)
+
+ # Hide the Torrent menu
+ self.menu_torrent.hide()
+
+ self.main_builder.get_object('separatormenuitem').hide()
+ self.main_builder.get_object('menuitem_quitdaemon').hide()
+
+ def update_menu(self):
+ selected = component.get('TorrentView').get_selected_torrents()
+ if not selected or len(selected) == 0:
+ # No torrent is selected. Disable the 'Torrents' menu
+ self.menu_torrent.set_sensitive(False)
+ return
+
+ self.menu_torrent.set_sensitive(True)
+ # XXX: Should also update Pause/Resume/Remove menuitems.
+ # Any better way than duplicating toolbar.py:update_buttons in here?
+
+ def add_torrentmenu_separator(self):
+ sep = Gtk.SeparatorMenuItem()
+ self.torrentmenu.append(sep)
+ sep.show()
+ return sep
+
+ # Callbacks #
+ def on_torrentstatechanged_event(self, torrent_id, state):
+ if state == 'Paused':
+ self.update_menu()
+
+ def on_torrentresumed_event(self, torrent_id):
+ self.update_menu()
+
+ def on_sessionpaused_event(self):
+ self.update_menu()
+
+ def on_sessionresumed_event(self):
+ self.update_menu()
+
+ # File Menu #
+ def on_menuitem_addtorrent_activate(self, data=None):
+ log.debug('on_menuitem_addtorrent_activate')
+ component.get('AddTorrentDialog').show()
+
+ def on_menuitem_createtorrent_activate(self, data=None):
+ log.debug('on_menuitem_createtorrent_activate')
+ from .createtorrentdialog import CreateTorrentDialog
+
+ CreateTorrentDialog().show()
+
+ def on_menuitem_quitdaemon_activate(self, data=None):
+ log.debug('on_menuitem_quitdaemon_activate')
+ self.mainwindow.quit(shutdown=True)
+
+ def on_menuitem_quit_activate(self, data=None):
+ log.debug('on_menuitem_quit_activate')
+ self.mainwindow.quit()
+
+ # Edit Menu #
+ def on_menuitem_preferences_activate(self, data=None):
+ log.debug('on_menuitem_preferences_activate')
+ component.get('Preferences').show()
+
+ def on_menuitem_connectionmanager_activate(self, data=None):
+ log.debug('on_menuitem_connectionmanager_activate')
+ component.get('ConnectionManager').show()
+
+ # Torrent Menu #
+ def on_menuitem_pause_activate(self, data=None):
+ log.debug('on_menuitem_pause_activate')
+ client.core.pause_torrents(component.get('TorrentView').get_selected_torrents())
+
+ def on_menuitem_resume_activate(self, data=None):
+ log.debug('on_menuitem_resume_activate')
+ client.core.resume_torrents(
+ component.get('TorrentView').get_selected_torrents()
+ )
+
+ def on_menuitem_copymagnet_activate(self, data=None):
+ log.debug('on_menuitem_copymagnet_activate')
+ torrent_ids = component.get('TorrentView').get_selected_torrents()
+ if torrent_ids:
+
+ def _on_magnet_uri(magnet_uri):
+ def update_copied(response_id):
+ if dialog.copied:
+ self._magnet_copied = True
+
+ dialog = CopyMagnetDialog(magnet_uri)
+ dialog.run().addCallback(update_copied)
+
+ client.core.get_magnet_uri(torrent_ids[0]).addCallback(_on_magnet_uri)
+
+ def on_menuitem_updatetracker_activate(self, data=None):
+ log.debug('on_menuitem_updatetracker_activate')
+ client.core.force_reannounce(
+ component.get('TorrentView').get_selected_torrents()
+ )
+
+ def on_menuitem_edittrackers_activate(self, data=None):
+ log.debug('on_menuitem_edittrackers_activate')
+ from .edittrackersdialog import EditTrackersDialog
+
+ dialog = EditTrackersDialog(
+ component.get('TorrentView').get_selected_torrent(), self.mainwindow.window
+ )
+ dialog.run()
+
+ def on_menuitem_remove_activate(self, data=None):
+ log.debug('on_menuitem_remove_activate')
+ torrent_ids = component.get('TorrentView').get_selected_torrents()
+ if torrent_ids:
+ from .removetorrentdialog import RemoveTorrentDialog
+
+ RemoveTorrentDialog(torrent_ids).run()
+
+ def on_menuitem_recheck_activate(self, data=None):
+ log.debug('on_menuitem_recheck_activate')
+ client.core.force_recheck(component.get('TorrentView').get_selected_torrents())
+
+ def on_menuitem_open_folder_activate(self, data=None):
+ log.debug('on_menuitem_open_folder')
+
+ def _on_torrent_status(status):
+ timestamp = component.get('MainWindow').get_timestamp()
+ path = os.path.join(
+ status['download_location'], status['files'][0]['path'].split('/')[0]
+ )
+ deluge.common.show_file(path, timestamp=timestamp)
+
+ for torrent_id in component.get('TorrentView').get_selected_torrents():
+ component.get('SessionProxy').get_torrent_status(
+ torrent_id, ['download_location', 'files']
+ ).addCallback(_on_torrent_status)
+
+ def on_menuitem_move_activate(self, data=None):
+ log.debug('on_menuitem_move_activate')
+ component.get('SessionProxy').get_torrent_status(
+ component.get('TorrentView').get_selected_torrent(), ['download_location']
+ ).addCallback(self.show_move_storage_dialog)
+
+ def show_move_storage_dialog(self, status):
+ log.debug('show_move_storage_dialog')
+ builder = Gtk.Builder()
+ builder.add_from_file(
+ deluge.common.resource_filename(
+ __package__, os.path.join('glade', 'move_storage_dialog.ui')
+ )
+ )
+ # Keep it referenced:
+ # https://bugzilla.gnome.org/show_bug.cgi?id=546802
+ self.move_storage_dialog = builder.get_object('move_storage_dialog')
+ self.move_storage_dialog.set_transient_for(self.mainwindow.window)
+ self.move_storage_dialog_hbox = builder.get_object('hbox_entry')
+ self.move_storage_path_chooser = PathChooser(
+ 'move_completed_paths_list', self.move_storage_dialog
+ )
+ self.move_storage_dialog_hbox.add(self.move_storage_path_chooser)
+ self.move_storage_dialog_hbox.show_all()
+ self.move_storage_path_chooser.set_text(status['download_location'])
+
+ def on_dialog_response_event(widget, response_id):
+ def on_core_result(result):
+ # Delete references
+ self.move_storage_dialog.hide()
+ del self.move_storage_dialog
+ del self.move_storage_dialog_hbox
+
+ if response_id == Gtk.ResponseType.CANCEL:
+ on_core_result(None)
+
+ if response_id == Gtk.ResponseType.OK:
+ log.debug(
+ 'Moving torrents to %s', self.move_storage_path_chooser.get_text()
+ )
+ path = self.move_storage_path_chooser.get_text()
+ client.core.move_storage(
+ component.get('TorrentView').get_selected_torrents(), path
+ ).addCallback(on_core_result)
+
+ self.move_storage_dialog.connect('response', on_dialog_response_event)
+ self.move_storage_dialog.show()
+
+ def on_menuitem_queue_top_activate(self, value):
+ log.debug('on_menuitem_queue_top_activate')
+ client.core.queue_top(component.get('TorrentView').get_selected_torrents())
+
+ def on_menuitem_queue_up_activate(self, value):
+ log.debug('on_menuitem_queue_up_activate')
+ client.core.queue_up(component.get('TorrentView').get_selected_torrents())
+
+ def on_menuitem_queue_down_activate(self, value):
+ log.debug('on_menuitem_queue_down_activate')
+ client.core.queue_down(component.get('TorrentView').get_selected_torrents())
+
+ def on_menuitem_queue_bottom_activate(self, value):
+ log.debug('on_menuitem_queue_bottom_activate')
+ client.core.queue_bottom(component.get('TorrentView').get_selected_torrents())
+
+ # View Menu #
+ def on_menuitem_toolbar_toggled(self, value):
+ log.debug('on_menuitem_toolbar_toggled')
+ component.get('ToolBar').visible(value.get_active())
+
+ def on_menuitem_sidebar_toggled(self, value):
+ log.debug('on_menuitem_sidebar_toggled')
+ component.get('SideBar').visible(value.get_active())
+
+ def on_menuitem_statusbar_toggled(self, value):
+ log.debug('on_menuitem_statusbar_toggled')
+ component.get('StatusBar').visible(value.get_active())
+
+ # Help Menu #
+ def on_menuitem_homepage_activate(self, data=None):
+ log.debug('on_menuitem_homepage_activate')
+ deluge.common.open_url_in_browser('http://deluge-torrent.org')
+
+ def on_menuitem_faq_activate(self, data=None):
+ log.debug('on_menuitem_faq_activate')
+ deluge.common.open_url_in_browser('http://dev.deluge-torrent.org/wiki/Faq')
+
+ def on_menuitem_community_activate(self, data=None):
+ log.debug('on_menuitem_community_activate')
+ deluge.common.open_url_in_browser('http://forum.deluge-torrent.org/')
+
+ def on_menuitem_about_activate(self, data=None):
+ log.debug('on_menuitem_about_activate')
+ from .aboutdialog import AboutDialog
+
+ AboutDialog().run()
+
+ def on_menuitem_set_unlimited(self, widget):
+ log.debug('widget name: %s', widget.get_name())
+ funcs = {
+ 'menuitem_down_speed': 'max_download_speed',
+ 'menuitem_up_speed': 'max_upload_speed',
+ 'menuitem_max_connections': 'max_connections',
+ 'menuitem_upload_slots': 'max_upload_slots',
+ }
+ if widget.get_name() in funcs:
+ torrent_ids = component.get('TorrentView').get_selected_torrents()
+ client.core.set_torrent_options(torrent_ids, {funcs[widget.get_name()]: -1})
+
+ def on_menuitem_set_other(self, widget):
+ log.debug('widget name: %s', widget.get_name())
+ status_map = {
+ 'menuitem_down_speed': ['max_download_speed', 'max_download_speed'],
+ 'menuitem_up_speed': ['max_upload_speed', 'max_upload_speed'],
+ 'menuitem_max_connections': ['max_connections', 'max_connections_global'],
+ 'menuitem_upload_slots': ['max_upload_slots', 'max_upload_slots_global'],
+ 'menuitem_stop_seed_at_ratio': ['stop_ratio', 'stop_seed_ratio'],
+ }
+
+ other_dialog_info = {
+ 'menuitem_down_speed': [
+ _('Download Speed Limit'),
+ _('Set the maximum download speed'),
+ _('KiB/s'),
+ 'downloading.svg',
+ ],
+ 'menuitem_up_speed': [
+ _('Upload Speed Limit'),
+ _('Set the maximum upload speed'),
+ _('KiB/s'),
+ 'seeding.svg',
+ ],
+ 'menuitem_max_connections': [
+ _('Incoming Connections'),
+ _('Set the maximum incoming connections'),
+ '',
+ 'network-transmit-receive-symbolic',
+ ],
+ 'menuitem_upload_slots': [
+ _('Peer Upload Slots'),
+ _('Set the maximum upload slots'),
+ '',
+ 'view-sort-descending-symbolic',
+ ],
+ 'menuitem_stop_seed_at_ratio': [
+ _('Stop Seed At Ratio'),
+ 'Stop torrent seeding at ratio',
+ '',
+ None,
+ ],
+ }
+
+ core_key = status_map[widget.get_name()][0]
+ core_key_global = status_map[widget.get_name()][1]
+
+ def _on_torrent_status(status):
+ other_dialog = other_dialog_info[widget.get_name()]
+ # Add the default using status value
+ if status:
+ other_dialog.append(status[core_key_global])
+
+ def set_value(value):
+ if value is not None:
+ if value == 0:
+ value += -1
+ options = {core_key: value}
+ if core_key == 'stop_ratio':
+ options['stop_at_ratio'] = True
+ client.core.set_torrent_options(torrent_ids, options)
+
+ dialog = OtherDialog(*other_dialog)
+ dialog.run().addCallback(set_value)
+
+ torrent_ids = component.get('TorrentView').get_selected_torrents()
+ if len(torrent_ids) == 1:
+ core_key_global = core_key
+ d = component.get('SessionProxy').get_torrent_status(
+ torrent_ids[0], [core_key]
+ )
+ else:
+ d = client.core.get_config_values([core_key_global])
+ d.addCallback(_on_torrent_status)
+
+ def on_menuitem_set_automanaged_on(self, widget):
+ client.core.set_torrent_options(
+ component.get('TorrentView').get_selected_torrents(), {'auto_managed': True}
+ )
+
+ def on_menuitem_set_automanaged_off(self, widget):
+ client.core.set_torrent_options(
+ component.get('TorrentView').get_selected_torrents(),
+ {'auto_managed': False},
+ )
+
+ def on_menuitem_set_stop_seed_at_ratio_disable(self, widget):
+ client.core.set_torrent_options(
+ component.get('TorrentView').get_selected_torrents(),
+ {'stop_at_ratio': False},
+ )
+
+ def on_menuitem_sidebar_zero_toggled(self, widget):
+ self.config['sidebar_show_zero'] = widget.get_active()
+ component.get('FilterTreeView').update()
+
+ def on_menuitem_sidebar_trackers_toggled(self, widget):
+ self.config['sidebar_show_trackers'] = widget.get_active()
+ component.get('FilterTreeView').update()
+
+ def on_menuitem_sidebar_owners_toggled(self, widget):
+ self.config['sidebar_show_owners'] = widget.get_active()
+ component.get('FilterTreeView').update()
+
+ def _on_known_accounts(self, known_accounts):
+ menuitem_change_owner = self.builder.get_object('menuitem_change_owner')
+ if len(known_accounts) <= 1:
+ menuitem_change_owner.set_visible(False)
+ return
+
+ self.users_menu = Gtk.Menu()
+ self.users_menu_items = {}
+ menu_group = None
+
+ for account in known_accounts:
+ username = account['username']
+ item = Gtk.RadioMenuItem.new_with_label(menu_group, username)
+ menu_group = item.get_group()
+ item.connect('toggled', self._on_change_owner_toggled, username)
+ self.users_menu_items[username] = item
+ self.users_menu.append(item)
+
+ self.users_menu.show_all()
+ menuitem_change_owner.set_submenu(self.users_menu)
+ menuitem_change_owner.set_visible(True)
+
+ def _on_known_accounts_fail(self, reason):
+ self.builder.get_object('menuitem_change_owner').set_visible(False)
+
+ def _on_change_owner_submenu_active(self, widget):
+ log.debug('_on_change_owner_submenu_active')
+ selected = component.get('TorrentView').get_selected_torrents()
+ if len(selected) > 1:
+ self.users_menu_items[None].set_active(True)
+ return
+
+ torrent_owner = component.get('TorrentView').get_torrent_status(selected[0])[
+ 'owner'
+ ]
+ for username, item in self.users_menu_items.items():
+ item.set_active(username == torrent_owner)
+
+ def _on_change_owner_toggled(self, widget, username):
+ log.debug('_on_change_owner_toggled')
+ update_torrents = []
+ selected = component.get('TorrentView').get_selected_torrents()
+ for torrent_id in selected:
+ torrent_status = component.get('TorrentView').get_torrent_status(torrent_id)
+ if torrent_status['owner'] != username:
+ update_torrents.append(torrent_id)
+
+ if update_torrents:
+ log.debug('Setting torrent owner "%s" on %s', username, update_torrents)
+
+ def failed_change_owner(failure):
+ ErrorDialog(
+ _('Ownership Change Error'),
+ _('There was an error while trying changing ownership.'),
+ self.mainwindow.window,
+ details=failure.value.logable(),
+ ).run()
+
+ client.core.set_torrent_options(
+ update_torrents, {'owner': username}
+ ).addErrback(failed_change_owner)
diff --git a/deluge/ui/gtk3/menubar_osx.py b/deluge/ui/gtk3/menubar_osx.py
new file mode 100644
index 0000000..7f846dc
--- /dev/null
+++ b/deluge/ui/gtk3/menubar_osx.py
@@ -0,0 +1,68 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+from gi.repository import Gtk
+
+from deluge.configmanager import ConfigManager
+
+macos_main_window_accelmap = {
+ '<Deluge-MainWindow>/File/Add Torrent': '<Meta>o',
+ '<Deluge-MainWindow>/File/Create Torrent': '<Meta>n',
+ '<Deluge-MainWindow>/File/Quit & Shutdown Daemon': '<Meta><Shift>q',
+ '<Deluge-MainWindow>/File/Quit': '<Meta>q',
+ '<Deluge-MainWindow>/Edit/Preferences': '<Meta>comma',
+ '<Deluge-MainWindow>/Edit/Connection Manager': '<Meta>m',
+ '<Deluge-MainWindow>/View/Find ...': '<Meta>f',
+ '<Deluge-MainWindow>/Help/FAQ': '<Meta>question',
+}
+
+
+def menubar_osx(gtkui, osxapp):
+ # Change key shortcuts
+ for accel_path, accelerator in macos_main_window_accelmap.items():
+ accel_key, accel_mods = Gtk.accelerator_parse(accelerator)
+ Gtk.AccelMap.change_entry(accel_path, accel_key, accel_mods, True)
+
+ main_builder = gtkui.mainwindow.get_builder()
+ menubar = main_builder.get_object('menubar')
+
+ config = ConfigManager('gtk3ui.conf')
+ file_menu = main_builder.get_object('menu_file').get_submenu()
+ file_items = file_menu.get_children()
+ quit_all_item = file_items[3]
+
+ for item in range(2, len(file_items)): # remove quits
+ file_menu.remove(file_items[item])
+
+ menu_widget = main_builder.get_object('menu_edit')
+ edit_menu = menu_widget.get_submenu()
+ edit_items = edit_menu.get_children()
+ pref_item = edit_items[0]
+ edit_menu.remove(pref_item)
+
+ conn_item = edit_items[1]
+ edit_menu.remove(conn_item)
+
+ menubar.remove(menu_widget)
+
+ help_menu = main_builder.get_object('menu_help').get_submenu()
+ help_items = help_menu.get_children()
+ about_item = help_items[4]
+ help_menu.remove(about_item)
+ help_menu.remove(help_items[3]) # separator
+
+ menubar.hide()
+ osxapp.set_menu_bar(menubar)
+ # populate app menu
+ osxapp.insert_app_menu_item(about_item, 0)
+ osxapp.insert_app_menu_item(Gtk.SeparatorMenuItem(), 1)
+ osxapp.insert_app_menu_item(pref_item, 2)
+ if not config['standalone']:
+ osxapp.insert_app_menu_item(conn_item, 3)
+ if quit_all_item.get_visible():
+ osxapp.insert_app_menu_item(Gtk.SeparatorMenuItem(), 4)
+ osxapp.insert_app_menu_item(quit_all_item, 5)
diff --git a/deluge/ui/gtk3/new_release_dialog.py b/deluge/ui/gtk3/new_release_dialog.py
new file mode 100644
index 0000000..a635bd2
--- /dev/null
+++ b/deluge/ui/gtk3/new_release_dialog.py
@@ -0,0 +1,70 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from gi.repository.Gtk import IconSize
+
+import deluge.common
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+
+class NewReleaseDialog:
+ def __init__(self):
+ pass
+
+ def show(self, available_version):
+ self.config = ConfigManager('gtk3ui.conf')
+ main_builder = component.get('MainWindow').get_builder()
+ self.dialog = main_builder.get_object('new_release_dialog')
+ # Set the version labels
+ if deluge.common.windows_check() or deluge.common.osx_check():
+ main_builder.get_object('image_new_release').set_from_file(
+ deluge.common.get_pixmap('deluge16.png')
+ )
+ else:
+ main_builder.get_object('image_new_release').set_from_icon_name(
+ 'deluge', IconSize.LARGE_TOOLBAR
+ )
+ main_builder.get_object('label_available_version').set_text(available_version)
+ main_builder.get_object('label_client_version').set_text(
+ deluge.common.get_version()
+ )
+ self.chk_not_show_dialog = main_builder.get_object(
+ 'chk_do_not_show_new_release'
+ )
+ main_builder.get_object('button_goto_downloads').connect(
+ 'clicked', self._on_button_goto_downloads
+ )
+ main_builder.get_object('button_close_new_release').connect(
+ 'clicked', self._on_button_close_new_release
+ )
+
+ if client.connected():
+
+ def on_info(version):
+ main_builder.get_object('label_server_version').set_text(version)
+ main_builder.get_object('label_server_version').show()
+ main_builder.get_object('label_server_version_text').show()
+
+ if not client.is_standalone():
+ main_builder.get_object('label_client_version_text').set_label(
+ _('<i>Client Version</i>')
+ )
+ client.daemon.info().addCallback(on_info)
+
+ self.dialog.show()
+
+ def _on_button_goto_downloads(self, widget):
+ deluge.common.open_url_in_browser('http://deluge-torrent.org')
+ self.config['show_new_releases'] = not self.chk_not_show_dialog.get_active()
+ self.dialog.destroy()
+
+ def _on_button_close_new_release(self, widget):
+ self.config['show_new_releases'] = not self.chk_not_show_dialog.get_active()
+ self.dialog.destroy()
diff --git a/deluge/ui/gtk3/options_tab.py b/deluge/ui/gtk3/options_tab.py
new file mode 100644
index 0000000..b0411a8
--- /dev/null
+++ b/deluge/ui/gtk3/options_tab.py
@@ -0,0 +1,220 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+# 2017 Calum Lind <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from gi.repository.Gdk import keyval_name
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from .path_chooser import PathChooser
+from .torrentdetails import Tab
+
+
+class OptionsTab(Tab):
+ def __init__(self):
+ super().__init__('Options', 'options_tab', 'options_tab_label')
+
+ self.prev_torrent_ids = None
+ self.prev_status = None
+ self.inconsistent_keys = []
+
+ # Create TabWidget items with widget id, get/set func name, status key.
+ self.add_tab_widget('spin_max_download', 'value', ['max_download_speed'])
+ self.add_tab_widget('spin_max_upload', 'value', ['max_upload_speed'])
+ self.add_tab_widget('spin_max_connections', 'value_as_int', ['max_connections'])
+ self.add_tab_widget(
+ 'spin_max_upload_slots', 'value_as_int', ['max_upload_slots']
+ )
+ self.add_tab_widget(
+ 'chk_prioritize_first_last', 'active', ['prioritize_first_last_pieces']
+ )
+ self.add_tab_widget(
+ 'chk_sequential_download', 'active', ['sequential_download']
+ )
+ self.add_tab_widget('chk_auto_managed', 'active', ['auto_managed'])
+ self.add_tab_widget('chk_stop_at_ratio', 'active', ['stop_at_ratio'])
+ self.add_tab_widget('chk_remove_at_ratio', 'active', ['remove_at_ratio'])
+ self.add_tab_widget('spin_stop_ratio', 'value', ['stop_ratio'])
+ self.add_tab_widget('chk_move_completed', 'active', ['move_completed'])
+ self.add_tab_widget('chk_shared', 'active', ['shared'])
+ self.add_tab_widget('summary_owner', 'text', ['owner'])
+ self.add_tab_widget('chk_super_seeding', 'active', ['super_seeding'])
+
+ # Connect key press event for spin widgets.
+ for widget_id in self.tab_widgets:
+ if widget_id.startswith('spin_'):
+ self.tab_widgets[widget_id].obj.connect(
+ 'key-press-event', self.on_key_press_event
+ )
+
+ self.button_apply = self.main_builder.get_object('button_apply')
+
+ self.move_completed_path_chooser = PathChooser(
+ 'move_completed_paths_list', parent=component.get('MainWindow').window
+ )
+ self.move_completed_path_chooser.set_sensitive(
+ self.tab_widgets['chk_move_completed'].obj.get_active()
+ )
+ self.move_completed_path_chooser.connect(
+ 'text-changed', self.on_path_chooser_text_changed_event
+ )
+ self.status_keys.append('move_completed_path')
+
+ self.move_completed_hbox = self.main_builder.get_object(
+ 'hbox_move_completed_path_chooser'
+ )
+ self.move_completed_hbox.add(self.move_completed_path_chooser)
+ self.move_completed_hbox.show_all()
+
+ component.get('MainWindow').connect_signals(self)
+
+ def start(self):
+ pass
+
+ def stop(self):
+ pass
+
+ def clear(self):
+ self.prev_torrent_ids = None
+ self.prev_status = None
+ self.inconsistent_keys = []
+
+ def update(self):
+ torrent_ids = component.get('TorrentView').get_selected_torrents()
+
+ # Set True if torrent(s) selected in torrentview, else False.
+ self._child_widget.set_sensitive(bool(torrent_ids))
+
+ if torrent_ids:
+ if torrent_ids != self.prev_torrent_ids:
+ self.clear()
+
+ component.get('SessionProxy').get_torrents_status(
+ {'id': torrent_ids}, self.status_keys
+ ).addCallback(self.parse_torrents_statuses)
+
+ self.prev_torrent_ids = torrent_ids
+
+ def parse_torrents_statuses(self, statuses):
+ """Finds common status values to all torrrents in statuses.
+
+ Values which differ are replaced with config values.
+
+
+ Args:
+ statuses (dict): A status dict of {torrent_id: {key: value}}.
+
+ Returns:
+ dict: A single status dict.
+
+ """
+ status = {}
+ if len(statuses) == 1:
+ # A single torrent so pop torrent status.
+ status = statuses.popitem()[1]
+ self.button_apply.set_label('_Apply')
+ else:
+ for status_key in self.status_keys:
+ prev_value = None
+ for idx, status in enumerate(statuses.values()):
+ if idx == 0:
+ prev_value = status[status_key]
+ continue
+ elif status[status_key] != prev_value:
+ self.inconsistent_keys.append(status_key)
+ break
+ status[status_key] = prev_value
+ self.button_apply.set_label(_('_Apply to selected'))
+
+ self.on_get_torrent_status(status)
+
+ def on_get_torrent_status(self, new_status):
+ # So we don't overwrite the user's unapplied changes we only
+ # want to update values that have been applied in the core.
+ if self.prev_status is None:
+ self.prev_status = dict.fromkeys(new_status, None)
+
+ if new_status != self.prev_status:
+ for widget in self.tab_widgets.values():
+ status_key = widget.status_keys[0]
+ status_value = new_status[status_key]
+ if status_value != self.prev_status[status_key]:
+ set_func = 'set_' + widget.func.replace('_as_int', '')
+ getattr(widget.obj, set_func)(status_value)
+ if set_func == 'set_active':
+ widget.obj.set_inconsistent(
+ status_key in self.inconsistent_keys
+ )
+
+ if (
+ new_status['move_completed_path']
+ != self.prev_status['move_completed_path']
+ ):
+ text = new_status['move_completed_path']
+ self.move_completed_path_chooser.set_text(
+ text, cursor_end=False, default_text=True
+ )
+
+ # Update sensitivity of widgets.
+ self.tab_widgets['spin_stop_ratio'].obj.set_sensitive(
+ new_status['stop_at_ratio']
+ )
+ self.tab_widgets['chk_remove_at_ratio'].obj.set_sensitive(
+ new_status['stop_at_ratio']
+ )
+
+ # Ensure apply button sensitivity is set False.
+ self.button_apply.set_sensitive(False)
+ self.prev_status = new_status
+
+ # === Widget signal handlers === #
+
+ def on_button_apply_clicked(self, button):
+ options = {}
+ for widget in self.tab_widgets.values():
+ status_key = widget.status_keys[0]
+ if status_key == 'owner':
+ continue # A label so read-only
+ widget_value = getattr(widget.obj, 'get_' + widget.func)()
+ if widget_value != self.prev_status[status_key] or (
+ status_key in self.inconsistent_keys
+ and not widget.obj.get_inconsistent()
+ ):
+ options[status_key] = widget_value
+
+ move_completed_path = self.move_completed_path_chooser.get_text()
+ if move_completed_path != self.prev_status['move_completed_path']:
+ options['move_completed_path'] = move_completed_path
+
+ client.core.set_torrent_options(self.prev_torrent_ids, options)
+ self.button_apply.set_sensitive(False)
+
+ def on_chk_move_completed_toggled(self, widget):
+ self.move_completed_path_chooser.set_sensitive(widget.get_active())
+ self.on_chk_toggled(widget)
+
+ def on_chk_stop_at_ratio_toggled(self, widget):
+ self.tab_widgets['spin_stop_ratio'].obj.set_sensitive(widget.get_active())
+ self.tab_widgets['chk_remove_at_ratio'].obj.set_sensitive(widget.get_active())
+ self.on_chk_toggled(widget)
+
+ def on_chk_toggled(self, widget):
+ widget.set_inconsistent(False)
+ self.button_apply.set_sensitive(True)
+
+ def on_spin_value_changed(self, widget):
+ self.button_apply.set_sensitive(True)
+
+ def on_key_press_event(self, widget, event):
+ keyname = keyval_name(event.keyval).lstrip('KP_').lower()
+ if keyname.isdigit() or keyname in ['period', 'minus', 'delete', 'backspace']:
+ self.button_apply.set_sensitive(True)
+
+ def on_path_chooser_text_changed_event(self, widget, path):
+ self.button_apply.set_sensitive(True)
diff --git a/deluge/ui/gtk3/path_chooser.py b/deluge/ui/gtk3/path_chooser.py
new file mode 100644
index 0000000..8058196
--- /dev/null
+++ b/deluge/ui/gtk3/path_chooser.py
@@ -0,0 +1,198 @@
+#
+# Copyright (C) 2013 Bro <bro.development@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from .path_combo_chooser import PathChooserComboBox
+
+log = logging.getLogger(__name__)
+
+
+def singleton(cls):
+ instances = {}
+
+ def getinstance():
+ if cls not in instances:
+ instances[cls] = cls()
+ return instances[cls]
+
+ return getinstance
+
+
+@singleton
+class PathChoosersHandler(component.Component):
+ def __init__(self, paths_config_key=None):
+ # self.chooser_name = "PathChooser_%d" % (len(PathChooser.path_choosers) +1)
+ component.Component.__init__(self, 'PathChoosersHandler')
+ self.path_choosers = []
+ self.paths_list_keys = []
+ self.config_properties = {}
+ self.started = False
+ self.config_keys_to_funcs_mapping = {
+ 'path_chooser_show_chooser_button_on_localhost': 'filechooser_button_visible',
+ 'path_chooser_show_path_entry': 'path_entry_visible',
+ 'path_chooser_auto_complete_enabled': 'auto_complete_enabled',
+ 'path_chooser_show_folder_name': 'show_folder_name_on_button',
+ 'path_chooser_accelerator_string': 'accelerator_string',
+ 'path_chooser_show_hidden_files': 'show_hidden_files',
+ 'path_chooser_max_popup_rows': 'max_popup_rows',
+ }
+
+ def start(self):
+ self.started = True
+ self.update_config_from_core()
+
+ def stop(self):
+ self.started = False
+
+ def update_config_from_core(self):
+ def _on_config_values(config):
+ self.config_properties.update(config)
+ for chooser in self.path_choosers:
+ chooser.set_config(config)
+
+ keys = list(self.config_keys_to_funcs_mapping)
+ keys += self.paths_list_keys
+ client.core.get_config_values(keys).addCallback(_on_config_values)
+
+ def register_chooser(self, chooser):
+ chooser.config_key_funcs = {}
+ for key in self.config_keys_to_funcs_mapping:
+ chooser.config_key_funcs[key] = [None, None]
+ chooser.config_key_funcs[key][0] = getattr(
+ chooser, 'get_%s' % self.config_keys_to_funcs_mapping[key]
+ )
+ chooser.config_key_funcs[key][1] = getattr(
+ chooser, 'set_%s' % self.config_keys_to_funcs_mapping[key]
+ )
+
+ self.path_choosers.append(chooser)
+ if chooser.paths_config_key not in self.paths_list_keys:
+ self.paths_list_keys.append(chooser.paths_config_key)
+ if self.started:
+ self.update_config_from_core()
+ else:
+ chooser.set_config(self.config_properties)
+
+ def set_value_for_path_choosers(self, value, key):
+ for chooser in self.path_choosers:
+ chooser.config_key_funcs[key][1](value)
+
+ # Save to core
+ if key != 'path_chooser_max_popup_rows':
+ client.core.set_config({key: value})
+ else:
+ # Since the max rows value can be changed fast with a spinbutton, we
+ # delay saving to core until the values hasn't been changed in 1 second.
+ self.max_rows_value_set = value
+
+ def update(value_):
+ # The value hasn't been changed in one second, so save to core
+ if self.max_rows_value_set == value_:
+ client.core.set_config({'path_chooser_max_popup_rows': value})
+
+ from twisted.internet import reactor
+
+ reactor.callLater(1, update, value)
+
+ def on_list_values_changed(self, values, key, caller):
+ # Save to core
+ config = {key: values}
+ client.core.set_config(config)
+ # Set the values on all path choosers with that key
+ for chooser in self.path_choosers:
+ # Found chooser with values from 'key'
+ if chooser.paths_config_key == key:
+ chooser.set_values(values)
+
+ def get_config_keys(self):
+ keys = list(self.config_keys_to_funcs_mapping)
+ keys += self.paths_list_keys
+ return keys
+
+
+class PathChooser(PathChooserComboBox):
+ def __init__(self, paths_config_key=None, parent=None):
+ self.paths_config_key = paths_config_key
+ super().__init__(parent=parent)
+ self.chooser_handler = PathChoosersHandler()
+ self.chooser_handler.register_chooser(self)
+ self.set_auto_completer_func(self.on_completion)
+ self.connect('list-values-changed', self.on_list_values_changed_event)
+ self.connect(
+ 'auto-complete-enabled-toggled', self.on_auto_complete_enabled_toggled
+ )
+ self.connect('show-filechooser-toggled', self.on_show_filechooser_toggled)
+ self.connect(
+ 'show-folder-name-on-button', self.on_show_folder_on_button_toggled
+ )
+ self.connect('show-path-entry-toggled', self.on_show_path_entry_toggled)
+ self.connect('accelerator-set', self.on_accelerator_set)
+ self.connect('max-rows-changed', self.on_max_rows_changed)
+ self.connect('show-hidden-files-toggled', self.on_show_hidden_files_toggled)
+
+ def on_auto_complete_enabled_toggled(self, widget, value):
+ self.chooser_handler.set_value_for_path_choosers(
+ value, 'path_chooser_auto_complete_enabled'
+ )
+
+ def on_show_filechooser_toggled(self, widget, value):
+ self.chooser_handler.set_value_for_path_choosers(
+ value, 'path_chooser_show_chooser_button_on_localhost'
+ )
+
+ def on_show_folder_on_button_toggled(self, widget, value):
+ self.chooser_handler.set_value_for_path_choosers(
+ value, 'path_chooser_show_folder_name'
+ )
+
+ def on_show_path_entry_toggled(self, widget, value):
+ self.chooser_handler.set_value_for_path_choosers(
+ value, 'path_chooser_show_path_entry'
+ )
+
+ def on_accelerator_set(self, widget, value):
+ self.chooser_handler.set_value_for_path_choosers(
+ value, 'path_chooser_accelerator_string'
+ )
+
+ def on_show_hidden_files_toggled(self, widget, value):
+ self.chooser_handler.set_value_for_path_choosers(
+ value, 'path_chooser_show_hidden_files'
+ )
+
+ def on_max_rows_changed(self, widget, value):
+ self.chooser_handler.set_value_for_path_choosers(
+ value, 'path_chooser_max_popup_rows'
+ )
+
+ def on_list_values_changed_event(self, widget, values):
+ self.chooser_handler.on_list_values_changed(values, self.paths_config_key, self)
+
+ def set_config(self, config):
+ self.config = config
+ for key in self.config_key_funcs:
+ if key in config:
+ try:
+ self.config_key_funcs[key][1](config[key])
+ except TypeError as ex:
+ log.warning('TypeError: %s', ex)
+
+ # Set the saved paths
+ if self.paths_config_key and self.paths_config_key in config:
+ self.set_values(config[self.paths_config_key])
+
+ def on_completion(self, args):
+ def on_paths_cb(args):
+ self.complete(args)
+
+ d = client.core.get_completion_paths(args)
+ d.addCallback(on_paths_cb)
diff --git a/deluge/ui/gtk3/path_combo_chooser.py b/deluge/ui/gtk3/path_combo_chooser.py
new file mode 100755
index 0000000..aeb4c7a
--- /dev/null
+++ b/deluge/ui/gtk3/path_combo_chooser.py
@@ -0,0 +1,1730 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2013 Bro <bro.development@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+import warnings
+
+from gi.repository import Gdk, GObject, Gtk
+from gi.repository.GObject import SignalFlags
+
+from deluge.common import resource_filename
+from deluge.path_chooser_common import get_completion_paths
+
+# Filter the pygobject signal warning:
+# g_value_get_int: assertion 'G_VALUE_HOLDS_INT (value)' failed.
+# See: https://gitlab.gnome.org/GNOME/pygobject/issues/12
+warnings.filterwarnings('ignore', '.*g_value_get_int.*G_VALUE_HOLDS_INT.*', Warning)
+
+
+def is_ascii_value(keyval, ascii_key):
+ try:
+ # Set show/hide hidden files
+ if chr(keyval) == ascii_key:
+ return True
+ except ValueError:
+ # Not in ascii range
+ pass
+ return False
+
+
+def key_is_up(keyval):
+ return keyval == Gdk.KEY_Up or keyval == Gdk.KEY_KP_Up
+
+
+def key_is_down(keyval):
+ return keyval == Gdk.KEY_Down or keyval == Gdk.KEY_KP_Down
+
+
+def key_is_up_or_down(keyval):
+ return key_is_up(keyval) or key_is_down(keyval)
+
+
+def key_is_pgup_or_pgdown(keyval):
+ return keyval == Gdk.KEY_Page_Down or keyval == Gdk.KEY_Page_Up
+
+
+def key_is_enter(keyval):
+ return keyval == Gdk.KEY_Return or keyval == Gdk.KEY_KP_Enter
+
+
+def path_without_trailing_path_sep(path):
+ while path.endswith('/') or path.endswith('\\'):
+ if path == '/':
+ return path
+ path = path[0:-1]
+ return path
+
+
+class ValueList:
+ paths_without_trailing_path_sep = False
+
+ def get_values_count(self):
+ return len(self.tree_store)
+
+ def get_values(self):
+ """
+ Returns the values in the list.
+ """
+ values = []
+ for row in self.tree_store:
+ values.append(row[0])
+ return values
+
+ def add_values(
+ self, paths, append=True, scroll_to_row=False, clear=False, emit_signal=False
+ ):
+ """
+ Add paths to the liststore
+
+ :param paths: the paths to add
+ :type paths: list
+ :param append: if the values should be appended or inserted
+ :type append: boolean
+ :param scroll_to_row: if the treeview should scroll to the new row
+ :type scroll_to_row: boolean
+
+ """
+ if clear:
+ self.tree_store.clear()
+
+ for path in paths:
+ if self.paths_without_trailing_path_sep:
+ path = path_without_trailing_path_sep(path)
+ if append:
+ tree_iter = self.tree_store.append([path])
+ else:
+ tree_iter = self.tree_store.insert(0, [path])
+
+ if scroll_to_row:
+ self.treeview.grab_focus()
+ tree_path = self.tree_store.get_path(tree_iter)
+ # Scroll to path
+ self.handle_list_scroll(path=tree_path)
+
+ if emit_signal:
+ self.emit('list-value-added', paths)
+ self.emit('list-values-changed', self.get_values())
+
+ def set_values(self, paths, scroll_to_row=False, preserve_selection=True):
+ """
+ Add paths to the liststore
+
+ :param paths: the paths to add
+ :type paths: list
+ :param scroll_to_row: if the treeview should scroll to the new row
+ :type scroll_to_row: boolean
+
+ """
+ if not (isinstance(paths, list) or isinstance(paths, tuple)):
+ return
+ sel = None
+ if preserve_selection:
+ sel = self.get_selection_path()
+ self.add_values(paths, scroll_to_row=scroll_to_row, clear=True)
+ if sel:
+ self.treeview.get_selection().select_path(sel)
+
+ def get_selection_path(self):
+ """Returns the (first) selected path from a treeview"""
+ tree_selection = self.treeview.get_selection()
+ model, tree_paths = tree_selection.get_selected_rows()
+ if len(tree_paths) > 0:
+ return tree_paths[0]
+ return None
+
+ def get_selected_value(self):
+ path = self.get_selection_path()
+ if path:
+ return self.tree_store[path][0]
+ return None
+
+ def remove_selected_path(self):
+ path = self.get_selection_path()
+ if path:
+ path_value = self.tree_store[path][0]
+ del self.tree_store[path]
+ index = path[0]
+ # The last row was deleted
+ if index == len(self.tree_store):
+ index -= 1
+ if index >= 0:
+ path = (index,)
+ self.treeview.set_cursor(path)
+ self.set_path_selected(path)
+ self.emit('list-value-removed', path_value)
+ self.emit('list-values-changed', self.get_values())
+
+ def set_selected_value(self, value, select_first=False):
+ """
+ Select the row of the list with value
+
+ :param value: the value to be selected
+ :type value: str
+ :param select_first: if the first item should be selected if the value if not found.
+ :type select_first: boolean
+
+ """
+ for i, row in enumerate(self.tree_store):
+ if row[0] == value:
+ self.treeview.set_cursor(i)
+ return
+ # The value was not found
+ if select_first:
+ self.treeview.set_cursor((0,))
+ else:
+ self.treeview.get_selection().unselect_all()
+
+ def set_path_selected(self, path):
+ self.treeview.get_selection().select_path(path)
+
+ def on_value_list_treeview_key_press_event(self, widget, event):
+ """
+ Mimics Combobox behavior
+
+ Escape or Alt+Up: Close
+ Enter or Return : Select
+ """
+ keyval = event.keyval
+ state = event.get_state() & Gtk.accelerator_get_default_mod_mask()
+ alt_up = (state == Gdk.ModifierType.MOD1_MASK) and key_is_up(keyval)
+ if keyval == Gdk.KEY_Escape or alt_up:
+ self.popdown()
+ return True
+ # Set entry value to the selected row
+ elif key_is_enter(keyval):
+ path = self.get_selection_path()
+ if path:
+ self.set_entry_value(path, popdown=True)
+ return True
+ return False
+
+ def on_treeview_mouse_button_press_event(self, treeview, event, double_click=False):
+ """
+ When left clicking twice, the row value is set for the text entry
+ and the popup is closed.
+
+ """
+ # This is left click
+ if event.button != 3:
+ # Double clicked a row, set this as the entry value
+ # and close the popup
+ if (double_click and event.type == Gdk.EventType._2BUTTON_PRESS) or (
+ not double_click and event.type == Gdk.EventType.BUTTON_PRESS
+ ):
+ path = self.get_selection_path()
+ if path:
+ self.set_entry_value(path, popdown=True)
+ return True
+ return False
+
+ def handle_list_scroll(
+ self, _next=None, path=None, set_entry=False, swap=False, scroll_window=False
+ ):
+ """
+ Handles changes to the row selection.
+
+ :param _next: the direction to change selection. True means down and False means up.
+ None means no change.
+ :type _next: boolean/None
+ :param path: the current path. If None, the currently selected path is used.
+ :type path: tuple
+ :param set_entry: if the new value should be set in the text entry.
+ :type set_entry: boolean
+ :param swap: if the old and new value should be swapped
+ :type swap: boolean
+
+ """
+ if scroll_window:
+ adjustment = self.completion_scrolled_window.get_vadjustment()
+
+ visible_rows_height = self.get_values_count()
+ if visible_rows_height > self.max_visible_rows:
+ visible_rows_height = self.max_visible_rows
+
+ visible_rows_height *= self.row_height
+ value = adjustment.get_value()
+
+ # Max adjustment value
+ max_value = adjustment.get_upper() - visible_rows_height
+ # Set adjustment increment to 3 times the row height
+ adjustment.set_step_increment(self.row_height * 3)
+
+ if _next:
+ # If number of values is less than max rows, no scroll
+ if self.get_values_count() < self.max_visible_rows:
+ return
+ value += adjustment.get_step_increment()
+ if value > max_value:
+ value = max_value
+ else:
+ value -= adjustment.get_step_increment()
+ if value < 0:
+ value = 0
+ adjustment.set_value(value)
+ return
+
+ if path is None:
+ path = self.get_selection_path()
+ if not path:
+ # These options require a selected path
+ if set_entry or swap:
+ return
+ # This is a regular scroll, not setting value in entry or swapping rows,
+ # so we find a path value anyways
+ path = (0,)
+ cursor = self.treeview.get_cursor()
+ if cursor is not None and cursor[0] is not None:
+ path = cursor[0]
+ else:
+ # Since cursor is none, we won't advance the index
+ _next = None
+
+ # If _next is None, we won't change the selection
+ if _next is not None:
+ # We move the selection either one up or down.
+ # If we reach end of list, we wrap
+ index = path[0] if path else 0
+ index = index + 1 if _next else index - 1
+ if index >= len(self.tree_store):
+ index = 0
+ elif index < 0:
+ index = len(self.tree_store) - 1
+
+ # We have the index for the new path
+ new_path = index
+ if swap:
+ p1 = self.tree_store[path][0]
+ p2 = self.tree_store[new_path][0]
+ self.tree_store.swap(
+ self.tree_store.get_iter(path), self.tree_store.get_iter(new_path)
+ )
+ self.emit('list-values-reordered', [p1, p2])
+ self.emit('list-values-changed', self.get_values())
+ path = new_path
+
+ self.treeview.set_cursor(path)
+ self.treeview.get_selection().select_path(path)
+ if set_entry:
+ self.set_entry_value(path)
+
+
+class StoredValuesList(ValueList):
+ def __init__(self):
+ self.tree_store = self.builder.get_object('stored_values_tree_store')
+ self.tree_column = self.builder.get_object('stored_values_treeview_column')
+ self.rendererText = self.builder.get_object('stored_values_cellrenderertext')
+ self.paths_without_trailing_path_sep = False
+
+ # Add signal handlers
+ self.signal_handlers[
+ 'on_stored_values_treeview_mouse_button_press_event'
+ ] = self.on_treeview_mouse_button_press_event
+
+ self.signal_handlers[
+ 'on_stored_values_treeview_key_press_event'
+ ] = self.on_stored_values_treeview_key_press_event
+ self.signal_handlers[
+ 'on_stored_values_treeview_key_release_event'
+ ] = self.on_stored_values_treeview_key_release_event
+
+ self.signal_handlers[
+ 'on_cellrenderertext_edited'
+ ] = self.on_cellrenderertext_edited
+
+ def on_cellrenderertext_edited(self, cellrenderertext, path, new_text):
+ """
+ Callback on the 'edited' signal.
+
+ Sets the new text in the path and disables editing on the renderer.
+ """
+ new_text = path_without_trailing_path_sep(new_text)
+ self.tree_store[path][0] = new_text
+ self.rendererText.set_property('editable', False)
+
+ def on_edit_path(self, path, column):
+ """
+ Starts editing on the provided path
+
+ :param path: the paths to edit
+ :type path: tuple
+ :param column: the column to edit
+ :type column: Gtk.TreeViewColumn
+
+ """
+ self.rendererText.set_property('editable', True)
+ self.treeview.grab_focus()
+ self.treeview.set_cursor(path, column=column, start_editing=True)
+
+ def on_treeview_mouse_button_press_event(self, treeview, event):
+ """
+ Shows popup on selected row when right clicking
+ When left clicking twice, the row value is set for the text entry
+ and the popup is closed.
+
+ """
+ # This is left click
+ if event.button != 3:
+ super().on_treeview_mouse_button_press_event(
+ treeview, event, double_click=True
+ )
+ return False
+
+ # This is right click, create popup menu for this row
+ x = int(event.x)
+ y = int(event.y)
+ time = event.time
+ pthinfo = treeview.get_path_at_pos(x, y)
+ if pthinfo is not None:
+ path, col, cellx, celly = pthinfo
+ treeview.grab_focus()
+ treeview.set_cursor(path, col, 0)
+
+ self.path_list_popup = Gtk.Menu()
+ menuitem_edit = Gtk.MenuItem.new_with_label(_('Edit path'))
+ self.path_list_popup.append(menuitem_edit)
+ menuitem_remove = Gtk.MenuItem.new_with_label(_('Remove path'))
+ self.path_list_popup.append(menuitem_remove)
+
+ def on_edit_clicked(widget, path):
+ self.on_edit_path(path, self.tree_column)
+
+ def on_remove_clicked(widget, path):
+ self.remove_selected_path()
+
+ menuitem_edit.connect('activate', on_edit_clicked, path)
+ menuitem_remove.connect('activate', on_remove_clicked, path)
+ self.path_list_popup.popup(None, None, None, path, event.button, time)
+ self.path_list_popup.show_all()
+
+ def remove_selected_path(self):
+ ValueList.remove_selected_path(self)
+ # Resize popup
+ PathChooserPopup.popup(self)
+
+ def on_stored_values_treeview_key_press_event(self, widget, event):
+ super().on_value_list_treeview_key_press_event(widget, event)
+ # Prevent the default event handler to move the cursor in the list
+ if key_is_up_or_down(event.keyval):
+ return True
+
+ def on_stored_values_treeview_key_release_event(self, widget, event):
+ """
+ Mimics Combobox behavior
+
+ Escape or Alt+Up: Close
+ Enter or Return : Select
+
+ """
+ keyval = event.keyval
+ ctrl = event.get_state() & Gdk.ModifierType.CONTROL_MASK
+
+ # Edit selected row
+ if keyval in [Gdk.KEY_Left, Gdk.KEY_Right, Gdk.KEY_space]:
+ path = self.get_selection_path()
+ if path:
+ self.on_edit_path(path, self.tree_column)
+ elif key_is_up_or_down(keyval):
+ # Swap the row value
+ if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
+ self.handle_list_scroll(_next=key_is_down(keyval), swap=True)
+ else:
+ self.handle_list_scroll(_next=key_is_down(keyval))
+ elif key_is_pgup_or_pgdown(event.keyval):
+ # The cursor has been changed by the default key-press-event handler
+ # so set the path of the cursor selected
+ self.set_path_selected(self.treeview.get_cursor()[0])
+ elif ctrl:
+ # Handle key bindings for manipulating the list
+ # Remove the selected entry
+ if is_ascii_value(keyval, 'r'):
+ self.remove_selected_path()
+ return True
+ # Add current value to saved list
+ elif is_ascii_value(keyval, 's'):
+ super(
+ PathChooserComboBox, self
+ ).add_current_value_to_saved_list() # pylint: disable=bad-super-call
+ return True
+ # Edit selected value
+ elif is_ascii_value(keyval, 'e'):
+ self.edit_selected_path()
+ return True
+
+
+class CompletionList(ValueList):
+ def __init__(self):
+ self.tree_store = self.builder.get_object('completion_tree_store')
+ self.tree_column = self.builder.get_object('completion_treeview_column')
+ self.rendererText = self.builder.get_object('completion_cellrenderertext')
+ self.completion_scrolled_window = self.builder.get_object(
+ 'completion_scrolled_window'
+ )
+ self.signal_handlers[
+ 'on_completion_treeview_key_press_event'
+ ] = self.on_completion_treeview_key_press_event
+ self.signal_handlers[
+ 'on_completion_treeview_motion_notify_event'
+ ] = self.on_completion_treeview_motion_notify_event
+
+ # Add super class signal handler
+ self.signal_handlers[
+ 'on_completion_treeview_mouse_button_press_event'
+ ] = super().on_treeview_mouse_button_press_event
+
+ def reduce_values(self, prefix):
+ """
+ Reduce the values in the liststore to those starting with the prefix.
+
+ :param prefix: the prefix to be matched
+ :type paths: string
+
+ """
+ values = self.get_values()
+ matching_values = []
+ for v in values:
+ if v.startswith(prefix):
+ matching_values.append(v)
+ self.add_values(matching_values, clear=True)
+
+ def on_completion_treeview_key_press_event(self, widget, event):
+ ret = super().on_value_list_treeview_key_press_event(widget, event)
+ if ret:
+ return ret
+ keyval = event.keyval
+ ctrl = event.get_state() & Gdk.ModifierType.CONTROL_MASK
+ if key_is_up_or_down(keyval):
+ self.handle_list_scroll(_next=key_is_down(keyval))
+ return True
+ elif ctrl:
+ # Set show/hide hidden files
+ if is_ascii_value(keyval, 'h'):
+ self.path_entry.set_show_hidden_files(
+ not self.path_entry.get_show_hidden_files(), do_completion=True
+ )
+ return True
+
+ def on_completion_treeview_motion_notify_event(self, widget, event):
+ if event.is_hint:
+ x, y, state = event.window.get_pointer()
+ else:
+ x = event.x
+ y = event.y
+
+ path = self.treeview.get_path_at_pos(int(x), int(y))
+ if path:
+ self.handle_list_scroll(path=path[0], _next=None)
+
+
+class PathChooserPopup:
+ """This creates the popop window for the ComboEntry."""
+
+ def __init__(self, min_visible_rows, max_visible_rows, popup_alignment_widget):
+ self.min_visible_rows = min_visible_rows
+ # Maximum number of rows to display without scrolling
+ self.set_max_popup_rows(max_visible_rows)
+ self.popup_window.realize()
+ self.alignment_widget = popup_alignment_widget
+ # If set, the height of this widget is the minimum height
+ self.popup_buttonbox = None
+
+ def popup(self):
+ """Make the popup visible."""
+ # Entry is not yet visible
+ if not self.path_entry.get_realized():
+ return
+ self.set_window_position_and_size()
+
+ def popdown(self):
+ if not self.is_popped_up():
+ return
+ if not self.path_entry.get_realized():
+ return
+ self.popup_window.grab_remove()
+ self.popup_window.hide()
+
+ def is_popped_up(self):
+ """Check if window is popped up.
+
+ Returns:
+ bool: True if popped up, False otherwise.
+
+ """
+ return self.popup_window.get_mapped()
+
+ def set_window_position_and_size(self):
+ if len(self.tree_store) < self.min_visible_rows:
+ return False
+ x, y, width, height = self.get_position()
+ self.popup_window.set_size_request(width, height)
+ self.popup_window.resize(width, height)
+ self.popup_window.move(x, y)
+ self.popup_window.show_all()
+
+ def get_position(self):
+ """
+ Returns the size of the popup window and the coordinates on the screen.
+
+ """
+
+ # Necessary for the first call, to make treeview.size_request give sensible values
+ # self.popup_window.realize()
+ self.treeview.realize()
+
+ # We start with the coordinates of the parent window
+ z, x, y = self.path_entry.get_window().get_origin()
+
+ # Add the position of the alignment_widget relative to the parent window.
+ x += self.alignment_widget.get_allocation().x
+ y += self.alignment_widget.get_allocation().y
+
+ height_extra = 8
+ buttonbox_width = 0
+ height = self.popup_window.get_preferred_height()[1]
+ width = self.popup_window.get_preferred_width()[1]
+
+ if self.popup_buttonbox:
+ buttonbox_height = max(
+ self.popup_buttonbox.get_preferred_height()[1],
+ self.popup_buttonbox.get_allocation().height,
+ )
+ buttonbox_width = max(
+ self.popup_buttonbox.get_preferred_width()[1],
+ self.popup_buttonbox.get_allocation().width,
+ )
+ treeview_width = self.treeview.get_preferred_width()[1]
+ # After removing an element from the tree store, self.treeview.get_preferred_width()[0]
+ # returns -1 for some reason, so the requested width cannot be used until the treeview
+ # has been displayed once.
+ if treeview_width != -1:
+ width = treeview_width + buttonbox_width
+ # The list is empty, so ignore initial popup width request
+ # Will be set to the minimum width next
+ elif len(self.tree_store) == 0:
+ width = 0
+
+ if width < self.alignment_widget.get_allocation().width:
+ width = self.alignment_widget.get_allocation().width
+
+ # 10 is extra spacing
+ content_width = self.treeview.get_preferred_width()[1] + buttonbox_width + 10
+
+ # Adjust height according to number of list items
+ if len(self.tree_store) > 0 and self.max_visible_rows > 0:
+ # The height for one row in the list
+ self.row_height = self.treeview.get_preferred_height()[1] / len(
+ self.tree_store
+ )
+ # Set height to number of rows
+ height = len(self.tree_store) * self.row_height + height_extra
+ # Adjust the height according to the max number of rows
+ max_height = self.row_height * self.max_visible_rows
+ # Restrict height to max_visible_rows
+ if max_height + height_extra < height:
+ height = max_height
+ height += height_extra
+ # Increase width because of vertical scrollbar
+ content_width += 15
+
+ if self.popup_buttonbox:
+ # Minimum height is the height of the button box
+ if height < buttonbox_height + height_extra:
+ height = buttonbox_height + height_extra
+
+ if content_width > width:
+ width = content_width
+
+ screen = self.path_entry.get_screen()
+ monitor_num = screen.get_monitor_at_window(self.path_entry.get_window())
+ monitor = screen.get_monitor_geometry(monitor_num)
+
+ if x < monitor.x:
+ x = monitor.x
+ elif x + width > monitor.x + monitor.width:
+ x = monitor.x + monitor.width - width
+
+ # Set the position
+ if (
+ y + self.path_entry.get_allocation().height + height
+ <= monitor.y + monitor.height
+ ):
+ y += self.path_entry.get_allocation().height
+ # Not enough space downwards on the screen
+ elif y - height >= monitor.y:
+ y -= height
+ elif (
+ monitor.y + monitor.height - (y + self.path_entry.get_allocation().height)
+ > y - monitor.y
+ ):
+ y += self.path_entry.get_allocation().height
+ height = monitor.y + monitor.height - y
+ else:
+ height = y - monitor.y
+ y = monitor.y
+
+ return x, y, width, height
+
+ def popup_grab_window(self):
+ activate_time = 0
+ if (
+ Gdk.pointer_grab(
+ self.popup_window.get_window(),
+ True,
+ (
+ Gdk.EventMask.BUTTON_PRESS_MASK
+ | Gdk.EventMask.BUTTON_RELEASE_MASK
+ | Gdk.EventMask.POINTER_MOTION_MASK
+ ),
+ None,
+ None,
+ activate_time,
+ )
+ == 0
+ ):
+ if (
+ Gdk.keyboard_grab(self.popup_window.get_window(), True, activate_time)
+ == 0
+ ):
+ return True
+ else:
+ self.popup_window.get_window().get_display().pointer_ungrab(
+ activate_time
+ )
+ return False
+ return False
+
+ def set_entry_value(self, path, popdown=False):
+ """
+
+ Sets the text of the entry to the value in path
+ """
+ self.path_entry.set_text(
+ self.tree_store[path][0], set_file_chooser_folder=True, trigger_event=True
+ )
+ if popdown:
+ self.popdown()
+
+ def set_max_popup_rows(self, rows):
+ try:
+ int(rows)
+ except Exception:
+ self.max_visible_rows = 20
+ return
+ self.max_visible_rows = rows
+
+ def get_max_popup_rows(self):
+ return self.max_visible_rows
+
+ #################
+ # Callbacks
+ #################
+
+ def on_popup_window_button_press_event(self, window, event):
+ # If we're clicking outside of the window close the popup
+ allocation = self.popup_window.get_allocation()
+
+ if (event.x < allocation.x or event.x > allocation.width) or (
+ event.y < allocation.y or event.y > allocation.height
+ ):
+ self.popdown()
+
+
+class StoredValuesPopup(StoredValuesList, PathChooserPopup):
+ """
+
+ The stored values popup
+
+ """
+
+ def __init__(self, builder, path_entry, max_visible_rows, popup_alignment_widget):
+ self.builder = builder
+ self.treeview = self.builder.get_object('stored_values_treeview')
+ self.popup_window = self.builder.get_object('stored_values_popup_window')
+ self.button_default = self.builder.get_object('button_default')
+ self.path_entry = path_entry
+ self.text_entry = path_entry.text_entry
+
+ self.signal_handlers = {}
+ PathChooserPopup.__init__(self, 0, max_visible_rows, popup_alignment_widget)
+ StoredValuesList.__init__(self)
+
+ self.popup_buttonbox = self.builder.get_object('buttonbox')
+
+ # Add signal handlers
+ self.signal_handlers[
+ 'on_buttonbox_key_press_event'
+ ] = self.on_buttonbox_key_press_event
+ self.signal_handlers[
+ 'on_stored_values_treeview_scroll_event'
+ ] = self.on_scroll_event
+ self.signal_handlers[
+ 'on_button_toggle_dropdown_scroll_event'
+ ] = self.on_scroll_event
+ self.signal_handlers['on_entry_text_scroll_event'] = self.on_scroll_event
+ self.signal_handlers[
+ 'on_stored_values_popup_window_focus_out_event'
+ ] = self.on_stored_values_popup_window_focus_out_event
+ # For when clicking outside the popup
+ self.signal_handlers[
+ 'on_stored_values_popup_window_button_press_event'
+ ] = self.on_popup_window_button_press_event
+
+ # Buttons for manipulating the list
+ self.signal_handlers['on_button_add_clicked'] = self.on_button_add_clicked
+ self.signal_handlers['on_button_edit_clicked'] = self.on_button_edit_clicked
+ self.signal_handlers['on_button_remove_clicked'] = self.on_button_remove_clicked
+ self.signal_handlers['on_button_up_clicked'] = self.on_button_up_clicked
+ self.signal_handlers['on_button_down_clicked'] = self.on_button_down_clicked
+ self.signal_handlers[
+ 'on_button_default_clicked'
+ ] = self.on_button_default_clicked
+ self.signal_handlers[
+ 'on_button_properties_clicked'
+ ] = self.path_entry._on_button_properties_clicked
+
+ def popup(self):
+ """
+ Makes the popup visible.
+
+ """
+ # Calling super popup
+ PathChooserPopup.popup(self)
+ self.popup_window.grab_focus()
+
+ if not self.treeview.has_focus():
+ self.treeview.grab_focus()
+ if not self.popup_grab_window():
+ self.popup_window.hide()
+ return
+
+ self.popup_window.grab_add()
+ # Set value selected if it exists
+ self.set_selected_value(
+ path_without_trailing_path_sep(self.path_entry.get_text())
+ )
+
+ #################
+ # Callbacks
+ #################
+
+ def on_stored_values_popup_window_focus_out_event(self, entry, event):
+ """
+ Popup sometimes loses the focus to the text entry, e.g. when right click
+ shows a popup menu on a row. This regains the focus.
+ """
+ self.popup_grab_window()
+ return True
+
+ def on_scroll_event(self, widget, event):
+ """
+ Handles scroll events from text entry, toggle button and treeview
+
+ """
+
+ swap = event.get_state() & Gdk.ModifierType.CONTROL_MASK
+ scroll_window = event.get_state() & Gdk.ModifierType.SHIFT_MASK
+ self.handle_list_scroll(
+ _next=event.direction == Gdk.ScrollDirection.DOWN,
+ set_entry=widget != self.treeview,
+ swap=swap,
+ scroll_window=scroll_window,
+ )
+ return True
+
+ def on_buttonbox_key_press_event(self, widget, event):
+ """
+ Handles when Escape or ALT+arrow up is pressed when focus
+ is on any of the buttons in the popup
+ """
+ keyval = event.keyval
+ state = event.get_state() & Gtk.accelerator_get_default_mod_mask()
+ if keyval == Gdk.KEY_Escape or (
+ key_is_up(keyval) and state == Gdk.ModifierType.MOD1_MASK
+ ):
+ self.popdown()
+ return True
+ return False
+
+ # --------------------------------------------------
+ # Funcs and callbacks on the buttons to manipulate the list
+ # --------------------------------------------------
+ def add_current_value_to_saved_list(self):
+ text = self.path_entry.get_text()
+ text = path_without_trailing_path_sep(text)
+ values = self.get_values()
+ if text in values:
+ # Make the matching value selected
+ self.set_selected_value(text)
+ self.handle_list_scroll()
+ return True
+ self.add_values([text], scroll_to_row=True, append=False, emit_signal=True)
+
+ def edit_selected_path(self):
+ path = self.get_selection_path()
+ if path:
+ self.on_edit_path(path, self.tree_column)
+
+ def on_button_add_clicked(self, widget):
+ self.add_current_value_to_saved_list()
+ self.popup()
+
+ def on_button_edit_clicked(self, widget):
+ self.edit_selected_path()
+
+ def on_button_remove_clicked(self, widget):
+ self.remove_selected_path()
+ return True
+
+ def on_button_up_clicked(self, widget):
+ self.handle_list_scroll(_next=False, swap=True)
+
+ def on_button_down_clicked(self, widget):
+ self.handle_list_scroll(_next=True, swap=True)
+
+ def on_button_default_clicked(self, widget):
+ if self.default_text:
+ self.set_text(self.default_text, trigger_event=True)
+
+
+class PathCompletionPopup(CompletionList, PathChooserPopup):
+ """
+
+ The auto completion popup
+
+ """
+
+ def __init__(self, builder, path_entry, max_visible_rows):
+ self.builder = builder
+ self.treeview = self.builder.get_object('completion_treeview')
+ self.popup_window = self.builder.get_object('completion_popup_window')
+ self.path_entry = path_entry
+ self.text_entry = path_entry.text_entry
+ self.show_hidden_files = False
+
+ self.signal_handlers = {}
+ PathChooserPopup.__init__(self, 1, max_visible_rows, self.text_entry)
+ CompletionList.__init__(self)
+
+ # Add signal handlers
+ self.signal_handlers[
+ 'on_completion_treeview_scroll_event'
+ ] = self.on_scroll_event
+ self.signal_handlers[
+ 'on_completion_popup_window_focus_out_event'
+ ] = self.on_completion_popup_window_focus_out_event
+
+ # For when clicking outside the popup
+ self.signal_handlers[
+ 'on_completion_popup_window_button_press_event'
+ ] = self.on_popup_window_button_press_event
+
+ def popup(self):
+ """
+ Makes the popup visible.
+
+ """
+ PathChooserPopup.popup(self)
+ self.popup_window.grab_focus()
+
+ if not self.treeview.has_focus():
+ self.treeview.grab_focus()
+
+ if not self.popup_grab_window():
+ self.popup_window.hide()
+ return
+
+ self.popup_window.grab_add()
+ self.text_entry.grab_focus()
+ self.text_entry.set_position(len(self.path_entry.text_entry.get_text()))
+ self.set_selected_value(
+ path_without_trailing_path_sep(self.path_entry.get_text()),
+ select_first=True,
+ )
+
+ #################
+ # Callbacks
+ #################
+
+ def on_completion_popup_window_focus_out_event(self, entry, event):
+ """
+ Popup sometimes loses the focus to the text entry, e.g. when right click
+ shows a popup menu on a row. This regains the focus.
+ """
+ self.popup_grab_window()
+ return True
+
+ def on_scroll_event(self, widget, event):
+ """
+ Handles scroll events from the treeview
+
+ """
+ x, y = event.window.get_pointer()
+ self.handle_list_scroll(
+ _next=event.direction == Gdk.ScrollDirection.DOWN,
+ set_entry=widget != self.treeview,
+ scroll_window=True,
+ )
+ path = self.treeview.get_path_at_pos(int(x), int(y))
+ if path:
+ self.handle_list_scroll(path=path[0], _next=None)
+ return True
+
+
+class PathAutoCompleter:
+ def __init__(self, builder, path_entry, max_visible_rows):
+ self.completion_popup = PathCompletionPopup(
+ builder, path_entry, max_visible_rows
+ )
+ self.path_entry = path_entry
+ self.dirs_cache = {}
+ self.use_popup = False
+ self.auto_complete_enabled = True
+ self.signal_handlers = self.completion_popup.signal_handlers
+
+ self.signal_handlers[
+ 'on_completion_popup_window_key_press_event'
+ ] = self.on_completion_popup_window_key_press_event
+ self.signal_handlers[
+ 'on_entry_text_delete_text'
+ ] = self.on_entry_text_delete_text
+ self.signal_handlers[
+ 'on_entry_text_insert_text'
+ ] = self.on_entry_text_insert_text
+ self.accelerator_string = Gtk.accelerator_name(Gdk.KEY_Tab, 0)
+
+ def on_entry_text_insert_text(self, entry, new_text, new_text_length, position):
+ if self.path_entry.get_realized():
+ cur_text = self.path_entry.get_text()
+ pos = entry.get_position()
+ new_complete_text = cur_text[:pos] + new_text + cur_text[pos:]
+ # Remove all values from the list that do not start with new_complete_text
+ self.completion_popup.reduce_values(new_complete_text)
+ self.completion_popup.set_selected_value(
+ new_complete_text, select_first=True
+ )
+ if self.completion_popup.is_popped_up():
+ self.completion_popup.set_window_position_and_size()
+
+ def on_entry_text_delete_text(self, entry, start, end):
+ """
+ Do completion when characters are removed
+
+ """
+ if self.completion_popup.is_popped_up():
+ cur_text = self.path_entry.get_text()
+ new_complete_text = cur_text[:start] + cur_text[end:]
+ self.do_completion(value=new_complete_text, forward_completion=False)
+
+ def set_use_popup(self, use):
+ self.use_popup = use
+
+ def on_completion_popup_window_key_press_event(self, entry, event):
+ """
+ Handles key pressed events on the auto-completion popup window
+ """
+ # If on_completion_treeview_key_press_event handles the event, do nothing
+ ret = self.completion_popup.on_completion_treeview_key_press_event(entry, event)
+ if ret:
+ return ret
+ keyval = event.keyval
+ state = event.get_state() & Gtk.accelerator_get_default_mod_mask()
+ if (
+ self.is_auto_completion_accelerator(keyval, state)
+ and self.auto_complete_enabled
+ ):
+ values_count = self.completion_popup.get_values_count()
+ if values_count == 1:
+ self.do_completion()
+ else:
+ self.completion_popup.handle_list_scroll(_next=True)
+ return True
+ # Buggy stuff (in pygobject?) causing type mismatch between EventKey and GdkEvent. Convert manually...
+ n = Gdk.Event()
+ n.type = event.type
+ n.window = event.window
+ n.send_event = event.send_event
+ n.time = event.time
+ n.state = event.state
+ n.keyval = event.keyval
+ n.length = event.length
+ n.string = event.string
+ n.hardware_keycode = event.hardware_keycode
+ n.group = event.group
+ n.is_modifier = event.is_modifier
+ self.path_entry.text_entry.emit('key-press-event', n)
+
+ def is_auto_completion_accelerator(self, keyval, state):
+ return Gtk.accelerator_name(keyval, state) == self.accelerator_string
+
+ def do_completion(self, value=None, forward_completion=True):
+ if not value:
+ value = self.path_entry.get_text()
+ self.path_entry.text_entry.set_position(len(value))
+ opts = {}
+ opts['show_hidden_files'] = self.completion_popup.show_hidden_files
+ opts['completion_text'] = value
+ opts['forward_completion'] = forward_completion
+ self._start_completion(opts)
+
+ def _start_completion(self, args):
+ args = get_completion_paths(args)
+ self._end_completion(args)
+
+ def _end_completion(self, args):
+ value = args['completion_text']
+ paths = args['paths']
+
+ if args['forward_completion']:
+ common_prefix = os.path.commonprefix(paths)
+ if len(common_prefix) > len(value):
+ self.path_entry.set_text(
+ common_prefix, set_file_chooser_folder=True, trigger_event=True
+ )
+
+ self.path_entry.text_entry.set_position(len(self.path_entry.get_text()))
+ self.completion_popup.set_values(paths, preserve_selection=True)
+
+ if self.use_popup and len(paths) > 1:
+ self.completion_popup.popup()
+ elif self.completion_popup.is_popped_up() and args['forward_completion']:
+ self.completion_popup.popdown()
+
+
+class PathChooserComboBox(Gtk.Box, StoredValuesPopup, GObject.GObject):
+ __gsignals__ = {
+ signal: (SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (object,))
+ for signal in [
+ 'text-changed',
+ 'accelerator-set',
+ 'max-rows-changed',
+ 'list-value-added',
+ 'list-value-removed',
+ 'list-values-changed',
+ 'list-values-reordered',
+ 'show-path-entry-toggled',
+ 'show-filechooser-toggled',
+ 'show-hidden-files-toggled',
+ 'show-folder-name-on-button',
+ 'auto-complete-enabled-toggled',
+ ]
+ }
+
+ def __init__(
+ self,
+ max_visible_rows=20,
+ auto_complete=True,
+ use_completer_popup=True,
+ parent=None,
+ ):
+ Gtk.Box.__init__(self)
+ GObject.GObject.__init__(self)
+ self.list_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing=0)
+ self._stored_values_popping_down = False
+ self.filechooser_visible = True
+ self.filechooser_enabled = True
+ self.path_entry_visible = True
+ self.properties_enabled = True
+ self.show_folder_name_on_button = False
+ self.setting_accelerator_key = False
+ self.builder = Gtk.Builder()
+ self.parent = parent
+ self.popup_buttonbox = self.builder.get_object('buttonbox')
+ self.builder.add_from_file(
+ resource_filename(
+ __package__, os.path.join('glade', 'path_combo_chooser.ui')
+ )
+ )
+ self.button_toggle = self.builder.get_object('button_toggle_dropdown')
+ self.text_entry = self.builder.get_object('entry_text')
+ self.open_filechooser_dialog_button = self.builder.get_object(
+ 'button_open_dialog'
+ )
+ self.filechooser_button = self.open_filechooser_dialog_button
+ self.filechooserdialog = self.builder.get_object('filechooserdialog')
+ self.filechooserdialog.set_transient_for(self.parent)
+ self.filechooser_widget = self.builder.get_object('filechooser_widget')
+ self.folder_name_label = self.builder.get_object('folder_name_label')
+ self.default_text = None
+ self.button_properties = self.builder.get_object('button_properties')
+
+ self.combobox_window = self.builder.get_object('combobox_window')
+ self.combo_hbox = self.builder.get_object('entry_combobox_hbox')
+ # Change the parent of the hbox from the glade Window to this hbox.
+ self.combobox_window.remove(self.combo_hbox)
+ self.combobox_window = self.get_window()
+ self.add(self.combo_hbox)
+ StoredValuesPopup.__init__(
+ self, self.builder, self, max_visible_rows, self.combo_hbox
+ )
+
+ self.tooltips = Gtk.Tooltip()
+ self.auto_completer = PathAutoCompleter(self.builder, self, max_visible_rows)
+ self.auto_completer.set_use_popup(use_completer_popup)
+ self.auto_completer.auto_complete_enabled = auto_complete
+ self._setup_config_dialog()
+
+ signal_handlers = {
+ 'on_button_toggle_dropdown_toggled': self._on_button_toggle_dropdown_toggled,
+ 'on_entry_text_key_press_event': self._on_entry_text_key_press_event,
+ 'on_stored_values_popup_window_hide': self._on_stored_values_popup_window_hide,
+ 'on_button_toggle_dropdown_button_press_event': self._on_button_toggle_dropdown_button_press_event,
+ 'on_entry_combobox_hbox_realize': self._on_entry_combobox_hbox_realize,
+ 'on_button_open_dialog_clicked': self._on_button_open_dialog_clicked,
+ 'on_entry_text_focus_out_event': self._on_entry_text_focus_out_event,
+ 'on_entry_text_changed': self.on_entry_text_changed,
+ }
+ signal_handlers.update(self.signal_handlers)
+ signal_handlers.update(self.auto_completer.signal_handlers)
+ signal_handlers.update(self.config_dialog_signal_handlers)
+ self.builder.connect_signals(signal_handlers)
+
+ def get_text(self):
+ """
+ Get the current text in the Entry
+ """
+ return self.text_entry.get_text()
+
+ def set_text(
+ self,
+ text,
+ set_file_chooser_folder=True,
+ cursor_end=True,
+ default_text=False,
+ trigger_event=False,
+ ):
+ """
+ Set the text for the entry.
+
+ """
+ old_text = self.text_entry.get_text()
+ # We must block the "delete-text" signal to avoid the signal handler being called
+ self.text_entry.handler_block_by_func(
+ self.auto_completer.on_entry_text_delete_text
+ )
+ self.text_entry.set_text(text)
+ self.text_entry.handler_unblock_by_func(
+ self.auto_completer.on_entry_text_delete_text
+ )
+
+ self.text_entry.select_region(0, 0)
+ self.text_entry.set_position(len(text) if cursor_end else 0)
+ self.set_selected_value(text, select_first=True)
+ self.combo_hbox.set_tooltip_text(text)
+ if default_text:
+ self.default_text = text
+ self.button_default.set_tooltip_text(
+ 'Restore the default value in the text entry:\n%s' % self.default_text
+ )
+ self.button_default.set_sensitive(True)
+ # Set text for the filechooser dialog button
+ folder_name = ''
+ if self.show_folder_name_on_button or not self.path_entry_visible:
+ folder_name = path_without_trailing_path_sep(text)
+ if folder_name != '/' and os.path.basename(folder_name):
+ folder_name = os.path.basename(folder_name)
+ self.folder_name_label.set_text(folder_name)
+ # Only trigger event if text has changed
+ if old_text != text and trigger_event:
+ self.on_entry_text_changed(self.text_entry)
+
+ def set_sensitive(self, sensitive):
+ """
+ Set the path chooser widgets sensitive
+
+ :param sensitive: if the widget should be sensitive
+ :type sensitive: bool
+
+ """
+ self.text_entry.set_sensitive(sensitive)
+ self.filechooser_button.set_sensitive(sensitive)
+ self.button_toggle.set_sensitive(sensitive)
+
+ def get_accelerator_string(self):
+ return self.auto_completer.accelerator_string
+
+ def set_accelerator_string(self, accelerator):
+ """
+ Set the accelerator string to trigger auto-completion
+ """
+ if accelerator is None:
+ return
+ try:
+ # Verify that the accelerator can be parsed
+ keyval, mask = Gtk.accelerator_parse(self.auto_completer.accelerator_string)
+ self.auto_completer.accelerator_string = accelerator
+ except TypeError as ex:
+ raise TypeError('TypeError when setting accelerator string: %s' % ex)
+
+ def get_auto_complete_enabled(self):
+ return self.auto_completer.auto_complete_enabled
+
+ def set_auto_complete_enabled(self, enable):
+ if not isinstance(enable, bool):
+ return
+ self.auto_completer.auto_complete_enabled = enable
+
+ def get_show_folder_name_on_button(self):
+ return self.show_folder_name_on_button
+
+ def set_show_folder_name_on_button(self, show):
+ if not isinstance(show, bool):
+ return
+ self.show_folder_name_on_button = show
+ self._set_path_entry_filechooser_widths()
+
+ def get_filechooser_button_enabled(self):
+ return self.filechooser_enabled
+
+ def set_filechooser_button_enabled(self, enable):
+ """
+ Enable/disable the filechooser button.
+
+ By setting filechooser disabled, in will not be possible
+ to change the settings in the properties.
+ """
+ if not isinstance(enable, bool):
+ return
+ self.filechooser_enabled = enable
+ if not enable:
+ self.set_filechooser_button_visible(False, update=False)
+
+ def get_filechooser_button_visible(self):
+ return self.filechooser_visible
+
+ def set_filechooser_button_visible(self, visible, update=True):
+ """
+ Set file chooser button entry visible
+ """
+ if not isinstance(visible, bool):
+ return
+ if update:
+ self.filechooser_visible = visible
+ if visible and not self.filechooser_enabled:
+ return
+ if visible:
+ self.filechooser_button.show()
+ else:
+ self.filechooser_button.hide()
+ # Update width properties
+ self._set_path_entry_filechooser_widths()
+
+ def get_path_entry_visible(self):
+ return self.path_entry_visible
+
+ def set_path_entry_visible(self, visible):
+ """
+ Set the path entry visible
+ """
+ if not isinstance(visible, bool):
+ return
+ self.path_entry_visible = visible
+ if visible:
+ self.text_entry.show()
+ else:
+ self.text_entry.hide()
+ self._set_path_entry_filechooser_widths()
+
+ def get_show_hidden_files(self):
+ return self.auto_completer.completion_popup.show_hidden_files
+
+ def set_show_hidden_files(self, show, do_completion=False, emit_event=False):
+ """
+ Enable/disable showing hidden files on path completion
+ """
+ if not isinstance(show, bool):
+ return
+ self.auto_completer.completion_popup.show_hidden_files = show
+ if do_completion:
+ self.auto_completer.do_completion()
+ if emit_event:
+ self.emit('show-hidden-files-toggled', show)
+
+ def set_enable_properties(self, enable):
+ """
+ Enable/disable the config properties
+ """
+ if not isinstance(enable, bool):
+ return
+ self.properties_enabled = enable
+ if self.properties_enabled:
+ self.popup_buttonbox.add(self.button_properties)
+ else:
+ self.popup_buttonbox.remove(self.button_properties)
+
+ def set_auto_completer_func(self, func):
+ """
+ Set the function to be called when the auto completion
+ accelerator is triggered.
+ """
+ self.auto_completer._start_completion = func
+
+ def complete(self, args):
+ """
+ Perform the auto completion with the provided paths
+ """
+ self.auto_completer._end_completion(args)
+
+ ##############
+ # Callbacks and internal functions
+ ##############
+
+ def on_entry_text_changed(self, entry):
+ self.emit('text-changed', self.get_text())
+
+ def _on_entry_text_focus_out_event(self, widget, event):
+ # FIXME: This causes text to be deselected on right-click.
+ # Update text on the button label
+ self.set_text(self.get_text())
+
+ def _set_path_entry_filechooser_widths(self):
+ if self.path_entry_visible:
+ self.combo_hbox.set_child_packing(
+ self.filechooser_button, 0, 0, 0, Gtk.PackType.START
+ )
+ width, height = self.folder_name_label.get_size_request()
+ width = 120
+ if not self.show_folder_name_on_button:
+ width = 0
+ self.folder_name_label.set_size_request(width, height)
+ self.combo_hbox.set_child_packing(
+ self.filechooser_button, 0, 0, 0, Gtk.PackType.START
+ )
+ else:
+ self.combo_hbox.set_child_packing(
+ self.filechooser_button, 1, 1, 0, Gtk.PackType.START
+ )
+ self.folder_name_label.set_size_request(-1, -1)
+ # Update text on the button label
+ self.set_text(self.get_text())
+
+ def _on_entry_combobox_hbox_realize(self, widget):
+ """Must do this when the widget is realized"""
+ self.set_filechooser_button_visible(self.filechooser_visible)
+ self.set_path_entry_visible(self.path_entry_visible)
+
+ def _on_button_open_dialog_clicked(self, widget):
+ self.filechooser_widget.set_current_folder(self.get_text())
+ response_id = self.filechooserdialog.run()
+
+ if response_id == 0:
+ text = self.filechooser_widget.get_filename()
+ self.set_text(text, trigger_event=True)
+ self.filechooserdialog.hide()
+
+ def _on_entry_text_key_press_event(self, widget, event):
+ """
+ Listen to key events on the entry widget.
+
+ Arrow up/down will change the value of the entry according to the
+ current selection in the list.
+ Enter will show the popup.
+
+ Return True whenever we want no other event listeners to be called.
+
+ """
+ # on_entry_text_key_press_event Errors follow here when pressing ALT key while popup is visible")
+ keyval = event.keyval
+ state = event.get_state() & Gtk.accelerator_get_default_mod_mask()
+ ctrl = event.get_state() & Gdk.ModifierType.CONTROL_MASK
+
+ # Select new row with arrow up/down is pressed
+ if key_is_up_or_down(keyval):
+ self.handle_list_scroll(_next=key_is_down(keyval), set_entry=True)
+ return True
+ elif self.auto_completer.is_auto_completion_accelerator(keyval, state):
+ if self.auto_completer.auto_complete_enabled:
+ self.auto_completer.do_completion()
+ return True
+ # Show popup when Enter is pressed
+ elif key_is_enter(keyval):
+ # This sets the toggle active which results in
+ # on_button_toggle_dropdown_toggled being called which initiates the popup
+ self.button_toggle.set_active(True)
+ return True
+ elif ctrl:
+ # Swap the show hidden files value on CTRL-h
+ if is_ascii_value(keyval, 'h'):
+ # Set show/hide hidden files
+ self.set_show_hidden_files(
+ not self.get_show_hidden_files(), emit_event=True
+ )
+ return True
+ elif is_ascii_value(keyval, 's'):
+ super().add_current_value_to_saved_list()
+ return True
+ elif is_ascii_value(keyval, 'd'):
+ # Set the default value in the text entry
+ self.set_text(self.default_text, trigger_event=True)
+ return True
+ return False
+
+ def _on_button_toggle_dropdown_toggled(self, button):
+ """
+ Shows the popup when clicking the toggle button.
+ """
+ if self._stored_values_popping_down:
+ return
+ self.popup()
+
+ def _on_stored_values_popup_window_hide(self, popup):
+ """Make sure the button toggle is removed when popup is closed"""
+ self._stored_values_popping_down = True
+ self.button_toggle.set_active(False)
+ self._stored_values_popping_down = False
+
+ ##############
+ # Config dialog
+ ##############
+
+ def _on_button_toggle_dropdown_button_press_event(self, widget, event):
+ """Show config when right clicking dropdown toggle button"""
+ if not self.properties_enabled:
+ return False
+ # This is right click
+ if event.button == 3:
+ self._on_button_properties_clicked(widget)
+ return True
+
+ def _on_button_properties_clicked(self, widget):
+ self.popdown()
+ self.enable_completion.set_active(self.get_auto_complete_enabled())
+ # Set the value of the label to the current accelerator
+ keyval, mask = Gtk.accelerator_parse(self.auto_completer.accelerator_string)
+ self.accelerator_label.set_text(Gtk.accelerator_get_label(keyval, mask))
+ self.visible_rows.set_value(self.get_max_popup_rows())
+ self.show_filechooser_checkbutton.set_active(
+ self.get_filechooser_button_visible()
+ )
+ self.show_path_entry_checkbutton.set_active(self.path_entry_visible)
+ self.show_hidden_files_checkbutton.set_active(self.get_show_hidden_files())
+ self.show_folder_name_on_button_checkbutton.set_active(
+ self.get_show_folder_name_on_button()
+ )
+ self._set_properties_widgets_sensitive(True)
+ self.config_dialog.show_all()
+
+ def _set_properties_widgets_sensitive(self, val):
+ self.enable_completion.set_sensitive(val)
+ self.config_short_cuts_frame.set_sensitive(val)
+ self.config_general_frame.set_sensitive(val)
+ self.show_hidden_files_checkbutton.set_sensitive(val)
+
+ def _setup_config_dialog(self):
+ self.config_dialog = self.builder.get_object('completion_config_dialog')
+ self.enable_completion = self.builder.get_object(
+ 'enable_auto_completion_checkbutton'
+ )
+ self.show_filechooser_checkbutton = self.builder.get_object(
+ 'show_filechooser_checkbutton'
+ )
+ self.show_path_entry_checkbutton = self.builder.get_object(
+ 'show_path_entry_checkbutton'
+ )
+ set_key_button = self.builder.get_object('set_completion_accelerator_button')
+ default_set_accelerator_tooltip = set_key_button.get_tooltip_text()
+ self.config_short_cuts_frame = self.builder.get_object(
+ 'config_short_cuts_frame'
+ )
+ self.config_general_frame = self.builder.get_object('config_general_frame')
+ self.accelerator_label = self.builder.get_object('completion_accelerator_label')
+ self.visible_rows = self.builder.get_object('visible_rows_spinbutton')
+ self.visible_rows_label = self.builder.get_object('visible_rows_label')
+ self.show_hidden_files_checkbutton = self.builder.get_object(
+ 'show_hidden_files_checkbutton'
+ )
+ self.show_folder_name_on_button_checkbutton = self.builder.get_object(
+ 'show_folder_name_on_button_checkbutton'
+ )
+ self.config_dialog.set_transient_for(self.parent)
+
+ def on_close(widget, event=None):
+ if not self.setting_accelerator_key:
+ self.config_dialog.hide()
+ else:
+ stop_setting_accelerator()
+ return True
+
+ def on_enable_completion_toggled(widget):
+ self.set_auto_complete_enabled(self.enable_completion.get_active())
+ self.emit(
+ 'auto-complete-enabled-toggled', self.enable_completion.get_active()
+ )
+
+ def on_show_filechooser_toggled(widget):
+ self.set_filechooser_button_visible(
+ self.show_filechooser_checkbutton.get_active()
+ )
+ self.emit(
+ 'show-filechooser-toggled',
+ self.show_filechooser_checkbutton.get_active(),
+ )
+ self.show_folder_name_on_button_checkbutton.set_sensitive(
+ self.show_path_entry_checkbutton.get_active()
+ and self.show_filechooser_checkbutton.get_active()
+ )
+ if not self.filechooser_visible and not self.path_entry_visible:
+ self.show_path_entry_checkbutton.set_active(True)
+ on_show_path_entry_toggled(None)
+
+ def on_show_path_entry_toggled(widget):
+ self.set_path_entry_visible(self.show_path_entry_checkbutton.get_active())
+ self.emit(
+ 'show-path-entry-toggled', self.show_path_entry_checkbutton.get_active()
+ )
+ self.show_folder_name_on_button_checkbutton.set_sensitive(
+ self.show_path_entry_checkbutton.get_active()
+ and self.show_filechooser_checkbutton.get_active()
+ )
+ if not self.filechooser_visible and not self.path_entry_visible:
+ self.show_filechooser_checkbutton.set_active(True)
+ on_show_filechooser_toggled(None)
+
+ def on_show_folder_name_on_button(widget):
+ self.set_show_folder_name_on_button(
+ self.show_folder_name_on_button_checkbutton.get_active()
+ )
+ self._set_path_entry_filechooser_widths()
+ self.emit(
+ 'show-folder-name-on-button',
+ self.show_folder_name_on_button_checkbutton.get_active(),
+ )
+
+ def on_show_hidden_files_toggled(widget):
+ self.set_show_hidden_files(
+ self.show_hidden_files_checkbutton.get_active(), emit_event=True
+ )
+
+ def on_max_rows_changed(widget):
+ self.set_max_popup_rows(self.visible_rows.get_value_as_int())
+ self.emit('max-rows-changed', self.visible_rows.get_value_as_int())
+
+ def set_accelerator(widget):
+ self.setting_accelerator_key = True
+ set_key_button.set_tooltip_text(
+ 'Press the accelerator keys for triggering auto-completion'
+ )
+ self._set_properties_widgets_sensitive(False)
+ return True
+
+ def stop_setting_accelerator():
+ self.setting_accelerator_key = False
+ self._set_properties_widgets_sensitive(True)
+ set_key_button.set_active(False)
+ # Restore default tooltip
+ set_key_button.set_tooltip_text(default_set_accelerator_tooltip)
+
+ def on_completion_config_dialog_key_release_event(widget, event):
+ # We are listening for a new key
+ if set_key_button.get_active():
+ state = event.get_state() & Gtk.accelerator_get_default_mod_mask()
+ accelerator_mask = state.numerator
+ # If e.g. only CTRL key is pressed.
+ if not Gtk.accelerator_valid(event.keyval, accelerator_mask):
+ accelerator_mask = 0
+ self.auto_completer.accelerator_string = Gtk.accelerator_name(
+ event.keyval, accelerator_mask
+ )
+ self.accelerator_label.set_text(
+ Gtk.accelerator_get_label(event.keyval, accelerator_mask)
+ )
+ self.emit('accelerator-set', self.auto_completer.accelerator_string)
+ stop_setting_accelerator()
+ return True
+ else:
+ keyval = event.keyval
+ ctrl = event.get_state() & Gdk.ModifierType.CONTROL_MASK
+ if ctrl:
+ # Set show/hide hidden files
+ if is_ascii_value(keyval, 'h'):
+ self.show_hidden_files_checkbutton.set_active(
+ not self.get_show_hidden_files()
+ )
+ return True
+
+ def on_set_completion_accelerator_button_clicked(widget):
+ if not set_key_button.get_active():
+ stop_setting_accelerator()
+ return True
+
+ self.config_dialog_signal_handlers = {
+ 'on_enable_auto_completion_checkbutton_toggled': on_enable_completion_toggled,
+ 'on_show_filechooser_checkbutton_toggled': on_show_filechooser_toggled,
+ 'on_show_path_entry_checkbutton_toggled': on_show_path_entry_toggled,
+ 'on_show_folder_name_on_button_checkbutton_toggled': on_show_folder_name_on_button,
+ 'on_config_dialog_button_close_clicked': on_close,
+ 'on_visible_rows_spinbutton_value_changed': on_max_rows_changed,
+ 'on_completion_config_dialog_delete_event': on_close,
+ 'on_set_completion_accelerator_button_pressed': set_accelerator,
+ 'on_completion_config_dialog_key_release_event': on_completion_config_dialog_key_release_event,
+ 'on_set_completion_accelerator_button_clicked': on_set_completion_accelerator_button_clicked,
+ 'on_show_hidden_files_checkbutton_toggled': on_show_hidden_files_toggled,
+ }
+
+
+GObject.type_register(PathChooserComboBox)
+
+
+if __name__ == '__main__':
+ import signal
+
+ # necessary to exit with CTRL-C (https://bugzilla.gnome.org/show_bug.cgi?id=622084)
+ signal.signal(signal.SIGINT, signal.SIG_DFL)
+ import sys
+
+ w = Gtk.Window()
+ w.set_position(Gtk.WindowPosition.CENTER)
+ w.set_size_request(600, -1)
+ w.set_title('ComboEntry example')
+ w.connect('delete-event', Gtk.main_quit)
+
+ box1 = Gtk.Box.new(Gtk.Orientation.VERTICAL, spacing=0)
+
+ def get_resource2(filename):
+ return f'{os.path.abspath(os.path.dirname(sys.argv[0]))}/glade/{filename}'
+
+ # Override get_resource which fetches from deluge install
+ # get_resource = get_resource2
+
+ entry1 = PathChooserComboBox(max_visible_rows=15)
+ entry2 = PathChooserComboBox()
+
+ box1.add(entry1)
+ box1.add(entry2)
+
+ test_paths = [
+ '/home/bro/Downloads',
+ '/media/Movies-HD',
+ '/media/torrent/in',
+ '/media/Live-show/Misc',
+ '/media/Live-show/Consert',
+ '/media/Series/1/',
+ '/media/Series/2',
+ '/media/Series/17',
+ '/media/Series/18',
+ '/media/Series/19',
+ ]
+
+ entry1.add_values(test_paths)
+ entry1.set_text('/home/bro/', default_text=True)
+ entry2.set_text(
+ '/home/bro/programmer/deluge/deluge-yarss-plugin/build/lib/yarss2/include/bs4/tests/',
+ cursor_end=False,
+ )
+
+ entry2.set_filechooser_button_visible(False)
+ # entry2.set_enable_properties(False)
+ entry2.set_filechooser_button_enabled(False)
+
+ def list_value_added_event(widget, values):
+ print('Current list values:', widget.get_values())
+
+ entry1.connect('list-value-added', list_value_added_event)
+ entry2.connect('list-value-added', list_value_added_event)
+ w.add(box1)
+ w.show_all()
+ Gtk.main()
diff --git a/deluge/ui/gtk3/peers_tab.py b/deluge/ui/gtk3/peers_tab.py
new file mode 100644
index 0000000..5768fbe
--- /dev/null
+++ b/deluge/ui/gtk3/peers_tab.py
@@ -0,0 +1,382 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os.path
+
+from gi.repository.GdkPixbuf import Pixbuf
+from gi.repository.Gtk import (
+ Builder,
+ CellRendererPixbuf,
+ CellRendererProgress,
+ CellRendererText,
+ ListStore,
+ TreeViewColumn,
+ TreeViewColumnSizing,
+)
+
+import deluge.common
+import deluge.component as component
+from deluge.ui.client import client
+from deluge.ui.countries import COUNTRIES
+
+from .common import (
+ icon_downloading,
+ icon_seeding,
+ load_pickled_state_file,
+ parse_ip_port,
+ save_pickled_state_file,
+)
+from .torrentdetails import Tab
+from .torrentview_data_funcs import (
+ cell_data_peer_progress,
+ cell_data_speed_down,
+ cell_data_speed_up,
+)
+
+log = logging.getLogger(__name__)
+
+
+class PeersTab(Tab):
+ def __init__(self):
+ super().__init__('Peers', 'peers_tab', 'peers_tab_label')
+
+ self.peer_menu = self.main_builder.get_object('menu_peer_tab')
+ component.get('MainWindow').connect_signals(self)
+
+ self.listview = self.main_builder.get_object('peers_listview')
+ self.listview.props.has_tooltip = True
+ self.listview.connect('button-press-event', self._on_button_press_event)
+ self.listview.connect('query-tooltip', self._on_query_tooltip)
+
+ # flag, ip, client, downspd, upspd, country code, int_ip, seed/peer icon, progress
+ self.liststore = ListStore(
+ Pixbuf, str, str, int, int, str, float, Pixbuf, float
+ )
+ self.cached_flag_pixbufs = {}
+
+ self.seed_pixbuf = icon_seeding
+ self.peer_pixbuf = icon_downloading
+
+ # key is ip address, item is row iter
+ self.peers = {}
+
+ # Country column
+ column = TreeViewColumn()
+ render = CellRendererPixbuf()
+ column.pack_start(render, False)
+ column.add_attribute(render, 'pixbuf', 0)
+ column.set_sort_column_id(5)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(20)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ # Address column
+ column = TreeViewColumn(_('Address'))
+ render = CellRendererPixbuf()
+ column.pack_start(render, False)
+ column.add_attribute(render, 'pixbuf', 7)
+ render = CellRendererText()
+ column.pack_start(render, False)
+ column.add_attribute(render, 'text', 1)
+ column.set_sort_column_id(6)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(100)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ # Client column
+ column = TreeViewColumn(_('Client'))
+ render = CellRendererText()
+ column.pack_start(render, False)
+ column.add_attribute(render, 'text', 2)
+ column.set_sort_column_id(2)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(100)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ # Progress column
+ column = TreeViewColumn(_('Progress'))
+ render = CellRendererProgress()
+ column.pack_start(render, True)
+ column.set_cell_data_func(render, cell_data_peer_progress, 8)
+ column.set_sort_column_id(8)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(100)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ # Down Speed column
+ column = TreeViewColumn(_('Down Speed'))
+ render = CellRendererText()
+ column.pack_start(render, False)
+ column.set_cell_data_func(render, cell_data_speed_down, 3)
+ column.set_sort_column_id(3)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(50)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ # Up Speed column
+ column = TreeViewColumn(_('Up Speed'))
+ render = CellRendererText()
+ column.pack_start(render, False)
+ column.set_cell_data_func(render, cell_data_speed_up, 4)
+ column.set_sort_column_id(4)
+ column.set_clickable(True)
+ column.set_resizable(True)
+ column.set_expand(False)
+ column.set_min_width(50)
+ # Bugfix: Last column needs max_width set to stop scrollbar appearing
+ column.set_max_width(150)
+ column.set_reorderable(True)
+ self.listview.append_column(column)
+
+ self.listview.set_model(self.liststore)
+
+ self.load_state()
+
+ self.torrent_id = None
+
+ def save_state(self):
+ # Get the current sort order of the view
+ column_id, sort_order = self.liststore.get_sort_column_id()
+
+ # Setup state dict
+ state = {
+ 'columns': {},
+ 'sort_id': column_id,
+ 'sort_order': int(sort_order) if sort_order else None,
+ }
+
+ for index, column in enumerate(self.listview.get_columns()):
+ state['columns'][column.get_title()] = {
+ 'position': index,
+ 'width': column.get_width(),
+ }
+ save_pickled_state_file('peers_tab.state', state)
+
+ def load_state(self):
+ state = load_pickled_state_file('peers_tab.state')
+
+ if state is None:
+ return
+
+ if len(state['columns']) != len(self.listview.get_columns()):
+ log.warning('peers_tab.state is not compatible! rejecting..')
+ return
+
+ if state['sort_id'] and state['sort_order'] is not None:
+ self.liststore.set_sort_column_id(state['sort_id'], state['sort_order'])
+
+ for index, column in enumerate(self.listview.get_columns()):
+ cname = column.get_title()
+ if cname in state['columns']:
+ cstate = state['columns'][cname]
+ column.set_sizing(TreeViewColumnSizing.FIXED)
+ column.set_fixed_width(cstate['width'] if cstate['width'] > 0 else 10)
+ if state['sort_id'] == index and state['sort_order'] is not None:
+ column.set_sort_indicator(True)
+ column.set_sort_order(state['sort_order'])
+ if cstate['position'] != index:
+ # Column is in wrong position
+ if cstate['position'] == 0:
+ self.listview.move_column_after(column, None)
+ elif (
+ self.listview.get_columns()[cstate['position'] - 1].get_title()
+ != cname
+ ):
+ self.listview.move_column_after(
+ column, self.listview.get_columns()[cstate['position'] - 1]
+ )
+
+ def update(self):
+ # Get the first selected torrent
+ torrent_id = component.get('TorrentView').get_selected_torrents()
+
+ # Only use the first torrent in the list or return if None selected
+ if len(torrent_id) != 0:
+ torrent_id = torrent_id[0]
+ else:
+ # No torrent is selected in the torrentview
+ self.liststore.clear()
+ return
+
+ if torrent_id != self.torrent_id:
+ # We only want to do this if the torrent_id has changed
+ self.liststore.clear()
+ self.peers = {}
+ self.torrent_id = torrent_id
+
+ component.get('SessionProxy').get_torrent_status(
+ torrent_id, ['peers']
+ ).addCallback(self._on_get_torrent_status)
+
+ def get_flag_pixbuf(self, country):
+ if not country.strip():
+ return None
+
+ if country not in self.cached_flag_pixbufs:
+ # We haven't created a pixbuf for this country yet
+ try:
+ self.cached_flag_pixbufs[country] = Pixbuf.new_from_file(
+ deluge.common.resource_filename(
+ 'deluge',
+ os.path.join(
+ 'ui', 'data', 'pixmaps', 'flags', country.lower() + '.png'
+ ),
+ )
+ )
+ except Exception as ex:
+ log.debug('Unable to load flag: %s', ex)
+ return None
+
+ return self.cached_flag_pixbufs[country]
+
+ def _on_get_torrent_status(self, status):
+ new_ips = set()
+ for peer in status['peers']:
+ new_ips.add(peer['ip'])
+ if peer['ip'] in self.peers:
+ # We already have this peer in our list, so lets just update it
+ row = self.peers[peer['ip']]
+ if not self.liststore.iter_is_valid(row):
+ # This iter is invalid, delete it and continue to next iteration
+ del self.peers[peer['ip']]
+ continue
+ values = self.liststore.get(row, 3, 4, 5, 7, 8)
+ if peer['down_speed'] != values[0]:
+ self.liststore.set_value(row, 3, peer['down_speed'])
+ if peer['up_speed'] != values[1]:
+ self.liststore.set_value(row, 4, peer['up_speed'])
+ if peer['country'] != values[2]:
+ self.liststore.set_value(row, 5, peer['country'])
+ self.liststore.set_value(
+ row, 0, self.get_flag_pixbuf(peer['country'])
+ )
+ if peer['seed']:
+ icon = self.seed_pixbuf
+ else:
+ icon = self.peer_pixbuf
+
+ if icon != values[3]:
+ self.liststore.set_value(row, 7, icon)
+
+ if peer['progress'] != values[4]:
+ self.liststore.set_value(row, 8, peer['progress'])
+ else:
+ # Peer is not in list so we need to add it
+
+ # Create an int IP address for sorting purposes
+ if peer['ip'].count(':') == 1:
+ # This is an IPv4 address
+ ip_int = sum(
+ int(byte) << shift
+ for byte, shift in zip(
+ peer['ip'].split(':')[0].split('.'), (24, 16, 8, 0)
+ )
+ )
+ peer_ip = peer['ip']
+ else:
+ # This is an IPv6 address
+ import binascii
+ import socket
+
+ # Split out the :port
+ ip = ':'.join(peer['ip'].split(':')[:-1])
+ ip_int = int(
+ binascii.hexlify(socket.inet_pton(socket.AF_INET6, ip)), 16
+ )
+ peer_ip = '[{}]:{}'.format(ip, peer['ip'].split(':')[-1])
+
+ if peer['seed']:
+ icon = self.seed_pixbuf
+ else:
+ icon = self.peer_pixbuf
+
+ row = self.liststore.append(
+ [
+ self.get_flag_pixbuf(peer['country']),
+ peer_ip,
+ peer['client'],
+ peer['down_speed'],
+ peer['up_speed'],
+ peer['country'],
+ float(ip_int),
+ icon,
+ peer['progress'],
+ ]
+ )
+
+ self.peers[peer['ip']] = row
+
+ # Now we need to remove any ips that were not in status["peers"] list
+ for ip in set(self.peers).difference(new_ips):
+ self.liststore.remove(self.peers[ip])
+ del self.peers[ip]
+
+ def clear(self):
+ self.liststore.clear()
+
+ def _on_button_press_event(self, widget, event):
+ """This is a callback for showing the right-click context menu."""
+ log.debug('on_button_press_event')
+ # We only care about right-clicks
+ if self.torrent_id and event.button == 3:
+ self.peer_menu.popup(None, None, None, None, event.button, event.time)
+ return True
+
+ def _on_query_tooltip(self, widget, x, y, keyboard_tip, tooltip):
+ is_tooltip, x, y, model, path, _iter = widget.get_tooltip_context(
+ x, y, keyboard_tip
+ )
+ if is_tooltip:
+ country_code = model.get(_iter, 5)[0]
+ if country_code != ' ' and country_code in COUNTRIES:
+ tooltip.set_text(COUNTRIES[country_code])
+ # widget here is self.listview
+ widget.set_tooltip_cell(tooltip, path, widget.get_column(0), None)
+ return True
+ return False
+
+ def on_menuitem_add_peer_activate(self, menuitem):
+ """This is a callback for manually adding a peer"""
+ log.debug('on_menuitem_add_peer')
+ builder = Builder()
+ builder.add_from_file(
+ deluge.common.resource_filename(
+ __package__, os.path.join('glade', 'connect_peer_dialog.ui')
+ )
+ )
+ peer_dialog = builder.get_object('connect_peer_dialog')
+ txt_ip = builder.get_object('txt_ip')
+ response = peer_dialog.run()
+
+ if response:
+ value = txt_ip.get_text()
+ ip, port = parse_ip_port(value)
+ if ip and port:
+ log.info('Adding peer IP: %s port: %s to %s', ip, port, self.torrent_id)
+ client.core.connect_peer(self.torrent_id, ip, port)
+ else:
+ log.error('Error parsing peer "%s"', value)
+
+ peer_dialog.destroy()
+ return True
diff --git a/deluge/ui/gtk3/piecesbar.py b/deluge/ui/gtk3/piecesbar.py
new file mode 100644
index 0000000..a5bf865
--- /dev/null
+++ b/deluge/ui/gtk3/piecesbar.py
@@ -0,0 +1,225 @@
+#
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from math import pi
+
+import gi # isort:skip (Version check required before import).
+
+gi.require_version('PangoCairo', '1.0')
+gi.require_foreign('cairo')
+gi.require_version('cairo', '1.0')
+
+# isort:imports-thirdparty
+import cairo # Backward compat cairo <= 1.15
+from gi.repository import PangoCairo
+from gi.repository.Gtk import DrawingArea, ProgressBar, StateFlags
+from gi.repository.Pango import SCALE, Weight
+
+# isort:imports-firstparty
+from deluge.configmanager import ConfigManager
+
+COLOR_STATES = ['missing', 'waiting', 'downloading', 'completed']
+
+
+class PiecesBar(DrawingArea):
+ # Draw in response to an draw
+ __gsignals__ = {'draw': 'override'}
+
+ def __init__(self):
+ super().__init__()
+ # Get progress bar styles, in order to keep font consistency
+ pb = ProgressBar()
+ pb_style = pb.get_style_context()
+ # Get a copy of Pango.FontDescription since original needs freed.
+ self.text_font = pb_style.get_property('font', StateFlags.NORMAL).copy()
+ self.text_font.set_weight(Weight.BOLD)
+ # Done with the ProgressBar styles, don't keep refs of it
+ del pb, pb_style
+
+ self.set_size_request(-1, 25)
+ self.gtkui_config = ConfigManager('gtk3ui.conf')
+
+ self.width = self.prev_width = 0
+ self.height = self.prev_height = 0
+ self.pieces = self.prev_pieces = ()
+ self.num_pieces = None
+ self.text = self.prev_text = ''
+ self.fraction = self.prev_fraction = 0
+ self.progress_overlay = self.text_overlay = self.pieces_overlay = None
+
+ self.connect('size-allocate', self.do_size_allocate_event)
+ self.show()
+
+ def do_size_allocate_event(self, widget, size):
+ self.prev_width = self.width
+ self.width = size.width
+ self.prev_height = self.height
+ self.height = size.height
+
+ # Handle the draw by drawing
+ def do_draw(self, ctx):
+ ctx.set_line_width(max(ctx.device_to_user_distance(0.5, 0.5)))
+
+ # Restrict Cairo to the exposed area; avoid extra work
+ self.roundcorners_clipping(ctx)
+
+ self.draw_pieces(ctx)
+ self.draw_progress_overlay(ctx)
+ self.write_text(ctx)
+ self.roundcorners_border(ctx)
+
+ # Drawn once, update width, height
+ if self.resized():
+ self.prev_width = self.width
+ self.prev_height = self.height
+
+ def roundcorners_clipping(self, ctx):
+ self.create_roundcorners_subpath(ctx, 0, 0, self.width, self.height)
+ ctx.clip()
+
+ def roundcorners_border(self, ctx):
+ self.create_roundcorners_subpath(ctx, 0.5, 0.5, self.width - 1, self.height - 1)
+ ctx.set_source_rgba(0, 0, 0, 0.9)
+ ctx.stroke()
+
+ @staticmethod
+ def create_roundcorners_subpath(ctx, x, y, width, height):
+ aspect = 1.0
+ corner_radius = height / 10
+ radius = corner_radius / aspect
+ degrees = pi / 180
+ ctx.new_sub_path()
+ ctx.arc(x + width - radius, y + radius, radius, -90 * degrees, 0 * degrees)
+ ctx.arc(
+ x + width - radius, y + height - radius, radius, 0 * degrees, 90 * degrees
+ )
+ ctx.arc(x + radius, y + height - radius, radius, 90 * degrees, 180 * degrees)
+ ctx.arc(x + radius, y + radius, radius, 180 * degrees, 270 * degrees)
+ ctx.close_path()
+
+ def draw_pieces(self, ctx):
+ if not self.num_pieces:
+ return
+
+ if (
+ self.resized()
+ or self.pieces != self.prev_pieces
+ or self.pieces_overlay is None
+ ):
+ # Need to recreate the cache drawing
+ self.pieces_overlay = cairo.ImageSurface(
+ cairo.FORMAT_ARGB32, self.width, self.height
+ )
+ pieces_ctx = cairo.Context(self.pieces_overlay)
+
+ if self.pieces:
+ pieces = self.pieces
+ elif self.num_pieces:
+ # Completed torrents do not send any pieces so create list using 'completed' state.
+ pieces = [COLOR_STATES.index('completed')] * self.num_pieces
+ start_pos = 0
+ piece_width = self.width / len(pieces)
+ pieces_colors = [
+ [
+ color / 65535
+ for color in self.gtkui_config['pieces_color_%s' % state]
+ ]
+ for state in COLOR_STATES
+ ]
+ for state in pieces:
+ pieces_ctx.set_source_rgb(*pieces_colors[state])
+ pieces_ctx.rectangle(start_pos, 0, piece_width, self.height)
+ pieces_ctx.fill()
+ start_pos += piece_width
+
+ ctx.set_source_surface(self.pieces_overlay)
+ ctx.paint()
+
+ def draw_progress_overlay(self, ctx):
+ if not self.text:
+ return
+
+ if (
+ self.resized()
+ or self.fraction != self.prev_fraction
+ or self.progress_overlay is None
+ ):
+ # Need to recreate the cache drawing
+ self.progress_overlay = cairo.ImageSurface(
+ cairo.FORMAT_ARGB32, self.width, self.height
+ )
+ progress_ctx = cairo.Context(self.progress_overlay)
+ progress_ctx.set_source_rgba(0.1, 0.1, 0.1, 0.3) # Transparent
+ progress_ctx.rectangle(0, 0, self.width * self.fraction, self.height)
+ progress_ctx.fill()
+ ctx.set_source_surface(self.progress_overlay)
+ ctx.paint()
+
+ def write_text(self, ctx):
+ if not self.text:
+ return
+
+ if self.resized() or self.text != self.prev_text or self.text_overlay is None:
+ # Need to recreate the cache drawing
+ self.text_overlay = cairo.ImageSurface(
+ cairo.FORMAT_ARGB32, self.width, self.height
+ )
+ text_ctx = cairo.Context(self.text_overlay)
+ pl = PangoCairo.create_layout(text_ctx)
+ pl.set_font_description(self.text_font)
+ pl.set_width(-1) # No text wrapping
+ pl.set_text(self.text, -1)
+ plsize = pl.get_size()
+ text_width = plsize[0] // SCALE
+ text_height = plsize[1] // SCALE
+ area_width_without_text = self.width - text_width
+ area_height_without_text = self.height - text_height
+ text_ctx.move_to(
+ area_width_without_text // 2, area_height_without_text // 2
+ )
+ text_ctx.set_source_rgb(1, 1, 1)
+ PangoCairo.update_layout(text_ctx, pl)
+ PangoCairo.show_layout(text_ctx, pl)
+ ctx.set_source_surface(self.text_overlay)
+ ctx.paint()
+
+ def resized(self):
+ return self.prev_width != self.width or self.prev_height != self.height
+
+ def set_fraction(self, fraction):
+ self.prev_fraction = self.fraction
+ self.fraction = fraction
+
+ def get_fraction(self):
+ return self.fraction
+
+ def get_text(self):
+ return self.text
+
+ def set_text(self, text):
+ self.prev_text = self.text
+ self.text = text
+
+ def set_pieces(self, pieces, num_pieces):
+ self.prev_pieces = self.pieces
+ self.pieces = pieces
+ self.num_pieces = num_pieces
+
+ def get_pieces(self):
+ return self.pieces
+
+ def clear(self):
+ self.pieces = self.prev_pieces = ()
+ self.num_pieces = None
+ self.text = self.prev_text = ''
+ self.fraction = self.prev_fraction = 0
+ self.progress_overlay = self.text_overlay = self.pieces_overlay = None
+ self.update()
+
+ def update(self):
+ self.queue_draw()
diff --git a/deluge/ui/gtk3/pluginmanager.py b/deluge/ui/gtk3/pluginmanager.py
new file mode 100644
index 0000000..63353c0
--- /dev/null
+++ b/deluge/ui/gtk3/pluginmanager.py
@@ -0,0 +1,134 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+import deluge.pluginmanagerbase
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+log = logging.getLogger(__name__)
+
+
+class PluginManager(deluge.pluginmanagerbase.PluginManagerBase, component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'PluginManager')
+ self.config = ConfigManager('gtk3ui.conf')
+ deluge.pluginmanagerbase.PluginManagerBase.__init__(
+ self, 'gtk3ui.conf', 'deluge.plugin.gtk3ui'
+ )
+
+ self.hooks = {'on_apply_prefs': [], 'on_show_prefs': []}
+
+ client.register_event_handler(
+ 'PluginEnabledEvent', self._on_plugin_enabled_event
+ )
+ client.register_event_handler(
+ 'PluginDisabledEvent', self._on_plugin_disabled_event
+ )
+
+ def register_hook(self, hook, function):
+ """Register a hook function with the plugin manager"""
+ try:
+ self.hooks[hook].append(function)
+ except KeyError:
+ log.warning('Plugin attempting to register invalid hook.')
+
+ def deregister_hook(self, hook, function):
+ """Deregisters a hook function"""
+ try:
+ self.hooks[hook].remove(function)
+ except KeyError:
+ log.warning('Unable to deregister hook %s', hook)
+
+ def start(self):
+ """Start the plugin manager"""
+ # Update the enabled_plugins from the core
+ client.core.get_enabled_plugins().addCallback(self._on_get_enabled_plugins)
+ for instance in self.plugins.values():
+ component.start([instance.plugin._component_name])
+
+ def stop(self):
+ # Disable the plugins
+ self.disable_plugins()
+
+ def update(self):
+ pass
+
+ def _on_get_enabled_plugins(self, enabled_plugins):
+ log.debug('Core has these plugins enabled: %s', enabled_plugins)
+ for plugin in enabled_plugins:
+ self.enable_plugin(plugin)
+
+ def _on_plugin_enabled_event(self, name):
+ try:
+ self.enable_plugin(name)
+ except Exception as ex:
+ log.warning('Failed to enable plugin "%s": ex: %s', name, ex)
+
+ self.run_on_show_prefs()
+
+ def _on_plugin_disabled_event(self, name):
+ self.disable_plugin(name)
+
+ # Hook functions
+ def run_on_show_prefs(self):
+ """This hook is run before the user is shown the preferences dialog.
+ It is designed so that plugins can update their preference page with
+ the config."""
+ log.debug('run_on_show_prefs')
+ for function in self.hooks['on_show_prefs']:
+ function()
+
+ def run_on_apply_prefs(self):
+ """This hook is run after the user clicks Apply or OK in the preferences
+ dialog.
+ """
+ log.debug('run_on_apply_prefs')
+ for function in self.hooks['on_apply_prefs']:
+ function()
+
+ # Plugin functions.. will likely move to own class..
+
+ def add_torrentview_text_column(self, *args, **kwargs):
+ return component.get('TorrentView').add_text_column(*args, **kwargs)
+
+ def remove_torrentview_column(self, *args):
+ return component.get('TorrentView').remove_column(*args)
+
+ def add_toolbar_separator(self):
+ return component.get('ToolBar').add_separator()
+
+ def add_toolbar_button(self, *args, **kwargs):
+ return component.get('ToolBar').add_toolbutton(*args, **kwargs)
+
+ def remove_toolbar_button(self, *args):
+ return component.get('ToolBar').remove(*args)
+
+ def add_torrentmenu_menu(self, *args):
+ return component.get('MenuBar').torrentmenu.append(*args)
+
+ def add_torrentmenu_separator(self):
+ return component.get('MenuBar').add_torrentmenu_separator()
+
+ def remove_torrentmenu_item(self, *args):
+ return component.get('MenuBar').torrentmenu.remove(*args)
+
+ def add_preferences_page(self, *args):
+ return component.get('Preferences').add_page(*args)
+
+ def remove_preferences_page(self, *args):
+ return component.get('Preferences').remove_page(*args)
+
+ def update_torrent_view(self, *args):
+ return component.get('TorrentView').update(*args)
+
+ def get_selected_torrents(self):
+ """Returns a list of the selected torrent_ids"""
+ return component.get('TorrentView').get_selected_torrents()
diff --git a/deluge/ui/gtk3/preferences.py b/deluge/ui/gtk3/preferences.py
new file mode 100644
index 0000000..cd67a5b
--- /dev/null
+++ b/deluge/ui/gtk3/preferences.py
@@ -0,0 +1,1537 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+from hashlib import sha1 as sha
+from urllib.parse import urlparse
+
+from gi import require_version
+from gi.repository import GObject, Gtk
+from gi.repository.Gdk import Color
+
+import deluge.common
+import deluge.component as component
+from deluge.configmanager import ConfigManager, get_config_dir
+from deluge.decorators import maybe_coroutine
+from deluge.error import AuthManagerError, NotAuthorizedError
+from deluge.i18n import get_languages
+from deluge.ui.client import client
+from deluge.ui.common import DISK_CACHE_KEYS, PREFS_CATOG_TRANS
+
+from .common import associate_magnet_links, get_clipboard_text, get_deluge_icon
+from .dialogs import AccountDialog, ErrorDialog, InformationDialog, YesNoDialog
+from .path_chooser import PathChooser
+
+try:
+ try:
+ require_version('AyatanaAppIndicator3', '0.1')
+ from gi.repository import AyatanaAppIndicator3 # noqa: F401
+ except (ValueError, ImportError):
+ require_version('AppIndicator3', '0.1')
+ from gi.repository import AppIndicator3 # noqa: F401
+except (ImportError, ValueError):
+ appindicator = False
+else:
+ appindicator = True
+
+log = logging.getLogger(__name__)
+
+ACCOUNTS_USERNAME, ACCOUNTS_LEVEL, ACCOUNTS_PASSWORD = list(range(3))
+COLOR_MISSING, COLOR_WAITING, COLOR_DOWNLOADING, COLOR_COMPLETED = list(range(4))
+
+COLOR_STATES = {
+ 'missing': COLOR_MISSING,
+ 'waiting': COLOR_WAITING,
+ 'downloading': COLOR_DOWNLOADING,
+ 'completed': COLOR_COMPLETED,
+}
+
+
+class Preferences(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'Preferences')
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(
+ deluge.common.resource_filename(
+ __package__, os.path.join('glade', 'preferences_dialog.ui')
+ )
+ )
+ self.pref_dialog = self.builder.get_object('pref_dialog')
+ self.pref_dialog.set_transient_for(component.get('MainWindow').window)
+ self.pref_dialog.set_icon(get_deluge_icon())
+ self.treeview = self.builder.get_object('treeview')
+ self.notebook = self.builder.get_object('notebook')
+ self.gtkui_config = ConfigManager('gtk3ui.conf')
+ self.window_open = False
+
+ self.load_pref_dialog_state()
+
+ self.builder.get_object('image_magnet').set_from_file(
+ deluge.common.get_pixmap('magnet16.png')
+ )
+
+ # Hide the unused associate magnet button on OSX see: #2420
+ if deluge.common.osx_check():
+ self.builder.get_object('button_associate_magnet').hide()
+
+ # Setup the liststore for the categories (tab pages)
+ self.liststore = Gtk.ListStore(int, str, str)
+ self.treeview.set_model(self.liststore)
+ render = Gtk.CellRendererText()
+ column = Gtk.TreeViewColumn(None, render, text=2)
+ self.treeview.append_column(column)
+
+ # Add the default categories
+ prefs_categories = (
+ 'interface',
+ 'downloads',
+ 'bandwidth',
+ 'queue',
+ 'network',
+ 'proxy',
+ 'cache',
+ 'other',
+ 'daemon',
+ 'plugins',
+ )
+ for idx, category in enumerate(prefs_categories):
+ self.liststore.append([idx, category, PREFS_CATOG_TRANS[category]])
+
+ # Add and set separator after Plugins.
+ def set_separator(model, _iter, data=None):
+ entry = deluge.common.decode_bytes(model.get_value(_iter, 1))
+ if entry == '_separator_':
+ return True
+
+ self.treeview.set_row_separator_func(set_separator, None)
+ self.liststore.append([len(self.liststore), '_separator_', ''])
+ # Add a dummy notebook page to keep indexing synced with liststore.
+ self.notebook.append_page(Gtk.HSeparator())
+
+ # Setup accounts tab lisview
+ self.accounts_levels_mapping = None
+ self.accounts_liststore = Gtk.ListStore(str, str, str, int)
+ self.accounts_liststore.set_sort_column_id(
+ ACCOUNTS_USERNAME, Gtk.SortType.ASCENDING
+ )
+ self.accounts_listview = self.builder.get_object('accounts_listview')
+ self.accounts_listview.append_column(
+ Gtk.TreeViewColumn(
+ _('Username'), Gtk.CellRendererText(), text=ACCOUNTS_USERNAME
+ )
+ )
+ self.accounts_listview.append_column(
+ Gtk.TreeViewColumn(_('Level'), Gtk.CellRendererText(), text=ACCOUNTS_LEVEL)
+ )
+ password_column = Gtk.TreeViewColumn(
+ 'password', Gtk.CellRendererText(), text=ACCOUNTS_PASSWORD
+ )
+ self.accounts_listview.append_column(password_column)
+ password_column.set_visible(False)
+ self.accounts_listview.set_model(self.accounts_liststore)
+
+ self.accounts_listview.get_selection().connect(
+ 'changed', self.on_accounts_selection_changed
+ )
+ self.accounts_frame = self.builder.get_object('AccountsFrame')
+
+ # Setup plugin tab listview
+ # The third entry is for holding translated plugin names
+ self.plugin_liststore = Gtk.ListStore(str, bool, str)
+ self.plugin_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ self.plugin_listview = self.builder.get_object('plugin_listview')
+ self.plugin_listview.set_model(self.plugin_liststore)
+ render = Gtk.CellRendererToggle()
+ render.connect('toggled', self.on_plugin_toggled)
+ render.set_property('activatable', True)
+ self.plugin_listview.append_column(
+ Gtk.TreeViewColumn(_('Enabled'), render, active=1)
+ )
+ self.plugin_listview.append_column(
+ Gtk.TreeViewColumn(_('Plugin'), Gtk.CellRendererText(), text=2)
+ )
+
+ # Connect to the 'changed' event of TreeViewSelection to get selection
+ # changes.
+ self.treeview.get_selection().connect('changed', self.on_selection_changed)
+
+ self.plugin_listview.get_selection().connect(
+ 'changed', self.on_plugin_selection_changed
+ )
+
+ self.builder.connect_signals(self)
+
+ # Radio buttons to choose between systray and appindicator
+ self.builder.get_object('alignment_tray_type').set_visible(appindicator)
+
+ # Initialize a binding for dark theme
+ Gtk.Settings.get_default().bind_property(
+ 'gtk-application-prefer-dark-theme',
+ self.builder.get_object('chk_prefer_dark_theme'),
+ 'active',
+ GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE,
+ )
+
+ from .gtkui import DEFAULT_PREFS
+
+ self.COLOR_DEFAULTS = {}
+ for key in ('missing', 'waiting', 'downloading', 'completed'):
+ self.COLOR_DEFAULTS[key] = DEFAULT_PREFS['pieces_color_%s' % key][:]
+ del DEFAULT_PREFS
+
+ # These get updated by requests done to the core
+ self.all_plugins = []
+ self.enabled_plugins = []
+
+ self.setup_path_choosers()
+ self.load_languages()
+
+ def setup_path_choosers(self):
+ self.download_location_hbox = self.builder.get_object(
+ 'hbox_download_to_path_chooser'
+ )
+ self.download_location_path_chooser = PathChooser(
+ 'download_location_paths_list', parent=self.pref_dialog
+ )
+ self.download_location_hbox.add(self.download_location_path_chooser)
+ self.download_location_hbox.show_all()
+
+ self.move_completed_hbox = self.builder.get_object(
+ 'hbox_move_completed_to_path_chooser'
+ )
+ self.move_completed_path_chooser = PathChooser(
+ 'move_completed_paths_list', parent=self.pref_dialog
+ )
+ self.move_completed_hbox.add(self.move_completed_path_chooser)
+ self.move_completed_hbox.show_all()
+
+ self.copy_torrents_to_hbox = self.builder.get_object(
+ 'hbox_copy_torrent_files_path_chooser'
+ )
+ self.copy_torrent_files_path_chooser = PathChooser(
+ 'copy_torrent_files_to_paths_list', parent=self.pref_dialog
+ )
+ self.copy_torrents_to_hbox.add(self.copy_torrent_files_path_chooser)
+ self.copy_torrents_to_hbox.show_all()
+
+ def load_languages(self):
+ self.language_combo = self.builder.get_object('combobox_language')
+ self.language_checkbox = self.builder.get_object('checkbutton_language')
+ lang_model = self.language_combo.get_model()
+ langs = get_languages()
+ index = -1
+ for i, l in enumerate(langs):
+ lang_code, name = l
+ lang_model.append([lang_code, name])
+ if self.gtkui_config['language'] == lang_code:
+ index = i
+
+ if self.gtkui_config['language'] is None:
+ self.language_checkbox.set_active(True)
+ self.language_combo.set_visible(False)
+ else:
+ self.language_combo.set_visible(True)
+ if index != -1:
+ self.language_combo.set_active(index)
+
+ def __del__(self):
+ del self.gtkui_config
+
+ def add_page(self, name, widget):
+ """Add a another page to the notebook"""
+ # Create a header and scrolled window for the preferences tab
+ parent = widget.get_parent()
+ if parent:
+ parent.remove(widget)
+ vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, spacing=0)
+ label = Gtk.Label()
+ label.set_use_markup(True)
+ label.set_markup('<b><i><big>' + name + '</big></i></b>')
+ label.set_alignment(0.00, 0.50)
+ label.set_padding(10, 10)
+ vbox.pack_start(label, False, True, 0)
+ sep = Gtk.HSeparator()
+ vbox.pack_start(sep, False, True, 0)
+ widget.set_margin_top(7)
+ widget.set_vexpand(True)
+ widget.set_hexpand(True)
+ vbox.pack_start(widget, True, True, 0)
+ scrolled = Gtk.ScrolledWindow()
+ viewport = Gtk.Viewport()
+ viewport.set_shadow_type(Gtk.ShadowType.NONE)
+ viewport.add(vbox)
+ scrolled.add(viewport)
+ scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+ scrolled.show_all()
+ # Add this page to the notebook
+ index = self.notebook.append_page(scrolled, None)
+ self.liststore.append([index, name, _(name)])
+ return name
+
+ def remove_page(self, name):
+ """Removes a page from the notebook"""
+ self.page_num_to_remove = None
+ self.iter_to_remove = None
+
+ def on_foreach_row(model, path, _iter, user_data):
+ row_name = deluge.common.decode_bytes(model.get_value(_iter, 1))
+ if row_name == user_data:
+ # This is the row we need to remove
+ self.page_num_to_remove = model.get_value(_iter, 0)
+ self.iter_to_remove = _iter
+ # Return True to stop foreach iterating
+ return True
+
+ self.liststore.foreach(on_foreach_row, name)
+
+ # Remove the page and row
+ if self.page_num_to_remove is not None:
+ self.notebook.remove_page(self.page_num_to_remove)
+ if self.iter_to_remove is not None:
+ self.liststore.remove(self.iter_to_remove)
+
+ # We need to re-adjust the index values for the remaining pages
+ for idx, __ in enumerate(self.liststore):
+ self.liststore[idx][0] = idx
+
+ def show(self, page=None):
+ """Page should be the string in the left list.. ie, 'Network' or
+ 'Bandwidth'"""
+ self.window_open = True
+ if page is not None:
+ for index, string, __ in self.liststore:
+ if page == string:
+ self.treeview.get_selection().select_path(index)
+ break
+
+ component.get('PluginManager').run_on_show_prefs()
+
+ # Update the preferences dialog to reflect current config settings
+ self.core_config = {}
+ if client.connected():
+ self._get_accounts_tab_data()
+
+ def on_get_config(config):
+ self.core_config = config
+ client.core.get_available_plugins().addCallback(
+ on_get_available_plugins
+ )
+
+ def on_get_available_plugins(plugins):
+ self.all_plugins = plugins
+ client.core.get_enabled_plugins().addCallback(on_get_enabled_plugins)
+
+ def on_get_enabled_plugins(plugins):
+ self.enabled_plugins = plugins
+ client.core.get_listen_port().addCallback(on_get_listen_port)
+
+ def on_get_listen_port(port):
+ self.active_port = port
+ client.core.get_session_status(DISK_CACHE_KEYS).addCallback(
+ on_get_session_status
+ )
+
+ def on_get_session_status(status):
+ self.cache_status = status
+ self._show()
+
+ # This starts a series of client.core requests prior to showing the window
+ client.core.get_config().addCallback(on_get_config)
+ else:
+ self._show()
+
+ def start(self):
+ if self.window_open:
+ self.show()
+
+ def stop(self):
+ self.core_config = None
+ if self.window_open:
+ self._show()
+
+ def _show(self):
+ self.is_connected = self.core_config != {} and self.core_config is not None
+ core_widgets = {
+ 'chk_move_completed': ('active', 'move_completed'),
+ 'chk_copy_torrent_file': ('active', 'copy_torrent_file'),
+ 'chk_del_copy_torrent_file': ('active', 'del_copy_torrent_file'),
+ 'chk_pre_allocation': ('active', 'pre_allocate_storage'),
+ 'chk_prioritize_first_last_pieces': (
+ 'active',
+ 'prioritize_first_last_pieces',
+ ),
+ 'chk_sequential_download': ('active', 'sequential_download'),
+ 'chk_add_paused': ('active', 'add_paused'),
+ 'active_port_label': ('text', lambda: str(self.active_port)),
+ 'spin_incoming_port': (
+ 'value',
+ lambda: self.core_config['listen_ports'][0],
+ ),
+ 'chk_random_incoming_port': ('active', 'random_port'),
+ 'spin_outgoing_port_min': (
+ 'value',
+ lambda: self.core_config['outgoing_ports'][0],
+ ),
+ 'spin_outgoing_port_max': (
+ 'value',
+ lambda: self.core_config['outgoing_ports'][1],
+ ),
+ 'chk_random_outgoing_ports': ('active', 'random_outgoing_ports'),
+ 'entry_interface': ('text', 'listen_interface'),
+ 'entry_outgoing_interface': ('text', 'outgoing_interface'),
+ 'entry_peer_tos': ('text', 'peer_tos'),
+ 'chk_dht': ('active', 'dht'),
+ 'chk_upnp': ('active', 'upnp'),
+ 'chk_natpmp': ('active', 'natpmp'),
+ 'chk_utpex': ('active', 'utpex'),
+ 'chk_lsd': ('active', 'lsd'),
+ 'chk_new_releases': ('active', 'new_release_check'),
+ 'chk_send_info': ('active', 'send_info'),
+ 'entry_geoip': ('text', 'geoip_db_location'),
+ 'combo_encin': ('active', 'enc_in_policy'),
+ 'combo_encout': ('active', 'enc_out_policy'),
+ 'combo_enclevel': ('active', 'enc_level'),
+ 'spin_max_connections_global': ('value', 'max_connections_global'),
+ 'spin_max_download': ('value', 'max_download_speed'),
+ 'spin_max_upload': ('value', 'max_upload_speed'),
+ 'spin_max_upload_slots_global': ('value', 'max_upload_slots_global'),
+ 'spin_max_half_open_connections': ('value', 'max_connections_per_second'),
+ 'spin_max_connections_per_second': ('value', 'max_connections_per_second'),
+ 'chk_ignore_limits_on_local_network': (
+ 'active',
+ 'ignore_limits_on_local_network',
+ ),
+ 'chk_rate_limit_ip_overhead': ('active', 'rate_limit_ip_overhead'),
+ 'spin_max_connections_per_torrent': (
+ 'value',
+ 'max_connections_per_torrent',
+ ),
+ 'spin_max_upload_slots_per_torrent': (
+ 'value',
+ 'max_upload_slots_per_torrent',
+ ),
+ 'spin_max_download_per_torrent': (
+ 'value',
+ 'max_download_speed_per_torrent',
+ ),
+ 'spin_max_upload_per_torrent': ('value', 'max_upload_speed_per_torrent'),
+ 'spin_daemon_port': ('value', 'daemon_port'),
+ 'chk_allow_remote_connections': ('active', 'allow_remote'),
+ 'spin_active': ('value', 'max_active_limit'),
+ 'spin_seeding': ('value', 'max_active_seeding'),
+ 'spin_downloading': ('value', 'max_active_downloading'),
+ 'chk_dont_count_slow_torrents': ('active', 'dont_count_slow_torrents'),
+ 'chk_auto_manage_prefer_seeds': ('active', 'auto_manage_prefer_seeds'),
+ 'chk_queue_new_top': ('active', 'queue_new_to_top'),
+ 'spin_share_ratio_limit': ('value', 'share_ratio_limit'),
+ 'spin_seed_time_ratio_limit': ('value', 'seed_time_ratio_limit'),
+ 'spin_seed_time_limit': ('value', 'seed_time_limit'),
+ 'chk_share_ratio': ('active', 'stop_seed_at_ratio'),
+ 'spin_share_ratio': ('value', 'stop_seed_ratio'),
+ 'radio_pause_ratio': ('active', 'stop_seed_at_ratio'),
+ 'radio_remove_ratio': ('active', 'remove_seed_at_ratio'),
+ 'spin_cache_size': ('value', 'cache_size'),
+ 'spin_cache_expiry': ('value', 'cache_expiry'),
+ 'combo_proxy_type': ('active', lambda: self.core_config['proxy']['type']),
+ 'entry_proxy_user': ('text', lambda: self.core_config['proxy']['username']),
+ 'entry_proxy_pass': ('text', lambda: self.core_config['proxy']['password']),
+ 'entry_proxy_host': ('text', lambda: self.core_config['proxy']['hostname']),
+ 'spin_proxy_port': ('value', lambda: self.core_config['proxy']['port']),
+ 'chk_proxy_host_resolve': (
+ 'active',
+ lambda: self.core_config['proxy']['proxy_hostnames'],
+ ),
+ 'chk_proxy_peer_conn': (
+ 'active',
+ lambda: self.core_config['proxy']['proxy_peer_connections'],
+ ),
+ 'chk_proxy_tracker_conn': (
+ 'active',
+ lambda: self.core_config['proxy']['proxy_tracker_connections'],
+ ),
+ 'chk_force_proxy': (
+ 'active',
+ lambda: self.core_config['proxy']['force_proxy'],
+ ),
+ 'chk_anonymous_mode': (
+ 'active',
+ lambda: self.core_config['proxy']['anonymous_mode'],
+ ),
+ 'accounts_add': (None, None),
+ 'accounts_listview': (None, None),
+ 'button_cache_refresh': (None, None),
+ 'button_plugin_install': (None, None),
+ 'button_rescan_plugins': (None, None),
+ 'button_find_plugins': (None, None),
+ 'button_testport': (None, None),
+ 'plugin_listview': (None, None),
+ }
+
+ core_widgets[self.download_location_path_chooser] = (
+ 'path_chooser',
+ 'download_location',
+ )
+ core_widgets[self.move_completed_path_chooser] = (
+ 'path_chooser',
+ 'move_completed_path',
+ )
+ core_widgets[self.copy_torrent_files_path_chooser] = (
+ 'path_chooser',
+ 'torrentfiles_location',
+ )
+
+ # Update the widgets accordingly
+ for key in core_widgets:
+ modifier = core_widgets[key][0]
+ try:
+ widget = self.builder.get_object(key)
+ except TypeError:
+ widget = key
+
+ widget.set_sensitive(self.is_connected)
+
+ if self.is_connected:
+ value = core_widgets[key][1]
+ try:
+ value = self.core_config[value]
+ except KeyError:
+ if callable(value):
+ value = value()
+ elif modifier:
+ value = {
+ 'active': False,
+ 'not_active': False,
+ 'value': 0,
+ 'text': '',
+ 'path_chooser': '',
+ }[modifier]
+
+ if modifier == 'active':
+ widget.set_active(value)
+ elif modifier == 'not_active':
+ widget.set_active(not value)
+ elif modifier == 'value':
+ widget.set_value(float(value))
+ elif modifier == 'text':
+ if value is None:
+ value = ''
+ widget.set_text(value)
+ elif modifier == 'path_chooser':
+ widget.set_text(value, cursor_end=False, default_text=True)
+
+ if self.is_connected:
+ for key in core_widgets:
+ try:
+ widget = self.builder.get_object(key)
+ except TypeError:
+ widget = key
+ # Update the toggle status if necessary
+ self.on_toggle(widget)
+
+ # Downloads tab #
+ self.builder.get_object('chk_show_dialog').set_active(
+ self.gtkui_config['interactive_add']
+ )
+ self.builder.get_object('chk_focus_dialog').set_active(
+ self.gtkui_config['focus_add_dialog']
+ )
+
+ # Interface tab #
+ self.builder.get_object('chk_use_tray').set_active(
+ self.gtkui_config['enable_system_tray']
+ )
+ self.builder.get_object('chk_min_on_close').set_active(
+ self.gtkui_config['close_to_tray']
+ )
+ self.builder.get_object('chk_start_in_tray').set_active(
+ self.gtkui_config['start_in_tray']
+ )
+ self.builder.get_object('radio_appind').set_active(
+ self.gtkui_config['enable_appindicator']
+ )
+ self.builder.get_object('chk_lock_tray').set_active(
+ self.gtkui_config['lock_tray']
+ )
+ self.builder.get_object('radio_standalone').set_active(
+ self.gtkui_config['standalone']
+ )
+ self.builder.get_object('radio_thinclient').set_active(
+ not self.gtkui_config['standalone']
+ )
+ self.builder.get_object('chk_prefer_dark_theme').set_active(
+ self.gtkui_config['prefer_dark_theme']
+ )
+ self.builder.get_object('chk_show_rate_in_title').set_active(
+ self.gtkui_config['show_rate_in_title']
+ )
+ self.builder.get_object('chk_focus_main_window_on_add').set_active(
+ self.gtkui_config['focus_main_window_on_add']
+ )
+ self.builder.get_object('piecesbar_toggle').set_active(
+ self.gtkui_config['show_piecesbar']
+ )
+ self.builder.get_object('urldetect_toggle').set_active(
+ self.gtkui_config['detect_urls']
+ )
+ self.__set_color('completed', from_config=True)
+ self.__set_color('downloading', from_config=True)
+ self.__set_color('waiting', from_config=True)
+ self.__set_color('missing', from_config=True)
+
+ # Other tab #
+ self.builder.get_object('chk_show_new_releases').set_active(
+ self.gtkui_config['show_new_releases']
+ )
+
+ # Cache tab #
+ if client.connected():
+ self.__update_cache_status()
+
+ # Plugins tab #
+ all_plugins = self.all_plugins
+ enabled_plugins = self.enabled_plugins
+ # Clear the existing list so we don't duplicate entries.
+ self.plugin_liststore.clear()
+ # Iterate through the lists and add them to the liststore
+ for plugin in all_plugins:
+ enabled = plugin in enabled_plugins
+ row = self.plugin_liststore.append()
+ self.plugin_liststore.set_value(row, 0, plugin)
+ self.plugin_liststore.set_value(row, 1, enabled)
+ self.plugin_liststore.set_value(row, 2, _(plugin))
+
+ # Now show the dialog
+ self.pref_dialog.show()
+
+ def set_config(self, hide=False):
+ """
+ Sets all altered config values in the core.
+
+ :param hide: bool, if True, will not re-show the dialog and will hide it instead
+ """
+
+ # Get the values from the dialog
+ new_core_config = {}
+ new_gtkui_config = {}
+
+ # Downloads tab #
+ new_gtkui_config['interactive_add'] = self.builder.get_object(
+ 'chk_show_dialog'
+ ).get_active()
+ new_gtkui_config['focus_add_dialog'] = self.builder.get_object(
+ 'chk_focus_dialog'
+ ).get_active()
+
+ for state in ('missing', 'waiting', 'downloading', 'completed'):
+ color = self.builder.get_object('%s_color' % state).get_color()
+ new_gtkui_config['pieces_color_%s' % state] = [
+ color.red,
+ color.green,
+ color.blue,
+ ]
+
+ new_core_config['copy_torrent_file'] = self.builder.get_object(
+ 'chk_copy_torrent_file'
+ ).get_active()
+ new_core_config['del_copy_torrent_file'] = self.builder.get_object(
+ 'chk_del_copy_torrent_file'
+ ).get_active()
+ new_core_config['move_completed'] = self.builder.get_object(
+ 'chk_move_completed'
+ ).get_active()
+
+ new_core_config[
+ 'download_location'
+ ] = self.download_location_path_chooser.get_text()
+ new_core_config[
+ 'move_completed_path'
+ ] = self.move_completed_path_chooser.get_text()
+ new_core_config[
+ 'torrentfiles_location'
+ ] = self.copy_torrent_files_path_chooser.get_text()
+ new_core_config['prioritize_first_last_pieces'] = self.builder.get_object(
+ 'chk_prioritize_first_last_pieces'
+ ).get_active()
+ new_core_config['sequential_download'] = self.builder.get_object(
+ 'chk_sequential_download'
+ ).get_active()
+ new_core_config['add_paused'] = self.builder.get_object(
+ 'chk_add_paused'
+ ).get_active()
+ new_core_config['pre_allocate_storage'] = self.builder.get_object(
+ 'chk_pre_allocation'
+ ).get_active()
+
+ # Network tab #
+ listen_ports = [
+ self.builder.get_object('spin_incoming_port').get_value_as_int()
+ ] * 2
+ new_core_config['listen_ports'] = listen_ports
+ new_core_config['random_port'] = self.builder.get_object(
+ 'chk_random_incoming_port'
+ ).get_active()
+ outgoing_ports = (
+ self.builder.get_object('spin_outgoing_port_min').get_value_as_int(),
+ self.builder.get_object('spin_outgoing_port_max').get_value_as_int(),
+ )
+ new_core_config['outgoing_ports'] = outgoing_ports
+ new_core_config['random_outgoing_ports'] = self.builder.get_object(
+ 'chk_random_outgoing_ports'
+ ).get_active()
+ incoming_address = self.builder.get_object('entry_interface').get_text().strip()
+ if deluge.common.is_interface(incoming_address) or not incoming_address:
+ new_core_config['listen_interface'] = incoming_address
+ outgoing_address = (
+ self.builder.get_object('entry_outgoing_interface').get_text().strip()
+ )
+ if deluge.common.is_interface(outgoing_address) or not outgoing_address:
+ new_core_config['outgoing_interface'] = (
+ self.builder.get_object('entry_outgoing_interface').get_text().strip()
+ )
+ new_core_config['peer_tos'] = self.builder.get_object(
+ 'entry_peer_tos'
+ ).get_text()
+ new_core_config['dht'] = self.builder.get_object('chk_dht').get_active()
+ new_core_config['upnp'] = self.builder.get_object('chk_upnp').get_active()
+ new_core_config['natpmp'] = self.builder.get_object('chk_natpmp').get_active()
+ new_core_config['utpex'] = self.builder.get_object('chk_utpex').get_active()
+ new_core_config['lsd'] = self.builder.get_object('chk_lsd').get_active()
+ new_core_config['enc_in_policy'] = self.builder.get_object(
+ 'combo_encin'
+ ).get_active()
+ new_core_config['enc_out_policy'] = self.builder.get_object(
+ 'combo_encout'
+ ).get_active()
+ new_core_config['enc_level'] = self.builder.get_object(
+ 'combo_enclevel'
+ ).get_active()
+
+ # Bandwidth tab #
+ new_core_config['max_connections_global'] = self.builder.get_object(
+ 'spin_max_connections_global'
+ ).get_value_as_int()
+ new_core_config['max_download_speed'] = self.builder.get_object(
+ 'spin_max_download'
+ ).get_value()
+ new_core_config['max_upload_speed'] = self.builder.get_object(
+ 'spin_max_upload'
+ ).get_value()
+ new_core_config['max_upload_slots_global'] = self.builder.get_object(
+ 'spin_max_upload_slots_global'
+ ).get_value_as_int()
+ new_core_config['max_half_open_connections'] = self.builder.get_object(
+ 'spin_max_half_open_connections'
+ ).get_value_as_int()
+ new_core_config['max_connections_per_second'] = self.builder.get_object(
+ 'spin_max_connections_per_second'
+ ).get_value_as_int()
+ new_core_config['max_connections_per_torrent'] = self.builder.get_object(
+ 'spin_max_connections_per_torrent'
+ ).get_value_as_int()
+ new_core_config['max_upload_slots_per_torrent'] = self.builder.get_object(
+ 'spin_max_upload_slots_per_torrent'
+ ).get_value_as_int()
+ new_core_config['max_upload_speed_per_torrent'] = self.builder.get_object(
+ 'spin_max_upload_per_torrent'
+ ).get_value()
+ new_core_config['max_download_speed_per_torrent'] = self.builder.get_object(
+ 'spin_max_download_per_torrent'
+ ).get_value()
+ new_core_config['ignore_limits_on_local_network'] = self.builder.get_object(
+ 'chk_ignore_limits_on_local_network'
+ ).get_active()
+ new_core_config['rate_limit_ip_overhead'] = self.builder.get_object(
+ 'chk_rate_limit_ip_overhead'
+ ).get_active()
+
+ # Interface tab #
+ new_gtkui_config['prefer_dark_theme'] = self.builder.get_object(
+ 'chk_prefer_dark_theme'
+ ).get_active()
+ new_gtkui_config['enable_system_tray'] = self.builder.get_object(
+ 'chk_use_tray'
+ ).get_active()
+ new_gtkui_config['close_to_tray'] = self.builder.get_object(
+ 'chk_min_on_close'
+ ).get_active()
+ new_gtkui_config['start_in_tray'] = self.builder.get_object(
+ 'chk_start_in_tray'
+ ).get_active()
+ new_gtkui_config['enable_appindicator'] = self.builder.get_object(
+ 'radio_appind'
+ ).get_active()
+ new_gtkui_config['lock_tray'] = self.builder.get_object(
+ 'chk_lock_tray'
+ ).get_active()
+ passhex = sha(
+ deluge.common.decode_bytes(
+ self.builder.get_object('txt_tray_password').get_text()
+ ).encode()
+ ).hexdigest()
+ if passhex != 'c07eb5a8c0dc7bb81c217b67f11c3b7a5e95ffd7':
+ new_gtkui_config['tray_password'] = passhex
+
+ was_standalone = self.gtkui_config['standalone']
+ new_gtkui_standalone = self.builder.get_object('radio_standalone').get_active()
+ new_gtkui_config['standalone'] = new_gtkui_standalone
+
+ new_gtkui_config['show_rate_in_title'] = self.builder.get_object(
+ 'chk_show_rate_in_title'
+ ).get_active()
+ new_gtkui_config['focus_main_window_on_add'] = self.builder.get_object(
+ 'chk_focus_main_window_on_add'
+ ).get_active()
+
+ # Other tab #
+ new_gtkui_config['show_new_releases'] = self.builder.get_object(
+ 'chk_show_new_releases'
+ ).get_active()
+ new_core_config['send_info'] = self.builder.get_object(
+ 'chk_send_info'
+ ).get_active()
+ new_core_config['geoip_db_location'] = self.builder.get_object(
+ 'entry_geoip'
+ ).get_text()
+
+ # Daemon tab #
+ new_core_config['daemon_port'] = self.builder.get_object(
+ 'spin_daemon_port'
+ ).get_value_as_int()
+ new_core_config['allow_remote'] = self.builder.get_object(
+ 'chk_allow_remote_connections'
+ ).get_active()
+ new_core_config['new_release_check'] = self.builder.get_object(
+ 'chk_new_releases'
+ ).get_active()
+
+ # Proxy tab #
+ new_core_config['proxy'] = {
+ 'type': self.builder.get_object('combo_proxy_type').get_active(),
+ 'username': self.builder.get_object('entry_proxy_user').get_text(),
+ 'password': self.builder.get_object('entry_proxy_pass').get_text(),
+ 'hostname': self.builder.get_object('entry_proxy_host').get_text(),
+ 'port': self.builder.get_object('spin_proxy_port').get_value_as_int(),
+ 'proxy_hostnames': self.builder.get_object(
+ 'chk_proxy_host_resolve'
+ ).get_active(),
+ 'proxy_peer_connections': self.builder.get_object(
+ 'chk_proxy_peer_conn'
+ ).get_active(),
+ 'proxy_tracker_connections': self.builder.get_object(
+ 'chk_proxy_tracker_conn'
+ ).get_active(),
+ 'force_proxy': self.builder.get_object('chk_force_proxy').get_active(),
+ 'anonymous_mode': self.builder.get_object(
+ 'chk_anonymous_mode'
+ ).get_active(),
+ }
+
+ # Queue tab #
+ new_core_config['queue_new_to_top'] = self.builder.get_object(
+ 'chk_queue_new_top'
+ ).get_active()
+ new_core_config['max_active_seeding'] = self.builder.get_object(
+ 'spin_seeding'
+ ).get_value_as_int()
+ new_core_config['max_active_downloading'] = self.builder.get_object(
+ 'spin_downloading'
+ ).get_value_as_int()
+ new_core_config['max_active_limit'] = self.builder.get_object(
+ 'spin_active'
+ ).get_value_as_int()
+ new_core_config['dont_count_slow_torrents'] = self.builder.get_object(
+ 'chk_dont_count_slow_torrents'
+ ).get_active()
+ new_core_config['auto_manage_prefer_seeds'] = self.builder.get_object(
+ 'chk_auto_manage_prefer_seeds'
+ ).get_active()
+ new_core_config['stop_seed_at_ratio'] = self.builder.get_object(
+ 'chk_share_ratio'
+ ).get_active()
+ new_core_config['remove_seed_at_ratio'] = self.builder.get_object(
+ 'radio_remove_ratio'
+ ).get_active()
+ new_core_config['stop_seed_ratio'] = self.builder.get_object(
+ 'spin_share_ratio'
+ ).get_value()
+ new_core_config['share_ratio_limit'] = self.builder.get_object(
+ 'spin_share_ratio_limit'
+ ).get_value()
+ new_core_config['seed_time_ratio_limit'] = self.builder.get_object(
+ 'spin_seed_time_ratio_limit'
+ ).get_value()
+ new_core_config['seed_time_limit'] = self.builder.get_object(
+ 'spin_seed_time_limit'
+ ).get_value()
+
+ # Cache tab #
+ new_core_config['cache_size'] = self.builder.get_object(
+ 'spin_cache_size'
+ ).get_value_as_int()
+ new_core_config['cache_expiry'] = self.builder.get_object(
+ 'spin_cache_expiry'
+ ).get_value_as_int()
+
+ # Run plugin hook to apply preferences
+ component.get('PluginManager').run_on_apply_prefs()
+
+ # Language
+ if self.language_checkbox.get_active():
+ new_gtkui_config['language'] = None
+ else:
+ active = self.language_combo.get_active()
+ if active == -1:
+ dialog = InformationDialog(
+ _('Attention'), _('You must choose a language')
+ )
+ dialog.run()
+ return
+ else:
+ model = self.language_combo.get_model()
+ new_gtkui_config['language'] = model.get(model.get_iter(active), 0)[0]
+
+ if new_gtkui_config['language'] != self.gtkui_config['language']:
+ dialog = InformationDialog(
+ _('Attention'),
+ _('You must now restart the deluge UI for the changes to take effect.'),
+ )
+ dialog.run()
+
+ # GtkUI
+ for key in new_gtkui_config:
+ # The values do not match so this needs to be updated
+ if self.gtkui_config[key] != new_gtkui_config[key]:
+ self.gtkui_config[key] = new_gtkui_config[key]
+
+ # Core
+ if client.connected():
+ # Only do this if we're connected to a daemon
+ config_to_set = {}
+ for key in new_core_config:
+ # The values do not match so this needs to be updated
+ if self.core_config[key] != new_core_config[key]:
+ config_to_set[key] = new_core_config[key]
+
+ if config_to_set:
+ # Set each changed config value in the core
+ client.core.set_config(config_to_set)
+ client.force_call(True)
+ # Update the configuration
+ self.core_config.update(config_to_set)
+
+ if hide:
+ self.hide()
+ else:
+ # Re-show the dialog to make sure everything has been updated
+ self.show()
+
+ if was_standalone != new_gtkui_standalone:
+
+ def on_response(response):
+ if response == Gtk.ResponseType.YES:
+ shutdown_daemon = (
+ not client.is_standalone()
+ and client.connected()
+ and client.is_localhost()
+ )
+ component.get('MainWindow').quit(
+ shutdown=shutdown_daemon, restart=True
+ )
+ else:
+ self.gtkui_config['standalone'] = not new_gtkui_standalone
+ self.builder.get_object('radio_standalone').set_active(
+ self.gtkui_config['standalone']
+ )
+ self.builder.get_object('radio_thinclient').set_active(
+ not self.gtkui_config['standalone']
+ )
+
+ mode = _('Thinclient') if was_standalone else _('Standalone')
+ dialog = YesNoDialog(
+ _('Switching Deluge Client Mode...'),
+ _('Do you want to restart to use %s mode?' % mode),
+ )
+ dialog.run().addCallback(on_response)
+
+ def hide(self):
+ self.window_open = False
+ self.builder.get_object('port_spinner').stop()
+ self.builder.get_object('port_img').hide()
+ self.pref_dialog.hide()
+
+ def __update_cache_status(self):
+ # Updates the cache status labels with the info in the dict
+ cache_labels = (
+ 'label_cache_read_ops',
+ 'label_cache_write_ops',
+ 'label_cache_num_blocks_read',
+ 'label_cache_num_blocks_written',
+ 'label_cache_read_hit_ratio',
+ 'label_cache_write_hit_ratio',
+ 'label_cache_disk_blocks_in_use',
+ 'label_cache_read_cache_blocks',
+ )
+
+ for widget_name in cache_labels:
+ widget = self.builder.get_object(widget_name)
+ key = widget_name[len('label_cache_') :]
+ if not widget_name.endswith('ratio'):
+ key = 'disk.' + key
+ value = self.cache_status.get(key, 0)
+ if isinstance(value, float):
+ value = '%.2f' % value
+ else:
+ value = str(value)
+
+ widget.set_text(value)
+
+ def on_button_cache_refresh_clicked(self, widget):
+ def on_get_session_status(status):
+ self.cache_status = status
+ self.__update_cache_status()
+
+ client.core.get_session_status(DISK_CACHE_KEYS).addCallback(
+ on_get_session_status
+ )
+
+ def on_pref_dialog_delete_event(self, widget, event):
+ self.hide()
+ return True
+
+ def load_pref_dialog_state(self):
+ w = self.gtkui_config['pref_dialog_width']
+ h = self.gtkui_config['pref_dialog_height']
+ if w is not None and h is not None:
+ self.pref_dialog.resize(w, h)
+
+ def on_pref_dialog_configure_event(self, widget, event):
+ self.gtkui_config['pref_dialog_width'] = event.width
+ self.gtkui_config['pref_dialog_height'] = event.height
+
+ def on_toggle(self, widget):
+ """Handles widget sensitivity based on radio/check button values."""
+ try:
+ value = widget.get_active()
+ except Exception:
+ return
+
+ path_choosers = {
+ 'download_location_path_chooser': self.download_location_path_chooser,
+ 'move_completed_path_chooser': self.move_completed_path_chooser,
+ 'torrentfiles_location_path_chooser': self.copy_torrent_files_path_chooser,
+ }
+
+ dependents = {
+ 'chk_show_dialog': {'chk_focus_dialog': True},
+ 'chk_random_incoming_port': {'spin_incoming_port': False},
+ 'chk_random_outgoing_ports': {
+ 'spin_outgoing_port_min': False,
+ 'spin_outgoing_port_max': False,
+ },
+ 'chk_use_tray': {
+ 'radio_appind': True,
+ 'radio_systray': True,
+ 'chk_min_on_close': True,
+ 'chk_start_in_tray': True,
+ 'alignment_tray_type': True,
+ 'chk_lock_tray': True,
+ },
+ 'chk_lock_tray': {'txt_tray_password': True, 'password_label': True},
+ 'radio_open_folder_custom': {
+ 'combo_file_manager': False,
+ 'txt_open_folder_location': True,
+ },
+ 'chk_move_completed': {'move_completed_path_chooser': True},
+ 'chk_copy_torrent_file': {
+ 'torrentfiles_location_path_chooser': True,
+ 'chk_del_copy_torrent_file': True,
+ },
+ 'chk_share_ratio': {
+ 'spin_share_ratio': True,
+ 'radio_pause_ratio': True,
+ 'radio_remove_ratio': True,
+ },
+ }
+
+ def update_dependent_widgets(name, value):
+ dependency = dependents[name]
+ for dep in dependency:
+ if dep in path_choosers:
+ depwidget = path_choosers[dep]
+ else:
+ depwidget = self.builder.get_object(dep)
+ sensitive = [not value, value][dependency[dep]]
+ depwidget.set_sensitive(sensitive)
+ if dep in dependents:
+ update_dependent_widgets(dep, depwidget.get_active() and sensitive)
+
+ for key in dependents:
+ if widget != self.builder.get_object(key):
+ continue
+ update_dependent_widgets(key, value)
+
+ def on_button_ok_clicked(self, data):
+ log.debug('on_button_ok_clicked')
+ self.set_config(hide=True)
+ return True
+
+ def on_button_apply_clicked(self, data):
+ log.debug('on_button_apply_clicked')
+ self.set_config()
+
+ def on_button_cancel_clicked(self, data):
+ log.debug('on_button_cancel_clicked')
+ Gtk.Settings.get_default().set_property(
+ 'gtk-application-prefer-dark-theme',
+ self.gtkui_config['prefer_dark_theme'],
+ )
+ self.hide()
+ return True
+
+ def on_selection_changed(self, treeselection):
+ # Show the correct notebook page based on what row is selected.
+ (model, row) = treeselection.get_selected()
+ try:
+ if model.get_value(row, 1) == 'daemon':
+ # Let's see update the accounts related stuff
+ if client.connected():
+ self._get_accounts_tab_data()
+ self.notebook.set_current_page(model.get_value(row, 0))
+ except TypeError:
+ pass
+
+ def on_test_port_clicked(self, data):
+ log.debug('on_test_port_clicked')
+
+ def on_get_test(status):
+ self.builder.get_object('port_spinner').stop()
+ self.builder.get_object('port_spinner').hide()
+ if status:
+ self.builder.get_object('port_img').set_from_icon_name(
+ 'emblem-ok-symbolic', Gtk.IconSize.MENU
+ )
+ self.builder.get_object('port_img').show()
+ else:
+ self.builder.get_object('port_img').set_from_icon_name(
+ 'dialog-warning-symbolic', Gtk.IconSize.MENU
+ )
+ self.builder.get_object('port_img').show()
+
+ client.core.test_listen_port().addCallback(on_get_test)
+ self.builder.get_object('port_spinner').start()
+ self.builder.get_object('port_spinner').show()
+ self.builder.get_object('port_img').hide()
+ client.force_call()
+
+ def on_plugin_toggled(self, renderer, path):
+ row = self.plugin_liststore.get_iter_from_string(path)
+ name = self.plugin_liststore.get_value(row, 0)
+ value = self.plugin_liststore.get_value(row, 1)
+ log.debug('on_plugin_toggled - %s: %s', name, value)
+ self.plugin_liststore.set_value(row, 1, not value)
+ if not value:
+ d = client.core.enable_plugin(name)
+ else:
+ d = client.core.disable_plugin(name)
+
+ def on_plugin_action(arg):
+ if not value and arg is False:
+ log.warning('Failed to enable plugin: %s', name)
+ self.plugin_liststore.set_value(row, 1, False)
+
+ d.addBoth(on_plugin_action)
+
+ def on_plugin_selection_changed(self, treeselection):
+ log.debug('on_plugin_selection_changed')
+ (model, itr) = treeselection.get_selected()
+ if not itr:
+ return
+ name = model[itr][0]
+ plugin_info = component.get('PluginManager').get_plugin_info(name)
+ self.builder.get_object('label_plugin_author').set_text(plugin_info['Author'])
+ self.builder.get_object('label_plugin_version').set_text(plugin_info['Version'])
+ self.builder.get_object('label_plugin_email').set_text(
+ plugin_info['Author-email']
+ )
+ self.builder.get_object('label_plugin_homepage').set_text(
+ plugin_info['Home-page']
+ )
+ self.builder.get_object('label_plugin_details').set_text(
+ plugin_info['Description']
+ )
+
+ def on_button_plugin_install_clicked(self, widget):
+ log.debug('on_button_plugin_install_clicked')
+ chooser = Gtk.FileChooserDialog(
+ _('Select the Plugin'),
+ self.pref_dialog,
+ Gtk.FileChooserAction.OPEN,
+ buttons=(
+ _('_Cancel'),
+ Gtk.ResponseType.CANCEL,
+ _('_Open'),
+ Gtk.ResponseType.OK,
+ ),
+ )
+
+ chooser.set_transient_for(self.pref_dialog)
+ chooser.set_select_multiple(False)
+ chooser.set_property('skip-taskbar-hint', True)
+
+ file_filter = Gtk.FileFilter()
+ file_filter.set_name(_('Plugin Eggs'))
+ file_filter.add_pattern('*.' + 'egg')
+ chooser.add_filter(file_filter)
+
+ # Run the dialog
+ response = chooser.run()
+
+ if response == Gtk.ResponseType.OK:
+ filepath = deluge.common.decode_bytes(chooser.get_filename())
+ else:
+ chooser.destroy()
+ return
+
+ import shutil
+ from base64 import b64encode
+
+ filename = os.path.split(filepath)[1]
+ shutil.copyfile(filepath, os.path.join(get_config_dir(), 'plugins', filename))
+
+ component.get('PluginManager').scan_for_plugins()
+
+ if not client.is_localhost():
+ # We need to send this plugin to the daemon
+ with open(filepath, 'rb') as _file:
+ filedump = b64encode(_file.read())
+ client.core.upload_plugin(filename, filedump)
+
+ client.core.rescan_plugins()
+ chooser.destroy()
+ # We need to re-show the preferences dialog to show the new plugins
+ self.show()
+
+ def on_button_rescan_plugins_clicked(self, widget):
+ component.get('PluginManager').scan_for_plugins()
+ if client.connected():
+ client.core.rescan_plugins()
+ self.show()
+
+ def on_button_find_plugins_clicked(self, widget):
+ deluge.common.open_url_in_browser('http://dev.deluge-torrent.org/wiki/Plugins')
+
+ def on_combo_encryption_changed(self, widget):
+ combo_encin = self.builder.get_object('combo_encin').get_active()
+ combo_encout = self.builder.get_object('combo_encout').get_active()
+ combo_enclevel = self.builder.get_object('combo_enclevel')
+
+ # If incoming and outgoing both set to disabled, disable level combobox
+ if combo_encin == 2 and combo_encout == 2:
+ combo_enclevel.set_sensitive(False)
+ elif self.is_connected:
+ combo_enclevel.set_sensitive(True)
+
+ def on_combo_proxy_type_changed(self, widget):
+ proxy_type = self.builder.get_object('combo_proxy_type').get_active()
+ proxy_entries = [
+ 'label_proxy_host',
+ 'entry_proxy_host',
+ 'label_proxy_port',
+ 'spin_proxy_port',
+ 'label_proxy_pass',
+ 'entry_proxy_pass',
+ 'label_proxy_user',
+ 'entry_proxy_user',
+ 'chk_proxy_host_resolve',
+ 'chk_proxy_peer_conn',
+ 'chk_proxy_tracker_conn',
+ ]
+
+ # 0: None, 1: Socks4, 2: Socks5, 3: Socks5 Auth, 4: HTTP, 5: HTTP Auth, 6: I2P
+ show_entries = []
+ if proxy_type > 0:
+ show_entries.extend(
+ [
+ 'label_proxy_host',
+ 'entry_proxy_host',
+ 'label_proxy_port',
+ 'spin_proxy_port',
+ 'chk_proxy_peer_conn',
+ 'chk_proxy_tracker_conn',
+ ]
+ )
+ if proxy_type in (3, 5):
+ show_entries.extend(
+ [
+ 'label_proxy_pass',
+ 'entry_proxy_pass',
+ 'label_proxy_user',
+ 'entry_proxy_user',
+ ]
+ )
+ if proxy_type in (2, 3, 4, 5):
+ show_entries.extend(['chk_proxy_host_resolve'])
+
+ for entry in proxy_entries:
+ if entry in show_entries:
+ self.builder.get_object(entry).show()
+ else:
+ self.builder.get_object(entry).hide()
+
+ def on_entry_proxy_host_paste_clipboard(self, widget):
+ text = get_clipboard_text()
+ log.debug('on_entry_proxy_host_paste-clipboard: got paste: %s', text)
+ text = text if '//' in text else '//' + text
+ parsed = urlparse(text)
+ if parsed.hostname:
+ widget.set_text(parsed.hostname)
+ widget.emit_stop_by_name('paste-clipboard')
+ if parsed.port:
+ self.builder.get_object('spin_proxy_port').set_value(parsed.port)
+ if parsed.username:
+ self.builder.get_object('entry_proxy_user').set_text(parsed.username)
+ if parsed.password:
+ self.builder.get_object('entry_proxy_pass').set_text(parsed.password)
+
+ def on_button_associate_magnet_clicked(self, widget):
+ associate_magnet_links(True)
+
+ def _get_accounts_tab_data(self):
+ def on_ok(accounts):
+ self.accounts_frame.show()
+ self.on_get_known_accounts(accounts)
+
+ def on_fail(failure):
+ if failure.type == NotAuthorizedError:
+ self.accounts_frame.hide()
+ else:
+ ErrorDialog(
+ _('Server Side Error'),
+ _('An error occurred on the server'),
+ parent=self.pref_dialog,
+ details=failure.getErrorMessage(),
+ ).run()
+
+ client.core.get_known_accounts().addCallback(on_ok).addErrback(on_fail)
+
+ def on_get_known_accounts(self, known_accounts):
+ known_accounts_to_log = []
+ for account in known_accounts:
+ account_to_log = {}
+ for key, value in account.copy().items():
+ if key == 'password':
+ value = '*' * len(value)
+ account_to_log[key] = value
+ known_accounts_to_log.append(account_to_log)
+ log.debug('on_known_accounts: %s', known_accounts_to_log)
+
+ self.accounts_liststore.clear()
+
+ for account in known_accounts:
+ accounts_iter = self.accounts_liststore.append()
+ self.accounts_liststore.set_value(
+ accounts_iter, ACCOUNTS_USERNAME, account['username']
+ )
+ self.accounts_liststore.set_value(
+ accounts_iter, ACCOUNTS_LEVEL, account['authlevel']
+ )
+ self.accounts_liststore.set_value(
+ accounts_iter, ACCOUNTS_PASSWORD, account['password']
+ )
+
+ def on_accounts_selection_changed(self, treeselection):
+ log.debug('on_accounts_selection_changed')
+ (model, itr) = treeselection.get_selected()
+ if not itr:
+ return
+ level = model[itr][1]
+ if level:
+ self.builder.get_object('accounts_edit').set_sensitive(True)
+ self.builder.get_object('accounts_delete').set_sensitive(True)
+ else:
+ self.builder.get_object('accounts_edit').set_sensitive(False)
+ self.builder.get_object('accounts_delete').set_sensitive(False)
+
+ @maybe_coroutine
+ async def on_accounts_add_clicked(self, widget):
+ dialog = AccountDialog(
+ levels_mapping=client.auth_levels_mapping, parent=self.pref_dialog
+ )
+ response = await dialog.run()
+ if response != Gtk.ResponseType.OK:
+ return
+
+ account = dialog.account
+ try:
+ await client.core.create_account(*account)
+ except AuthManagerError as ex:
+ return ErrorDialog(
+ _('Error Adding Account'),
+ _('Authentication failed'),
+ parent=self.pref_dialog,
+ details=ex,
+ ).run()
+ except Exception as ex:
+ return ErrorDialog(
+ _('Error Adding Account'),
+ _(f'An error occurred while adding account: {account}'),
+ parent=self.pref_dialog,
+ details=ex,
+ ).run()
+
+ self.accounts_liststore.set(
+ self.accounts_liststore.append(),
+ [ACCOUNTS_USERNAME, ACCOUNTS_LEVEL, ACCOUNTS_PASSWORD],
+ [account.username, account.authlevel, account.password],
+ )
+
+ def on_accounts_edit_clicked(self, widget):
+ (model, itr) = self.accounts_listview.get_selection().get_selected()
+ if not itr:
+ return
+
+ dialog = AccountDialog(
+ model[itr][ACCOUNTS_USERNAME],
+ model[itr][ACCOUNTS_PASSWORD],
+ model[itr][ACCOUNTS_LEVEL],
+ levels_mapping=client.auth_levels_mapping,
+ parent=self.pref_dialog,
+ )
+
+ def dialog_finished(response_id):
+ def update_ok(rc):
+ model.set_value(itr, ACCOUNTS_PASSWORD, dialog.get_username())
+ model.set_value(itr, ACCOUNTS_LEVEL, dialog.get_authlevel())
+
+ def update_fail(failure):
+ ErrorDialog(
+ _('Error Updating Account'),
+ _('An error occurred while updating account'),
+ parent=self.pref_dialog,
+ details=failure.getErrorMessage(),
+ ).run()
+
+ if response_id == Gtk.ResponseType.OK:
+ client.core.update_account(
+ dialog.get_username(), dialog.get_password(), dialog.get_authlevel()
+ ).addCallback(update_ok).addErrback(update_fail)
+
+ dialog.run().addCallback(dialog_finished)
+
+ def on_accounts_delete_clicked(self, widget):
+ (model, itr) = self.accounts_listview.get_selection().get_selected()
+ if not itr:
+ return
+
+ username = model[itr][0]
+ header = _('Remove Account')
+ text = _(
+ 'Are you sure you want to remove the account with the '
+ 'username "%(username)s"?' % {'username': username}
+ )
+ dialog = YesNoDialog(header, text, parent=self.pref_dialog)
+
+ def dialog_finished(response_id):
+ def remove_ok(rc):
+ model.remove(itr)
+
+ def remove_fail(failure):
+ if failure.type == AuthManagerError:
+ ErrorDialog(
+ _('Error Removing Account'),
+ _('Auhentication failed'),
+ parent=self.pref_dialog,
+ details=failure.getErrorMessage(),
+ ).run()
+ else:
+ ErrorDialog(
+ _('Error Removing Account'),
+ _('An error occurred while removing account'),
+ parent=self.pref_dialog,
+ details=failure.getErrorMessage(),
+ ).run()
+
+ if response_id == Gtk.ResponseType.YES:
+ client.core.remove_account(username).addCallback(remove_ok).addErrback(
+ remove_fail
+ )
+
+ dialog.run().addCallback(dialog_finished)
+
+ def on_piecesbar_toggle_toggled(self, widget):
+ self.gtkui_config['show_piecesbar'] = widget.get_active()
+ colors_widget = self.builder.get_object('piecebar_colors_expander')
+ colors_widget.set_visible(widget.get_active())
+
+ def on_urldetect_toggle_toggled(self, widget):
+ self.gtkui_config['detect_urls'] = widget.get_active()
+
+ def on_checkbutton_language_toggled(self, widget):
+ self.language_combo.set_visible(not self.language_checkbox.get_active())
+
+ def on_completed_color_set(self, widget):
+ self.__set_color('completed')
+
+ def on_revert_color_completed_clicked(self, widget):
+ self.__revert_color('completed')
+
+ def on_downloading_color_set(self, widget):
+ self.__set_color('downloading')
+
+ def on_revert_color_downloading_clicked(self, widget):
+ self.__revert_color('downloading')
+
+ def on_waiting_color_set(self, widget):
+ self.__set_color('waiting')
+
+ def on_revert_color_waiting_clicked(self, widget):
+ self.__revert_color('waiting')
+
+ def on_missing_color_set(self, widget):
+ self.__set_color('missing')
+
+ def on_revert_color_missing_clicked(self, widget):
+ self.__revert_color('missing')
+
+ def __set_color(self, state, from_config=False):
+ if from_config:
+ color = Color(*self.gtkui_config['pieces_color_%s' % state])
+ log.debug(
+ 'Setting %r color state from config to %s',
+ state,
+ (color.red, color.green, color.blue),
+ )
+ self.builder.get_object('%s_color' % state).set_color(color)
+ else:
+ color = self.builder.get_object('%s_color' % state).get_color()
+ log.debug(
+ 'Setting %r color state to %s',
+ state,
+ (color.red, color.green, color.blue),
+ )
+ self.gtkui_config['pieces_color_%s' % state] = [
+ color.red,
+ color.green,
+ color.blue,
+ ]
+ self.gtkui_config.save()
+ self.gtkui_config.apply_set_functions('pieces_colors')
+
+ self.builder.get_object('revert_color_%s' % state).set_sensitive(
+ [color.red, color.green, color.blue] != self.COLOR_DEFAULTS[state]
+ )
+
+ def __revert_color(self, state, from_config=False):
+ log.debug('Reverting %r color state', state)
+ self.builder.get_object('%s_color' % state).set_color(
+ Color(*self.COLOR_DEFAULTS[state])
+ )
+ self.builder.get_object('revert_color_%s' % state).set_sensitive(False)
+ self.gtkui_config.apply_set_functions('pieces_colors')
diff --git a/deluge/ui/gtk3/queuedtorrents.py b/deluge/ui/gtk3/queuedtorrents.py
new file mode 100644
index 0000000..6fdecec
--- /dev/null
+++ b/deluge/ui/gtk3/queuedtorrents.py
@@ -0,0 +1,165 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os.path
+
+from gi.repository.GLib import timeout_add
+from gi.repository.Gtk import Builder, CellRendererText, ListStore, TreeViewColumn
+
+import deluge.common
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+
+from .common import get_logo
+from .ipcinterface import process_args
+
+log = logging.getLogger(__name__)
+
+
+class QueuedTorrents(component.Component):
+ def __init__(self):
+ component.Component.__init__(
+ self, 'QueuedTorrents', depend=['StatusBar', 'AddTorrentDialog']
+ )
+ self.queue = []
+ self.status_item = None
+
+ self.config = ConfigManager('gtk3ui.conf')
+ self.builder = Builder()
+ self.builder.add_from_file(
+ deluge.common.resource_filename(
+ __package__, os.path.join('glade', 'queuedtorrents.ui')
+ )
+ )
+ self.builder.get_object('chk_autoadd').set_active(self.config['autoadd_queued'])
+ self.dialog = self.builder.get_object('queued_torrents_dialog')
+ self.dialog.set_icon(get_logo(32))
+
+ self.builder.connect_signals(self)
+
+ self.treeview = self.builder.get_object('treeview')
+ self.treeview.append_column(
+ TreeViewColumn(_('Torrent'), CellRendererText(), text=0)
+ )
+
+ self.liststore = ListStore(str, str)
+ self.treeview.set_model(self.liststore)
+ self.treeview.set_tooltip_column(1)
+
+ def run(self):
+ self.dialog.set_transient_for(component.get('MainWindow').window)
+ self.dialog.show()
+
+ def start(self):
+ if len(self.queue) == 0:
+ return
+
+ # Make sure status bar info is showing
+ self.update_status_bar()
+
+ # We only want the add button sensitive if we're connected to a host
+ self.builder.get_object('button_add').set_sensitive(True)
+
+ if self.config['autoadd_queued'] or self.config['standalone']:
+ self.on_button_add_clicked(None)
+ else:
+ self.run()
+
+ def stop(self):
+ # We only want the add button sensitive if we're connected to a host
+ self.builder.get_object('button_add').set_sensitive(False)
+ self.update_status_bar()
+
+ def add_to_queue(self, torrents):
+ """Adds the list of torrents to the queue"""
+ # Add to the queue while removing duplicates
+ self.queue = list(set(self.queue + torrents))
+
+ # Update the liststore
+ self.liststore.clear()
+ for torrent in self.queue:
+ if deluge.common.is_magnet(torrent):
+ magnet = deluge.common.get_magnet_info(torrent)
+ self.liststore.append([magnet['name'], torrent])
+ else:
+ self.liststore.append([os.path.split(torrent)[1], torrent])
+
+ # Update the status bar
+ self.update_status_bar()
+
+ def update_status_bar(self):
+ """Attempts to update status bar"""
+ # If there are no queued torrents.. remove statusbar widgets and return
+ if len(self.queue) == 0:
+ if self.status_item is not None:
+ component.get('StatusBar').remove_item(self.status_item)
+ self.status_item = None
+ return False
+
+ try:
+ component.get('StatusBar')
+ except Exception:
+ # The statusbar hasn't been loaded yet, so we'll add a timer to
+ # update it later.
+ timeout_add(100, self.update_status_bar)
+ return False
+
+ # Set the label text for statusbar
+ if len(self.queue) > 1:
+ label = str(len(self.queue)) + _(' Torrents Queued')
+ else:
+ label = str(len(self.queue)) + _(' Torrent Queued')
+
+ # Add the statusbar items if needed, or just modify the label if they
+ # have already been added.
+ if self.status_item is None:
+ self.status_item = component.get('StatusBar').add_item(
+ icon='view-sort-descending',
+ text=label,
+ callback=self.on_statusbar_click,
+ )
+ else:
+ self.status_item.set_text(label)
+
+ # We return False so the timer stops
+ return False
+
+ def on_statusbar_click(self, widget, event):
+ log.debug('on_statusbar_click')
+ self.run()
+
+ def on_button_remove_clicked(self, widget):
+ selected = self.treeview.get_selection().get_selected()[1]
+ if selected is not None:
+ path = self.liststore.get_value(selected, 1)
+ self.liststore.remove(selected)
+ self.queue.remove(path)
+ self.update_status_bar()
+
+ def on_button_clear_clicked(self, widget):
+ self.liststore.clear()
+ del self.queue[:]
+ self.update_status_bar()
+
+ def on_button_close_clicked(self, widget):
+ self.dialog.hide()
+
+ def on_button_add_clicked(self, widget):
+ # Add all the torrents in the liststore
+ def add_torrent(model, path, _iter, data):
+ torrent_path = deluge.common.decode_bytes(model.get_value(_iter, 1))
+ process_args([torrent_path])
+
+ self.liststore.foreach(add_torrent, None)
+ del self.queue[:]
+ self.dialog.hide()
+ self.update_status_bar()
+
+ def on_chk_autoadd_toggled(self, widget):
+ self.config['autoadd_queued'] = widget.get_active()
diff --git a/deluge/ui/gtk3/removetorrentdialog.py b/deluge/ui/gtk3/removetorrentdialog.py
new file mode 100644
index 0000000..06fca77
--- /dev/null
+++ b/deluge/ui/gtk3/removetorrentdialog.py
@@ -0,0 +1,90 @@
+#
+# Copyright (C) 2007-2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+
+from gi.repository import Gtk
+
+import deluge.common
+import deluge.component as component
+from deluge.ui.client import client
+
+log = logging.getLogger(__name__)
+
+
+class RemoveTorrentDialog:
+ """
+ This class is used to create and show a Remove Torrent Dialog.
+
+ :param torrent_ids: the torrent_ids to remove
+ :type torrent_ids: list of torrent_ids
+
+ :raises TypeError: if `torrent_id` is not a sequence type
+ :raises ValueError: if `torrent_id` contains no torrent_ids or is None
+
+ """
+
+ def __init__(self, torrent_ids, delete_files=False):
+ if not isinstance(torrent_ids, list) and not isinstance(torrent_ids, tuple):
+ raise TypeError('requires a list of torrent_ids')
+
+ if not torrent_ids:
+ raise ValueError('requires a list of torrent_ids')
+
+ self.__torrent_ids = torrent_ids
+
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file(
+ deluge.common.resource_filename(
+ __package__, os.path.join('glade', 'remove_torrent_dialog.ui')
+ )
+ )
+
+ self.__dialog = self.builder.get_object('remove_torrent_dialog')
+ self.__dialog.set_transient_for(component.get('MainWindow').window)
+
+ self.builder.connect_signals(self)
+ self.builder.get_object('delete_files').set_active(delete_files)
+ label_title = self.builder.get_object('label_title')
+ label_torrents = self.builder.get_object('label_torrents')
+ num_torrents = len(self.__torrent_ids)
+ if num_torrents == 1:
+ label_torrents.set_markup(
+ component.get('TorrentView').get_torrent_status(self.__torrent_ids[0])[
+ 'name'
+ ]
+ )
+ else:
+ label_title.set_markup(_('Remove the selected torrents?'))
+ label_torrents.set_markup(_('Total of %s torrents selected') % num_torrents)
+
+ def on_delete_files_toggled(self, widget):
+ self.builder.get_object('warning_label').set_visible(widget.get_active())
+
+ def __remove_torrents(self, remove_data):
+ # Unselect all to avoid issues with the selection changed event
+ component.get('TorrentView').treeview.get_selection().unselect_all()
+
+ def on_removed_finished(errors):
+ if errors:
+ log.info('Error(s) occured when trying to delete torrent(s).')
+ for t_id, e_msg in errors:
+ log.warning('Error removing torrent %s : %s', t_id, e_msg)
+
+ d = client.core.remove_torrents(self.__torrent_ids, remove_data)
+ d.addCallback(on_removed_finished)
+
+ def run(self):
+ """
+ Shows the dialog and awaits for user input. The user can select to
+ remove the torrent(s) from the session with or without their data.
+ """
+ if self.__dialog.run() == Gtk.ResponseType.OK:
+ self.__remove_torrents(self.builder.get_object('delete_files').get_active())
+ self.__dialog.destroy()
diff --git a/deluge/ui/gtk3/sidebar.py b/deluge/ui/gtk3/sidebar.py
new file mode 100644
index 0000000..5a2b154
--- /dev/null
+++ b/deluge/ui/gtk3/sidebar.py
@@ -0,0 +1,70 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from gi.repository.Gtk import Label, PolicyType, ScrolledWindow
+
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+
+log = logging.getLogger(__name__)
+
+
+class SideBar(component.Component):
+ """
+ manages the sidebar-tabs.
+ purpose : plugins
+ """
+
+ def __init__(self):
+ component.Component.__init__(self, 'SideBar')
+ main_builder = component.get('MainWindow').get_builder()
+ self.notebook = main_builder.get_object('sidebar_notebook')
+ self.config = ConfigManager('gtk3ui.conf')
+
+ # Tabs holds references to the Tab widgets by their name
+ self.tabs = {}
+
+ # Hide if necessary
+ self.visible(self.config['show_sidebar'])
+
+ def visible(self, visible):
+ self.notebook.show() if visible else self.notebook.hide()
+ self.config['show_sidebar'] = visible
+
+ def add_tab(self, widget, tab_name, label):
+ """Adds a tab object to the notebook."""
+ log.debug('add tab: %s', tab_name)
+ self.tabs[tab_name] = widget
+ scrolled = ScrolledWindow()
+ scrolled.set_policy(PolicyType.AUTOMATIC, PolicyType.AUTOMATIC)
+ scrolled.add(widget)
+ self.notebook.insert_page(scrolled, Label(label=label), -1)
+ scrolled.show_all()
+
+ self.after_update()
+
+ def remove_tab(self, tab_name):
+ """Removes a tab by name."""
+ self.notebook.remove_page(self.notebook.page_num(self.tabs[tab_name]))
+ del self.tabs[tab_name]
+
+ self.after_update()
+
+ def after_update(self):
+ # If there are no tabs visible, then do not show the notebook
+ if len(self.tabs) == 0:
+ self.visible(False)
+
+ # If there is 1 tab, hide the tab-headers
+ if len(self.tabs) == 1:
+ self.notebook.set_show_tabs(False)
+ else:
+ self.notebook.set_show_tabs(True)
diff --git a/deluge/ui/gtk3/status_tab.py b/deluge/ui/gtk3/status_tab.py
new file mode 100644
index 0000000..6a9010b
--- /dev/null
+++ b/deluge/ui/gtk3/status_tab.py
@@ -0,0 +1,159 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.common import decode_bytes, fpeer
+from deluge.configmanager import ConfigManager
+
+from .piecesbar import PiecesBar
+from .tab_data_funcs import (
+ fdate_or_never,
+ fpcnt,
+ fratio,
+ fseed_rank_or_dash,
+ fspeed_max,
+ ftime_or_dash,
+ ftotal_sized,
+)
+from .torrentdetails import Tab, TabWidget
+
+log = logging.getLogger(__name__)
+
+
+class StatusTab(Tab):
+ def __init__(self):
+ super().__init__('Status', 'status_tab', 'status_tab_label')
+
+ self.config = ConfigManager('gtk3ui.conf')
+
+ self.progressbar = self.main_builder.get_object('progressbar')
+ self.piecesbar = None
+
+ self.add_tab_widget('summary_availability', fratio, ('distributed_copies',))
+ self.add_tab_widget(
+ 'summary_total_downloaded',
+ ftotal_sized,
+ ('all_time_download', 'total_payload_download'),
+ )
+ self.add_tab_widget(
+ 'summary_total_uploaded',
+ ftotal_sized,
+ ('total_uploaded', 'total_payload_upload'),
+ )
+ self.add_tab_widget(
+ 'summary_download_speed',
+ fspeed_max,
+ ('download_payload_rate', 'max_download_speed'),
+ )
+ self.add_tab_widget(
+ 'summary_upload_speed',
+ fspeed_max,
+ ('upload_payload_rate', 'max_upload_speed'),
+ )
+ self.add_tab_widget('summary_seeds', fpeer, ('num_seeds', 'total_seeds'))
+ self.add_tab_widget('summary_peers', fpeer, ('num_peers', 'total_peers'))
+ self.add_tab_widget('summary_eta', ftime_or_dash, ('eta',))
+ self.add_tab_widget('summary_share_ratio', fratio, ('ratio',))
+ self.add_tab_widget('summary_active_time', ftime_or_dash, ('active_time',))
+ self.add_tab_widget('summary_seed_time', ftime_or_dash, ('seeding_time',))
+ self.add_tab_widget(
+ 'summary_seed_rank', fseed_rank_or_dash, ('seed_rank', 'seeding_time')
+ )
+ self.add_tab_widget('progressbar', fpcnt, ('progress', 'state', 'message'))
+ self.add_tab_widget(
+ 'summary_last_seen_complete', fdate_or_never, ('last_seen_complete',)
+ )
+ self.add_tab_widget(
+ 'summary_last_transfer', ftime_or_dash, ('time_since_transfer',)
+ )
+
+ self.config.register_set_function(
+ 'show_piecesbar', self.on_show_piecesbar_config_changed, apply_now=True
+ )
+
+ def update(self):
+ # Get the first selected torrent
+ selected = component.get('TorrentView').get_selected_torrent()
+
+ if not selected:
+ # No torrent is selected in the torrentview
+ self.clear()
+ return
+
+ # Get the torrent status
+ status_keys = self.status_keys
+ if self.config['show_piecesbar']:
+ status_keys.extend(['pieces', 'num_pieces'])
+
+ component.get('SessionProxy').get_torrent_status(
+ selected, status_keys
+ ).addCallback(self._on_get_torrent_status)
+
+ def _on_get_torrent_status(self, status):
+ # Check to see if we got valid data from the core
+ if not status:
+ return
+
+ # Update all the label widgets
+ for widget in self.tab_widgets.values():
+ txt = self.widget_status_as_fstr(widget, status)
+ if decode_bytes(widget[0].get_text()) != txt:
+ widget[0].set_text(txt)
+
+ # Update progress bar separately as it's a special case (not a label).
+ fraction = status['progress'] / 100
+
+ if self.config['show_piecesbar']:
+ if self.piecesbar.get_fraction() != fraction:
+ self.piecesbar.set_fraction(fraction)
+ if (
+ status['state'] != 'Checking'
+ and self.piecesbar.get_pieces() != status['pieces']
+ ):
+ # Skip pieces assignment if checking torrent.
+ self.piecesbar.set_pieces(status['pieces'], status['num_pieces'])
+ self.piecesbar.update()
+ else:
+ if self.progressbar.get_fraction() != fraction:
+ self.progressbar.set_fraction(fraction)
+
+ def on_show_piecesbar_config_changed(self, key, show):
+ if show:
+ self.show_piecesbar()
+ else:
+ self.hide_piecesbar()
+
+ def show_piecesbar(self):
+ if self.piecesbar is None:
+ self.piecesbar = PiecesBar()
+ self.main_builder.get_object('status_progress_vbox').pack_start(
+ self.piecesbar, False, False, 0
+ )
+ self.tab_widgets['piecesbar'] = TabWidget(
+ self.piecesbar, fpcnt, ('progress', 'state', 'message')
+ )
+ self.piecesbar.show()
+ self.progressbar.hide()
+
+ def hide_piecesbar(self):
+ self.progressbar.show()
+ if self.piecesbar:
+ self.piecesbar.hide()
+ self.tab_widgets.pop('piecesbar', None)
+ self.piecesbar = None
+
+ def clear(self):
+ for widget in self.tab_widgets.values():
+ widget[0].set_text('')
+
+ if self.config['show_piecesbar']:
+ self.piecesbar.clear()
+ else:
+ self.progressbar.set_fraction(0)
diff --git a/deluge/ui/gtk3/statusbar.py b/deluge/ui/gtk3/statusbar.py
new file mode 100644
index 0000000..0a2e800
--- /dev/null
+++ b/deluge/ui/gtk3/statusbar.py
@@ -0,0 +1,578 @@
+#
+# Copyright (C) 2007-2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from gi.repository import Gtk
+from gi.repository.GLib import timeout_add
+
+import deluge.component as component
+from deluge.common import fsize, fspeed, get_pixmap
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+from .common import build_menu_radio_list
+from .dialogs import OtherDialog
+
+log = logging.getLogger(__name__)
+
+
+class StatusBarItem:
+ def __init__(
+ self,
+ image=None,
+ stock=None,
+ icon=None,
+ text=None,
+ markup=False,
+ callback=None,
+ tooltip=None,
+ ):
+ self._widgets = []
+ self._ebox = Gtk.EventBox()
+ self._hbox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing=3)
+ self._image = Gtk.Image()
+ self._label = Gtk.Label()
+ if image or icon or stock:
+ self._hbox.add(self._image)
+ self._hbox.add(self._label)
+ self._ebox.add(self._hbox)
+
+ # Add image from file or stock
+ if image:
+ self.set_image_from_file(image)
+ if stock:
+ self.set_image_from_stock(stock)
+ if icon:
+ self.set_image_from_icon(icon)
+
+ # Add text
+ if markup:
+ self.set_markup(text)
+ else:
+ self.set_text(text)
+
+ if callback is not None:
+ self.set_callback(callback)
+
+ if tooltip:
+ self.set_tooltip(tooltip)
+
+ self.show_all()
+
+ def set_callback(self, callback):
+ self._ebox.connect('button-press-event', callback)
+
+ def show_all(self):
+ self._ebox.show()
+ self._hbox.show()
+ self._image.show()
+
+ def set_image_from_file(self, image):
+ self._image.set_from_file(image)
+
+ def set_image_from_stock(self, stock):
+ self._image.set_from_stock(stock, Gtk.IconSize.MENU)
+
+ def set_image_from_icon(self, icon):
+ self._image.set_from_icon_name(icon, Gtk.IconSize.MENU)
+
+ def set_text(self, text):
+ if not text:
+ self._label.hide()
+ elif self._label.get_text() != text:
+ self._label.set_text(text)
+ self._label.show()
+
+ def set_markup(self, text):
+ if not text:
+ self._label.hide()
+ elif self._label.get_text() != text:
+ self._label.set_markup(text)
+ self._label.show()
+
+ def set_tooltip(self, tip):
+ if self._ebox.get_tooltip_text() != tip:
+ self._ebox.set_tooltip_text(tip)
+
+ def get_widgets(self):
+ return self._widgets
+
+ def get_eventbox(self):
+ return self._ebox
+
+ def get_text(self):
+ return self._label.get_text()
+
+
+class StatusBar(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'StatusBar', interval=3)
+ main_builder = component.get('MainWindow').get_builder()
+ self.statusbar = main_builder.get_object('statusbar')
+ self.config = ConfigManager('gtk3ui.conf')
+
+ # Status variables that are updated via callback
+ self.max_connections_global = -1
+ self.num_connections = 0
+ self.max_download_speed = -1.0
+ self.download_rate = ''
+ self.max_upload_speed = -1.0
+ self.upload_rate = ''
+ self.dht_nodes = 0
+ self.dht_status = False
+ self.health = False
+ self.download_protocol_rate = 0.0
+ self.upload_protocol_rate = 0.0
+
+ self.config_value_changed_dict = {
+ 'max_connections_global': self._on_max_connections_global,
+ 'max_download_speed': self._on_max_download_speed,
+ 'max_upload_speed': self._on_max_upload_speed,
+ 'dht': self._on_dht,
+ }
+ self.current_warnings = []
+ # Add hbox to the statusbar after removing the initial label widget
+ self.hbox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing=10)
+ self.hbox.set_margin_top(2)
+ self.hbox.set_margin_bottom(3)
+ frame = self.statusbar.get_children()[0]
+ frame.remove(frame.get_children()[0])
+ frame.add(self.hbox)
+ self.statusbar.show_all()
+ # Create the not connected item
+ self.not_connected_item = StatusBarItem(
+ icon='network-offline-symbolic',
+ text=_('Not Connected'),
+ callback=self._on_notconnected_item_clicked,
+ )
+ # Show the not connected status bar
+ self.show_not_connected()
+
+ # Hide if necessary
+ self.visible(self.config['show_statusbar'])
+
+ client.register_event_handler(
+ 'ConfigValueChangedEvent', self.on_configvaluechanged_event
+ )
+
+ def start(self):
+ # Add in images and labels
+ self.remove_item(self.not_connected_item)
+
+ self.connections_item = self.add_item(
+ icon='network-transmit-receive-symbolic',
+ callback=self._on_connection_item_clicked,
+ tooltip=_('Connections (Limit)'),
+ pack_start=True,
+ )
+
+ self.download_item = self.add_item(
+ image=get_pixmap('downloading16.png'),
+ callback=self._on_download_item_clicked,
+ tooltip=_('Download Speed (Limit)'),
+ pack_start=True,
+ )
+
+ self.upload_item = self.add_item(
+ image=get_pixmap('seeding16.png'),
+ callback=self._on_upload_item_clicked,
+ tooltip=_('Upload Speed (Limit)'),
+ pack_start=True,
+ )
+
+ self.traffic_item = self.add_item(
+ image=get_pixmap('traffic16.png'),
+ callback=self._on_traffic_item_clicked,
+ tooltip=_('Protocol Traffic (Down:Up)'),
+ pack_start=True,
+ )
+
+ self.dht_item = StatusBarItem(
+ image=get_pixmap('dht16.png'), tooltip=_('DHT Nodes')
+ )
+
+ self.diskspace_item = self.add_item(
+ icon='drive-harddisk-symbolic',
+ callback=self._on_diskspace_item_clicked,
+ tooltip=_('Free Disk Space'),
+ pack_start=True,
+ )
+
+ self.external_ip_item = self.add_item(
+ tooltip=_('External IP Address'),
+ text=_('<b>IP</b> <small>%s</small>') % _('n/a'),
+ markup=True,
+ pack_start=True,
+ )
+
+ self.health_item = self.add_item(
+ icon='network-error-symbolic',
+ text=_('<b><small>Port Issue</small></b>'),
+ markup=True,
+ tooltip=_('No incoming connections, check port forwarding'),
+ callback=self._on_health_icon_clicked,
+ )
+
+ self.health = False
+
+ def update_config_values(configs):
+ self._on_max_connections_global(configs['max_connections_global'])
+ self._on_max_download_speed(configs['max_download_speed'])
+ self._on_max_upload_speed(configs['max_upload_speed'])
+ self._on_dht(configs['dht'])
+
+ # Get some config values
+ client.core.get_config_values(
+ ['max_connections_global', 'max_download_speed', 'max_upload_speed', 'dht']
+ ).addCallback(update_config_values)
+
+ def stop(self):
+ # When stopped, we just show the not connected thingy
+ try:
+ self.remove_item(self.connections_item)
+ self.remove_item(self.dht_item)
+ self.remove_item(self.download_item)
+ self.remove_item(self.upload_item)
+ self.remove_item(self.not_connected_item)
+ self.remove_item(self.health_item)
+ self.remove_item(self.traffic_item)
+ self.remove_item(self.diskspace_item)
+ self.remove_item(self.external_ip_item)
+ except Exception as ex:
+ log.debug('Unable to remove StatusBar item: %s', ex)
+ self.show_not_connected()
+
+ def visible(self, visible):
+ if visible:
+ self.statusbar.show()
+ else:
+ self.statusbar.hide()
+
+ self.config['show_statusbar'] = visible
+
+ def show_not_connected(self):
+ self.hbox.pack_start(self.not_connected_item.get_eventbox(), False, False, 0)
+
+ def add_item(
+ self,
+ image=None,
+ stock=None,
+ icon=None,
+ text=None,
+ markup=False,
+ callback=None,
+ tooltip=None,
+ pack_start=False,
+ ):
+ """Adds an item to the status bar"""
+ # The return tuple.. we return whatever widgets we add
+ item = StatusBarItem(image, stock, icon, text, markup, callback, tooltip)
+ if pack_start:
+ self.hbox.pack_start(item.get_eventbox(), False, False, 0)
+ else:
+ self.hbox.pack_end(item.get_eventbox(), False, False, 0)
+ return item
+
+ def remove_item(self, item):
+ """Removes an item from the statusbar"""
+ if item.get_eventbox() in self.hbox.get_children():
+ try:
+ self.hbox.remove(item.get_eventbox())
+ except Exception as ex:
+ log.debug('Unable to remove widget: %s', ex)
+
+ def add_timeout_item(
+ self, seconds=3, image=None, stock=None, icon=None, text=None, callback=None
+ ):
+ """Adds an item to the StatusBar for seconds"""
+ item = self.add_item(image, stock, icon, text, callback)
+ # Start a timer to remove this item in seconds
+ timeout_add(seconds * 1000, self.remove_item, item)
+
+ def display_warning(self, text, callback=None):
+ """Displays a warning to the user in the status bar"""
+ if text not in self.current_warnings:
+ item = self.add_item(
+ icon='dialog-warning-symbolic', text=text, callback=callback
+ )
+ self.current_warnings.append(text)
+ timeout_add(3000, self.remove_warning, item)
+
+ def remove_warning(self, item):
+ self.current_warnings.remove(item.get_text())
+ self.remove_item(item)
+
+ def clear_statusbar(self):
+ def remove(child):
+ self.hbox.remove(child)
+
+ self.hbox.foreach(remove)
+
+ def send_status_request(self):
+ # Sends an async request for data from the core
+ keys = [
+ 'peer.num_peers_connected',
+ 'upload_rate',
+ 'download_rate',
+ 'payload_upload_rate',
+ 'payload_download_rate',
+ 'net.sent_bytes',
+ 'net.recv_bytes',
+ 'net.sent_payload_bytes',
+ 'net.recv_payload_bytes',
+ ]
+
+ if self.dht_status:
+ keys.append('dht.dht_nodes')
+
+ if not self.health:
+ keys.append('net.has_incoming_connections')
+
+ client.core.get_session_status(keys).addCallback(self._on_get_session_status)
+ client.core.get_free_space().addCallback(self._on_get_free_space)
+ client.core.get_external_ip().addCallback(self._on_get_external_ip)
+
+ def on_configvaluechanged_event(self, key, value):
+ """
+ This is called when we receive a ConfigValueChangedEvent from
+ the core.
+ """
+ if key in self.config_value_changed_dict:
+ self.config_value_changed_dict[key](value)
+
+ def _on_max_connections_global(self, max_connections):
+ self.max_connections_global = max_connections
+ self.update_connections_label()
+
+ def _on_dht(self, value):
+ self.dht_status = value
+ if value:
+ self.hbox.pack_start(self.dht_item.get_eventbox(), False, False, 0)
+ self.send_status_request()
+ else:
+ self.remove_item(self.dht_item)
+
+ def _on_get_session_status(self, status):
+ self.download_rate = fspeed(
+ status['payload_download_rate'], precision=0, shortform=True
+ )
+ self.upload_rate = fspeed(
+ status['payload_upload_rate'], precision=0, shortform=True
+ )
+ self.download_protocol_rate = (
+ status['download_rate'] - status['payload_download_rate']
+ ) // 1024
+ self.upload_protocol_rate = (
+ status['upload_rate'] - status['payload_upload_rate']
+ ) // 1024
+ self.num_connections = status['peer.num_peers_connected']
+ self.update_download_label()
+ self.update_upload_label()
+ self.update_traffic_label()
+ self.update_connections_label()
+
+ if 'dht.dht_nodes' in status:
+ self.dht_nodes = status['dht.dht_nodes']
+ self.update_dht_label()
+
+ if 'net.has_incoming_connections' in status:
+ self.health = status['net.has_incoming_connections']
+ if self.health:
+ self.remove_item(self.health_item)
+
+ def _on_get_free_space(self, space):
+ if space >= 0:
+ self.diskspace_item.set_markup(
+ '<small>%s</small>' % fsize(space, shortform=True)
+ )
+ else:
+ self.diskspace_item.set_markup(
+ '<span foreground="red">' + _('Error') + '</span>'
+ )
+
+ def _on_max_download_speed(self, max_download_speed):
+ self.max_download_speed = max_download_speed
+ self.update_download_label()
+
+ def _on_max_upload_speed(self, max_upload_speed):
+ self.max_upload_speed = max_upload_speed
+ self.update_upload_label()
+
+ def _on_get_external_ip(self, external_ip):
+ ip = external_ip if external_ip else _('n/a')
+ self.external_ip_item.set_markup(_('<b>IP</b> <small>%s</small>') % ip)
+
+ def update_connections_label(self):
+ # Set the max connections label
+ if self.max_connections_global < 0:
+ label_string = '%s' % self.num_connections
+ else:
+ label_string = '{} <small>({})</small>'.format(
+ self.num_connections,
+ self.max_connections_global,
+ )
+
+ self.connections_item.set_markup(label_string)
+
+ if self.num_connections:
+ self.connections_item.set_image_from_icon(
+ 'network-transmit-receive-symbolic'
+ )
+ else:
+ self.connections_item.set_image_from_icon('network-idle-symbolic')
+
+ def update_dht_label(self):
+ # Set the max connections label
+ self.dht_item.set_markup('<small>%s</small>' % (self.dht_nodes))
+
+ def update_download_label(self):
+ # Set the download speed label
+ if self.max_download_speed <= 0:
+ label_string = self.download_rate
+ else:
+ label_string = '%s <small>(%i %s)</small>' % (
+ self.download_rate,
+ self.max_download_speed,
+ _('K/s'),
+ )
+
+ self.download_item.set_markup(label_string)
+
+ def update_upload_label(self):
+ # Set the upload speed label
+ if self.max_upload_speed <= 0:
+ label_string = self.upload_rate
+ else:
+ label_string = '%s <small>(%i %s)</small>' % (
+ self.upload_rate,
+ self.max_upload_speed,
+ _('K/s'),
+ )
+
+ self.upload_item.set_markup(label_string)
+
+ def update_traffic_label(self):
+ label_string = '<small>%i:%i %s</small>' % (
+ self.download_protocol_rate,
+ self.upload_protocol_rate,
+ _('K/s'),
+ )
+ self.traffic_item.set_markup(label_string)
+
+ def update(self):
+ self.send_status_request()
+
+ def set_limit_value(self, widget, core_key):
+ log.debug('_on_set_unlimit_other %s', core_key)
+ other_dialog_info = {
+ 'max_download_speed': (
+ _('Download Speed Limit'),
+ _('Set the maximum download speed'),
+ _('K/s'),
+ 'downloading.svg',
+ self.max_download_speed,
+ ),
+ 'max_upload_speed': (
+ _('Upload Speed Limit'),
+ _('Set the maximum upload speed'),
+ _('K/s'),
+ 'seeding.svg',
+ self.max_upload_speed,
+ ),
+ 'max_connections_global': (
+ _('Incoming Connections'),
+ _('Set the maximum incoming connections'),
+ '',
+ 'network-transmit-receive-symbolic',
+ self.max_connections_global,
+ ),
+ }
+
+ def set_value(value):
+ log.debug('value: %s', value)
+ if value is None:
+ return
+ elif value == 0:
+ value = -1
+ # Set the config in the core
+ if value != getattr(self, core_key):
+ client.core.set_config({core_key: value})
+
+ if widget.get_name() == 'unlimited':
+ set_value(-1)
+ elif widget.get_name() == 'other':
+
+ def dialog_finished(response_id):
+ if response_id == Gtk.ResponseType.OK:
+ set_value(dialog.get_value())
+
+ dialog = OtherDialog(*other_dialog_info[core_key])
+ dialog.run().addCallback(set_value)
+ else:
+ value = widget.get_children()[0].get_text().split(' ')[0]
+ set_value(value)
+
+ def _on_download_item_clicked(self, widget, event):
+ self.menu = build_menu_radio_list(
+ self.config['tray_download_speed_list'],
+ self._on_set_download_speed,
+ self.max_download_speed,
+ _('K/s'),
+ show_notset=True,
+ show_other=True,
+ )
+ self.menu.show_all()
+ self.menu.popup(None, None, None, None, event.button, event.time)
+
+ def _on_set_download_speed(self, widget):
+ log.debug('_on_set_download_speed')
+ self.set_limit_value(widget, 'max_download_speed')
+
+ def _on_upload_item_clicked(self, widget, event):
+ self.menu = build_menu_radio_list(
+ self.config['tray_upload_speed_list'],
+ self._on_set_upload_speed,
+ self.max_upload_speed,
+ _('K/s'),
+ show_notset=True,
+ show_other=True,
+ )
+ self.menu.show_all()
+ self.menu.popup(None, None, None, None, event.button, event.time)
+
+ def _on_set_upload_speed(self, widget):
+ log.debug('_on_set_upload_speed')
+ self.set_limit_value(widget, 'max_upload_speed')
+
+ def _on_connection_item_clicked(self, widget, event):
+ self.menu = build_menu_radio_list(
+ self.config['connection_limit_list'],
+ self._on_set_connection_limit,
+ self.max_connections_global,
+ show_notset=True,
+ show_other=True,
+ )
+ self.menu.show_all()
+ self.menu.popup(None, None, None, None, event.button, event.time)
+
+ def _on_set_connection_limit(self, widget):
+ log.debug('_on_set_connection_limit')
+ self.set_limit_value(widget, 'max_connections_global')
+
+ def _on_health_icon_clicked(self, widget, event):
+ component.get('Preferences').show('network')
+
+ def _on_notconnected_item_clicked(self, widget, event):
+ component.get('ConnectionManager').show()
+
+ def _on_traffic_item_clicked(self, widget, event):
+ component.get('Preferences').show('network')
+
+ def _on_diskspace_item_clicked(self, widget, event):
+ component.get('Preferences').show('downloads')
diff --git a/deluge/ui/gtk3/systemtray.py b/deluge/ui/gtk3/systemtray.py
new file mode 100644
index 0000000..5318cf2
--- /dev/null
+++ b/deluge/ui/gtk3/systemtray.py
@@ -0,0 +1,445 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+
+from gi import require_version
+from gi.repository.Gtk import Builder, RadioMenuItem, StatusIcon
+
+import deluge.component as component
+from deluge.common import (
+ fspeed,
+ get_pixmap,
+ osx_check,
+ resource_filename,
+ windows_check,
+)
+from deluge.configmanager import ConfigManager
+from deluge.ui.client import client
+
+from .common import build_menu_radio_list, get_logo
+from .dialogs import OtherDialog
+
+try:
+ try:
+ require_version('AyatanaAppIndicator3', '0.1')
+ from gi.repository import AyatanaAppIndicator3 as AppIndicator3
+ except (ValueError, ImportError):
+ require_version('AppIndicator3', '0.1')
+ from gi.repository import AppIndicator3
+except (ValueError, ImportError):
+ AppIndicator3 = None
+
+log = logging.getLogger(__name__)
+
+
+class SystemTray(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'SystemTray', interval=4)
+ self.mainwindow = component.get('MainWindow')
+ self.config = ConfigManager('gtk3ui.conf')
+ # List of widgets that need to be hidden when not connected to a host
+ self.hide_widget_list = [
+ 'menuitem_add_torrent',
+ 'menuitem_pause_session',
+ 'menuitem_resume_session',
+ 'menuitem_download_limit',
+ 'menuitem_upload_limit',
+ 'menuitem_quitdaemon',
+ 'separatormenuitem1',
+ 'separatormenuitem2',
+ 'separatormenuitem3',
+ 'separatormenuitem4',
+ ]
+ self.config.register_set_function(
+ 'enable_system_tray', self.on_enable_system_tray_set
+ )
+ # bit of a hack to prevent function from doing something on startup
+ self.__enabled_set_once = False
+ self.config.register_set_function(
+ 'enable_appindicator', self.on_enable_appindicator_set
+ )
+
+ self.max_download_speed = -1.0
+ self.download_rate = 0.0
+ self.max_upload_speed = -1.0
+ self.upload_rate = 0.0
+
+ self.config_value_changed_dict = {
+ 'max_download_speed': self._on_max_download_speed,
+ 'max_upload_speed': self._on_max_upload_speed,
+ }
+
+ def enable(self):
+ """Enables the system tray icon."""
+ self.builder = Builder()
+ self.builder.add_from_file(
+ resource_filename(__package__, os.path.join('glade', 'tray_menu.ui'))
+ )
+
+ self.builder.connect_signals(self)
+
+ self.tray_menu = self.builder.get_object('tray_menu')
+
+ if AppIndicator3 and self.config['enable_appindicator']:
+ log.debug('Enabling the Application Indicator...')
+ self.indicator = AppIndicator3.Indicator.new(
+ 'deluge',
+ 'deluge-panel',
+ AppIndicator3.IndicatorCategory.APPLICATION_STATUS,
+ )
+ self.indicator.set_property('title', _('Deluge'))
+
+ # Pass the menu to the Application Indicator
+ self.indicator.set_menu(self.tray_menu)
+
+ # Make sure the status of the Show Window MenuItem is correct
+ self._sig_win_hide = self.mainwindow.window.connect(
+ 'hide', self._on_window_hide
+ )
+ self._sig_win_show = self.mainwindow.window.connect(
+ 'show', self._on_window_show
+ )
+ if self.mainwindow.visible():
+ self.builder.get_object('menuitem_show_deluge').set_active(True)
+ else:
+ self.builder.get_object('menuitem_show_deluge').set_active(False)
+
+ # Show the Application Indicator
+ self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)
+
+ else:
+ log.debug('Enabling the system tray icon..')
+ if windows_check() or osx_check():
+ self.tray = StatusIcon.new_from_pixbuf(get_logo(32))
+ else:
+ self.tray = StatusIcon.new_from_icon_name('deluge-panel')
+
+ self.tray.connect('activate', self.on_tray_clicked)
+ self.tray.connect('popup-menu', self.on_tray_popup)
+
+ self.builder.get_object('download-limit-image').set_from_file(
+ get_pixmap('downloading16.png')
+ )
+ self.builder.get_object('upload-limit-image').set_from_file(
+ get_pixmap('seeding16.png')
+ )
+
+ client.register_event_handler(
+ 'ConfigValueChangedEvent', self.config_value_changed
+ )
+ if client.connected():
+ # We're connected so we need to get some values from the core
+ self.__start()
+ else:
+ # Hide menu widgets because we're not connected to a host.
+ for widget in self.hide_widget_list:
+ self.builder.get_object(widget).hide()
+
+ def __start(self):
+ if self.config['enable_system_tray']:
+ if self.config['standalone']:
+ try:
+ self.hide_widget_list.remove('menuitem_quitdaemon')
+ self.hide_widget_list.remove('separatormenuitem4')
+ except ValueError:
+ pass
+ self.builder.get_object('menuitem_quitdaemon').hide()
+ self.builder.get_object('separatormenuitem4').hide()
+
+ # Show widgets in the hide list because we've connected to a host
+ for widget in self.hide_widget_list:
+ self.builder.get_object(widget).show()
+
+ # Build the bandwidth speed limit menus
+ self.build_tray_bwsetsubmenu()
+
+ # Get some config values
+ def update_config_values(configs):
+ self._on_max_download_speed(configs['max_download_speed'])
+ self._on_max_upload_speed(configs['max_upload_speed'])
+
+ client.core.get_config_values(
+ ['max_download_speed', 'max_upload_speed']
+ ).addCallback(update_config_values)
+
+ def start(self):
+ self.__start()
+
+ def stop(self):
+ if self.config['enable_system_tray'] and not self.config['enable_appindicator']:
+ try:
+ # Hide widgets in hide list because we're not connected to a host
+ for widget in self.hide_widget_list:
+ self.builder.get_object(widget).hide()
+ except Exception as ex:
+ log.debug('Unable to hide system tray menu widgets: %s', ex)
+
+ self.tray.set_tooltip_text(_('Deluge') + '\n' + _('Not Connected...'))
+
+ def shutdown(self):
+ if self.config['enable_system_tray']:
+ if AppIndicator3 and self.config['enable_appindicator']:
+ self.indicator.set_status(AppIndicator3.IndicatorStatus.PASSIVE)
+ else:
+ self.tray.set_visible(False)
+
+ def send_status_request(self):
+ client.core.get_session_status(
+ ['payload_upload_rate', 'payload_download_rate']
+ ).addCallback(self._on_get_session_status)
+
+ def config_value_changed(self, key, value):
+ """This is called when we received a config_value_changed signal from
+ the core."""
+ if key in self.config_value_changed_dict:
+ self.config_value_changed_dict[key](value)
+
+ def _on_max_download_speed(self, max_download_speed):
+ if self.max_download_speed != max_download_speed:
+ self.max_download_speed = max_download_speed
+ self.build_tray_bwsetsubmenu()
+
+ def _on_max_upload_speed(self, max_upload_speed):
+ if self.max_upload_speed != max_upload_speed:
+ self.max_upload_speed = max_upload_speed
+ self.build_tray_bwsetsubmenu()
+
+ def _on_get_session_status(self, status):
+ self.download_rate = fspeed(status['payload_download_rate'], shortform=True)
+ self.upload_rate = fspeed(status['payload_upload_rate'], shortform=True)
+
+ def update(self):
+ if not self.config['enable_system_tray']:
+ return
+
+ # Tool tip text not available for appindicator
+ if AppIndicator3 and self.config['enable_appindicator']:
+ if self.mainwindow.visible():
+ self.builder.get_object('menuitem_show_deluge').set_active(True)
+ else:
+ self.builder.get_object('menuitem_show_deluge').set_active(False)
+ return
+
+ # Set the tool tip text
+ max_download_speed = self.max_download_speed
+ max_upload_speed = self.max_upload_speed
+
+ if max_download_speed == -1:
+ max_download_speed = _('Unlimited')
+ else:
+ max_download_speed = '{} {}'.format(max_download_speed, _('K/s'))
+ if max_upload_speed == -1:
+ max_upload_speed = _('Unlimited')
+ else:
+ max_upload_speed = '{} {}'.format(max_upload_speed, _('K/s'))
+
+ msg = '{}\n{}: {} ({})\n{}: {} ({})'.format(
+ _('Deluge'),
+ _('Down'),
+ self.download_rate,
+ max_download_speed,
+ _('Up'),
+ self.upload_rate,
+ max_upload_speed,
+ )
+
+ # Set the tooltip
+ self.tray.set_tooltip_text(msg)
+
+ self.send_status_request()
+
+ def build_tray_bwsetsubmenu(self):
+ # Create the Download speed list sub-menu
+ submenu_bwdownset = build_menu_radio_list(
+ self.config['tray_download_speed_list'],
+ self.on_tray_setbwdown,
+ self.max_download_speed,
+ _('K/s'),
+ show_notset=True,
+ show_other=True,
+ )
+
+ # Create the Upload speed list sub-menu
+ submenu_bwupset = build_menu_radio_list(
+ self.config['tray_upload_speed_list'],
+ self.on_tray_setbwup,
+ self.max_upload_speed,
+ _('K/s'),
+ show_notset=True,
+ show_other=True,
+ )
+ # Add the sub-menus to the tray menu
+ self.builder.get_object('menuitem_download_limit').set_submenu(
+ submenu_bwdownset
+ )
+ self.builder.get_object('menuitem_upload_limit').set_submenu(submenu_bwupset)
+
+ # Show the sub-menus for all to see
+ submenu_bwdownset.show_all()
+ submenu_bwupset.show_all()
+
+ def disable(self, invert_app_ind_conf=False):
+ """Disables the system tray icon or Appindicator."""
+ try:
+ if invert_app_ind_conf:
+ app_ind_conf = not self.config['enable_appindicator']
+ else:
+ app_ind_conf = self.config['enable_appindicator']
+ if AppIndicator3 and app_ind_conf:
+ if hasattr(self, '_sig_win_hide'):
+ self.mainwindow.window.disconnect(self._sig_win_hide)
+ self.mainwindow.window.disconnect(self._sig_win_show)
+ log.debug('Disabling the application indicator..')
+
+ self.indicator.set_status(AppIndicator3.IndicatorStatus.PASSIVE)
+ del self.indicator
+ else:
+ log.debug('Disabling the system tray icon..')
+ self.tray.set_visible(False)
+ del self.tray
+ del self.builder
+ del self.tray_menu
+ except Exception as ex:
+ log.debug('Unable to disable system tray: %s', ex)
+
+ def blink(self, value):
+ try:
+ self.tray.set_blinking(value)
+ except AttributeError:
+ # If self.tray is not defined then ignore. This happens when the
+ # tray icon is not being used.
+ pass
+
+ def on_enable_system_tray_set(self, key, value):
+ """Called whenever the 'enable_system_tray' config key is modified"""
+ if value:
+ self.enable()
+ else:
+ self.disable()
+
+ def on_enable_appindicator_set(self, key, value):
+ """Called whenever the 'enable_appindicator' config key is modified"""
+ if self.__enabled_set_once:
+ self.disable(True)
+ self.enable()
+ self.__enabled_set_once = True
+
+ def on_tray_clicked(self, icon):
+ """Called when the tray icon is left clicked."""
+ self.blink(False)
+
+ if self.mainwindow.active():
+ self.mainwindow.hide()
+ else:
+ self.mainwindow.present()
+
+ def on_tray_popup(self, status_icon, button, activate_time):
+ """Called when the tray icon is right clicked."""
+ self.blink(False)
+
+ if self.mainwindow.visible():
+ self.builder.get_object('menuitem_show_deluge').set_active(True)
+ else:
+ self.builder.get_object('menuitem_show_deluge').set_active(False)
+
+ popup_function = StatusIcon.position_menu
+ if windows_check() or osx_check():
+ popup_function = None
+ button = 0
+ self.tray_menu.popup(
+ None, None, popup_function, status_icon, button, activate_time
+ )
+
+ def on_menuitem_show_deluge_activate(self, menuitem):
+ log.debug('on_menuitem_show_deluge_activate')
+ if menuitem.get_active() and not self.mainwindow.visible():
+ self.mainwindow.present()
+ elif not menuitem.get_active() and self.mainwindow.visible():
+ self.mainwindow.hide()
+
+ def on_menuitem_add_torrent_activate(self, menuitem):
+ log.debug('on_menuitem_add_torrent_activate')
+ component.get('AddTorrentDialog').show()
+
+ def on_menuitem_pause_session_activate(self, menuitem):
+ log.debug('on_menuitem_pause_session_activate')
+ client.core.pause_session()
+
+ def on_menuitem_resume_session_activate(self, menuitem):
+ log.debug('on_menuitem_resume_session_activate')
+ client.core.resume_session()
+
+ def on_menuitem_quit_activate(self, menuitem):
+ log.debug('on_menuitem_quit_activate')
+ self.mainwindow.quit()
+
+ def on_menuitem_quitdaemon_activate(self, menuitem):
+ log.debug('on_menuitem_quitdaemon_activate')
+ self.mainwindow.quit(shutdown=True)
+
+ def on_tray_setbwdown(self, widget, data=None):
+ if isinstance(widget, RadioMenuItem):
+ # ignore previous radiomenuitem value
+ if not widget.get_active():
+ return
+ self.setbwlimit(
+ widget,
+ _('Download Speed Limit'),
+ _('Set the maximum download speed'),
+ 'max_download_speed',
+ 'tray_download_speed_list',
+ self.max_download_speed,
+ 'downloading.svg',
+ )
+
+ def on_tray_setbwup(self, widget, data=None):
+ if isinstance(widget, RadioMenuItem):
+ # ignore previous radiomenuitem value
+ if not widget.get_active():
+ return
+ self.setbwlimit(
+ widget,
+ _('Upload Speed Limit'),
+ _('Set the maximum upload speed'),
+ 'max_upload_speed',
+ 'tray_upload_speed_list',
+ self.max_upload_speed,
+ 'seeding.svg',
+ )
+
+ def _on_window_hide(self, widget, data=None):
+ """_on_window_hide - update the menuitem's status"""
+ log.debug('_on_window_hide')
+ self.builder.get_object('menuitem_show_deluge').set_active(False)
+
+ def _on_window_show(self, widget, data=None):
+ """_on_window_show - update the menuitem's status"""
+ log.debug('_on_window_show')
+ self.builder.get_object('menuitem_show_deluge').set_active(True)
+
+ def setbwlimit(self, widget, header, text, core_key, ui_key, default, image):
+ """Sets the bandwidth limit based on the user selection."""
+
+ def set_value(value):
+ log.debug('setbwlimit: %s', value)
+ if value is None:
+ return
+ elif value == 0:
+ value = -1
+ # Set the config in the core
+ client.core.set_config({core_key: value})
+
+ if widget.get_name() == 'unlimited':
+ set_value(-1)
+ elif widget.get_name() == 'other':
+ dialog = OtherDialog(header, text, _('K/s'), image, default)
+ dialog.run().addCallback(set_value)
+ else:
+ set_value(widget.get_children()[0].get_text().split(' ')[0])
diff --git a/deluge/ui/gtk3/tab_data_funcs.py b/deluge/ui/gtk3/tab_data_funcs.py
new file mode 100644
index 0000000..a78994f
--- /dev/null
+++ b/deluge/ui/gtk3/tab_data_funcs.py
@@ -0,0 +1,93 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+from deluge.common import fdate, fsize, fspeed, ftime
+from deluge.ui.common import TRACKER_STATUS_TRANSLATION
+
+
+def ftotal_sized(first, second):
+ return f'{fsize(first, shortform=True)} ({fsize(second, shortform=True)})'
+
+
+def fratio(value):
+ return ('%.3f' % value).rstrip('0').rstrip('.') if value > 0 else '∞'
+
+
+def fpcnt(value, state, message):
+ state_i18n = _(state)
+ if state not in ('Error', 'Seeding') and value < 100:
+ percent = f'{value:.2f}'.rstrip('0').rstrip('.')
+ return _('{state} {percent}%').format(state=state_i18n, percent=percent)
+ elif state == 'Error':
+ return _('{state}: {err_msg}').format(state=state_i18n, err_msg=message)
+ else:
+ return state_i18n
+
+
+def fspeed_max(value, max_value=-1):
+ value = fspeed(value, shortform=True)
+ return '{} ({} {})'.format(value, max_value, _('K/s')) if max_value > -1 else value
+
+
+def fdate_or_never(value):
+ """Display value as date, eg 05/05/08 or Never"""
+ return fdate(value, date_only=True) if value > 0 else _('Never')
+
+
+def fdate_or_dash(value):
+ """Display value as date, eg 05/05/08 or dash"""
+ if value > 0.0:
+ return fdate(value)
+ else:
+ return '-'
+
+
+def ftime_or_dash(value):
+ """Display value as time, eg 2h 30m or dash"""
+ if value > 0:
+ return ftime(value)
+ elif value == 0:
+ return '-'
+ else:
+ return '∞'
+
+
+def fseed_rank_or_dash(seed_rank, seeding_time):
+ """Display value if seeding otherwise dash"""
+
+ if seeding_time > 0:
+ if seed_rank >= 1000:
+ return '%i k' % (seed_rank // 1000)
+ else:
+ return str(seed_rank)
+ else:
+ return '-'
+
+
+def fpieces_num_size(num_pieces, piece_size):
+ return f'{num_pieces} ({fsize(piece_size, precision=0)})'
+
+
+def fcount(value):
+ return '%s' % len(value)
+
+
+def ftranslate(text):
+ if text in TRACKER_STATUS_TRANSLATION:
+ text = _(text)
+ elif text:
+ for status in TRACKER_STATUS_TRANSLATION:
+ if status in text:
+ text = text.replace(status, _(status))
+ break
+ return text
+
+
+def fyes_no(value):
+ """Return Yes or No to bool value"""
+ return _('Yes') if value else _('No')
diff --git a/deluge/ui/gtk3/toolbar.py b/deluge/ui/gtk3/toolbar.py
new file mode 100644
index 0000000..1b6952e
--- /dev/null
+++ b/deluge/ui/gtk3/toolbar.py
@@ -0,0 +1,131 @@
+#
+# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from gi.repository.Gtk import SeparatorToolItem, ToolButton
+
+import deluge.component as component
+from deluge.configmanager import ConfigManager
+
+log = logging.getLogger(__name__)
+
+
+class ToolBar(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'ToolBar')
+ log.debug('ToolBar Init..')
+ mainwindow = component.get('MainWindow')
+ self.main_builder = mainwindow.get_builder()
+ self.toolbar = self.main_builder.get_object('toolbar')
+ self.config = ConfigManager('gtk3ui.conf')
+ # Connect main window Signals #
+ mainwindow.connect_signals(self)
+ self.change_sensitivity = [
+ 'toolbutton_add',
+ 'toolbutton_remove',
+ 'toolbutton_pause',
+ 'toolbutton_resume',
+ 'toolbutton_queue_up',
+ 'toolbutton_queue_down',
+ 'toolbutton_filter',
+ 'find_menuitem',
+ ]
+
+ # Hide if necessary
+ self.visible(self.config['show_toolbar'])
+
+ def start(self):
+ self.main_builder.get_object('toolbutton_connectionmanager').set_visible(
+ not self.config['standalone']
+ )
+
+ for widget in self.change_sensitivity:
+ self.main_builder.get_object(widget).set_sensitive(True)
+
+ def stop(self):
+ for widget in self.change_sensitivity:
+ self.main_builder.get_object(widget).set_sensitive(False)
+
+ def visible(self, visible):
+ if visible:
+ self.toolbar.show()
+ else:
+ self.toolbar.hide()
+
+ self.config['show_toolbar'] = visible
+
+ def add_toolbutton(
+ self, callback, label=None, image=None, stock=None, tooltip=None
+ ):
+ """Adds a toolbutton to the toolbar"""
+ toolbutton = ToolButton()
+ if stock is not None:
+ toolbutton.set_stock_id(stock)
+ if label is not None:
+ toolbutton.set_label(label)
+ if image is not None:
+ toolbutton.set_icon_widget(image)
+ if tooltip is not None:
+ toolbutton.set_tooltip_text(tooltip)
+
+ toolbutton.connect('clicked', callback)
+ self.toolbar.insert(toolbutton, -1)
+ toolbutton.show_all()
+
+ return toolbutton
+
+ def add_separator(self, position=None):
+ """Adds a separator toolitem"""
+ sep = SeparatorToolItem()
+ if position is not None:
+ self.toolbar.insert(sep, position)
+ else:
+ self.toolbar.insert(sep, -1)
+
+ sep.show()
+
+ return sep
+
+ def remove(self, widget):
+ """Removes a widget from the toolbar"""
+ self.toolbar.remove(widget)
+
+ # Callbacks (Uses the menubar's callback) #
+
+ def on_toolbutton_add_clicked(self, data):
+ log.debug('on_toolbutton_add_clicked')
+ component.get('MenuBar').on_menuitem_addtorrent_activate(data)
+
+ def on_toolbutton_remove_clicked(self, data):
+ log.debug('on_toolbutton_remove_clicked')
+ component.get('MenuBar').on_menuitem_remove_activate(data)
+
+ def on_toolbutton_pause_clicked(self, data):
+ log.debug('on_toolbutton_pause_clicked')
+ component.get('MenuBar').on_menuitem_pause_activate(data)
+
+ def on_toolbutton_resume_clicked(self, data):
+ log.debug('on_toolbutton_resume_clicked')
+ component.get('MenuBar').on_menuitem_resume_activate(data)
+
+ def on_toolbutton_preferences_clicked(self, data):
+ log.debug('on_toolbutton_preferences_clicked')
+ component.get('MenuBar').on_menuitem_preferences_activate(data)
+
+ def on_toolbutton_connectionmanager_clicked(self, data):
+ log.debug('on_toolbutton_connectionmanager_clicked')
+ component.get('MenuBar').on_menuitem_connectionmanager_activate(data)
+
+ def on_toolbutton_queue_up_clicked(self, data):
+ log.debug('on_toolbutton_queue_up_clicked')
+ component.get('MenuBar').on_menuitem_queue_up_activate(data)
+
+ def on_toolbutton_queue_down_clicked(self, data):
+ log.debug('on_toolbutton_queue_down_clicked')
+ component.get('MenuBar').on_menuitem_queue_down_activate(data)
diff --git a/deluge/ui/gtk3/torrentdetails.py b/deluge/ui/gtk3/torrentdetails.py
new file mode 100644
index 0000000..08c37a1
--- /dev/null
+++ b/deluge/ui/gtk3/torrentdetails.py
@@ -0,0 +1,487 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+"""The torrent details component shows info about the selected torrent."""
+import logging
+from collections import namedtuple
+
+from gi.repository.Gtk import (
+ CheckMenuItem,
+ Menu,
+ MenuItem,
+ PositionType,
+ RadioMenuItem,
+ SeparatorMenuItem,
+)
+
+import deluge.component as component
+from deluge.ui.client import client
+
+from .common import load_pickled_state_file, save_pickled_state_file
+
+log = logging.getLogger(__name__)
+
+TabWidget = namedtuple('TabWidget', ('obj', 'func', 'status_keys'))
+
+
+class Tab:
+ def __init__(self, name=None, child_widget=None, tab_label=None):
+ self._name = name
+ self.is_visible = True
+ self.position = -1
+ self.weight = -1
+
+ self.main_builder = component.get('MainWindow').get_builder()
+ self._child_widget = (
+ self.main_builder.get_object(child_widget) if child_widget else None
+ )
+ self._tab_label = self.main_builder.get_object(tab_label) if tab_label else None
+
+ self.tab_widgets = {}
+ self.status_keys = []
+
+ def get_name(self):
+ return self._name
+
+ def get_child_widget(self):
+ parent = self._child_widget.get_parent()
+ if parent is not None:
+ parent.remove(self._child_widget)
+
+ return self._child_widget
+
+ def get_tab_label(self):
+ parent = self._tab_label.get_parent()
+ log.debug('parent: %s', parent)
+ if parent is not None:
+ parent.remove(self._tab_label)
+
+ return self._tab_label
+
+ def widget_status_as_fstr(self, widget, status):
+ """Use TabWidget status_key and func to format status string.
+
+ Args:
+ widget (TabWidget): A tuple of widget object, func and status_keys.
+ status (dict): Torrent status dict.
+
+ Returns:
+ str: The formatted status string.
+ """
+ try:
+ if widget.func is None:
+ txt = status[widget.status_keys[0]]
+ else:
+ args = [status[key] for key in widget.status_keys]
+ txt = widget.func(*args)
+ except KeyError as ex:
+ log.warning('Unable to get status value: %s', ex)
+ txt = ''
+ return txt
+
+ def add_tab_widget(self, widget_id, format_func, status_keys):
+ """Create TabWidget item in tab_widgets dictionary.
+
+ Args:
+ widget_id (str): The widget id used to retrieve widget from mainwindow builder.
+ format_func (str): A func name related to widget e.g. string label formatter.
+ status_keys (list): List of status keys to lookup for the widget.
+
+ """
+ widget_obj = self.main_builder.get_object(widget_id)
+ self.status_keys.extend(status_keys)
+ # Store the widget in a tab_widgets dict with name as key for faster lookup.
+ self.tab_widgets[widget_id] = TabWidget(widget_obj, format_func, status_keys)
+
+
+class TorrentDetails(component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'TorrentDetails', interval=2)
+ main_builder = component.get('MainWindow').get_builder()
+ self.config = component.get('MainWindow').config
+
+ self.notebook = main_builder.get_object('torrent_info')
+ self.notebook.set_tab_pos(
+ getattr(PositionType, self.config['tabsbar_tab_pos'].upper())
+ )
+
+ # This is the menu item we'll attach the tabs checklist menu to
+ self.menu_tabs = main_builder.get_object('menu_tabs')
+
+ self.notebook.connect('switch-page', self._on_switch_page)
+
+ # Tabs holds references to the Tab objects by their name
+ self.tabs = {}
+
+ # Add the default tabs
+ from .details_tab import DetailsTab
+ from .files_tab import FilesTab
+ from .options_tab import OptionsTab
+ from .peers_tab import PeersTab
+ from .status_tab import StatusTab
+ from .trackers_tab import TrackersTab
+
+ default_tabs = {
+ 'Status': StatusTab,
+ 'Details': DetailsTab,
+ 'Files': FilesTab,
+ 'Peers': PeersTab,
+ 'Options': OptionsTab,
+ 'Trackers': TrackersTab,
+ }
+
+ # tab_name, visible
+ default_order = [
+ ('Status', True),
+ ('Details', True),
+ ('Options', True),
+ ('Files', True),
+ ('Peers', True),
+ ('Trackers', True),
+ ]
+
+ self.translate_tabs = {
+ 'All': _('_All'),
+ 'Status': _('_Status'),
+ 'Details': _('_Details'),
+ 'Files': _('Fi_les'),
+ 'Peers': _('_Peers'),
+ 'Options': _('_Options'),
+ 'Trackers': _('_Trackers'),
+ }
+
+ # Get the state from saved file
+ state = self.load_state()
+
+ if state:
+ for item in state:
+ if not isinstance(item, tuple):
+ log.debug('Old tabs.state, using default..')
+ state = None
+ break
+
+ # The state is a list of tab_names in the order they should appear
+ if state is None:
+ # Set the default order
+ state = default_order
+
+ # We need to rename the tab in the state for backwards compat
+ self.state = [
+ (tab_name.replace('Statistics', 'Status'), visible)
+ for tab_name, visible in state
+ ]
+
+ for tab in default_tabs.values():
+ self.add_tab(tab(), generate_menu=False)
+
+ # Generate the checklist menu
+ self.generate_menu()
+
+ self.visible(self.config['show_tabsbar'])
+
+ def tab_insert_position(self, weight):
+ """Returns the position a tab with a given weight should be inserted in"""
+ # Determine insert position based on weight
+ # weights is a list of visible tab names in weight order
+
+ weights = sorted(
+ (tab.weight, name) for name, tab in self.tabs.items() if tab.is_visible
+ )
+
+ log.debug('weights: %s', weights)
+ log.debug('weight of tab: %s', weight)
+
+ position = -1
+ for w, name in weights:
+ if w >= weight:
+ position = self.tabs[name].position
+ log.debug('Found pos %d', position)
+ break
+ return position
+
+ def add_tab(self, tab, generate_menu=True, visible=None):
+ name = tab.get_name()
+
+ # find position of tab in self.state, this is the tab weight
+ weight = None
+ for w, item in enumerate(self.state):
+ if item[0] == name:
+ weight = w
+ if visible is None:
+ visible = item[1]
+ break
+
+ if weight is None:
+ if visible is None:
+ visible = True
+ weight = len(self.state)
+ self.state.append((name, visible))
+
+ tab.weight = weight
+
+ if visible:
+ tab.is_visible = True
+ # add the tab at position guided by the weight
+ insert_pos = self.tab_insert_position(weight)
+ log.debug('Trying to insert tab at %d', insert_pos)
+ pos = self.notebook.insert_page(
+ tab.get_child_widget(), tab.get_tab_label(), insert_pos
+ )
+ log.debug('Tab inserted at %d', pos)
+ tab.position = pos
+ if not self.notebook.get_property('visible'):
+ # If the notebook isn't visible, show it
+ self.visible(True)
+ else:
+ tab.is_visible = False
+
+ self.tabs[name] = tab
+ if name not in self.translate_tabs:
+ self.translate_tabs[name] = _(name)
+
+ self.regenerate_positions()
+ if generate_menu:
+ self.generate_menu()
+
+ def regenerate_positions(self):
+ """Sync the positions in the tab, with the position stored in the tab object"""
+ for tab in self.tabs:
+ page_num = self.notebook.page_num(self.tabs[tab]._child_widget)
+ if page_num > -1:
+ self.tabs[tab].position = page_num
+
+ def remove_tab(self, tab_name):
+ """Removes a tab by name."""
+ self.notebook.remove_page(self.tabs[tab_name].position)
+ del self.tabs[tab_name]
+ self.regenerate_positions()
+ self.generate_menu()
+
+ # If there are no tabs visible, then do not show the notebook
+ if len(self.tabs) == 0:
+ self.visible(False)
+
+ def hide_all_tabs(self):
+ """Hides all tabs"""
+ log.debug('n_pages: %s', self.notebook.get_n_pages())
+ for n in range(self.notebook.get_n_pages() - 1, -1, -1):
+ self.notebook.remove_page(n)
+
+ for tab in self.tabs:
+ self.tabs[tab].is_visible = False
+ log.debug('n_pages: %s', self.notebook.get_n_pages())
+ self.generate_menu()
+ self.visible(False)
+
+ def show_all_tabs(self):
+ """Shows all tabs"""
+ for tab in self.tabs:
+ if not self.tabs[tab].is_visible:
+ self.show_tab(tab, generate_menu=False)
+ self.generate_menu()
+
+ def hide_tab(self, tab_name):
+ """Hides tab by name"""
+ self.tabs[tab_name].is_visible = False
+ self.notebook.remove_page(self.tabs[tab_name].position)
+ self.regenerate_positions()
+ self.generate_menu()
+
+ show = False
+ for name, tab in self.tabs.items():
+ show = show or tab.is_visible
+
+ self.visible(show)
+
+ def show_tab(self, tab_name, generate_menu=True):
+ log.debug(
+ '%s\n%s\n%s',
+ self.tabs[tab_name].get_child_widget(),
+ self.tabs[tab_name].get_tab_label(),
+ self.tabs[tab_name].position,
+ )
+
+ position = self.tab_insert_position(self.tabs[tab_name].weight)
+
+ log.debug('position: %s', position)
+ self.notebook.insert_page(
+ self.tabs[tab_name].get_child_widget(),
+ self.tabs[tab_name].get_tab_label(),
+ position,
+ )
+ self.tabs[tab_name].is_visible = True
+ self.regenerate_positions()
+ if generate_menu:
+ self.generate_menu()
+ self.visible(True)
+
+ def create_tab_pos_menuitem(self):
+ """Returns a menu to select which side of the notebook the tabs should be shown"""
+ tab_pos_menu = Menu()
+ tab_pos_menuitem = MenuItem.new_with_label(_('Position'))
+ group = []
+ for pos in ('top', 'right', 'bottom', 'left'):
+ menuitem = RadioMenuItem.new_with_mnemonic(group, _(pos.capitalize()))
+ group = menuitem.get_group()
+ menuitem.connect('toggled', self._on_tabs_pos_toggled, pos)
+ menuitem.set_active(pos == self.notebook.get_tab_pos().value_nick)
+ tab_pos_menu.append(menuitem)
+ tab_pos_menuitem.set_submenu(tab_pos_menu)
+ return tab_pos_menuitem
+
+ def generate_menu(self):
+ """Generates the checklist menu for all the tabs and attaches it"""
+ menu = Menu()
+
+ # Create 'All' menuitem and a separator
+ menuitem = CheckMenuItem.new_with_mnemonic(self.translate_tabs['All'])
+ menuitem.set_name('All')
+
+ all_tabs = True
+ for key in self.tabs:
+ if not self.tabs[key].is_visible:
+ all_tabs = False
+ break
+ menuitem.set_active(all_tabs)
+ menuitem.connect('toggled', self._on_menuitem_toggled)
+
+ menu.append(menuitem)
+
+ menuitem = SeparatorMenuItem()
+ menu.append(menuitem)
+
+ # Create a list in order of tabs to create menu
+ menuitem_list = []
+ for tab_name in self.tabs:
+ menuitem_list.append((self.tabs[tab_name].weight, tab_name))
+ menuitem_list.sort()
+
+ for pos, name in menuitem_list:
+ menuitem = CheckMenuItem.new_with_mnemonic(self.translate_tabs[name])
+ menuitem.set_name(name)
+ menuitem.set_active(self.tabs[name].is_visible)
+ menuitem.connect('toggled', self._on_menuitem_toggled)
+ menu.append(menuitem)
+
+ menu.append(SeparatorMenuItem())
+ menu.append(self.create_tab_pos_menuitem())
+
+ self.menu_tabs.set_submenu(menu)
+ self.menu_tabs.show_all()
+
+ def visible(self, visible):
+ self.notebook.show() if visible else self.notebook.hide()
+ self.config['show_tabsbar'] = visible
+
+ def set_tab_visible(self, tab_name, visible):
+ """Sets the tab to visible"""
+ log.debug('set_tab_visible name: %s visible: %s', tab_name, visible)
+ if visible and not self.tabs[tab_name].is_visible:
+ self.show_tab(tab_name)
+ elif not visible and self.tabs[tab_name].is_visible:
+ self.hide_tab(tab_name)
+
+ def start(self):
+ for tab in self.tabs.values():
+ try:
+ tab.start()
+ except AttributeError:
+ pass
+
+ def stop(self):
+ self.clear()
+ for tab in self.tabs.values():
+ try:
+ tab.stop()
+ except AttributeError:
+ pass
+
+ def shutdown(self):
+ # Save the state of the tabs
+ for tab in self.tabs:
+ try:
+ self.tabs[tab].save_state()
+ except AttributeError:
+ pass
+
+ # Save tabs state
+ self.save_state()
+
+ def update(self, page_num=None):
+ if len(component.get('TorrentView').get_selected_torrents()) == 0:
+ # No torrents selected, so just clear
+ self.clear()
+
+ if self.notebook.get_property('visible'):
+ if page_num is None:
+ page_num = self.notebook.get_current_page()
+ try:
+ # Get the tab name
+ name = None
+ for tab in self.tabs:
+ if (
+ self.tabs[tab].position == page_num
+ and self.tabs[tab].is_visible
+ ):
+ name = tab
+ except IndexError:
+ return
+ # Update the tab that is in view
+ if name:
+ self.tabs[name].update()
+
+ def clear(self):
+ # Get the tab name
+ try:
+ page_num = self.notebook.get_current_page()
+ name = None
+ for tab in self.tabs:
+ if self.tabs[tab].position == page_num and self.tabs[tab].is_visible:
+ name = tab
+ if name:
+ self.tabs[name].clear()
+ except Exception as ex:
+ log.debug('Unable to clear torrentdetails: %s', ex)
+
+ def _on_switch_page(self, notebook, page, page_num):
+ self.update(page_num)
+ client.force_call(False)
+
+ def _on_menuitem_toggled(self, widget):
+ # Get the tab name
+ name = widget.get_name()
+ if name == 'All':
+ if widget.get_active():
+ self.show_all_tabs()
+ else:
+ self.hide_all_tabs()
+ return
+
+ self.set_tab_visible(name, widget.get_active())
+
+ def _on_tabs_pos_toggled(self, widget, position):
+ self.config['tabsbar_tab_pos'] = position
+ self.notebook.set_tab_pos(getattr(PositionType, position.upper()))
+
+ def save_state(self):
+ """We save the state, which is basically the tab_index list"""
+ # Update the visiblity status of all tabs
+ # Leave tabs we dont know anything about it the state as they
+ # might come from a plugin
+ for i, (name, visible) in enumerate(self.state):
+ log.debug('Testing name: %s', name)
+ if name in self.tabs:
+ self.state[i] = (name, self.tabs[name].is_visible)
+ log.debug('Set to %s', self.state[i])
+ state = self.state
+
+ save_pickled_state_file('tabs.state', state)
+
+ def load_state(self):
+ return load_pickled_state_file('tabs.state')
diff --git a/deluge/ui/gtk3/torrentview.py b/deluge/ui/gtk3/torrentview.py
new file mode 100644
index 0000000..16de16e
--- /dev/null
+++ b/deluge/ui/gtk3/torrentview.py
@@ -0,0 +1,938 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""The torrent view component that lists all torrents in the session."""
+import logging
+from locale import strcoll
+
+from gi.repository.Gdk import ModifierType, keyval_name
+from gi.repository.GLib import idle_add
+from gi.repository.GObject import TYPE_UINT64
+from gi.repository.Gtk import EntryIconPosition
+from twisted.internet import reactor
+
+import deluge.component as component
+from deluge.common import decode_bytes
+from deluge.ui.client import client
+
+from . import torrentview_data_funcs as funcs
+from .common import cmp
+from .listview import ListView
+from .removetorrentdialog import RemoveTorrentDialog
+
+log = logging.getLogger(__name__)
+
+try:
+ CTRL_ALT_MASK = ModifierType.CONTROL_MASK | ModifierType.MOD1_MASK
+except TypeError:
+ # Sphinx AutoDoc has a mock issue with Gdk masks.
+ pass
+
+
+def str_nocase_sort(model, iter1, iter2, data):
+ """Sort string column data using ISO 14651 in lowercase.
+
+ Uses locale.strcoll which (allegedly) uses ISO 14651. Compares first
+ value with second and returns -1, 0, 1 for where it should be placed.
+
+ """
+ v1 = model[iter1][data]
+ v2 = model[iter2][data]
+ # Catch any values of None from model.
+ v1 = v1.lower() if v1 else ''
+ v2 = v2.lower() if v2 else ''
+ return strcoll(v1, v2)
+
+
+def queue_peer_seed_sort_function(v1, v2):
+ if v1 == v2:
+ return 0
+ if v2 < 0:
+ return -1
+ if v1 < 0:
+ return 1
+ if v1 > v2:
+ return 1
+ if v2 > v1:
+ return -1
+
+
+def queue_column_sort(model, iter1, iter2, data):
+ v1 = model[iter1][data]
+ v2 = model[iter2][data]
+ return queue_peer_seed_sort_function(v1, v2)
+
+
+def eta_column_sort(model, iter1, iter2, data):
+ v1 = model[iter1][data]
+ v2 = model[iter2][data]
+ if v1 == v2:
+ return 0
+ if v1 == 0:
+ return -1
+ if v2 == 0:
+ return 1
+ if v1 > v2:
+ return -1
+ if v2 > v1:
+ return 1
+
+
+def seed_peer_column_sort(model, iter1, iter2, data):
+ v1 = model[iter1][data] # num seeds/peers
+ v3 = model[iter2][data] # num seeds/peers
+ if v1 == v3:
+ v2 = model[iter1][data + 1] # total seeds/peers
+ v4 = model[iter2][data + 1] # total seeds/peers
+ return queue_peer_seed_sort_function(v2, v4)
+ return queue_peer_seed_sort_function(v1, v3)
+
+
+def progress_sort(model, iter1, iter2, sort_column_id):
+ progress1 = model[iter1][sort_column_id]
+ progress2 = model[iter2][sort_column_id]
+ # Progress value is equal, so sort on state
+ if progress1 == progress2:
+ state1 = model[iter1][sort_column_id + 1]
+ state2 = model[iter2][sort_column_id + 1]
+ return cmp(state1, state2)
+ return cmp(progress1, progress2)
+
+
+class SearchBox:
+ def __init__(self, torrentview):
+ self.torrentview = torrentview
+ mainwindow = component.get('MainWindow')
+ main_builder = mainwindow.get_builder()
+
+ self.visible = False
+ self.search_pending = self.prefiltered = None
+
+ self.search_box = main_builder.get_object('search_box')
+ self.search_torrents_entry = main_builder.get_object('search_torrents_entry')
+ self.close_search_button = main_builder.get_object('close_search_button')
+ self.match_search_button = main_builder.get_object('search_torrents_match')
+ mainwindow.connect_signals(self)
+
+ def show(self):
+ self.visible = True
+ self.search_box.show_all()
+ self.search_torrents_entry.grab_focus()
+
+ def hide(self):
+ self.visible = False
+ self.clear_search()
+ self.search_box.hide()
+ self.search_pending = self.prefiltered = None
+
+ def clear_search(self):
+ if self.search_pending and self.search_pending.active():
+ self.search_pending.cancel()
+
+ if self.prefiltered:
+ filter_column = self.torrentview.columns['filter'].column_indices[0]
+ torrent_id_column = self.torrentview.columns['torrent_id'].column_indices[0]
+ for row in self.torrentview.liststore:
+ torrent_id = row[torrent_id_column]
+
+ if torrent_id in self.prefiltered:
+ # Reset to previous filter state
+ self.prefiltered.pop(self.prefiltered.index(torrent_id))
+ row[filter_column] = not row[filter_column]
+
+ self.prefiltered = None
+
+ self.search_torrents_entry.set_text('')
+ if self.torrentview.filter and 'name' in self.torrentview.filter:
+ self.torrentview.filter.pop('name', None)
+ self.search_pending = reactor.callLater(0.5, self.torrentview.update)
+
+ def set_search_filter(self):
+ if self.search_pending and self.search_pending.active():
+ self.search_pending.cancel()
+
+ if self.torrentview.filter and 'name' in self.torrentview.filter:
+ self.torrentview.filter.pop('name', None)
+
+ elif self.torrentview.filter is None:
+ self.torrentview.filter = {}
+
+ search_string = self.search_torrents_entry.get_text()
+ if not search_string:
+ self.clear_search()
+ else:
+ if self.match_search_button.get_active():
+ search_string += '::match'
+ self.torrentview.filter['name'] = search_string
+ self.prefilter_torrentview()
+
+ def prefilter_torrentview(self):
+ filter_column = self.torrentview.columns['filter'].column_indices[0]
+ torrent_id_column = self.torrentview.columns['torrent_id'].column_indices[0]
+ torrent_name_column = self.torrentview.columns[_('Name')].column_indices[1]
+
+ match_case = self.match_search_button.get_active()
+ if match_case:
+ search_string = self.search_torrents_entry.get_text()
+ else:
+ search_string = self.search_torrents_entry.get_text().lower()
+
+ if self.prefiltered is None:
+ self.prefiltered = []
+
+ for row in self.torrentview.liststore:
+ torrent_id = row[torrent_id_column]
+
+ if torrent_id in self.prefiltered:
+ # Reset to previous filter state
+ self.prefiltered.pop(self.prefiltered.index(torrent_id))
+ row[filter_column] = not row[filter_column]
+
+ if not row[filter_column]:
+ # Row is not visible(filtered out, but not by our filter), skip it
+ continue
+
+ if match_case:
+ torrent_name = row[torrent_name_column]
+ else:
+ torrent_name = row[torrent_name_column].lower()
+
+ if search_string in torrent_name and not row[filter_column]:
+ row[filter_column] = True
+ self.prefiltered.append(torrent_id)
+ elif search_string not in torrent_name and row[filter_column]:
+ row[filter_column] = False
+ self.prefiltered.append(torrent_id)
+
+ def on_close_search_button_clicked(self, widget):
+ self.hide()
+
+ def on_search_filter_toggle(self, widget):
+ if self.visible:
+ self.hide()
+ else:
+ self.show()
+
+ def on_search_torrents_match_toggled(self, widget):
+ if self.search_torrents_entry.get_text():
+ self.set_search_filter()
+ self.search_pending = reactor.callLater(0.7, self.torrentview.update)
+
+ def on_search_torrents_entry_icon_press(self, entry, icon, event):
+ if icon != EntryIconPosition.SECONDARY:
+ return
+ self.clear_search()
+
+ def on_search_torrents_entry_changed(self, widget):
+ self.set_search_filter()
+ self.search_pending = reactor.callLater(0.7, self.torrentview.update)
+
+
+class TorrentView(ListView, component.Component):
+ """TorrentView handles the listing of torrents."""
+
+ def __init__(self):
+ component.Component.__init__(
+ self, 'TorrentView', interval=2, depend=['SessionProxy']
+ )
+ main_builder = component.get('MainWindow').get_builder()
+ # Call the ListView constructor
+ ListView.__init__(
+ self, main_builder.get_object('torrent_view'), 'torrentview.state'
+ )
+ log.debug('TorrentView Init..')
+
+ # If we have gotten the state yet
+ self.got_state = False
+
+ # This is where status updates are put
+ self.status = {}
+
+ # We keep a copy of the previous status to compare for changes
+ self.prev_status = {}
+
+ # Register the columns menu with the listview so it gets updated accordingly.
+ self.register_checklist_menu(main_builder.get_object('menu_columns'))
+
+ # Add the columns to the listview
+ self.add_text_column('torrent_id', hidden=True, unique=True)
+ self.add_bool_column('dirty', hidden=True)
+ self.add_func_column(
+ '#',
+ funcs.cell_data_queue,
+ [int],
+ status_field=['queue'],
+ sort_func=queue_column_sort,
+ )
+ self.add_texticon_column(
+ _('Name'),
+ status_field=['state', 'name'],
+ function=funcs.cell_data_statusicon,
+ sort_func=str_nocase_sort,
+ default_sort=True,
+ )
+ self.add_func_column(
+ _('Size'),
+ funcs.cell_data_size,
+ [TYPE_UINT64],
+ status_field=['total_wanted'],
+ )
+ self.add_func_column(
+ _('Downloaded'),
+ funcs.cell_data_size,
+ [TYPE_UINT64],
+ status_field=['all_time_download'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Uploaded'),
+ funcs.cell_data_size,
+ [TYPE_UINT64],
+ status_field=['total_uploaded'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Remaining'),
+ funcs.cell_data_size,
+ [TYPE_UINT64],
+ status_field=['total_remaining'],
+ default=False,
+ )
+ self.add_progress_column(
+ _('Progress'),
+ status_field=['progress', 'state'],
+ col_types=[float, str],
+ function=funcs.cell_data_progress,
+ sort_func=progress_sort,
+ )
+ self.add_func_column(
+ _('Seeds'),
+ funcs.cell_data_peer,
+ [int, int],
+ status_field=['num_seeds', 'total_seeds'],
+ sort_func=seed_peer_column_sort,
+ default=False,
+ )
+ self.add_func_column(
+ _('Peers'),
+ funcs.cell_data_peer,
+ [int, int],
+ status_field=['num_peers', 'total_peers'],
+ sort_func=seed_peer_column_sort,
+ default=False,
+ )
+ self.add_func_column(
+ _('Seeds:Peers'),
+ funcs.cell_data_ratio_seeds_peers,
+ [float],
+ status_field=['seeds_peers_ratio'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Down Speed'),
+ funcs.cell_data_speed_down,
+ [int],
+ status_field=['download_payload_rate'],
+ )
+ self.add_func_column(
+ _('Up Speed'),
+ funcs.cell_data_speed_up,
+ [int],
+ status_field=['upload_payload_rate'],
+ )
+ self.add_func_column(
+ _('Down Limit'),
+ funcs.cell_data_speed_limit_down,
+ [float],
+ status_field=['max_download_speed'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Up Limit'),
+ funcs.cell_data_speed_limit_up,
+ [float],
+ status_field=['max_upload_speed'],
+ default=False,
+ )
+ self.add_func_column(
+ _('ETA'),
+ funcs.cell_data_time,
+ [int],
+ status_field=['eta'],
+ sort_func=eta_column_sort,
+ )
+ self.add_func_column(
+ _('Ratio'),
+ funcs.cell_data_ratio_ratio,
+ [float],
+ status_field=['ratio'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Avail'),
+ funcs.cell_data_ratio_avail,
+ [float],
+ status_field=['distributed_copies'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Added'),
+ funcs.cell_data_date_added,
+ [int],
+ status_field=['time_added'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Completed'),
+ funcs.cell_data_date_completed,
+ [int],
+ status_field=['completed_time'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Complete Seen'),
+ funcs.cell_data_date_or_never,
+ [int],
+ status_field=['last_seen_complete'],
+ default=False,
+ )
+ self.add_func_column(
+ _('Last Transfer'),
+ funcs.cell_data_time,
+ [int],
+ status_field=['time_since_transfer'],
+ default=False,
+ )
+ self.add_texticon_column(
+ _('Tracker'),
+ function=funcs.cell_data_trackericon,
+ status_field=['tracker_host', 'tracker_host'],
+ default=False,
+ )
+ self.add_text_column(
+ _('Download Folder'), status_field=['download_location'], default=False
+ )
+ self.add_text_column(_('Owner'), status_field=['owner'], default=False)
+ self.add_bool_column(
+ _('Shared'),
+ status_field=['shared'],
+ default=False,
+ tooltip=_('Torrent is shared between other Deluge users or not.'),
+ )
+ self.restore_columns_order_from_state()
+
+ # Set filter to None for now
+ self.filter = None
+
+ # Connect Signals #
+ # Connect to the 'button-press-event' to know when to bring up the
+ # torrent menu popup.
+ self.treeview.connect('button-press-event', self.on_button_press_event)
+ # Connect to the 'key-press-event' to know when the bring up the
+ # torrent menu popup via keypress.
+ self.treeview.connect('key-release-event', self.on_key_press_event)
+ # Connect to the 'changed' event of TreeViewSelection to get selection
+ # changes.
+ self.treeview.get_selection().connect('changed', self.on_selection_changed)
+
+ self.treeview.connect('drag-drop', self.on_drag_drop)
+ self.treeview.connect('drag_data_received', self.on_drag_data_received)
+ self.treeview.connect('key-press-event', self.on_key_press_event)
+ self.treeview.connect('columns-changed', self.on_columns_changed_event)
+
+ self.search_box = SearchBox(self)
+ self.permanent_status_keys = ['owner']
+ self.columns_to_update = []
+
+ def start(self):
+ """Start the torrentview"""
+ # We need to get the core session state to know which torrents are in
+ # the session so we can add them to our list.
+ # Only get the status fields required for the visible columns
+ status_fields = []
+ for listview_column in self.columns.values():
+ if listview_column.column.get_visible():
+ if not listview_column.status_field:
+ continue
+ status_fields.extend(listview_column.status_field)
+ component.get('SessionProxy').get_torrents_status(
+ {}, status_fields
+ ).addCallback(self._on_session_state)
+
+ client.register_event_handler(
+ 'TorrentStateChangedEvent', self.on_torrentstatechanged_event
+ )
+ client.register_event_handler('TorrentAddedEvent', self.on_torrentadded_event)
+ client.register_event_handler(
+ 'TorrentRemovedEvent', self.on_torrentremoved_event
+ )
+ client.register_event_handler('SessionPausedEvent', self.on_sessionpaused_event)
+ client.register_event_handler(
+ 'SessionResumedEvent', self.on_sessionresumed_event
+ )
+ client.register_event_handler(
+ 'TorrentQueueChangedEvent', self.on_torrentqueuechanged_event
+ )
+
+ def _on_session_state(self, state):
+ self.add_rows(state)
+ self.got_state = True
+ # Update the view right away with our status
+ self.status = state
+ self.set_columns_to_update()
+ self.update_view(load_new_list=True)
+ self.select_first_row()
+
+ def stop(self):
+ """Stops the torrentview"""
+ client.deregister_event_handler(
+ 'TorrentStateChangedEvent', self.on_torrentstatechanged_event
+ )
+ client.deregister_event_handler('TorrentAddedEvent', self.on_torrentadded_event)
+ client.deregister_event_handler(
+ 'TorrentRemovedEvent', self.on_torrentremoved_event
+ )
+ client.deregister_event_handler(
+ 'SessionPausedEvent', self.on_sessionpaused_event
+ )
+ client.deregister_event_handler(
+ 'SessionResumedEvent', self.on_sessionresumed_event
+ )
+ client.deregister_event_handler(
+ 'TorrentQueueChangedEvent', self.on_torrentqueuechanged_event
+ )
+
+ if self.treeview.get_selection():
+ self.treeview.get_selection().unselect_all()
+
+ # Save column state before clearing liststore
+ # so column sort details are correctly saved.
+ self.save_state()
+ self.liststore.clear()
+ self.prev_status = {}
+ self.filter = None
+ self.search_box.hide()
+
+ def shutdown(self):
+ """Called when GtkUi is exiting"""
+ pass
+
+ def save_state(self):
+ """
+ Saves the state of the torrent view.
+ """
+ if component.get('MainWindow').visible():
+ ListView.save_state(self, 'torrentview.state')
+
+ def remove_column(self, header):
+ """Removes the column with the name 'header' from the torrentview"""
+ self.save_state()
+ ListView.remove_column(self, header)
+
+ def set_filter(self, filter_dict):
+ """
+ Sets filters for the torrentview..
+
+ see: core.get_torrents_status
+ """
+ search_filter = self.filter and self.filter.get('name', None) or None
+ self.filter = dict(filter_dict) # Copied version of filter_dict.
+ if search_filter and 'name' not in filter_dict:
+ self.filter['name'] = search_filter
+ self.update(select_row=True)
+
+ def set_columns_to_update(self, columns=None):
+ status_keys = []
+ self.columns_to_update = []
+
+ if columns is None:
+ # We need to iterate through all columns
+ columns = list(self.columns)
+
+ # Iterate through supplied list of columns to update
+ for column in columns:
+ # Make sure column is visible and has 'status_field' set.
+ # If not, we can ignore it.
+ if (
+ self.columns[column].column.get_visible() is True
+ and self.columns[column].hidden is False
+ and self.columns[column].status_field is not None
+ ):
+ for field in self.columns[column].status_field:
+ status_keys.append(field)
+ self.columns_to_update.append(column)
+
+ # Remove duplicates
+ self.columns_to_update = list(set(self.columns_to_update))
+ status_keys = list(set(status_keys + self.permanent_status_keys))
+ return status_keys
+
+ def send_status_request(self, columns=None, select_row=False):
+ # Store the 'status_fields' we need to send to core
+ status_keys = self.set_columns_to_update(columns)
+
+ # If there is nothing in status_keys then we must not continue
+ if status_keys is []:
+ return
+
+ # Remove duplicates from status_key list
+ status_keys = list(set(status_keys))
+
+ # Request the statuses for all these torrent_ids, this is async so we
+ # will deal with the return in a signal callback.
+ d = (
+ component.get('SessionProxy')
+ .get_torrents_status(self.filter, status_keys)
+ .addCallback(self._on_get_torrents_status)
+ )
+ if select_row:
+ d.addCallback(self.select_first_row)
+
+ def select_first_row(self, ignored=None):
+ """
+ Set the first row in the list selected if a selection does
+ not already exist
+ """
+ rows = self.treeview.get_selection().get_selected_rows()[1]
+ # Only select row if noe rows are selected
+ if not rows:
+ self.treeview.get_selection().select_path((0,))
+
+ def update(self, select_row=False):
+ """
+ Sends a status request to core and updates the torrent list with the result.
+
+ :param select_row: if the first row in the list should be selected if
+ no rows are already selected.
+ :type select_row: boolean
+
+ """
+ if self.got_state:
+ if (
+ self.search_box.search_pending is not None
+ and self.search_box.search_pending.active()
+ ):
+ # An update request is scheduled, let's wait for that one
+ return
+ # Send a status request
+ idle_add(self.send_status_request, None, select_row)
+
+ def update_view(self, load_new_list=False):
+ """Update the torrent view model with data we've received."""
+ filter_column = self.columns['filter'].column_indices[0]
+ status = self.status
+
+ if not load_new_list:
+ # Freeze notications while updating
+ self.treeview.freeze_child_notify()
+
+ # Get the columns to update from one of the torrents
+ if status:
+ torrent_id = list(status)[0]
+ fields_to_update = []
+ for column in self.columns_to_update:
+ column_index = self.get_column_index(column)
+ for i, status_field in enumerate(self.columns[column].status_field):
+ # Only use columns that the torrent has in the state
+ if status_field in status[torrent_id]:
+ fields_to_update.append((column_index[i], status_field))
+
+ for row in self.liststore:
+ torrent_id = row[self.columns['torrent_id'].column_indices[0]]
+ # We expect the torrent_id to be in status and prev_status,
+ # as it will be as long as the list isn't changed by the user
+
+ torrent_id_in_status = False
+ try:
+ torrent_status = status[torrent_id]
+ torrent_id_in_status = True
+ if torrent_status == self.prev_status[torrent_id]:
+ # The status dict is the same, so do nothing to update for this torrent
+ continue
+ except KeyError:
+ pass
+
+ if not torrent_id_in_status:
+ if row[filter_column] is True:
+ row[filter_column] = False
+ else:
+ if row[filter_column] is False:
+ row[filter_column] = True
+
+ # Find the fields to update
+ to_update = []
+ for i, status_field in fields_to_update:
+ row_value = status[torrent_id][status_field]
+ if decode_bytes(row[i]) != row_value:
+ to_update.append(i)
+ to_update.append(row_value)
+ # Update fields in the liststore
+ if to_update:
+ self.liststore.set(row.iter, *to_update)
+
+ if load_new_list:
+ # Create the model filter. This sets the model for the treeview and enables sorting.
+ self.create_model_filter()
+ else:
+ self.treeview.thaw_child_notify()
+
+ component.get('MenuBar').update_menu()
+ self.prev_status = status
+
+ def _on_get_torrents_status(self, status, select_row=False):
+ """Callback function for get_torrents_status(). 'status' should be a
+ dictionary of {torrent_id: {key, value}}."""
+ self.status = status
+ if self.search_box.prefiltered is not None:
+ self.search_box.prefiltered = None
+
+ if self.status == self.prev_status and self.prev_status:
+ # We do not bother updating since the status hasn't changed
+ self.prev_status = self.status
+ return
+ self.update_view()
+
+ def add_rows(self, torrent_ids):
+ """Accepts a list of torrent_ids to add to self.liststore"""
+ torrent_id_column = self.columns['torrent_id'].column_indices[0]
+ dirty_column = self.columns['dirty'].column_indices[0]
+ filter_column = self.columns['filter'].column_indices[0]
+ for torrent_id in torrent_ids:
+ # Insert a new row to the liststore
+ row = self.liststore.append()
+ self.liststore.set(
+ row,
+ torrent_id_column,
+ torrent_id,
+ dirty_column,
+ True,
+ filter_column,
+ True,
+ )
+
+ def remove_row(self, torrent_id):
+ """Removes a row with torrent_id"""
+ for row in self.liststore:
+ if row[self.columns['torrent_id'].column_indices[0]] == torrent_id:
+ self.liststore.remove(row.iter)
+ # Force an update of the torrentview
+ self.update(select_row=True)
+ break
+
+ def mark_dirty(self, torrent_id=None):
+ for row in self.liststore:
+ if (
+ not torrent_id
+ or row[self.columns['torrent_id'].column_indices[0]] == torrent_id
+ ):
+ # log.debug('marking %s dirty', torrent_id)
+ row[self.columns['dirty'].column_indices[0]] = True
+ if torrent_id:
+ break
+
+ def get_selected_torrent(self):
+ """Returns a torrent_id or None. If multiple torrents are selected,
+ it will return the torrent_id of the first one."""
+ selected = self.get_selected_torrents()
+ if selected:
+ return selected[0]
+ else:
+ return selected
+
+ def get_selected_torrents(self):
+ """Returns a list of selected torrents or None"""
+ torrent_ids = []
+ try:
+ paths = self.treeview.get_selection().get_selected_rows()[1]
+ except AttributeError:
+ # paths is likely None .. so lets return []
+ return []
+ try:
+ for path in paths:
+ try:
+ row = self.treeview.get_model().get_iter(path)
+ except Exception as ex:
+ log.debug('Unable to get iter from path: %s', ex)
+ continue
+
+ child_row = self.treeview.get_model().convert_iter_to_child_iter(row)
+ child_row = (
+ self.treeview.get_model()
+ .get_model()
+ .convert_iter_to_child_iter(child_row)
+ )
+ if self.liststore.iter_is_valid(child_row):
+ try:
+ value = self.liststore.get_value(
+ child_row, self.columns['torrent_id'].column_indices[0]
+ )
+ except Exception as ex:
+ log.debug('Unable to get value from row: %s', ex)
+ else:
+ torrent_ids.append(value)
+ if len(torrent_ids) == 0:
+ return []
+
+ return torrent_ids
+ except (ValueError, TypeError):
+ return []
+
+ def get_torrent_status(self, torrent_id):
+ """Returns data stored in self.status, it may not be complete"""
+ try:
+ return self.status[torrent_id]
+ except KeyError:
+ return {}
+
+ def get_visible_torrents(self):
+ return list(self.status)
+
+ # Callbacks #
+ def on_button_press_event(self, widget, event):
+ """This is a callback for showing the right-click context menu."""
+ log.debug('on_button_press_event')
+ # We only care about right-clicks
+ if event.button == 3 and event.window == self.treeview.get_bin_window():
+ x, y = event.get_coords()
+ path = self.treeview.get_path_at_pos(int(x), int(y))
+ if not path:
+ return
+ row = self.model_filter.get_iter(path[0])
+
+ if self.get_selected_torrents():
+ if (
+ self.model_filter.get_value(
+ row, self.columns['torrent_id'].column_indices[0]
+ )
+ not in self.get_selected_torrents()
+ ):
+ self.treeview.get_selection().unselect_all()
+ self.treeview.get_selection().select_iter(row)
+ else:
+ self.treeview.get_selection().select_iter(row)
+ torrentmenu = component.get('MenuBar').torrentmenu
+ torrentmenu.popup(None, None, None, None, event.button, event.time)
+ return True
+
+ def on_selection_changed(self, treeselection):
+ """This callback is know when the selection has changed."""
+ log.debug('on_selection_changed')
+ component.get('TorrentDetails').update()
+ component.get('MenuBar').update_menu()
+
+ def on_drag_drop(self, widget, drag_context, x, y, timestamp):
+ widget.stop_emission('drag-drop')
+
+ def on_drag_data_received(
+ self, widget, drag_context, x, y, selection_data, info, timestamp
+ ):
+ widget.stop_emission('drag_data_received')
+
+ def on_columns_changed_event(self, treeview):
+ log.debug('Treeview Columns Changed')
+ self.save_state()
+
+ def on_torrentadded_event(self, torrent_id, from_state):
+ self.add_rows([torrent_id])
+ self.update(select_row=True)
+
+ def on_torrentremoved_event(self, torrent_id):
+ self.remove_row(torrent_id)
+
+ def on_torrentstatechanged_event(self, torrent_id, state):
+ # Update the torrents state
+ for row in self.liststore:
+ if torrent_id != row[self.columns['torrent_id'].column_indices[0]]:
+ continue
+
+ for name in self.columns_to_update:
+ if not self.columns[name].status_field:
+ continue
+ for idx, status_field in enumerate(self.columns[name].status_field):
+ # Update all columns that use the state field to current state
+ if status_field != 'state':
+ continue
+ row[self.get_column_index(name)[idx]] = state
+
+ if self.filter.get('state', None) is not None:
+ # We have a filter set, let's see if theres anything to hide
+ # and remove from status
+ if (
+ torrent_id in self.status
+ and self.status[torrent_id]['state'] != state
+ ):
+ row[self.columns['filter'].column_indices[0]] = False
+ del self.status[torrent_id]
+
+ self.mark_dirty(torrent_id)
+
+ def on_sessionpaused_event(self):
+ self.mark_dirty()
+ self.update()
+
+ def on_sessionresumed_event(self):
+ self.mark_dirty()
+ self.update(select_row=True)
+
+ def on_torrentqueuechanged_event(self):
+ self.mark_dirty()
+ self.update()
+
+ # Handle keyboard shortcuts
+ def on_key_press_event(self, widget, event):
+ keyname = keyval_name(event.keyval)
+ if keyname is not None:
+ func = getattr(self, 'keypress_' + keyname.lower(), None)
+ if func:
+ return func(event)
+
+ def keypress_up(self, event):
+ """Handle any Up arrow keypresses"""
+ log.debug('keypress_up')
+ torrents = self.get_selected_torrents()
+ if not torrents:
+ return
+
+ # Move queue position up with Ctrl+Alt or Ctrl+Alt+Shift
+ if event.get_state() & CTRL_ALT_MASK:
+ if event.get_state() & ModifierType.SHIFT_MASK:
+ client.core.queue_top(torrents)
+ else:
+ client.core.queue_up(torrents)
+
+ def keypress_down(self, event):
+ """Handle any Down arrow keypresses"""
+ log.debug('keypress_down')
+ torrents = self.get_selected_torrents()
+ if not torrents:
+ return
+
+ # Move queue position down with Ctrl+Alt or Ctrl+Alt+Shift
+ if event.get_state() & CTRL_ALT_MASK:
+ if event.get_state() & ModifierType.SHIFT_MASK:
+ client.core.queue_bottom(torrents)
+ else:
+ client.core.queue_down(torrents)
+
+ def keypress_delete(self, event):
+ log.debug('keypress_delete')
+ torrents = self.get_selected_torrents()
+ if torrents:
+ if event.get_state() & ModifierType.SHIFT_MASK:
+ RemoveTorrentDialog(torrents, delete_files=True).run()
+ else:
+ RemoveTorrentDialog(torrents).run()
+
+ def keypress_menu(self, event):
+ log.debug('keypress_menu')
+ if not self.get_selected_torrent():
+ return
+
+ torrentmenu = component.get('MenuBar').torrentmenu
+ torrentmenu.popup(None, None, None, None, 3, event.time)
+ return True
diff --git a/deluge/ui/gtk3/torrentview_data_funcs.py b/deluge/ui/gtk3/torrentview_data_funcs.py
new file mode 100644
index 0000000..0b2545d
--- /dev/null
+++ b/deluge/ui/gtk3/torrentview_data_funcs.py
@@ -0,0 +1,277 @@
+#
+# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import warnings
+from functools import partial
+
+import deluge.common as common
+import deluge.component as component
+
+from .common import (
+ create_blank_pixbuf,
+ get_pixbuf,
+ icon_alert,
+ icon_checking,
+ icon_downloading,
+ icon_inactive,
+ icon_queued,
+ icon_seeding,
+)
+
+# Holds the info for which status icon to display based on TORRENT_STATE
+ICON_STATE = {
+ 'Allocating': icon_checking,
+ 'Checking': icon_checking,
+ 'Downloading': icon_downloading,
+ 'Seeding': icon_seeding,
+ 'Paused': icon_inactive,
+ 'Error': icon_alert,
+ 'Queued': icon_queued,
+ 'Moving': icon_checking,
+}
+
+# Cache the key used to calculate the current value set for the specific cell
+# renderer. This is much cheaper than fetch the current value and test if
+# it's equal.
+func_last_value = {
+ 'cell_data_ratio_seeds_peers': None,
+ 'cell_data_ratio_ratio': None,
+ 'cell_data_ratio_avail': None,
+ 'cell_data_date_added': None,
+ 'cell_data_date_completed': None,
+ 'cell_data_date_or_never': None,
+ 'cell_data_speed_limit_down': None,
+ 'cell_data_speed_limit_up': None,
+ 'cell_data_trackericon': None,
+ 'cell_data_statusicon': None,
+ 'cell_data_queue': None,
+ 'cell_data_progress': [None, None],
+ 'cell_data_peer_progress': None,
+}
+
+
+def cell_data_statusicon(column, cell, model, row, data):
+ """Display text with an icon"""
+ try:
+ state = model.get_value(row, data)
+
+ if func_last_value['cell_data_statusicon'] == state:
+ return
+ func_last_value['cell_data_statusicon'] = state
+
+ icon = ICON_STATE[state]
+
+ # Supress Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed
+ original_filters = warnings.filters[:]
+ warnings.simplefilter('ignore')
+ try:
+ cell.set_property('pixbuf', icon)
+ finally:
+ warnings.filters = original_filters
+
+ except KeyError:
+ pass
+
+
+def set_tracker_icon(tracker_icon, cell):
+ if tracker_icon:
+ pixbuf = tracker_icon.get_cached_icon()
+ if pixbuf is None:
+ pixbuf = get_pixbuf(tracker_icon.get_filename(), 16)
+ tracker_icon.set_cached_icon(pixbuf)
+ else:
+ pixbuf = create_blank_pixbuf()
+
+ # Suppress Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ cell.set_property('pixbuf', pixbuf)
+
+
+def cell_data_trackericon(column, cell, model, row, data):
+ host = model[row][data]
+
+ if func_last_value['cell_data_trackericon'] == host:
+ return
+ if host:
+ if not component.get('TrackerIcons').has(host):
+ # Set blank icon while waiting for the icon to be loaded
+ set_tracker_icon(None, cell)
+ component.get('TrackerIcons').fetch(host)
+ func_last_value['cell_data_trackericon'] = None
+ else:
+ set_tracker_icon(component.get('TrackerIcons').get(host), cell)
+ # Only set the last value when we have found the icon
+ func_last_value['cell_data_trackericon'] = host
+ else:
+ set_tracker_icon(None, cell)
+ func_last_value['cell_data_trackericon'] = None
+
+
+def cell_data_progress(column, cell, model, row, data):
+ """Display progress bar with text"""
+ (value, state_str) = model.get(row, *data)
+ if func_last_value['cell_data_progress'][0] != value:
+ func_last_value['cell_data_progress'][0] = value
+ cell.set_property('value', value)
+
+ # Marked for translate states text are in filtertreeview
+ textstr = _(state_str)
+ if state_str not in ('Error', 'Seeding') and value < 100:
+ textstr = '%s %i%%' % (textstr, value)
+
+ if func_last_value['cell_data_progress'][1] != textstr:
+ func_last_value['cell_data_progress'][1] = textstr
+ cell.set_property('text', textstr)
+
+
+def cell_data_peer_progress(column, cell, model, row, data):
+ value = model.get_value(row, data) * 100
+ if func_last_value['cell_data_peer_progress'] != value:
+ func_last_value['cell_data_peer_progress'] = value
+ cell.set_property('value', value)
+ cell.set_property('text', '%i%%' % value)
+
+
+def cell_data_queue(column, cell, model, row, data):
+ value = model.get_value(row, data)
+
+ if func_last_value['cell_data_queue'] == value:
+ return
+ func_last_value['cell_data_queue'] = value
+
+ if value < 0:
+ cell.set_property('text', '')
+ else:
+ cell.set_property('text', str(value + 1))
+
+
+def cell_data_speed(cell, model, row, data):
+ """Display value as a speed, eg. 2 KiB/s"""
+ speed = model.get_value(row, data)
+
+ if speed > 0:
+ speed_str = common.fspeed(speed, shortform=True)
+ cell.set_property(
+ 'markup', '{} <small>{}</small>'.format(*tuple(speed_str.split()))
+ )
+ else:
+ cell.set_property('text', '')
+
+
+def cell_data_speed_down(column, cell, model, row, data):
+ """Display value as a speed, eg. 2 KiB/s"""
+ cell_data_speed(cell, model, row, data)
+
+
+def cell_data_speed_up(column, cell, model, row, data):
+ """Display value as a speed, eg. 2 KiB/s"""
+ cell_data_speed(cell, model, row, data)
+
+
+def cell_data_speed_limit(cell, model, row, data, cache_key):
+ """Display value as a speed, eg. 2 KiB/s"""
+ speed = model.get_value(row, data)
+
+ if func_last_value[cache_key] == speed:
+ return
+ func_last_value[cache_key] = speed
+
+ if speed > 0:
+ speed_str = common.fspeed(speed * 1024, shortform=True)
+ cell.set_property(
+ 'markup', '{} <small>{}</small>'.format(*tuple(speed_str.split()))
+ )
+ else:
+ cell.set_property('text', '')
+
+
+def cell_data_speed_limit_down(column, cell, model, row, data):
+ cell_data_speed_limit(cell, model, row, data, 'cell_data_speed_limit_down')
+
+
+def cell_data_speed_limit_up(column, cell, model, row, data):
+ cell_data_speed_limit(cell, model, row, data, 'cell_data_speed_limit_up')
+
+
+def cell_data_size(column, cell, model, row, data):
+ """Display value in terms of size, eg. 2 MB"""
+ size = model.get_value(row, data)
+ cell.set_property('text', common.fsize(size, shortform=True))
+
+
+def cell_data_peer(column, cell, model, row, data):
+ """Display values as 'value1 (value2)'"""
+ (first, second) = model.get(row, *data)
+ # Only display a (total) if second is greater than -1
+ if second > -1:
+ cell.set_property('text', '%d (%d)' % (first, second))
+ else:
+ cell.set_property('text', '%d' % first)
+
+
+def cell_data_time(column, cell, model, row, data):
+ """Display value as time, eg 1m10s"""
+ time = model.get_value(row, data)
+ if time <= 0:
+ time_str = ''
+ else:
+ time_str = common.ftime(time)
+ cell.set_property('text', time_str)
+
+
+def cell_data_ratio(cell, model, row, data, cache_key):
+ """Display value as a ratio with a precision of 2."""
+ ratio = model.get_value(row, data)
+ # Previous value in cell is the same as for this value, so ignore
+ if func_last_value[cache_key] == ratio:
+ return
+ func_last_value[cache_key] = ratio
+ cell.set_property(
+ 'text', '∞' if ratio < 0 else ('%.1f' % ratio).rstrip('0').rstrip('.')
+ )
+
+
+def cell_data_ratio_seeds_peers(column, cell, model, row, data):
+ cell_data_ratio(cell, model, row, data, 'cell_data_ratio_seeds_peers')
+
+
+def cell_data_ratio_ratio(column, cell, model, row, data):
+ cell_data_ratio(cell, model, row, data, 'cell_data_ratio_ratio')
+
+
+def cell_data_ratio_avail(column, cell, model, row, data):
+ cell_data_ratio(cell, model, row, data, 'cell_data_ratio_avail')
+
+
+def cell_data_date(column, cell, model, row, data, key):
+ """Display value as date, eg 05/05/08"""
+ date = model.get_value(row, data)
+
+ if func_last_value[key] == date:
+ return
+ func_last_value[key] = date
+
+ date_str = common.fdate(date, date_only=True) if date > 0 else ''
+ cell.set_property('text', date_str)
+
+
+cell_data_date_added = partial(cell_data_date, key='cell_data_date_added')
+cell_data_date_completed = partial(cell_data_date, key='cell_data_date_completed')
+
+
+def cell_data_date_or_never(column, cell, model, row, data):
+ """Display value as date, eg 05/05/08 or Never"""
+ value = model.get_value(row, data)
+
+ if func_last_value['cell_data_date_or_never'] == value:
+ return
+ func_last_value['cell_data_date_or_never'] = value
+
+ date_str = common.fdate(value, date_only=True) if value > 0 else _('Never')
+ cell.set_property('text', date_str)
diff --git a/deluge/ui/gtk3/trackers_tab.py b/deluge/ui/gtk3/trackers_tab.py
new file mode 100644
index 0000000..d671471
--- /dev/null
+++ b/deluge/ui/gtk3/trackers_tab.py
@@ -0,0 +1,69 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+import deluge.component as component
+from deluge.common import ftime
+
+from .tab_data_funcs import fcount, ftranslate, fyes_no
+from .torrentdetails import Tab
+
+log = logging.getLogger(__name__)
+
+
+class TrackersTab(Tab):
+ def __init__(self):
+ super().__init__('Trackers', 'trackers_tab', 'trackers_tab_label')
+
+ self.add_tab_widget('summary_next_announce', ftime, ('next_announce',))
+ self.add_tab_widget('summary_tracker', None, ('tracker_host',))
+ self.add_tab_widget('summary_tracker_status', ftranslate, ('tracker_status',))
+ self.add_tab_widget('summary_tracker_total', fcount, ('trackers',))
+ self.add_tab_widget('summary_private', fyes_no, ('private',))
+
+ component.get('MainWindow').connect_signals(self)
+
+ def update(self):
+ # Get the first selected torrent
+ selected = component.get('TorrentView').get_selected_torrents()
+
+ # Only use the first torrent in the list or return if None selected
+ if selected:
+ selected = selected[0]
+ else:
+ self.clear()
+ return
+
+ session = component.get('SessionProxy')
+ session.get_torrent_status(selected, self.status_keys).addCallback(
+ self._on_get_torrent_status
+ )
+
+ def _on_get_torrent_status(self, status):
+ # Check to see if we got valid data from the core
+ if not status:
+ return
+
+ # Update all the tab label widgets
+ for widget in self.tab_widgets.values():
+ txt = self.widget_status_as_fstr(widget, status)
+ if widget.obj.get_text() != txt:
+ widget.obj.set_text(txt)
+
+ def clear(self):
+ for widget in self.tab_widgets.values():
+ widget.obj.set_text('')
+
+ def on_button_edit_trackers_clicked(self, button):
+ torrent_id = component.get('TorrentView').get_selected_torrent()
+ if torrent_id:
+ from .edittrackersdialog import EditTrackersDialog
+
+ dialog = EditTrackersDialog(torrent_id, component.get('MainWindow').window)
+ dialog.run()
diff --git a/deluge/ui/hostlist.py b/deluge/ui/hostlist.py
new file mode 100644
index 0000000..0dba126
--- /dev/null
+++ b/deluge/ui/hostlist.py
@@ -0,0 +1,305 @@
+#
+# Copyright (C) Calum Lind 2017 <calumlind+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+import uuid
+from socket import gaierror, getaddrinfo
+
+from twisted.internet import defer
+
+from deluge.common import get_localhost_auth
+from deluge.config import Config
+from deluge.configmanager import get_config_dir
+from deluge.ui.client import Client, client
+
+log = logging.getLogger(__name__)
+
+DEFAULT_HOST = '127.0.0.1'
+DEFAULT_PORT = 58846
+LOCALHOST = ('127.0.0.1', 'localhost', '::1')
+
+
+def default_hostlist():
+ """Create a new hosts key for hostlist with a localhost entry"""
+ host_id = uuid.uuid4().hex
+ username, password = get_localhost_auth()
+ return {'hosts': [(host_id, DEFAULT_HOST, DEFAULT_PORT, username, password)]}
+
+
+def validate_host_info(hostname, port):
+ """Checks that hostname and port are valid.
+
+ Args:
+ hostname (str): The IP or hostname of the deluge daemon.
+ port (int): The port of the deluge daemon.
+
+ Raises:
+ ValueError: Host details are not valid with reason.
+ """
+
+ try:
+ getaddrinfo(hostname, None)
+ except gaierror as ex:
+ raise ValueError('Host %s: %s', hostname, ex.args[1])
+
+ if not isinstance(port, int):
+ raise ValueError('Invalid port. Must be an integer')
+ if not 0 <= port <= 65535:
+ raise ValueError('Invalid port. Must be between 0-65535')
+
+
+def migrate_hostlist(old_filename, new_filename):
+ """Check for old hostlist filename and save details to new filename"""
+ old_hostlist = get_config_dir(old_filename)
+ if os.path.isfile(old_hostlist):
+ config_v2 = Config(old_filename, config_dir=get_config_dir())
+ config_v2.save(get_config_dir(new_filename))
+ del config_v2
+
+ try:
+ os.rename(old_hostlist, old_hostlist + '.old')
+ except OSError as ex:
+ log.exception(ex)
+
+ try:
+ os.remove(old_hostlist + '.bak')
+ except OSError:
+ pass
+
+
+def migrate_config_2_to_3(config):
+ """Mirgrates old hostlist config files to new file version"""
+ localclient_username, localclient_password = get_localhost_auth()
+ if not localclient_username:
+ # Nothing to do here, there's no auth file
+ return
+ for idx, (__, host, __, username, __) in enumerate(config['hosts'][:]):
+ if host in LOCALHOST and not username:
+ config['hosts'][idx][3] = localclient_username
+ config['hosts'][idx][4] = localclient_password
+ return config
+
+
+def mask_hosts_password(hosts):
+ """Replace passwords in hosts list with *'s for log output"""
+ if not hosts:
+ return hosts
+
+ return [list(host)[:-1] + ['*' * 10] for host in hosts]
+
+
+class HostList:
+ """This class contains methods for adding, removing and looking up hosts in hostlist.conf."""
+
+ def __init__(self):
+ migrate_hostlist('hostlist.conf.1.2', 'hostlist.conf')
+ self.config = Config(
+ 'hostlist.conf',
+ default_hostlist(),
+ config_dir=get_config_dir(),
+ file_version=3,
+ log_mask_funcs={'hosts': mask_hosts_password},
+ )
+ self.config.run_converter((1, 2), 3, migrate_config_2_to_3)
+ self.config.save()
+
+ def check_info_exists(self, hostname, port, username, skip_host_id=None):
+ """Check for existing host entries with the same details.
+
+ Args:
+ hostname (str): The IP or hostname of the deluge daemon.
+ port (int): The port of the deluge daemon.
+ username (str): The username to login to the daemon with.
+ skip_host_id (str): A host_id to skip to check if other hosts match details.
+
+ Raises:
+ ValueError: Host details already exist.
+
+ """
+ for host_entry in self.config['hosts']:
+ if (hostname, port, username) == (
+ host_entry[1],
+ host_entry[2],
+ host_entry[3],
+ ):
+ if skip_host_id is not None and skip_host_id == host_entry[0]:
+ continue
+ raise ValueError('Host details already in hostlist')
+
+ def add_host(self, hostname, port, username, password):
+ """Add a new host to hostlist.
+
+ Args:
+ hostname (str): The IP or hostname of the deluge daemon.
+ port (int): The port of the deluge daemon.
+ username (str): The username to login to the daemon with.
+ password (str): The password to login to the daemon with.
+
+ Returns:
+ str: The new host id.
+ """
+ if (
+ not password and not username or username == 'localclient'
+ ) and hostname in LOCALHOST:
+ username, password = get_localhost_auth()
+
+ validate_host_info(hostname, port)
+ self.check_info_exists(hostname, port, username)
+ host_id = uuid.uuid4().hex
+ self.config['hosts'].append((host_id, hostname, port, username, password))
+ self.config.save()
+ return host_id
+
+ def get_host_info(self, host_id):
+ """Get the host details for host_id.
+
+ Args:
+ host_id (str): The host id to get info on.
+
+ Returns:
+ list: A list of (host_id, hostname, port, username).
+
+ """
+ for host_entry in self.config['hosts']:
+ if host_entry[0] == host_id:
+ return host_entry[0:4]
+ else:
+ return []
+
+ def get_hosts_info(self):
+ """Get information of all the hosts in the hostlist.
+
+ Returns:
+ list of lists: Host information in the format [(host_id, hostname, port, username)].
+
+ """
+ return [host_entry[0:4] for host_entry in self.config['hosts']]
+
+ def get_host_status(self, host_id):
+ """Gets the current status (online/offline) of the host
+
+ Args:
+ host_id (str): The host id to check status of.
+
+ Returns:
+ tuple: A tuple of strings (host_id, status, version).
+
+ """
+ status_offline = (host_id, 'Offline', '')
+
+ def on_connect(result, c, host_id):
+ """Successfully connected to a daemon"""
+
+ def on_info(info, c):
+ c.disconnect()
+ return host_id, 'Online', info
+
+ def on_info_fail(reason, c):
+ c.disconnect()
+ return status_offline
+
+ return c.daemon.info().addCallback(on_info, c).addErrback(on_info_fail, c)
+
+ def on_connect_failed(reason, host_id):
+ """Connection to daemon failed"""
+ log.debug('Host status failed for %s: %s', host_id, reason)
+ return status_offline
+
+ try:
+ host_id, host, port, user = self.get_host_info(host_id)
+ except ValueError:
+ log.warning('Problem getting host_id info from hostlist')
+ return defer.succeed(status_offline)
+
+ try:
+ ips = list({addrinfo[4][0] for addrinfo in getaddrinfo(host, None)})
+ except (gaierror, IndexError) as ex:
+ log.warning('Unable to resolve host %s to IP: %s', host, ex.args[1])
+ return defer.succeed(status_offline)
+
+ host_conn_list = [
+ (
+ host_ip,
+ port,
+ 'localclient' if not user and host_ip in LOCALHOST else user,
+ )
+ for host_ip in ips
+ ]
+
+ for host_conn_info in host_conn_list:
+ if client.connected() and host_conn_info == client.connection_info():
+ # Currently connected to host_id daemon.
+ def on_info(info, host_id):
+ log.debug('Client connected, query info: %s', info)
+ return host_id, 'Connected', info
+
+ return client.daemon.info().addCallback(on_info, host_id)
+ else:
+ # Attempt to connect to daemon with host_id details.
+ c = Client()
+ d = c.connect(host, port, skip_authentication=True)
+ d.addCallback(on_connect, c, host_id)
+ d.addErrback(on_connect_failed, host_id)
+ return d
+
+ def update_host(self, host_id, hostname, port, username, password):
+ """Update the supplied host id with new connection details.
+
+ Args:
+ host_id (str): The host id to update.
+ hostname (str): The new IP or hostname of the deluge daemon.
+ port (int): The new port of the deluge daemon.
+ username (str): The new username to login to the daemon with.
+ password (str): The new password to login to the daemon with.
+
+ """
+ validate_host_info(hostname, port)
+ self.check_info_exists(hostname, port, username, skip_host_id=host_id)
+
+ if (
+ not password and not username or username == 'localclient'
+ ) and hostname in LOCALHOST:
+ username, password = get_localhost_auth()
+
+ for idx, host_entry in enumerate(self.config['hosts']):
+ if host_id == host_entry[0]:
+ self.config['hosts'][idx] = host_id, hostname, port, username, password
+ self.config.save()
+ return True
+ return False
+
+ def remove_host(self, host_id):
+ """Removes the host entry from hostlist config.
+
+ Args:
+ host_id (str): The host id to remove.
+
+ Returns:
+ bool: True is successfully removed, False otherwise.
+
+ """
+ for host_entry in self.config['hosts']:
+ if host_id == host_entry[0]:
+ self.config['hosts'].remove(host_entry)
+ self.config.save()
+ return True
+ else:
+ return False
+
+ def add_default_host(self):
+ self.add_host(DEFAULT_HOST, DEFAULT_PORT, *get_localhost_auth())
+
+ def connect_host(self, host_id):
+ """Connect to host daemon"""
+ for host_entry in self.config['hosts']:
+ if host_entry[0] == host_id:
+ __, host, port, username, password = host_entry
+ return client.connect(host, port, username, password)
+
+ return defer.fail(Exception('Bad host id'))
diff --git a/deluge/ui/sessionproxy.py b/deluge/ui/sessionproxy.py
new file mode 100644
index 0000000..6cb8550
--- /dev/null
+++ b/deluge/ui/sessionproxy.py
@@ -0,0 +1,282 @@
+#
+# Copyright (C) 2010 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import logging
+from time import time
+
+from twisted.internet.defer import maybeDeferred, succeed
+
+import deluge.component as component
+from deluge.ui.client import client
+
+log = logging.getLogger(__name__)
+
+
+class SessionProxy(component.Component):
+ """
+ The SessionProxy component is used to cache session information client-side
+ to reduce the number of RPCs needed to provide a rich user interface.
+
+ It will query the Core for only changes in the status of the torrents
+ and will try to satisfy client requests from the cache.
+
+ """
+
+ def __init__(self):
+ log.debug('SessionProxy init..')
+ component.Component.__init__(self, 'SessionProxy', interval=5)
+
+ # Set the cache time in seconds
+ # This is how long data will be valid before re-fetching from the core
+ self.cache_time = 1.5
+
+ # Hold the torrents' status.. {torrent_id: [time, {status_dict}], ...}
+ self.torrents = {}
+
+ # Holds the time of the last key update.. {torrent_id: {key1, time, ...}, ...}
+ self.cache_times = {}
+
+ def start(self):
+ client.register_event_handler(
+ 'TorrentStateChangedEvent', self.on_torrent_state_changed
+ )
+ client.register_event_handler('TorrentRemovedEvent', self.on_torrent_removed)
+ client.register_event_handler('TorrentAddedEvent', self.on_torrent_added)
+
+ def on_get_session_state(torrent_ids):
+ for torrent_id in torrent_ids:
+ # Let's at least store the torrent ids with empty statuses
+ # so that upcoming queries or status updates don't throw errors.
+ self.torrents.setdefault(torrent_id, [time(), {}])
+ self.cache_times.setdefault(torrent_id, {})
+ return torrent_ids
+
+ return client.core.get_session_state().addCallback(on_get_session_state)
+
+ def stop(self):
+ client.deregister_event_handler(
+ 'TorrentStateChangedEvent', self.on_torrent_state_changed
+ )
+ client.deregister_event_handler('TorrentRemovedEvent', self.on_torrent_removed)
+ client.deregister_event_handler('TorrentAddedEvent', self.on_torrent_added)
+ self.torrents = {}
+
+ def create_status_dict(self, torrent_ids, keys):
+ """
+ Creates a status dict from the cache.
+
+ :param torrent_ids: the torrent_ids
+ :type torrent_ids: list of strings
+ :param keys: the status keys
+ :type keys: list of strings
+
+ :returns: a dict with the status information for the *torrent_ids*
+ :rtype: dict
+
+ """
+ sd = {}
+ keys = set(keys)
+ keys_len = (
+ -1
+ ) # The number of keys for the current cache (not the len of keys_diff_cached)
+ keys_diff_cached = []
+
+ for torrent_id in torrent_ids:
+ try:
+ if keys:
+ sd[torrent_id] = self.torrents[torrent_id][1].copy()
+
+ # Have to remove the keys that weren't requested
+ if len(sd[torrent_id]) == keys_len:
+ # If the number of keys are equal they are the same keys
+ # so we use the cached diff of the keys we need to remove
+ keys_to_remove = keys_diff_cached
+ else:
+ # Not the same keys so create a new diff
+ keys_to_remove = set(sd[torrent_id]) - keys
+ # Update the cached diff
+ keys_diff_cached = keys_to_remove
+ keys_len = len(sd[torrent_id])
+
+ # Usually there are no keys to remove, so it's cheaper with
+ # this if-test than a for-loop with no iterations.
+ if keys_to_remove:
+ for k in keys_to_remove:
+ del sd[torrent_id][k]
+ else:
+ sd[torrent_id] = dict(self.torrents[torrent_id][1])
+ except KeyError:
+ continue
+ return sd
+
+ def get_torrent_status(self, torrent_id, keys):
+ """
+ Get a status dict for one torrent.
+
+ :param torrent_id: the torrent_id
+ :type torrent_id: string
+ :param keys: the status keys
+ :type keys: list of strings
+
+ :returns: a dict of status information
+ :rtype: dict
+
+ """
+ if torrent_id in self.torrents:
+ # Keep track of keys we need to request from the core
+ keys_to_get = []
+ if not keys:
+ keys = list(self.torrents[torrent_id][1])
+
+ for key in keys:
+ if (
+ time() - self.cache_times[torrent_id].get(key, 0.0)
+ > self.cache_time
+ ):
+ keys_to_get.append(key)
+ if not keys_to_get:
+ return succeed(self.create_status_dict([torrent_id], keys)[torrent_id])
+ else:
+ d = client.core.get_torrent_status(torrent_id, keys_to_get, True)
+
+ def on_status(result, torrent_id):
+ t = time()
+ try:
+ self.torrents[torrent_id][0] = t
+ self.torrents[torrent_id][1].update(result)
+ for key in keys_to_get:
+ self.cache_times[torrent_id][key] = t
+ return self.create_status_dict([torrent_id], keys)[torrent_id]
+ except KeyError:
+ log.debug(
+ f'Status missing for torrent (removed?): {torrent_id}'
+ )
+ return {}
+
+ return d.addCallback(on_status, torrent_id)
+ else:
+ d = client.core.get_torrent_status(torrent_id, keys, True)
+
+ def on_status(result):
+ if result:
+ t = time()
+ self.torrents[torrent_id] = (t, result)
+ self.cache_times[torrent_id] = {}
+ for key in result:
+ self.cache_times[torrent_id][key] = t
+
+ return result
+
+ return d.addCallback(on_status)
+
+ def get_torrents_status(self, filter_dict, keys):
+ """
+ Get a dict of torrent statuses.
+
+ The filter can take 2 keys, *state* and *id*. The state filter can be
+ one of the torrent states or the special one *Active*. The *id* key is
+ simply a list of torrent_ids.
+
+ :param filter_dict: the filter used for this query
+ :type filter_dict: dict
+ :param keys: the status keys
+ :type keys: list of strings
+
+ :returns: a dict of torrent_ids and their status dicts
+ :rtype: dict
+
+ """
+
+ # Helper functions and callbacks ---------------------------------------
+ def on_status(result, torrent_ids, keys):
+ # Update the internal torrent status dict with the update values
+ t = time()
+ for key, value in result.items():
+ try:
+ self.torrents[key][0] = t
+ self.torrents[key][1].update(value)
+ for k in value:
+ self.cache_times[key][k] = t
+ except KeyError:
+ # The torrent was removed
+ continue
+
+ # Create the status dict
+ if not torrent_ids:
+ torrent_ids = list(result)
+
+ return self.create_status_dict(torrent_ids, keys)
+
+ def find_torrents_to_fetch(torrent_ids):
+ to_fetch = []
+ t = time()
+ for torrent_id in torrent_ids:
+ torrent = self.torrents[torrent_id]
+ if t - torrent[0] > self.cache_time:
+ to_fetch.append(torrent_id)
+ else:
+ # We need to check if a key is expired
+ for key in keys:
+ if (
+ t - self.cache_times[torrent_id].get(key, 0.0)
+ > self.cache_time
+ ):
+ to_fetch.append(torrent_id)
+ break
+
+ return to_fetch
+
+ # -----------------------------------------------------------------------
+
+ if not filter_dict:
+ # This means we want all the torrents status
+ # We get a list of any torrent_ids with expired status dicts
+ torrents_list = list(self.torrents)
+ to_fetch = find_torrents_to_fetch(torrents_list)
+ if to_fetch:
+ d = client.core.get_torrents_status({'id': to_fetch}, keys, True)
+ return d.addCallback(on_status, torrents_list, keys)
+
+ # Don't need to fetch anything
+ return maybeDeferred(self.create_status_dict, torrents_list, keys)
+
+ if len(filter_dict) == 1 and 'id' in filter_dict:
+ # At this point we should have a filter with just "id" in it
+ to_fetch = find_torrents_to_fetch(filter_dict['id'])
+ if to_fetch:
+ d = client.core.get_torrents_status({'id': to_fetch}, keys, True)
+ return d.addCallback(on_status, filter_dict['id'], keys)
+ else:
+ # Don't need to fetch anything, so just return data from the cache
+ return maybeDeferred(self.create_status_dict, filter_dict['id'], keys)
+ else:
+ # This is a keyworded filter so lets just pass it onto the core
+ # XXX: Add more caching here.
+ d = client.core.get_torrents_status(filter_dict, keys, True)
+ return d.addCallback(on_status, None, keys)
+
+ def on_torrent_state_changed(self, torrent_id, state):
+ if torrent_id in self.torrents:
+ self.torrents[torrent_id][1].setdefault('state', state)
+ self.cache_times.setdefault(torrent_id, {}).update(state=time())
+
+ def on_torrent_added(self, torrent_id, from_state):
+ self.torrents[torrent_id] = [time() - self.cache_time - 1, {}]
+ self.cache_times[torrent_id] = {}
+
+ def on_status(status):
+ self.torrents[torrent_id][1].update(status)
+ t = time()
+ for key in status:
+ self.cache_times[torrent_id][key] = t
+
+ client.core.get_torrent_status(torrent_id, []).addCallback(on_status)
+
+ def on_torrent_removed(self, torrent_id):
+ if torrent_id in self.torrents:
+ del self.torrents[torrent_id]
+ del self.cache_times[torrent_id]
diff --git a/deluge/ui/tracker_icons.py b/deluge/ui/tracker_icons.py
new file mode 100644
index 0000000..5f619af
--- /dev/null
+++ b/deluge/ui/tracker_icons.py
@@ -0,0 +1,651 @@
+#
+# Copyright (C) 2010 John Garland <johnnybg+deluge@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+import tempfile
+from html.parser import HTMLParser
+from urllib.parse import urljoin, urlparse
+
+from twisted.internet import defer, threads
+from twisted.python.failure import Failure
+from twisted.web.resource import ForbiddenResource, NoResource
+
+from deluge.component import Component
+from deluge.configmanager import get_config_dir
+from deluge.decorators import proxy
+from deluge.httpdownloader import download_file
+
+try:
+ import chardet
+except ImportError:
+ chardet = None
+
+try:
+ from PIL import Image
+except ImportError:
+ Image = None
+
+log = logging.getLogger(__name__)
+
+
+class TrackerIcon:
+ """
+ Represents a tracker's icon
+ """
+
+ def __init__(self, filename):
+ """
+ Initialises a new TrackerIcon object
+
+ :param filename: the filename of the icon
+ :type filename: string
+ """
+ self.filename = os.path.abspath(filename)
+ self.mimetype = extension_to_mimetype(self.filename.rpartition('.')[2])
+ self.data = None
+ self.icon_cache = None
+
+ def __eq__(self, other):
+ """
+ Compares this TrackerIcon with another to determine if they're equal
+
+ :param other: the TrackerIcon to compare to
+ :type other: TrackerIcon
+ :returns: whether or not they're equal
+ :rtype: boolean
+ """
+ return (
+ os.path.samefile(self.filename, other.filename)
+ or self.get_mimetype() == other.get_mimetype()
+ and self.get_data() == other.get_data()
+ )
+
+ def get_mimetype(self):
+ """
+ Returns the mimetype of this TrackerIcon's image
+
+ :returns: the mimetype of the image
+ :rtype: string
+ """
+ return self.mimetype
+
+ def get_data(self):
+ """
+ Returns the TrackerIcon's image data as a string
+
+ :returns: the image data
+ :rtype: string
+ """
+ if not self.data:
+ with open(self.filename, 'rb') as _file:
+ self.data = _file.read()
+ return self.data
+
+ def get_filename(self, full=True):
+ """
+ Returns the TrackerIcon image's filename
+
+ :param full: an (optional) arg to indicate whether or not to
+ return the full path
+ :type full: boolean
+ :returns: the path of the TrackerIcon's image
+ :rtype: string
+ """
+ return self.filename if full else os.path.basename(self.filename)
+
+ def set_cached_icon(self, data):
+ """
+ Set the cached icon data.
+
+ """
+ self.icon_cache = data
+
+ def get_cached_icon(self):
+ """
+ Returns the cached icon data.
+
+ """
+ return self.icon_cache
+
+
+class TrackerIcons(Component):
+ """
+ A TrackerIcon factory class
+ """
+
+ def __init__(self, icon_dir=None, no_icon=None):
+ """
+ Initialises a new TrackerIcons object
+
+ :param icon_dir: the (optional) directory of where to store the icons
+ :type icon_dir: string
+ :param no_icon: the (optional) path name of the icon to show when no icon
+ can be fetched
+ :type no_icon: string
+ """
+ Component.__init__(self, 'TrackerIcons')
+ if not icon_dir:
+ icon_dir = get_config_dir('icons')
+ self.dir = icon_dir
+ if not os.path.isdir(self.dir):
+ os.makedirs(self.dir)
+
+ self.icons = {}
+ for icon in os.listdir(self.dir):
+ if icon != no_icon:
+ host = icon_name_to_host(icon)
+ try:
+ self.icons[host] = TrackerIcon(os.path.join(self.dir, icon))
+ except KeyError:
+ log.warning('invalid icon %s', icon)
+ if no_icon:
+ self.icons[None] = TrackerIcon(no_icon)
+ else:
+ self.icons[None] = None
+ self.icons[''] = self.icons[None]
+
+ self.pending = {}
+ self.redirects = {}
+
+ def has(self, host):
+ """
+ Returns True or False if the tracker icon for the given host exists or not.
+
+ :param host: the host for the TrackerIcon
+ :type host: string
+ :returns: True or False
+ :rtype: bool
+ """
+ return host.lower() in self.icons
+
+ def get(self, host):
+ """
+ Returns a TrackerIcon for the given tracker's host
+ from the icon cache.
+
+ :param host: the host for the TrackerIcon
+ :type host: string
+ :returns: the TrackerIcon for the host
+ :rtype: TrackerIcon
+ """
+ host = host.lower()
+ if host in self.icons:
+ return self.icons[host]
+ else:
+ return None
+
+ def fetch(self, host):
+ """
+ Fetches (downloads) the icon for the given host.
+ When the icon is downloaded a callback is fired
+ on the the queue of callers to this function.
+
+ :param host: the host to obtain the TrackerIcon for
+ :type host: string
+ :returns: a Deferred which fires with the TrackerIcon for the given host
+ :rtype: Deferred
+ """
+ host = host.lower()
+ if host in self.icons:
+ # We already have it, so let's return it
+ d = defer.succeed(self.icons[host])
+ elif host in self.pending:
+ # We're in the middle of getting it
+ # Add ourselves to the waiting list
+ d = defer.Deferred()
+ self.pending[host].append(d)
+ else:
+ # We need to fetch it
+ self.pending[host] = []
+ tmp_file = tempfile.mkstemp(prefix='deluge_trackericon_html.')
+ filename = tmp_file[1]
+ # Start callback chain
+ d = self.download_page(host, filename)
+ d.addCallbacks(
+ self.on_download_page_complete,
+ self.on_download_page_fail,
+ )
+ d.addCallback(self.parse_html_page)
+ d.addCallbacks(
+ self.on_parse_complete, self.on_parse_fail, callbackArgs=(host,)
+ )
+ d.addBoth(self.del_tmp_file, tmp_file)
+ d.addCallback(self.download_icon, host)
+ d.addCallbacks(
+ self.on_download_icon_complete,
+ self.on_download_icon_fail,
+ callbackArgs=(host,),
+ errbackArgs=(host,),
+ )
+ d.addCallback(self.resize_icon)
+ d.addCallback(self.store_icon, host)
+ return d
+
+ @staticmethod
+ def del_tmp_file(result, tmp_file):
+ """Remove tmp_file created when downloading tracker page"""
+ fd, filename = tmp_file
+ try:
+ os.close(fd)
+ os.remove(filename)
+ except OSError:
+ log.debug(f'Unable to delete temporary file: {filename}')
+
+ return result
+
+ def download_page(
+ self, host: str, filename: str, url: str = None
+ ) -> 'defer.Deferred[str]':
+ """Downloads a tracker host's page
+
+ If no url is provided, it bases the url on the host
+
+ Args:
+ host: The tracker host
+ filename: Location to download page
+ url: The url of the host
+
+ Returns:
+ The filename of the tracker host's page
+ """
+ if not url:
+ url = self.host_to_url(host)
+
+ log.debug(f'Downloading {host} {url} to {filename}')
+ return download_file(url, filename, force_filename=True)
+
+ def on_download_page_complete(self, page):
+ """
+ Runs any download clean up functions
+
+ :param page: the page that finished downloading
+ :type page: string
+ :returns: the page that finished downloading
+ :rtype: string
+ """
+ log.debug('Finished downloading %s', page)
+ return page
+
+ def on_download_page_fail(self, failure: 'Failure') -> 'Failure':
+ """Runs any download failure clean-up functions
+
+ Args:
+ failure: The failure that occurred.
+
+ Returns:
+ The original failure.
+
+ """
+ log.debug(f'Error downloading page: {failure.getErrorMessage()}')
+ return failure
+
+ @proxy(threads.deferToThread)
+ def parse_html_page(self, page):
+ """
+ Parses the html page for favicons
+
+ :param page: the page to parse
+ :type page: string
+ :returns: a Deferred which callbacks a list of available favicons (url, type)
+ :rtype: Deferred
+ """
+ encoding = 'UTF-8'
+ if chardet:
+ with open(page, 'rb') as _file:
+ result = chardet.detect(_file.read())
+ encoding = result['encoding']
+
+ with open(page, encoding=encoding) as _file:
+ parser = FaviconParser()
+ for line in _file:
+ parser.feed(line)
+ if parser.left_head:
+ break
+ parser.close()
+
+ return parser.get_icons()
+
+ def on_parse_complete(self, icons, host):
+ """
+ Runs any parse clean up functions
+
+ :param icons: the icons that were extracted from the page
+ :type icons: list
+ :param host: the host the icons are for
+ :type host: string
+ :returns: the icons that were extracted from the page
+ :rtype: list
+ """
+ log.debug('Parse Complete, got icons for %s: %s', host, icons)
+ url = self.host_to_url(host)
+ icons = [(urljoin(url, icon), mimetype) for icon, mimetype in icons]
+ log.debug('Icon urls from %s: %s', host, icons)
+ return icons
+
+ def on_parse_fail(self, f):
+ """
+ Recovers from a parse error
+
+ :param f: the failure that occurred
+ :type f: Failure
+ :returns: a Deferred if recovery was possible
+ else the original failure
+ :rtype: Deferred or Failure
+ """
+ log.debug('Error parsing page: %s', f.getErrorMessage())
+ return f
+
+ def download_icon(self, icons, host):
+ """
+ Downloads the first available icon from icons
+
+ :param icons: a list of icons
+ :type icons: list
+ :param host: the tracker's host name
+ :type host: string
+ :returns: a Deferred which fires with the downloaded icon's filename
+ :rtype: Deferred
+ """
+ if len(icons) == 0:
+ raise NoIconsError('empty icons list')
+ (url, mimetype) = icons.pop(0)
+ d = download_file(
+ url,
+ os.path.join(self.dir, host_to_icon_name(host, mimetype)),
+ force_filename=True,
+ )
+ d.addCallback(self.check_icon_is_valid)
+ if icons:
+ d.addErrback(self.on_download_icon_fail, host, icons)
+ return d
+
+ @proxy(threads.deferToThread)
+ def check_icon_is_valid(self, icon_name):
+ """
+ Performs a sanity check on icon_name
+
+ :param icon_name: the name of the icon to check
+ :type icon_name: string
+ :returns: the name of the validated icon
+ :rtype: string
+ :raises: InvalidIconError
+ """
+
+ if Image:
+ try:
+ with Image.open(icon_name):
+ pass
+ except OSError as ex:
+ raise InvalidIconError(ex)
+ else:
+ if not os.path.getsize(icon_name):
+ raise InvalidIconError('empty icon')
+
+ return icon_name
+
+ def on_download_icon_complete(self, icon_name, host):
+ """
+ Runs any download cleanup functions
+
+ :param icon_name: the filename of the icon that finished downloading
+ :type icon_name: string
+ :param host: the host the icon completed to download for
+ :type host: string
+ :returns: the icon that finished downloading
+ :rtype: TrackerIcon
+ """
+ log.debug('Successfully downloaded from %s: %s', host, icon_name)
+ return TrackerIcon(icon_name)
+
+ def on_download_icon_fail(self, f, host, icons=None):
+ """
+ Recovers from a download error
+
+ :param f: the failure that occurred
+ :type f: Failure
+ :param host: the host the icon failed to download for
+ :type host: string
+ :param icons: the (optional) list of remaining icons
+ :type icons: list
+ :returns: a Deferred if recovery was possible
+ else the original failure
+ :rtype: Deferred or Failure
+ """
+ if not icons:
+ icons = []
+ error_msg = f.getErrorMessage()
+ log.debug('Error downloading icon from %s: %s', host, error_msg)
+ d = f
+ if f.check(NoResource, ForbiddenResource) and icons:
+ d = self.download_icon(icons, host)
+ elif f.check(NoIconsError):
+ # No icons, try favicon.ico as an act of desperation
+ d = self.download_icon(
+ [
+ (
+ urljoin(self.host_to_url(host), 'favicon.ico'),
+ extension_to_mimetype('ico'),
+ )
+ ],
+ host,
+ )
+ d.addCallbacks(
+ self.on_download_icon_complete,
+ self.on_download_icon_fail,
+ callbackArgs=(host,),
+ errbackArgs=(host,),
+ )
+ else:
+ # No icons :(
+ # Return the None Icon
+ d = self.icons[None]
+
+ return d
+
+ @proxy(threads.deferToThread)
+ def resize_icon(self, icon):
+ """
+ Resizes the given icon to be 16x16 pixels
+
+ :param icon: the icon to resize
+ :type icon: TrackerIcon
+ :returns: the resized icon
+ :rtype: TrackerIcon
+ """
+ # Requires Pillow(PIL) to resize.
+ if icon and Image:
+ filename = icon.get_filename()
+ remove_old = False
+ with Image.open(filename) as img:
+ if img.size > (16, 16):
+ new_filename = filename.rpartition('.')[0] + '.png'
+ img = img.resize((16, 16), Image.ANTIALIAS)
+ img.save(new_filename)
+ if new_filename != filename:
+ remove_old = True
+ if remove_old:
+ os.remove(filename)
+ icon = TrackerIcon(new_filename)
+ return icon
+
+ def store_icon(self, icon, host):
+ """
+ Stores the icon for the given host
+ Callbacks any pending deferreds waiting on this icon
+
+ :param icon: the icon to store
+ :type icon: TrackerIcon or None
+ :param host: the host to store it for
+ :type host: string
+ :returns: the stored icon
+ :rtype: TrackerIcon or None
+ """
+ self.icons[host] = icon
+ for d in self.pending[host]:
+ d.callback(icon)
+ del self.pending[host]
+ return icon
+
+ def host_to_url(self, host):
+ """
+ Given a host, returns the URL to fetch
+
+ :param host: the tracker host
+ :type host: string
+ :returns: the url of the tracker
+ :rtype: string
+ """
+ if host in self.redirects:
+ host = self.redirects[host]
+ return 'http://%s/' % host
+
+
+# ------- HELPER CLASSES ------
+
+
+class FaviconParser(HTMLParser):
+ """
+ A HTMLParser which extracts favicons from a HTML page
+ """
+
+ def __init__(self):
+ self.icons = []
+ self.left_head = False
+ HTMLParser.__init__(self)
+
+ def handle_starttag(self, tag, attrs):
+ if (
+ tag == 'link'
+ and ('rel', 'icon') in attrs
+ or ('rel', 'shortcut icon') in attrs
+ ):
+ href = None
+ icon_type = None
+ for attr, value in attrs:
+ if attr == 'href':
+ href = value
+ elif attr == 'type':
+ icon_type = value
+ if href:
+ try:
+ mimetype = extension_to_mimetype(href.rpartition('.')[2])
+ except KeyError:
+ pass
+ else:
+ icon_type = mimetype
+ if icon_type:
+ self.icons.append((href, icon_type))
+
+ def handle_endtag(self, tag):
+ if tag == 'head':
+ self.left_head = True
+
+ def get_icons(self):
+ """
+ Returns a list of favicons extracted from the HTML page
+
+ :returns: a list of favicons
+ :rtype: list
+ """
+ return self.icons
+
+
+# ------ HELPER FUNCTIONS ------
+
+
+def url_to_host(url):
+ """
+ Given a URL, returns the host it belongs to
+
+ :param url: the URL in question
+ :type url: string
+ :returns: the host of the given URL
+ :rtype: string
+ """
+ return urlparse(url).hostname
+
+
+def host_to_icon_name(host, mimetype):
+ """
+ Given a host, returns the appropriate icon name
+
+ :param host: the host in question
+ :type host: string
+ :param mimetype: the mimetype of the icon
+ :type mimetype: string
+ :returns: the icon's filename
+ :rtype: string
+
+ """
+ return host + '.' + mimetype_to_extension(mimetype)
+
+
+def icon_name_to_host(icon):
+ """
+ Given a host's icon name, returns the host name
+
+ :param icon: the icon name
+ :type icon: string
+ :returns: the host name
+ :rtype: string
+ """
+ return icon.rpartition('.')[0]
+
+
+MIME_MAP = {
+ 'image/gif': 'gif',
+ 'image/jpeg': 'jpg',
+ 'image/png': 'png',
+ 'image/vnd.microsoft.icon': 'ico',
+ 'image/x-icon': 'ico',
+ 'image/svg+xml': 'svg',
+ 'gif': 'image/gif',
+ 'jpg': 'image/jpeg',
+ 'jpeg': 'image/jpeg',
+ 'png': 'image/png',
+ 'ico': 'image/vnd.microsoft.icon',
+ 'svg': 'image/svg+xml',
+}
+
+
+def mimetype_to_extension(mimetype):
+ """
+ Given a mimetype, returns the appropriate filename extension
+
+ :param mimetype: the mimetype
+ :type mimetype: string
+ :returns: the filename extension for the given mimetype
+ :rtype: string
+ :raises KeyError: if given an invalid mimetype
+ """
+ return MIME_MAP[mimetype.lower()]
+
+
+def extension_to_mimetype(extension):
+ """
+ Given a filename extension, returns the appropriate mimetype
+
+ :param extension: the filename extension
+ :type extension: string
+ :returns: the mimetype for the given filename extension
+ :rtype: string
+ :raises KeyError: if given an invalid filename extension
+ """
+ return MIME_MAP[extension.lower()]
+
+
+# ------ EXCEPTIONS ------
+
+
+class NoIconsError(Exception):
+ pass
+
+
+class InvalidIconError(Exception):
+ pass
diff --git a/deluge/ui/ui.py b/deluge/ui/ui.py
new file mode 100644
index 0000000..338f8a8
--- /dev/null
+++ b/deluge/ui/ui.py
@@ -0,0 +1,70 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import sys
+
+import deluge.common
+import deluge.configmanager
+import deluge.log
+from deluge.argparserbase import ArgParserBase
+from deluge.i18n import setup_translation
+
+log = logging.getLogger(__name__)
+
+try:
+ from setproctitle import setproctitle
+except ImportError:
+
+ def setproctitle(title):
+ return
+
+
+class UI:
+ """
+ Base class for UI implementations.
+
+ """
+
+ cmd_description = """Override with command description"""
+
+ def __init__(self, name, **kwargs):
+ self.__name = name
+ self.ui_args = kwargs.pop('ui_args', None)
+ setup_translation()
+ self.__parser = ArgParserBase(**kwargs)
+
+ def parse_args(self, parser, args=None):
+ options = parser.parse_args(args)
+ if not hasattr(options, 'remaining'):
+ options.remaining = []
+ return options
+
+ @property
+ def name(self):
+ return self.__name
+
+ @property
+ def parser(self):
+ return self.__parser
+
+ @property
+ def options(self):
+ return self.__options
+
+ def start(self, parser=None):
+ args = sys.argv[1:]
+ if parser is None:
+ parser = self.parser
+ self.__options = self.parse_args(parser, args)
+
+ setproctitle('deluge-%s' % self.__name)
+
+ log.info('Deluge ui %s', deluge.common.get_version())
+ log.debug('options: %s', self.__options)
+ log.info('Starting %s ui..', self.__name)
diff --git a/deluge/ui/ui_entry.py b/deluge/ui/ui_entry.py
new file mode 100644
index 0000000..e185fda
--- /dev/null
+++ b/deluge/ui/ui_entry.py
@@ -0,0 +1,140 @@
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2010 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+# The main starting point for the program. This function is called when the
+# user runs the command 'deluge'.
+
+"""Main starting point for Deluge"""
+import argparse
+import logging
+import os
+import sys
+
+import pkg_resources
+
+import deluge.common
+import deluge.configmanager
+from deluge.argparserbase import ArgParserBase
+from deluge.i18n import setup_translation
+
+DEFAULT_PREFS = {'default_ui': 'gtk'}
+
+AMBIGUOUS_CMD_ARGS = ('-h', '--help', '-v', '-V', '--version')
+
+
+def start_ui():
+ """Entry point for ui script"""
+ setup_translation()
+
+ # Get the registered UI entry points
+ ui_entrypoints = {}
+ for entrypoint in pkg_resources.iter_entry_points('deluge.ui'):
+ try:
+ ui_entrypoints[entrypoint.name] = entrypoint.load()
+ except ImportError:
+ # Unable to load entrypoint so skip adding it.
+ pass
+
+ ui_titles = sorted(ui_entrypoints)
+
+ def add_ui_options_group(_parser):
+ """Function to enable reuse of UI Options group"""
+ group = _parser.add_argument_group(_('UI Options'))
+ group.add_argument(
+ '-s',
+ '--set-default-ui',
+ dest='default_ui',
+ choices=ui_titles,
+ help=_('Set the default UI to be run, when no UI is specified'),
+ )
+ return _parser
+
+ # Setup parser with Common Options and add UI Options group.
+ parser = add_ui_options_group(ArgParserBase())
+
+ # Parse and handle common/process group options
+ options = parser.parse_known_ui_args(sys.argv, withhold=AMBIGUOUS_CMD_ARGS)
+
+ config = deluge.configmanager.ConfigManager('ui.conf', DEFAULT_PREFS)
+ log = logging.getLogger(__name__)
+ log.info('Deluge ui %s', deluge.common.get_version())
+
+ if options.default_ui:
+ config['default_ui'] = options.default_ui
+ config.save()
+ log.info('The default UI has been changed to %s', options.default_ui)
+ sys.exit(0)
+
+ default_ui = config['default_ui']
+ config.save() # Save in case config didn't already exist.
+ del config
+
+ # We have parsed and got the config dir needed to get the default UI
+ # Now create a parser for choosing the UI. We reuse the ui option group for
+ # parsing to succeed and the text displayed to user, but result is not used.
+ parser = add_ui_options_group(ArgParserBase(common_help=True))
+
+ # Create subparser for each registered UI. Empty title is used to remove unwanted positional text.
+ subparsers = parser.add_subparsers(
+ dest='selected_ui',
+ metavar='{%s} [UI args]' % ','.join(ui_titles),
+ title=None,
+ help=_('Alternative UI to launch, with optional ui args \n (default UI: *)'),
+ )
+ for ui in ui_titles:
+ parser_ui = subparsers.add_parser(
+ ui,
+ common_help=False,
+ help=getattr(ui_entrypoints[ui], 'cmd_description', ''),
+ )
+ parser_ui.add_argument('ui_args', nargs=argparse.REMAINDER)
+ # If the UI is set as default, indicate this in help by prefixing with a star.
+ subactions = subparsers._get_subactions()
+ prefix = '*' if ui == default_ui else ' '
+ subactions[-1].metavar = f'{prefix} {ui}'
+
+ # Insert a default UI subcommand unless one of the ambiguous_args are specified
+ parser.set_default_subparser(default_ui, abort_opts=AMBIGUOUS_CMD_ARGS)
+
+ # Only parse known arguments to leave the UIs to show a help message if parsing fails.
+ options, remaining = parser.parse_known_args()
+ selected_ui = options.selected_ui
+ ui_args = remaining + options.ui_args
+
+ # Remove the UI argument before launching the UI.
+ sys.argv.remove(selected_ui)
+
+ try:
+ ui = ui_entrypoints[selected_ui](
+ prog=f'{os.path.basename(sys.argv[0])} {selected_ui}', ui_args=ui_args
+ )
+ except KeyError:
+ log.error(
+ 'Unable to find chosen UI: "%s". Please choose a different UI '
+ 'or use "--set-default-ui" to change default UI.',
+ selected_ui,
+ )
+ except ImportError as ex:
+ import traceback
+
+ error_type, error_value, tb = sys.exc_info()
+ stack = traceback.extract_tb(tb)
+ last_frame = stack[-1]
+ if last_frame[0] == __file__:
+ log.error(
+ 'Unable to find chosen UI: "%s". Please choose a different UI '
+ 'or use "--set-default-ui" to change default UI.',
+ selected_ui,
+ )
+ else:
+ log.exception(ex)
+ log.error('Encountered an error launching the request UI: %s', selected_ui)
+ sys.exit(1)
+ else:
+ ui.start()
diff --git a/deluge/ui/web/__init__.py b/deluge/ui/web/__init__.py
new file mode 100644
index 0000000..3757e0b
--- /dev/null
+++ b/deluge/ui/web/__init__.py
@@ -0,0 +1,6 @@
+from deluge.ui.web.web import Web
+
+
+def start():
+ web = Web()
+ web.start()
diff --git a/deluge/ui/web/auth.py b/deluge/ui/web/auth.py
new file mode 100644
index 0000000..eacbbf5
--- /dev/null
+++ b/deluge/ui/web/auth.py
@@ -0,0 +1,254 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import hashlib
+import logging
+import os
+import time
+from datetime import datetime, timedelta
+from email.utils import formatdate
+
+from twisted.internet.task import LoopingCall
+
+from deluge.common import AUTH_LEVEL_ADMIN, AUTH_LEVEL_NONE
+from deluge.error import NotAuthorizedError
+from deluge.ui.web.json_api import JSONComponent, export
+
+log = logging.getLogger(__name__)
+
+
+def make_checksum(session_id):
+ checksum = 0
+ for value in [ord(char) for char in session_id]:
+ checksum += value
+ return checksum
+
+
+def get_session_id(session_id):
+ """
+ Checks a session id against its checksum
+ """
+ if not session_id:
+ return None
+
+ try:
+ checksum = int(session_id[-4:])
+ session_id = session_id[:-4]
+
+ if checksum == make_checksum(session_id):
+ return session_id
+ return None
+ except Exception as ex:
+ log.exception(ex)
+ return None
+
+
+def make_expires(timeout):
+ dt = timedelta(seconds=timeout)
+ expires = time.mktime((datetime.now() + dt).timetuple())
+ expires_str = formatdate(timeval=expires, localtime=False, usegmt=True)
+ return expires, expires_str
+
+
+class Auth(JSONComponent):
+ """
+ The component that implements authentication into the JSON interface.
+ """
+
+ def __init__(self, config):
+ super().__init__('Auth')
+ self.worker = LoopingCall(self._clean_sessions)
+ self.config = config
+
+ def start(self):
+ self.worker.start(5)
+
+ def stop(self):
+ self.worker.stop()
+
+ def _clean_sessions(self):
+ now = time.gmtime()
+ for session_id in list(self.config['sessions']):
+ session = self.config['sessions'][session_id]
+
+ if 'expires' not in session:
+ del self.config['sessions'][session_id]
+ continue
+
+ if time.gmtime(session['expires']) < now:
+ del self.config['sessions'][session_id]
+ continue
+
+ def _create_session(self, request, login='admin'):
+ """
+ Creates a new session.
+
+ :param login: the username of the user logging in, currently \
+ only for future use currently.
+ :type login: string
+ """
+ m = hashlib.sha256()
+ m.update(os.urandom(32))
+ session_id = m.hexdigest()
+
+ expires, expires_str = make_expires(self.config['session_timeout'])
+ checksum = str(make_checksum(session_id))
+
+ request.addCookie(
+ b'_session_id',
+ session_id + checksum,
+ path=request.base + b'json',
+ expires=expires_str,
+ )
+
+ log.debug('Creating session for %s', login)
+
+ if isinstance(self.config['sessions'], list):
+ self.config['sessions'] = {}
+
+ self.config['sessions'][session_id] = {
+ 'login': login,
+ 'level': AUTH_LEVEL_ADMIN,
+ 'expires': expires,
+ }
+ return True
+
+ def check_password(self, password):
+ config = self.config
+ if 'pwd_sha1' not in config.config:
+ log.debug('Failed to find config login details.')
+ return False
+
+ s = hashlib.sha1()
+ s.update(config['pwd_salt'].encode('utf8'))
+ s.update(password.encode('utf8'))
+ return s.hexdigest() == config['pwd_sha1']
+
+ def check_request(self, request, method=None, level=None):
+ """
+ Check to ensure that a request is authorised to call the specified
+ method of authentication level.
+
+ :param request: The HTTP request in question
+ :type request: twisted.web.http.Request
+ :param method: Check the specified method
+ :type method: function
+ :param level: Check the specified auth level
+ :type level: integer
+
+ :raises: Exception
+ """
+ cookie_sess_id = request.getCookie(b'_session_id')
+ if cookie_sess_id:
+ session_id = get_session_id(cookie_sess_id.decode())
+ else:
+ session_id = None
+
+ if session_id not in self.config['sessions']:
+ auth_level = AUTH_LEVEL_NONE
+ session_id = None
+ else:
+ session = self.config['sessions'][session_id]
+ auth_level = session['level']
+ expires, expires_str = make_expires(self.config['session_timeout'])
+ session['expires'] = expires
+
+ _session_id = request.getCookie(b'_session_id')
+ request.addCookie(
+ b'_session_id',
+ _session_id,
+ path=request.base + b'json',
+ expires=expires_str.encode('utf8'),
+ )
+
+ if method:
+ if not hasattr(method, '_json_export'):
+ raise Exception('Not an exported method')
+
+ method_level = getattr(method, '_json_auth_level')
+ if method_level is None:
+ raise Exception('Method has no auth level')
+
+ level = method_level
+
+ if level is None:
+ raise Exception('No level specified to check against')
+
+ request.auth_level = auth_level
+ request.session_id = session_id
+
+ if auth_level < level:
+ raise NotAuthorizedError(auth_level, level)
+
+ def _change_password(self, new_password):
+ """
+ Change the password. This is to allow the UI to change/reset a
+ password.
+
+ :param new_password: the password to change to
+ :type new_password: string
+ """
+ log.debug('Changing password')
+ salt = hashlib.sha1(os.urandom(32)).hexdigest()
+ s = hashlib.sha1(salt.encode('utf-8'))
+ s.update(new_password.encode('utf8'))
+ self.config['pwd_salt'] = salt
+ self.config['pwd_sha1'] = s.hexdigest()
+ return True
+
+ @export
+ def change_password(self, old_password, new_password):
+ """
+ Change the password.
+
+ :param old_password: the current password
+ :type old_password: string
+ :param new_password: the password to change to
+ :type new_password: string
+ """
+ if not self.check_password(old_password):
+ return False
+ return self._change_password(new_password)
+
+ @export(AUTH_LEVEL_NONE)
+ def check_session(self, session_id=None):
+ """
+ Check a session to see if it's still valid.
+
+ :returns: True if the session is valid, False if not.
+ :rtype: booleon
+ """
+ return __request__.session_id is not None
+
+ @export
+ def delete_session(self):
+ """
+ Removes a session.
+
+ :param session_id: the id for the session to remove
+ :type session_id: string
+ """
+ del self.config['sessions'][__request__.session_id]
+ return True
+
+ @export(AUTH_LEVEL_NONE)
+ def login(self, password):
+ """
+ Test a password to see if it's valid.
+
+ :param password: the password to test
+ :type password: string
+ :returns: a session id or False
+ :rtype: string or False
+ """
+ if self.check_password(password):
+ log.info('Login success (ClientIP %s)', __request__.getClientIP())
+ return self._create_session(__request__)
+ else:
+ log.error('Login failed (ClientIP %s)', __request__.getClientIP())
+ return False
diff --git a/deluge/ui/web/common.py b/deluge/ui/web/common.py
new file mode 100644
index 0000000..32c29c8
--- /dev/null
+++ b/deluge/ui/web/common.py
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import gettext
+
+from mako.template import Template as MakoTemplate
+
+from deluge.common import get_version
+
+
+def _(text):
+ text_local = gettext.gettext(text)
+ return text_local
+
+
+def escape(text):
+ """
+ Used by gettext.js template to escape any translated language strings that
+ might contain newlines or quotes as they would break the script.
+ """
+ text = text.replace("'", "\\'")
+ text = text.replace('\r\n', '\\n')
+ text = text.replace('\r', '\\n')
+ text = text.replace('\n', '\\n')
+ return text
+
+
+class Template(MakoTemplate):
+ """
+ A template that adds some built-ins to the rendering
+ """
+
+ builtins = {'_': _, 'escape': escape, 'version': get_version()}
+
+ def render(self, *args, **data):
+ data.update(self.builtins)
+ rendered = MakoTemplate.render_unicode(self, *args, **data)
+ return rendered.encode('utf-8')
diff --git a/deluge/ui/web/css/deluge.css b/deluge/ui/web/css/deluge.css
new file mode 100644
index 0000000..9460286
--- /dev/null
+++ b/deluge/ui/web/css/deluge.css
@@ -0,0 +1,578 @@
+html,
+body {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+ margin: 0;
+ padding: 0;
+ border: 0 none;
+ overflow: hidden;
+ height: 100%;
+ color: black;
+ background: white;
+}
+
+input {
+ color: Black;
+}
+
+/* remove dotted line on buttons in Firefox */
+button::-moz-focus-inner {
+ border: 0;
+}
+
+.x-deluge-main-panel {
+ background-image: url('../icons/deluge.png') !important;
+}
+
+.x-deluge-logo {
+ background-image: url('../ui_images/deluge-about.png');
+}
+
+#tbar-deluge-text * {
+ color: black !important;
+ font-weight: bold;
+}
+
+#tbar-deluge-text {
+ opacity: 1 !important;
+}
+
+.deluge-torrents td,
+.x-deluge-peers td {
+ height: 16px;
+ line-height: 16px;
+}
+
+.deluge-torrents .torrent-name,
+.x-deluge-peer,
+.x-deluge-seed {
+ padding-left: 20px;
+ background-repeat: no-repeat;
+}
+
+.deluge-torrents .deluge-torrent-progress {
+ text-align: center;
+}
+
+/* Icon classes */
+.x-deluge-all {
+ background-image: url('../icons/all.png');
+}
+.x-deluge-active {
+ background-image: url('../icons/active.png');
+}
+.x-deluge-downloading,
+.x-btn .x-deluge-downloading,
+.x-deluge-peer {
+ background-image: url('../icons/downloading.png');
+}
+.x-deluge-seeding,
+.x-btn .x-deluge-seeding,
+.deluge-torrents .seeding,
+.x-deluge-seed {
+ background-image: url('../icons/seeding.png');
+}
+.x-deluge-queued,
+.x-btn .x-deluge-queued,
+.deluge-torrents .queued {
+ background-image: url('../icons/queued.png');
+}
+.x-deluge-paused,
+.x-btn .x-deluge-paused,
+.deluge-torrents .paused {
+ background-image: url('../icons/inactive.png');
+}
+.x-deluge-error,
+.deluge-torrents .error {
+ background-image: url('../icons/alert.png');
+}
+.x-deluge-checking,
+.deluge-torrents .checking {
+ background-image: url('../icons/checking.png');
+}
+.x-deluge-dht,
+.x-btn .x-deluge-dht {
+ background-image: url('../icons/dht.png');
+}
+.x-deluge-preferences,
+.x-btn .x-deluge-preferences {
+ background-image: url('../icons/preferences.png');
+}
+.x-deluge-connections,
+.x-btn .x-deluge-connections {
+ background-image: url('../icons/connections.png');
+}
+.x-deluge-connection-manager,
+.x-btn .x-deluge-connection-manager {
+ background-image: url('../icons/connection_manager.png');
+}
+.x-deluge-traffic,
+.x-btn .x-deluge-traffic {
+ background-image: url('../icons/traffic.png');
+}
+.x-deluge-edit-trackers,
+.x-btn .x-deluge-edit-trackers {
+ background-image: url('../icons/edit_trackers.png');
+}
+.x-deluge-freespace,
+.x-btn .x-deluge-freespace {
+ background-image: url('../icons/drive.png');
+}
+
+.x-deluge-install-plugin,
+.x-btn .x-deluge-install-plugin {
+ background-image: url('../icons/install_plugin.png');
+}
+.x-deluge-find-more,
+.x-btn .x-deluge-find-more {
+ background-image: url('../icons/find_more.png');
+}
+
+/* Torrent Details */
+#torrentDetails dl,
+#torrentDetails dl.singleline {
+ float: left;
+ min-height: 120px;
+}
+
+#torrentDetails dl dt,
+dl.singleline dt {
+ float: left;
+ font-weight: bold;
+ height: 19px;
+}
+
+#torrentDetails dl dd,
+dl.singleline dd {
+ margin-left: 100px;
+ width: 140px;
+ height: 19px;
+}
+
+dl.singleline {
+ float: left;
+}
+
+dl.singleline dt {
+ width: 80px;
+}
+
+dl.singleline dd {
+ margin-left: 85px;
+ width: auto;
+}
+
+.x-deluge-plugins {
+ background: White;
+}
+
+/* Torrent Details - Status Tab */
+.x-deluge-status-progressbar {
+ margin: 5px;
+}
+
+.x-deluge-status {
+ margin: 10px;
+}
+
+.x-deluge-status dd.downloaded,
+.x-deluge-status dd.uploaded,
+.x-deluge-status dd.share,
+.x-deluge-status dd.announce,
+.x-deluge-status dd.tracker_status {
+ width: 200px;
+ margin-left: 100px;
+}
+
+.x-deluge-status dd.downspeed,
+.x-deluge-status dd.upspeed,
+.x-deluge-status dd.eta,
+.x-deluge-status dd.pieces {
+ margin-left: 100px;
+}
+
+.x-deluge-status dd.active_time,
+.x-deluge-status dd.seeding_time,
+.x-deluge-status dd.seed_rank,
+.x-deluge-status dd.time_added {
+ width: 100px;
+}
+.x-deluge-status dd.last_seen_complete {
+ width: 100px;
+}
+
+/* Torrent Details - Details Tab */
+#torrentDetails dd.torrent_name,
+#torrentDetails dd.status,
+#torrentDetails dd.tracker,
+#torrentDetails dd.path,
+#torrentDetails dd.comment {
+ width: auto;
+}
+
+.detailsPanel .x-panel-header {
+ height: 0;
+ padding: 0;
+ border: 0;
+}
+
+.detailsPanel .x-tool {
+ height: 15px;
+ z-index: 1;
+ position: fixed;
+ right: 0;
+ margin: 5px 10px;
+}
+
+/* Login Window */
+.x-deluge-login-window-icon {
+ background: url('../icons/login.png') no-repeat 2px;
+}
+
+/* Remove Window */
+.x-deluge-remove-window-icon {
+ background: url('../icons/remove.png') no-repeat 2px;
+}
+
+/* Add Window */
+.x-deluge-add-window-icon {
+ background: url('../icons/add.png') no-repeat 2px;
+}
+
+.x-deluge-add-torrent-name {
+ line-height: 20px;
+}
+
+.x-deluge-add-torrent-name-loading {
+ padding-left: 20px;
+ line-height: 20px;
+ background: url('/themes/default/tree/loading.gif') no-repeat 2px;
+}
+
+/* Add Url Window */
+.x-deluge-add-file,
+.x-btn .x-deluge-add-file {
+ background: url('../icons/add_file.png') no-repeat 2px;
+}
+
+.x-deluge-add-url-window-icon {
+ background: url('../icons/add_url.png') no-repeat 2px;
+}
+
+/* Connect Window */
+.x-deluge-connect-window-icon {
+ background: url('../icons/connection_manager.png') no-repeat 2px;
+}
+
+/* Statusbar */
+.x-deluge-statusbar {
+ background: no-repeat 2px !important;
+ padding-left: 20px !important;
+}
+
+.x-not-connected {
+ background-image: url('../icons/error.png') !important;
+}
+
+.x-connected {
+ background-image: none !important;
+}
+
+/* Styles for renderered progress bars */
+.x-progress-renderered .x-progress-bar {
+ height: 16px;
+}
+
+.x-progress-renderered .x-progress-bar .x-progress-text {
+ margin-top: -1px;
+ height: 18px;
+}
+
+/* Adjust progressbar for torrent files tree */
+.x-tree .x-progress-wrap {
+ width: 100px;
+}
+
+.x-tree .x-progress-renderered .x-progress-inner {
+ height: 12px;
+}
+
+.x-tree .x-progress-renderered .x-progress-bar {
+ height: 12px;
+}
+
+.x-tree .x-progress-renderered .x-progress-text {
+ vertical-align: top;
+ height: 12px;
+ font-size: 11px;
+ font-weight: normal;
+ padding: 0px;
+ margin-top: 0px;
+}
+
+.x-tree .x-progress-renderered .x-progress-bar .x-progress-text {
+ margin-top: 0px;
+}
+
+/* Files TreeGrid */
+.x-treegrid-root-table {
+ border-right: 1px solid;
+}
+
+.x-treegrid-root-node {
+ overflow: auto;
+}
+
+.x-treegrid-hd-hidden {
+ visibility: hidden;
+ border: 0;
+ width: 0;
+}
+
+.x-treegrid-col {
+ border-bottom: 1px solid;
+ height: 20px;
+ overflow: hidden;
+ vertical-align: top;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.x-treegrid-text {
+ padding-left: 4px;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+}
+
+.x-treegrid-resizer {
+ border-left: 1px solid;
+ border-right: 1px solid;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+
+.x-treegrid-header-inner {
+ overflow: hidden;
+}
+
+.x-treegrid-root-table,
+.x-treegrid-col {
+ border-color: #ededed;
+}
+
+.x-treegrid-resizer {
+ border-left-color: #555;
+ border-right-color: #555;
+}
+
+/* Options Tab Styles */
+.x-deluge-options-label {
+ margin-right: 10px;
+}
+
+.x-deluge-indent-checkbox {
+ padding-left: 10px;
+}
+
+/* Sidebar styles */
+#sidebar .x-grid3-col-filter {
+ height: 16px;
+ line-height: 16px;
+ padding: 2px;
+ cursor: pointer;
+}
+
+#sidebar .x-deluge-filter {
+ background-repeat: no-repeat;
+ background-size: contain;
+ background-position: left;
+ padding-left: 20px;
+ line-height: 16px;
+}
+
+#sidebar .x-list-selected em {
+ font-weight: bold;
+}
+
+/* MessageBox icon styles */
+.x-deluge-icon-warning {
+ background: url('../icons/warning.png') no-repeat 2px;
+}
+
+.x-deluge-icon-error {
+ background: url('../icons/error.png') no-repeat 2px;
+}
+
+.x-tree-node-leaf .x-deluge-file {
+ background-image: url('../icons/document.png');
+}
+
+.x-deluge-add-file-checkbox {
+ margin-top: 2px;
+}
+
+/* Filepriority styles */
+.x-no-download,
+.x-low-download,
+.x-normal-download,
+.x-high-download,
+.x-mixed-download {
+ padding-left: 20px;
+ background-repeat: no-repeat;
+ line-height: 16px;
+}
+
+.x-no-download {
+ background-image: url(../icons/no_download.png);
+}
+
+.x-low-download {
+ background-image: url(../icons/low.png);
+}
+
+.x-normal-download {
+ background-image: url(../icons/normal.png);
+}
+
+.x-high-download {
+ background-image: url(../icons/high.png);
+}
+
+.x-mixed-download {
+ /*background-image: url(../icons/mixed.png);*/
+}
+
+/**
+ * Deluge Default Icon Set
+ * n.b. this needs to be forked out at some point
+ */
+
+.icon-create {
+ background-image: url('../icons/create.png') !important;
+}
+
+.icon-add {
+ background-image: url('../icons/add.png') !important;
+}
+
+.icon-add-url {
+ background-image: url('../icons/add_url.png') !important;
+}
+
+.icon-magnet-add {
+ background-image: url('../icons/magnet_add.png') !important;
+}
+
+.icon-magnet-copy {
+ background-image: url('../icons/magnet_copy.png') !important;
+}
+
+.icon-magnet {
+ background-image: url('../icons/magnet.png') !important;
+}
+
+.icon-pause {
+ background-image: url('../icons/pause.png') !important;
+}
+
+.icon-resume {
+ background-image: url('../icons/start.png') !important;
+}
+
+.icon-options {
+ background-image: url('../icons/preferences.png') !important;
+}
+
+.icon-queue {
+ background-image: url('../icons/queue.png') !important;
+}
+
+.icon-top {
+ background-image: url('../icons/top.png') !important;
+}
+
+.icon-up {
+ background-image: url('../icons/up.png') !important;
+}
+
+.icon-down {
+ background-image: url('../icons/down.png') !important;
+}
+
+.icon-bottom {
+ background-image: url('../icons/bottom.png') !important;
+}
+
+.icon-update-tracker {
+ background-image: url('../icons/update.png') !important;
+}
+
+.icon-edit-trackers,
+.icon-edit {
+ background-image: url('../icons/edit_trackers.png') !important;
+}
+
+.icon-remove {
+ background-image: url('../icons/remove.png') !important;
+}
+
+.icon-recheck {
+ background-image: url('../icons/recheck.png') !important;
+}
+
+.icon-move {
+ background-image: url('../icons/move.png') !important;
+}
+
+.icon-help {
+ background-image: url('../icons/help.png') !important;
+}
+
+.icon-logout {
+ background-image: url('../icons/logout.png') !important;
+}
+
+.icon-back {
+ background-image: url('../icons/back.png') !important;
+}
+
+.icon-forward {
+ background-image: url('../icons/forward.png') !important;
+}
+
+.icon-home {
+ background-image: url('../icons/home.png') !important;
+}
+
+.icon-ok {
+ background-image: url('../icons/ok.png') !important;
+}
+
+.icon-error {
+ background-image: url('../icons/error.png') !important;
+}
+
+.icon-upload-slots {
+ background-image: url('../icons/upload_slots.png') !important;
+}
+
+.icon-expand-all {
+ background-image: url('../icons/expand_all.png') !important;
+}
+
+.icon-do-not-download {
+ background-image: url('../icons/no_download.png') !important;
+}
+
+.icon-low {
+ background-image: url('../icons/low.png') !important;
+}
+
+.icon-normal {
+ background-image: url('../icons/normal.png') !important;
+}
+
+.icon-high {
+ background-image: url('../icons/high.png') !important;
+}
diff --git a/deluge/ui/web/css/ext-all-notheme.css b/deluge/ui/web/css/ext-all-notheme.css
new file mode 100644
index 0000000..40bac82
--- /dev/null
+++ b/deluge/ui/web/css/ext-all-notheme.css
@@ -0,0 +1,5349 @@
+/*
+This file is part of Ext JS 3.4
+
+Copyright (c) 2011-2013 Sencha Inc
+
+Contact: http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2013-04-03 15:07:25
+*/
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}
+
+.ext-forced-border-box, .ext-forced-border-box * {
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+}
+.ext-el-mask {
+ z-index: 100;
+ position: absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity: .50;
+ filter: alpha(opacity=50);
+ width: 100%;
+ height: 100%;
+ zoom: 1;
+}
+
+.ext-el-mask-msg {
+ z-index: 20001;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border:1px solid;
+ background:repeat-x 0 -16px;
+ padding:2px;
+}
+
+.ext-el-mask-msg div {
+ padding:5px 10px 5px 10px;
+ border:1px solid;
+ cursor:wait;
+}
+
+.ext-shim {
+ position:absolute;
+ visibility:hidden;
+ left:0;
+ top:0;
+ overflow:hidden;
+}
+
+.ext-ie .ext-shim {
+ filter: alpha(opacity=0);
+}
+
+.ext-ie6 .ext-shim {
+ margin-left: 5px;
+ margin-top: 3px;
+}
+
+.x-mask-loading div {
+ padding:5px 10px 5px 25px;
+ background:no-repeat 5px 5px;
+ line-height:16px;
+}
+
+/* class for hiding elements without using display:none */
+.x-hidden, .x-hide-offsets {
+ position:absolute !important;
+ left:-10000px;
+ top:-10000px;
+ visibility:hidden;
+}
+
+.x-hide-display {
+ display:none !important;
+}
+
+.x-hide-nosize,
+.x-hide-nosize * /* Emulate display:none for children */
+ {
+ height:0px!important;
+ width:0px!important;
+ visibility:hidden!important;
+ border:none!important;
+ zoom:1;
+}
+
+.x-hide-visibility {
+ visibility:hidden !important;
+}
+
+.x-masked {
+ overflow: hidden !important;
+}
+.x-masked-relative {
+ position: relative !important;
+}
+
+.x-masked select, .x-masked object, .x-masked embed {
+ visibility: hidden;
+}
+
+.x-layer {
+ visibility: hidden;
+}
+
+.x-unselectable, .x-unselectable * {
+ user-select: none;
+ -o-user-select: none;
+ -ms-user-select: none;
+ -moz-user-select: -moz-none;
+ -webkit-user-select: none;
+ cursor:default;
+}
+
+.x-repaint {
+ zoom: 1;
+ background-color: transparent;
+ -moz-outline: none;
+ outline: none;
+}
+
+.x-item-disabled {
+ cursor: default;
+ opacity: .6;
+ -moz-opacity: .6;
+ filter: alpha(opacity=60);
+}
+
+.x-item-disabled * {
+ cursor: default !important;
+}
+
+.x-form-radio-group .x-item-disabled {
+ filter: none;
+}
+
+.x-splitbar-proxy {
+ position: absolute;
+ visibility: hidden;
+ z-index: 20001;
+ zoom: 1;
+ line-height: 1px;
+ font-size: 1px;
+ overflow: hidden;
+}
+
+.x-splitbar-h, .x-splitbar-proxy-h {
+ cursor: e-resize;
+ cursor: col-resize;
+}
+
+.x-splitbar-v, .x-splitbar-proxy-v {
+ cursor: s-resize;
+ cursor: row-resize;
+}
+
+.x-color-palette {
+ width: 150px;
+ height: 92px;
+ cursor: pointer;
+}
+
+.x-color-palette a {
+ border: 1px solid;
+ float: left;
+ padding: 2px;
+ text-decoration: none;
+ -moz-outline: 0 none;
+ outline: 0 none;
+ cursor: pointer;
+}
+
+.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel {
+ border: 1px solid;
+}
+
+.x-color-palette em {
+ display: block;
+ border: 1px solid;
+}
+
+.x-color-palette em span {
+ cursor: pointer;
+ display: block;
+ height: 10px;
+ line-height: 10px;
+ width: 10px;
+}
+
+.x-ie-shadow {
+ display: none;
+ position: absolute;
+ overflow: hidden;
+ left:0;
+ top:0;
+ zoom:1;
+}
+
+.x-shadow {
+ display: none;
+ position: absolute;
+ overflow: hidden;
+ left:0;
+ top:0;
+}
+
+.x-shadow * {
+ overflow: hidden;
+}
+
+.x-shadow * {
+ padding: 0;
+ border: 0;
+ margin: 0;
+ clear: none;
+ zoom: 1;
+}
+
+/* top bottom */
+.x-shadow .xstc, .x-shadow .xsbc {
+ height: 6px;
+ float: left;
+}
+
+/* corners */
+.x-shadow .xstl, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbr {
+ width: 6px;
+ height: 6px;
+ float: left;
+}
+
+/* sides */
+.x-shadow .xsc {
+ width: 100%;
+}
+
+.x-shadow .xsml, .x-shadow .xsmr {
+ width: 6px;
+ float: left;
+ height: 100%;
+}
+
+.x-shadow .xsmc {
+ float: left;
+ height: 100%;
+ background-color: transparent;
+}
+
+.x-shadow .xst, .x-shadow .xsb {
+ height: 6px;
+ overflow: hidden;
+ width: 100%;
+}
+
+.x-shadow .xsml {
+ background: transparent repeat-y 0 0;
+}
+
+.x-shadow .xsmr {
+ background: transparent repeat-y -6px 0;
+}
+
+.x-shadow .xstl {
+ background: transparent no-repeat 0 0;
+}
+
+.x-shadow .xstc {
+ background: transparent repeat-x 0 -30px;
+}
+
+.x-shadow .xstr {
+ background: transparent repeat-x 0 -18px;
+}
+
+.x-shadow .xsbl {
+ background: transparent no-repeat 0 -12px;
+}
+
+.x-shadow .xsbc {
+ background: transparent repeat-x 0 -36px;
+}
+
+.x-shadow .xsbr {
+ background: transparent repeat-x 0 -6px;
+}
+
+.loading-indicator {
+ background: no-repeat left;
+ padding-left: 20px;
+ line-height: 16px;
+ margin: 3px;
+}
+
+.x-text-resize {
+ position: absolute;
+ left: -1000px;
+ top: -1000px;
+ visibility: hidden;
+ zoom: 1;
+}
+
+.x-drag-overlay {
+ width: 100%;
+ height: 100%;
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 0;
+ background-image:url(../images/default/s.gif);
+ z-index: 20000;
+}
+
+.x-clear {
+ clear:both;
+ height:0;
+ overflow:hidden;
+ line-height:0;
+ font-size:0;
+}
+
+.x-spotlight {
+ z-index: 8999;
+ position: absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity: .50;
+ filter: alpha(opacity=50);
+ width:0;
+ height:0;
+ zoom: 1;
+}
+
+#x-history-frame {
+ position:absolute;
+ top:-1px;
+ left:0;
+ width:1px;
+ height:1px;
+ visibility:hidden;
+}
+
+#x-history-field {
+ position:absolute;
+ top:0;
+ left:-1px;
+ width:1px;
+ height:1px;
+ visibility:hidden;
+}
+.x-resizable-handle {
+ position:absolute;
+ z-index:100;
+ /* ie needs these */
+ font-size:1px;
+ line-height:6px;
+ overflow:hidden;
+ filter:alpha(opacity=0);
+ opacity:0;
+ zoom:1;
+}
+
+.x-resizable-handle-east{
+ width:6px;
+ cursor:e-resize;
+ right:0;
+ top:0;
+ height:100%;
+}
+
+.ext-ie .x-resizable-handle-east {
+ margin-right:-1px; /*IE rounding error*/
+}
+
+.x-resizable-handle-south{
+ width:100%;
+ cursor:s-resize;
+ left:0;
+ bottom:0;
+ height:6px;
+}
+
+.ext-ie .x-resizable-handle-south {
+ margin-bottom:-1px; /*IE rounding error*/
+}
+
+.x-resizable-handle-west{
+ width:6px;
+ cursor:w-resize;
+ left:0;
+ top:0;
+ height:100%;
+}
+
+.x-resizable-handle-north{
+ width:100%;
+ cursor:n-resize;
+ left:0;
+ top:0;
+ height:6px;
+}
+
+.x-resizable-handle-southeast{
+ width:6px;
+ cursor:se-resize;
+ right:0;
+ bottom:0;
+ height:6px;
+ z-index:101;
+}
+
+.x-resizable-handle-northwest{
+ width:6px;
+ cursor:nw-resize;
+ left:0;
+ top:0;
+ height:6px;
+ z-index:101;
+}
+
+.x-resizable-handle-northeast{
+ width:6px;
+ cursor:ne-resize;
+ right:0;
+ top:0;
+ height:6px;
+ z-index:101;
+}
+
+.x-resizable-handle-southwest{
+ width:6px;
+ cursor:sw-resize;
+ left:0;
+ bottom:0;
+ height:6px;
+ z-index:101;
+}
+
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle{
+ filter:alpha(opacity=100);
+ opacity:1;
+}
+
+.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west
+{
+ background-position: left;
+}
+
+.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north
+{
+ background-position: top;
+}
+
+.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{
+ background-position: top left;
+}
+
+.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{
+ background-position:bottom right;
+}
+
+.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{
+ background-position: bottom left;
+}
+
+.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{
+ background-position: top right;
+}
+
+.x-resizable-proxy{
+ border: 1px dashed;
+ position:absolute;
+ overflow:hidden;
+ display:none;
+ left:0;
+ top:0;
+ z-index:50000;
+}
+
+.x-resizable-overlay{
+ width:100%;
+ height:100%;
+ display:none;
+ position:absolute;
+ left:0;
+ top:0;
+ z-index:200000;
+ -moz-opacity: 0;
+ opacity:0;
+ filter: alpha(opacity=0);
+}
+.x-tab-panel {
+ overflow:hidden;
+}
+
+.x-tab-panel-header, .x-tab-panel-footer {
+ border: 1px solid;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tab-panel-header {
+ border: 1px solid;
+ padding-bottom: 2px;
+}
+
+.x-tab-panel-footer {
+ border: 1px solid;
+ padding-top: 2px;
+}
+
+.x-tab-strip-wrap {
+ width:100%;
+ overflow:hidden;
+ position:relative;
+ zoom:1;
+}
+
+ul.x-tab-strip {
+ display:block;
+ width:5000px;
+ zoom:1;
+}
+
+ul.x-tab-strip-top{
+ padding-top: 1px;
+ background: repeat-x bottom;
+ border-bottom: 1px solid;
+}
+
+ul.x-tab-strip-bottom{
+ padding-bottom: 1px;
+ background: repeat-x top;
+ border-top: 1px solid;
+ border-bottom: 0 none;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-top {
+ background:transparent !important;
+ padding-top:0 !important;
+}
+
+.x-tab-panel-header-plain {
+ background:transparent !important;
+ border-width:0 !important;
+ padding-bottom:0 !important;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer,
+.x-tab-panel-footer-plain .x-tab-strip-spacer {
+ border:1px solid;
+ height:2px;
+ font-size:1px;
+ line-height:1px;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer {
+ border-top: 0 none;
+}
+
+.x-tab-panel-footer-plain .x-tab-strip-spacer {
+ border-bottom: 0 none;
+}
+
+.x-tab-panel-footer-plain .x-tab-strip-bottom {
+ background:transparent !important;
+ padding-bottom:0 !important;
+}
+
+.x-tab-panel-footer-plain {
+ background:transparent !important;
+ border-width:0 !important;
+ padding-top:0 !important;
+}
+
+.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer,
+.ext-border-box .x-tab-panel-footer-plain .x-tab-strip-spacer {
+ height:3px;
+}
+
+ul.x-tab-strip li {
+ float:left;
+ margin-left:2px;
+}
+
+ul.x-tab-strip li.x-tab-edge {
+ float:left;
+ margin:0 !important;
+ padding:0 !important;
+ border:0 none !important;
+ font-size:1px !important;
+ line-height:1px !important;
+ overflow:hidden;
+ zoom:1;
+ background:transparent !important;
+ width:1px;
+}
+
+.x-tab-strip a, .x-tab-strip span, .x-tab-strip em {
+ display:block;
+}
+
+.x-tab-strip a {
+ text-decoration:none !important;
+ -moz-outline: none;
+ outline: none;
+ cursor:pointer;
+}
+
+.x-tab-strip-inner {
+ overflow:hidden;
+ text-overflow: ellipsis;
+}
+
+.x-tab-strip span.x-tab-strip-text {
+ white-space: nowrap;
+ cursor:pointer;
+ padding:4px 0;
+}
+
+.x-tab-strip-top .x-tab-with-icon .x-tab-right {
+ padding-left:6px;
+}
+
+.x-tab-strip .x-tab-with-icon span.x-tab-strip-text {
+ padding-left:20px;
+ background-position: 0 3px;
+ background-repeat: no-repeat;
+}
+
+.x-tab-strip-active, .x-tab-strip-active a.x-tab-right {
+ cursor:default;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+ cursor:default;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+ cursor:default;
+}
+
+.x-tab-panel-body {
+ overflow:hidden;
+}
+
+.x-tab-panel-bwrap {
+ overflow:hidden;
+}
+
+.ext-ie .x-tab-strip .x-tab-right {
+ position:relative;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-right {
+ margin-bottom:-1px;
+}
+
+/*
+ * For IE8/9 in quirks mode
+ */
+.ext-ie8 .x-tab-strip li {
+ position: relative;
+}
+.ext-border-box .ext-ie8 .x-tab-strip-top .x-tab-right, .ext-border-box .ext-ie9 .x-tab-strip-top .x-tab-right {
+ top: 1px;
+}
+.ext-ie8 .x-tab-strip-top, .ext-ie9 .x-tab-strip-top {
+ padding-top: 1px;
+}
+.ext-border-box .ext-ie8 .x-tab-strip-top, .ext-border-box .ext-ie9 .x-tab-strip-top {
+ padding-top: 0;
+}
+.ext-ie8 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close, .ext-ie9 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ top:3px;
+}
+.ext-border-box .ext-ie8 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close,
+.ext-border-box .ext-ie9 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ top:4px;
+}
+.ext-ie8 .x-tab-strip-bottom .x-tab-right, .ext-ie9 .x-tab-strip-bottom .x-tab-right{
+ top:0;
+}
+
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text {
+ padding-bottom:5px;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ margin-top:-1px;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text {
+ padding-top:5px;
+}
+
+.x-tab-strip-top .x-tab-right {
+ background: transparent no-repeat 0 -51px;
+ padding-left:10px;
+}
+
+.x-tab-strip-top .x-tab-left {
+ background: transparent no-repeat right -351px;
+ padding-right:10px;
+}
+
+.x-tab-strip-top .x-tab-strip-inner {
+ background: transparent repeat-x 0 -201px;
+}
+
+.x-tab-strip-top .x-tab-strip-over .x-tab-right {
+ background-position:0 -101px;
+}
+
+.x-tab-strip-top .x-tab-strip-over .x-tab-left {
+ background-position:right -401px;
+}
+
+.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner {
+ background-position:0 -251px;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-right {
+ background-position: 0 0;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-left {
+ background-position: right -301px;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner {
+ background-position: 0 -151px;
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ background: no-repeat bottom right;
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background: no-repeat bottom left;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background: no-repeat bottom right;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background: no-repeat bottom left;
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ margin-right: 3px;
+ padding:0 10px;
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ padding:0;
+}
+
+.x-tab-strip .x-tab-strip-close {
+ display:none;
+}
+
+.x-tab-strip-closable {
+ position:relative;
+}
+
+.x-tab-strip-closable .x-tab-left {
+ padding-right:19px;
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ opacity:.6;
+ -moz-opacity:.6;
+ background-repeat:no-repeat;
+ display:block;
+ width:11px;
+ height:11px;
+ position:absolute;
+ top:3px;
+ right:3px;
+ cursor:pointer;
+ z-index:2;
+}
+
+.x-tab-strip .x-tab-strip-active a.x-tab-strip-close {
+ opacity:.8;
+ -moz-opacity:.8;
+}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
+ opacity:1;
+ -moz-opacity:1;
+}
+
+.x-tab-panel-body {
+ border: 1px solid;
+}
+
+.x-tab-panel-body-top {
+ border-top: 0 none;
+}
+
+.x-tab-panel-body-bottom {
+ border-bottom: 0 none;
+}
+
+.x-tab-scroller-left {
+ background: transparent no-repeat -18px 0;
+ border-bottom: 1px solid;
+ width:18px;
+ position:absolute;
+ left:0;
+ top:0;
+ z-index:10;
+ cursor:pointer;
+}
+.x-tab-scroller-left-over {
+ background-position: 0 0;
+}
+
+.x-tab-scroller-left-disabled {
+ background-position: -18px 0;
+ opacity:.5;
+ -moz-opacity:.5;
+ filter:alpha(opacity=50);
+ cursor:default;
+}
+
+.x-tab-scroller-right {
+ background: transparent no-repeat 0 0;
+ border-bottom: 1px solid;
+ width:18px;
+ position:absolute;
+ right:0;
+ top:0;
+ z-index:10;
+ cursor:pointer;
+}
+
+.x-tab-scroller-right-over {
+ background-position: -18px 0;
+}
+
+.x-tab-scroller-right-disabled {
+ background-position: 0 0;
+ opacity:.5;
+ -moz-opacity:.5;
+ filter:alpha(opacity=50);
+ cursor:default;
+}
+
+.x-tab-scrolling-bottom .x-tab-scroller-left, .x-tab-scrolling-bottom .x-tab-scroller-right{
+ margin-top: 1px;
+}
+
+.x-tab-scrolling .x-tab-strip-wrap {
+ margin-left:18px;
+ margin-right:18px;
+}
+
+.x-tab-scrolling {
+ position:relative;
+}
+
+.x-tab-panel-bbar .x-toolbar {
+ border:1px solid;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-tab-panel-tbar .x-toolbar {
+ border:1px solid;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}/* all fields */
+.x-form-field{
+ margin: 0 0 0 0;
+}
+
+.ext-webkit *:focus{
+ outline: none !important;
+}
+
+/* ---- text fields ---- */
+.x-form-text, textarea.x-form-field{
+ padding:1px 3px;
+ background:repeat-x 0 0;
+ border:1px solid;
+}
+
+textarea.x-form-field {
+ padding:2px 3px;
+}
+
+.x-form-text, .ext-ie .x-form-file {
+ height:22px;
+ line-height:18px;
+ vertical-align:middle;
+}
+
+.ext-ie6 .x-form-text, .ext-ie7 .x-form-text {
+ margin:-1px 0; /* ie bogus margin bug */
+ height:22px; /* ie quirks */
+ line-height:18px;
+}
+
+.x-quirks .ext-ie9 .x-form-text {
+ height: 22px;
+ padding-top: 3px;
+ padding-bottom: 0px;
+}
+
+/* Ugly hacks for the bogus 1px margin bug in IE9 quirks */
+.x-quirks .ext-ie9 .x-input-wrapper .x-form-text,
+.x-quirks .ext-ie9 .x-form-field-trigger-wrap .x-form-text {
+ margin-top: -1px;
+ margin-bottom: -1px;
+}
+.x-quirks .ext-ie9 .x-input-wrapper .x-form-element {
+ margin-bottom: -1px;
+}
+
+.ext-ie6 .x-form-field-wrap .x-form-file-btn, .ext-ie7 .x-form-field-wrap .x-form-file-btn {
+ top: -1px; /* because of all these margin hacks, these buttons are off by one pixel in IE6,7 */
+}
+
+.ext-ie6 textarea.x-form-field, .ext-ie7 textarea.x-form-field {
+ margin:-1px 0; /* ie bogus margin bug */
+}
+
+.ext-strict .x-form-text {
+ height:18px;
+}
+
+.ext-safari.ext-mac textarea.x-form-field {
+ margin-bottom:-2px; /* another bogus margin bug, safari/mac only */
+}
+
+/*
+.ext-strict .ext-ie8 .x-form-text, .ext-strict .ext-ie8 textarea.x-form-field {
+ margin-bottom: 1px;
+}
+*/
+
+.ext-gecko .x-form-text , .ext-ie8 .x-form-text {
+ padding-top:2px; /* FF won't center the text vertically */
+ padding-bottom:0;
+}
+
+.ext-ie6 .x-form-composite .x-form-text.x-box-item, .ext-ie7 .x-form-composite .x-form-text.x-box-item {
+ margin: 0 !important; /* clear ie bogus margin bug fix */
+}
+
+textarea {
+ resize: none; /* Disable browser resizable textarea */
+}
+
+/* select boxes */
+.x-form-select-one {
+ height:20px;
+ line-height:18px;
+ vertical-align:middle;
+ border: 1px solid;
+}
+
+/* multi select boxes */
+
+/* --- TODO --- */
+
+/* 2.0.2 style */
+.x-form-check-wrap {
+ line-height:18px;
+ height: auto;
+}
+
+.ext-ie .x-form-check-wrap input {
+ width:15px;
+ height:15px;
+}
+
+.x-form-check-wrap input{
+ vertical-align: bottom;
+}
+
+.x-editor .x-form-check-wrap {
+ padding:3px;
+}
+
+.x-editor .x-form-checkbox {
+ height:13px;
+}
+
+.x-form-check-group-label {
+ border-bottom: 1px solid;
+ margin-bottom: 5px;
+ padding-left: 3px !important;
+ float: none !important;
+}
+
+/* wrapped fields and triggers */
+.x-form-field-wrap .x-form-trigger{
+ width:17px;
+ height:21px;
+ border:0;
+ background:transparent no-repeat 0 0;
+ cursor:pointer;
+ border-bottom: 1px solid;
+ position:absolute;
+ top:0;
+}
+
+.x-form-field-wrap .x-form-date-trigger, .x-form-field-wrap .x-form-clear-trigger, .x-form-field-wrap .x-form-search-trigger{
+ cursor:pointer;
+}
+
+.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{
+ position:static;
+ top:auto;
+ vertical-align:top;
+}
+
+.x-form-field-wrap {
+ position:relative;
+ left:0;top:0;
+ text-align: left;
+ zoom:1;
+ white-space: nowrap;
+}
+
+.ext-strict .ext-ie8 .x-toolbar-cell .x-form-field-trigger-wrap .x-form-trigger {
+ right: 0; /* IE8 Strict mode trigger bug */
+}
+
+.x-form-field-wrap .x-form-trigger-over{
+ background-position:-17px 0;
+}
+
+.x-form-field-wrap .x-form-trigger-click{
+ background-position:-34px 0;
+}
+
+.x-trigger-wrap-focus .x-form-trigger{
+ background-position:-51px 0;
+}
+
+.x-trigger-wrap-focus .x-form-trigger-over{
+ background-position:-68px 0;
+}
+
+.x-trigger-wrap-focus .x-form-trigger-click{
+ background-position:-85px 0;
+}
+
+.x-trigger-wrap-focus .x-form-trigger{
+ border-bottom: 1px solid;
+}
+
+.x-item-disabled .x-form-trigger-over{
+ background-position:0 0 !important;
+ border-bottom: 1px solid;
+}
+
+.x-item-disabled .x-form-trigger-click{
+ background-position:0 0 !important;
+ border-bottom: 1px solid;
+}
+
+.x-trigger-noedit{
+ cursor:pointer;
+}
+
+/* field focus style */
+.x-form-focus, textarea.x-form-focus{
+ border: 1px solid;
+}
+
+/* invalid fields */
+.x-form-invalid, textarea.x-form-invalid{
+ background:repeat-x bottom;
+ border: 1px solid;
+}
+
+.x-form-inner-invalid, textarea.x-form-inner-invalid{
+ background:repeat-x bottom;
+}
+
+/* editors */
+.x-editor {
+ visibility:hidden;
+ padding:0;
+ margin:0;
+}
+
+.x-form-grow-sizer {
+ left: -10000px;
+ padding: 8px 3px;
+ position: absolute;
+ visibility:hidden;
+ top: -10000px;
+ white-space: pre-wrap;
+ white-space: -moz-pre-wrap;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ word-wrap: break-word;
+ zoom:1;
+}
+
+.x-form-grow-sizer p {
+ margin:0 !important;
+ border:0 none !important;
+ padding:0 !important;
+}
+
+/* Form Items CSS */
+
+.x-form-item {
+ display:block;
+ margin-bottom:4px;
+ zoom:1;
+}
+
+.x-form-item label.x-form-item-label {
+ display:block;
+ float:left;
+ width:100px;
+ padding:3px;
+ padding-left:0;
+ clear:left;
+ z-index:2;
+ position:relative;
+}
+
+.x-form-element {
+ padding-left:105px;
+ position:relative;
+}
+
+.x-form-invalid-msg {
+ padding:2px;
+ padding-left:18px;
+ background: transparent no-repeat 0 2px;
+ line-height:16px;
+ width:200px;
+}
+
+.x-form-label-left label.x-form-item-label {
+ text-align:left;
+}
+
+.x-form-label-right label.x-form-item-label {
+ text-align:right;
+}
+
+.x-form-label-top .x-form-item label.x-form-item-label {
+ width:auto;
+ float:none;
+ clear:none;
+ display:inline;
+ margin-bottom:4px;
+ position:static;
+}
+
+.x-form-label-top .x-form-element {
+ padding-left:0;
+ padding-top:4px;
+}
+
+.x-form-label-top .x-form-item {
+ padding-bottom:4px;
+}
+
+/* Editor small font for grid, toolbar and tree */
+.x-small-editor .x-form-text {
+ height:20px;
+ line-height:16px;
+ vertical-align:middle;
+}
+
+.ext-ie6 .x-small-editor .x-form-text, .ext-ie7 .x-small-editor .x-form-text {
+ margin-top:-1px !important; /* ie bogus margin bug */
+ margin-bottom:-1px !important;
+ height:20px !important; /* ie quirks */
+ line-height:16px !important;
+}
+
+.ext-strict .x-small-editor .x-form-text {
+ height:16px !important;
+}
+
+.ext-ie6 .x-small-editor .x-form-text, .ext-ie7 .x-small-editor .x-form-text {
+ height:20px;
+ line-height:16px;
+}
+
+.ext-border-box .x-small-editor .x-form-text {
+ height:20px;
+}
+
+.x-small-editor .x-form-select-one {
+ height:20px;
+ line-height:16px;
+ vertical-align:middle;
+}
+
+.x-small-editor .x-form-num-field {
+ text-align:right;
+}
+
+.x-small-editor .x-form-field-wrap .x-form-trigger{
+ height:19px;
+}
+
+.ext-webkit .x-small-editor .x-form-text{padding-top:3px;font-size:100%;}
+
+.ext-strict .ext-webkit .x-small-editor .x-form-text{
+ height:14px !important;
+}
+
+.x-form-clear {
+ clear:both;
+ height:0;
+ overflow:hidden;
+ line-height:0;
+ font-size:0;
+}
+.x-form-clear-left {
+ clear:left;
+ height:0;
+ overflow:hidden;
+ line-height:0;
+ font-size:0;
+}
+
+.ext-ie6 .x-form-check-wrap input, .ext-border-box .x-form-check-wrap input{
+ margin-top: 3px;
+}
+
+.x-form-cb-label {
+ position: relative;
+ margin-left:4px;
+ top: 2px;
+}
+
+.ext-ie .x-form-cb-label{
+ top: 1px;
+}
+
+.ext-ie6 .x-form-cb-label, .ext-border-box .x-form-cb-label{
+ top: 3px;
+}
+
+.x-form-display-field{
+ padding-top: 2px;
+}
+
+.ext-gecko .x-form-display-field, .ext-strict .ext-ie7 .x-form-display-field{
+ padding-top: 1px;
+}
+
+.ext-ie .x-form-display-field{
+ padding-top: 3px;
+}
+
+.ext-strict .ext-ie8 .x-form-display-field{
+ padding-top: 0;
+}
+
+.x-form-column {
+ float:left;
+ padding:0;
+ margin:0;
+ width:48%;
+ overflow:hidden;
+ zoom:1;
+}
+
+/* buttons */
+.x-form .x-form-btns-ct .x-btn{
+ float:right;
+ clear:none;
+}
+
+.x-form .x-form-btns-ct .x-form-btns td {
+ border:0;
+ padding:0;
+}
+
+.x-form .x-form-btns-ct .x-form-btns-right table{
+ float:right;
+ clear:none;
+}
+
+.x-form .x-form-btns-ct .x-form-btns-left table{
+ float:left;
+ clear:none;
+}
+
+.x-form .x-form-btns-ct .x-form-btns-center{
+ text-align:center; /*ie*/
+}
+
+.x-form .x-form-btns-ct .x-form-btns-center table{
+ margin:0 auto; /*everyone else*/
+}
+
+.x-form .x-form-btns-ct table td.x-form-btn-td{
+ padding:3px;
+}
+
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{
+ background-position:0 -147px;
+}
+
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{
+ background-position:0 -168px;
+}
+
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{
+ background-position:0 -189px;
+}
+
+.x-form .x-form-btns-ct .x-btn-click .x-btn-center{
+ background-position:0 -126px;
+}
+
+.x-form .x-form-btns-ct .x-btn-click .x-btn-right{
+ background-position:0 -84px;
+}
+
+.x-form .x-form-btns-ct .x-btn-click .x-btn-left{
+ background-position:0 -63px;
+}
+
+.x-form-invalid-icon {
+ width:16px;
+ height:18px;
+ visibility:hidden;
+ position:absolute;
+ left:0;
+ top:0;
+ display:block;
+ background:transparent no-repeat 0 2px;
+}
+
+/* fieldsets */
+.x-fieldset {
+ border:1px solid;
+ padding:10px;
+ margin-bottom:10px;
+ display:block; /* preserve margins in IE */
+}
+
+/* make top of checkbox/tools visible in webkit */
+.ext-webkit .x-fieldset-header {
+ padding-top: 1px;
+}
+
+.ext-ie .x-fieldset legend {
+ margin-bottom:10px;
+}
+
+.ext-strict .ext-ie9 .x-fieldset legend.x-fieldset-header {
+ padding-top: 1px;
+}
+
+.ext-ie .x-fieldset {
+ padding-top: 0;
+ padding-bottom:10px;
+}
+
+.x-fieldset legend .x-tool-toggle {
+ margin-right:3px;
+ margin-left:0;
+ float:left !important;
+}
+
+.x-fieldset legend input {
+ margin-right:3px;
+ float:left !important;
+ height:13px;
+ width:13px;
+}
+
+fieldset.x-panel-collapsed {
+ padding-bottom:0 !important;
+ border-width: 1px 1px 0 1px !important;
+ border-left-color: transparent;
+ border-right-color: transparent;
+}
+
+.ext-ie6 fieldset.x-panel-collapsed{
+ padding-bottom:0 !important;
+ border-width: 1px 0 0 0 !important;
+ margin-left: 1px;
+ margin-right: 1px;
+}
+
+fieldset.x-panel-collapsed .x-fieldset-bwrap {
+ visibility:hidden;
+ position:absolute;
+ left:-1000px;
+ top:-1000px;
+}
+
+.ext-ie .x-fieldset-bwrap {
+ zoom:1;
+}
+
+.x-fieldset-noborder {
+ border:0px none transparent;
+}
+
+.x-fieldset-noborder legend {
+ margin-left:-3px;
+}
+
+/* IE legend positioning bug */
+.ext-ie .x-fieldset-noborder legend {
+ position: relative;
+ margin-bottom:23px;
+}
+.ext-ie .x-fieldset-noborder legend span {
+ position: absolute;
+ left:16px;
+}
+
+.ext-gecko .x-window-body .x-form-item {
+ -moz-outline: none;
+ outline: none;
+ overflow: auto;
+}
+
+.ext-mac.ext-gecko .x-window-body .x-form-item {
+ overflow:hidden;
+}
+
+.ext-gecko .x-form-item {
+ -moz-outline: none;
+ outline: none;
+}
+
+.x-hide-label label.x-form-item-label {
+ display:none;
+}
+
+.x-hide-label .x-form-element {
+ padding-left: 0 !important;
+}
+
+.x-form-label-top .x-hide-label label.x-form-item-label{
+ display: none;
+}
+
+.x-fieldset {
+ overflow:hidden;
+}
+
+.x-fieldset-bwrap {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-fieldset-body {
+ overflow:hidden;
+}
+.x-btn{
+ cursor:pointer;
+ white-space: nowrap;
+}
+
+.x-btn button{
+ border:0 none;
+ background-color:transparent;
+ padding-left:3px;
+ padding-right:3px;
+ cursor:pointer;
+ margin:0;
+ overflow:visible;
+ width:auto;
+ -moz-outline:0 none;
+ outline:0 none;
+}
+
+* html .ext-ie .x-btn button {
+ width:1px;
+}
+
+.ext-gecko .x-btn button, .ext-webkit .x-btn button {
+ padding-left:0;
+ padding-right:0;
+}
+
+.ext-gecko .x-btn button::-moz-focus-inner {
+ padding:0;
+}
+
+.ext-ie .x-btn button {
+ padding-top:2px;
+}
+
+.x-btn td {
+ padding:0 !important;
+}
+
+.x-btn-text {
+ cursor:pointer;
+ white-space: nowrap;
+ padding:0;
+}
+
+/* icon placement and sizing styles */
+
+/* Only text */
+.x-btn-noicon .x-btn-small .x-btn-text{
+ height: 16px;
+}
+
+.x-btn-noicon .x-btn-medium .x-btn-text{
+ height: 24px;
+}
+
+.x-btn-noicon .x-btn-large .x-btn-text{
+ height: 32px;
+}
+
+/* Only icons */
+.x-btn-icon .x-btn-text{
+ background-position: center;
+ background-repeat: no-repeat;
+}
+
+.x-btn-icon .x-btn-small .x-btn-text{
+ height: 16px;
+ width: 16px;
+}
+
+.x-btn-icon .x-btn-medium .x-btn-text{
+ height: 24px;
+ width: 24px;
+}
+
+.x-btn-icon .x-btn-large .x-btn-text{
+ height: 32px;
+ width: 32px;
+}
+
+/* Icons and text */
+/* left */
+.x-btn-text-icon .x-btn-icon-small-left .x-btn-text{
+ background-position: 0 center;
+ background-repeat: no-repeat;
+ padding-left:18px;
+ height:16px;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-left .x-btn-text{
+ background-position: 0 center;
+ background-repeat: no-repeat;
+ padding-left:26px;
+ height:24px;
+}
+
+.x-btn-text-icon .x-btn-icon-large-left .x-btn-text{
+ background-position: 0 center;
+ background-repeat: no-repeat;
+ padding-left:34px;
+ height:32px;
+}
+
+/* top */
+.x-btn-text-icon .x-btn-icon-small-top .x-btn-text{
+ background-position: center 0;
+ background-repeat: no-repeat;
+ padding-top:18px;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-top .x-btn-text{
+ background-position: center 0;
+ background-repeat: no-repeat;
+ padding-top:26px;
+}
+
+.x-btn-text-icon .x-btn-icon-large-top .x-btn-text{
+ background-position: center 0;
+ background-repeat: no-repeat;
+ padding-top:34px;
+}
+
+/* right */
+.x-btn-text-icon .x-btn-icon-small-right .x-btn-text{
+ background-position: right center;
+ background-repeat: no-repeat;
+ padding-right:18px;
+ height:16px;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-right .x-btn-text{
+ background-position: right center;
+ background-repeat: no-repeat;
+ padding-right:26px;
+ height:24px;
+}
+
+.x-btn-text-icon .x-btn-icon-large-right .x-btn-text{
+ background-position: right center;
+ background-repeat: no-repeat;
+ padding-right:34px;
+ height:32px;
+}
+
+/* bottom */
+.x-btn-text-icon .x-btn-icon-small-bottom .x-btn-text{
+ background-position: center bottom;
+ background-repeat: no-repeat;
+ padding-bottom:18px;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-bottom .x-btn-text{
+ background-position: center bottom;
+ background-repeat: no-repeat;
+ padding-bottom:26px;
+}
+
+.x-btn-text-icon .x-btn-icon-large-bottom .x-btn-text{
+ background-position: center bottom;
+ background-repeat: no-repeat;
+ padding-bottom:34px;
+}
+
+/* background positioning */
+.x-btn-tr i, .x-btn-tl i, .x-btn-mr i, .x-btn-ml i, .x-btn-br i, .x-btn-bl i{
+ font-size:1px;
+ line-height:1px;
+ width:3px;
+ display:block;
+ overflow:hidden;
+}
+
+.x-btn-tr i, .x-btn-tl i, .x-btn-br i, .x-btn-bl i{
+ height:3px;
+}
+
+.x-btn-tl{
+ width:3px;
+ height:3px;
+ background:no-repeat 0 0;
+}
+.x-btn-tr{
+ width:3px;
+ height:3px;
+ background:no-repeat -3px 0;
+}
+.x-btn-tc{
+ height:3px;
+ background:repeat-x 0 -6px;
+}
+
+.x-btn-ml{
+ width:3px;
+ background:no-repeat 0 -24px;
+}
+.x-btn-mr{
+ width:3px;
+ background:no-repeat -3px -24px;
+}
+
+.x-btn-mc{
+ background:repeat-x 0 -1096px;
+ vertical-align: middle;
+ text-align:center;
+ padding:0 5px;
+ cursor:pointer;
+ white-space:nowrap;
+}
+
+/* Fixes an issue with the button height */
+.ext-strict .ext-ie6 .x-btn-mc, .ext-strict .ext-ie7 .x-btn-mc {
+ height: 100%;
+}
+
+.x-btn-bl{
+ width:3px;
+ height:3px;
+ background:no-repeat 0 -3px;
+}
+
+.x-btn-br{
+ width:3px;
+ height:3px;
+ background:no-repeat -3px -3px;
+}
+
+.x-btn-bc{
+ height:3px;
+ background:repeat-x 0 -15px;
+}
+
+.x-btn-over .x-btn-tl{
+ background-position: -6px 0;
+}
+
+.x-btn-over .x-btn-tr{
+ background-position: -9px 0;
+}
+
+.x-btn-over .x-btn-tc{
+ background-position: 0 -9px;
+}
+
+.x-btn-over .x-btn-ml{
+ background-position: -6px -24px;
+}
+
+.x-btn-over .x-btn-mr{
+ background-position: -9px -24px;
+}
+
+.x-btn-over .x-btn-mc{
+ background-position: 0 -2168px;
+}
+
+.x-btn-over .x-btn-bl{
+ background-position: -6px -3px;
+}
+
+.x-btn-over .x-btn-br{
+ background-position: -9px -3px;
+}
+
+.x-btn-over .x-btn-bc{
+ background-position: 0 -18px;
+}
+
+.x-btn-click .x-btn-tl, .x-btn-menu-active .x-btn-tl, .x-btn-pressed .x-btn-tl{
+ background-position: -12px 0;
+}
+
+.x-btn-click .x-btn-tr, .x-btn-menu-active .x-btn-tr, .x-btn-pressed .x-btn-tr{
+ background-position: -15px 0;
+}
+
+.x-btn-click .x-btn-tc, .x-btn-menu-active .x-btn-tc, .x-btn-pressed .x-btn-tc{
+ background-position: 0 -12px;
+}
+
+.x-btn-click .x-btn-ml, .x-btn-menu-active .x-btn-ml, .x-btn-pressed .x-btn-ml{
+ background-position: -12px -24px;
+}
+
+.x-btn-click .x-btn-mr, .x-btn-menu-active .x-btn-mr, .x-btn-pressed .x-btn-mr{
+ background-position: -15px -24px;
+}
+
+.x-btn-click .x-btn-mc, .x-btn-menu-active .x-btn-mc, .x-btn-pressed .x-btn-mc{
+ background-position: 0 -3240px;
+}
+
+.x-btn-click .x-btn-bl, .x-btn-menu-active .x-btn-bl, .x-btn-pressed .x-btn-bl{
+ background-position: -12px -3px;
+}
+
+.x-btn-click .x-btn-br, .x-btn-menu-active .x-btn-br, .x-btn-pressed .x-btn-br{
+ background-position: -15px -3px;
+}
+
+.x-btn-click .x-btn-bc, .x-btn-menu-active .x-btn-bc, .x-btn-pressed .x-btn-bc{
+ background-position: 0 -21px;
+}
+
+.x-btn-disabled *{
+ cursor:default !important;
+}
+
+
+/* With a menu arrow */
+/* right */
+.x-btn-mc em.x-btn-arrow {
+ display:block;
+ background:transparent no-repeat right center;
+ padding-right:10px;
+}
+
+.x-btn-mc em.x-btn-split {
+ display:block;
+ background:transparent no-repeat right center;
+ padding-right:14px;
+}
+
+/* bottom */
+.x-btn-mc em.x-btn-arrow-bottom {
+ display:block;
+ background:transparent no-repeat center bottom;
+ padding-bottom:14px;
+}
+
+.x-btn-mc em.x-btn-split-bottom {
+ display:block;
+ background:transparent no-repeat center bottom;
+ padding-bottom:14px;
+}
+
+/* height adjustment class */
+.x-btn-as-arrow .x-btn-mc em {
+ display:block;
+ background-color:transparent;
+ padding-bottom:14px;
+}
+
+/* groups */
+.x-btn-group {
+ padding:1px;
+}
+
+.x-btn-group-header {
+ padding:2px;
+ text-align:center;
+}
+
+.x-btn-group-tc {
+ background: transparent repeat-x 0 0;
+ overflow:hidden;
+}
+
+.x-btn-group-tl {
+ background: transparent no-repeat 0 0;
+ padding-left:3px;
+ zoom:1;
+}
+
+.x-btn-group-tr {
+ background: transparent no-repeat right 0;
+ zoom:1;
+ padding-right:3px;
+}
+
+.x-btn-group-bc {
+ background: transparent repeat-x 0 bottom;
+ zoom:1;
+}
+
+.x-btn-group-bc .x-panel-footer {
+ zoom:1;
+}
+
+.x-btn-group-bl {
+ background: transparent no-repeat 0 bottom;
+ padding-left:3px;
+ zoom:1;
+}
+
+.x-btn-group-br {
+ background: transparent no-repeat right bottom;
+ padding-right:3px;
+ zoom:1;
+}
+
+.x-btn-group-mc {
+ border:0 none;
+ padding:1px 0 0 0;
+ margin:0;
+}
+
+.x-btn-group-mc .x-btn-group-body {
+ background-color:transparent;
+ border: 0 none;
+}
+
+.x-btn-group-ml {
+ background: transparent repeat-y 0 0;
+ padding-left:3px;
+ zoom:1;
+}
+
+.x-btn-group-mr {
+ background: transparent repeat-y right 0;
+ padding-right:3px;
+ zoom:1;
+}
+
+.x-btn-group-bc .x-btn-group-footer {
+ padding-bottom:6px;
+}
+
+.x-panel-nofooter .x-btn-group-bc {
+ height:3px;
+ font-size:0;
+ line-height:0;
+}
+
+.x-btn-group-bwrap {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-btn-group-body {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-btn-group-notitle .x-btn-group-tc {
+ background: transparent repeat-x 0 0;
+ overflow:hidden;
+ height:2px;
+}.x-toolbar{
+ border-style:solid;
+ border-width:0 0 1px 0;
+ display: block;
+ padding:2px;
+ background:repeat-x top left;
+ position:relative;
+ left:0;
+ top:0;
+ zoom:1;
+ overflow:hidden;
+}
+
+.x-toolbar-left {
+ width: 100%;
+}
+
+.x-toolbar .x-item-disabled .x-btn-icon {
+ opacity: .35;
+ -moz-opacity: .35;
+ filter: alpha(opacity=35);
+}
+
+.x-toolbar td {
+ vertical-align:middle;
+}
+
+.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{
+ white-space: nowrap;
+}
+
+.x-toolbar .x-item-disabled {
+ cursor:default;
+ opacity:.6;
+ -moz-opacity:.6;
+ filter:alpha(opacity=60);
+}
+
+.x-toolbar .x-item-disabled * {
+ cursor:default;
+}
+
+.x-toolbar .x-toolbar-cell {
+ vertical-align:middle;
+}
+
+.x-toolbar .x-btn-tl, .x-toolbar .x-btn-tr, .x-toolbar .x-btn-tc, .x-toolbar .x-btn-ml, .x-toolbar .x-btn-mr,
+.x-toolbar .x-btn-mc, .x-toolbar .x-btn-bl, .x-toolbar .x-btn-br, .x-toolbar .x-btn-bc
+{
+ background-position: 500px 500px;
+}
+
+/* These rules are duplicated from button.css to give priority of x-toolbar rules above */
+.x-toolbar .x-btn-over .x-btn-tl{
+ background-position: -6px 0;
+}
+
+.x-toolbar .x-btn-over .x-btn-tr{
+ background-position: -9px 0;
+}
+
+.x-toolbar .x-btn-over .x-btn-tc{
+ background-position: 0 -9px;
+}
+
+.x-toolbar .x-btn-over .x-btn-ml{
+ background-position: -6px -24px;
+}
+
+.x-toolbar .x-btn-over .x-btn-mr{
+ background-position: -9px -24px;
+}
+
+.x-toolbar .x-btn-over .x-btn-mc{
+ background-position: 0 -2168px;
+}
+
+.x-toolbar .x-btn-over .x-btn-bl{
+ background-position: -6px -3px;
+}
+
+.x-toolbar .x-btn-over .x-btn-br{
+ background-position: -9px -3px;
+}
+
+.x-toolbar .x-btn-over .x-btn-bc{
+ background-position: 0 -18px;
+}
+
+.x-toolbar .x-btn-click .x-btn-tl, .x-toolbar .x-btn-menu-active .x-btn-tl, .x-toolbar .x-btn-pressed .x-btn-tl{
+ background-position: -12px 0;
+}
+
+.x-toolbar .x-btn-click .x-btn-tr, .x-toolbar .x-btn-menu-active .x-btn-tr, .x-toolbar .x-btn-pressed .x-btn-tr{
+ background-position: -15px 0;
+}
+
+.x-toolbar .x-btn-click .x-btn-tc, .x-toolbar .x-btn-menu-active .x-btn-tc, .x-toolbar .x-btn-pressed .x-btn-tc{
+ background-position: 0 -12px;
+}
+
+.x-toolbar .x-btn-click .x-btn-ml, .x-toolbar .x-btn-menu-active .x-btn-ml, .x-toolbar .x-btn-pressed .x-btn-ml{
+ background-position: -12px -24px;
+}
+
+.x-toolbar .x-btn-click .x-btn-mr, .x-toolbar .x-btn-menu-active .x-btn-mr, .x-toolbar .x-btn-pressed .x-btn-mr{
+ background-position: -15px -24px;
+}
+
+.x-toolbar .x-btn-click .x-btn-mc, .x-toolbar .x-btn-menu-active .x-btn-mc, .x-toolbar .x-btn-pressed .x-btn-mc{
+ background-position: 0 -3240px;
+}
+
+.x-toolbar .x-btn-click .x-btn-bl, .x-toolbar .x-btn-menu-active .x-btn-bl, .x-toolbar .x-btn-pressed .x-btn-bl{
+ background-position: -12px -3px;
+}
+
+.x-toolbar .x-btn-click .x-btn-br, .x-toolbar .x-btn-menu-active .x-btn-br, .x-toolbar .x-btn-pressed .x-btn-br{
+ background-position: -15px -3px;
+}
+
+.x-toolbar .x-btn-click .x-btn-bc, .x-toolbar .x-btn-menu-active .x-btn-bc, .x-toolbar .x-btn-pressed .x-btn-bc{
+ background-position: 0 -21px;
+}
+
+.x-toolbar div.xtb-text{
+ padding:2px 2px 0;
+ line-height:16px;
+ display:block;
+}
+
+.x-toolbar .xtb-sep {
+ background-position: center;
+ background-repeat: no-repeat;
+ display: block;
+ font-size: 1px;
+ height: 16px;
+ width:4px;
+ overflow: hidden;
+ cursor:default;
+ margin: 0 2px 0;
+ border:0;
+}
+
+.x-toolbar .xtb-spacer {
+ width:2px;
+}
+
+/* Paging Toolbar */
+.x-tbar-page-number{
+ width:30px;
+ height:14px;
+}
+
+.ext-ie .x-tbar-page-number{
+ margin-top: 2px;
+}
+
+.x-paging-info {
+ position:absolute;
+ top:5px;
+ right: 8px;
+}
+
+/* floating */
+.x-toolbar-ct {
+ width:100%;
+}
+
+.x-toolbar-right td {
+ text-align: center;
+}
+
+.x-panel-tbar, .x-panel-bbar, .x-window-tbar, .x-window-bbar, .x-tab-panel-tbar, .x-tab-panel-bbar, .x-plain-tbar, .x-plain-bbar {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-toolbar-more .x-btn-small .x-btn-text{
+ height: 16px;
+ width: 12px;
+}
+
+.x-toolbar-more em.x-btn-arrow {
+ display:inline;
+ background-color:transparent;
+ padding-right:0;
+}
+
+.x-toolbar-more .x-btn-mc em.x-btn-arrow {
+ background-image: none;
+}
+
+div.x-toolbar-no-items {
+ color:gray !important;
+ padding:5px 10px !important;
+}
+
+/* fix ie toolbar form items */
+.ext-border-box .x-toolbar-cell .x-form-text {
+ margin-bottom:-1px !important;
+}
+
+.ext-border-box .x-toolbar-cell .x-form-field-wrap .x-form-text {
+ margin:0 !important;
+}
+
+.ext-ie .x-toolbar-cell .x-form-field-wrap {
+ height:21px;
+}
+
+.ext-ie .x-toolbar-cell .x-form-text {
+ position:relative;
+ top:-1px;
+}
+
+.ext-strict .ext-ie8 .x-toolbar-cell .x-form-field-trigger-wrap .x-form-text, .ext-strict .ext-ie .x-toolbar-cell .x-form-text {
+ top: 0px;
+}
+
+.x-toolbar-right td .x-form-field-trigger-wrap{
+ text-align: left;
+}
+
+.x-toolbar-cell .x-form-checkbox, .x-toolbar-cell .x-form-radio{
+ margin-top: 5px;
+}
+
+.x-toolbar-cell .x-form-cb-label{
+ vertical-align: bottom;
+ top: 1px;
+}
+
+.ext-ie .x-toolbar-cell .x-form-checkbox, .ext-ie .x-toolbar-cell .x-form-radio{
+ margin-top: 4px;
+}
+
+.ext-ie .x-toolbar-cell .x-form-cb-label{
+ top: 0;
+}
+/* Grid3 styles */
+.x-grid3 {
+ position:relative;
+ overflow:hidden;
+}
+
+.x-grid-panel .x-panel-body {
+ overflow:hidden !important;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+ border:1px solid;
+}
+
+.x-grid3 table {
+ table-layout:fixed;
+}
+
+.x-grid3-viewport{
+ overflow:hidden;
+}
+
+.x-grid3-hd-row td, .x-grid3-row td, .x-grid3-summary-row td{
+ -moz-outline: none;
+ outline: none;
+ -moz-user-focus: normal;
+}
+
+.x-grid3-row td, .x-grid3-summary-row td {
+ line-height:13px;
+ vertical-align: top;
+ padding-left:1px;
+ padding-right:1px;
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+}
+
+.x-grid3-cell{
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+}
+
+.x-grid3-hd-row td {
+ line-height:15px;
+ vertical-align:middle;
+ border-left:1px solid;
+ border-right:1px solid;
+}
+
+.x-grid3-hd-row .x-grid3-marker-hd {
+ padding:3px;
+}
+
+.x-grid3-row .x-grid3-marker {
+ padding:3px;
+}
+
+.x-grid3-cell-inner, .x-grid3-hd-inner{
+ overflow:hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ padding:3px 3px 3px 5px;
+ white-space: nowrap;
+}
+
+/* ActionColumn, reduce padding to accommodate 16x16 icons in normal row height */
+.x-action-col-cell .x-grid3-cell-inner {
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.x-action-col-icon {
+ cursor: pointer;
+}
+
+.x-grid3-hd-inner {
+ position:relative;
+ cursor:inherit;
+ padding:4px 3px 4px 5px;
+}
+
+.x-grid3-row-body {
+ white-space:normal;
+}
+
+.x-grid3-body-cell {
+ -moz-outline:0 none;
+ outline:0 none;
+}
+
+/* IE Quirks to clip */
+.ext-ie .x-grid3-cell-inner, .ext-ie .x-grid3-hd-inner{
+ width:100%;
+}
+
+/* reverse above in strict mode */
+.ext-strict .x-grid3-cell-inner, .ext-strict .x-grid3-hd-inner{
+ width:auto;
+}
+
+.x-grid-row-loading {
+ background: no-repeat center center;
+}
+
+.x-grid-page {
+ overflow:hidden;
+}
+
+.x-grid3-row {
+ cursor: default;
+ border: 1px solid;
+ width:100%;
+}
+
+.x-grid3-row-over {
+ border:1px solid;
+ background: repeat-x left top;
+}
+
+.x-grid3-resize-proxy {
+ width:1px;
+ left:0;
+ cursor: e-resize;
+ cursor: col-resize;
+ position:absolute;
+ top:0;
+ height:100px;
+ overflow:hidden;
+ visibility:hidden;
+ border:0 none;
+ z-index:7;
+}
+
+.x-grid3-resize-marker {
+ width:1px;
+ left:0;
+ position:absolute;
+ top:0;
+ height:100px;
+ overflow:hidden;
+ visibility:hidden;
+ border:0 none;
+ z-index:7;
+}
+
+.x-grid3-focus {
+ position:absolute;
+ left:0;
+ top:0;
+ width:1px;
+ height:1px;
+ line-height:1px;
+ font-size:1px;
+ -moz-outline:0 none;
+ outline:0 none;
+ -moz-user-select: text;
+ -khtml-user-select: text;
+ -webkit-user-select:ignore;
+}
+
+/* header styles */
+.x-grid3-header{
+ background: repeat-x 0 bottom;
+ cursor:default;
+ zoom:1;
+ padding:1px 0 0 0;
+}
+
+.x-grid3-header-pop {
+ border-left:1px solid;
+ float:right;
+ clear:none;
+}
+
+.x-grid3-header-pop-inner {
+ border-left:1px solid;
+ width:14px;
+ height:19px;
+ background: transparent no-repeat center center;
+}
+
+.ext-ie .x-grid3-header-pop-inner {
+ width:15px;
+}
+
+.ext-strict .x-grid3-header-pop-inner {
+ width:14px;
+}
+
+.x-grid3-header-inner {
+ overflow:hidden;
+ zoom:1;
+ float:left;
+}
+
+.x-grid3-header-offset {
+ padding-left:1px;
+ text-align: left;
+}
+
+td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open {
+ border-left:1px solid;
+ border-right:1px solid;
+}
+
+td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner {
+ background: repeat-x left bottom;
+
+}
+
+.x-grid3-sort-icon{
+ background-repeat: no-repeat;
+ display: none;
+ height: 4px;
+ width: 13px;
+ margin-left:3px;
+ vertical-align: middle;
+}
+
+.sort-asc .x-grid3-sort-icon, .sort-desc .x-grid3-sort-icon {
+ display: inline;
+}
+
+/* Header position fixes for IE strict mode */
+.ext-strict .ext-ie .x-grid3-header-inner, .ext-strict .ext-ie6 .x-grid3-hd {
+ position:relative;
+}
+
+.ext-strict .ext-ie6 .x-grid3-hd-inner{
+ position:static;
+}
+
+/* Body Styles */
+.x-grid3-body {
+ zoom:1;
+}
+
+.x-grid3-scroller {
+ overflow:auto;
+ zoom:1;
+ position:relative;
+}
+
+.x-grid3-cell-text, .x-grid3-hd-text {
+ display: block;
+ padding: 3px 5px 3px 5px;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select:ignore;
+}
+
+.x-grid3-split {
+ background-position: center;
+ background-repeat: no-repeat;
+ cursor: e-resize;
+ cursor: col-resize;
+ display: block;
+ font-size: 1px;
+ height: 16px;
+ overflow: hidden;
+ position: absolute;
+ top: 2px;
+ width: 6px;
+ z-index: 3;
+}
+
+/* Column Reorder DD */
+.x-dd-drag-proxy .x-grid3-hd-inner{
+ background: repeat-x left bottom;
+ width:120px;
+ padding:3px;
+ border:1px solid;
+ overflow:hidden;
+}
+
+.col-move-top, .col-move-bottom{
+ width:9px;
+ height:9px;
+ position:absolute;
+ top:0;
+ line-height:1px;
+ font-size:1px;
+ overflow:hidden;
+ visibility:hidden;
+ z-index:20000;
+ background:transparent no-repeat left top;
+}
+
+/* Selection Styles */
+.x-grid3-row-selected {
+ border:1px dotted;
+}
+
+.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{
+ background: repeat-x 0 bottom !important;
+ vertical-align:middle !important;
+ padding:0;
+ border-top:1px solid;
+ border-bottom:none !important;
+ border-right:1px solid !important;
+ text-align:center;
+}
+
+.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{
+ padding:0 4px;
+ text-align:center;
+}
+
+/* dirty cells */
+.x-grid3-dirty-cell {
+ background: transparent no-repeat 0 0;
+}
+
+/* Grid Toolbars */
+.x-grid3-topbar, .x-grid3-bottombar{
+ overflow:hidden;
+ display:none;
+ zoom:1;
+ position:relative;
+}
+
+.x-grid3-topbar .x-toolbar{
+ border-right:0 none;
+}
+
+.x-grid3-bottombar .x-toolbar{
+ border-right:0 none;
+ border-bottom:0 none;
+ border-top:1px solid;
+}
+
+/* Props Grid Styles */
+.x-props-grid .x-grid3-cell{
+ padding:1px;
+}
+
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{
+ background:transparent repeat-y -16px !important;
+ padding-left:12px;
+}
+
+.x-props-grid .x-grid3-body .x-grid3-td-name{
+ padding:1px;
+ padding-right:0;
+ border:0 none;
+ border-right:1px solid;
+}
+
+/* dd */
+.x-grid3-col-dd {
+ border:0 none;
+ padding:0;
+ background-color:transparent;
+}
+
+.x-dd-drag-ghost .x-grid3-dd-wrap {
+ padding:1px 3px 3px 1px;
+}
+
+.x-grid3-hd {
+ -moz-user-select:none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+}
+
+.x-grid3-hd-btn {
+ display:none;
+ position:absolute;
+ width:14px;
+ background:no-repeat left center;
+ right:0;
+ top:0;
+ z-index:2;
+ cursor:pointer;
+}
+
+.x-grid3-hd-over .x-grid3-hd-btn, .x-grid3-hd-menu-open .x-grid3-hd-btn {
+ display:block;
+}
+
+a.x-grid3-hd-btn:hover {
+ background-position:-14px center;
+}
+
+/* Expanders */
+.x-grid3-body .x-grid3-td-expander {
+ background:transparent repeat-y right;
+}
+
+.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner {
+ padding:0 !important;
+ height:100%;
+}
+
+.x-grid3-row-expander {
+ width:100%;
+ height:18px;
+ background-position:4px 2px;
+ background-repeat:no-repeat;
+ background-color:transparent;
+}
+
+.x-grid3-row-collapsed .x-grid3-row-expander {
+ background-position:4px 2px;
+}
+
+.x-grid3-row-expanded .x-grid3-row-expander {
+ background-position:-21px 2px;
+}
+
+.x-grid3-row-collapsed .x-grid3-row-body {
+ display:none !important;
+}
+
+.x-grid3-row-expanded .x-grid3-row-body {
+ display:block !important;
+}
+
+/* Checkers */
+.x-grid3-body .x-grid3-td-checker {
+ background:transparent repeat-y right;
+}
+
+.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner, .x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner {
+ padding:0 !important;
+ height:100%;
+}
+
+.x-grid3-row-checker, .x-grid3-hd-checker {
+ width:100%;
+ height:18px;
+ background-position:2px 2px;
+ background-repeat:no-repeat;
+ background-color:transparent;
+}
+
+.x-grid3-row .x-grid3-row-checker {
+ background-position:2px 2px;
+}
+
+.x-grid3-row-selected .x-grid3-row-checker, .x-grid3-hd-checker-on .x-grid3-hd-checker,.x-grid3-row-checked .x-grid3-row-checker {
+ background-position:-23px 2px;
+}
+
+.x-grid3-hd-checker {
+ background-position:2px 1px;
+}
+
+.ext-border-box .x-grid3-hd-checker {
+ background-position:2px 3px;
+}
+
+.x-grid3-hd-checker-on .x-grid3-hd-checker {
+ background-position:-23px 1px;
+}
+
+.ext-border-box .x-grid3-hd-checker-on .x-grid3-hd-checker {
+ background-position:-23px 3px;
+}
+
+/* Numberer */
+.x-grid3-body .x-grid3-td-numberer {
+ background:transparent repeat-y right;
+}
+
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
+ padding:3px 5px 0 0 !important;
+ text-align:right;
+}
+
+/* Row Icon */
+
+.x-grid3-body .x-grid3-td-row-icon {
+ background:transparent repeat-y right;
+ vertical-align:top;
+ text-align:center;
+}
+
+.x-grid3-body .x-grid3-td-row-icon .x-grid3-cell-inner {
+ padding:0 !important;
+ background-position:center center;
+ background-repeat:no-repeat;
+ width:16px;
+ height:16px;
+ margin-left:2px;
+ margin-top:3px;
+}
+
+/* All specials */
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander {
+ background:transparent repeat-y right;
+}
+
+.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner {
+ padding: 1px 0 0 0 !important;
+}
+
+.x-grid3-check-col {
+ width:100%;
+ height:16px;
+ background-position:center center;
+ background-repeat:no-repeat;
+ background-color:transparent;
+}
+
+.x-grid3-check-col-on {
+ width:100%;
+ height:16px;
+ background-position:center center;
+ background-repeat:no-repeat;
+ background-color:transparent;
+}
+
+/* Grouping classes */
+.x-grid-group, .x-grid-group-body, .x-grid-group-hd {
+ zoom:1;
+}
+
+.x-grid-group-hd {
+ border-bottom: 2px solid;
+ cursor:pointer;
+ padding-top:6px;
+}
+
+.x-grid-group-hd div.x-grid-group-title {
+ background:transparent no-repeat 3px 3px;
+ padding:4px 4px 4px 17px;
+}
+
+.x-grid-group-collapsed .x-grid-group-body {
+ display:none;
+}
+
+.ext-ie6 .x-grid3 .x-editor .x-form-text, .ext-ie7 .x-grid3 .x-editor .x-form-text {
+ position:relative;
+ top:-1px;
+}
+
+.x-grid-editor .x-form-check-wrap {
+ text-align: center;
+ margin-top: -4px;
+}
+
+.ext-ie .x-props-grid .x-editor .x-form-text {
+ position:static;
+ top:0;
+}
+
+.x-grid-empty {
+ padding:10px;
+}
+
+/* fix floating toolbar issue */
+.ext-ie7 .x-grid-panel .x-panel-bbar {
+ position:relative;
+}
+
+
+/* Reset position to static when Grid Panel has been framed */
+/* to resolve 'snapping' from top to bottom behavior. */
+/* @forumThread 86656 */
+.ext-ie7 .x-grid-panel .x-panel-mc .x-panel-bbar {
+ position: static;
+}
+
+.ext-ie6 .x-grid3-header {
+ position: relative;
+}
+
+/* Fix WebKit bug in Grids */
+.ext-webkit .x-grid-panel .x-panel-bwrap{
+ -webkit-user-select:none;
+}
+.ext-webkit .x-tbar-page-number{
+ -webkit-user-select:ignore;
+}
+/* end*/
+
+/* column lines */
+.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell {
+ padding-right:0;
+ border-right:1px solid;
+}
+.x-pivotgrid .x-grid3-header-offset table {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.x-pivotgrid .x-grid3-header-offset table td {
+ padding: 4px 3px 4px 5px;
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-size: 11px;
+ line-height: 13px;
+ font-family: tahoma;
+}
+
+.x-pivotgrid .x-grid3-row-headers {
+ display: block;
+ float: left;
+}
+
+.x-pivotgrid .x-grid3-row-headers table {
+ height: 100%;
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.x-pivotgrid .x-grid3-row-headers table td {
+ height: 18px;
+ padding: 2px 7px 0 0;
+ text-align: right;
+ text-overflow: ellipsis;
+ font-size: 11px;
+ font-family: tahoma;
+}
+
+.ext-gecko .x-pivotgrid .x-grid3-row-headers table td {
+ height: 21px;
+}
+
+.x-grid3-header-title {
+ top: 0%;
+ left: 0%;
+ position: absolute;
+ text-align: center;
+ vertical-align: middle;
+ font-family: tahoma;
+ font-size: 11px;
+ padding: auto 1px;
+ display: table-cell;
+}
+
+.x-grid3-header-title span {
+ position: absolute;
+ top: 50%;
+ left: 0%;
+ width: 100%;
+ margin-top: -6px;
+}.x-dd-drag-proxy{
+ position:absolute;
+ left:0;
+ top:0;
+ visibility:hidden;
+ z-index:15000;
+}
+
+.x-dd-drag-ghost{
+ -moz-opacity: 0.85;
+ opacity:.85;
+ filter: alpha(opacity=85);
+ border: 1px solid;
+ padding:3px;
+ padding-left:20px;
+ white-space:nowrap;
+}
+
+.x-dd-drag-repair .x-dd-drag-ghost{
+ -moz-opacity: 0.4;
+ opacity:.4;
+ filter: alpha(opacity=40);
+ border:0 none;
+ padding:0;
+ background-color:transparent;
+}
+
+.x-dd-drag-repair .x-dd-drop-icon{
+ visibility:hidden;
+}
+
+.x-dd-drop-icon{
+ position:absolute;
+ top:3px;
+ left:3px;
+ display:block;
+ width:16px;
+ height:16px;
+ background-color:transparent;
+ background-position: center;
+ background-repeat: no-repeat;
+ z-index:1;
+}
+
+.x-view-selector {
+ position:absolute;
+ left:0;
+ top:0;
+ width:0;
+ border:1px dotted;
+ opacity: .5;
+ -moz-opacity: .5;
+ filter:alpha(opacity=50);
+ zoom:1;
+}.ext-strict .ext-ie .x-tree .x-panel-bwrap{
+ position:relative;
+ overflow:hidden;
+}
+
+.x-tree-icon, .x-tree-ec-icon, .x-tree-elbow-line, .x-tree-elbow, .x-tree-elbow-end, .x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{
+ border: 0 none;
+ height: 18px;
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+ width: 16px;
+ background-repeat: no-repeat;
+}
+
+.x-tree-node-collapsed .x-tree-node-icon, .x-tree-node-expanded .x-tree-node-icon, .x-tree-node-leaf .x-tree-node-icon{
+ border: 0 none;
+ height: 18px;
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+ width: 16px;
+ background-position:center;
+ background-repeat: no-repeat;
+}
+
+.ext-ie .x-tree-node-indent img, .ext-ie .x-tree-node-icon, .ext-ie .x-tree-ec-icon {
+ vertical-align: middle !important;
+}
+
+.ext-strict .ext-ie8 .x-tree-node-indent img, .ext-strict .ext-ie8 .x-tree-node-icon, .ext-strict .ext-ie8 .x-tree-ec-icon {
+ vertical-align: top !important;
+}
+
+/* checkboxes */
+
+input.x-tree-node-cb {
+ margin-left:1px;
+ height: 19px;
+ vertical-align: bottom;
+}
+
+.ext-ie input.x-tree-node-cb {
+ margin-left:0;
+ margin-top: 1px;
+ width: 16px;
+ height: 16px;
+ vertical-align: middle;
+}
+
+.ext-strict .ext-ie8 input.x-tree-node-cb{
+ margin: 1px 1px;
+ height: 14px;
+ vertical-align: bottom;
+}
+
+.ext-strict .ext-ie8 input.x-tree-node-cb + a{
+ vertical-align: bottom;
+}
+
+.ext-opera input.x-tree-node-cb {
+ height: 14px;
+ vertical-align: middle;
+}
+
+.x-tree-noicon .x-tree-node-icon{
+ width:0; height:0;
+}
+
+/* No line styles */
+.x-tree-no-lines .x-tree-elbow{
+ background-color:transparent;
+}
+
+.x-tree-no-lines .x-tree-elbow-end{
+ background-color:transparent;
+}
+
+.x-tree-no-lines .x-tree-elbow-line{
+ background-color:transparent;
+}
+
+/* Arrows */
+.x-tree-arrows .x-tree-elbow{
+ background-color:transparent;
+}
+
+.x-tree-arrows .x-tree-elbow-plus{
+ background:transparent no-repeat 0 0;
+}
+
+.x-tree-arrows .x-tree-elbow-minus{
+ background:transparent no-repeat -16px 0;
+}
+
+.x-tree-arrows .x-tree-elbow-end{
+ background-color:transparent;
+}
+
+.x-tree-arrows .x-tree-elbow-end-plus{
+ background:transparent no-repeat 0 0;
+}
+
+.x-tree-arrows .x-tree-elbow-end-minus{
+ background:transparent no-repeat -16px 0;
+}
+
+.x-tree-arrows .x-tree-elbow-line{
+ background-color:transparent;
+}
+
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{
+ background-position:-32px 0;
+}
+
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{
+ background-position:-48px 0;
+}
+
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{
+ background-position:-32px 0;
+}
+
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{
+ background-position:-48px 0;
+}
+
+.x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{
+ cursor:pointer;
+}
+
+.ext-ie ul.x-tree-node-ct{
+ font-size:0;
+ line-height:0;
+ zoom:1;
+}
+
+.x-tree-node{
+ white-space: nowrap;
+}
+
+.x-tree-node-el {
+ line-height:18px;
+ cursor:pointer;
+}
+
+.x-tree-node a, .x-dd-drag-ghost a{
+ text-decoration:none;
+ -khtml-user-select:none;
+ -moz-user-select:none;
+ -webkit-user-select:ignore;
+ -kthml-user-focus:normal;
+ -moz-user-focus:normal;
+ -moz-outline: 0 none;
+ outline:0 none;
+}
+
+.x-tree-node a span, .x-dd-drag-ghost a span{
+ text-decoration:none;
+ padding:1px 3px 1px 2px;
+}
+
+.x-tree-node .x-tree-node-disabled .x-tree-node-icon{
+ -moz-opacity: 0.5;
+ opacity:.5;
+ filter: alpha(opacity=50);
+}
+
+.x-tree-node .x-tree-node-inline-icon{
+ background-color:transparent;
+}
+
+.x-tree-node a:hover, .x-dd-drag-ghost a:hover{
+ text-decoration:none;
+}
+
+.x-tree-node div.x-tree-drag-insert-below{
+ border-bottom:1px dotted;
+}
+
+.x-tree-node div.x-tree-drag-insert-above{
+ border-top:1px dotted;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{
+ border-bottom:0 none;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{
+ border-top:0 none;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{
+ border-bottom:2px solid;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{
+ border-top:2px solid;
+}
+
+.x-tree-node .x-tree-drag-append a span{
+ border:1px dotted;
+}
+
+.x-dd-drag-ghost .x-tree-node-indent, .x-dd-drag-ghost .x-tree-ec-icon{
+ display:none !important;
+}
+
+/* Fix for ie rootVisible:false issue */
+.x-tree-root-ct {
+ zoom:1;
+}
+.x-date-picker {
+ border: 1px solid;
+ border-top:0 none;
+ position:relative;
+}
+
+.x-date-picker a {
+ -moz-outline:0 none;
+ outline:0 none;
+}
+
+.x-date-inner, .x-date-inner td, .x-date-inner th{
+ border-collapse:separate;
+}
+
+.x-date-middle,.x-date-left,.x-date-right {
+ background: repeat-x 0 -83px;
+ overflow:hidden;
+}
+
+.x-date-middle .x-btn-tc,.x-date-middle .x-btn-tl,.x-date-middle .x-btn-tr,
+.x-date-middle .x-btn-mc,.x-date-middle .x-btn-ml,.x-date-middle .x-btn-mr,
+.x-date-middle .x-btn-bc,.x-date-middle .x-btn-bl,.x-date-middle .x-btn-br{
+ background:transparent !important;
+ vertical-align:middle;
+}
+
+.x-date-middle .x-btn-mc em.x-btn-arrow {
+ background:transparent no-repeat right 0;
+}
+
+.x-date-right, .x-date-left {
+ width:18px;
+}
+
+.x-date-right{
+ text-align:right;
+}
+
+.x-date-middle {
+ padding-top:2px;
+ padding-bottom:2px;
+ width:130px; /* FF3 */
+}
+
+.x-date-right a, .x-date-left a{
+ display:block;
+ width:16px;
+ height:16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ cursor:pointer;
+ -moz-opacity: 0.6;
+ opacity:.6;
+ filter: alpha(opacity=60);
+}
+
+.x-date-right a:hover, .x-date-left a:hover{
+ -moz-opacity: 1;
+ opacity:1;
+ filter: alpha(opacity=100);
+}
+
+.x-item-disabled .x-date-right a:hover, .x-item-disabled .x-date-left a:hover{
+ -moz-opacity: 0.6;
+ opacity:.6;
+ filter: alpha(opacity=60);
+}
+
+.x-date-right a {
+ margin-right:2px;
+ text-decoration:none !important;
+}
+
+.x-date-left a{
+ margin-left:2px;
+ text-decoration:none !important;
+}
+
+table.x-date-inner {
+ width: 100%;
+ table-layout:fixed;
+}
+
+.ext-webkit table.x-date-inner{
+ /* Fix for webkit browsers */
+ width: 175px;
+}
+
+
+.x-date-inner th {
+ width:25px;
+}
+
+.x-date-inner th {
+ background: repeat-x left top;
+ text-align:right !important;
+ border-bottom: 1px solid;
+ cursor:default;
+ padding:0;
+ border-collapse:separate;
+}
+
+.x-date-inner th span {
+ display:block;
+ padding:2px;
+ padding-right:7px;
+}
+
+.x-date-inner td {
+ border: 1px solid;
+ text-align:right;
+ padding:0;
+}
+
+.x-date-inner a {
+ padding:2px 5px;
+ display:block;
+ text-decoration:none;
+ text-align:right;
+ zoom:1;
+}
+
+.x-date-inner .x-date-active{
+ cursor:pointer;
+ color:black;
+}
+
+.x-date-inner .x-date-selected a{
+ background: repeat-x left top;
+ border:1px solid;
+ padding:1px 4px;
+}
+
+.x-date-inner .x-date-today a{
+ border: 1px solid;
+ padding:1px 4px;
+}
+
+.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a {
+ text-decoration:none !important;
+}
+
+.x-date-bottom {
+ padding:4px;
+ border-top: 1px solid;
+ background: repeat-x left top;
+}
+
+.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{
+ text-decoration:none !important;
+}
+
+.x-item-disabled .x-date-inner a:hover{
+ background: none;
+}
+
+.x-date-inner .x-date-disabled a {
+ cursor:default;
+}
+
+.x-date-menu .x-menu-item {
+ padding:1px 24px 1px 4px;
+ white-space: nowrap;
+}
+
+.x-date-menu .x-menu-item .x-menu-item-icon {
+ width:10px;
+ height:10px;
+ margin-right:5px;
+ background-position:center -4px !important;
+}
+
+.x-date-mp {
+ position:absolute;
+ left:0;
+ top:0;
+ display:none;
+}
+
+.x-date-mp td {
+ padding:2px;
+ font:normal 11px arial, helvetica,tahoma,sans-serif;
+}
+
+td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn {
+ border: 0 none;
+ text-align:center;
+ vertical-align: middle;
+ width:25%;
+}
+
+.x-date-mp-ok {
+ margin-right:3px;
+}
+
+.x-date-mp-btns button {
+ text-decoration:none;
+ text-align:center;
+ text-decoration:none !important;
+ border:1px solid;
+ padding:1px 3px 1px;
+ cursor:pointer;
+}
+
+.x-date-mp-btns {
+ background: repeat-x left top;
+}
+
+.x-date-mp-btns td {
+ border-top: 1px solid;
+ text-align:center;
+}
+
+td.x-date-mp-month a,td.x-date-mp-year a {
+ display:block;
+ padding:2px 4px;
+ text-decoration:none;
+ text-align:center;
+}
+
+td.x-date-mp-month a:hover,td.x-date-mp-year a:hover {
+ text-decoration:none;
+ cursor:pointer;
+}
+
+td.x-date-mp-sel a {
+ padding:1px 3px;
+ background: repeat-x left top;
+ border:1px solid;
+}
+
+.x-date-mp-ybtn a {
+ overflow:hidden;
+ width:15px;
+ height:15px;
+ cursor:pointer;
+ background:transparent no-repeat;
+ display:block;
+ margin:0 auto;
+}
+
+.x-date-mp-ybtn a.x-date-mp-next {
+ background-position:0 -120px;
+}
+
+.x-date-mp-ybtn a.x-date-mp-next:hover {
+ background-position:-15px -120px;
+}
+
+.x-date-mp-ybtn a.x-date-mp-prev {
+ background-position:0 -105px;
+}
+
+.x-date-mp-ybtn a.x-date-mp-prev:hover {
+ background-position:-15px -105px;
+}
+
+.x-date-mp-ybtn {
+ text-align:center;
+}
+
+td.x-date-mp-sep {
+ border-right:1px solid;
+}.x-tip{
+ position: absolute;
+ top: 0;
+ left:0;
+ visibility: hidden;
+ z-index: 20002;
+ border:0 none;
+}
+
+.x-tip .x-tip-close{
+ height: 15px;
+ float:right;
+ width: 15px;
+ margin:0 0 2px 2px;
+ cursor:pointer;
+ display:none;
+}
+
+.x-tip .x-tip-tc {
+ background: transparent no-repeat 0 -62px;
+ padding-top:3px;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tip .x-tip-tl {
+ background: transparent no-repeat 0 0;
+ padding-left:6px;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tip .x-tip-tr {
+ background: transparent no-repeat right 0;
+ padding-right:6px;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tip .x-tip-bc {
+ background: transparent no-repeat 0 -121px;
+ height:3px;
+ overflow:hidden;
+}
+
+.x-tip .x-tip-bl {
+ background: transparent no-repeat 0 -59px;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-tip .x-tip-br {
+ background: transparent no-repeat right -59px;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-tip .x-tip-mc {
+ border:0 none;
+}
+
+.x-tip .x-tip-ml {
+ background: no-repeat 0 -124px;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-tip .x-tip-mr {
+ background: transparent no-repeat right -124px;
+ padding-right:6px;
+ zoom:1;
+}
+
+.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc {
+ font-size:0;
+ line-height:0;
+}
+
+.ext-border-box .x-tip .x-tip-header, .ext-border-box .x-tip .x-tip-tc{
+ line-height: 1px;
+}
+
+.x-tip .x-tip-header-text {
+ padding:0;
+ margin:0 0 2px 0;
+}
+
+.x-tip .x-tip-body {
+ margin:0 !important;
+ line-height:14px;
+ padding:0;
+}
+
+.x-tip .x-tip-body .loading-indicator {
+ margin:0;
+}
+
+.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text {
+ cursor:move;
+}
+
+.x-form-invalid-tip .x-tip-tc {
+ background: repeat-x 0 -12px;
+ padding-top:6px;
+}
+
+.x-form-invalid-tip .x-tip-bc {
+ background: repeat-x 0 -18px;
+ height:6px;
+}
+
+.x-form-invalid-tip .x-tip-bl {
+ background: no-repeat 0 -6px;
+}
+
+.x-form-invalid-tip .x-tip-br {
+ background: no-repeat right -6px;
+}
+
+.x-form-invalid-tip .x-tip-body {
+ padding:2px;
+}
+
+.x-form-invalid-tip .x-tip-body {
+ padding-left:24px;
+ background:transparent no-repeat 2px 2px;
+}
+
+.x-tip-anchor {
+ position: absolute;
+ width: 9px;
+ height: 10px;
+ overflow:hidden;
+ background: transparent no-repeat 0 0;
+ zoom:1;
+}
+.x-tip-anchor-bottom {
+ background-position: -9px 0;
+}
+.x-tip-anchor-right {
+ background-position: -18px 0;
+ width: 10px;
+}
+.x-tip-anchor-left {
+ background-position: -28px 0;
+ width: 10px;
+}.x-menu {
+ z-index: 15000;
+ zoom: 1;
+ background: repeat-y;
+}
+
+.x-menu-floating{
+ border: 1px solid;
+}
+
+.x-menu a {
+ text-decoration: none !important;
+}
+
+.ext-ie .x-menu {
+ zoom:1;
+ overflow:hidden;
+}
+
+.x-menu-list{
+ padding: 2px;
+ background-color:transparent;
+ border:0 none;
+ overflow:hidden;
+ overflow-y: hidden;
+}
+
+.ext-strict .ext-ie .x-menu-list{
+ position: relative;
+}
+
+.x-menu li{
+ line-height:100%;
+}
+
+.x-menu li.x-menu-sep-li{
+ font-size:1px;
+ line-height:1px;
+}
+
+.x-menu-list-item{
+ white-space: nowrap;
+ display:block;
+ padding:1px;
+}
+
+.x-menu-item{
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+}
+
+.x-menu-item-arrow{
+ background:transparent no-repeat right;
+}
+
+.x-menu-sep {
+ display:block;
+ font-size:1px;
+ line-height:1px;
+ margin: 2px 3px;
+ border-bottom:1px solid;
+ overflow:hidden;
+}
+
+.x-menu-focus {
+ position:absolute;
+ left:-1px;
+ top:-1px;
+ width:1px;
+ height:1px;
+ line-height:1px;
+ font-size:1px;
+ -moz-outline:0 none;
+ outline:0 none;
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+ overflow:hidden;
+ display:block;
+}
+
+a.x-menu-item {
+ cursor: pointer;
+ display: block;
+ line-height: 16px;
+ outline-color: -moz-use-text-color;
+ outline-style: none;
+ outline-width: 0;
+ padding: 3px 21px 3px 27px;
+ position: relative;
+ text-decoration: none;
+ white-space: nowrap;
+}
+
+.x-menu-item-active {
+ background-repeat: repeat-x;
+ background-position: left bottom;
+ border-style:solid;
+ border-width: 1px 0;
+ margin:0 1px;
+ padding: 0;
+}
+
+.x-menu-item-active a.x-menu-item {
+ border-style:solid;
+ border-width:0 1px;
+ margin:0 -1px;
+}
+
+.x-menu-item-icon {
+ border: 0 none;
+ height: 16px;
+ padding: 0;
+ vertical-align: top;
+ width: 16px;
+ position: absolute;
+ left: 3px;
+ top: 3px;
+ margin: 0;
+ background-position:center;
+}
+
+.ext-ie .x-menu-item-icon {
+ left: -24px;
+}
+.ext-strict .x-menu-item-icon {
+ left: 3px;
+}
+
+.ext-ie6 .x-menu-item-icon {
+ left: -24px;
+}
+
+.ext-ie .x-menu-item-icon {
+ vertical-align: middle;
+}
+
+.x-menu-check-item .x-menu-item-icon{
+ background: transparent no-repeat center;
+}
+
+.x-menu-group-item .x-menu-item-icon{
+ background-color: transparent;
+}
+
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{
+ background: transparent no-repeat center;
+}
+
+.x-date-menu .x-menu-list{
+ padding: 0;
+}
+
+.x-menu-date-item{
+ padding:0;
+}
+
+.x-menu .x-color-palette, .x-menu .x-date-picker{
+ margin-left: 26px;
+ margin-right:4px;
+}
+
+.x-menu .x-date-picker{
+ border:1px solid;
+ margin-top:2px;
+ margin-bottom:2px;
+}
+
+.x-menu-plain .x-color-palette, .x-menu-plain .x-date-picker{
+ margin: 0;
+ border: 0 none;
+}
+
+.x-date-menu {
+ padding:0 !important;
+}
+
+/*
+ * fixes separator visibility problem in IE 6
+ */
+.ext-strict .ext-ie6 .x-menu-sep-li {
+ padding: 3px 4px;
+}
+.ext-strict .ext-ie6 .x-menu-sep {
+ margin: 0;
+ height: 1px;
+}
+
+/*
+ * Fixes an issue with "fat" separators in webkit
+ */
+.ext-webkit .x-menu-sep{
+ height: 1px;
+}
+
+/*
+ * Ugly mess to remove the white border under the picker
+ */
+.ext-ie .x-date-menu{
+ height: 199px;
+}
+
+.ext-strict .ext-ie .x-date-menu, .ext-border-box .ext-ie8 .x-date-menu{
+ height: 197px;
+}
+
+.ext-strict .ext-ie7 .x-date-menu{
+ height: 195px;
+}
+
+.ext-strict .ext-ie8 .x-date-menu{
+ height: auto;
+}
+
+.x-cycle-menu .x-menu-item-checked {
+ border:1px dotted !important;
+ padding:0;
+}
+
+.x-menu .x-menu-scroller {
+ width: 100%;
+ background-repeat:no-repeat;
+ background-position:center;
+ height:8px;
+ line-height: 8px;
+ cursor:pointer;
+ margin: 0;
+ padding: 0;
+}
+
+.x-menu .x-menu-scroller-active{
+ height: 6px;
+ line-height: 6px;
+}
+
+.x-menu-list-item-indent{
+ padding-left: 27px;
+}/*
+ Creates rounded, raised boxes like on the Ext website - the markup isn't pretty:
+ <div class="x-box-blue">
+ <div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>
+ <div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc">
+ <h3>YOUR TITLE HERE (optional)</h3>
+ <div>YOUR CONTENT HERE</div>
+ </div></div></div>
+ <div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>
+ </div>
+ */
+
+.x-box-tl {
+ background: transparent no-repeat 0 0;
+ zoom:1;
+}
+
+.x-box-tc {
+ height: 8px;
+ background: transparent repeat-x 0 0;
+ overflow: hidden;
+}
+
+.x-box-tr {
+ background: transparent no-repeat right -8px;
+}
+
+.x-box-ml {
+ background: transparent repeat-y 0;
+ padding-left: 4px;
+ overflow: hidden;
+ zoom:1;
+}
+
+.x-box-mc {
+ background: repeat-x 0 -16px;
+ padding: 4px 10px;
+}
+
+.x-box-mc h3 {
+ margin: 0 0 4px 0;
+ zoom:1;
+}
+
+.x-box-mr {
+ background: transparent repeat-y right;
+ padding-right: 4px;
+ overflow: hidden;
+}
+
+.x-box-bl {
+ background: transparent no-repeat 0 -16px;
+ zoom:1;
+}
+
+.x-box-bc {
+ background: transparent repeat-x 0 -8px;
+ height: 8px;
+ overflow: hidden;
+}
+
+.x-box-br {
+ background: transparent no-repeat right -24px;
+}
+
+.x-box-tl, .x-box-bl {
+ padding-left: 8px;
+ overflow: hidden;
+}
+
+.x-box-tr, .x-box-br {
+ padding-right: 8px;
+ overflow: hidden;
+}.x-combo-list {
+ border:1px solid;
+ zoom:1;
+ overflow:hidden;
+}
+
+.x-combo-list-inner {
+ overflow:auto;
+ position:relative; /* for calculating scroll offsets */
+ zoom:1;
+ overflow-x:hidden;
+}
+
+.x-combo-list-hd {
+ border-bottom:1px solid;
+ padding:3px;
+}
+
+.x-resizable-pinned .x-combo-list-inner {
+ border-bottom:1px solid;
+}
+
+.x-combo-list-item {
+ padding:2px;
+ border:1px solid;
+ white-space: nowrap;
+ overflow:hidden;
+ text-overflow: ellipsis;
+}
+
+.x-combo-list .x-combo-selected{
+ border:1px dotted !important;
+ cursor:pointer;
+}
+
+.x-combo-list .x-toolbar {
+ border-top:1px solid;
+ border-bottom:0 none;
+}.x-panel {
+ border-style: solid;
+ border-width:0;
+}
+
+.x-panel-header {
+ overflow:hidden;
+ zoom:1;
+ padding:5px 3px 4px 5px;
+ border:1px solid;
+ line-height: 15px;
+ background: transparent repeat-x 0 -1px;
+}
+
+.x-panel-body {
+ border:1px solid;
+ border-top:0 none;
+ overflow:hidden;
+ position: relative; /* added for item scroll positioning */
+}
+
+.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar {
+ border:1px solid;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar {
+ border-top:1px solid;
+ border-bottom: 0 none;
+}
+
+.x-panel-body-noheader, .x-panel-mc .x-panel-body {
+ border-top:1px solid;
+}
+
+.x-panel-header {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-panel-tl .x-panel-header {
+ padding:5px 0 4px 0;
+ border:0 none;
+ background:transparent no-repeat;
+}
+
+.x-panel-tl .x-panel-icon, .x-window-tl .x-panel-icon {
+ padding-left:20px !important;
+ background-repeat:no-repeat;
+ background-position:0 4px;
+ zoom:1;
+}
+
+.x-panel-inline-icon {
+ width:16px;
+ height:16px;
+ background-repeat:no-repeat;
+ background-position:0 0;
+ vertical-align:middle;
+ margin-right:4px;
+ margin-top:-1px;
+ margin-bottom:-1px;
+}
+
+.x-panel-tc {
+ background: transparent repeat-x 0 0;
+ overflow:hidden;
+}
+
+/* fix ie7 strict mode bug */
+.ext-strict .ext-ie7 .x-panel-tc {
+ overflow: visible;
+}
+
+.x-panel-tl {
+ background: transparent no-repeat 0 0;
+ padding-left:6px;
+ zoom:1;
+ border-bottom:1px solid;
+}
+
+.x-panel-tr {
+ background: transparent no-repeat right 0;
+ zoom:1;
+ padding-right:6px;
+}
+
+.x-panel-bc {
+ background: transparent repeat-x 0 bottom;
+ zoom:1;
+}
+
+.x-panel-bc .x-panel-footer {
+ zoom:1;
+}
+
+.x-panel-bl {
+ background: transparent no-repeat 0 bottom;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-panel-br {
+ background: transparent no-repeat right bottom;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-panel-mc {
+ border:0 none;
+ padding:0;
+ margin:0;
+ padding-top:6px;
+}
+
+.x-panel-mc .x-panel-body {
+ background-color:transparent;
+ border: 0 none;
+}
+
+.x-panel-ml {
+ background: repeat-y 0 0;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-panel-mr {
+ background: transparent repeat-y right 0;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-panel-bc .x-panel-footer {
+ padding-bottom:6px;
+}
+
+.x-panel-nofooter .x-panel-bc, .x-panel-nofooter .x-window-bc {
+ height:6px;
+ font-size:0;
+ line-height:0;
+}
+
+.x-panel-bwrap {
+ overflow:hidden;
+ zoom:1;
+ left:0;
+ top:0;
+}
+.x-panel-body {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-panel-collapsed .x-resizable-handle{
+ display:none;
+}
+
+.ext-gecko .x-panel-animated div {
+ overflow:hidden !important;
+}
+
+/* Plain */
+.x-plain-body {
+ overflow:hidden;
+}
+
+.x-plain-bbar .x-toolbar {
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-plain-tbar .x-toolbar {
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-plain-bwrap {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-plain {
+ overflow:hidden;
+}
+
+/* Tools */
+.x-tool {
+ overflow:hidden;
+ width:15px;
+ height:15px;
+ float:right;
+ cursor:pointer;
+ background:transparent no-repeat;
+ margin-left:2px;
+}
+
+/* expand / collapse tools */
+.x-tool-toggle {
+ background-position:0 -60px;
+}
+
+.x-tool-toggle-over {
+ background-position:-15px -60px;
+}
+
+.x-panel-collapsed .x-tool-toggle {
+ background-position:0 -75px;
+}
+
+.x-panel-collapsed .x-tool-toggle-over {
+ background-position:-15px -75px;
+}
+
+
+.x-tool-close {
+ background-position:0 -0;
+}
+
+.x-tool-close-over {
+ background-position:-15px 0;
+}
+
+.x-tool-minimize {
+ background-position:0 -15px;
+}
+
+.x-tool-minimize-over {
+ background-position:-15px -15px;
+}
+
+.x-tool-maximize {
+ background-position:0 -30px;
+}
+
+.x-tool-maximize-over {
+ background-position:-15px -30px;
+}
+
+.x-tool-restore {
+ background-position:0 -45px;
+}
+
+.x-tool-restore-over {
+ background-position:-15px -45px;
+}
+
+.x-tool-gear {
+ background-position:0 -90px;
+}
+
+.x-tool-gear-over {
+ background-position:-15px -90px;
+}
+
+.x-tool-prev {
+ background-position:0 -105px;
+}
+
+.x-tool-prev-over {
+ background-position:-15px -105px;
+}
+
+.x-tool-next {
+ background-position:0 -120px;
+}
+
+.x-tool-next-over {
+ background-position:-15px -120px;
+}
+
+.x-tool-pin {
+ background-position:0 -135px;
+}
+
+.x-tool-pin-over {
+ background-position:-15px -135px;
+}
+
+.x-tool-unpin {
+ background-position:0 -150px;
+}
+
+.x-tool-unpin-over {
+ background-position:-15px -150px;
+}
+
+.x-tool-right {
+ background-position:0 -165px;
+}
+
+.x-tool-right-over {
+ background-position:-15px -165px;
+}
+
+.x-tool-left {
+ background-position:0 -180px;
+}
+
+.x-tool-left-over {
+ background-position:-15px -180px;
+}
+
+.x-tool-down {
+ background-position:0 -195px;
+}
+
+.x-tool-down-over {
+ background-position:-15px -195px;
+}
+
+.x-tool-up {
+ background-position:0 -210px;
+}
+
+.x-tool-up-over {
+ background-position:-15px -210px;
+}
+
+.x-tool-refresh {
+ background-position:0 -225px;
+}
+
+.x-tool-refresh-over {
+ background-position:-15px -225px;
+}
+
+.x-tool-plus {
+ background-position:0 -240px;
+}
+
+.x-tool-plus-over {
+ background-position:-15px -240px;
+}
+
+.x-tool-minus {
+ background-position:0 -255px;
+}
+
+.x-tool-minus-over {
+ background-position:-15px -255px;
+}
+
+.x-tool-search {
+ background-position:0 -270px;
+}
+
+.x-tool-search-over {
+ background-position:-15px -270px;
+}
+
+.x-tool-save {
+ background-position:0 -285px;
+}
+
+.x-tool-save-over {
+ background-position:-15px -285px;
+}
+
+.x-tool-help {
+ background-position:0 -300px;
+}
+
+.x-tool-help-over {
+ background-position:-15px -300px;
+}
+
+.x-tool-print {
+ background-position:0 -315px;
+}
+
+.x-tool-print-over {
+ background-position:-15px -315px;
+}
+
+.x-tool-expand {
+ background-position:0 -330px;
+}
+
+.x-tool-expand-over {
+ background-position:-15px -330px;
+}
+
+.x-tool-collapse {
+ background-position:0 -345px;
+}
+
+.x-tool-collapse-over {
+ background-position:-15px -345px;
+}
+
+.x-tool-resize {
+ background-position:0 -360px;
+}
+
+.x-tool-resize-over {
+ background-position:-15px -360px;
+}
+
+.x-tool-move {
+ background-position:0 -375px;
+}
+
+.x-tool-move-over {
+ background-position:-15px -375px;
+}
+
+/* Ghosting */
+.x-panel-ghost {
+ z-index:12000;
+ overflow:hidden;
+ position:absolute;
+ left:0;top:0;
+ opacity:.65;
+ -moz-opacity:.65;
+ filter:alpha(opacity=65);
+}
+
+.x-panel-ghost ul {
+ margin:0;
+ padding:0;
+ overflow:hidden;
+ font-size:0;
+ line-height:0;
+ border:1px solid;
+ border-top:0 none;
+ display:block;
+}
+
+.x-panel-ghost * {
+ cursor:move !important;
+}
+
+.x-panel-dd-spacer {
+ border:2px dashed;
+}
+
+/* Buttons */
+.x-panel-btns {
+ padding:5px;
+ overflow:hidden;
+}
+
+.x-panel-btns td.x-toolbar-cell{
+ padding:3px;
+}
+
+.x-panel-btns .x-btn-focus .x-btn-left{
+ background-position:0 -147px;
+}
+
+.x-panel-btns .x-btn-focus .x-btn-right{
+ background-position:0 -168px;
+}
+
+.x-panel-btns .x-btn-focus .x-btn-center{
+ background-position:0 -189px;
+}
+
+.x-panel-btns .x-btn-over .x-btn-left{
+ background-position:0 -63px;
+}
+
+.x-panel-btns .x-btn-over .x-btn-right{
+ background-position:0 -84px;
+}
+
+.x-panel-btns .x-btn-over .x-btn-center{
+ background-position:0 -105px;
+}
+
+.x-panel-btns .x-btn-click .x-btn-center{
+ background-position:0 -126px;
+}
+
+.x-panel-btns .x-btn-click .x-btn-right{
+ background-position:0 -84px;
+}
+
+.x-panel-btns .x-btn-click .x-btn-left{
+ background-position:0 -63px;
+}
+
+.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{
+ white-space: nowrap;
+}
+/**
+ * W3C Suggested Default style sheet for HTML 4
+ * http://www.w3.org/TR/CSS21/sample.html
+ *
+ * Resets for Ext.Panel @cfg normal: true
+ */
+.x-panel-reset .x-panel-body html,
+.x-panel-reset .x-panel-body address,
+.x-panel-reset .x-panel-body blockquote,
+.x-panel-reset .x-panel-body body,
+.x-panel-reset .x-panel-body dd,
+.x-panel-reset .x-panel-body div,
+.x-panel-reset .x-panel-body dl,
+.x-panel-reset .x-panel-body dt,
+.x-panel-reset .x-panel-body fieldset,
+.x-panel-reset .x-panel-body form,
+.x-panel-reset .x-panel-body frame, frameset,
+.x-panel-reset .x-panel-body h1,
+.x-panel-reset .x-panel-body h2,
+.x-panel-reset .x-panel-body h3,
+.x-panel-reset .x-panel-body h4,
+.x-panel-reset .x-panel-body h5,
+.x-panel-reset .x-panel-body h6,
+.x-panel-reset .x-panel-body noframes,
+.x-panel-reset .x-panel-body ol,
+.x-panel-reset .x-panel-body p,
+.x-panel-reset .x-panel-body ul,
+.x-panel-reset .x-panel-body center,
+.x-panel-reset .x-panel-body dir,
+.x-panel-reset .x-panel-body hr,
+.x-panel-reset .x-panel-body menu,
+.x-panel-reset .x-panel-body pre { display: block }
+.x-panel-reset .x-panel-body li { display: list-item }
+.x-panel-reset .x-panel-body head { display: none }
+.x-panel-reset .x-panel-body table { display: table }
+.x-panel-reset .x-panel-body tr { display: table-row }
+.x-panel-reset .x-panel-body thead { display: table-header-group }
+.x-panel-reset .x-panel-body tbody { display: table-row-group }
+.x-panel-reset .x-panel-body tfoot { display: table-footer-group }
+.x-panel-reset .x-panel-body col { display: table-column }
+.x-panel-reset .x-panel-body colgroup { display: table-column-group }
+.x-panel-reset .x-panel-body td,
+.x-panel-reset .x-panel-body th { display: table-cell }
+.x-panel-reset .x-panel-body caption { display: table-caption }
+.x-panel-reset .x-panel-body th { font-weight: bolder; text-align: center }
+.x-panel-reset .x-panel-body caption { text-align: center }
+.x-panel-reset .x-panel-body body { margin: 8px }
+.x-panel-reset .x-panel-body h1 { font-size: 2em; margin: .67em 0 }
+.x-panel-reset .x-panel-body h2 { font-size: 1.5em; margin: .75em 0 }
+.x-panel-reset .x-panel-body h3 { font-size: 1.17em; margin: .83em 0 }
+.x-panel-reset .x-panel-body h4,
+.x-panel-reset .x-panel-body p,
+.x-panel-reset .x-panel-body blockquote,
+.x-panel-reset .x-panel-body ul,
+.x-panel-reset .x-panel-body fieldset,
+.x-panel-reset .x-panel-body form,
+.x-panel-reset .x-panel-body ol,
+.x-panel-reset .x-panel-body dl,
+.x-panel-reset .x-panel-body dir,
+.x-panel-reset .x-panel-body menu { margin: 1.12em 0 }
+.x-panel-reset .x-panel-body h5 { font-size: .83em; margin: 1.5em 0 }
+.x-panel-reset .x-panel-body h6 { font-size: .75em; margin: 1.67em 0 }
+.x-panel-reset .x-panel-body h1,
+.x-panel-reset .x-panel-body h2,
+.x-panel-reset .x-panel-body h3,
+.x-panel-reset .x-panel-body h4,
+.x-panel-reset .x-panel-body h5,
+.x-panel-reset .x-panel-body h6,
+.x-panel-reset .x-panel-body b,
+.x-panel-reset .x-panel-body strong { font-weight: bolder }
+.x-panel-reset .x-panel-body blockquote { margin-left: 40px; margin-right: 40px }
+.x-panel-reset .x-panel-body i,
+.x-panel-reset .x-panel-body cite,
+.x-panel-reset .x-panel-body em,
+.x-panel-reset .x-panel-body var,
+.x-panel-reset .x-panel-body address { font-style: italic }
+.x-panel-reset .x-panel-body pre,
+.x-panel-reset .x-panel-body tt,
+.x-panel-reset .x-panel-body code,
+.x-panel-reset .x-panel-body kbd,
+.x-panel-reset .x-panel-body samp { font-family: monospace }
+.x-panel-reset .x-panel-body pre { white-space: pre }
+.x-panel-reset .x-panel-body button,
+.x-panel-reset .x-panel-body textarea,
+.x-panel-reset .x-panel-body input,
+.x-panel-reset .x-panel-body select { display: inline-block }
+.x-panel-reset .x-panel-body big { font-size: 1.17em }
+.x-panel-reset .x-panel-body small,
+.x-panel-reset .x-panel-body sub,
+.x-panel-reset .x-panel-body sup { font-size: .83em }
+.x-panel-reset .x-panel-body sub { vertical-align: sub }
+.x-panel-reset .x-panel-body sup { vertical-align: super }
+.x-panel-reset .x-panel-body table { border-spacing: 2px; }
+.x-panel-reset .x-panel-body thead,
+.x-panel-reset .x-panel-body tbody,
+.x-panel-reset .x-panel-body tfoot { vertical-align: middle }
+.x-panel-reset .x-panel-body td,
+.x-panel-reset .x-panel-body th { vertical-align: inherit }
+.x-panel-reset .x-panel-body s,
+.x-panel-reset .x-panel-body strike,
+.x-panel-reset .x-panel-body del { text-decoration: line-through }
+.x-panel-reset .x-panel-body hr { border: 1px inset }
+.x-panel-reset .x-panel-body ol,
+.x-panel-reset .x-panel-body ul,
+.x-panel-reset .x-panel-body dir,
+.x-panel-reset .x-panel-body menu,
+.x-panel-reset .x-panel-body dd { margin-left: 40px }
+.x-panel-reset .x-panel-body ul, .x-panel-reset .x-panel-body menu, .x-panel-reset .x-panel-body dir { list-style-type: disc;}
+.x-panel-reset .x-panel-body ol { list-style-type: decimal }
+.x-panel-reset .x-panel-body ol ul,
+.x-panel-reset .x-panel-body ul ol,
+.x-panel-reset .x-panel-body ul ul,
+.x-panel-reset .x-panel-body ol ol { margin-top: 0; margin-bottom: 0 }
+.x-panel-reset .x-panel-body u,
+.x-panel-reset .x-panel-body ins { text-decoration: underline }
+.x-panel-reset .x-panel-body br:before { content: "\A" }
+.x-panel-reset .x-panel-body :before, .x-panel-reset .x-panel-body :after { white-space: pre-line }
+.x-panel-reset .x-panel-body center { text-align: center }
+.x-panel-reset .x-panel-body :link, .x-panel-reset .x-panel-body :visited { text-decoration: underline }
+.x-panel-reset .x-panel-body :focus { outline: invert dotted thin }
+
+/* Begin bidirectionality settings (do not change) */
+.x-panel-reset .x-panel-body BDO[DIR="ltr"] { direction: ltr; unicode-bidi: bidi-override }
+.x-panel-reset .x-panel-body BDO[DIR="rtl"] { direction: rtl; unicode-bidi: bidi-override }
+.x-window {
+ zoom:1;
+}
+
+.x-window .x-window-handle {
+ opacity:0;
+ -moz-opacity:0;
+ filter:alpha(opacity=0);
+}
+
+.x-window-proxy {
+ border:1px solid;
+ z-index:12000;
+ overflow:hidden;
+ position:absolute;
+ left:0;top:0;
+ display:none;
+ opacity:.5;
+ -moz-opacity:.5;
+ filter:alpha(opacity=50);
+}
+
+.x-window-header {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-window-bwrap {
+ z-index:1;
+ position:relative;
+ zoom:1;
+ left:0;top:0;
+}
+
+.x-window-tl .x-window-header {
+ padding:5px 0 4px 0;
+}
+
+.x-window-header-text {
+ cursor:pointer;
+}
+
+.x-window-tc {
+ background: transparent repeat-x 0 0;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-window-tl {
+ background: transparent no-repeat 0 0;
+ padding-left:6px;
+ zoom:1;
+ z-index:1;
+ position:relative;
+}
+
+.x-window-tr {
+ background: transparent no-repeat right 0;
+ padding-right:6px;
+}
+
+.x-window-bc {
+ background: transparent repeat-x 0 bottom;
+ zoom:1;
+}
+
+.x-window-bc .x-window-footer {
+ padding-bottom:6px;
+ zoom:1;
+ font-size:0;
+ line-height:0;
+}
+
+.x-window-bl {
+ background: transparent no-repeat 0 bottom;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-window-br {
+ background: transparent no-repeat right bottom;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-window-mc {
+ border:1px solid;
+ padding:0;
+ margin:0;
+}
+
+.x-window-ml {
+ background: transparent repeat-y 0 0;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-window-mr {
+ background: transparent repeat-y right 0;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-window-body {
+ overflow:hidden;
+}
+
+.x-window-bwrap {
+ overflow:hidden;
+}
+
+.x-window-maximized .x-window-bl, .x-window-maximized .x-window-br,
+ .x-window-maximized .x-window-ml, .x-window-maximized .x-window-mr,
+ .x-window-maximized .x-window-tl, .x-window-maximized .x-window-tr {
+ padding:0;
+}
+
+.x-window-maximized .x-window-footer {
+ padding-bottom:0;
+}
+
+.x-window-maximized .x-window-tc {
+ padding-left:3px;
+ padding-right:3px;
+}
+
+.x-window-maximized .x-window-mc {
+ border-left:0 none;
+ border-right:0 none;
+}
+
+.x-window-tbar .x-toolbar, .x-window-bbar .x-toolbar {
+ border-left:0 none;
+ border-right: 0 none;
+}
+
+.x-window-bbar .x-toolbar {
+ border-top:1px solid;
+ border-bottom:0 none;
+}
+
+.x-window-draggable, .x-window-draggable .x-window-header-text {
+ cursor:move;
+}
+
+.x-window-maximized .x-window-draggable, .x-window-maximized .x-window-draggable .x-window-header-text {
+ cursor:default;
+}
+
+.x-window-body {
+ background-color:transparent;
+}
+
+.x-panel-ghost .x-window-tl {
+ border-bottom:1px solid;
+}
+
+.x-panel-collapsed .x-window-tl {
+ border-bottom:1px solid;
+}
+
+.x-window-maximized-ct {
+ overflow:hidden;
+}
+
+.x-window-maximized .x-window-handle {
+ display:none;
+}
+
+.x-window-sizing-ghost ul {
+ border:0 none !important;
+}
+
+.x-dlg-focus{
+ -moz-outline:0 none;
+ outline:0 none;
+ width:0;
+ height:0;
+ overflow:hidden;
+ position:absolute;
+ top:0;
+ left:0;
+}
+
+.ext-webkit .x-dlg-focus{
+ width: 1px;
+ height: 1px;
+}
+
+.x-dlg-mask{
+ z-index:10000;
+ display:none;
+ position:absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity:.50;
+ filter: alpha(opacity=50);
+}
+
+body.ext-ie6.x-body-masked select {
+ visibility:hidden;
+}
+
+body.ext-ie6.x-body-masked .x-window select {
+ visibility:visible;
+}
+
+.x-window-plain .x-window-mc {
+ border: 1px solid;
+}
+
+.x-window-plain .x-window-body {
+ border: 1px solid;
+ background:transparent !important;
+}.x-html-editor-wrap {
+ border:1px solid;
+}
+
+.x-html-editor-tb .x-btn-text {
+ background:transparent no-repeat;
+}
+
+.x-html-editor-tb .x-edit-bold, .x-menu-item img.x-edit-bold {
+ background-position:0 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-italic, .x-menu-item img.x-edit-italic {
+ background-position:-16px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-underline, .x-menu-item img.x-edit-underline {
+ background-position:-32px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-forecolor, .x-menu-item img.x-edit-forecolor {
+ background-position:-160px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-backcolor, .x-menu-item img.x-edit-backcolor {
+ background-position:-176px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-justifyleft, .x-menu-item img.x-edit-justifyleft {
+ background-position:-112px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-justifycenter, .x-menu-item img.x-edit-justifycenter {
+ background-position:-128px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-justifyright, .x-menu-item img.x-edit-justifyright {
+ background-position:-144px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-insertorderedlist, .x-menu-item img.x-edit-insertorderedlist {
+ background-position:-80px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-insertunorderedlist, .x-menu-item img.x-edit-insertunorderedlist {
+ background-position:-96px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-increasefontsize, .x-menu-item img.x-edit-increasefontsize {
+ background-position:-48px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-decreasefontsize, .x-menu-item img.x-edit-decreasefontsize {
+ background-position:-64px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-sourceedit, .x-menu-item img.x-edit-sourceedit {
+ background-position:-192px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-createlink, .x-menu-item img.x-edit-createlink {
+ background-position:-208px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+ padding:5px;
+ padding-bottom:1px;
+}
+
+.x-html-editor-tb .x-toolbar {
+ position:static !important;
+}.x-panel-noborder .x-panel-body-noborder {
+ border-width:0;
+}
+
+.x-panel-noborder .x-panel-header-noborder {
+ border-width:0 0 1px;
+ border-style:solid;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+ border-width:0 0 1px;
+ border-style:solid;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+ border-width:1px 0 0 0;
+ border-style:solid;
+}
+
+.x-window-noborder .x-window-mc {
+ border-width:0;
+}
+
+.x-window-plain .x-window-body-noborder {
+ border-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-body-noborder {
+ border-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-header-noborder {
+ border-width: 0 0 1px 0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-footer-noborder {
+ border-width: 1px 0 0 0;
+}
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+ border-width: 1px 0 0 0;
+ border-style:solid;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+ border-width:0 0 1px;
+ border-style:solid;
+}.x-border-layout-ct {
+ position: relative;
+}
+
+.x-border-panel {
+ position:absolute;
+ left:0;
+ top:0;
+}
+
+.x-tool-collapse-south {
+ background-position:0 -195px;
+}
+
+.x-tool-collapse-south-over {
+ background-position:-15px -195px;
+}
+
+.x-tool-collapse-north {
+ background-position:0 -210px;
+}
+
+.x-tool-collapse-north-over {
+ background-position:-15px -210px;
+}
+
+.x-tool-collapse-west {
+ background-position:0 -180px;
+}
+
+.x-tool-collapse-west-over {
+ background-position:-15px -180px;
+}
+
+.x-tool-collapse-east {
+ background-position:0 -165px;
+}
+
+.x-tool-collapse-east-over {
+ background-position:-15px -165px;
+}
+
+.x-tool-expand-south {
+ background-position:0 -210px;
+}
+
+.x-tool-expand-south-over {
+ background-position:-15px -210px;
+}
+
+.x-tool-expand-north {
+ background-position:0 -195px;
+}
+.x-tool-expand-north-over {
+ background-position:-15px -195px;
+}
+
+.x-tool-expand-west {
+ background-position:0 -165px;
+}
+
+.x-tool-expand-west-over {
+ background-position:-15px -165px;
+}
+
+.x-tool-expand-east {
+ background-position:0 -180px;
+}
+
+.x-tool-expand-east-over {
+ background-position:-15px -180px;
+}
+
+.x-tool-expand-north, .x-tool-expand-south {
+ float:right;
+ margin:3px;
+}
+
+.x-tool-expand-east, .x-tool-expand-west {
+ float:none;
+ margin:3px 2px;
+}
+
+.x-accordion-hd .x-tool-toggle {
+ background-position:0 -255px;
+}
+
+.x-accordion-hd .x-tool-toggle-over {
+ background-position:-15px -255px;
+}
+
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle {
+ background-position:0 -240px;
+}
+
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over {
+ background-position:-15px -240px;
+}
+
+.x-accordion-hd {
+ padding-top:4px;
+ padding-bottom:3px;
+ border-top:0 none;
+ background: transparent repeat-x 0 -9px;
+}
+
+.x-layout-collapsed{
+ position:absolute;
+ left:-10000px;
+ top:-10000px;
+ visibility:hidden;
+ width:20px;
+ height:20px;
+ overflow:hidden;
+ border:1px solid;
+ z-index:20;
+}
+
+.ext-border-box .x-layout-collapsed{
+ width:22px;
+ height:22px;
+}
+
+.x-layout-collapsed-over{
+ cursor:pointer;
+}
+
+.x-layout-collapsed-west .x-layout-collapsed-tools, .x-layout-collapsed-east .x-layout-collapsed-tools{
+ position:absolute;
+ top:0;
+ left:0;
+ width:20px;
+ height:20px;
+}
+
+
+.x-layout-split{
+ position:absolute;
+ height:5px;
+ width:5px;
+ line-height:1px;
+ font-size:1px;
+ z-index:3;
+ background-color:transparent;
+}
+
+/* IE6 strict won't drag w/out a color */
+.ext-strict .ext-ie6 .x-layout-split{
+ background-color: #fff !important;
+ filter: alpha(opacity=1);
+}
+
+.x-layout-split-h{
+ background-image:url(../images/default/s.gif);
+ background-position: left;
+}
+
+.x-layout-split-v{
+ background-image:url(../images/default/s.gif);
+ background-position: top;
+}
+
+.x-column-layout-ct {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-column {
+ float:left;
+ padding:0;
+ margin:0;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-column-inner {
+ overflow:hidden;
+ zoom:1;
+}
+
+/* mini mode */
+.x-layout-mini {
+ position:absolute;
+ top:0;
+ left:0;
+ display:block;
+ width:5px;
+ height:35px;
+ cursor:pointer;
+ opacity:.5;
+ -moz-opacity:.5;
+ filter:alpha(opacity=50);
+}
+
+.x-layout-mini-over, .x-layout-collapsed-over .x-layout-mini{
+ opacity:1;
+ -moz-opacity:1;
+ filter:none;
+}
+
+.x-layout-split-west .x-layout-mini {
+ top:48%;
+}
+
+.x-layout-split-east .x-layout-mini {
+ top:48%;
+}
+
+.x-layout-split-north .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+}
+
+.x-layout-split-south .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+}
+
+.x-layout-cmini-west .x-layout-mini {
+ top:48%;
+}
+
+.x-layout-cmini-east .x-layout-mini {
+ top:48%;
+}
+
+.x-layout-cmini-north .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+}
+
+.x-layout-cmini-south .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+}
+
+.x-layout-cmini-west, .x-layout-cmini-east {
+ border:0 none;
+ width:5px !important;
+ padding:0;
+ background-color:transparent;
+}
+
+.x-layout-cmini-north, .x-layout-cmini-south {
+ border:0 none;
+ height:5px !important;
+ padding:0;
+ background-color:transparent;
+}
+
+.x-viewport, .x-viewport body {
+ margin: 0;
+ padding: 0;
+ border: 0 none;
+ overflow: hidden;
+ height: 100%;
+}
+
+.x-abs-layout-item {
+ position:absolute;
+ left:0;
+ top:0;
+}
+
+.ext-ie input.x-abs-layout-item, .ext-ie textarea.x-abs-layout-item {
+ margin:0;
+}
+
+.x-box-layout-ct {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-box-inner {
+ overflow:hidden;
+ zoom:1;
+ position:relative;
+ left:0;
+ top:0;
+}
+
+.x-box-item {
+ position:absolute;
+ left:0;
+ top:0;
+}.x-progress-wrap {
+ border:1px solid;
+ overflow:hidden;
+}
+
+.x-progress-inner {
+ height:18px;
+ background:repeat-x;
+ position:relative;
+}
+
+.x-progress-bar {
+ height:18px;
+ float:left;
+ width:0;
+ background: repeat-x left center;
+ border-top:1px solid;
+ border-bottom:1px solid;
+ border-right:1px solid;
+}
+
+.x-progress-text {
+ padding:1px 5px;
+ overflow:hidden;
+ position:absolute;
+ left:0;
+ text-align:center;
+}
+
+.x-progress-text-back {
+ line-height:16px;
+}
+
+.ext-ie .x-progress-text-back {
+ line-height:15px;
+}
+
+.ext-strict .ext-ie7 .x-progress-text-back{
+ width: 100%;
+}
+.x-list-header{
+ background: repeat-x 0 bottom;
+ cursor:default;
+ zoom:1;
+ height:22px;
+}
+
+.x-list-header-inner div {
+ display:block;
+ float:left;
+ overflow:hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.x-list-header-inner div em {
+ display:block;
+ border-left:1px solid;
+ padding:4px 4px;
+ overflow:hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ line-height:14px;
+}
+
+.x-list-body {
+ overflow:auto;
+ overflow-x:hidden;
+ overflow-y:auto;
+ zoom:1;
+ float: left;
+ width: 100%;
+}
+
+.x-list-body dl {
+ zoom:1;
+}
+
+.x-list-body dt {
+ display:block;
+ float:left;
+ overflow:hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ cursor:pointer;
+ zoom:1;
+}
+
+.x-list-body dt em {
+ display:block;
+ padding:3px 4px;
+ overflow:hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+}
+
+.x-list-resizer {
+ border-left:1px solid;
+ border-right:1px solid;
+ position:absolute;
+ left:0;
+ top:0;
+}
+
+.x-list-header-inner em.sort-asc {
+ background: transparent no-repeat center 0;
+ border-style:solid;
+ border-width: 0 1px 1px;
+ padding-bottom:3px;
+}
+
+.x-list-header-inner em.sort-desc {
+ background: transparent no-repeat center -23px;
+ border-style:solid;
+ border-width: 0 1px 1px;
+ padding-bottom:3px;
+}
+
+/* Shared styles */
+.x-slider {
+ zoom:1;
+}
+
+.x-slider-inner {
+ position:relative;
+ left:0;
+ top:0;
+ overflow:visible;
+ zoom:1;
+}
+
+.x-slider-focus {
+ position:absolute;
+ left:0;
+ top:0;
+ width:1px;
+ height:1px;
+ line-height:1px;
+ font-size:1px;
+ -moz-outline:0 none;
+ outline:0 none;
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+ display:block;
+ overflow:hidden;
+}
+
+/* Horizontal styles */
+.x-slider-horz {
+ padding-left:7px;
+ background:transparent no-repeat 0 -22px;
+}
+
+.x-slider-horz .x-slider-end {
+ padding-right:7px;
+ zoom:1;
+ background:transparent no-repeat right -44px;
+}
+
+.x-slider-horz .x-slider-inner {
+ background:transparent repeat-x 0 0;
+ height:22px;
+}
+
+.x-slider-horz .x-slider-thumb {
+ width:14px;
+ height:15px;
+ position:absolute;
+ left:0;
+ top:3px;
+ background:transparent no-repeat 0 0;
+}
+
+.x-slider-horz .x-slider-thumb-over {
+ background-position: -14px -15px;
+}
+
+.x-slider-horz .x-slider-thumb-drag {
+ background-position: -28px -30px;
+}
+
+/* Vertical styles */
+.x-slider-vert {
+ padding-top:7px;
+ background:transparent no-repeat -44px 0;
+ width:22px;
+}
+
+.x-slider-vert .x-slider-end {
+ padding-bottom:7px;
+ zoom:1;
+ background:transparent no-repeat -22px bottom;
+}
+
+.x-slider-vert .x-slider-inner {
+ background:transparent repeat-y 0 0;
+}
+
+.x-slider-vert .x-slider-thumb {
+ width:15px;
+ height:14px;
+ position:absolute;
+ left:3px;
+ bottom:0;
+ background:transparent no-repeat 0 0;
+}
+
+.x-slider-vert .x-slider-thumb-over {
+ background-position: -15px -14px;
+}
+
+.x-slider-vert .x-slider-thumb-drag {
+ background-position: -30px -28px;
+}.x-window-dlg .x-window-body {
+ border:0 none !important;
+ padding:5px 10px;
+ overflow:hidden !important;
+}
+
+.x-window-dlg .x-window-mc {
+ border:0 none !important;
+}
+
+.x-window-dlg .ext-mb-input {
+ margin-top:4px;
+ width:95%;
+}
+
+.x-window-dlg .ext-mb-textarea {
+ margin-top:4px;
+}
+
+.x-window-dlg .x-progress-wrap {
+ margin-top:4px;
+}
+
+.ext-ie .x-window-dlg .x-progress-wrap {
+ margin-top:6px;
+}
+
+.x-window-dlg .x-msg-box-wait {
+ background:transparent no-repeat left;
+ display:block;
+ width:300px;
+ padding-left:18px;
+ line-height:18px;
+}
+
+.x-window-dlg .ext-mb-icon {
+ float:left;
+ width:47px;
+ height:32px;
+}
+
+.x-window-dlg .x-dlg-icon .ext-mb-content{
+ zoom: 1;
+ margin-left: 47px;
+}
+
+.x-window-dlg .ext-mb-info, .x-window-dlg .ext-mb-warning, .x-window-dlg .ext-mb-question, .x-window-dlg .ext-mb-error {
+ background:transparent no-repeat top left;
+}
+
+.ext-gecko2 .ext-mb-fix-cursor {
+ overflow:auto;
+}
diff --git a/deluge/ui/web/css/ext-extensions-debug.css b/deluge/ui/web/css/ext-extensions-debug.css
new file mode 100644
index 0000000..89a41fd
--- /dev/null
+++ b/deluge/ui/web/css/ext-extensions-debug.css
@@ -0,0 +1,261 @@
+/*
+ * ColumnTree styles
+ */
+.x-column-tree .x-tree-node {
+ zoom:1;
+}
+.x-column-tree .x-tree-node-el {
+ /*border-bottom:1px solid #eee; borders? */
+ zoom:1;
+}
+.x-column-tree .x-tree-selected {
+ background: #d9e8fb;
+}
+.x-column-tree .x-tree-node a {
+ line-height:18px;
+ vertical-align:middle;
+}
+.x-column-tree .x-tree-node a span{
+
+}
+.x-column-tree .x-tree-node .x-tree-selected a span{
+ background:transparent;
+ color:#000;
+}
+.x-tree-col {
+ float:left;
+ overflow:hidden;
+ padding:0 1px;
+ zoom:1;
+}
+
+.x-tree-col-text, .x-tree-hd-text {
+ overflow:hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ padding:3px 3px 3px 5px;
+ white-space: nowrap;
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-tree-headers {
+ background: #f9f9f9 url(../../resources/images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;
+ cursor:default;
+ zoom:1;
+}
+
+.x-tree-hd {
+ float:left;
+ overflow:hidden;
+ border-left:1px solid #eee;
+ border-right:1px solid #d0d0d0;
+}
+
+/*
+ * FileUploadField component styles
+ */
+.x-form-file-wrap {
+ position: relative;
+ height: 22px;
+}
+.x-form-file-wrap .x-form-file {
+ position: absolute;
+ right: 0;
+ -moz-opacity: 0;
+ filter:alpha(opacity: 0);
+ opacity: 0;
+ z-index: 2;
+ height: 22px;
+ cursor: pointer;
+}
+.x-form-file-wrap .x-btn {
+ position: absolute;
+ right: 0;
+ z-index: 1;
+}
+.x-form-file-wrap .x-form-file-text {
+ position: absolute;
+ left: 0;
+ z-index: 3;
+ color: #777;
+}
+
+/*
+ * Spinner styles
+ */
+.x-form-spinner-proxy{
+ /*background-color:#ff00cc;*/
+}
+.x-form-field-wrap .x-form-spinner-trigger {
+ background: transparent url(../images/spinner.gif) no-repeat 0 0;
+}
+
+.x-form-field-wrap .x-form-spinner-overup{
+ background-position:-17px 0;
+}
+.x-form-field-wrap .x-form-spinner-clickup{
+ background-position:-34px 0;
+}
+.x-form-field-wrap .x-form-spinner-overdown{
+ background-position:-51px 0;
+}
+.x-form-field-wrap .x-form-spinner-clickdown{
+ background-position:-68px 0;
+}
+
+
+.x-trigger-wrap-focus .x-form-spinner-trigger{
+ background-position:-85px 0;
+}
+.x-trigger-wrap-focus .x-form-spinner-overup{
+ background-position:-102px 0;
+}
+.x-trigger-wrap-focus .x-form-spinner-clickup{
+ background-position:-119px 0;
+}
+.x-trigger-wrap-focus .x-form-spinner-overdown{
+ background-position:-136px 0;
+}
+.x-trigger-wrap-focus .x-form-spinner-clickdown{
+ background-position:-153px 0;
+}
+.x-trigger-wrap-focus .x-form-trigger{
+ border-bottom: 1px solid #7eadd9;
+}
+
+.x-form-field-wrap .x-form-spinner-splitter {
+ line-height:1px;
+ font-size:1px;
+ background:transparent url(../images/spinner-split.gif) no-repeat 0 0;
+ position:absolute;
+ cursor: n-resize;
+}
+.x-trigger-wrap-focus .x-form-spinner-splitter{
+ background-position:-14px 0;
+}
+
+.x-form-uxspinner .x-form-field-wrap {
+ height: 24px;
+}
+
+/*
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/* StatusBar - structure */
+.x-statusbar .x-status-text {
+ cursor: default;
+/*
+ height: 21px;
+ line-height: 21px;
+ padding: 0 4px;
+*/
+}
+.x-statusbar .x-status-busy {
+ padding-left: 25px !important;
+ background: transparent no-repeat 3px 2px;
+}
+
+.x-toolbar div.xtb-text
+
+.x-statusbar .x-status-text-panel {
+ border-top: 1px solid;
+ border-right: 1px solid;
+ border-bottom: 1px solid;
+ border-left: 1px solid;
+ padding: 2px 8px 2px 5px;
+}
+
+/* StatusBar word processor example styles */
+
+#word-status .x-status-text-panel .spacer {
+ width: 60px;
+ font-size:0;
+ line-height:0;
+}
+#word-status .x-status-busy {
+ padding-left: 25px !important;
+ background: transparent no-repeat 3px 2px;
+}
+#word-status .x-status-saved {
+ padding-left: 25px !important;
+ background: transparent no-repeat 3px 2px;
+}
+
+/* StatusBar form validation example styles */
+
+.x-statusbar .x-status-error {
+ cursor: pointer;
+ padding-left: 25px !important;
+ background: transparent no-repeat 3px 2px;
+}
+.x-statusbar .x-status-valid {
+ padding-left: 25px !important;
+ background: transparent no-repeat 3px 2px;
+}
+.x-status-error-list {
+ font: 11px tahoma,arial,verdana,sans-serif;
+ position: absolute;
+ z-index: 9999;
+ border-top: 1px solid;
+ border-right: 1px solid;
+ border-bottom: 1px solid;
+ border-left: 1px solid;
+ padding: 5px 10px;
+}
+.x-status-error-list li {
+ cursor: pointer;
+ list-style: disc;
+ margin-left: 10px;
+}
+.x-status-error-list li a {
+ text-decoration: none;
+}
+.x-status-error-list li a:hover {
+ text-decoration: underline;
+}
+
+
+/* *********************************************************** */
+/* *********************************************************** */
+/* *********************************************************** */
+
+
+/* StatusBar - visual */
+
+.x-statusbar .x-status-busy {
+ background-image: url(../images/loading.gif);
+}
+.x-statusbar .x-status-text-panel {
+ border-color: #99bbe8 #fff #fff #99bbe8;
+}
+
+/* StatusBar word processor example styles */
+
+#word-status .x-status-text {
+ color: #777;
+}
+#word-status .x-status-busy {
+ background-image: url(../images/saving.gif);
+}
+#word-status .x-status-saved {
+ background-image: url(../images/saved.png);
+}
+
+/* StatusBar form validation example styles */
+
+.x-statusbar .x-status-error {
+ color: #C33;
+ background-image: url(../images/exclamation.gif);
+}
+.x-statusbar .x-status-valid {
+ background-image: url(../images/accept.png);
+}
+.x-status-error-list {
+ border-color: #C33;
+}
+.x-status-error-list li a {
+ color: #15428B;
+}
diff --git a/deluge/ui/web/css/ext-extensions.css b/deluge/ui/web/css/ext-extensions.css
new file mode 100644
index 0000000..63df411
--- /dev/null
+++ b/deluge/ui/web/css/ext-extensions.css
@@ -0,0 +1 @@
+ .x-column-tree .x-tree-node{zoom:1}.x-column-tree .x-tree-node-el{zoom:1}.x-column-tree .x-tree-selected{background:#d9e8fb}.x-column-tree .x-tree-node a{line-height:18px;vertical-align:middle}.x-column-tree .x-tree-node .x-tree-selected a span{background:transparent;color:#000}.x-tree-col{float:left;overflow:hidden;padding:0 1px;zoom:1}.x-tree-col-text,.x-tree-hd-text{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:3px 3px 3px 5px;white-space:nowrap;font:normal 11px arial,tahoma,helvetica,sans-serif}.x-tree-headers{background:#f9f9f9 url(../../resources/images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;cursor:default;zoom:1}.x-tree-hd{float:left;overflow:hidden;border-left:1px solid #eee;border-right:1px solid #d0d0d0}.x-form-file-wrap{position:relative;height:22px}.x-form-file-wrap .x-form-file{position:absolute;right:0;-moz-opacity:0;filter:alpha(opacity:0);opacity:0;z-index:2;height:22px;cursor:pointer}.x-form-file-wrap .x-btn{position:absolute;right:0;z-index:1}.x-form-file-wrap .x-form-file-text{position:absolute;left:0;z-index:3;color:#777}.x-form-field-wrap .x-form-spinner-trigger{background:transparent url(../images/spinner.gif) no-repeat 0 0}.x-form-field-wrap .x-form-spinner-overup{background-position:-17px 0}.x-form-field-wrap .x-form-spinner-clickup{background-position:-34px 0}.x-form-field-wrap .x-form-spinner-overdown{background-position:-51px 0}.x-form-field-wrap .x-form-spinner-clickdown{background-position:-68px 0}.x-trigger-wrap-focus .x-form-spinner-trigger{background-position:-85px 0}.x-trigger-wrap-focus .x-form-spinner-overup{background-position:-102px 0}.x-trigger-wrap-focus .x-form-spinner-clickup{background-position:-119px 0}.x-trigger-wrap-focus .x-form-spinner-overdown{background-position:-136px 0}.x-trigger-wrap-focus .x-form-spinner-clickdown{background-position:-153px 0}.x-trigger-wrap-focus .x-form-trigger{border-bottom:1px solid #7eadd9}.x-form-field-wrap .x-form-spinner-splitter{line-height:1px;font-size:1px;background:transparent url(../images/spinner-split.gif) no-repeat 0 0;position:absolute;cursor:n-resize}.x-trigger-wrap-focus .x-form-spinner-splitter{background-position:-14px 0}.x-form-uxspinner .x-form-field-wrap{height:24px}.x-statusbar .x-status-text{cursor:default}.x-statusbar .x-status-busy{padding-left:25px!important;background:transparent no-repeat 3px 2px}.x-toolbar div.xtb-text .x-statusbar .x-status-text-panel{border-top:1px solid;border-right:1px solid;border-bottom:1px solid;border-left:1px solid;padding:2px 8px 2px 5px}#word-status .x-status-text-panel .spacer{width:60px;font-size:0;line-height:0}#word-status .x-status-busy{padding-left:25px!important;background:transparent no-repeat 3px 2px}#word-status .x-status-saved{padding-left:25px!important;background:transparent no-repeat 3px 2px}.x-statusbar .x-status-error{cursor:pointer;padding-left:25px!important;background:transparent no-repeat 3px 2px}.x-statusbar .x-status-valid{padding-left:25px!important;background:transparent no-repeat 3px 2px}.x-status-error-list{font:11px tahoma,arial,verdana,sans-serif;position:absolute;z-index:9999;border-top:1px solid;border-right:1px solid;border-bottom:1px solid;border-left:1px solid;padding:5px 10px}.x-status-error-list li{cursor:pointer;list-style:disc;margin-left:10px}.x-status-error-list li a{text-decoration:none}.x-status-error-list li a:hover{text-decoration:underline}.x-statusbar .x-status-busy{background-image:url(../images/loading.gif)}.x-statusbar .x-status-text-panel{border-color:#99bbe8 #fff #fff #99bbe8}#word-status .x-status-text{color:#777}#word-status .x-status-busy{background-image:url(../images/saving.gif)}#word-status .x-status-saved{background-image:url(../images/saved.png)}.x-statusbar .x-status-error{color:#C33;background-image:url(../images/exclamation.gif)}.x-statusbar .x-status-valid{background-image:url(../images/accept.png)}.x-status-error-list{border-color:#C33}.x-status-error-list li a{color:#15428b} \ No newline at end of file
diff --git a/deluge/ui/web/docs/build.sh b/deluge/ui/web/docs/build.sh
new file mode 100755
index 0000000..74232c7
--- /dev/null
+++ b/deluge/ui/web/docs/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+ext-doc -p deluge-docs.xml -o build -t template/template.xml
diff --git a/deluge/ui/web/docs/deluge-docs.xml b/deluge/ui/web/docs/deluge-docs.xml
new file mode 100644
index 0000000..f3ce1d4
--- /dev/null
+++ b/deluge/ui/web/docs/deluge-docs.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<doc>
+ <sources>
+ <source src="../js/extjs" match="ext-base-debug.js" />
+ <source src="../js/extjs" match="ext-all-debug.js" />
+ <source src="../js/extjs/ext-extensions" match="*.js" />
+ <source src="../js/deluge-all" match="*.js" />
+ </sources>
+ <tags>
+ <tag name="author" title="Author" />
+ <tag name="version" title="Version" />
+ <tag name="note" format="&lt;i&gt;NOTE: {0}&lt;/i&gt;" />
+ <tag name="demo" title="Demo" format="&lt;a href=&quot;{0}&quot;&gt;{0}&lt;/a&gt;" />
+ </tags>
+</doc>
diff --git a/deluge/ui/web/docs/template/index.html b/deluge/ui/web/docs/template/index.html
new file mode 100644
index 0000000..eaeb5d4
--- /dev/null
+++ b/deluge/ui/web/docs/template/index.html
@@ -0,0 +1,44 @@
+<html lang="en" xmlns:ext="http://extjs.com/docs">
+<head>
+ <title>Deluge 1.3 Web UI - API Documentation</title>
+ <link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" />
+ <link rel="stylesheet" type="text/css" href="resources/docs.css"></link>
+ <link rel="stylesheet" type="text/css" href="resources/style.css"></link>
+ <link rel="shortcut icon" href="resources/deluge.png" />
+ <link rel="icon" href="resources/deluge.png" />
+ <style type="text/css">
+ </style>
+ <!-- GC -->
+</head>
+<body scroll="no" id="docs">
+ <div id="loading-mask" style=""></div>
+ <div id="loading">
+ <div class="loading-indicator"><img src="resources/extanim32.gif" width="32" height="32" style="margin-right:8px;" align="absmiddle"/>Loading...</div>
+ </div>
+ <!-- include everything after the loading indicator -->
+ <script type="text/javascript" src="resources/ext-base.js"></script>
+ <script type="text/javascript" src="resources/ext-all.js"></script>
+ <script type="text/javascript" src="resources/TabCloseMenu.js"></script>
+
+ <script type="text/javascript" src="resources/docs.js"></script>
+ <script type="text/javascript" src="output/tree.js">
+// Docs.classData = {"id":"apidocs","iconCls":"icon-docs","text":"API Documentation","singleClickExpand":true,"children":[{"id":"pkg-Ext","text":"Ext","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"id":"pkg-air","text":"air","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.air.DragType.html","text":"DragType","id":"Ext.air.DragType","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.air.FileProvider.html","text":"FileProvider","id":"Ext.air.FileProvider","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.air.NativeObservable.html","text":"NativeObservable","id":"Ext.air.NativeObservable","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.air.NativeWindow.html","text":"NativeWindow","id":"Ext.air.NativeWindow","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.air.NativeWindowGroup.html","text":"NativeWindowGroup","id":"Ext.air.NativeWindowGroup","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.air.NativeWindowManager.html","text":"NativeWindowManager","id":"Ext.air.NativeWindowManager","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.air.Sound.html","text":"Sound","id":"Ext.air.Sound","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.air.SystemMenu.html","text":"SystemMenu","id":"Ext.air.SystemMenu","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-data","text":"data","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.data.ArrayReader.html","text":"ArrayReader","id":"Ext.data.ArrayReader","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.Connection.html","text":"Connection","id":"Ext.data.Connection","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.DataProxy.html","text":"DataProxy","id":"Ext.data.DataProxy","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.DataReader.html","text":"DataReader","id":"Ext.data.DataReader","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.GroupingStore.html","text":"GroupingStore","id":"Ext.data.GroupingStore","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.HttpProxy.html","text":"HttpProxy","id":"Ext.data.HttpProxy","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.JsonReader.html","text":"JsonReader","id":"Ext.data.JsonReader","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.JsonStore.html","text":"JsonStore","id":"Ext.data.JsonStore","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.MemoryProxy.html","text":"MemoryProxy","id":"Ext.data.MemoryProxy","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.Node.html","text":"Node","id":"Ext.data.Node","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.Record.html","text":"Record","id":"Ext.data.Record","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.ScriptTagProxy.html","text":"ScriptTagProxy","id":"Ext.data.ScriptTagProxy","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.SimpleStore.html","text":"SimpleStore","id":"Ext.data.SimpleStore","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.SortTypes.html","text":"SortTypes","id":"Ext.data.SortTypes","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.data.Store.html","text":"Store","id":"Ext.data.Store","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.Tree.html","text":"Tree","id":"Ext.data.Tree","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.data.XmlReader.html","text":"XmlReader","id":"Ext.data.XmlReader","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-dd","text":"dd","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.dd.DD.html","text":"DD","id":"Ext.dd.DD","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.dd.DDProxy.html","text":"DDProxy","id":"Ext.dd.DDProxy","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.dd.DDTarget.html","text":"DDTarget","id":"Ext.dd.DDTarget","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.dd.DragDrop.html","text":"DragDrop","id":"Ext.dd.DragDrop","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.dd.DragDropMgr.html","text":"DragDropMgr","id":"Ext.dd.DragDropMgr","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.dd.DragSource.html","text":"DragSource","id":"Ext.dd.DragSource","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.dd.DragZone.html","text":"DragZone","id":"Ext.dd.DragZone","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.dd.DropTarget.html","text":"DropTarget","id":"Ext.dd.DropTarget","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.dd.DropZone.html","text":"DropZone","id":"Ext.dd.DropZone","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.dd.Registry.html","text":"Registry","id":"Ext.dd.Registry","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.dd.ScrollManager.html","text":"ScrollManager","id":"Ext.dd.ScrollManager","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.dd.StatusProxy.html","text":"StatusProxy","id":"Ext.dd.StatusProxy","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-form","text":"form","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.form.Action.html","text":"Action","id":"Ext.form.Action","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.form.Action.Load.html","text":"Action.Load","id":"Ext.form.Action.Load","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.form.Action.Submit.html","text":"Action.Submit","id":"Ext.form.Action.Submit","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.form.BasicForm.html","text":"BasicForm","id":"Ext.form.BasicForm","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.form.Checkbox.html","text":"Checkbox","id":"Ext.form.Checkbox","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.CheckboxGroup.html","text":"CheckboxGroup","id":"Ext.form.CheckboxGroup","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.ComboBox.html","text":"ComboBox","id":"Ext.form.ComboBox","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.DateField.html","text":"DateField","id":"Ext.form.DateField","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.Field.html","text":"Field","id":"Ext.form.Field","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.FieldSet.html","text":"FieldSet","id":"Ext.form.FieldSet","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.FormPanel.html","text":"FormPanel","id":"Ext.form.FormPanel","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.Hidden.html","text":"Hidden","id":"Ext.form.Hidden","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.HtmlEditor.html","text":"HtmlEditor","id":"Ext.form.HtmlEditor","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.Label.html","text":"Label","id":"Ext.form.Label","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.NumberField.html","text":"NumberField","id":"Ext.form.NumberField","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.Radio.html","text":"Radio","id":"Ext.form.Radio","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.RadioGroup.html","text":"RadioGroup","id":"Ext.form.RadioGroup","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.TextArea.html","text":"TextArea","id":"Ext.form.TextArea","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.TextField.html","text":"TextField","id":"Ext.form.TextField","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.TimeField.html","text":"TimeField","id":"Ext.form.TimeField","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.TriggerField.html","text":"TriggerField","id":"Ext.form.TriggerField","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.form.VTypes.html","text":"VTypes","id":"Ext.form.VTypes","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-grid","text":"grid","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.grid.AbstractSelectionModel.html","text":"AbstractSelectionModel","id":"Ext.grid.AbstractSelectionModel","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.CellSelectionModel.html","text":"CellSelectionModel","id":"Ext.grid.CellSelectionModel","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.CheckboxSelectionModel.html","text":"CheckboxSelectionModel","id":"Ext.grid.CheckboxSelectionModel","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.ColumnModel.html","text":"ColumnModel","id":"Ext.grid.ColumnModel","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.EditorGridPanel.html","text":"EditorGridPanel","id":"Ext.grid.EditorGridPanel","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.grid.GridDragZone.html","text":"GridDragZone","id":"Ext.grid.GridDragZone","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.GridPanel.html","text":"GridPanel","id":"Ext.grid.GridPanel","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.grid.GridView.html","text":"GridView","id":"Ext.grid.GridView","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.GroupingView.html","text":"GroupingView","id":"Ext.grid.GroupingView","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.PropertyColumnModel.html","text":"PropertyColumnModel","id":"Ext.grid.PropertyColumnModel","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.PropertyGrid.html","text":"PropertyGrid","id":"Ext.grid.PropertyGrid","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.grid.PropertyRecord.html","text":"PropertyRecord","id":"Ext.grid.PropertyRecord","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.PropertyStore.html","text":"PropertyStore","id":"Ext.grid.PropertyStore","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.RowNumberer.html","text":"RowNumberer","id":"Ext.grid.RowNumberer","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.grid.RowSelectionModel.html","text":"RowSelectionModel","id":"Ext.grid.RowSelectionModel","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-layout","text":"layout","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.layout.AbsoluteLayout.html","text":"AbsoluteLayout","id":"Ext.layout.AbsoluteLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.Accordion.html","text":"Accordion","id":"Ext.layout.Accordion","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.AnchorLayout.html","text":"AnchorLayout","id":"Ext.layout.AnchorLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.BorderLayout.html","text":"BorderLayout","id":"Ext.layout.BorderLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.BorderLayout.Region.html","text":"BorderLayout.Region","id":"Ext.layout.BorderLayout.Region","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.BorderLayout.SplitRegion.html","text":"BorderLayout.SplitRegion","id":"Ext.layout.BorderLayout.SplitRegion","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.CardLayout.html","text":"CardLayout","id":"Ext.layout.CardLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.ColumnLayout.html","text":"ColumnLayout","id":"Ext.layout.ColumnLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.ContainerLayout.html","text":"ContainerLayout","id":"Ext.layout.ContainerLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.FitLayout.html","text":"FitLayout","id":"Ext.layout.FitLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.FormLayout.html","text":"FormLayout","id":"Ext.layout.FormLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.layout.TableLayout.html","text":"TableLayout","id":"Ext.layout.TableLayout","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-menu","text":"menu","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.menu.Adapter.html","text":"Adapter","id":"Ext.menu.Adapter","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.menu.BaseItem.html","text":"BaseItem","id":"Ext.menu.BaseItem","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.menu.CheckItem.html","text":"CheckItem","id":"Ext.menu.CheckItem","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.menu.ColorItem.html","text":"ColorItem","id":"Ext.menu.ColorItem","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.menu.ColorMenu.html","text":"ColorMenu","id":"Ext.menu.ColorMenu","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.menu.DateItem.html","text":"DateItem","id":"Ext.menu.DateItem","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.menu.DateMenu.html","text":"DateMenu","id":"Ext.menu.DateMenu","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.menu.Item.html","text":"Item","id":"Ext.menu.Item","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.menu.Menu.html","text":"Menu","id":"Ext.menu.Menu","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.menu.MenuMgr.html","text":"MenuMgr","id":"Ext.menu.MenuMgr","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.menu.Separator.html","text":"Separator","id":"Ext.menu.Separator","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.menu.TextItem.html","text":"TextItem","id":"Ext.menu.TextItem","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-state","text":"state","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.state.CookieProvider.html","text":"CookieProvider","id":"Ext.state.CookieProvider","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.state.Manager.html","text":"Manager","id":"Ext.state.Manager","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.state.Provider.html","text":"Provider","id":"Ext.state.Provider","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-tree","text":"tree","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.tree.AsyncTreeNode.html","text":"AsyncTreeNode","id":"Ext.tree.AsyncTreeNode","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.DefaultSelectionModel.html","text":"DefaultSelectionModel","id":"Ext.tree.DefaultSelectionModel","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.MultiSelectionModel.html","text":"MultiSelectionModel","id":"Ext.tree.MultiSelectionModel","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.RootTreeNodeUI.html","text":"RootTreeNodeUI","id":"Ext.tree.RootTreeNodeUI","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreeDragZone.html","text":"TreeDragZone","id":"Ext.tree.TreeDragZone","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreeDropZone.html","text":"TreeDropZone","id":"Ext.tree.TreeDropZone","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreeEditor.html","text":"TreeEditor","id":"Ext.tree.TreeEditor","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreeFilter.html","text":"TreeFilter","id":"Ext.tree.TreeFilter","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreeLoader.html","text":"TreeLoader","id":"Ext.tree.TreeLoader","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreeNode.html","text":"TreeNode","id":"Ext.tree.TreeNode","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreeNodeUI.html","text":"TreeNodeUI","id":"Ext.tree.TreeNodeUI","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreePanel.html","text":"TreePanel","id":"Ext.tree.TreePanel","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.tree.TreeSorter.html","text":"TreeSorter","id":"Ext.tree.TreeSorter","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}],"pcount":0},{"id":"pkg-util","text":"util","iconCls":"icon-pkg","cls":"package","singleClickExpand":true,"children":[{"href":"output\/Ext.util.CSS.html","text":"CSS","id":"Ext.util.CSS","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.util.ClickRepeater.html","text":"ClickRepeater","id":"Ext.util.ClickRepeater","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.util.DelayedTask.html","text":"DelayedTask","id":"Ext.util.DelayedTask","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.util.Format.html","text":"Format","id":"Ext.util.Format","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.util.JSON.html","text":"JSON","id":"Ext.util.JSON","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.util.MixedCollection.html","text":"MixedCollection","id":"Ext.util.MixedCollection","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.util.Observable.html","text":"Observable","id":"Ext.util.Observable","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.util.TaskRunner.html","text":"TaskRunner","id":"Ext.util.TaskRunner","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.util.TextMetrics.html","text":"TextMetrics","id":"Ext.util.TextMetrics","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true}],"pcount":0},{"href":"output\/Ext.Action.html","text":"Action","id":"Ext.Action","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Ajax.html","text":"Ajax","id":"Ext.Ajax","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.BoxComponent.html","text":"BoxComponent","id":"Ext.BoxComponent","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Button.html","text":"Button","id":"Ext.Button","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.ColorPalette.html","text":"ColorPalette","id":"Ext.ColorPalette","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Component.html","text":"Component","id":"Ext.Component","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.ComponentMgr.html","text":"ComponentMgr","id":"Ext.ComponentMgr","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.CompositeElement.html","text":"CompositeElement","id":"Ext.CompositeElement","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.CompositeElementLite.html","text":"CompositeElementLite","id":"Ext.CompositeElementLite","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Container.html","text":"Container","id":"Ext.Container","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.CycleButton.html","text":"CycleButton","id":"Ext.CycleButton","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.DataView.html","text":"DataView","id":"Ext.DataView","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.DatePicker.html","text":"DatePicker","id":"Ext.DatePicker","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.DomHelper.html","text":"DomHelper","id":"Ext.DomHelper","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.DomQuery.html","text":"DomQuery","id":"Ext.DomQuery","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.Editor.html","text":"Editor","id":"Ext.Editor","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Element.html","text":"Element","id":"Ext.Element","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.EventManager.html","text":"EventManager","id":"Ext.EventManager","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.EventObject.html","text":"EventObject","id":"Ext.EventObject","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.Fx.html","text":"Fx","id":"Ext.Fx","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.History.html","text":"History","id":"Ext.History","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.KeyMap.html","text":"KeyMap","id":"Ext.KeyMap","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.KeyNav.html","text":"KeyNav","id":"Ext.KeyNav","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Layer.html","text":"Layer","id":"Ext.Layer","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.LoadMask.html","text":"LoadMask","id":"Ext.LoadMask","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.MessageBox.html","text":"MessageBox","id":"Ext.MessageBox","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.PagingToolbar.html","text":"PagingToolbar","id":"Ext.PagingToolbar","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Panel.html","text":"Panel","id":"Ext.Panel","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.ProgressBar.html","text":"ProgressBar","id":"Ext.ProgressBar","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.QuickTip.html","text":"QuickTip","id":"Ext.QuickTip","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.QuickTips.html","text":"QuickTips","id":"Ext.QuickTips","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.Resizable.html","text":"Resizable","id":"Ext.Resizable","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Shadow.html","text":"Shadow","id":"Ext.Shadow","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Slider.html","text":"Slider","id":"Ext.Slider","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.SplitBar.html","text":"SplitBar","id":"Ext.SplitBar","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.SplitBar.AbsoluteLayoutAdapter.html","text":"SplitBar.AbsoluteLayoutAdapter","id":"Ext.SplitBar.AbsoluteLayoutAdapter","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.SplitBar.BasicLayoutAdapter.html","text":"SplitBar.BasicLayoutAdapter","id":"Ext.SplitBar.BasicLayoutAdapter","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.SplitButton.html","text":"SplitButton","id":"Ext.SplitButton","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.StatusBar.html","text":"StatusBar","id":"Ext.StatusBar","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.StoreMgr.html","text":"StoreMgr","id":"Ext.StoreMgr","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.TabPanel.html","text":"TabPanel","id":"Ext.TabPanel","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.TaskMgr.html","text":"TaskMgr","id":"Ext.TaskMgr","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.Template.html","text":"Template","id":"Ext.Template","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Tip.html","text":"Tip","id":"Ext.Tip","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.ToolTip.html","text":"ToolTip","id":"Ext.ToolTip","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Toolbar.html","text":"Toolbar","id":"Ext.Toolbar","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Toolbar.Button.html","text":"Toolbar.Button","id":"Ext.Toolbar.Button","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Toolbar.Fill.html","text":"Toolbar.Fill","id":"Ext.Toolbar.Fill","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Toolbar.Item.html","text":"Toolbar.Item","id":"Ext.Toolbar.Item","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Toolbar.Separator.html","text":"Toolbar.Separator","id":"Ext.Toolbar.Separator","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Toolbar.Spacer.html","text":"Toolbar.Spacer","id":"Ext.Toolbar.Spacer","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Toolbar.SplitButton.html","text":"Toolbar.SplitButton","id":"Ext.Toolbar.SplitButton","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Toolbar.TextItem.html","text":"Toolbar.TextItem","id":"Ext.Toolbar.TextItem","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Updater.html","text":"Updater","id":"Ext.Updater","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Updater.BasicRenderer.html","text":"Updater.BasicRenderer","id":"Ext.Updater.BasicRenderer","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Updater.defaults.html","text":"Updater.defaults","id":"Ext.Updater.defaults","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.Viewport.html","text":"Viewport","id":"Ext.Viewport","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.Window.html","text":"Window","id":"Ext.Window","isClass":true,"iconCls":"icon-cmp","cls":"cls","leaf":true},{"href":"output\/Ext.WindowGroup.html","text":"WindowGroup","id":"Ext.WindowGroup","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.WindowMgr.html","text":"WindowMgr","id":"Ext.WindowMgr","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Ext.XTemplate.html","text":"XTemplate","id":"Ext.XTemplate","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}],"pcount":10},{"href":"output\/Array.html","text":"Array","id":"Array","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Date.html","text":"Date","id":"Date","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Ext.html","text":"Ext","id":"Ext","isClass":true,"iconCls":"icon-static","cls":"cls","leaf":true},{"href":"output\/Function.html","text":"Function","id":"Function","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/Number.html","text":"Number","id":"Number","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true},{"href":"output\/String.html","text":"String","id":"String","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}],"pcount":1};
+// Docs.icons = {"Ext.Action":"icon-cls","Ext.Ajax":"icon-static","Ext.BoxComponent":"icon-cmp","Ext.Button":"icon-cmp","Ext.ColorPalette":"icon-cmp","Ext.Component":"icon-cls","Ext.ComponentMgr":"icon-static","Ext.CompositeElement":"icon-cls","Ext.CompositeElementLite":"icon-cls","Ext.Container":"icon-cmp","Ext.CycleButton":"icon-cmp","Ext.DataView":"icon-cmp","Ext.DatePicker":"icon-cmp","Ext.DomHelper":"icon-static","Ext.DomQuery":"icon-static","Ext.Editor":"icon-cmp","Ext.Element":"icon-cls","Ext.EventManager":"icon-static","Ext.EventObject":"icon-static","Ext.Fx":"icon-cls","Ext.History":"icon-static","Ext.KeyMap":"icon-cls","Ext.KeyNav":"icon-cls","Ext.Layer":"icon-cls","Ext.LoadMask":"icon-cls","Ext.MessageBox":"icon-static","Ext.PagingToolbar":"icon-cmp","Ext.Panel":"icon-cmp","Ext.ProgressBar":"icon-cmp","Ext.QuickTip":"icon-cmp","Ext.QuickTips":"icon-static","Ext.Resizable":"icon-cls","Ext.Shadow":"icon-cls","Ext.Slider":"icon-cmp","Ext.SplitBar":"icon-cls","Ext.SplitBar.AbsoluteLayoutAdapter":"icon-cls","Ext.SplitBar.BasicLayoutAdapter":"icon-cls","Ext.SplitButton":"icon-cmp","Ext.StatusBar":"icon-cmp","Ext.StoreMgr":"icon-static","Ext.TabPanel":"icon-cmp","Ext.TaskMgr":"icon-static","Ext.Template":"icon-cls","Ext.Tip":"icon-cmp","Ext.ToolTip":"icon-cmp","Ext.Toolbar":"icon-cmp","Ext.Toolbar.Button":"icon-cmp","Ext.Toolbar.Fill":"icon-cls","Ext.Toolbar.Item":"icon-cls","Ext.Toolbar.Separator":"icon-cls","Ext.Toolbar.Spacer":"icon-cls","Ext.Toolbar.SplitButton":"icon-cmp","Ext.Toolbar.TextItem":"icon-cls","Ext.Updater":"icon-cls","Ext.Updater.BasicRenderer":"icon-cls","Ext.Updater.defaults":"icon-cls","Ext.Viewport":"icon-cmp","Ext.Window":"icon-cmp","Ext.WindowGroup":"icon-cls","Ext.WindowMgr":"icon-static","Ext.XTemplate":"icon-cls","Ext.air.DragType":"icon-static","Ext.air.FileProvider":"icon-cls","Ext.air.NativeObservable":"icon-cls","Ext.air.NativeWindow":"icon-cls","Ext.air.NativeWindowGroup":"icon-cls","Ext.air.NativeWindowManager":"icon-static","Ext.air.Sound":"icon-static","Ext.air.SystemMenu":"icon-static","Ext.data.ArrayReader":"icon-cls","Ext.data.Connection":"icon-cls","Ext.data.DataProxy":"icon-cls","Ext.data.DataReader":"icon-cls","Ext.data.GroupingStore":"icon-cls","Ext.data.HttpProxy":"icon-cls","Ext.data.JsonReader":"icon-cls","Ext.data.JsonStore":"icon-cls","Ext.data.MemoryProxy":"icon-cls","Ext.data.Node":"icon-cls","Ext.data.Record":"icon-cls","Ext.data.ScriptTagProxy":"icon-cls","Ext.data.SimpleStore":"icon-cls","Ext.data.SortTypes":"icon-static","Ext.data.Store":"icon-cls","Ext.data.Tree":"icon-cls","Ext.data.XmlReader":"icon-cls","Ext.dd.DD":"icon-cls","Ext.dd.DDProxy":"icon-cls","Ext.dd.DDTarget":"icon-cls","Ext.dd.DragDrop":"icon-cls","Ext.dd.DragDropMgr":"icon-static","Ext.dd.DragSource":"icon-cls","Ext.dd.DragZone":"icon-cls","Ext.dd.DropTarget":"icon-cls","Ext.dd.DropZone":"icon-cls","Ext.dd.Registry":"icon-static","Ext.dd.ScrollManager":"icon-static","Ext.dd.StatusProxy":"icon-cls","Ext.form.Action":"icon-cls","Ext.form.Action.Load":"icon-cls","Ext.form.Action.Submit":"icon-cls","Ext.form.BasicForm":"icon-cls","Ext.form.Checkbox":"icon-cmp","Ext.form.CheckboxGroup":"icon-cmp","Ext.form.ComboBox":"icon-cmp","Ext.form.DateField":"icon-cmp","Ext.form.Field":"icon-cmp","Ext.form.FieldSet":"icon-cmp","Ext.form.FormPanel":"icon-cmp","Ext.form.Hidden":"icon-cmp","Ext.form.HtmlEditor":"icon-cmp","Ext.form.Label":"icon-cmp","Ext.form.NumberField":"icon-cmp","Ext.form.Radio":"icon-cmp","Ext.form.RadioGroup":"icon-cmp","Ext.form.TextArea":"icon-cmp","Ext.form.TextField":"icon-cmp","Ext.form.TimeField":"icon-cmp","Ext.form.TriggerField":"icon-cmp","Ext.form.VTypes":"icon-static","Ext.grid.AbstractSelectionModel":"icon-cls","Ext.grid.CellSelectionModel":"icon-cls","Ext.grid.CheckboxSelectionModel":"icon-cls","Ext.grid.ColumnModel":"icon-cls","Ext.grid.EditorGridPanel":"icon-cmp","Ext.grid.GridDragZone":"icon-cls","Ext.grid.GridPanel":"icon-cmp","Ext.grid.GridView":"icon-cls","Ext.grid.GroupingView":"icon-cls","Ext.grid.PropertyColumnModel":"icon-cls","Ext.grid.PropertyGrid":"icon-cmp","Ext.grid.PropertyRecord":"icon-cls","Ext.grid.PropertyStore":"icon-cls","Ext.grid.RowNumberer":"icon-cls","Ext.grid.RowSelectionModel":"icon-cls","Ext.layout.AbsoluteLayout":"icon-cls","Ext.layout.Accordion":"icon-cls","Ext.layout.AnchorLayout":"icon-cls","Ext.layout.BorderLayout":"icon-cls","Ext.layout.BorderLayout.Region":"icon-cls","Ext.layout.BorderLayout.SplitRegion":"icon-cls","Ext.layout.CardLayout":"icon-cls","Ext.layout.ColumnLayout":"icon-cls","Ext.layout.ContainerLayout":"icon-cls","Ext.layout.FitLayout":"icon-cls","Ext.layout.FormLayout":"icon-cls","Ext.layout.TableLayout":"icon-cls","Ext.menu.Adapter":"icon-cmp","Ext.menu.BaseItem":"icon-cmp","Ext.menu.CheckItem":"icon-cmp","Ext.menu.ColorItem":"icon-cmp","Ext.menu.ColorMenu":"icon-cls","Ext.menu.DateItem":"icon-cmp","Ext.menu.DateMenu":"icon-cls","Ext.menu.Item":"icon-cmp","Ext.menu.Menu":"icon-cls","Ext.menu.MenuMgr":"icon-static","Ext.menu.Separator":"icon-cmp","Ext.menu.TextItem":"icon-cmp","Ext.state.CookieProvider":"icon-cls","Ext.state.Manager":"icon-static","Ext.state.Provider":"icon-cls","Ext.tree.AsyncTreeNode":"icon-cls","Ext.tree.DefaultSelectionModel":"icon-cls","Ext.tree.MultiSelectionModel":"icon-cls","Ext.tree.RootTreeNodeUI":"icon-cls","Ext.tree.TreeDragZone":"icon-cls","Ext.tree.TreeDropZone":"icon-cls","Ext.tree.TreeEditor":"icon-cmp","Ext.tree.TreeFilter":"icon-cls","Ext.tree.TreeLoader":"icon-cls","Ext.tree.TreeNode":"icon-cls","Ext.tree.TreeNodeUI":"icon-cls","Ext.tree.TreePanel":"icon-cmp","Ext.tree.TreeSorter":"icon-cls","Ext.util.CSS":"icon-static","Ext.util.ClickRepeater":"icon-cls","Ext.util.DelayedTask":"icon-cls","Ext.util.Format":"icon-static","Ext.util.JSON":"icon-static","Ext.util.MixedCollection":"icon-cls","Ext.util.Observable":"icon-cls","Ext.util.TaskRunner":"icon-cls","Ext.util.TextMetrics":"icon-static","Array":"icon-cls","Date":"icon-cls","Ext":"icon-static","Function":"icon-cls","Number":"icon-cls","String":"icon-cls"};
+ </script>
+
+ <div id="header">
+ <a href="http://extjs.com" style="float:right;margin-right:10px;"><img src="resources/extjs.gif" style="width:83px;height:24px;margin-top:1px;"/></a>
+
+ <div class="api-title">Deluge 1.3 Web UI - API Documentation</div>
+ </div>
+
+ <div id="classes"></div>
+
+ <div id="main"></div>
+ <select id="search-options" style="display:none">
+ <option>Starts with</option>
+ <option>Ends with</option>
+ <option>Any Match</option>
+</select>
+ </body>
+</html>
diff --git a/deluge/ui/web/docs/template/license.txt b/deluge/ui/web/docs/template/license.txt
new file mode 100644
index 0000000..da0f921
--- /dev/null
+++ b/deluge/ui/web/docs/template/license.txt
@@ -0,0 +1,42 @@
+Ext JS - JavaScript Library
+Copyright (c) 2006-2008, Ext JS, LLC
+All rights reserved.
+licensing@extjs.com
+
+http://extjs.com/license
+
+Open Source License
+------------------------------------------------------------------------------------------
+Ext is licensed under the terms of the Open Source GPL 3.0 license.
+
+http://www.gnu.org/licenses/gpl.html
+
+There are several FLOSS exceptions available for use with this release for
+open source applications that are distributed under a license other than the GPL.
+
+* Open Source License Exception for Applications
+
+ http://extjs.com/products/floss-exception.php
+
+* Open Source License Exception for Development
+
+ http://extjs.com/products/ux-exception.php
+
+
+Commercial License
+------------------------------------------------------------------------------------------
+This is the appropriate option if you are creating proprietary applications and you are
+not prepared to distribute and share the source code of your application under the
+GPL v3 license. Please visit http://extjs.com/license for more details.
+
+
+OEM / Reseller License
+------------------------------------------------------------------------------------------
+For more details, please visit: http://extjs.com/license.
+
+--
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details. \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/resources/TabCloseMenu.js b/deluge/ui/web/docs/template/resources/TabCloseMenu.js
new file mode 100644
index 0000000..bdd7e19
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/TabCloseMenu.js
@@ -0,0 +1,42 @@
+// Very simple plugin for adding a close context menu to tabs
+Ext.ux.TabCloseMenu = function(){
+ var tabs, menu, ctxItem;
+ this.init = function(tp){
+ tabs = tp;
+ tabs.on('contextmenu', onContextMenu);
+ }
+
+ function onContextMenu(ts, item, e){
+ if(!menu){ // create context menu on first right click
+ menu = new Ext.menu.Menu([{
+ id: tabs.id + '-close',
+ text: 'Close Tab',
+ handler : function(){
+ tabs.remove(ctxItem);
+ }
+ },{
+ id: tabs.id + '-close-others',
+ text: 'Close Other Tabs',
+ handler : function(){
+ tabs.items.each(function(item){
+ if(item.closable && item != ctxItem){
+ tabs.remove(item);
+ }
+ });
+ }
+ }]);
+ }
+ ctxItem = item;
+ var items = menu.items;
+ items.get(tabs.id + '-close').setDisabled(!item.closable);
+ var disableOthers = true;
+ tabs.items.each(function(){
+ if(this != item && this.closable){
+ disableOthers = false;
+ return false;
+ }
+ });
+ items.get(tabs.id + '-close-others').setDisabled(disableOthers);
+ menu.showAt(e.getPoint());
+ }
+}; \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/resources/accordian.gif b/deluge/ui/web/docs/template/resources/accordian.gif
new file mode 100644
index 0000000..8846b0f
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/accordian.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/block-bg.gif b/deluge/ui/web/docs/template/resources/block-bg.gif
new file mode 100644
index 0000000..f3cf86d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/block-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/block-bottom.gif b/deluge/ui/web/docs/template/resources/block-bottom.gif
new file mode 100644
index 0000000..c0570c5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/block-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/block-top.gif b/deluge/ui/web/docs/template/resources/block-top.gif
new file mode 100644
index 0000000..cf3fb24
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/block-top.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/class.gif b/deluge/ui/web/docs/template/resources/class.gif
new file mode 100644
index 0000000..72a4026
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/class.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/cmp.gif b/deluge/ui/web/docs/template/resources/cmp.gif
new file mode 100644
index 0000000..4f791e1
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/cmp.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/collapse-all.gif b/deluge/ui/web/docs/template/resources/collapse-all.gif
new file mode 100644
index 0000000..891d1b7
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/collapse-all.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/collapse-bg.gif b/deluge/ui/web/docs/template/resources/collapse-bg.gif
new file mode 100644
index 0000000..e6b8da2
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/collapse-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/collapser.css b/deluge/ui/web/docs/template/resources/collapser.css
new file mode 100644
index 0000000..d1c7b46
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/collapser.css
@@ -0,0 +1,34 @@
+.pkg h3 {
+ padding-left:34px;
+ font:normal 11px verdana,helvetica,tahoma,sans-serif;
+ height:18px;
+ cursor:pointer;
+}
+h3.collapser-expanded{
+ background: #fff url(pkg-open.gif) no-repeat 0px -1px;
+}
+h3.collapser-collapsed {
+ background: #fff url(pkg-closed.gif) no-repeat 0px -1px;
+}
+.pkg-body{
+ margin-left:16px;
+ font:normal 11px verdana,helvetica,tahoma,sans-serif;
+}
+#classes a{
+ font:normal 11px verdana,helvetica,tahoma,sans-serif;
+ display:block;
+ text-decoration:none;
+ height:18px;
+ color:black;
+ background: #fff url(class.gif) no-repeat 16px -1px;
+ padding-left:34px;
+ -moz-outline:none;
+ outline:none;
+ white-space: nowrap;
+}
+#classes a:hover{
+ text-decoration: underline;
+}
+#classes a.ex{
+ background: #fff url(example.gif) no-repeat 16px -1px;
+} \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/resources/config.gif b/deluge/ui/web/docs/template/resources/config.gif
new file mode 100644
index 0000000..6534c65
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/config.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/css/ext-all.css b/deluge/ui/web/docs/template/resources/css/ext-all.css
new file mode 100644
index 0000000..5f87f8f
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/css/ext-all.css
@@ -0,0 +1,925 @@
+/*
+ * Ext JS Library 2.2
+ * Copyright(c) 2006-2008, Ext JS, LLC.
+ * licensing@extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}
+img,body,html{border:0;}
+address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
+ol,ul{list-style:none;}
+caption,th{text-align:left;}
+h1,h2,h3,h4,h5,h6{font-size:100%;}
+q:before,q:after{content:'';}
+
+.ext-el-mask{z-index:20000;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:100%;height:100%;zoom:1;}
+.ext-el-mask-msg{z-index:20001;position:absolute;top:0;left:0;border:1px solid #6593cf;background:#c3daf9 url(../images/default/box/tb-blue.gif) repeat-x 0 -16px;padding:2px;}
+.ext-el-mask-msg div{padding:5px 10px 5px 10px;background:#eee;border:1px solid #a3bad9;color:#222;font:normal 11px tahoma,arial,helvetica,sans-serif;cursor:wait;}
+.ext-shim{position:absolute;visibility:hidden;left:0;top:0;overflow:hidden;}
+.ext-ie .ext-shim{filter:alpha(opacity=0);}
+.ext-ie6 .ext-shim{margin-left:5px;margin-top:3px;}
+.x-mask-loading div{padding:5px 10px 5px 25px;background:#fbfbfb url( '../images/default/grid/loading.gif' ) no-repeat 5px 5px;line-height:16px;}
+.x-hidden,.x-hide-offsets{position:absolute;left:-10000px;top:-10000px;visibility:hidden;}
+.x-hide-display{display:none!important;}
+.x-hide-visibility{visibility:hidden!important;}
+.x-masked{overflow:hidden!important;}
+.x-masked select,.x-masked object,.x-masked embed{visibility:hidden;}
+.x-layer{visibility:hidden;}
+.x-unselectable,.x-unselectable *{-moz-user-select:none;-khtml-user-select:none;}
+.x-repaint{zoom:1;background-color:transparent;-moz-outline:none;}
+.x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
+.x-item-disabled *{color:gray!important;cursor:default!important;}
+.x-splitbar-proxy{position:absolute;visibility:hidden;z-index:20001;background:#aaa;zoom:1;line-height:1px;font-size:1px;overflow:hidden;}
+.x-splitbar-h,.x-splitbar-proxy-h{cursor:e-resize;cursor:col-resize;}
+.x-splitbar-v,.x-splitbar-proxy-v{cursor:s-resize;cursor:row-resize;}
+.x-color-palette{width:150px;height:92px;cursor:pointer;}
+.x-color-palette a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer;}
+.x-color-palette a:hover,.x-color-palette a.x-color-palette-sel{border:1px solid #8BB8F3;background:#deecfd;}
+.x-color-palette em{display:block;border:1px solid #ACA899;}
+.x-color-palette em span{cursor:pointer;display:block;height:10px;line-height:10px;width:10px;}
+.x-ie-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;background:#777;zoom:1;}
+.x-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;}
+.x-shadow *{overflow:hidden;}
+.x-shadow *{padding:0;border:0;margin:0;clear:none;zoom:1;}
+.x-shadow .xstc,.x-shadow .xsbc{height:6px;float:left;}
+.x-shadow .xstl,.x-shadow .xstr,.x-shadow .xsbl,.x-shadow .xsbr{width:6px;height:6px;float:left;}
+.x-shadow .xsc{width:100%;}
+.x-shadow .xsml,.x-shadow .xsmr{width:6px;float:left;height:100%;}
+.x-shadow .xsmc{float:left;height:100%;background:transparent url( ../images/default/shadow-c.png );}
+.x-shadow .xst,.x-shadow .xsb{height:6px;overflow:hidden;width:100%;}
+.x-shadow .xsml{background:transparent url( ../images/default/shadow-lr.png ) repeat-y 0 0;}
+.x-shadow .xsmr{background:transparent url( ../images/default/shadow-lr.png ) repeat-y -6px 0;}
+.x-shadow .xstl{background:transparent url( ../images/default/shadow.png ) no-repeat 0 0;}
+.x-shadow .xstc{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -30px;}
+.x-shadow .xstr{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -18px;}
+.x-shadow .xsbl{background:transparent url( ../images/default/shadow.png ) no-repeat 0 -12px;}
+.x-shadow .xsbc{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -36px;}
+.x-shadow .xsbr{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -6px;}
+.loading-indicator{font-size:11px;background-image:url(../images/default/grid/loading.gif);background-repeat:no-repeat;background-position:left;padding-left:20px;line-height:16px;margin:3px;}
+.x-text-resize{position:absolute;left:-1000px;top:-1000px;visibility:hidden;zoom:1;}
+.x-drag-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background-image:url(../images/default/s.gif);z-index:20000;}
+.x-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-spotlight{z-index:8999;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:0;height:0;zoom:1;}
+
+.x-tab-panel{overflow:hidden;}
+.x-tab-panel-header,.x-tab-panel-footer{background:#deecfd;border:1px solid #8db2e3;overflow:hidden;zoom:1;}
+.x-tab-panel-header{border:1px solid #8db2e3;padding-bottom:2px;}
+.x-tab-panel-footer{border:1px solid #8db2e3;padding-top:2px;}
+.x-tab-strip-wrap{width:100%;overflow:hidden;position:relative;zoom:1;}
+ul.x-tab-strip{display:block;width:5000px;zoom:1;}
+ul.x-tab-strip-top{padding-top:1px;background:url(../images/default/tabs/tab-strip-bg.gif) #cedff5 repeat-x bottom;border-bottom:1px solid #8db2e3;}
+ul.x-tab-strip-bottom{padding-bottom:1px;background:url(../images/default/tabs/tab-strip-btm-bg.gif) #cedff5 repeat-x top;border-top:1px solid #8db2e3;border-bottom:0 none;}
+.x-tab-panel-header-plain .x-tab-strip-top{background:transparent!important;padding-top:0!important;}
+.x-tab-panel-header-plain{background:transparent!important;border-width:0!important;padding-bottom:0!important;}
+.x-tab-panel-header-plain .x-tab-strip-spacer,.x-tab-panel-footer-plain .x-tab-strip-spacer{border:1px solid #8db2e3;height:2px;background:#deecfd;font-size:1px;line-height:1px;}
+.x-tab-panel-header-plain .x-tab-strip-spacer{border-top:0 none;}
+.x-tab-panel-footer-plain .x-tab-strip-spacer{border-bottom:0 none;}
+.x-tab-panel-footer-plain .x-tab-strip-bottom{background:transparent!important;padding-bottom:0!important;}
+.x-tab-panel-footer-plain{background:transparent!important;border-width:0!important;padding-top:0!important;}
+.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer,.ext-border-box .x-tab-panel-footer-plain .x-tab-strip-spacer{height:3px;}
+ul.x-tab-strip li{float:left;margin-left:2px;}
+ul.x-tab-strip li.x-tab-edge{float:left;margin:0!important;padding:0!important;border:0 none!important;font-size:1px!important;line-height:1px!important;overflow:hidden;zoom:1;background:transparent!important;width:1px;}
+.x-tab-strip a,.x-tab-strip span,.x-tab-strip em{display:block;}
+.x-tab-strip a{text-decoration:none!important;-moz-outline:none;outline:none;cursor:pointer;}
+.x-tab-strip-inner{overflow:hidden;text-overflow:ellipsis;}
+.x-tab-strip span.x-tab-strip-text{font:normal 11px tahoma,arial,helvetica;color:#416aa3;white-space:nowrap;cursor:pointer;padding:4px 0;}
+.x-tab-strip-top .x-tab-with-icon .x-tab-right{padding-left:6px;}
+.x-tab-strip .x-tab-with-icon span.x-tab-strip-text{padding-left:20px;background-position:0 3px;background-repeat:no-repeat;}
+.x-tab-strip-over span.x-tab-strip-text{color:#15428b;}
+.x-tab-strip-active,.x-tab-strip-active a.x-tab-right{cursor:default;}
+.x-tab-strip-active span.x-tab-strip-text{cursor:default;color:#15428b;font-weight:bold;}
+.x-tab-strip-disabled .x-tabs-text{cursor:default;color:#aaa;}
+.x-tab-panel-body{overflow:hidden;}
+.x-tab-panel-bwrap{overflow:hidden;}
+.ext-ie .x-tab-strip .x-tab-right{position:relative;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right{margin-bottom:-1px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-bottom:5px;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{margin-top:-1px;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-top:5px;}
+.x-tab-strip-top .x-tab-right{background:transparent url(../images/default/tabs/tabs-sprite.gif) no-repeat 0 -51px;padding-left:10px;}
+.x-tab-strip-top .x-tab-left{background:transparent url(../images/default/tabs/tabs-sprite.gif) no-repeat right -351px;padding-right:10px;}
+.x-tab-strip-top .x-tab-strip-inner{background:transparent url(../images/default/tabs/tabs-sprite.gif) repeat-x 0 -201px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-right{background-position:0 -101px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-left{background-position:right -401px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner{background-position:0 -251px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right{background-position:0 0;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-left{background-position:right -301px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner{background-position:0 -151px;}
+.x-tab-strip-bottom .x-tab-right{background:url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;}
+.x-tab-strip-bottom .x-tab-left{background:url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background:url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background:url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right;}
+.x-tab-strip-bottom .x-tab-left{padding:0 10px;}
+.x-tab-strip-bottom .x-tab-right{padding:0;}
+.x-tab-strip .x-tab-strip-close{display:none;}
+.x-tab-strip-closable{position:relative;}
+.x-tab-strip-closable .x-tab-left{padding-right:19px;}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{background-image:url(../images/default/tabs/tab-close.gif);opacity:.6;-moz-opacity:.6;background-repeat:no-repeat;display:block;width:11px;height:11px;position:absolute;top:3px;right:3px;cursor:pointer;z-index:2;}
+.x-tab-strip .x-tab-strip-active a.x-tab-strip-close{opacity:.8;-moz-opacity:.8;}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{background-image:url(../images/default/tabs/tab-close.gif);opacity:1;-moz-opacity:1;}
+.x-tab-panel-body{border:1px solid #8db2e3;background:#fff;}
+.x-tab-panel-body-top{border-top:0 none;}
+.x-tab-panel-body-bottom{border-bottom:0 none;}
+.x-tab-scroller-left{background:transparent url(../images/default/tabs/scroll-left.gif) no-repeat -18px 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;left:0;top:0;z-index:10;cursor:pointer;}
+.x-tab-scroller-left-over{background-position:0 0;}
+.x-tab-scroller-left-disabled{background-position:-18px 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}
+.x-tab-scroller-right{background:transparent url(../images/default/tabs/scroll-right.gif) no-repeat 0 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;right:0;top:0;z-index:10;cursor:pointer;}
+.x-tab-scroller-right-over{background-position:-18px 0;}
+.x-tab-scroller-right-disabled{background-position:0 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}
+.x-tab-scrolling .x-tab-strip-wrap{margin-left:18px;margin-right:18px;}
+.x-tab-scrolling{position:relative;}
+.x-tab-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-tab-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+
+ .x-form-field{margin:0;font:normal 12px tahoma,arial,helvetica,sans-serif;}
+.x-form-text,textarea.x-form-field{padding:1px 3px;background:#fff url(../images/default/form/text-bg.gif) repeat-x 0 0;border:1px solid #B5B8C8;}
+textarea.x-form-field{padding:2px 3px;}
+.x-form-text{height:22px;line-height:18px;vertical-align:middle;}
+.ext-ie .x-form-text{margin:-1px 0;height:22px;line-height:18px;}
+.ext-ie textarea.x-form-field{margin:-1px 0;}
+.ext-strict .x-form-text{height:18px;}
+.ext-safari .x-form-text{height:20px;padding:0 3px;}
+.ext-safari.ext-mac textarea.x-form-field{margin-bottom:-2px;}
+.ext-gecko .x-form-text{padding-top:2px;padding-bottom:0;}
+textarea{resize:none;}
+.x-form-select-one{height:20px;line-height:18px;vertical-align:middle;background-color:#fff;border:1px solid #B5B8C8;}
+.x-form-check-group,.x-form-radio-group{margin-bottom:0;}
+.x-form-check-group .x-form-invalid .x-panel-body,.x-form-radio-group .x-form-invalid .x-panel-body{background-color:transparent;}
+.x-form-check-wrap,.x-form-radio-wrap{padding:3px 0 0 0;line-height:18px;}
+.x-form-check-group .x-form-check-wrap,.x-form-radio-group .x-form-radio-wrap{height:18px;}
+.ext-ie .x-form-check-group .x-form-check-wrap,.ext-ie .x-form-radio-group .x-form-radio-wrap{height:21px;}
+.ext-ie .x-form-check-wrap input,.ext-ie .x-form-radio-wrap input{width:15px;height:15px;}
+.x-form-check,.x-form-radio{height:13px;width:13px;vertical-align:bottom;}
+.x-form-radio{margin-bottom:3px;}
+.x-form-check,.ext-ie .x-form-radio{margin-bottom:2px;}
+.x-form-check-wrap-inner,.x-form-radio-wrap-inner{display:inline;padding:3px 0 0 0;}
+.x-form-check{background:url('../images/default/form/checkbox.gif') no-repeat 0 0;}
+.x-form-radio{background:url('../images/default/form/radio.gif') no-repeat 0 0;}
+.x-form-check-focus .x-form-check,.x-form-check-over .x-form-check,.x-form-check-focus .x-form-radio,.x-form-check-over .x-form-radio{background-position:-13px 0;}
+.x-form-check-down .x-form-check,.x-form-check-down .x-form-radio{background-position:-26px 0;}
+.x-form-check-checked .x-form-check-focus .x-form-check,.x-form-check-checked .x-form-check-over .x-form-check{background-position:-13px -13px;}
+.x-form-check-checked .x-form-check-down .x-form-check{background-position:-26px -13px;}
+.x-form-check-checked .x-form-check,.x-form-check-checked .x-form-radio{background-position:0 -13px;}
+.x-form-check-group-label{border-bottom:1px solid #99BBE8;color:#15428B;margin-bottom:5px;padding-left:3px!important;float:none!important;}
+.x-form-field-wrap{position:relative;zoom:1;white-space:nowrap;}
+.x-form-field-wrap .x-form-trigger{width:17px;height:21px;border:0;background:transparent url(../images/default/form/trigger.gif) no-repeat 0 0;cursor:pointer;border-bottom:1px solid #B5B8C8;position:absolute;top:0;}
+.ext-safari .x-form-field-wrap .x-form-trigger{height:21px;}
+.x-form-field-wrap .x-form-date-trigger{background-image:url(../images/default/form/date-trigger.gif);cursor:pointer;}
+.x-form-field-wrap .x-form-clear-trigger{background-image:url(../images/default/form/clear-trigger.gif);cursor:pointer;}
+.x-form-field-wrap .x-form-search-trigger{background-image:url(../images/default/form/search-trigger.gif);cursor:pointer;}
+.ext-safari .x-form-field-wrap .x-form-trigger{right:0;}
+.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{position:static;top:auto;vertical-align:top;}
+.x-form-field-wrap .x-form-trigger-over{background-position:-17px 0;}
+.x-form-field-wrap .x-form-trigger-click{background-position:-34px 0;}
+.x-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;}
+.x-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;}
+.x-trigger-wrap-focus .x-form-trigger-click{background-position:-85px 0;}
+.x-trigger-wrap-focus .x-form-trigger{border-bottom:1px solid #7eadd9;}
+.x-item-disabled .x-form-trigger-over{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}
+.x-item-disabled .x-form-trigger-click{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}
+.x-form-focus,textarea.x-form-focus{border:1px solid #7eadd9;}
+.x-form-invalid,textarea.x-form-invalid{background:#fff url(../images/default/grid/invalid_line.gif) repeat-x bottom;border:1px solid #dd7870;}
+.ext-safari .x-form-invalid{background-color:#fee;border:1px solid #ff7870;}
+.x-editor{visibility:hidden;padding:0;margin:0;}
+.x-editor .x-form-check-wrap,.x-editor .x-form-radio-wrap{background:#fff;padding:3px;}
+.x-editor .x-form-checkbox{height:13px;}
+.x-form-grow-sizer{font:normal 12px tahoma,arial,helvetica,sans-serif;left:-10000px;padding:8px 3px;position:absolute;visibility:hidden;top:-10000px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;zoom:1;}
+.x-form-grow-sizer p{margin:0!important;border:0 none!important;padding:0!important;}
+.x-form-item{font:normal 12px tahoma,arial,helvetica,sans-serif;display:block;margin-bottom:4px;zoom:1;}
+.x-form-item label{display:block;float:left;width:100px;padding:3px;padding-left:0;clear:left;z-index:2;position:relative;}
+.x-form-element{padding-left:105px;position:relative;}
+.x-form-invalid-msg{color:#e00;padding:2px;padding-left:18px;font:normal 11px tahoma,arial,helvetica,sans-serif;background:transparent url(../images/default/shared/warning.gif) no-repeat 0 2px;line-height:16px;width:200px;}
+.x-form-label-right label{text-align:right;}
+.x-form-label-left label{text-align:left;}
+.x-form-label-top .x-form-item label{width:auto;float:none;clear:none;display:inline;margin-bottom:4px;position:static;}
+.x-form-label-top .x-form-element{padding-left:0;padding-top:4px;}
+.x-form-label-top .x-form-item{padding-bottom:4px;}
+.x-form-empty-field{color:gray;}
+.x-small-editor .x-form-field{font:normal 11px arial,tahoma,helvetica,sans-serif;}
+.x-small-editor .x-form-text{height:20px;line-height:16px;vertical-align:middle;}
+.ext-ie .x-small-editor .x-form-text{margin-top:-1px!important;margin-bottom:-1px!important;height:20px!important;line-height:16px!important;}
+.ext-strict .x-small-editor .x-form-text{height:16px!important;}
+.ext-safari .x-small-editor .x-form-field{font:normal 12px arial,tahoma,helvetica,sans-serif;}
+.ext-ie .x-small-editor .x-form-text{height:20px;line-height:16px;}
+.ext-border-box .x-small-editor .x-form-text{height:20px;}
+.x-small-editor .x-form-select-one{height:20px;line-height:16px;vertical-align:middle;}
+.x-small-editor .x-form-num-field{text-align:right;}
+.x-small-editor .x-form-field-wrap .x-form-trigger{height:19px;}
+.x-form-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-form-clear-left{clear:left;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-form-cb-label{width:'auto'!important;float:none!important;clear:none!important;display:inline!important;margin-left:4px;}
+.x-form-column{float:left;padding:0;margin:0;width:48%;overflow:hidden;zoom:1;}
+.x-form .x-form-btns-ct .x-btn{float:right;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns td{border:0;padding:0;}
+.x-form .x-form-btns-ct .x-form-btns-right table{float:right;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns-left table{float:left;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns-center{text-align:center;}
+.x-form .x-form-btns-ct .x-form-btns-center table{margin:0 auto;}
+.x-form .x-form-btns-ct table td.x-form-btn-td{padding:3px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
+.x-form-invalid-icon{width:16px;height:18px;visibility:hidden;position:absolute;left:0;top:0;display:block;background:transparent url(../images/default/form/exclamation.gif) no-repeat 0 2px;}
+.x-fieldset{border:1px solid #B5B8C8;padding:10px;margin-bottom:10px;display:block;}
+.x-fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}
+.ext-ie .x-fieldset legend{margin-bottom:10px;}
+.ext-ie .x-fieldset{padding-top:0;padding-bottom:10px;}
+.x-fieldset legend .x-tool-toggle{margin-right:3px;margin-left:0;float:left!important;}
+.x-fieldset legend input{margin-right:3px;float:left!important;height:13px;width:13px;}
+fieldset.x-panel-collapsed{padding-bottom:0!important;border-width:1px 0 0 0!important;}
+fieldset.x-panel-collapsed .x-fieldset-bwrap{visibility:hidden;position:absolute;left:-1000px;top:-1000px;}
+.ext-ie .x-fieldset-bwrap{zoom:1;}
+.ext-ie td .x-form-text{position:relative;top:-1px;}
+.x-fieldset-noborder{border:0 none transparent;}
+.x-fieldset-noborder legend{margin-left:-3px;}
+.ext-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px;}
+.ext-ie .x-fieldset-noborder legend span{position:absolute;left:-5px;}
+.ext-gecko .x-window-body .x-form-item{-moz-outline:none;overflow:auto;}
+.ext-gecko .x-form-item{-moz-outline:none;}
+.x-hide-label label.x-form-item-label{display:none;}
+.x-hide-label .x-form-element{padding-left:0!important;}
+.x-fieldset{overflow:hidden;}
+.x-fieldset-bwrap{overflow:hidden;zoom:1;}
+.x-fieldset-body{overflow:hidden;}
+
+.x-btn{font:normal 11px tahoma,verdana,helvetica;cursor:pointer;white-space:nowrap;}
+.x-btn button{border:0 none;background:transparent;font:normal 11px tahoma,verdana,helvetica;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;}
+* html .ext-ie .x-btn button{width:1px;}
+.ext-gecko .x-btn button{padding-left:0;padding-right:0;}
+.ext-ie .x-btn button{padding-top:2px;}
+.x-btn-icon .x-btn-center .x-btn-text{background-position:center;background-repeat:no-repeat;height:16px;width:16px;cursor:pointer;white-space:nowrap;padding:0;}
+.x-btn-icon .x-btn-center{padding:1px;}
+.x-btn em{font-style:normal;font-weight:normal;}
+.x-btn-text-icon .x-btn-center .x-btn-text{background-position:0 2px;background-repeat:no-repeat;padding-left:18px;padding-top:3px;padding-bottom:2px;padding-right:0;}
+.ext-gecko3 .x-btn-text-icon .x-btn-center .x-btn-text{padding-top:2px;}
+.x-btn-left,.x-btn-right{font-size:1px;line-height:1px;}
+.x-btn-left{width:3px;height:21px;background:url(../images/default/button/btn-sprite.gif) no-repeat 0 0;}
+.x-btn-right{width:3px;height:21px;background:url(../images/default/button/btn-sprite.gif) no-repeat 0 -21px;}
+.x-btn-left i,.x-btn-right i{display:block;width:3px;overflow:hidden;font-size:1px;line-height:1px;}
+.x-btn-center{background:url(../images/default/button/btn-sprite.gif) repeat-x 0 -42px;vertical-align:middle;text-align:center;padding:0 5px;cursor:pointer;white-space:nowrap;}
+.x-btn-over .x-btn-left{background-position:0 -63px;}
+.x-btn-over .x-btn-right{background-position:0 -84px;}
+.x-btn-over .x-btn-center{background-position:0 -105px;}
+.x-btn-click .x-btn-center,.x-btn-menu-active .x-btn-center{background-position:0 -126px;}
+.x-btn-disabled *{color:gray!important;cursor:default!important;}
+.x-btn-menu-text-wrap .x-btn-center{padding:0 3px;}
+.ext-gecko .x-btn-menu-text-wrap .x-btn-center{padding:0 1px;}
+.x-btn-menu-arrow-wrap .x-btn-center{padding:0;}
+.x-btn-menu-arrow-wrap .x-btn-center button{width:12px!important;height:21px;padding:0!important;display:block;background:transparent url(../images/default/button/btn-arrow.gif) no-repeat left 3px;}
+.x-btn-with-menu .x-btn-center{padding-right:2px!important;}
+.x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 0;padding-right:10px;}
+.x-btn-text-icon .x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 3px;padding-right:10px;}
+.x-btn-pressed .x-btn-left{background:url(../images/default/button/btn-sprite.gif) no-repeat 0 -63px;}
+.x-btn-pressed .x-btn-right{background:url(../images/default/button/btn-sprite.gif) no-repeat 0 -84px;}
+.x-btn-pressed .x-btn-center{background:url(../images/default/button/btn-sprite.gif) repeat-x 0 -126px;}
+
+.x-toolbar{border-color:#a9bfd3;border-style:solid;border-width:0 0 1px 0;display:block;padding:2px;background:#d0def0 url(../images/default/toolbar/bg.gif) repeat-x top left;position:relative;zoom:1;}
+.x-toolbar .x-item-disabled .x-btn-icon{opacity:.35;-moz-opacity:.35;filter:alpha(opacity=35);}
+.x-toolbar td{vertical-align:middle;}
+.mso .x-toolbar,.x-grid-mso .x-toolbar{border:0 none;background:url(../images/default/grid/mso-hd.gif);}
+.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-toolbar .x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
+.x-toolbar .x-item-disabled *{color:gray;cursor:default;}
+.x-toolbar .x-btn-left{background:none;}
+.x-toolbar .x-btn-right{background:none;}
+.x-toolbar .x-btn-center{background:none;padding:0;}
+.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:2px;}
+.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:0;}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{padding:0 2px;}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}
+.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}
+.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button{background-position:0 -47px;}
+.x-toolbar .x-btn-over .x-btn-left{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0;}
+.x-toolbar .x-btn-over .x-btn-right{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px;}
+.x-toolbar .x-btn-over .x-btn-center{background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px;}
+.x-toolbar .x-btn-click .x-btn-left,.x-toolbar .x-btn-pressed .x-btn-left,.x-toolbar .x-btn-menu-active .x-btn-left{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px;}
+.x-toolbar .x-btn-click .x-btn-right,.x-toolbar .x-btn-pressed .x-btn-right,.x-toolbar .x-btn-menu-active .x-btn-right{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px;}
+.x-toolbar .x-btn-click .x-btn-center,.x-toolbar .x-btn-pressed .x-btn-center,.x-toolbar .x-btn-menu-active .x-btn-center{background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px;}
+.x-toolbar .x-btn-with-menu .x-btn-center em{padding-right:8px;}
+.x-toolbar .ytb-text{padding:2px;}
+.x-toolbar .ytb-sep{background-image:url(../images/default/grid/grid-blue-split.gif);background-position:center;background-repeat:no-repeat;display:block;font-size:1px;height:16px;width:4px;overflow:hidden;cursor:default;margin:0 2px 0;border:0;}
+.x-toolbar .ytb-spacer{width:2px;}
+.x-tbar-page-number{width:24px;height:14px;}
+.x-tbar-page-first{background-image:url(../images/default/grid/page-first.gif)!important;}
+.x-tbar-loading{background-image:url(../images/default/grid/refresh.gif)!important;}
+.x-tbar-page-last{background-image:url(../images/default/grid/page-last.gif)!important;}
+.x-tbar-page-next{background-image:url(../images/default/grid/page-next.gif)!important;}
+.x-tbar-page-prev{background-image:url(../images/default/grid/page-prev.gif)!important;}
+.x-item-disabled .x-tbar-loading{background-image:url(../images/default/grid/loading.gif)!important;}
+.x-item-disabled .x-tbar-page-first{background-image:url(../images/default/grid/page-first-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-last{background-image:url(../images/default/grid/page-last-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-next{background-image:url(../images/default/grid/page-next-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-prev{background-image:url(../images/default/grid/page-prev-disabled.gif)!important;}
+.x-paging-info{position:absolute;top:5px;right:8px;color:#444;}
+.x-statusbar .x-status-text{height:21px;line-height:21px;padding:0 4px;cursor:default;}
+.x-statusbar .x-status-busy{padding-left:25px;background:transparent url(../images/default/grid/loading.gif) no-repeat 3px 3px;}
+.x-statusbar .x-status-text-panel{border-top:1px solid #99BBE8;border-right:1px solid #fff;border-bottom:1px solid #fff;border-left:1px solid #99BBE8;padding:2px 8px 2px 5px;}
+
+.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;background:white;filter:alpha(opacity=0);opacity:0;zoom:1;}
+.x-resizable-handle-east{width:6px;cursor:e-resize;right:0;top:0;height:100%;}
+.ext-ie .x-resizable-handle-east{margin-right:-1px;}
+.x-resizable-handle-south{width:100%;cursor:s-resize;left:0;bottom:0;height:6px;}
+.ext-ie .x-resizable-handle-south{margin-bottom:-1px;}
+.x-resizable-handle-west{width:6px;cursor:w-resize;left:0;top:0;height:100%;}
+.x-resizable-handle-north{width:100%;cursor:n-resize;left:0;top:0;height:6px;}
+.x-resizable-handle-southeast{width:6px;cursor:se-resize;right:0;bottom:0;height:6px;z-index:101;}
+.x-resizable-handle-northwest{width:6px;cursor:nw-resize;left:0;top:0;height:6px;z-index:101;}
+.x-resizable-handle-northeast{width:6px;cursor:ne-resize;right:0;top:0;height:6px;z-index:101;}
+.x-resizable-handle-southwest{width:6px;cursor:sw-resize;left:0;bottom:0;height:6px;z-index:101;}
+.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1;}
+.x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east{background:url(../images/default/sizer/e-handle.gif);background-position:left;}
+.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west{background:url(../images/default/sizer/e-handle.gif);background-position:left;}
+.x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south{background:url(../images/default/sizer/s-handle.gif);background-position:top;}
+.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north{background:url(../images/default/sizer/s-handle.gif);background-position:top;}
+.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background:url(../images/default/sizer/se-handle.gif);background-position:top left;}
+.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background:url(../images/default/sizer/nw-handle.gif);background-position:bottom right;}
+.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background:url(../images/default/sizer/ne-handle.gif);background-position:bottom left;}
+.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background:url(../images/default/sizer/sw-handle.gif);background-position:top right;}
+.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;display:none;left:0;top:0;z-index:50000;}
+.x-resizable-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background:white;z-index:200000;-moz-opacity:0;opacity:0;filter:alpha(opacity=0);}
+
+ .x-grid3{position:relative;overflow:hidden;background-color:#fff;}
+.x-grid-panel .x-panel-body{overflow:hidden!important;}
+.x-grid-panel .x-panel-mc .x-panel-body{border:1px solid #99bbe8;}
+.x-grid3 table{table-layout:fixed;}
+.x-grid3-viewport{overflow:hidden;}
+.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td{font:normal 11px arial,tahoma,helvetica,sans-serif;-moz-outline:none;-moz-user-focus:normal;}
+.x-grid3-row td,.x-grid3-summary-row td{line-height:13px;vertical-align:top;padding-left:1px;padding-right:1px;-moz-user-select:none;}
+.x-grid3-hd-row td{line-height:15px;vertical-align:middle;border-left:1px solid #eee;border-right:1px solid #d0d0d0;}
+.x-grid3-hd-row .x-grid3-marker-hd{padding:3px;}
+.x-grid3-row .x-grid3-marker{padding:3px;}
+.x-grid3-cell-inner,.x-grid3-hd-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:3px 3px 3px 5px;white-space:nowrap;}
+.x-grid3-hd-inner{position:relative;cursor:inherit;padding:4px 3px 4px 5px;}
+.x-grid3-row-body{white-space:normal;}
+.x-grid3-body-cell{-moz-outline:0 none;outline:0 none;}
+.ext-ie .x-grid3-cell-inner,.ext-ie .x-grid3-hd-inner{width:100%;}
+.ext-strict .x-grid3-cell-inner,.ext-strict .x-grid3-hd-inner{width:auto;}
+.x-grid-row-loading{background:#fff url(../images/default/shared/loading-balls.gif) no-repeat center center;}
+.x-grid-page{overflow:hidden;}
+.x-grid3-row{cursor:default;border:1px solid #ededed;border-top-color:#fff;width:100%;}
+.x-grid3-row-alt{background-color:#fafafa;}
+.x-grid3-row-over{border:1px solid #ddd;background:#efefef url(../images/default/grid/row-over.gif) repeat-x left top;}
+.x-grid3-resize-proxy{width:1px;left:0;background-color:#777;cursor:e-resize;cursor:col-resize;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}
+.x-grid3-resize-marker{width:1px;left:0;background-color:#777;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}
+.x-grid3-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;-moz-user-select:text;-khtml-user-select:text;}
+.x-grid3-header{background:#f9f9f9 url(../images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;cursor:default;zoom:1;padding:1px 0 0 0;}
+.x-grid3-header-pop{border-left:1px solid #d0d0d0;float:right;clear:none;}
+.x-grid3-header-pop-inner{border-left:1px solid #eee;width:14px;height:19px;background:transparent url(../images/default/grid/hd-pop.gif) no-repeat center center;}
+.ext-ie .x-grid3-header-pop-inner{width:15px;}
+.ext-strict .x-grid3-header-pop-inner{width:14px;}
+.x-grid3-header-inner{overflow:hidden;zoom:1;float:left;}
+.x-grid3-header-offset{padding-left:1px;width:10000px;}
+td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open{border-left:1px solid #aaccf6;border-right:1px solid #aaccf6;}
+td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner{background:#ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;}
+.x-grid3-sort-icon{background-repeat:no-repeat;display:none;height:4px;width:13px;margin-left:3px;vertical-align:middle;}
+.sort-asc .x-grid3-sort-icon{background-image:url(../images/default/grid/sort_asc.gif);display:inline;}
+.sort-desc .x-grid3-sort-icon{background-image:url(../images/default/grid/sort_desc.gif);display:inline;}
+.ext-strict .ext-ie .x-grid3-header-inner{position:relative;}
+.ext-strict .ext-ie6 .x-grid3-hd{position:relative;}
+.ext-strict .ext-ie6 .x-grid3-hd-inner{position:static;}
+.x-grid3-body{zoom:1;}
+.x-grid3-scroller{overflow:auto;zoom:1;position:relative;}
+.x-grid3-cell-text,.x-grid3-hd-text{display:block;padding:3px 5px 3px 5px;-moz-user-select:none;-khtml-user-select:none;color:black;}
+.x-grid3-split{background-image:url(../images/default/grid/grid-split.gif);background-position:center;background-repeat:no-repeat;cursor:e-resize;cursor:col-resize;display:block;font-size:1px;height:16px;overflow:hidden;position:absolute;top:2px;width:6px;z-index:3;}
+.x-grid3-hd-text{color:#15428b;}
+.x-dd-drag-proxy .x-grid3-hd-inner{background:#ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;width:120px;padding:3px;border:1px solid #aaccf6;overflow:hidden;}
+.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:1px;font-size:1px;overflow:hidden;visibility:hidden;z-index:20000;}
+.col-move-top{background:transparent url(../images/default/grid/col-move-top.gif) no-repeat left top;}
+.col-move-bottom{background:transparent url(../images/default/grid/col-move-bottom.gif) no-repeat left top;}
+.x-grid3-row-selected{background:#DFE8F6!important;border:1px dotted #a3bae9;}
+.x-grid3-cell-selected{background-color:#B8CFEE!important;color:black;}
+.x-grid3-cell-selected span{color:black!important;}
+.x-grid3-cell-selected .x-grid3-cell-text{color:black;}
+.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background:#ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x 0 bottom!important;vertical-align:middle!important;color:black;padding:0;border-top:1px solid white;border-bottom:none!important;border-right:1px solid #6fa0df!important;text-align:center;}
+.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{padding:0 4px;color:#15428b!important;text-align:center;}
+.x-grid3-dirty-cell{background:transparent url(../images/default/grid/dirty.gif) no-repeat 0 0;}
+.x-grid3-topbar,.x-grid3-bottombar{font:normal 11px arial,tahoma,helvetica,sans-serif;overflow:hidden;display:none;zoom:1;position:relative;}
+.x-grid3-topbar .x-toolbar{border-right:0 none;}
+.x-grid3-bottombar .x-toolbar{border-right:0 none;border-bottom:0 none;border-top:1px solid #a9bfd3;}
+.x-props-grid .x-grid3-cell{padding:1px;}
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y -16px!important;padding-left:12px;color:black!important;}
+.x-props-grid .x-grid3-body .x-grid3-td-name{padding:1px;padding-right:0;background:white!important;border:0 none;border-right:1px solid #eee;}
+.xg-hmenu-sort-asc .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-asc.gif);}
+.xg-hmenu-sort-desc .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-desc.gif);}
+.xg-hmenu-lock .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-lock.gif);}
+.xg-hmenu-unlock .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-unlock.gif);}
+.x-grid3-col-dd{border:0 none;padding:0;background:transparent;}
+.x-dd-drag-ghost .x-grid3-dd-wrap{padding:1px 3px 3px 1px;}
+.x-grid3-hd{-moz-user-select:none;}
+.x-grid3-hd-btn{display:none;position:absolute;width:14px;background:#c3daf9 url(../images/default/grid/grid3-hd-btn.gif) no-repeat left center;right:0;top:0;z-index:2;cursor:pointer;}
+.x-grid3-hd-over .x-grid3-hd-btn,.x-grid3-hd-menu-open .x-grid3-hd-btn{display:block;}
+a.x-grid3-hd-btn:hover{background-position:-14px center;}
+.x-grid3-body .x-grid3-td-expander{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner{padding:0!important;height:100%;}
+.x-grid3-row-expander{width:100%;height:18px;background-position:4px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/grid/row-expand-sprite.gif);}
+.x-grid3-row-collapsed .x-grid3-row-expander{background-position:4px 2px;}
+.x-grid3-row-expanded .x-grid3-row-expander{background-position:-21px 2px;}
+.x-grid3-row-collapsed .x-grid3-row-body{display:none!important;}
+.x-grid3-row-expanded .x-grid3-row-body{display:block!important;}
+.x-grid3-body .x-grid3-td-checker{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner,.x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner{padding:0!important;height:100%;}
+.x-grid3-row-checker,.x-grid3-hd-checker{width:100%;height:18px;background-position:2px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/grid/row-check-sprite.gif);}
+.x-grid3-row .x-grid3-row-checker{background-position:2px 2px;}
+.x-grid3-row-selected .x-grid3-row-checker,.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 2px;}
+.x-grid3-hd-checker{background-position:2px 3px;}
+.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 3px;}
+.x-grid3-body .x-grid3-td-numberer{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner{padding:3px 5px 0 0!important;text-align:right;color:#444;}
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander{background:transparent url(../images/default/grid/grid3-special-col-sel-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner{padding:1px 0 0 0!important;}
+.x-grid3-check-col{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/menu/unchecked.gif);}
+.x-grid3-check-col-on{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/menu/checked.gif);}
+.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1;}
+.x-grid-group-hd{border-bottom:2px solid #99bbe8;cursor:pointer;padding-top:6px;}
+.x-grid-group-hd div{background:transparent url(../images/default/grid/group-expand-sprite.gif) no-repeat 3px -47px;padding:4px 4px 4px 17px;color:#3764a0;font:bold 11px tahoma,arial,helvetica,sans-serif;}
+.x-grid-group-collapsed .x-grid-group-hd div{background-position:3px 3px;}
+.x-grid-group-collapsed .x-grid-group-body{display:none;}
+.x-group-by-icon{background-image:url(../images/default/grid/group-by.gif);}
+.x-cols-icon{background-image:url(../images/default/grid/columns.gif);}
+.x-show-groups-icon{background-image:url(../images/default/grid/group-by.gif);}
+.ext-ie .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}
+.ext-ie .x-props-grid .x-editor .x-form-text{position:static;top:0;}
+.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.ext-ie7 .x-grid-panel .x-panel-bbar{position:relative;}
+
+.x-dd-drag-proxy{position:absolute;left:0;top:0;visibility:hidden;z-index:15000;}
+.x-dd-drag-ghost{color:black;font:normal 11px arial,helvetica,sans-serif;-moz-opacity:0.85;opacity:.85;filter:alpha(opacity=85);border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #bbb;border-bottom:1px solid #bbb;padding:3px;padding-left:20px;background-color:white;white-space:nowrap;}
+.x-dd-drag-repair .x-dd-drag-ghost{-moz-opacity:0.4;opacity:.4;filter:alpha(opacity=40);border:0 none;padding:0;background-color:transparent;}
+.x-dd-drag-repair .x-dd-drop-icon{visibility:hidden;}
+.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1;}
+.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url(../images/default/dd/drop-no.gif);}
+.x-dd-drop-ok .x-dd-drop-icon{background-image:url(../images/default/dd/drop-yes.gif);}
+.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(../images/default/dd/drop-add.gif);}
+.x-view-selector{position:absolute;left:0;top:0;width:0;background:#c3daf9;border:1px dotted #39b;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);zoom:1;}
+
+.x-tree .x-panel-body{background-color:#fff;}
+.ext-strict .ext-ie .x-tree .x-panel-bwrap{position:relative;overflow:hidden;}
+.x-tree-icon,.x-tree-ec-icon,.x-tree-elbow-line,.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-repeat:no-repeat;}
+.x-tree-node-collapsed .x-tree-node-icon,.x-tree-node-expanded .x-tree-node-icon,.x-tree-node-leaf .x-tree-node-icon{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-position:center;background-repeat:no-repeat;}
+.ext-ie .x-tree-node-indent img,.ext-ie .x-tree-node-icon,.ext-ie .x-tree-ec-icon{vertical-align:middle!important;}
+.x-tree-node-expanded .x-tree-node-icon{background-image:url(../images/default/tree/folder-open.gif);}
+.x-tree-node-leaf .x-tree-node-icon{background-image:url(../images/default/tree/leaf.gif);}
+.x-tree-node-collapsed .x-tree-node-icon{background-image:url(../images/default/tree/folder.gif);}
+.ext-ie input.x-tree-node-cb{width:15px;height:15px;}
+input.x-tree-node-cb{margin-left:1px;}
+.ext-ie input.x-tree-node-cb{margin-left:0;}
+.x-tree-noicon .x-tree-node-icon{width:0;height:0;}
+.x-tree-node-loading .x-tree-node-icon{background-image:url(../images/default/tree/loading.gif)!important;}
+.x-tree-node-loading a span{font-style:italic;color:#444;}
+.ext-ie .x-tree-node-el input{width:15px;height:15px;}
+.x-tree-lines .x-tree-elbow{background-image:url(../images/default/tree/elbow.gif);}
+.x-tree-lines .x-tree-elbow-plus{background-image:url(../images/default/tree/elbow-plus.gif);}
+.x-tree-lines .x-tree-elbow-minus{background-image:url(../images/default/tree/elbow-minus.gif);}
+.x-tree-lines .x-tree-elbow-end{background-image:url(../images/default/tree/elbow-end.gif);}
+.x-tree-lines .x-tree-elbow-end-plus{background-image:url(../images/default/tree/elbow-end-plus.gif);}
+.x-tree-lines .x-tree-elbow-end-minus{background-image:url(../images/default/tree/elbow-end-minus.gif);}
+.x-tree-lines .x-tree-elbow-line{background-image:url(../images/default/tree/elbow-line.gif);}
+.x-tree-no-lines .x-tree-elbow{background:transparent;}
+.x-tree-no-lines .x-tree-elbow-plus{background-image:url(../images/default/tree/elbow-plus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-minus{background-image:url(../images/default/tree/elbow-minus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-end{background:transparent;}
+.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url(../images/default/tree/elbow-end-plus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-end-minus{background-image:url(../images/default/tree/elbow-end-minus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-line{background:transparent;}
+.x-tree-arrows .x-tree-elbow{background:transparent;}
+.x-tree-arrows .x-tree-elbow-plus{background:transparent url(../images/default/tree/arrows.gif) no-repeat 0 0;}
+.x-tree-arrows .x-tree-elbow-minus{background:transparent url(../images/default/tree/arrows.gif) no-repeat -16px 0;}
+.x-tree-arrows .x-tree-elbow-end{background:transparent;}
+.x-tree-arrows .x-tree-elbow-end-plus{background:transparent url(../images/default/tree/arrows.gif) no-repeat 0 0;}
+.x-tree-arrows .x-tree-elbow-end-minus{background:transparent url(../images/default/tree/arrows.gif) no-repeat -16px 0;}
+.x-tree-arrows .x-tree-elbow-line{background:transparent;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{background-position:-32px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{background-position:-48px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{background-position:-32px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:-48px 0;}
+.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer;}
+.ext-ie ul.x-tree-node-ct{font-size:0;line-height:0;zoom:1;}
+.x-tree-node{color:black;font:normal 11px arial,tahoma,helvetica,sans-serif;white-space:nowrap;}
+.x-tree-node-el{line-height:18px;cursor:pointer;}
+.x-tree-node a,.x-dd-drag-ghost a{text-decoration:none;color:black;-khtml-user-select:none;-moz-user-select:none;-kthml-user-focus:normal;-moz-user-focus:normal;-moz-outline:0 none;outline:0 none;}
+.x-tree-node a span,.x-dd-drag-ghost a span{text-decoration:none;color:black;padding:1px 3px 1px 2px;}
+.x-tree-node .x-tree-node-disabled a span{color:gray!important;}
+.x-tree-node .x-tree-node-disabled .x-tree-node-icon{-moz-opacity:0.5;opacity:.5;filter:alpha(opacity=50);}
+.x-tree-node .x-tree-node-inline-icon{background:transparent;}
+.x-tree-node a:hover,.x-dd-drag-ghost a:hover{text-decoration:none;}
+.x-tree-node div.x-tree-drag-insert-below{border-bottom:1px dotted #36c;}
+.x-tree-node div.x-tree-drag-insert-above{border-top:1px dotted #36c;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{border-bottom:0 none;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{border-top:0 none;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{border-bottom:2px solid #36c;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{border-top:2px solid #36c;}
+.x-tree-node .x-tree-drag-append a span{background:#ddd;border:1px dotted gray;}
+.x-tree-node .x-tree-node-over{background-color:#eee;}
+.x-tree-node .x-tree-selected{background-color:#d9e8fb;}
+.x-dd-drag-ghost .x-tree-node-indent,.x-dd-drag-ghost .x-tree-ec-icon{display:none!important;}
+.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(../images/default/tree/drop-add.gif);}
+.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(../images/default/tree/drop-over.gif);}
+.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(../images/default/tree/drop-under.gif);}
+.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(../images/default/tree/drop-between.gif);}
+.x-tree-root-ct{zoom:1;}
+
+.x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;}
+.x-date-picker a{-moz-outline:0 none;outline:0 none;}
+.x-date-inner,.x-date-inner td,.x-date-inner th{border-collapse:separate;}
+.x-date-middle,.x-date-left,.x-date-right{background:url(../images/default/shared/hd-sprite.gif) repeat-x 0 -83px;color:#FFF;font:bold 11px "sans serif",tahoma,verdana,helvetica;overflow:hidden;}
+.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{background:transparent!important;vertical-align:middle;}
+.x-date-middle .x-btn .x-btn-text{color:#fff;}
+.x-date-middle .x-btn-with-menu .x-btn-center em{background:transparent url(../images/default/toolbar/btn-arrow-light.gif) no-repeat right 0;}
+.x-date-right,.x-date-left{width:18px;}
+.x-date-right{text-align:right;}
+.x-date-middle{padding-top:2px;padding-bottom:2px;width:130px;}
+.x-date-right a,.x-date-left a{display:block;width:16px;height:16px;background-position:center;background-repeat:no-repeat;cursor:pointer;-moz-opacity:0.6;opacity:.6;filter:alpha(opacity=60);}
+.x-date-right a:hover,.x-date-left a:hover{-moz-opacity:1;opacity:1;filter:alpha(opacity=100);}
+.x-date-right a{background-image:url(../images/default/shared/right-btn.gif);margin-right:2px;text-decoration:none!important;}
+.x-date-left a{background-image:url(../images/default/shared/left-btn.gif);margin-left:2px;text-decoration:none!important;}
+table.x-date-inner{width:100%;table-layout:fixed;}
+.x-date-inner th{width:25px;}
+.x-date-inner th{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;text-align:right!important;border-bottom:1px solid #a3bad9;font:normal 10px arial,helvetica,tahoma,sans-serif;color:#233d6d;cursor:default;padding:0;border-collapse:separate;}
+.x-date-inner th span{display:block;padding:2px;padding-right:7px;}
+.x-date-inner td{border:1px solid #fff;text-align:right;padding:0;}
+.x-date-inner a{padding:2px 5px;display:block;font:normal 11px arial,helvetica,tahoma,sans-serif;text-decoration:none;color:black;text-align:right;zoom:1;}
+.x-date-inner .x-date-active{cursor:pointer;color:black;}
+.x-date-inner .x-date-selected a{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;padding:1px 4px;}
+.x-date-inner .x-date-today a{border:1px solid darkred;padding:1px 4px;}
+.x-date-inner .x-date-selected span{font-weight:bold;}
+.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a{color:#aaa;text-decoration:none!important;}
+.x-date-bottom{padding:4px;border-top:1px solid #a3bad9;background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;}
+.x-date-inner a:hover,.x-date-inner .x-date-disabled a:hover{text-decoration:none!important;color:black;background:#ddecfe;}
+.x-date-inner .x-date-disabled a{cursor:default;background:#eee;color:#bbb;}
+.x-date-mmenu{background:#eee!important;}
+.x-date-mmenu .x-menu-item{font-size:10px;padding:1px 24px 1px 4px;white-space:nowrap;color:#000;}
+.x-date-mmenu .x-menu-item .x-menu-item-icon{width:10px;height:10px;margin-right:5px;background-position:center -4px!important;}
+.x-date-mp{position:absolute;left:0;top:0;background:white;display:none;}
+.x-date-mp td{padding:2px;font:normal 11px arial,helvetica,tahoma,sans-serif;}
+td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn{border:0 none;text-align:center;vertical-align:middle;width:25%;}
+.x-date-mp-ok{margin-right:3px;}
+.x-date-mp-btns button{text-decoration:none;text-align:center;text-decoration:none!important;background:#083772;color:white;border:1px solid;border-color:#36c #005 #005 #36c;padding:1px 3px 1px;font:normal 11px arial,helvetica,tahoma,sans-serif;cursor:pointer;}
+.x-date-mp-btns{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;}
+.x-date-mp-btns td{border-top:1px solid #c5d2df;text-align:center;}
+td.x-date-mp-month a,td.x-date-mp-year a{display:block;padding:2px 4px;text-decoration:none;text-align:center;color:#15428b;}
+td.x-date-mp-month a:hover,td.x-date-mp-year a:hover{color:#15428b;text-decoration:none;cursor:pointer;background:#ddecfe;}
+td.x-date-mp-sel a{padding:1px 3px;background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;}
+.x-date-mp-ybtn a{overflow:hidden;width:15px;height:15px;cursor:pointer;background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat;display:block;margin:0 auto;}
+.x-date-mp-ybtn a.x-date-mp-next{background-position:0 -120px;}
+.x-date-mp-ybtn a.x-date-mp-next:hover{background-position:-15px -120px;}
+.x-date-mp-ybtn a.x-date-mp-prev{background-position:0 -105px;}
+.x-date-mp-ybtn a.x-date-mp-prev:hover{background-position:-15px -105px;}
+.x-date-mp-ybtn{text-align:center;}
+td.x-date-mp-sep{border-right:1px solid #c5d2df;}
+
+.x-tip{position:absolute;top:0;left:0;visibility:hidden;z-index:20000;border:0 none;}
+.x-tip .x-tip-close{background-image:url(../images/default/qtip/close.gif);height:15px;float:right;width:15px;margin:0 0 2px 2px;cursor:pointer;display:none;}
+.x-tip .x-tip-tc{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -62px;padding-top:3px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-tl{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 0;padding-left:6px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-tr{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right 0;padding-right:6px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-bc{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;height:3px;overflow:hidden;}
+.x-tip .x-tip-bl{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;padding-left:6px;zoom:1;}
+.x-tip .x-tip-br{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -59px;padding-right:6px;zoom:1;}
+.x-tip .x-tip-mc{border:0 none;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-tip .x-tip-ml{background:#fff url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;padding-left:6px;zoom:1;}
+.x-tip .x-tip-mr{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -124px;padding-right:6px;zoom:1;}
+.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc{font-size:0;line-height:0;}
+.x-tip .x-tip-header-text{font:bold 11px tahoma,arial,helvetica,sans-serif;padding:0;margin:0 0 2px 0;color:#444;}
+.x-tip .x-tip-body{font:normal 11px tahoma,arial,helvetica,sans-serif;margin:0!important;line-height:14px;color:#444;padding:0;}
+.x-tip .x-tip-body .loading-indicator{margin:0;}
+.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text{cursor:move;}
+.x-form-invalid-tip .x-tip-tc{background:url(../images/default/form/error-tip-corners.gif) repeat-x 0 -12px;padding-top:6px;}
+.x-form-invalid-tip .x-tip-tl{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-tr{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-bc{background:url(../images/default/form/error-tip-corners.gif) repeat-x 0 -18px;height:6px;}
+.x-form-invalid-tip .x-tip-bl{background:url(../images/default/form/error-tip-corners.gif) no-repeat 0 -6px;}
+.x-form-invalid-tip .x-tip-br{background:url(../images/default/form/error-tip-corners.gif) no-repeat right -6px;}
+.x-form-invalid-tip .x-tip-ml{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-mr{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-body{padding:2px;}
+.x-form-invalid-tip .x-tip-body{padding-left:24px;background:transparent url(../images/default/form/exclamation.gif) no-repeat 2px 2px;}
+
+.x-menu{border:1px solid #718bb7;z-index:15000;zoom:1;background:#f0f0f0 url(../images/default/menu/menu.gif) repeat-y;padding:2px;}
+.x-menu a{text-decoration:none!important;}
+.ext-ie .x-menu{zoom:1;overflow:hidden;}
+.x-menu-list{background:transparent;border:0 none;}
+.x-menu li{line-height:100%;}
+.x-menu li.x-menu-sep-li{font-size:1px;line-height:1px;}
+.x-menu-list-item{font:normal 11px tahoma,arial,sans-serif;white-space:nowrap;-moz-user-select:none;-khtml-user-select:none;display:block;padding:1px;}
+.x-menu-item-arrow{background:transparent url(../images/default/menu/menu-parent.gif) no-repeat right;}
+.x-menu-sep{display:block;font-size:1px;line-height:1px;margin:2px 3px;background-color:#e0e0e0;border-bottom:1px solid #fff;overflow:hidden;}
+.x-menu-focus{position:absolute;left:-1px;top:-1px;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;-moz-user-select:text;-khtml-user-select:text;overflow:hidden;display:block;}
+.x-menu a.x-menu-item{display:block;line-height:16px;padding:3px 21px 3px 3px;white-space:nowrap;text-decoration:none;color:#222;-moz-outline:0 none;outline:0 none;cursor:pointer;}
+.x-menu-item-active{background:#ebf3fd url(../images/default/menu/item-over.gif) repeat-x left bottom;border:1px solid #aaccf6;padding:0;}
+.x-menu-item-active a.x-menu-item{color:#233d6d;}
+.x-menu-item-icon{border:0 none;height:16px;padding:0;vertical-align:top;width:16px;margin:0 8px 0 0;background-position:center;}
+.x-menu-check-item .x-menu-item-icon{background:transparent url(../images/default/menu/unchecked.gif) no-repeat center;}
+.x-menu-item-checked .x-menu-item-icon{background-image:url(../images/default/menu/checked.gif);}
+.x-menu-group-item .x-menu-item-icon{background:transparent;}
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{background:transparent url(../images/default/menu/group-checked.gif) no-repeat center;}
+.x-menu-plain{background:#fff!important;}
+.x-menu-date-item{padding:0;}
+.x-menu .x-color-palette,.x-menu .x-date-picker{margin-left:26px;margin-right:4px;}
+.x-menu .x-date-picker{border:1px solid #a3bad9;margin-top:2px;margin-bottom:2px;}
+.x-menu-plain .x-color-palette,.x-menu-plain .x-date-picker{margin:0;border:0 none;}
+.x-date-menu{padding:0!important;}
+.x-cycle-menu .x-menu-item-checked{border:1px dotted #a3bae9!important;background:#DFE8F6;padding:0;}
+
+ .x-box-tl{background:transparent url(../images/default/box/corners.gif) no-repeat 0 0;zoom:1;}
+.x-box-tc{height:8px;background:transparent url(../images/default/box/tb.gif) repeat-x 0 0;overflow:hidden;}
+.x-box-tr{background:transparent url(../images/default/box/corners.gif) no-repeat right -8px;}
+.x-box-ml{background:transparent url(../images/default/box/l.gif) repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}
+.x-box-mc{background:#eee url(../images/default/box/tb.gif) repeat-x 0 -16px;padding:4px 10px;font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:12px;}
+.x-box-mc h3{font-size:14px;font-weight:bold;margin:0 0 4px 0;zoom:1;}
+.x-box-mr{background:transparent url(../images/default/box/r.gif) repeat-y right;padding-right:4px;overflow:hidden;}
+.x-box-bl{background:transparent url(../images/default/box/corners.gif) no-repeat 0 -16px;zoom:1;}
+.x-box-bc{background:transparent url(../images/default/box/tb.gif) repeat-x 0 -8px;height:8px;overflow:hidden;}
+.x-box-br{background:transparent url(../images/default/box/corners.gif) no-repeat right -24px;}
+.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden;}
+.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden;}
+.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(../images/default/box/corners-blue.gif);}
+.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(../images/default/box/tb-blue.gif);}
+.x-box-blue .x-box-mc{background-color:#c3daf9;}
+.x-box-blue .x-box-mc h3{color:#17385b;}
+.x-box-blue .x-box-ml{background-image:url(../images/default/box/l-blue.gif);}
+.x-box-blue .x-box-mr{background-image:url(../images/default/box/r-blue.gif);}
+
+#x-debug-browser .x-tree .x-tree-node a span{color:#222297;font-size:11px;padding-top:2px;font-family:"monotype","courier new",sans-serif;line-height:18px;}
+#x-debug-browser .x-tree a i{color:#FF4545;font-style:normal;}
+#x-debug-browser .x-tree a em{color:#999;}
+#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{background:#c3daf9;}
+#x-debug-browser .x-tool-toggle{background-position:0 -75px;}
+#x-debug-browser .x-tool-toggle-over{background-position:-15px -75px;}
+#x-debug-browser.x-panel-collapsed .x-tool-toggle{background-position:0 -60px;}
+#x-debug-browser.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -60px;}
+
+.x-combo-list{border:1px solid #98c0f4;background:#ddecfe;zoom:1;overflow:hidden;}
+.x-combo-list-inner{overflow:auto;background:white;position:relative;zoom:1;overflow-x:hidden;}
+.x-combo-list-hd{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;background-image:url(../images/default/layout/panel-title-light-bg.gif);border-bottom:1px solid #98c0f4;padding:3px;}
+.x-resizable-pinned .x-combo-list-inner{border-bottom:1px solid #98c0f4;}
+.x-combo-list-item{font:normal 12px tahoma,arial,helvetica,sans-serif;padding:2px;border:1px solid #fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
+.x-combo-list .x-combo-selected{border:1px dotted #a3bae9!important;background:#DFE8F6;cursor:pointer;}
+.x-combo-noedit{cursor:pointer;}
+.x-combo-list .x-toolbar{border-top:1px solid #98c0f4;border-bottom:0 none;}
+.x-combo-list-small .x-combo-list-item{font:normal 11px tahoma,arial,helvetica,sans-serif;}
+
+.x-panel{border-style:solid;border-color:#99bbe8;border-width:0;}
+.x-panel-header{overflow:hidden;zoom:1;color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 3px 4px 5px;border:1px solid #99bbe8;line-height:15px;background:transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px;}
+.x-panel-body{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;background:white;position:relative;}
+.x-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
+.x-panel-body-noheader,.x-panel-mc .x-panel-body{border-top:1px solid #99bbe8;}
+.x-panel-header{overflow:hidden;zoom:1;}
+.x-panel-tl .x-panel-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;border:0 none;background:transparent;}
+.x-panel-tl .x-panel-icon,.x-window-tl .x-panel-icon{padding-left:20px!important;background-repeat:no-repeat;background-position:0 4px;zoom:1;}
+.x-panel-inline-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px;margin-top:-1px;margin-bottom:-1px;}
+.x-panel-tc{background:transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 0;overflow:hidden;}
+.ext-strict .ext-ie7 .x-panel-tc{overflow:visible;}
+.x-panel-tl{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 0;padding-left:6px;zoom:1;border-bottom:1px solid #99bbe8;}
+.x-panel-tr{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat right 0;zoom:1;padding-right:6px;}
+.x-panel-bc{background:transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 bottom;zoom:1;}
+.x-panel-bc .x-panel-footer{zoom:1;}
+.x-panel-bl{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 bottom;padding-left:6px;zoom:1;}
+.x-panel-br{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat right bottom;padding-right:6px;zoom:1;}
+.x-panel-mc{border:0 none;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;padding-top:6px;background:#dfe8f6;}
+.x-panel-mc .x-panel-body{background:transparent;border:0 none;}
+.x-panel-ml{background:#fff url(../images/default/panel/left-right.gif) repeat-y 0 0;padding-left:6px;zoom:1;}
+.x-panel-mr{background:transparent url(../images/default/panel/left-right.gif) repeat-y right 0;padding-right:6px;zoom:1;}
+.x-panel-bc .x-panel-footer{padding-bottom:6px;}
+.x-panel-nofooter .x-panel-bc,.x-panel-nofooter .x-window-bc{height:6px;font-size:0;line-height:0;}
+.x-panel-bwrap{overflow:hidden;zoom:1;left:0;top:0;}
+.x-panel-body{overflow:hidden;zoom:1;}
+.x-panel-collapsed .x-resizable-handle{display:none;}
+.ext-gecko .x-panel-animated div{overflow:hidden!important;}
+.x-plain-body{overflow:hidden;}
+.x-plain-bbar .x-toolbar{overflow:hidden;padding:2px;}
+.x-plain-tbar .x-toolbar{overflow:hidden;padding:2px;}
+.x-plain-bwrap{overflow:hidden;zoom:1;}
+.x-plain{overflow:hidden;}
+.x-tool{overflow:hidden;width:15px;height:15px;float:right;cursor:pointer;background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat;margin-left:2px;}
+.x-tool-toggle{background-position:0 -60px;}
+.x-tool-toggle-over{background-position:-15px -60px;}
+.x-panel-collapsed .x-tool-toggle{background-position:0 -75px;}
+.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -75px;}
+.x-tool-close{background-position:0 -0;}
+.x-tool-close-over{background-position:-15px 0;}
+.x-tool-minimize{background-position:0 -15px;}
+.x-tool-minimize-over{background-position:-15px -15px;}
+.x-tool-maximize{background-position:0 -30px;}
+.x-tool-maximize-over{background-position:-15px -30px;}
+.x-tool-restore{background-position:0 -45px;}
+.x-tool-restore-over{background-position:-15px -45px;}
+.x-tool-gear{background-position:0 -90px;}
+.x-tool-gear-over{background-position:-15px -90px;}
+.x-tool-pin{background-position:0 -135px;}
+.x-tool-pin-over{background-position:-15px -135px;}
+.x-tool-unpin{background-position:0 -150px;}
+.x-tool-unpin-over{background-position:-15px -150px;}
+.x-tool-right{background-position:0 -165px;}
+.x-tool-right-over{background-position:-15px -165px;}
+.x-tool-left{background-position:0 -180px;}
+.x-tool-left-over{background-position:-15px -180px;}
+.x-tool-up{background-position:0 -210px;}
+.x-tool-up-over{background-position:-15px -210px;}
+.x-tool-down{background-position:0 -195px;}
+.x-tool-down-over{background-position:-15px -195px;}
+.x-tool-refresh{background-position:0 -225px;}
+.x-tool-refresh-over{background-position:-15px -225px;}
+.x-tool-minus{background-position:0 -255px;}
+.x-tool-minus-over{background-position:-15px -255px;}
+.x-tool-plus{background-position:0 -240px;}
+.x-tool-plus-over{background-position:-15px -240px;}
+.x-tool-search{background-position:0 -270px;}
+.x-tool-search-over{background-position:-15px -270px;}
+.x-tool-save{background-position:0 -285px;}
+.x-tool-save-over{background-position:-15px -285px;}
+.x-tool-help{background-position:0 -300px;}
+.x-tool-help-over{background-position:-15px -300px;}
+.x-tool-print{background-position:0 -315px;}
+.x-tool-print-over{background-position:-15px -315px;}
+.x-panel-ghost{background:#cbddf3;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;opacity:.65;-moz-opacity:.65;filter:alpha(opacity=65);}
+.x-panel-ghost ul{margin:0;padding:0;overflow:hidden;font-size:0;line-height:0;border:1px solid #99bbe8;border-top:0 none;display:block;}
+.x-panel-ghost *{cursor:move!important;}
+.x-panel-dd-spacer{border:2px dashed #99bbe8;}
+.x-panel-btns-ct{padding:5px;}
+.x-panel-btns-ct .x-btn{float:right;clear:none;}
+.x-panel-btns-ct .x-panel-btns td{border:0;padding:0;}
+.x-panel-btns-ct .x-panel-btns-right table{float:right;clear:none;}
+.x-panel-btns-ct .x-panel-btns-left table{float:left;clear:none;}
+.x-panel-btns-ct .x-panel-btns-center{text-align:center;}
+.x-panel-btns-ct .x-panel-btns-center table{margin:0 auto;}
+.x-panel-btns-ct table td.x-panel-btn-td{padding:3px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}
+.x-panel-btns-ct .x-btn-over .x-btn-left{background-position:0 -63px;}
+.x-panel-btns-ct .x-btn-over .x-btn-right{background-position:0 -84px;}
+.x-panel-btns-ct .x-btn-over .x-btn-center{background-position:0 -105px;}
+.x-panel-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}
+.x-panel-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}
+.x-panel-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
+
+.x-window{zoom:1;}
+.x-window .x-resizable-handle{opacity:0;-moz-opacity:0;filter:alpha(opacity=0);}
+.x-window-proxy{background:#C7DFFC;border:1px solid #99bbe8;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;display:none;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
+.x-window-header{overflow:hidden;zoom:1;}
+.x-window-bwrap{z-index:1;position:relative;zoom:1;left:0;top:0;}
+.x-window-tl .x-window-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;}
+.x-window-header-text{cursor:pointer;}
+.x-window-tc{background:transparent url(../images/default/window/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;}
+.x-window-tl{background:transparent url(../images/default/window/left-corners.png) no-repeat 0 0;padding-left:6px;zoom:1;z-index:1;position:relative;}
+.x-window-tr{background:transparent url(../images/default/window/right-corners.png) no-repeat right 0;padding-right:6px;}
+.x-window-bc{background:transparent url(../images/default/window/top-bottom.png) repeat-x 0 bottom;zoom:1;}
+.x-window-bc .x-window-footer{padding-bottom:6px;zoom:1;font-size:0;line-height:0;}
+.x-window-bl{background:transparent url(../images/default/window/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;}
+.x-window-br{background:transparent url(../images/default/window/right-corners.png) no-repeat right bottom;padding-right:6px;zoom:1;}
+.x-window-mc{border:1px solid #99bbe8;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;background:#dfe8f6;}
+.x-window-ml{background:transparent url(../images/default/window/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;}
+.x-window-mr{background:transparent url(../images/default/window/left-right.png) repeat-y right 0;padding-right:6px;zoom:1;}
+.x-window-body{overflow:hidden;}
+.x-window-bwrap{overflow:hidden;}
+.x-window-maximized .x-window-bl,.x-window-maximized .x-window-br,.x-window-maximized .x-window-ml,.x-window-maximized .x-window-mr,.x-window-maximized .x-window-tl,.x-window-maximized .x-window-tr{padding:0;}
+.x-window-maximized .x-window-footer{padding-bottom:0;}
+.x-window-maximized .x-window-tc{padding-left:3px;padding-right:3px;background-color:white;}
+.x-window-maximized .x-window-mc{border-left:0 none;border-right:0 none;}
+.x-window-tbar .x-toolbar,.x-window-bbar .x-toolbar{border-left:0 none;border-right:0 none;}
+.x-window-bbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
+.x-window-draggable,.x-window-draggable .x-window-header-text{cursor:move;}
+.x-window-maximized .x-window-draggable,.x-window-maximized .x-window-draggable .x-window-header-text{cursor:default;}
+.x-window-body{background:transparent;}
+.x-panel-ghost .x-window-tl{border-bottom:1px solid #99bbe8;}
+.x-panel-collapsed .x-window-tl{border-bottom:1px solid #84a0c4;}
+.x-window-maximized-ct{overflow:hidden;}
+.x-window-maximized .x-resizable-handle{display:none;}
+.x-window-sizing-ghost ul{border:0 none!important;}
+.x-dlg-focus{-moz-outline:0 none;outline:0 none;width:0;height:0;overflow:hidden;position:absolute;top:0;left:0;}
+.x-dlg-mask{z-index:10000;display:none;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;}
+body.ext-ie6.x-body-masked select{visibility:hidden;}
+body.ext-ie6.x-body-masked .x-window select{visibility:visible;}
+.x-window-plain .x-window-mc{background:#CAD9EC;border-right:1px solid #DFE8F6;border-bottom:1px solid #DFE8F6;border-top:1px solid #a3bae9;border-left:1px solid #a3bae9;}
+.x-window-plain .x-window-body{border-left:1px solid #DFE8F6;border-top:1px solid #DFE8F6;border-bottom:1px solid #a3bae9;border-right:1px solid #a3bae9;background:transparent!important;}
+body.x-body-masked .x-window-plain .x-window-mc{background:#C7D6E9;}
+
+.x-html-editor-wrap{border:1px solid #a9bfd3;background:white;}
+.x-html-editor-tb .x-btn-text{background:transparent url(../images/default/editor/tb-sprite.gif) no-repeat;}
+.x-html-editor-tb .x-edit-bold .x-btn-text{background-position:0 0;}
+.x-html-editor-tb .x-edit-italic .x-btn-text{background-position:-16px 0;}
+.x-html-editor-tb .x-edit-underline .x-btn-text{background-position:-32px 0;}
+.x-html-editor-tb .x-edit-forecolor .x-btn-text{background-position:-160px 0;}
+.x-html-editor-tb .x-edit-backcolor .x-btn-text{background-position:-176px 0;}
+.x-html-editor-tb .x-edit-justifyleft .x-btn-text{background-position:-112px 0;}
+.x-html-editor-tb .x-edit-justifycenter .x-btn-text{background-position:-128px 0;}
+.x-html-editor-tb .x-edit-justifyright .x-btn-text{background-position:-144px 0;}
+.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text{background-position:-80px 0;}
+.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text{background-position:-96px 0;}
+.x-html-editor-tb .x-edit-increasefontsize .x-btn-text{background-position:-48px 0;}
+.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text{background-position:-64px 0;}
+.x-html-editor-tb .x-edit-sourceedit .x-btn-text{background-position:-192px 0;}
+.x-html-editor-tb .x-edit-createlink .x-btn-text{background-position:-208px 0;}
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px;}
+.x-html-editor-tb .x-toolbar{position:static!important;}
+
+.x-panel-noborder .x-panel-body-noborder{border-width:0;}
+.x-panel-noborder .x-panel-header-noborder{border-width:0;border-bottom:1px solid #99bbe8;}
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}
+.x-window-noborder .x-window-mc{border-width:0;}
+.x-window-plain .x-window-body-noborder{border-width:0;}
+.x-tab-panel-noborder .x-tab-panel-body-noborder{border-width:0;}
+.x-tab-panel-noborder .x-tab-panel-header-noborder{border-top-width:0;border-left-width:0;border-right-width:0;}
+.x-tab-panel-noborder .x-tab-panel-footer-noborder{border-bottom-width:0;border-left-width:0;border-right-width:0;}
+.x-tab-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}
+.x-tab-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}
+
+.x-border-layout-ct{background:#dfe8f6;}
+.x-border-panel{position:absolute;left:0;top:0;}
+.x-tool-collapse-south{background-position:0 -195px;}
+.x-tool-collapse-south-over{background-position:-15px -195px;}
+.x-tool-collapse-north{background-position:0 -210px;}
+.x-tool-collapse-north-over{background-position:-15px -210px;}
+.x-tool-collapse-west{background-position:0 -180px;}
+.x-tool-collapse-west-over{background-position:-15px -180px;}
+.x-tool-collapse-east{background-position:0 -165px;}
+.x-tool-collapse-east-over{background-position:-15px -165px;}
+.x-tool-expand-south{background-position:0 -210px;}
+.x-tool-expand-south-over{background-position:-15px -210px;}
+.x-tool-expand-north{background-position:0 -195px;}
+.x-tool-expand-north-over{background-position:-15px -195px;}
+.x-tool-expand-west{background-position:0 -165px;}
+.x-tool-expand-west-over{background-position:-15px -165px;}
+.x-tool-expand-east{background-position:0 -180px;}
+.x-tool-expand-east-over{background-position:-15px -180px;}
+.x-tool-expand-north,.x-tool-expand-south{float:right;margin:3px;}
+.x-tool-expand-east,.x-tool-expand-west{float:none;margin:3px auto;}
+.x-accordion-hd .x-tool-toggle{background-position:0 -255px;}
+.x-accordion-hd .x-tool-toggle-over{background-position:-15px -255px;}
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle{background-position:0 -240px;}
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over{background-position:-15px -240px;}
+.x-accordion-hd{color:#222;padding-top:4px;padding-bottom:3px;border-top:0 none;font-weight:normal;background:transparent url(../images/default/panel/light-hd.gif) repeat-x 0 -9px;}
+.x-layout-collapsed{position:absolute;left:-10000px;top:-10000px;visibility:hidden;background-color:#d2e0f2;width:20px;height:20px;overflow:hidden;border:1px solid #98c0f4;z-index:20;}
+.ext-border-box .x-layout-collapsed{width:22px;height:22px;}
+.x-layout-collapsed-over{cursor:pointer;background-color:#d9e8fb;}
+.x-layout-collapsed-west .x-layout-collapsed-tools,.x-layout-collapsed-east .x-layout-collapsed-tools{position:absolute;top:0;left:0;width:20px;height:20px;}
+.x-layout-split{position:absolute;height:5px;width:5px;line-height:1px;font-size:1px;z-index:3;background-color:transparent;}
+.ext-strict .ext-ie6 .x-layout-split{background-color:#fff!important;filter:alpha(opacity=1);}
+.x-layout-split-h{background-image:url(../images/default/s.gif);background-position:left;}
+.x-layout-split-v{background-image:url(../images/default/s.gif);background-position:top;}
+.x-column-layout-ct{overflow:hidden;zoom:1;}
+.x-column{float:left;padding:0;margin:0;overflow:hidden;zoom:1;}
+.x-layout-mini{position:absolute;top:0;left:0;display:block;width:5px;height:35px;cursor:pointer;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
+.x-layout-mini-over,.x-layout-collapsed-over .x-layout-mini{opacity:1;-moz-opacity:1;filter:none;}
+.x-layout-split-west .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-left.gif);}
+.x-layout-split-east .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-right.gif);}
+.x-layout-split-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-top.gif);}
+.x-layout-split-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-bottom.gif);}
+.x-layout-cmini-west .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-right.gif);}
+.x-layout-cmini-east .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-left.gif);}
+.x-layout-cmini-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-bottom.gif);}
+.x-layout-cmini-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-top.gif);}
+.x-layout-cmini-west,.x-layout-cmini-east{border:0 none;width:5px!important;padding:0;background:transparent;}
+.x-layout-cmini-north,.x-layout-cmini-south{border:0 none;height:5px!important;padding:0;background:transparent;}
+.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;}
+.x-abs-layout-item{position:absolute;left:0;top:0;}
+.ext-ie input.x-abs-layout-item,.ext-ie textarea.x-abs-layout-item{margin:0;}
+
+.x-progress-wrap{border:1px solid #6593cf;overflow:hidden;}
+.x-progress-inner{height:18px;background:#e0e8f3 url(../images/default/qtip/bg.gif) repeat-x;position:relative;}
+.x-progress-bar{height:18px;float:left;width:0;background:#9CBFEE url( ../images/default/progress/progress-bg.gif ) repeat-x left center;border-top:1px solid #D1E4FD;border-bottom:1px solid #7FA9E4;border-right:1px solid #7FA9E4;}
+.x-progress-text{font-size:11px;font-weight:bold;color:#fff;padding:1px 5px;overflow:hidden;position:absolute;left:0;text-align:center;}
+.x-progress-text-back{color:#396095;line-height:16px;}
+.ext-ie .x-progress-text-back{line-height:15px;}
+
+.x-window-dlg .x-window-body{border:0 none!important;padding:5px 10px;overflow:hidden!important;}
+.x-window-dlg .x-window-mc{border:0 none!important;}
+.x-window-dlg .ext-mb-text,.x-window-dlg .x-window-header-text{font-size:12px;}
+.x-window-dlg .ext-mb-input{margin-top:4px;width:95%;}
+.x-window-dlg .ext-mb-textarea{margin-top:4px;font:normal 12px tahoma,arial,helvetica,sans-serif;}
+.x-window-dlg .x-progress-wrap{margin-top:4px;}
+.ext-ie .x-window-dlg .x-progress-wrap{margin-top:6px;}
+.x-window-dlg .x-msg-box-wait{background:transparent url(../images/default/grid/loading.gif) no-repeat left;display:block;width:300px;padding-left:18px;line-height:18px;}
+.x-window-dlg .ext-mb-icon{float:left;width:47px;height:32px;}
+.x-window-dlg .ext-mb-icon{float:left;width:47px;height:32px;}
+.ext-ie .x-window-dlg .ext-mb-icon{width:44px;}
+.x-window-dlg .ext-mb-info{background:transparent url(../images/default/window/icon-info.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-warning{background:transparent url(../images/default/window/icon-warning.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-question{background:transparent url(../images/default/window/icon-question.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-error{background:transparent url(../images/default/window/icon-error.gif) no-repeat top left;}
+.ext-gecko2 .ext-mb-fix-cursor{overflow:auto;}
+
+ .x-slider{zoom:1;}
+.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1;}
+.x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;-moz-user-select:text;-khtml-user-select:text;}
+.x-slider-horz{padding-left:7px;background:transparent url(../images/default/slider/slider-bg.png) no-repeat 0 -22px;}
+.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent url(../images/default/slider/slider-bg.png) no-repeat right -44px;}
+.x-slider-horz .x-slider-inner{background:transparent url(../images/default/slider/slider-bg.png) repeat-x 0 0;height:22px;}
+.x-slider-horz .x-slider-thumb{width:14px;height:15px;position:absolute;left:0;top:3px;background:transparent url(../images/default/slider/slider-thumb.png) no-repeat 0 0;}
+.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px;}
+.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px;}
+.x-slider-vert{padding-top:7px;background:transparent url(../images/default/slider/slider-v-bg.png) no-repeat -44px 0;width:22px;}
+.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent url(../images/default/slider/slider-v-bg.png) no-repeat -22px bottom;}
+.x-slider-vert .x-slider-inner{background:transparent url(../images/default/slider/slider-v-bg.png) repeat-y 0 0;}
+.x-slider-vert .x-slider-thumb{width:15px;height:14px;position:absolute;left:3px;bottom:0;background:transparent url(../images/default/slider/slider-v-thumb.png) no-repeat 0 0;}
+.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px;}
+.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px;}
+
diff --git a/deluge/ui/web/docs/template/resources/deluge.png b/deluge/ui/web/docs/template/resources/deluge.png
new file mode 100644
index 0000000..761f060
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/deluge.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/docs.css b/deluge/ui/web/docs/template/resources/docs.css
new file mode 100644
index 0000000..4d3c5e9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/docs.css
@@ -0,0 +1,346 @@
+body {
+ font: normal 12px verdana,arial,tahoma;
+}
+html, body {
+ margin:0;
+ padding:0;
+ border:0 none;
+ overflow:hidden;
+ height:100%;
+ width:100%;
+}
+#class .loading-indicator{
+ font-size:12px;
+ height:18px;
+}
+
+
+#docs .top-toolbar{
+ border:0 none;
+ border-top:1px solid #d0d0d0;
+ background:transparent;
+}
+#docs .top-toolbar button {
+
+}
+.x-panel-noborder {
+ border: 0 none;
+}
+#header{
+ border:0 none;
+ background:#1E4176 url(hd-bg.gif) repeat-x 0 0;
+ padding-top:3px;
+ padding-left:3px;
+}
+.docs-header .x-panel-body {
+ background:transparent;
+}
+
+#header {
+
+}
+
+#header .api-title {
+ font:normal 16px tahoma, arial, sans-serif;
+ color:white;
+ margin:5px;
+}
+
+.loading-indicator {
+ font-size:11px;
+ background-image:url('../resources/images/default/grid/loading.gif');
+ background-repeat: no-repeat;
+ background-position:top left;
+ padding-left:20px;
+ height:18px;
+ text-align:left;
+}
+
+#doc-body .loading-indicator {
+ font:bold 13px Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ position:absolute;
+ top:35%;
+ left:43%;
+ color:#444;
+ background-image:url(../resources/images/default/shared/large-loading.gif);
+ background-repeat: no-repeat;
+ background-position:left 5px;
+ padding:10px 10px 10px 38px;
+ text-align:left;
+}
+a#welcome-link{
+ background:#fff url(docs.gif) no-repeat 0px 0px;
+ padding-left:18px;
+}
+a#help-forums{
+ background:#fff url(forum.gif) no-repeat 16px 0px;
+ padding-left:34px;
+ display:block
+}
+#loading-mask{
+ position:absolute;
+ left:0;
+ top:0;
+ width:100%;
+ height:100%;
+ z-index:20000;
+ background-color:white;
+}
+#loading{
+ position:absolute;
+ left:45%;
+ top:40%;
+ padding:2px;
+ z-index:20001;
+ height:auto;
+}
+#loading img {
+ margin-bottom:5px;
+}
+#loading .loading-indicator{
+ background:white;
+ color:#555;
+ font:bold 13px tahoma,arial,helvetica;
+ padding:10px;
+ margin:0;
+ text-align:center;
+ height:auto;
+}
+#api-tree a span {
+ font-family:verdana,arial,tahoma,sans-serif;
+ font-size:11px;
+}
+#api-tree .cls a:hover span {
+ text-decoration:underline;
+}
+#api-tree .x-panel-body {
+ background-color:white;
+ position:relative;
+ padding:3px;
+}
+#api-tree .cls{
+ border:1px solid #fff;
+}
+
+#api-tree .x-tree-selected {
+ border:1px dotted #a3bae9;
+ background:#DFE8F6;
+}
+#api-tree .x-tree-node .x-tree-selected a span{
+ background:transparent;
+ color:#1E4176;
+ font-weight:bold;
+}
+
+a {
+ color: #1E4176;
+}
+a:link {
+ color: #1E4176;
+ text-decoration: none;
+}
+
+a:visited {
+ color: #555;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+ color: #15428b;
+}
+
+#welcome {
+ position:relative;
+ top:0;
+ left: 0;
+ zoom:1;
+}
+.col{
+ margin:0 250px 0 10px;
+ zoom:1;
+ padding: 10px 0;
+}
+
+.col-last {
+ width: 220px;
+ position:absolute;
+ right:10px;
+ top:10px;
+}
+
+.block{
+ margin-bottom:10px;
+}
+.block-title{
+ color: #1E4176;
+ font:normal 18px tahoma,verdana,sans-serif;
+ letter-spacing:-1px;
+ padding: 4px;
+ padding-left: 8px;
+}
+.block-body{
+ padding:8px;
+ padding-top:2px;
+}
+.block-body b{
+ color:#333333;
+ font-size:11px;
+}
+.block-body em {
+ display:block;
+ margin-top:5px;
+ font-size:11px;
+ color:gray;
+ text-align:right;
+}
+.list{
+ list-style: square;
+ padding-left:20px;
+ margin-top:5px;
+}
+
+.res-block {
+ padding-top:5px;
+ background:transparent url(block-top.gif) no-repeat;
+ width:210px;
+ margin-bottom:15px;
+}
+.res-block-inner {
+ padding:6px 11px;
+ background:transparent url(block-bottom.gif) no-repeat left bottom;
+}
+
+.res-block h3 {
+ font: bold 12px tahoma,arial,sans-serif;
+ color:#555;
+ margin-bottom:8px;
+}
+
+.res-block ul {
+ list-style-type: disc;
+ margin-left:15px;
+ font: normal 12px tahoma,arial,sans-serif;
+ color:#555;
+}
+
+.res-block ul li {
+ margin:0 0 5px 3px;
+}
+
+.hide-inherited .inherited {
+ display:none;
+}
+
+#doc-body .x-tab-panel-body {
+ background:#fff url(../resources/images/default/form/text-bg.gif) repeat-x 0 0;
+}
+#doc-body .x-panel-body, #doc-body .body-wrap {
+ background:transparent !important;
+}
+.icon-cls {
+ background-image: url(class.gif) !important;
+}
+.icon-event {
+ background-image: url(event.gif) !important;
+}
+.icon-config {
+ background-image: url(config.gif) !important;
+}
+.icon-prop {
+ background-image: url(prop.gif) !important;
+}
+.icon-method {
+ background-image: url(method.gif) !important;
+}
+.icon-cmp {
+ background-image: url(cmp.gif) !important;
+}
+.icon-pkg {
+ background-image: url(pkg.gif) !important;
+}
+.icon-fav {
+ background-image: url(fav.gif) !important;
+}
+.icon-static {
+ background-image: url(static.gif) !important;
+}
+.icon-docs {
+ background-image: url(docs.gif) !important;
+}
+.icon-expand-all {
+ background-image: url(expand-all.gif) !important;
+}
+.icon-collapse-all {
+ background-image: url(collapse-all.gif) !important;
+}
+.icon-expand-members {
+ background-image: url(expand-members.gif) !important;
+}
+.icon-hide-inherited {
+ background-image: url(hide-inherited.gif) !important;
+}
+
+#legend li {
+ line-height:16px;
+}
+.item-icon {
+ vertical-align:top;
+ width:16px;
+ height:16px;
+ margin-right:6px;
+}
+.ext-ie .item-icon {
+ vertical-align:middle;
+}
+h3.home-title {
+ margin:5px 0;
+ font:bold 13px tahoma,arial,sans-serif;
+ color:#444;
+}
+
+.search-item {
+ margin:5px 5px 9px;
+ padding:0 5px 10px 0;
+}
+
+.search-item .member {
+ font:bold 12px tahoma,arial,sans-serif;
+ color:#444;
+ margin:5px;
+ overflow:hidden;
+ white-space:nowrap;
+ zoom:1;
+}
+
+.search-item .cls {
+ font:normal 12px tahoma,arial,sans-serif;
+ color:#444;
+ margin:5px;
+ overflow:hidden;
+ text-align:left;
+ white-space:nowrap;
+ zoom:1;
+}
+.search-item p {
+ font:normal 11px tahoma,arial,sans-serif;
+ clear:both;
+ margin: 0 5px 5px 28px;
+ color:#444;
+ zoom:1;
+}
+#search .loading-indicator {
+ position:static !important;
+}
+#search h3 {
+ font:normal 12px tahoma,arial,sans-serif;
+ color:#444;
+ margin:10px;
+}
+.inner-link .item-icon, .bookmark .item-icon{
+ margin-right:3px;
+}
+.inner-link, .bookmark {
+ margin-left:10px;
+}
+
diff --git a/deluge/ui/web/docs/template/resources/docs.gif b/deluge/ui/web/docs/template/resources/docs.gif
new file mode 100644
index 0000000..a915dfb
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/docs.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/docs.js b/deluge/ui/web/docs/template/resources/docs.js
new file mode 100644
index 0000000..7baadc9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/docs.js
@@ -0,0 +1,632 @@
+Ext.BLANK_IMAGE_URL = 'resources/s.gif';
+
+Docs = {};
+
+ApiPanel = function() {
+ ApiPanel.superclass.constructor.call(this, {
+ id:'api-tree',
+ region:'west',
+ split:true,
+ width: 280,
+ minSize: 175,
+ maxSize: 500,
+ collapsible: true,
+ margins:'0 0 5 5',
+ cmargins:'0 0 0 0',
+ rootVisible:false,
+ lines:false,
+ autoScroll:true,
+ animCollapse:false,
+ animate: false,
+ collapseMode:'mini',
+ loader: new Ext.tree.TreeLoader({
+ preloadChildren: true,
+ clearOnLoad: false
+ }),
+ root: new Ext.tree.AsyncTreeNode({
+ text:'Ext JS',
+ id:'root',
+ expanded:true,
+ children:[Docs.classData]
+ }),
+ collapseFirst:false
+ });
+ // no longer needed!
+ //new Ext.tree.TreeSorter(this, {folderSort:true,leafAttr:'isClass'});
+
+ this.getSelectionModel().on('beforeselect', function(sm, node){
+ return node.isLeaf();
+ });
+};
+
+Ext.extend(ApiPanel, Ext.tree.TreePanel, {
+ selectClass : function(cls){
+ if(cls){
+ var parts = cls.split('.');
+ var last = parts.length-1;
+ var res = [];
+ var pkg = [];
+ for(var i = 0; i < last; i++){ // things get nasty - static classes can have .
+ var p = parts[i];
+ var fc = p.charAt(0);
+ var staticCls = fc.toUpperCase() == fc;
+ if(p == 'Ext' || !staticCls){
+ pkg.push(p);
+ res[i] = 'pkg-'+pkg.join('.');
+ }else if(staticCls){
+ --last;
+ res.splice(i, 1);
+ }
+ }
+ res[last] = cls;
+
+ this.selectPath('/root/apidocs/'+res.join('/'));
+ }
+ }
+});
+
+
+DocPanel = Ext.extend(Ext.Panel, {
+ closable: true,
+ autoScroll:true,
+
+ initComponent : function(){
+ var ps = this.cclass.split('.');
+ this.title = ps[ps.length-1];
+
+ DocPanel.superclass.initComponent.call(this);
+ },
+
+ scrollToMember : function(member){
+ var el = Ext.fly(this.cclass + '-' + member);
+ if(el){
+ var top = (el.getOffsetsTo(this.body)[1]) + this.body.dom.scrollTop;
+ this.body.scrollTo('top', top-25, {duration:.75, callback: this.hlMember.createDelegate(this, [member])});
+ }
+ },
+
+ scrollToSection : function(id){
+ var el = Ext.getDom(id);
+ if(el){
+ var top = (Ext.fly(el).getOffsetsTo(this.body)[1]) + this.body.dom.scrollTop;
+ this.body.scrollTo('top', top-25, {duration:.5, callback: function(){
+ Ext.fly(el).next('h2').pause(.2).highlight('#8DB2E3', {attr:'color'});
+ }});
+ }
+ },
+
+ hlMember : function(member){
+ var el = Ext.fly(this.cclass + '-' + member);
+ if(el){
+ el.up('tr').highlight('#cadaf9');
+ }
+ }
+});
+
+
+MainPanel = function(){
+
+ this.searchStore = new Ext.data.Store({
+ proxy: new Ext.data.ScriptTagProxy({
+ url: 'http://extjs.com/playpen/api.php'
+ }),
+ reader: new Ext.data.JsonReader({
+ root: 'data'
+ },
+ ['cls', 'member', 'type', 'doc']
+ ),
+ baseParams: {},
+ listeners: {
+ 'beforeload' : function(){
+ this.baseParams.qt = Ext.getCmp('search-type').getValue();
+ }
+ }
+ });
+
+ MainPanel.superclass.constructor.call(this, {
+ id:'doc-body',
+ region:'center',
+ margins:'0 5 5 0',
+ resizeTabs: true,
+ minTabWidth: 135,
+ tabWidth: 135,
+ plugins: new Ext.ux.TabCloseMenu(),
+ enableTabScroll: true,
+ activeTab: 0,
+
+ items: {
+ id:'welcome-panel',
+ title: 'API Home',
+ autoLoad: {url: 'welcome.html', callback: this.initSearch, scope: this},
+ iconCls:'icon-docs',
+ autoScroll: true,
+ tbar: [
+ 'Search: ', ' ',
+ new Ext.ux.SelectBox({
+ listClass:'x-combo-list-small',
+ width:90,
+ value:'Starts with',
+ id:'search-type',
+ store: new Ext.data.SimpleStore({
+ fields: ['text'],
+ expandData: true,
+ data : ['Starts with', 'Ends with', 'Any match']
+ }),
+ displayField: 'text'
+ }), ' ',
+ new Ext.app.SearchField({
+ width:240,
+ store: this.searchStore,
+ paramName: 'q'
+ })
+ ]
+ }
+ });
+};
+
+Ext.extend(MainPanel, Ext.TabPanel, {
+
+ initEvents : function(){
+ MainPanel.superclass.initEvents.call(this);
+ this.body.on('click', this.onClick, this);
+ },
+
+ onClick: function(e, target){
+ if(target = e.getTarget('a:not(.exi)', 3)){
+ var cls = Ext.fly(target).getAttributeNS('ext', 'cls');
+ e.stopEvent();
+ if(cls){
+ var member = Ext.fly(target).getAttributeNS('ext', 'member');
+ this.loadClass(target.href, cls, member);
+ }else if(target.className == 'inner-link'){
+ this.getActiveTab().scrollToSection(target.href.split('#')[1]);
+ }else{
+ window.open(target.href);
+ }
+ }else if(target = e.getTarget('.micon', 2)){
+ e.stopEvent();
+ var tr = Ext.fly(target.parentNode);
+ if(tr.hasClass('expandable')){
+ tr.toggleClass('expanded');
+ }
+ }
+ },
+
+ loadClass : function(href, cls, member){
+ var id = 'docs-' + cls;
+ var tab = this.getComponent(id);
+ if(tab){
+ this.setActiveTab(tab);
+ if(member){
+ tab.scrollToMember(member);
+ }
+ }else{
+ var autoLoad = {url: href};
+ if(member){
+ autoLoad.callback = function(){
+ Ext.getCmp(id).scrollToMember(member);
+ }
+ }
+ var p = this.add(new DocPanel({
+ id: id,
+ cclass : cls,
+ autoLoad: autoLoad,
+ iconCls: Docs.icons[cls]
+ }));
+ this.setActiveTab(p);
+ }
+ },
+
+ initSearch : function(){
+ // Custom rendering Template for the View
+ var resultTpl = new Ext.XTemplate(
+ '<tpl for=".">',
+ '<div class="search-item">',
+ '<a class="member" ext:cls="{cls}" ext:member="{member}" href="output/{cls}.html">',
+ '<img src="resources/images/default/s.gif" class="item-icon icon-{type}"/>{member}',
+ '</a> ',
+ '<a class="cls" ext:cls="{cls}" href="output/{cls}.html">{cls}</a>',
+ '<p>{doc}</p>',
+ '</div></tpl>'
+ );
+
+ var p = new Ext.DataView({
+ applyTo: 'search',
+ tpl: resultTpl,
+ loadingText:'Searching...',
+ store: this.searchStore,
+ itemSelector: 'div.search-item',
+ emptyText: '<h3>Use the search field above to search the Ext API for classes, properties, config options, methods and events.</h3>'
+ });
+ },
+
+ doSearch : function(e){
+ var k = e.getKey();
+ if(!e.isSpecialKey()){
+ var text = e.target.value;
+ if(!text){
+ this.searchStore.baseParams.q = '';
+ this.searchStore.removeAll();
+ }else{
+ this.searchStore.baseParams.q = text;
+ this.searchStore.reload();
+ }
+ }
+ }
+});
+
+
+Ext.onReady(function(){
+
+ Ext.QuickTips.init();
+
+ var api = new ApiPanel();
+ var mainPanel = new MainPanel();
+
+ api.on('click', function(node, e){
+ if(node.isLeaf()){
+ e.stopEvent();
+ mainPanel.loadClass(node.attributes.href, node.id);
+ }
+ });
+
+ mainPanel.on('tabchange', function(tp, tab){
+ api.selectClass(tab.cclass);
+ });
+
+ var hd = new Ext.Panel({
+ border: false,
+ layout:'anchor',
+ region:'north',
+ cls: 'docs-header',
+ height:60,
+ items: [{
+ xtype:'box',
+ el:'header',
+ border:false,
+ anchor: 'none -25'
+ },
+ new Ext.Toolbar({
+ cls:'top-toolbar',
+ items:[ ' ',
+ new Ext.form.TextField({
+ width: 200,
+ emptyText:'Find a Class',
+ listeners:{
+ render: function(f){
+ f.el.on('keydown', filterTree, f, {buffer: 350});
+ }
+ }
+ }), ' ', ' ',
+ {
+ iconCls: 'icon-expand-all',
+ tooltip: 'Expand All',
+ handler: function(){ api.root.expand(true); }
+ }, '-', {
+ iconCls: 'icon-collapse-all',
+ tooltip: 'Collapse All',
+ handler: function(){ api.root.collapse(true); }
+ }, '->', {
+ tooltip:'Hide Inherited Members',
+ iconCls: 'icon-hide-inherited',
+ enableToggle: true,
+ toggleHandler : function(b, pressed){
+ mainPanel[pressed ? 'addClass' : 'removeClass']('hide-inherited');
+ }
+ }, '-', {
+ tooltip:'Expand All Members',
+ iconCls: 'icon-expand-members',
+ enableToggle: true,
+ toggleHandler : function(b, pressed){
+ mainPanel[pressed ? 'addClass' : 'removeClass']('full-details');
+ }
+ }]
+ })]
+ })
+
+ var viewport = new Ext.Viewport({
+ layout:'border',
+ items:[ hd, api, mainPanel ]
+ });
+
+ api.expandPath('/root/apidocs');
+
+ // allow for link in
+ var page = window.location.href.split('?')[1];
+ if(page){
+ var ps = Ext.urlDecode(page);
+ var cls = ps['class'];
+ mainPanel.loadClass('output/' + cls + '.html', cls, ps.member);
+ }
+
+ viewport.doLayout();
+
+ setTimeout(function(){
+ Ext.get('loading').remove();
+ Ext.get('loading-mask').fadeOut({remove:true});
+ }, 250);
+
+ var filter = new Ext.tree.TreeFilter(api, {
+ clearBlank: true,
+ autoClear: true
+ });
+ var hiddenPkgs = [];
+ function filterTree(e){
+ var text = e.target.value;
+ Ext.each(hiddenPkgs, function(n){
+ n.ui.show();
+ });
+ if(!text){
+ filter.clear();
+ return;
+ }
+ api.expandAll();
+
+ var re = new RegExp('^' + Ext.escapeRe(text), 'i');
+ filter.filterBy(function(n){
+ return !n.attributes.isClass || re.test(n.text);
+ });
+
+ // hide empty packages that weren't filtered
+ hiddenPkgs = [];
+ api.root.cascade(function(n){
+ if(!n.attributes.isClass && n.ui.ctNode.offsetHeight < 3){
+ n.ui.hide();
+ hiddenPkgs.push(n);
+ }
+ });
+ }
+
+});
+
+
+Ext.app.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
+ initComponent : function(){
+ if(!this.store.baseParams){
+ this.store.baseParams = {};
+ }
+ Ext.app.SearchField.superclass.initComponent.call(this);
+ this.on('specialkey', function(f, e){
+ if(e.getKey() == e.ENTER){
+ this.onTrigger2Click();
+ }
+ }, this);
+ },
+
+ validationEvent:false,
+ validateOnBlur:false,
+ trigger1Class:'x-form-clear-trigger',
+ trigger2Class:'x-form-search-trigger',
+ hideTrigger1:true,
+ width:180,
+ hasSearch : false,
+ paramName : 'query',
+
+ onTrigger1Click : function(){
+ if(this.hasSearch){
+ this.store.baseParams[this.paramName] = '';
+ this.store.removeAll();
+ this.el.dom.value = '';
+ this.triggers[0].hide();
+ this.hasSearch = false;
+ this.focus();
+ }
+ },
+
+ onTrigger2Click : function(){
+ var v = this.getRawValue();
+ if(v.length < 1){
+ this.onTrigger1Click();
+ return;
+ }
+ if(v.length < 2){
+ Ext.Msg.alert('Invalid Search', 'You must enter a minimum of 2 characters to search the API');
+ return;
+ }
+ this.store.baseParams[this.paramName] = v;
+ var o = {start: 0};
+ this.store.reload({params:o});
+ this.hasSearch = true;
+ this.triggers[0].show();
+ this.focus();
+ }
+});
+
+
+/**
+ * Makes a ComboBox more closely mimic an HTML SELECT. Supports clicking and dragging
+ * through the list, with item selection occurring when the mouse button is released.
+ * When used will automatically set {@link #editable} to false and call {@link Ext.Element#unselectable}
+ * on inner elements. Re-enabling editable after calling this will NOT work.
+ *
+ * @author Corey Gilmore
+ * http://extjs.com/forum/showthread.php?t=6392
+ *
+ * @history 2007-07-08 jvs
+ * Slight mods for Ext 2.0
+ */
+Ext.ux.SelectBox = function(config){
+ this.searchResetDelay = 1000;
+ config = config || {};
+ config = Ext.apply(config || {}, {
+ editable: false,
+ forceSelection: true,
+ rowHeight: false,
+ lastSearchTerm: false,
+ triggerAction: 'all',
+ mode: 'local'
+ });
+
+ Ext.ux.SelectBox.superclass.constructor.apply(this, arguments);
+
+ this.lastSelectedIndex = this.selectedIndex || 0;
+};
+
+Ext.extend(Ext.ux.SelectBox, Ext.form.ComboBox, {
+ lazyInit: false,
+ initEvents : function(){
+ Ext.ux.SelectBox.superclass.initEvents.apply(this, arguments);
+ // you need to use keypress to capture upper/lower case and shift+key, but it doesn't work in IE
+ this.el.on('keydown', this.keySearch, this, true);
+ this.cshTask = new Ext.util.DelayedTask(this.clearSearchHistory, this);
+ },
+
+ keySearch : function(e, target, options) {
+ var raw = e.getKey();
+ var key = String.fromCharCode(raw);
+ var startIndex = 0;
+
+ if( !this.store.getCount() ) {
+ return;
+ }
+
+ switch(raw) {
+ case Ext.EventObject.HOME:
+ e.stopEvent();
+ this.selectFirst();
+ return;
+
+ case Ext.EventObject.END:
+ e.stopEvent();
+ this.selectLast();
+ return;
+
+ case Ext.EventObject.PAGEDOWN:
+ this.selectNextPage();
+ e.stopEvent();
+ return;
+
+ case Ext.EventObject.PAGEUP:
+ this.selectPrevPage();
+ e.stopEvent();
+ return;
+ }
+
+ // skip special keys other than the shift key
+ if( (e.hasModifier() && !e.shiftKey) || e.isNavKeyPress() || e.isSpecialKey() ) {
+ return;
+ }
+ if( this.lastSearchTerm == key ) {
+ startIndex = this.lastSelectedIndex;
+ }
+ this.search(this.displayField, key, startIndex);
+ this.cshTask.delay(this.searchResetDelay);
+ },
+
+ onRender : function(ct, position) {
+ this.store.on('load', this.calcRowsPerPage, this);
+ Ext.ux.SelectBox.superclass.onRender.apply(this, arguments);
+ if( this.mode == 'local' ) {
+ this.calcRowsPerPage();
+ }
+ },
+
+ onSelect : function(record, index, skipCollapse){
+ if(this.fireEvent('beforeselect', this, record, index) !== false){
+ this.setValue(record.data[this.valueField || this.displayField]);
+ if( !skipCollapse ) {
+ this.collapse();
+ }
+ this.lastSelectedIndex = index + 1;
+ this.fireEvent('select', this, record, index);
+ }
+ },
+
+ render : function(ct) {
+ Ext.ux.SelectBox.superclass.render.apply(this, arguments);
+ if( Ext.isSafari ) {
+ this.el.swallowEvent('mousedown', true);
+ }
+ this.el.unselectable();
+ this.innerList.unselectable();
+ this.trigger.unselectable();
+ this.innerList.on('mouseup', function(e, target, options) {
+ if( target.id && target.id == this.innerList.id ) {
+ return;
+ }
+ this.onViewClick();
+ }, this);
+
+ this.innerList.on('mouseover', function(e, target, options) {
+ if( target.id && target.id == this.innerList.id ) {
+ return;
+ }
+ this.lastSelectedIndex = this.view.getSelectedIndexes()[0] + 1;
+ this.cshTask.delay(this.searchResetDelay);
+ }, this);
+
+ this.trigger.un('click', this.onTriggerClick, this);
+ this.trigger.on('mousedown', function(e, target, options) {
+ e.preventDefault();
+ this.onTriggerClick();
+ }, this);
+
+ this.on('collapse', function(e, target, options) {
+ Ext.getDoc().un('mouseup', this.collapseIf, this);
+ }, this, true);
+
+ this.on('expand', function(e, target, options) {
+ Ext.getDoc().on('mouseup', this.collapseIf, this);
+ }, this, true);
+ },
+
+ clearSearchHistory : function() {
+ this.lastSelectedIndex = 0;
+ this.lastSearchTerm = false;
+ },
+
+ selectFirst : function() {
+ this.focusAndSelect(this.store.data.first());
+ },
+
+ selectLast : function() {
+ this.focusAndSelect(this.store.data.last());
+ },
+
+ selectPrevPage : function() {
+ if( !this.rowHeight ) {
+ return;
+ }
+ var index = Math.max(this.selectedIndex-this.rowsPerPage, 0);
+ this.focusAndSelect(this.store.getAt(index));
+ },
+
+ selectNextPage : function() {
+ if( !this.rowHeight ) {
+ return;
+ }
+ var index = Math.min(this.selectedIndex+this.rowsPerPage, this.store.getCount() - 1);
+ this.focusAndSelect(this.store.getAt(index));
+ },
+
+ search : function(field, value, startIndex) {
+ field = field || this.displayField;
+ this.lastSearchTerm = value;
+ var index = this.store.find.apply(this.store, arguments);
+ if( index !== -1 ) {
+ this.focusAndSelect(index);
+ }
+ },
+
+ focusAndSelect : function(record) {
+ var index = typeof record === 'number' ? record : this.store.indexOf(record);
+ this.select(index, this.isExpanded());
+ this.onSelect(this.store.getAt(record), index, this.isExpanded());
+ },
+
+ calcRowsPerPage : function() {
+ if( this.store.getCount() ) {
+ this.rowHeight = Ext.fly(this.view.getNode(0)).getHeight();
+ this.rowsPerPage = this.maxHeight / this.rowHeight;
+ } else {
+ this.rowHeight = false;
+ }
+ }
+
+});
+
+Ext.Ajax.on('requestcomplete', function(ajax, xhr, o){
+ if(typeof urchinTracker == 'function' && o && o.url){
+ urchinTracker(o.url);
+ }
+}); \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/resources/elbow-end.gif b/deluge/ui/web/docs/template/resources/elbow-end.gif
new file mode 100644
index 0000000..f24ddee
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/elbow-end.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/event.gif b/deluge/ui/web/docs/template/resources/event.gif
new file mode 100644
index 0000000..9fb1ba9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/event.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/example.gif b/deluge/ui/web/docs/template/resources/example.gif
new file mode 100644
index 0000000..ad599cf
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/example.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/expand-all.gif b/deluge/ui/web/docs/template/resources/expand-all.gif
new file mode 100644
index 0000000..3798498
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/expand-all.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/expand-bg-over.gif b/deluge/ui/web/docs/template/resources/expand-bg-over.gif
new file mode 100644
index 0000000..ec3a546
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/expand-bg-over.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/expand-bg.gif b/deluge/ui/web/docs/template/resources/expand-bg.gif
new file mode 100644
index 0000000..135aa89
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/expand-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/expand-members.gif b/deluge/ui/web/docs/template/resources/expand-members.gif
new file mode 100644
index 0000000..14b5437
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/expand-members.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/ext-all.js b/deluge/ui/web/docs/template/resources/ext-all.js
new file mode 100644
index 0000000..6d86ccb
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/ext-all.js
@@ -0,0 +1,162 @@
+/*
+ * Ext JS Library 2.2
+ * Copyright(c) 2006-2008, Ext JS, LLC.
+ * licensing@extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+Ext.DomHelper=function(){var L=null;var F=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var B=/^table|tbody|tr|td$/i;var A=function(T){if(typeof T=="string"){return T}var O="";if(Ext.isArray(T)){for(var R=0,P=T.length;R<P;R++){O+=A(T[R])}return O}if(!T.tag){T.tag="div"}O+="<"+T.tag;for(var N in T){if(N=="tag"||N=="children"||N=="cn"||N=="html"||typeof T[N]=="function"){continue}if(N=="style"){var S=T["style"];if(typeof S=="function"){S=S.call()}if(typeof S=="string"){O+=" style=\""+S+"\""}else{if(typeof S=="object"){O+=" style=\"";for(var Q in S){if(typeof S[Q]!="function"){O+=Q+":"+S[Q]+";"}}O+="\""}}}else{if(N=="cls"){O+=" class=\""+T["cls"]+"\""}else{if(N=="htmlFor"){O+=" for=\""+T["htmlFor"]+"\""}else{O+=" "+N+"=\""+T[N]+"\""}}}}if(F.test(T.tag)){O+="/>"}else{O+=">";var U=T.children||T.cn;if(U){O+=A(U)}else{if(T.html){O+=T.html}}O+="</"+T.tag+">"}return O};var M=function(T,O){var S;if(Ext.isArray(T)){S=document.createDocumentFragment();for(var R=0,P=T.length;R<P;R++){M(T[R],S)}}else{if(typeof T=="string"){S=document.createTextNode(T)}else{S=document.createElement(T.tag||"div");var Q=!!S.setAttribute;for(var N in T){if(N=="tag"||N=="children"||N=="cn"||N=="html"||N=="style"||typeof T[N]=="function"){continue}if(N=="cls"){S.className=T["cls"]}else{if(Q){S.setAttribute(N,T[N])}else{S[N]=T[N]}}}Ext.DomHelper.applyStyles(S,T.style);var U=T.children||T.cn;if(U){M(U,S)}else{if(T.html){S.innerHTML=T.html}}}}if(O){O.appendChild(S)}return S};var I=function(S,Q,P,R){L.innerHTML=[Q,P,R].join("");var N=-1,O=L;while(++N<S){O=O.firstChild}return O};var J="<table>",E="</table>",C=J+"<tbody>",K="</tbody>"+E,H=C+"<tr>",D="</tr>"+K;var G=function(N,O,Q,P){if(!L){L=document.createElement("div")}var R;var S=null;if(N=="td"){if(O=="afterbegin"||O=="beforeend"){return }if(O=="beforebegin"){S=Q;Q=Q.parentNode}else{S=Q.nextSibling;Q=Q.parentNode}R=I(4,H,P,D)}else{if(N=="tr"){if(O=="beforebegin"){S=Q;Q=Q.parentNode;R=I(3,C,P,K)}else{if(O=="afterend"){S=Q.nextSibling;Q=Q.parentNode;R=I(3,C,P,K)}else{if(O=="afterbegin"){S=Q.firstChild}R=I(4,H,P,D)}}}else{if(N=="tbody"){if(O=="beforebegin"){S=Q;Q=Q.parentNode;R=I(2,J,P,E)}else{if(O=="afterend"){S=Q.nextSibling;Q=Q.parentNode;R=I(2,J,P,E)}else{if(O=="afterbegin"){S=Q.firstChild}R=I(3,C,P,K)}}}else{if(O=="beforebegin"||O=="afterend"){return }if(O=="afterbegin"){S=Q.firstChild}R=I(2,J,P,E)}}}Q.insertBefore(R,S);return R};return{useDom:false,markup:function(N){return A(N)},applyStyles:function(P,Q){if(Q){P=Ext.fly(P);if(typeof Q=="string"){var O=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var R;while((R=O.exec(Q))!=null){P.setStyle(R[1],R[2])}}else{if(typeof Q=="object"){for(var N in Q){P.setStyle(N,Q[N])}}else{if(typeof Q=="function"){Ext.DomHelper.applyStyles(P,Q.call())}}}}},insertHtml:function(P,R,Q){P=P.toLowerCase();if(R.insertAdjacentHTML){if(B.test(R.tagName)){var O;if(O=G(R.tagName.toLowerCase(),P,R,Q)){return O}}switch(P){case"beforebegin":R.insertAdjacentHTML("BeforeBegin",Q);return R.previousSibling;case"afterbegin":R.insertAdjacentHTML("AfterBegin",Q);return R.firstChild;case"beforeend":R.insertAdjacentHTML("BeforeEnd",Q);return R.lastChild;case"afterend":R.insertAdjacentHTML("AfterEnd",Q);return R.nextSibling}throw"Illegal insertion point -> \""+P+"\""}var N=R.ownerDocument.createRange();var S;switch(P){case"beforebegin":N.setStartBefore(R);S=N.createContextualFragment(Q);R.parentNode.insertBefore(S,R);return R.previousSibling;case"afterbegin":if(R.firstChild){N.setStartBefore(R.firstChild);S=N.createContextualFragment(Q);R.insertBefore(S,R.firstChild);return R.firstChild}else{R.innerHTML=Q;return R.firstChild}case"beforeend":if(R.lastChild){N.setStartAfter(R.lastChild);S=N.createContextualFragment(Q);R.appendChild(S);return R.lastChild}else{R.innerHTML=Q;return R.lastChild}case"afterend":N.setStartAfter(R);S=N.createContextualFragment(Q);R.parentNode.insertBefore(S,R.nextSibling);return R.nextSibling}throw"Illegal insertion point -> \""+P+"\""},insertBefore:function(N,P,O){return this.doInsert(N,P,O,"beforeBegin")},insertAfter:function(N,P,O){return this.doInsert(N,P,O,"afterEnd","nextSibling")},insertFirst:function(N,P,O){return this.doInsert(N,P,O,"afterBegin","firstChild")},doInsert:function(Q,S,R,T,P){Q=Ext.getDom(Q);var O;if(this.useDom){O=M(S,null);(P==="firstChild"?Q:Q.parentNode).insertBefore(O,P?Q[P]:Q)}else{var N=A(S);O=this.insertHtml(T,Q,N)}return R?Ext.get(O,true):O},append:function(P,R,Q){P=Ext.getDom(P);var O;if(this.useDom){O=M(R,null);P.appendChild(O)}else{var N=A(R);O=this.insertHtml("beforeEnd",P,N)}return Q?Ext.get(O,true):O},overwrite:function(N,P,O){N=Ext.getDom(N);N.innerHTML=A(P);return O?Ext.get(N.firstChild,true):N.firstChild},createTemplate:function(O){var N=A(O);return new Ext.Template(N)}}}();
+Ext.Template=function(E){var B=arguments;if(Ext.isArray(E)){E=E.join("")}else{if(B.length>1){var C=[];for(var D=0,A=B.length;D<A;D++){if(typeof B[D]=="object"){Ext.apply(this,B[D])}else{C[C.length]=B[D]}}E=C.join("")}}this.html=E;if(this.compiled){this.compile()}};Ext.Template.prototype={applyTemplate:function(B){if(this.compiled){return this.compiled(B)}var A=this.disableFormats!==true;var E=Ext.util.Format,C=this;var D=function(G,I,L,H){if(L&&A){if(L.substr(0,5)=="this."){return C.call(L.substr(5),B[I],B)}else{if(H){var K=/^\s*['"](.*)["']\s*$/;H=H.split(",");for(var J=0,F=H.length;J<F;J++){H[J]=H[J].replace(K,"$1")}H=[B[I]].concat(H)}else{H=[B[I]]}return E[L].apply(E,H)}}else{return B[I]!==undefined?B[I]:""}};return this.html.replace(this.re,D)},set:function(A,B){this.html=A;this.compiled=null;if(B){this.compile()}return this},disableFormats:false,re:/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,compile:function(){var fm=Ext.util.Format;var useF=this.disableFormats!==true;var sep=Ext.isGecko?"+":",";var fn=function(m,name,format,args){if(format&&useF){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format="this.call(\""+format.substr(5)+"\", ";args=", values"}}else{args="";format="(values['"+name+"'] == undefined ? '' : "}return"'"+sep+format+"values['"+name+"']"+args+")"+sep+"'"};var body;if(Ext.isGecko){body="this.compiled = function(values){ return '"+this.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+"';};"}else{body=["this.compiled = function(values){ return ['"];body.push(this.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn));body.push("'].join('');};");body=body.join("")}eval(body);return this},call:function(C,B,A){return this[C](B,A)},insertFirst:function(B,A,C){return this.doInsert("afterBegin",B,A,C)},insertBefore:function(B,A,C){return this.doInsert("beforeBegin",B,A,C)},insertAfter:function(B,A,C){return this.doInsert("afterEnd",B,A,C)},append:function(B,A,C){return this.doInsert("beforeEnd",B,A,C)},doInsert:function(C,E,B,A){E=Ext.getDom(E);var D=Ext.DomHelper.insertHtml(C,E,this.applyTemplate(B));return A?Ext.get(D,true):D},overwrite:function(B,A,C){B=Ext.getDom(B);B.innerHTML=this.applyTemplate(A);return C?Ext.get(B.firstChild,true):B.firstChild}};Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.DomHelper.Template=Ext.Template;Ext.Template.from=function(B,A){B=Ext.getDom(B);return new Ext.Template(B.value||B.innerHTML,A||"")};
+Ext.DomQuery=function(){var cache={},simpleCache={},valueCache={};var nonSpace=/\S/;var trimRe=/^\s+|\s+$/g;var tplRe=/\{(\d+)\}/g;var modeRe=/^(\s?[\/>+~]\s?|\s|$)/;var tagTokenRe=/^(#)?([\w-\*]+)/;var nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/;function child(p,index){var i=0;var n=p.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null}function next(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n}function prev(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n}function children(d){var n=d.firstChild,ni=-1;while(n){var nx=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){d.removeChild(n)}else{n.nodeIndex=++ni}n=nx}return this}function byClassName(c,a,v){if(!v){return c}var r=[],ri=-1,cn;for(var i=0,ci;ci=c[i];i++){if((" "+ci.className+" ").indexOf(v)!=-1){r[++ri]=ci}}return r}function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs;if(!ns){return result}tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){for(var i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(var j=0,ci;ci=cs[j];j++){result[++ri]=ci}}}else{if(mode=="/"||mode==">"){var utag=tagName.toUpperCase();for(var i=0,ni,cn;ni=ns[i];i++){cn=ni.children||ni.childNodes;for(var j=0,cj;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&(n.nodeType!=1||(tagName=="*"||n.tagName.toLowerCase()!=tagName))){}if(n){result[++ri]=n}}}}}}return result}function concat(a,b){if(b.slice){return a.concat(b)}for(var i=0,l=b.length;i<l;i++){a[a.length]=b[i]}return a}function byTag(cs,tagName){if(cs.tagName||cs==document){cs=[cs]}if(!tagName){return cs}var r=[],ri=-1;tagName=tagName.toLowerCase();for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){r[++ri]=ci}}return r}function byId(cs,attr,id){if(cs.tagName||cs==document){cs=[cs]}if(!id){return cs}var r=[],ri=-1;for(var i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){r[++ri]=ci;return r}}return r}function byAttribute(cs,attr,value,op,custom){var r=[],ri=-1,st=custom=="{";var f=Ext.DomQuery.operators[op];for(var i=0,ci;ci=cs[i];i++){var a;if(st){a=Ext.DomQuery.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}if((f&&f(a,value))||(!f&&a)){r[++ri]=ci}}return r}function byPseudo(cs,name,value){return Ext.DomQuery.pseudos[name](cs,value)}var isIE=window.ActiveXObject?true:false;eval("var batch = 30803;");var key=30803;function nodupIEXml(cs){var d=++key;cs[0].setAttribute("_nodup",d);var r=[cs[0]];for(var i=1,len=cs.length;i<len;i++){var c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(var i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup")}return r}function nodup(cs){if(!cs){return[]}var len=cs.length,c,i,r=cs,cj,ri=-1;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}var d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(var j=0;j<i;j++){r[++ri]=cs[j]}for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[++ri]=cj}}return r}}return r}function quickDiffIEXml(c1,c2){var d=++key;for(var i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}var r=[];for(var i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(var i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length;if(!len1){return c2}if(isIE&&c1[0].selectSingleNode){return quickDiffIEXml(c1,c2)}var d=++key;for(var i=0;i<len1;i++){c1[i]._qdiff=d}var r=[];for(var i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}return r}function quickId(ns,mode,root,id){if(ns==root){var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,null,id)}return{getStyle:function(el,name){return Ext.fly(el).getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root){\n var mode; ++batch; var n = root || document;\n"];var q=path,mode,lq;var tk=Ext.DomQuery.matchers;var tklen=tk.length;var mm;var lmode=q.match(modeRe);if(lmode&&lmode[1]){fn[fn.length]="mode=\""+lmode[1].replace(trimRe,"")+"\";";q=q.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(q&&lq!=q){lq=q;var tm=q.match(tagTokenRe);if(type=="select"){if(tm){if(tm[1]=="#"){fn[fn.length]="n = quickId(n, mode, root, \""+tm[2]+"\");"}else{fn[fn.length]="n = getNodes(n, mode, \""+tm[2]+"\");"}q=q.replace(tm[0],"")}else{if(q.substr(0,1)!="@"){fn[fn.length]="n = getNodes(n, mode, \"*\");"}}}else{if(tm){if(tm[1]=="#"){fn[fn.length]="n = byId(n, null, \""+tm[2]+"\");"}else{fn[fn.length]="n = byTag(n, \""+tm[2]+"\");"}q=q.replace(tm[0],"")}}while(!(mm=q.match(modeRe))){var matched=false;for(var j=0;j<tklen;j++){var t=tk[j];var m=q.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});q=q.replace(m[0],"");matched=true;break}}if(!matched){throw"Error parsing selector, parsing failed at \""+q+"\""}}if(mm[1]){fn[fn.length]="mode=\""+mm[1].replace(trimRe,"")+"\";";q=q.replace(mm[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},select:function(path,root,type){if(!root||root==document){root=document}if(typeof root=="string"){root=document.getElementById(root)}var paths=path.split(",");var results=[];for(var i=0,len=paths.length;i<len;i++){var p=paths[i].replace(trimRe,"");if(!cache[p]){cache[p]=Ext.DomQuery.compile(p);if(!cache[p]){throw p+" is not a valid selector"}}var result=cache[p](root);if(result&&result!=document){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}var n=valueCache[path](root);n=n[0]?n[0]:n;var v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el);var result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple")}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w-]+)/,select:"n = byClassName(n, null, \" {1} \");"},{re:/^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:"n = byPseudo(n, \"{1}\", \"{2}\");"},{re:/^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:"n = byAttribute(n, \"{2}\", \"{4}\", \"{3}\", \"{1}\");"},{re:/^#([\w-]+)/,select:"n = byId(n, null, \"{1}\");"},{re:/^@([\w-]+)/,select:"return {firstChild:{nodeValue:attrValue(n, \"{1}\")}};"}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)==0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1;var m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a);var f=(m[1]||1)-0,l=m[2]-0;for(var i=0,n;n=c[i];i++){var pn=n.parentNode;if(batch!=pn._batch){var j=0;for(var cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l==0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f==0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},"empty":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var cns=ci.childNodes,j=0,cn,empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},"contains":function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if((ci.textContent||ci.innerText||"").indexOf(v)!=-1){r[++ri]=ci}}return r},"nodeValue":function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},"checked":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.checked==true){r[++ri]=ci}}return r},"not":function(c,ss){return Ext.DomQuery.filter(c,ss,true)},"any":function(c,selectors){var ss=selectors.split("|");var r=[],ri=-1,s;for(var i=0,ci;ci=c[i];i++){for(var j=0;s=ss[j];j++){if(Ext.DomQuery.is(ci,s)){r[++ri]=ci;break}}}return r},"odd":function(c){return this["nth-child"](c,"odd")},"even":function(c){return this["nth-child"](c,"even")},"nth":function(c,a){return c[a-1]||[]},"first":function(c){return c[0]||[]},"last":function(c){return c[c.length-1]||[]},"has":function(c,ss){var s=Ext.DomQuery.select;var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},"next":function(c,ss){var is=Ext.DomQuery.is;var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},"prev":function(c,ss){var is=Ext.DomQuery.is;var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r}}}}();Ext.query=Ext.DomQuery.select;
+Ext.util.Observable=function(){if(this.listeners){this.on(this.listeners);delete this.listeners}};Ext.util.Observable.prototype={fireEvent:function(){if(this.eventsSuspended!==true){var A=this.events[arguments[0].toLowerCase()];if(typeof A=="object"){return A.fire.apply(A,Array.prototype.slice.call(arguments,1))}}return true},filterOptRe:/^(?:scope|delay|buffer|single)$/,addListener:function(A,C,B,F){if(typeof A=="object"){F=A;for(var E in F){if(this.filterOptRe.test(E)){continue}if(typeof F[E]=="function"){this.addListener(E,F[E],F.scope,F)}else{this.addListener(E,F[E].fn,F[E].scope,F[E])}}return }F=(!F||typeof F=="boolean")?{}:F;A=A.toLowerCase();var D=this.events[A]||true;if(typeof D=="boolean"){D=new Ext.util.Event(this,A);this.events[A]=D}D.addListener(C,B,F)},removeListener:function(A,C,B){var D=this.events[A.toLowerCase()];if(typeof D=="object"){D.removeListener(C,B)}},purgeListeners:function(){for(var A in this.events){if(typeof this.events[A]=="object"){this.events[A].clearListeners()}}},relayEvents:function(F,D){var E=function(G){return function(){return this.fireEvent.apply(this,Ext.combine(G,Array.prototype.slice.call(arguments,0)))}};for(var C=0,A=D.length;C<A;C++){var B=D[C];if(!this.events[B]){this.events[B]=true}F.on(B,E(B),this)}},addEvents:function(D){if(!this.events){this.events={}}if(typeof D=="string"){for(var C=0,A=arguments,B;B=A[C];C++){if(!this.events[A[C]]){this.events[A[C]]=true}}}else{Ext.applyIf(this.events,D)}},hasListener:function(A){var B=this.events[A];return typeof B=="object"&&B.listeners.length>0},suspendEvents:function(){this.eventsSuspended=true},resumeEvents:function(){this.eventsSuspended=false},getMethodEvent:function(G){if(!this.methodEvents){this.methodEvents={}}var F=this.methodEvents[G];if(!F){F={};this.methodEvents[G]=F;F.originalFn=this[G];F.methodName=G;F.before=[];F.after=[];var C,B,D;var E=this;var A=function(J,I,H){if((B=J.apply(I||E,H))!==undefined){if(typeof B==="object"){if(B.returnValue!==undefined){C=B.returnValue}else{C=B}if(B.cancel===true){D=true}}else{if(B===false){D=true}else{C=B}}}};this[G]=function(){C=B=undefined;D=false;var I=Array.prototype.slice.call(arguments,0);for(var J=0,H=F.before.length;J<H;J++){A(F.before[J].fn,F.before[J].scope,I);if(D){return C}}if((B=F.originalFn.apply(E,I))!==undefined){C=B}for(var J=0,H=F.after.length;J<H;J++){A(F.after[J].fn,F.after[J].scope,I);if(D){return C}}return C}}return F},beforeMethod:function(D,B,A){var C=this.getMethodEvent(D);C.before.push({fn:B,scope:A})},afterMethod:function(D,B,A){var C=this.getMethodEvent(D);C.after.push({fn:B,scope:A})},removeMethodListener:function(F,D,C){var E=this.getMethodEvent(F);for(var B=0,A=E.before.length;B<A;B++){if(E.before[B].fn==D&&E.before[B].scope==C){E.before.splice(B,1);return }}for(var B=0,A=E.after.length;B<A;B++){if(E.after[B].fn==D&&E.after[B].scope==C){E.after.splice(B,1);return }}}};Ext.util.Observable.prototype.on=Ext.util.Observable.prototype.addListener;Ext.util.Observable.prototype.un=Ext.util.Observable.prototype.removeListener;Ext.util.Observable.capture=function(C,B,A){C.fireEvent=C.fireEvent.createInterceptor(B,A)};Ext.util.Observable.releaseCapture=function(A){A.fireEvent=Ext.util.Observable.prototype.fireEvent};(function(){var B=function(F,G,E){var D=new Ext.util.DelayedTask();return function(){D.delay(G.buffer,F,E,Array.prototype.slice.call(arguments,0))}};var C=function(F,G,E,D){return function(){G.removeListener(E,D);return F.apply(D,arguments)}};var A=function(E,F,D){return function(){var G=Array.prototype.slice.call(arguments,0);setTimeout(function(){E.apply(D,G)},F.delay||10)}};Ext.util.Event=function(E,D){this.name=D;this.obj=E;this.listeners=[]};Ext.util.Event.prototype={addListener:function(G,F,E){F=F||this.obj;if(!this.isListening(G,F)){var D=this.createListener(G,F,E);if(!this.firing){this.listeners.push(D)}else{this.listeners=this.listeners.slice(0);this.listeners.push(D)}}},createListener:function(G,F,H){H=H||{};F=F||this.obj;var D={fn:G,scope:F,options:H};var E=G;if(H.delay){E=A(E,H,F)}if(H.single){E=C(E,this,G,F)}if(H.buffer){E=B(E,H,F)}D.fireFn=E;return D},findListener:function(I,H){H=H||this.obj;var F=this.listeners;for(var G=0,D=F.length;G<D;G++){var E=F[G];if(E.fn==I&&E.scope==H){return G}}return -1},isListening:function(E,D){return this.findListener(E,D)!=-1},removeListener:function(F,E){var D;if((D=this.findListener(F,E))!=-1){if(!this.firing){this.listeners.splice(D,1)}else{this.listeners=this.listeners.slice(0);this.listeners.splice(D,1)}return true}return false},clearListeners:function(){this.listeners=[]},fire:function(){var F=this.listeners,I,D=F.length;if(D>0){this.firing=true;var G=Array.prototype.slice.call(arguments,0);for(var H=0;H<D;H++){var E=F[H];if(E.fireFn.apply(E.scope||this.obj||window,arguments)===false){this.firing=false;return false}}this.firing=false}return true}}})();
+Ext.EventManager=function(){var X,Q,M=false;var N,W,H,S;var P=Ext.lib.Event;var R=Ext.lib.Dom;var A="Ex"+"t";var J={};var O=function(b,E,a,Z,Y){var d=Ext.id(b);if(!J[d]){J[d]={}}var c=J[d];if(!c[E]){c[E]=[]}var D=c[E];D.push({id:d,ename:E,fn:a,wrap:Z,scope:Y});P.on(b,E,Z);if(E=="mousewheel"&&b.addEventListener){b.addEventListener("DOMMouseScroll",Z,false);P.on(window,"unload",function(){b.removeEventListener("DOMMouseScroll",Z,false)})}if(E=="mousedown"&&b==document){Ext.EventManager.stoppedMouseDownEvent.addListener(Z)}};var I=function(Y,a,e,g){Y=Ext.getDom(Y);var D=Ext.id(Y),f=J[D],E;if(f){var c=f[a],Z;if(c){for(var b=0,d=c.length;b<d;b++){Z=c[b];if(Z.fn==e&&(!g||Z.scope==g)){E=Z.wrap;P.un(Y,a,E);c.splice(b,1);break}}}}if(a=="mousewheel"&&Y.addEventListener&&E){Y.removeEventListener("DOMMouseScroll",E,false)}if(a=="mousedown"&&Y==document&&E){Ext.EventManager.stoppedMouseDownEvent.removeListener(E)}};var F=function(a){a=Ext.getDom(a);var c=Ext.id(a),b=J[c],E;if(b){for(var Z in b){if(b.hasOwnProperty(Z)){E=b[Z];for(var Y=0,D=E.length;Y<D;Y++){P.un(a,Z,E[Y].wrap);E[Y]=null}}b[Z]=null}delete J[c]}};var C=function(){if(!M){M=Ext.isReady=true;if(Ext.isGecko||Ext.isOpera){document.removeEventListener("DOMContentLoaded",C,false)}}if(Q){clearInterval(Q);Q=null}if(X){X.fire();X.clearListeners()}};var B=function(){X=new Ext.util.Event();if(Ext.isReady){return }P.on(window,"load",C);if(Ext.isGecko||Ext.isOpera){document.addEventListener("DOMContentLoaded",C,false)}else{if(Ext.isIE){Q=setInterval(function(){try{Ext.isReady||(document.documentElement.doScroll("left"))}catch(D){return }C()},5);document.onreadystatechange=function(){if(document.readyState=="complete"){document.onreadystatechange=null;C()}}}else{if(Ext.isSafari){Q=setInterval(function(){var D=document.readyState;if(D=="complete"){C()}},10)}}}};var V=function(E,Y){var D=new Ext.util.DelayedTask(E);return function(Z){Z=new Ext.EventObjectImpl(Z);D.delay(Y.buffer,E,null,[Z])}};var T=function(a,Z,D,Y,E){return function(b){Ext.EventManager.removeListener(Z,D,Y,E);a(b)}};var G=function(D,E){return function(Y){Y=new Ext.EventObjectImpl(Y);setTimeout(function(){D(Y)},E.delay||10)}};var L=function(Y,E,D,c,b){var d=(!D||typeof D=="boolean")?{}:D;c=c||d.fn;b=b||d.scope;var a=Ext.getDom(Y);if(!a){throw"Error listening for \""+E+"\". Element \""+Y+"\" doesn't exist."}var Z=function(g){if(!window[A]){return }g=Ext.EventObject.setEvent(g);var f;if(d.delegate){f=g.getTarget(d.delegate,a);if(!f){return }}else{f=g.target}if(d.stopEvent===true){g.stopEvent()}if(d.preventDefault===true){g.preventDefault()}if(d.stopPropagation===true){g.stopPropagation()}if(d.normalized===false){g=g.browserEvent}c.call(b||a,g,f,d)};if(d.delay){Z=G(Z,d)}if(d.single){Z=T(Z,a,E,c,b)}if(d.buffer){Z=V(Z,d)}O(a,E,c,Z,b);return Z};var K=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;var U={addListener:function(Y,D,a,Z,E){if(typeof D=="object"){var c=D;for(var b in c){if(K.test(b)){continue}if(typeof c[b]=="function"){L(Y,b,c,c[b],c.scope)}else{L(Y,b,c[b])}}return }return L(Y,D,E,a,Z)},removeListener:function(E,D,Z,Y){return I(E,D,Z,Y)},removeAll:function(D){return F(D)},onDocumentReady:function(Y,E,D){if(!X){B()}if(M||Ext.isReady){D||(D={});Y.defer(D.delay||0,E)}else{X.addListener(Y,E,D)}},onWindowResize:function(Y,E,D){if(!N){N=new Ext.util.Event();W=new Ext.util.DelayedTask(function(){N.fire(R.getViewWidth(),R.getViewHeight())});P.on(window,"resize",this.fireWindowResize,this)}N.addListener(Y,E,D)},fireWindowResize:function(){if(N){if((Ext.isIE||Ext.isAir)&&W){W.delay(50)}else{N.fire(R.getViewWidth(),R.getViewHeight())}}},onTextResize:function(Z,Y,D){if(!H){H=new Ext.util.Event();var E=new Ext.Element(document.createElement("div"));E.dom.className="x-text-resize";E.dom.innerHTML="X";E.appendTo(document.body);S=E.dom.offsetHeight;setInterval(function(){if(E.dom.offsetHeight!=S){H.fire(S,S=E.dom.offsetHeight)}},this.textResizeInterval)}H.addListener(Z,Y,D)},removeResizeListener:function(E,D){if(N){N.removeListener(E,D)}},fireResize:function(){if(N){N.fire(R.getViewWidth(),R.getViewHeight())}},ieDeferSrc:false,textResizeInterval:50};U.on=U.addListener;U.un=U.removeListener;U.stoppedMouseDownEvent=new Ext.util.Event();return U}();Ext.onReady=Ext.EventManager.onDocumentReady;(function(){var A=function(){var C=document.body||document.getElementsByTagName("body")[0];if(!C){return false}var B=[" ",Ext.isIE?"ext-ie "+(Ext.isIE6?"ext-ie6":"ext-ie7"):Ext.isGecko?"ext-gecko "+(Ext.isGecko2?"ext-gecko2":"ext-gecko3"):Ext.isOpera?"ext-opera":Ext.isSafari?"ext-safari":""];if(Ext.isMac){B.push("ext-mac")}if(Ext.isLinux){B.push("ext-linux")}if(Ext.isBorderBox){B.push("ext-border-box")}if(Ext.isStrict){var D=C.parentNode;if(D){D.className+=" ext-strict"}}C.className+=B.join(" ");return true};if(!A()){Ext.onReady(A)}})();Ext.EventObject=function(){var B=Ext.lib.Event;var A={3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35};var C=Ext.isIE?{1:0,4:1,2:2}:(Ext.isSafari?{1:0,2:1,3:2}:{0:0,1:1,2:2});Ext.EventObjectImpl=function(D){if(D){this.setEvent(D.browserEvent||D)}};Ext.EventObjectImpl.prototype={browserEvent:null,button:-1,shiftKey:false,ctrlKey:false,altKey:false,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,CONTROL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGEUP:33,PAGE_DOWN:34,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,setEvent:function(D){if(D==this||(D&&D.browserEvent)){return D}this.browserEvent=D;if(D){this.button=D.button?C[D.button]:(D.which?D.which-1:-1);if(D.type=="click"&&this.button==-1){this.button=0}this.type=D.type;this.shiftKey=D.shiftKey;this.ctrlKey=D.ctrlKey||D.metaKey;this.altKey=D.altKey;this.keyCode=D.keyCode;this.charCode=D.charCode;this.target=B.getTarget(D);this.xy=B.getXY(D)}else{this.button=-1;this.shiftKey=false;this.ctrlKey=false;this.altKey=false;this.keyCode=0;this.charCode=0;this.target=null;this.xy=[0,0]}return this},stopEvent:function(){if(this.browserEvent){if(this.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}B.stopEvent(this.browserEvent)}},preventDefault:function(){if(this.browserEvent){B.preventDefault(this.browserEvent)}},isNavKeyPress:function(){var D=this.keyCode;D=Ext.isSafari?(A[D]||D):D;return(D>=33&&D<=40)||D==this.RETURN||D==this.TAB||D==this.ESC},isSpecialKey:function(){var D=this.keyCode;return(this.type=="keypress"&&this.ctrlKey)||D==9||D==13||D==40||D==27||(D==16)||(D==17)||(D>=18&&D<=20)||(D>=33&&D<=35)||(D>=36&&D<=39)||(D>=44&&D<=45)},stopPropagation:function(){if(this.browserEvent){if(this.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}B.stopPropagation(this.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){var D=this.keyCode||this.charCode;return Ext.isSafari?(A[D]||D):D},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getTime:function(){if(this.browserEvent){return B.getTime(this.browserEvent)}return null},getXY:function(){return this.xy},getTarget:function(E,F,D){return E?Ext.fly(this.target).findParent(E,F,D):(D?Ext.get(this.target):this.target)},getRelatedTarget:function(){if(this.browserEvent){return B.getRelatedTarget(this.browserEvent)}return null},getWheelDelta:function(){var D=this.browserEvent;var E=0;if(D.wheelDelta){E=D.wheelDelta/120}else{if(D.detail){E=-D.detail/3}}return E},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)?true:false},within:function(E,F){var D=this[F?"getRelatedTarget":"getTarget"]();return D&&Ext.fly(E).contains(D)},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1])}};return new Ext.EventObjectImpl()}();
+(function(){var D=Ext.lib.Dom;var E=Ext.lib.Event;var A=Ext.lib.Anim;var propCache={};var camelRe=/(-[a-z])/gi;var camelFn=function(m,a){return a.charAt(1).toUpperCase()};var view=document.defaultView;Ext.Element=function(element,forceNew){var dom=typeof element=="string"?document.getElementById(element):element;if(!dom){return null}var id=dom.id;if(forceNew!==true&&id&&Ext.Element.cache[id]){return Ext.Element.cache[id]}this.dom=dom;this.id=id||Ext.id(dom)};var El=Ext.Element;El.prototype={originalDisplay:"",visibilityMode:1,defaultUnit:"px",setVisibilityMode:function(visMode){this.visibilityMode=visMode;return this},enableDisplayMode:function(display){this.setVisibilityMode(El.DISPLAY);if(typeof display!="undefined"){this.originalDisplay=display}return this},findParent:function(simpleSelector,maxDepth,returnEl){var p=this.dom,b=document.body,depth=0,dq=Ext.DomQuery,stopEl;maxDepth=maxDepth||50;if(typeof maxDepth!="number"){stopEl=Ext.getDom(maxDepth);maxDepth=10}while(p&&p.nodeType==1&&depth<maxDepth&&p!=b&&p!=stopEl){if(dq.is(p,simpleSelector)){return returnEl?Ext.get(p):p}depth++;p=p.parentNode}return null},findParentNode:function(simpleSelector,maxDepth,returnEl){var p=Ext.fly(this.dom.parentNode,"_internal");return p?p.findParent(simpleSelector,maxDepth,returnEl):null},up:function(simpleSelector,maxDepth){return this.findParentNode(simpleSelector,maxDepth,true)},is:function(simpleSelector){return Ext.DomQuery.is(this.dom,simpleSelector)},animate:function(args,duration,onComplete,easing,animType){this.anim(args,{duration:duration,callback:onComplete,easing:easing},animType);return this},anim:function(args,opt,animType,defaultDur,defaultEase,cb){animType=animType||"run";opt=opt||{};var anim=Ext.lib.Anim[animType](this.dom,args,(opt.duration||defaultDur)||0.35,(opt.easing||defaultEase)||"easeOut",function(){Ext.callback(cb,this);Ext.callback(opt.callback,opt.scope||this,[this,opt])},this);opt.anim=anim;return anim},preanim:function(a,i){return !a[i]?false:(typeof a[i]=="object"?a[i]:{duration:a[i+1],callback:a[i+2],easing:a[i+3]})},clean:function(forceReclean){if(this.isCleaned&&forceReclean!==true){return this}var ns=/\S/;var d=this.dom,n=d.firstChild,ni=-1;while(n){var nx=n.nextSibling;if(n.nodeType==3&&!ns.test(n.nodeValue)){d.removeChild(n)}else{n.nodeIndex=++ni}n=nx}this.isCleaned=true;return this},scrollIntoView:function(container,hscroll){var c=Ext.getDom(container)||Ext.getBody().dom;var el=this.dom;var o=this.getOffsetsTo(c),l=o[0]+c.scrollLeft,t=o[1]+c.scrollTop,b=t+el.offsetHeight,r=l+el.offsetWidth;var ch=c.clientHeight;var ct=parseInt(c.scrollTop,10);var cl=parseInt(c.scrollLeft,10);var cb=ct+ch;var cr=cl+c.clientWidth;if(el.offsetHeight>ch||t<ct){c.scrollTop=t}else{if(b>cb){c.scrollTop=b-ch}}c.scrollTop=c.scrollTop;if(hscroll!==false){if(el.offsetWidth>c.clientWidth||l<cl){c.scrollLeft=l}else{if(r>cr){c.scrollLeft=r-c.clientWidth}}c.scrollLeft=c.scrollLeft}return this},scrollChildIntoView:function(child,hscroll){Ext.fly(child,"_scrollChildIntoView").scrollIntoView(this,hscroll)},autoHeight:function(animate,duration,onComplete,easing){var oldHeight=this.getHeight();this.clip();this.setHeight(1);setTimeout(function(){var height=parseInt(this.dom.scrollHeight,10);if(!animate){this.setHeight(height);this.unclip();if(typeof onComplete=="function"){onComplete()}}else{this.setHeight(oldHeight);this.setHeight(height,animate,duration,function(){this.unclip();if(typeof onComplete=="function"){onComplete()}}.createDelegate(this),easing)}}.createDelegate(this),0);return this},contains:function(el){if(!el){return false}return D.isAncestor(this.dom,el.dom?el.dom:el)},isVisible:function(deep){var vis=!(this.getStyle("visibility")=="hidden"||this.getStyle("display")=="none");if(deep!==true||!vis){return vis}var p=this.dom.parentNode;while(p&&p.tagName.toLowerCase()!="body"){if(!Ext.fly(p,"_isVisible").isVisible()){return false}p=p.parentNode}return true},select:function(selector,unique){return El.select(selector,unique,this.dom)},query:function(selector){return Ext.DomQuery.select(selector,this.dom)},child:function(selector,returnDom){var n=Ext.DomQuery.selectNode(selector,this.dom);return returnDom?n:Ext.get(n)},down:function(selector,returnDom){var n=Ext.DomQuery.selectNode(" > "+selector,this.dom);return returnDom?n:Ext.get(n)},initDD:function(group,config,overrides){var dd=new Ext.dd.DD(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)},initDDProxy:function(group,config,overrides){var dd=new Ext.dd.DDProxy(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)},initDDTarget:function(group,config,overrides){var dd=new Ext.dd.DDTarget(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)},setVisible:function(visible,animate){if(!animate||!A){if(this.visibilityMode==El.DISPLAY){this.setDisplayed(visible)}else{this.fixDisplay();this.dom.style.visibility=visible?"visible":"hidden"}}else{var dom=this.dom;var visMode=this.visibilityMode;if(visible){this.setOpacity(0.01);this.setVisible(true)}this.anim({opacity:{to:(visible?1:0)}},this.preanim(arguments,1),null,0.35,"easeIn",function(){if(!visible){if(visMode==El.DISPLAY){dom.style.display="none"}else{dom.style.visibility="hidden"}Ext.get(dom).setOpacity(1)}})}return this},isDisplayed:function(){return this.getStyle("display")!="none"},toggle:function(animate){this.setVisible(!this.isVisible(),this.preanim(arguments,0));return this},setDisplayed:function(value){if(typeof value=="boolean"){value=value?this.originalDisplay:"none"}this.setStyle("display",value);return this},focus:function(){try{this.dom.focus()}catch(e){}return this},blur:function(){try{this.dom.blur()}catch(e){}return this},addClass:function(className){if(Ext.isArray(className)){for(var i=0,len=className.length;i<len;i++){this.addClass(className[i])}}else{if(className&&!this.hasClass(className)){this.dom.className=this.dom.className+" "+className}}return this},radioClass:function(className){var siblings=this.dom.parentNode.childNodes;for(var i=0;i<siblings.length;i++){var s=siblings[i];if(s.nodeType==1){Ext.get(s).removeClass(className)}}this.addClass(className);return this},removeClass:function(className){if(!className||!this.dom.className){return this}if(Ext.isArray(className)){for(var i=0,len=className.length;i<len;i++){this.removeClass(className[i])}}else{if(this.hasClass(className)){var re=this.classReCache[className];if(!re){re=new RegExp("(?:^|\\s+)"+className+"(?:\\s+|$)","g");this.classReCache[className]=re}this.dom.className=this.dom.className.replace(re," ")}}return this},classReCache:{},toggleClass:function(className){if(this.hasClass(className)){this.removeClass(className)}else{this.addClass(className)}return this},hasClass:function(className){return className&&(" "+this.dom.className+" ").indexOf(" "+className+" ")!=-1},replaceClass:function(oldClassName,newClassName){this.removeClass(oldClassName);this.addClass(newClassName);return this},getStyles:function(){var a=arguments,len=a.length,r={};for(var i=0;i<len;i++){r[a[i]]=this.getStyle(a[i])}return r},getStyle:function(){return view&&view.getComputedStyle?function(prop){var el=this.dom,v,cs,camel;if(prop=="float"){prop="cssFloat"}if(v=el.style[prop]){return v}if(cs=view.getComputedStyle(el,"")){if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn)}return cs[camel]}return null}:function(prop){var el=this.dom,v,cs,camel;if(prop=="opacity"){if(typeof el.style.filter=="string"){var m=el.style.filter.match(/alpha\(opacity=(.*)\)/i);if(m){var fv=parseFloat(m[1]);if(!isNaN(fv)){return fv?fv/100:0}}}return 1}else{if(prop=="float"){prop="styleFloat"}}if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn)}if(v=el.style[camel]){return v}if(cs=el.currentStyle){return cs[camel]}return null}}(),setStyle:function(prop,value){if(typeof prop=="string"){var camel;if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn)}if(camel=="opacity"){this.setOpacity(value)}else{this.dom.style[camel]=value}}else{for(var style in prop){if(typeof prop[style]!="function"){this.setStyle(style,prop[style])}}}return this},applyStyles:function(style){Ext.DomHelper.applyStyles(this.dom,style);return this},getX:function(){return D.getX(this.dom)},getY:function(){return D.getY(this.dom)},getXY:function(){return D.getXY(this.dom)},getOffsetsTo:function(el){var o=this.getXY();var e=Ext.fly(el,"_internal").getXY();return[o[0]-e[0],o[1]-e[1]]},setX:function(x,animate){if(!animate||!A){D.setX(this.dom,x)}else{this.setXY([x,this.getY()],this.preanim(arguments,1))}return this},setY:function(y,animate){if(!animate||!A){D.setY(this.dom,y)}else{this.setXY([this.getX(),y],this.preanim(arguments,1))}return this},setLeft:function(left){this.setStyle("left",this.addUnits(left));return this},setTop:function(top){this.setStyle("top",this.addUnits(top));return this},setRight:function(right){this.setStyle("right",this.addUnits(right));return this},setBottom:function(bottom){this.setStyle("bottom",this.addUnits(bottom));return this},setXY:function(pos,animate){if(!animate||!A){D.setXY(this.dom,pos)}else{this.anim({points:{to:pos}},this.preanim(arguments,1),"motion")}return this},setLocation:function(x,y,animate){this.setXY([x,y],this.preanim(arguments,2));return this},moveTo:function(x,y,animate){this.setXY([x,y],this.preanim(arguments,2));return this},getRegion:function(){return D.getRegion(this.dom)},getHeight:function(contentHeight){var h=this.dom.offsetHeight||0;h=contentHeight!==true?h:h-this.getBorderWidth("tb")-this.getPadding("tb");return h<0?0:h},getWidth:function(contentWidth){var w=this.dom.offsetWidth||0;w=contentWidth!==true?w:w-this.getBorderWidth("lr")-this.getPadding("lr");return w<0?0:w},getComputedHeight:function(){var h=Math.max(this.dom.offsetHeight,this.dom.clientHeight);if(!h){h=parseInt(this.getStyle("height"),10)||0;if(!this.isBorderBox()){h+=this.getFrameWidth("tb")}}return h},getComputedWidth:function(){var w=Math.max(this.dom.offsetWidth,this.dom.clientWidth);if(!w){w=parseInt(this.getStyle("width"),10)||0;if(!this.isBorderBox()){w+=this.getFrameWidth("lr")}}return w},getSize:function(contentSize){return{width:this.getWidth(contentSize),height:this.getHeight(contentSize)}},getStyleSize:function(){var w,h,d=this.dom,s=d.style;if(s.width&&s.width!="auto"){w=parseInt(s.width,10);if(Ext.isBorderBox){w-=this.getFrameWidth("lr")}}if(s.height&&s.height!="auto"){h=parseInt(s.height,10);if(Ext.isBorderBox){h-=this.getFrameWidth("tb")}}return{width:w||this.getWidth(true),height:h||this.getHeight(true)}},getViewSize:function(){var d=this.dom,doc=document,aw=0,ah=0;if(d==doc||d==doc.body){return{width:D.getViewWidth(),height:D.getViewHeight()}}else{return{width:d.clientWidth,height:d.clientHeight}}},getValue:function(asNumber){return asNumber?parseInt(this.dom.value,10):this.dom.value},adjustWidth:function(width){if(typeof width=="number"){if(this.autoBoxAdjust&&!this.isBorderBox()){width-=(this.getBorderWidth("lr")+this.getPadding("lr"))}if(width<0){width=0}}return width},adjustHeight:function(height){if(typeof height=="number"){if(this.autoBoxAdjust&&!this.isBorderBox()){height-=(this.getBorderWidth("tb")+this.getPadding("tb"))}if(height<0){height=0}}return height},setWidth:function(width,animate){width=this.adjustWidth(width);if(!animate||!A){this.dom.style.width=this.addUnits(width)}else{this.anim({width:{to:width}},this.preanim(arguments,1))}return this},setHeight:function(height,animate){height=this.adjustHeight(height);if(!animate||!A){this.dom.style.height=this.addUnits(height)}else{this.anim({height:{to:height}},this.preanim(arguments,1))}return this},setSize:function(width,height,animate){if(typeof width=="object"){height=width.height;width=width.width}width=this.adjustWidth(width);height=this.adjustHeight(height);if(!animate||!A){this.dom.style.width=this.addUnits(width);this.dom.style.height=this.addUnits(height)}else{this.anim({width:{to:width},height:{to:height}},this.preanim(arguments,2))}return this},setBounds:function(x,y,width,height,animate){if(!animate||!A){this.setSize(width,height);this.setLocation(x,y)}else{width=this.adjustWidth(width);height=this.adjustHeight(height);this.anim({points:{to:[x,y]},width:{to:width},height:{to:height}},this.preanim(arguments,4),"motion")}return this},setRegion:function(region,animate){this.setBounds(region.left,region.top,region.right-region.left,region.bottom-region.top,this.preanim(arguments,1));return this},addListener:function(eventName,fn,scope,options){Ext.EventManager.on(this.dom,eventName,fn,scope||this,options)},removeListener:function(eventName,fn,scope){Ext.EventManager.removeListener(this.dom,eventName,fn,scope||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this.dom);return this},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e)})},setOpacity:function(opacity,animate){if(!animate||!A){var s=this.dom.style;if(Ext.isIE){s.zoom=1;s.filter=(s.filter||"").replace(/alpha\([^\)]*\)/gi,"")+(opacity==1?"":" alpha(opacity="+opacity*100+")")}else{s.opacity=opacity}}else{this.anim({opacity:{to:opacity}},this.preanim(arguments,1),null,0.35,"easeIn")}return this},getLeft:function(local){if(!local){return this.getX()}else{return parseInt(this.getStyle("left"),10)||0}},getRight:function(local){if(!local){return this.getX()+this.getWidth()}else{return(this.getLeft(true)+this.getWidth())||0}},getTop:function(local){if(!local){return this.getY()}else{return parseInt(this.getStyle("top"),10)||0}},getBottom:function(local){if(!local){return this.getY()+this.getHeight()}else{return(this.getTop(true)+this.getHeight())||0}},position:function(pos,zIndex,x,y){if(!pos){if(this.getStyle("position")=="static"){this.setStyle("position","relative")}}else{this.setStyle("position",pos)}if(zIndex){this.setStyle("z-index",zIndex)}if(x!==undefined&&y!==undefined){this.setXY([x,y])}else{if(x!==undefined){this.setX(x)}else{if(y!==undefined){this.setY(y)}}}},clearPositioning:function(value){value=value||"";this.setStyle({"left":value,"right":value,"top":value,"bottom":value,"z-index":"","position":"static"});return this},getPositioning:function(){var l=this.getStyle("left");var t=this.getStyle("top");return{"position":this.getStyle("position"),"left":l,"right":l?"":this.getStyle("right"),"top":t,"bottom":t?"":this.getStyle("bottom"),"z-index":this.getStyle("z-index")}},getBorderWidth:function(side){return this.addStyles(side,El.borders)},getPadding:function(side){return this.addStyles(side,El.paddings)},setPositioning:function(pc){this.applyStyles(pc);if(pc.right=="auto"){this.dom.style.right=""}if(pc.bottom=="auto"){this.dom.style.bottom=""}return this},fixDisplay:function(){if(this.getStyle("display")=="none"){this.setStyle("visibility","hidden");this.setStyle("display",this.originalDisplay);if(this.getStyle("display")=="none"){this.setStyle("display","block")}}},setOverflow:function(v){if(v=="auto"&&Ext.isMac&&Ext.isGecko2){this.dom.style.overflow="hidden";(function(){this.dom.style.overflow="auto"}).defer(1,this)}else{this.dom.style.overflow=v}},setLeftTop:function(left,top){this.dom.style.left=this.addUnits(left);this.dom.style.top=this.addUnits(top);return this},move:function(direction,distance,animate){var xy=this.getXY();direction=direction.toLowerCase();switch(direction){case"l":case"left":this.moveTo(xy[0]-distance,xy[1],this.preanim(arguments,2));break;case"r":case"right":this.moveTo(xy[0]+distance,xy[1],this.preanim(arguments,2));break;case"t":case"top":case"up":this.moveTo(xy[0],xy[1]-distance,this.preanim(arguments,2));break;case"b":case"bottom":case"down":this.moveTo(xy[0],xy[1]+distance,this.preanim(arguments,2));break}return this},clip:function(){if(!this.isClipped){this.isClipped=true;this.originalClip={"o":this.getStyle("overflow"),"x":this.getStyle("overflow-x"),"y":this.getStyle("overflow-y")};this.setStyle("overflow","hidden");this.setStyle("overflow-x","hidden");this.setStyle("overflow-y","hidden")}return this},unclip:function(){if(this.isClipped){this.isClipped=false;var o=this.originalClip;if(o.o){this.setStyle("overflow",o.o)}if(o.x){this.setStyle("overflow-x",o.x)}if(o.y){this.setStyle("overflow-y",o.y)}}return this},getAnchorXY:function(anchor,local,s){var w,h,vp=false;if(!s){var d=this.dom;if(d==document.body||d==document){vp=true;w=D.getViewWidth();h=D.getViewHeight()}else{w=this.getWidth();h=this.getHeight()}}else{w=s.width;h=s.height}var x=0,y=0,r=Math.round;switch((anchor||"tl").toLowerCase()){case"c":x=r(w*0.5);y=r(h*0.5);break;case"t":x=r(w*0.5);y=0;break;case"l":x=0;y=r(h*0.5);break;case"r":x=w;y=r(h*0.5);break;case"b":x=r(w*0.5);y=h;break;case"tl":x=0;y=0;break;case"bl":x=0;y=h;break;case"br":x=w;y=h;break;case"tr":x=w;y=0;break}if(local===true){return[x,y]}if(vp){var sc=this.getScroll();return[x+sc.left,y+sc.top]}var o=this.getXY();return[x+o[0],y+o[1]]},getAlignToXY:function(el,p,o){el=Ext.get(el);if(!el||!el.dom){throw"Element.alignToXY with an element that doesn't exist"}var d=this.dom;var c=false;var p1="",p2="";o=o||[0,0];if(!p){p="tl-bl"}else{if(p=="?"){p="tl-bl?"}else{if(p.indexOf("-")==-1){p="tl-"+p}}}p=p.toLowerCase();var m=p.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!m){throw"Element.alignTo with an invalid alignment "+p}p1=m[1];p2=m[2];c=!!m[3];var a1=this.getAnchorXY(p1,true);var a2=el.getAnchorXY(p2,false);var x=a2[0]-a1[0]+o[0];var y=a2[1]-a1[1]+o[1];if(c){var w=this.getWidth(),h=this.getHeight(),r=el.getRegion();var dw=D.getViewWidth()-5,dh=D.getViewHeight()-5;var p1y=p1.charAt(0),p1x=p1.charAt(p1.length-1);var p2y=p2.charAt(0),p2x=p2.charAt(p2.length-1);var swapY=((p1y=="t"&&p2y=="b")||(p1y=="b"&&p2y=="t"));var swapX=((p1x=="r"&&p2x=="l")||(p1x=="l"&&p2x=="r"));var doc=document;var scrollX=(doc.documentElement.scrollLeft||doc.body.scrollLeft||0)+5;var scrollY=(doc.documentElement.scrollTop||doc.body.scrollTop||0)+5;if((x+w)>dw+scrollX){x=swapX?r.left-w:dw+scrollX-w}if(x<scrollX){x=swapX?r.right:scrollX}if((y+h)>dh+scrollY){y=swapY?r.top-h:dh+scrollY-h}if(y<scrollY){y=swapY?r.bottom:scrollY}}return[x,y]},getConstrainToXY:function(){var os={top:0,left:0,bottom:0,right:0};return function(el,local,offsets,proposedXY){el=Ext.get(el);offsets=offsets?Ext.applyIf(offsets,os):os;var vw,vh,vx=0,vy=0;if(el.dom==document.body||el.dom==document){vw=Ext.lib.Dom.getViewWidth();vh=Ext.lib.Dom.getViewHeight()}else{vw=el.dom.clientWidth;vh=el.dom.clientHeight;if(!local){var vxy=el.getXY();vx=vxy[0];vy=vxy[1]}}var s=el.getScroll();vx+=offsets.left+s.left;vy+=offsets.top+s.top;vw-=offsets.right;vh-=offsets.bottom;var vr=vx+vw;var vb=vy+vh;var xy=proposedXY||(!local?this.getXY():[this.getLeft(true),this.getTop(true)]);var x=xy[0],y=xy[1];var w=this.dom.offsetWidth,h=this.dom.offsetHeight;var moved=false;if((x+w)>vr){x=vr-w;moved=true}if((y+h)>vb){y=vb-h;moved=true}if(x<vx){x=vx;moved=true}if(y<vy){y=vy;moved=true}return moved?[x,y]:false}}(),adjustForConstraints:function(xy,parent,offsets){return this.getConstrainToXY(parent||document,false,offsets,xy)||xy},alignTo:function(element,position,offsets,animate){var xy=this.getAlignToXY(element,position,offsets);this.setXY(xy,this.preanim(arguments,3));return this},anchorTo:function(el,alignment,offsets,animate,monitorScroll,callback){var action=function(){this.alignTo(el,alignment,offsets,animate);Ext.callback(callback,this)};Ext.EventManager.onWindowResize(action,this);var tm=typeof monitorScroll;if(tm!="undefined"){Ext.EventManager.on(window,"scroll",action,this,{buffer:tm=="number"?monitorScroll:50})}action.call(this);return this},clearOpacity:function(){if(window.ActiveXObject){if(typeof this.dom.style.filter=="string"&&(/alpha/i).test(this.dom.style.filter)){this.dom.style.filter=""}}else{this.dom.style.opacity="";this.dom.style["-moz-opacity"]="";this.dom.style["-khtml-opacity"]=""}return this},hide:function(animate){this.setVisible(false,this.preanim(arguments,0));return this},show:function(animate){this.setVisible(true,this.preanim(arguments,0));return this},addUnits:function(size){return Ext.Element.addUnits(size,this.defaultUnit)},update:function(html,loadScripts,callback){if(typeof html=="undefined"){html=""}if(loadScripts!==true){this.dom.innerHTML=html;if(typeof callback=="function"){callback()}return this}var id=Ext.id();var dom=this.dom;html+="<span id=\""+id+"\"></span>";E.onAvailable(id,function(){var hd=document.getElementsByTagName("head")[0];var re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;var srcRe=/\ssrc=([\'\"])(.*?)\1/i;var typeRe=/\stype=([\'\"])(.*?)\1/i;var match;while(match=re.exec(html)){var attrs=match[1];var srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){var s=document.createElement("script");s.src=srcMatch[2];var typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}var el=document.getElementById(id);if(el){Ext.removeNode(el)}if(typeof callback=="function"){callback()}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},load:function(){var um=this.getUpdater();um.update.apply(um,arguments);return this},getUpdater:function(){if(!this.updateManager){this.updateManager=new Ext.Updater(this)}return this.updateManager},unselectable:function(){this.dom.unselectable="on";this.swallowEvent("selectstart",true);this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");this.addClass("x-unselectable");return this},getCenterXY:function(){return this.getAlignToXY(document,"c-c")},center:function(centerIn){this.alignTo(centerIn||document,"c-c");return this},isBorderBox:function(){return noBoxAdjust[this.dom.tagName.toLowerCase()]||Ext.isBorderBox},getBox:function(contentBox,local){var xy;if(!local){xy=this.getXY()}else{var left=parseInt(this.getStyle("left"),10)||0;var top=parseInt(this.getStyle("top"),10)||0;xy=[left,top]}var el=this.dom,w=el.offsetWidth,h=el.offsetHeight,bx;if(!contentBox){bx={x:xy[0],y:xy[1],0:xy[0],1:xy[1],width:w,height:h}}else{var l=this.getBorderWidth("l")+this.getPadding("l");var r=this.getBorderWidth("r")+this.getPadding("r");var t=this.getBorderWidth("t")+this.getPadding("t");var b=this.getBorderWidth("b")+this.getPadding("b");bx={x:xy[0]+l,y:xy[1]+t,0:xy[0]+l,1:xy[1]+t,width:w-(l+r),height:h-(t+b)}}bx.right=bx.x+bx.width;bx.bottom=bx.y+bx.height;return bx},getFrameWidth:function(sides,onlyContentBox){return onlyContentBox&&Ext.isBorderBox?0:(this.getPadding(sides)+this.getBorderWidth(sides))},setBox:function(box,adjust,animate){var w=box.width,h=box.height;if((adjust&&!this.autoBoxAdjust)&&!this.isBorderBox()){w-=(this.getBorderWidth("lr")+this.getPadding("lr"));h-=(this.getBorderWidth("tb")+this.getPadding("tb"))}this.setBounds(box.x,box.y,w,h,this.preanim(arguments,2));return this},repaint:function(){var dom=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.get(dom).removeClass("x-repaint")},1);return this},getMargins:function(side){if(!side){return{top:parseInt(this.getStyle("margin-top"),10)||0,left:parseInt(this.getStyle("margin-left"),10)||0,bottom:parseInt(this.getStyle("margin-bottom"),10)||0,right:parseInt(this.getStyle("margin-right"),10)||0}}else{return this.addStyles(side,El.margins)}},addStyles:function(sides,styles){var val=0,v,w;for(var i=0,len=sides.length;i<len;i++){v=this.getStyle(styles[sides.charAt(i)]);if(v){w=parseInt(v,10);if(w){val+=(w>=0?w:-1*w)}}}return val},createProxy:function(config,renderTo,matchBox){config=typeof config=="object"?config:{tag:"div",cls:config};var proxy;if(renderTo){proxy=Ext.DomHelper.append(renderTo,config,true)}else{proxy=Ext.DomHelper.insertBefore(this.dom,config,true)}if(matchBox){proxy.setBox(this.getBox())}return proxy},mask:function(msg,msgCls){if(this.getStyle("position")=="static"){this.setStyle("position","relative")}if(this._maskMsg){this._maskMsg.remove()}if(this._mask){this._mask.remove()}this._mask=Ext.DomHelper.append(this.dom,{cls:"ext-el-mask"},true);this.addClass("x-masked");this._mask.setDisplayed(true);if(typeof msg=="string"){this._maskMsg=Ext.DomHelper.append(this.dom,{cls:"ext-el-mask-msg",cn:{tag:"div"}},true);var mm=this._maskMsg;mm.dom.className=msgCls?"ext-el-mask-msg "+msgCls:"ext-el-mask-msg";mm.dom.firstChild.innerHTML=msg;mm.setDisplayed(true);mm.center(this)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&this.getStyle("height")=="auto"){this._mask.setSize(this.dom.clientWidth,this.getHeight())}return this._mask},unmask:function(){if(this._mask){if(this._maskMsg){this._maskMsg.remove();delete this._maskMsg}this._mask.remove();delete this._mask}this.removeClass("x-masked")},isMasked:function(){return this._mask&&this._mask.isVisible()},createShim:function(){var el=document.createElement("iframe");el.frameBorder="0";el.className="ext-shim";if(Ext.isIE&&Ext.isSecure){el.src=Ext.SSL_SECURE_URL}var shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom));shim.autoBoxAdjust=false;return shim},remove:function(){Ext.removeNode(this.dom);delete El.cache[this.dom.id]},hover:function(overFn,outFn,scope){var preOverFn=function(e){if(!e.within(this,true)){overFn.apply(scope||this,arguments)}};var preOutFn=function(e){if(!e.within(this,true)){outFn.apply(scope||this,arguments)}};this.on("mouseover",preOverFn,this.dom);this.on("mouseout",preOutFn,this.dom);return this},addClassOnOver:function(className){this.hover(function(){Ext.fly(this,"_internal").addClass(className)},function(){Ext.fly(this,"_internal").removeClass(className)});return this},addClassOnFocus:function(className){this.on("focus",function(){Ext.fly(this,"_internal").addClass(className)},this.dom);this.on("blur",function(){Ext.fly(this,"_internal").removeClass(className)},this.dom);return this},addClassOnClick:function(className){var dom=this.dom;this.on("mousedown",function(){Ext.fly(dom,"_internal").addClass(className);var d=Ext.getDoc();var fn=function(){Ext.fly(dom,"_internal").removeClass(className);d.removeListener("mouseup",fn)};d.on("mouseup",fn)});return this},swallowEvent:function(eventName,preventDefault){var fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){for(var i=0,len=eventName.length;i<len;i++){this.on(eventName[i],fn)}return this}this.on(eventName,fn);return this},parent:function(selector,returnDom){return this.matchNode("parentNode","parentNode",selector,returnDom)},next:function(selector,returnDom){return this.matchNode("nextSibling","nextSibling",selector,returnDom)},prev:function(selector,returnDom){return this.matchNode("previousSibling","previousSibling",selector,returnDom)},first:function(selector,returnDom){return this.matchNode("nextSibling","firstChild",selector,returnDom)},last:function(selector,returnDom){return this.matchNode("previousSibling","lastChild",selector,returnDom)},matchNode:function(dir,start,selector,returnDom){var n=this.dom[start];while(n){if(n.nodeType==1&&(!selector||Ext.DomQuery.is(n,selector))){return !returnDom?Ext.get(n):n}n=n[dir]}return null},appendChild:function(el){el=Ext.get(el);el.appendTo(this);return this},createChild:function(config,insertBefore,returnDom){config=config||{tag:"div"};if(insertBefore){return Ext.DomHelper.insertBefore(insertBefore,config,returnDom!==true)}return Ext.DomHelper[!this.dom.firstChild?"overwrite":"append"](this.dom,config,returnDom!==true)},appendTo:function(el){el=Ext.getDom(el);el.appendChild(this.dom);return this},insertBefore:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el);return this},insertAfter:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el.nextSibling);return this},insertFirst:function(el,returnDom){el=el||{};if(typeof el=="object"&&!el.nodeType&&!el.dom){return this.createChild(el,this.dom.firstChild,returnDom)}else{el=Ext.getDom(el);this.dom.insertBefore(el,this.dom.firstChild);return !returnDom?Ext.get(el):el}},insertSibling:function(el,where,returnDom){var rt;if(Ext.isArray(el)){for(var i=0,len=el.length;i<len;i++){rt=this.insertSibling(el[i],where,returnDom)}return rt}where=where?where.toLowerCase():"before";el=el||{};var refNode=where=="before"?this.dom:this.dom.nextSibling;if(typeof el=="object"&&!el.nodeType&&!el.dom){if(where=="after"&&!this.dom.nextSibling){rt=Ext.DomHelper.append(this.dom.parentNode,el,!returnDom)}else{rt=Ext.DomHelper[where=="after"?"insertAfter":"insertBefore"](this.dom,el,!returnDom)}}else{rt=this.dom.parentNode.insertBefore(Ext.getDom(el),refNode);if(!returnDom){rt=Ext.get(rt)}}return rt},wrap:function(config,returnDom){if(!config){config={tag:"div"}}var newEl=Ext.DomHelper.insertBefore(this.dom,config,!returnDom);newEl.dom?newEl.dom.appendChild(this.dom):newEl.appendChild(this.dom);return newEl},replace:function(el){el=Ext.get(el);this.insertBefore(el);el.remove();return this},replaceWith:function(el){if(typeof el=="object"&&!el.nodeType&&!el.dom){el=this.insertSibling(el,"before")}else{el=Ext.getDom(el);this.dom.parentNode.insertBefore(el,this.dom)}El.uncache(this.id);this.dom.parentNode.removeChild(this.dom);this.dom=el;this.id=Ext.id(el);El.cache[this.id]=this;return this},insertHtml:function(where,html,returnEl){var el=Ext.DomHelper.insertHtml(where,this.dom,html);return returnEl?Ext.get(el):el},set:function(o,useSet){var el=this.dom;useSet=typeof useSet=="undefined"?(el.setAttribute?true:false):useSet;for(var attr in o){if(attr=="style"||typeof o[attr]=="function"){continue}if(attr=="cls"){el.className=o["cls"]}else{if(o.hasOwnProperty(attr)){if(useSet){el.setAttribute(attr,o[attr])}else{el[attr]=o[attr]}}}}if(o.style){Ext.DomHelper.applyStyles(el,o.style)}return this},addKeyListener:function(key,fn,scope){var config;if(typeof key!="object"||Ext.isArray(key)){config={key:key,fn:fn,scope:scope}}else{config={key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope}}return new Ext.KeyMap(this,config)},addKeyMap:function(config){return new Ext.KeyMap(this,config)},isScrollable:function(){var dom=this.dom;return dom.scrollHeight>dom.clientHeight||dom.scrollWidth>dom.clientWidth},scrollTo:function(side,value,animate){var prop=side.toLowerCase()=="left"?"scrollLeft":"scrollTop";if(!animate||!A){this.dom[prop]=value}else{var to=prop=="scrollLeft"?[value,this.dom.scrollTop]:[this.dom.scrollLeft,value];this.anim({scroll:{"to":to}},this.preanim(arguments,2),"scroll")}return this},scroll:function(direction,distance,animate){if(!this.isScrollable()){return }var el=this.dom;var l=el.scrollLeft,t=el.scrollTop;var w=el.scrollWidth,h=el.scrollHeight;var cw=el.clientWidth,ch=el.clientHeight;direction=direction.toLowerCase();var scrolled=false;var a=this.preanim(arguments,2);switch(direction){case"l":case"left":if(w-l>cw){var v=Math.min(l+distance,w-cw);this.scrollTo("left",v,a);scrolled=true}break;case"r":case"right":if(l>0){var v=Math.max(l-distance,0);this.scrollTo("left",v,a);scrolled=true}break;case"t":case"top":case"up":if(t>0){var v=Math.max(t-distance,0);this.scrollTo("top",v,a);scrolled=true}break;case"b":case"bottom":case"down":if(h-t>ch){var v=Math.min(t+distance,h-ch);this.scrollTo("top",v,a);scrolled=true}break}return scrolled},translatePoints:function(x,y){if(typeof x=="object"||Ext.isArray(x)){y=x[1];x=x[0]}var p=this.getStyle("position");var o=this.getXY();var l=parseInt(this.getStyle("left"),10);var t=parseInt(this.getStyle("top"),10);if(isNaN(l)){l=(p=="relative")?0:this.dom.offsetLeft}if(isNaN(t)){t=(p=="relative")?0:this.dom.offsetTop}return{left:(x-o[0]+l),top:(y-o[1]+t)}},getScroll:function(){var d=this.dom,doc=document;if(d==doc||d==doc.body){var l,t;if(Ext.isIE&&Ext.isStrict){l=doc.documentElement.scrollLeft||(doc.body.scrollLeft||0);t=doc.documentElement.scrollTop||(doc.body.scrollTop||0)}else{l=window.pageXOffset||(doc.body.scrollLeft||0);t=window.pageYOffset||(doc.body.scrollTop||0)}return{left:l,top:t}}else{return{left:d.scrollLeft,top:d.scrollTop}}},getColor:function(attr,defaultValue,prefix){var v=this.getStyle(attr);if(!v||v=="transparent"||v=="inherit"){return defaultValue}var color=typeof prefix=="undefined"?"#":prefix;if(v.substr(0,4)=="rgb("){var rvs=v.slice(4,v.length-1).split(",");for(var i=0;i<3;i++){var h=parseInt(rvs[i]);var s=h.toString(16);if(h<16){s="0"+s}color+=s}}else{if(v.substr(0,1)=="#"){if(v.length==4){for(var i=1;i<4;i++){var c=v.charAt(i);color+=c+c}}else{if(v.length==7){color+=v.substr(1)}}}}return(color.length>5?color.toLowerCase():defaultValue)},boxWrap:function(cls){cls=cls||"x-box";var el=Ext.get(this.insertHtml("beforeBegin",String.format("<div class=\"{0}\">"+El.boxMarkup+"</div>",cls)));el.child("."+cls+"-mc").dom.appendChild(this.dom);return el},getAttributeNS:Ext.isIE?function(ns,name){var d=this.dom;var type=typeof d[ns+":"+name];if(type!="undefined"&&type!="unknown"){return d[ns+":"+name]}return d[name]}:function(ns,name){var d=this.dom;return d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name)||d.getAttribute(name)||d[name]},getTextWidth:function(text,min,max){return(Ext.util.TextMetrics.measure(this.dom,Ext.value(text,this.dom.innerHTML,true)).width).constrain(min||0,max||1000000)}};var ep=El.prototype;ep.on=ep.addListener;ep.mon=ep.addListener;ep.getUpdateManager=ep.getUpdater;ep.un=ep.removeListener;ep.autoBoxAdjust=true;El.unitPattern=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;El.addUnits=function(v,defaultUnit){if(v===""||v=="auto"){return v}if(v===undefined){return""}if(typeof v=="number"||!El.unitPattern.test(v)){return v+(defaultUnit||"px")}return v};El.boxMarkup="<div class=\"{0}-tl\"><div class=\"{0}-tr\"><div class=\"{0}-tc\"></div></div></div><div class=\"{0}-ml\"><div class=\"{0}-mr\"><div class=\"{0}-mc\"></div></div></div><div class=\"{0}-bl\"><div class=\"{0}-br\"><div class=\"{0}-bc\"></div></div></div>";El.VISIBILITY=1;El.DISPLAY=2;El.borders={l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"};El.paddings={l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"};El.margins={l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"};El.cache={};var docEl;El.get=function(el){var ex,elm,id;if(!el){return null}if(typeof el=="string"){if(!(elm=document.getElementById(el))){return null}if(ex=El.cache[el]){ex.dom=elm}else{ex=El.cache[el]=new El(elm)}return ex}else{if(el.tagName){if(!(id=el.id)){id=Ext.id(el)}if(ex=El.cache[id]){ex.dom=el}else{ex=El.cache[id]=new El(el)}return ex}else{if(el instanceof El){if(el!=docEl){el.dom=document.getElementById(el.id)||el.dom;El.cache[el.id]=el}return el}else{if(el.isComposite){return el}else{if(Ext.isArray(el)){return El.select(el)}else{if(el==document){if(!docEl){var f=function(){};f.prototype=El.prototype;docEl=new f();docEl.dom=document}return docEl}}}}}}return null};El.uncache=function(el){for(var i=0,a=arguments,len=a.length;i<len;i++){if(a[i]){delete El.cache[a[i].id||a[i]]}}};El.garbageCollect=function(){if(!Ext.enableGarbageCollector){clearInterval(El.collectorThread);return }for(var eid in El.cache){var el=El.cache[eid],d=el.dom;if(!d||!d.parentNode||(!d.offsetParent&&!document.getElementById(eid))){delete El.cache[eid];if(d&&Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}}}};El.collectorThreadId=setInterval(El.garbageCollect,30000);var flyFn=function(){};flyFn.prototype=El.prototype;var _cls=new flyFn();El.Flyweight=function(dom){this.dom=dom};El.Flyweight.prototype=_cls;El.Flyweight.prototype.isFlyweight=true;El._flyweights={};El.fly=function(el,named){named=named||"_global";el=Ext.getDom(el);if(!el){return null}if(!El._flyweights[named]){El._flyweights[named]=new El.Flyweight()}El._flyweights[named].dom=el;return El._flyweights[named]};Ext.get=El.get;Ext.fly=El.fly;var noBoxAdjust=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){noBoxAdjust["button"]=1}Ext.EventManager.on(window,"unload",function(){delete El.cache;delete El._flyweights})})();
+Ext.enableFx=true;Ext.Fx={slideIn:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"t";this.fixDisplay();var D=this.getFxRestore();var I=this.getBox();this.setSize(I);var F=this.fxWrap(D.pos,C,"hidden");var K=this.dom.style;K.visibility="visible";K.position="absolute";var E=function(){B.fxUnwrap(F,D.pos,C);K.width=D.width;K.height=D.height;B.afterFx(C)};var J,L={to:[I.x,I.y]},H={to:I.width},G={to:I.height};switch(A.toLowerCase()){case"t":F.setSize(I.width,0);K.left=K.bottom="0";J={height:G};break;case"l":F.setSize(0,I.height);K.right=K.top="0";J={width:H};break;case"r":F.setSize(0,I.height);F.setX(I.right);K.left=K.top="0";J={width:H,points:L};break;case"b":F.setSize(I.width,0);F.setY(I.bottom);K.left=K.top="0";J={height:G,points:L};break;case"tl":F.setSize(0,0);K.right=K.bottom="0";J={width:H,height:G};break;case"bl":F.setSize(0,0);F.setY(I.y+I.height);K.right=K.top="0";J={width:H,height:G,points:L};break;case"br":F.setSize(0,0);F.setXY([I.right,I.bottom]);K.left=K.top="0";J={width:H,height:G,points:L};break;case"tr":F.setSize(0,0);F.setX(I.x+I.width);K.left=K.bottom="0";J={width:H,height:G,points:L};break}this.dom.style.visibility="visible";F.show();arguments.callee.anim=F.fxanim(J,C,"motion",0.5,"easeOut",E)});return this},slideOut:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"t";var I=this.getFxRestore();var D=this.getBox();this.setSize(D);var G=this.fxWrap(I.pos,C,"visible");var F=this.dom.style;F.visibility="visible";F.position="absolute";G.setSize(D);var J=function(){if(C.useDisplay){B.setDisplayed(false)}else{B.hide()}B.fxUnwrap(G,I.pos,C);F.width=I.width;F.height=I.height;B.afterFx(C)};var E,H={to:0};switch(A.toLowerCase()){case"t":F.left=F.bottom="0";E={height:H};break;case"l":F.right=F.top="0";E={width:H};break;case"r":F.left=F.top="0";E={width:H,points:{to:[D.right,D.y]}};break;case"b":F.left=F.top="0";E={height:H,points:{to:[D.x,D.bottom]}};break;case"tl":F.right=F.bottom="0";E={width:H,height:H};break;case"bl":F.right=F.top="0";E={width:H,height:H,points:{to:[D.x,D.bottom]}};break;case"br":F.left=F.top="0";E={width:H,height:H,points:{to:[D.x+D.width,D.bottom]}};break;case"tr":F.left=F.bottom="0";E={width:H,height:H,points:{to:[D.right,D.y]}};break}arguments.callee.anim=G.fxanim(E,C,"motion",0.5,"easeOut",J)});return this},puff:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.clearOpacity();this.show();var F=this.getFxRestore();var D=this.dom.style;var G=function(){if(B.useDisplay){A.setDisplayed(false)}else{A.hide()}A.clearOpacity();A.setPositioning(F.pos);D.width=F.width;D.height=F.height;D.fontSize="";A.afterFx(B)};var E=this.getWidth();var C=this.getHeight();arguments.callee.anim=this.fxanim({width:{to:this.adjustWidth(E*2)},height:{to:this.adjustHeight(C*2)},points:{by:[-(E*0.5),-(C*0.5)]},opacity:{to:0},fontSize:{to:200,unit:"%"}},B,"motion",0.5,"easeOut",G)});return this},switchOff:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.clearOpacity();this.clip();var D=this.getFxRestore();var C=this.dom.style;var E=function(){if(B.useDisplay){A.setDisplayed(false)}else{A.hide()}A.clearOpacity();A.setPositioning(D.pos);C.width=D.width;C.height=D.height;A.afterFx(B)};this.fxanim({opacity:{to:0.3}},null,null,0.1,null,function(){this.clearOpacity();(function(){this.fxanim({height:{to:1},points:{by:[0,this.getHeight()*0.5]}},B,"motion",0.3,"easeIn",E)}).defer(100,this)})});return this},highlight:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"ffff9c";var D=C.attr||"backgroundColor";this.clearOpacity();this.show();var G=this.getColor(D);var H=this.dom.style[D];var F=(C.endColor||G)||"ffffff";var I=function(){B.dom.style[D]=H;B.afterFx(C)};var E={};E[D]={from:A,to:F};arguments.callee.anim=this.fxanim(E,C,"color",1,"easeIn",I)});return this},frame:function(A,C,D){var B=this.getFxEl();D=D||{};B.queueFx(D,function(){A=A||"#C3DAF9";if(A.length==6){A="#"+A}C=C||1;var G=D.duration||1;this.show();var E=this.getBox();var F=function(){var H=Ext.getBody().createChild({style:{visbility:"hidden",position:"absolute","z-index":"35000",border:"0px solid "+A}});var I=Ext.isBorderBox?2:1;H.animate({top:{from:E.y,to:E.y-20},left:{from:E.x,to:E.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:E.height,to:(E.height+(20*I))},width:{from:E.width,to:(E.width+(20*I))}},G,function(){H.remove();if(--C>0){F()}else{B.afterFx(D)}})};F.call(this)});return this},pause:function(C){var A=this.getFxEl();var B={};A.queueFx(B,function(){setTimeout(function(){A.afterFx(B)},C*1000)});return this},fadeIn:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.setOpacity(0);this.fixDisplay();this.dom.style.visibility="visible";var C=B.endOpacity||1;arguments.callee.anim=this.fxanim({opacity:{to:C}},B,null,0.5,"easeOut",function(){if(C==1){this.clearOpacity()}A.afterFx(B)})});return this},fadeOut:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){arguments.callee.anim=this.fxanim({opacity:{to:B.endOpacity||0}},B,null,0.5,"easeOut",function(){if(this.visibilityMode==Ext.Element.DISPLAY||B.useDisplay){this.dom.style.display="none"}else{this.dom.style.visibility="hidden"}this.clearOpacity();A.afterFx(B)})});return this},scale:function(A,B,C){this.shift(Ext.apply({},C,{width:A,height:B}));return this},shift:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){var E={},D=B.width,F=B.height,C=B.x,H=B.y,G=B.opacity;if(D!==undefined){E.width={to:this.adjustWidth(D)}}if(F!==undefined){E.height={to:this.adjustHeight(F)}}if(B.left!==undefined){E.left={to:B.left}}if(B.top!==undefined){E.top={to:B.top}}if(B.right!==undefined){E.right={to:B.right}}if(B.bottom!==undefined){E.bottom={to:B.bottom}}if(C!==undefined||H!==undefined){E.points={to:[C!==undefined?C:this.getX(),H!==undefined?H:this.getY()]}}if(G!==undefined){E.opacity={to:G}}if(B.xy!==undefined){E.points={to:B.xy}}arguments.callee.anim=this.fxanim(E,B,"motion",0.35,"easeOut",function(){A.afterFx(B)})});return this},ghost:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"b";var H=this.getFxRestore();var E=this.getWidth(),G=this.getHeight();var F=this.dom.style;var J=function(){if(C.useDisplay){B.setDisplayed(false)}else{B.hide()}B.clearOpacity();B.setPositioning(H.pos);F.width=H.width;F.height=H.height;B.afterFx(C)};var D={opacity:{to:0},points:{}},I=D.points;switch(A.toLowerCase()){case"t":I.by=[0,-G];break;case"l":I.by=[-E,0];break;case"r":I.by=[E,0];break;case"b":I.by=[0,G];break;case"tl":I.by=[-E,-G];break;case"bl":I.by=[-E,G];break;case"br":I.by=[E,G];break;case"tr":I.by=[E,-G];break}arguments.callee.anim=this.fxanim(D,C,"motion",0.5,"easeOut",J)});return this},syncFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:true,stopFx:false});return this},sequenceFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:false,stopFx:false});return this},nextFx:function(){var A=this.fxQueue[0];if(A){A.call(this)}},hasActiveFx:function(){return this.fxQueue&&this.fxQueue[0]},stopFx:function(){if(this.hasActiveFx()){var A=this.fxQueue[0];if(A&&A.anim&&A.anim.isAnimated()){this.fxQueue=[A];A.anim.stop(true)}}return this},beforeFx:function(A){if(this.hasActiveFx()&&!A.concurrent){if(A.stopFx){this.stopFx();return true}return false}return true},hasFxBlock:function(){var A=this.fxQueue;return A&&A[0]&&A[0].block},queueFx:function(C,A){if(!this.fxQueue){this.fxQueue=[]}if(!this.hasFxBlock()){Ext.applyIf(C,this.fxDefaults);if(!C.concurrent){var B=this.beforeFx(C);A.block=C.block;this.fxQueue.push(A);if(B){this.nextFx()}}else{A.call(this)}}return this},fxWrap:function(F,D,C){var B;if(!D.wrap||!(B=Ext.get(D.wrap))){var A;if(D.fixPosition){A=this.getXY()}var E=document.createElement("div");E.style.visibility=C;B=Ext.get(this.dom.parentNode.insertBefore(E,this.dom));B.setPositioning(F);if(B.getStyle("position")=="static"){B.position("relative")}this.clearPositioning("auto");B.clip();B.dom.appendChild(this.dom);if(A){B.setXY(A)}}return B},fxUnwrap:function(A,C,B){this.clearPositioning();this.setPositioning(C);if(!B.wrap){A.dom.parentNode.insertBefore(this.dom,A.dom);A.remove()}},getFxRestore:function(){var A=this.dom.style;return{pos:this.getPositioning(),width:A.width,height:A.height}},afterFx:function(A){if(A.afterStyle){this.applyStyles(A.afterStyle)}if(A.afterCls){this.addClass(A.afterCls)}if(A.remove===true){this.remove()}Ext.callback(A.callback,A.scope,[this]);if(!A.concurrent){this.fxQueue.shift();this.nextFx()}},getFxEl:function(){return Ext.get(this.dom)},fxanim:function(D,E,B,F,C,A){B=B||"run";E=E||{};var G=Ext.lib.Anim[B](this.dom,D,(E.duration||F)||0.35,(E.easing||C)||"easeOut",function(){Ext.callback(A,this)},this);E.anim=G;return G}};Ext.Fx.resize=Ext.Fx.scale;Ext.apply(Ext.Element.prototype,Ext.Fx);
+Ext.CompositeElement=function(A){this.elements=[];this.addElements(A)};Ext.CompositeElement.prototype={isComposite:true,addElements:function(E){if(!E){return this}if(typeof E=="string"){E=Ext.Element.selectorFunction(E)}var D=this.elements;var B=D.length-1;for(var C=0,A=E.length;C<A;C++){D[++B]=Ext.get(E[C])}return this},fill:function(A){this.elements=[];this.add(A);return this},filter:function(A){var B=[];this.each(function(C){if(C.is(A)){B[B.length]=C.dom}});this.fill(B);return this},invoke:function(E,B){var D=this.elements;for(var C=0,A=D.length;C<A;C++){Ext.Element.prototype[E].apply(D[C],B)}return this},add:function(A){if(typeof A=="string"){this.addElements(Ext.Element.selectorFunction(A))}else{if(A.length!==undefined){this.addElements(A)}else{this.addElements([A])}}return this},each:function(E,D){var C=this.elements;for(var B=0,A=C.length;B<A;B++){if(E.call(D||C[B],C[B],this,B)===false){break}}return this},item:function(A){return this.elements[A]||null},first:function(){return this.item(0)},last:function(){return this.item(this.elements.length-1)},getCount:function(){return this.elements.length},contains:function(A){return this.indexOf(A)!==-1},indexOf:function(A){return this.elements.indexOf(Ext.get(A))},removeElement:function(D,F){if(Ext.isArray(D)){for(var C=0,A=D.length;C<A;C++){this.removeElement(D[C])}return this}var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1&&this.elements[B]){if(F){var E=this.elements[B];if(E.dom){E.remove()}else{Ext.removeNode(E)}}this.elements.splice(B,1)}return this},replaceElement:function(D,C,A){var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1){if(A){this.elements[B].replaceWith(C)}else{this.elements.splice(B,1,Ext.get(C))}}return this},clear:function(){this.elements=[]}};(function(){Ext.CompositeElement.createCall=function(B,C){if(!B[C]){B[C]=function(){return this.invoke(C,arguments)}}};for(var A in Ext.Element.prototype){if(typeof Ext.Element.prototype[A]=="function"){Ext.CompositeElement.createCall(Ext.CompositeElement.prototype,A)}}})();Ext.CompositeElementLite=function(A){Ext.CompositeElementLite.superclass.constructor.call(this,A);this.el=new Ext.Element.Flyweight()};Ext.extend(Ext.CompositeElementLite,Ext.CompositeElement,{addElements:function(E){if(E){if(Ext.isArray(E)){this.elements=this.elements.concat(E)}else{var D=this.elements;var B=D.length-1;for(var C=0,A=E.length;C<A;C++){D[++B]=E[C]}}}return this},invoke:function(F,B){var D=this.elements;var E=this.el;for(var C=0,A=D.length;C<A;C++){E.dom=D[C];Ext.Element.prototype[F].apply(E,B)}return this},item:function(A){if(!this.elements[A]){return null}this.el.dom=this.elements[A];return this.el},addListener:function(B,G,F,E){var D=this.elements;for(var C=0,A=D.length;C<A;C++){Ext.EventManager.on(D[C],B,G,F||D[C],E)}return this},each:function(F,E){var C=this.elements;var D=this.el;for(var B=0,A=C.length;B<A;B++){D.dom=C[B];if(F.call(E||D,D,this,B)===false){break}}return this},indexOf:function(A){return this.elements.indexOf(Ext.getDom(A))},replaceElement:function(D,C,A){var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1){C=Ext.getDom(C);if(A){var E=this.elements[B];E.parentNode.insertBefore(C,E);Ext.removeNode(E)}this.elements.splice(B,1,C)}return this}});Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select}Ext.Element.select=function(A,D,B){var C;if(typeof A=="string"){C=Ext.Element.selectorFunction(A,B)}else{if(A.length!==undefined){C=A}else{throw"Invalid selector"}}if(D===true){return new Ext.CompositeElement(C)}else{return new Ext.CompositeElementLite(C)}};Ext.select=Ext.Element.select;
+Ext.data.Connection=function(A){Ext.apply(this,A);this.addEvents("beforerequest","requestcomplete","requestexception");Ext.data.Connection.superclass.constructor.call(this)};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,autoAbort:false,disableCaching:true,disableCachingParam:"_dc",request:function(E){if(this.fireEvent("beforerequest",this,E)!==false){var C=E.params;if(typeof C=="function"){C=C.call(E.scope||window,E)}if(typeof C=="object"){C=Ext.urlEncode(C)}if(this.extraParams){var G=Ext.urlEncode(this.extraParams);C=C?(C+"&"+G):G}var B=E.url||this.url;if(typeof B=="function"){B=B.call(E.scope||window,E)}if(E.form){var D=Ext.getDom(E.form);B=B||D.action;var J=D.getAttribute("enctype");if(E.isUpload||(J&&J.toLowerCase()=="multipart/form-data")){return this.doFormUpload(E,C,B)}var I=Ext.lib.Ajax.serializeForm(D);C=C?(C+"&"+I):I}var K=E.headers;if(this.defaultHeaders){K=Ext.apply(K||{},this.defaultHeaders);if(!E.headers){E.headers=K}}var F={success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{options:E},timeout:E.timeout||this.timeout};var A=E.method||this.method||((C||E.xmlData||E.jsonData)?"POST":"GET");if(A=="GET"&&(this.disableCaching&&E.disableCaching!==false)||E.disableCaching===true){var H=E.disableCachingParam||this.disableCachingParam;B+=(B.indexOf("?")!=-1?"&":"?")+H+"="+(new Date().getTime())}if(typeof E.autoAbort=="boolean"){if(E.autoAbort){this.abort()}}else{if(this.autoAbort!==false){this.abort()}}if((A=="GET"||E.xmlData||E.jsonData)&&C){B+=(B.indexOf("?")!=-1?"&":"?")+C;C=""}this.transId=Ext.lib.Ajax.request(A,B,F,C,E);return this.transId}else{Ext.callback(E.callback,E.scope,[E,null,null]);return null}},isLoading:function(A){if(A){return Ext.lib.Ajax.isCallInProgress(A)}else{return this.transId?true:false}},abort:function(A){if(A||this.isLoading()){Ext.lib.Ajax.abort(A||this.transId)}},handleResponse:function(A){this.transId=false;var B=A.argument.options;A.argument=B?B.argument:null;this.fireEvent("requestcomplete",this,A,B);Ext.callback(B.success,B.scope,[A,B]);Ext.callback(B.callback,B.scope,[B,true,A])},handleFailure:function(A,C){this.transId=false;var B=A.argument.options;A.argument=B?B.argument:null;this.fireEvent("requestexception",this,A,B,C);Ext.callback(B.failure,B.scope,[A,B]);Ext.callback(B.callback,B.scope,[B,false,A])},doFormUpload:function(E,A,B){var C=Ext.id();var F=document.createElement("iframe");F.id=C;F.name=C;F.className="x-hidden";if(Ext.isIE){F.src=Ext.SSL_SECURE_URL}document.body.appendChild(F);if(Ext.isIE){document.frames[C].name=C}var D=Ext.getDom(E.form);D.target=C;D.method="POST";D.enctype=D.encoding="multipart/form-data";if(B){D.action=B}var L,J;if(A){L=[];A=Ext.urlDecode(A,false);for(var H in A){if(A.hasOwnProperty(H)){J=document.createElement("input");J.type="hidden";J.name=H;J.value=A[H];D.appendChild(J);L.push(J)}}}function G(){var M={responseText:"",responseXML:null};M.argument=E?E.argument:null;try{var O;if(Ext.isIE){O=F.contentWindow.document}else{O=(F.contentDocument||window.frames[C].document)}if(O&&O.body){M.responseText=O.body.innerHTML}if(O&&O.XMLDocument){M.responseXML=O.XMLDocument}else{M.responseXML=O}}catch(N){}Ext.EventManager.removeListener(F,"load",G,this);this.fireEvent("requestcomplete",this,M,E);Ext.callback(E.success,E.scope,[M,E]);Ext.callback(E.callback,E.scope,[E,true,M]);setTimeout(function(){Ext.removeNode(F)},100)}Ext.EventManager.on(F,"load",G,this);D.submit();if(L){for(var I=0,K=L.length;I<K;I++){Ext.removeNode(L[I])}}}});Ext.Ajax=new Ext.data.Connection({autoAbort:false,serializeForm:function(A){return Ext.lib.Ajax.serializeForm(A)}});
+Ext.Updater=Ext.extend(Ext.util.Observable,{constructor:function(B,A){B=Ext.get(B);if(!A&&B.updateManager){return B.updateManager}this.el=B;this.defaultUrl=null;this.addEvents("beforeupdate","update","failure");var C=Ext.Updater.defaults;this.sslBlankUrl=C.sslBlankUrl;this.disableCaching=C.disableCaching;this.indicatorText=C.indicatorText;this.showLoadIndicator=C.showLoadIndicator;this.timeout=C.timeout;this.loadScripts=C.loadScripts;this.transaction=null;this.refreshDelegate=this.refresh.createDelegate(this);this.updateDelegate=this.update.createDelegate(this);this.formUpdateDelegate=this.formUpdate.createDelegate(this);if(!this.renderer){this.renderer=this.getDefaultRenderer()}Ext.Updater.superclass.constructor.call(this)},getDefaultRenderer:function(){return new Ext.Updater.BasicRenderer()},getEl:function(){return this.el},update:function(B,F,G,D){if(this.fireEvent("beforeupdate",this.el,B,F)!==false){var A,C;if(typeof B=="object"){A=B;B=A.url;F=F||A.params;G=G||A.callback;D=D||A.discardUrl;C=A.scope;if(typeof A.nocache!="undefined"){this.disableCaching=A.nocache}if(typeof A.text!="undefined"){this.indicatorText="<div class=\"loading-indicator\">"+A.text+"</div>"}if(typeof A.scripts!="undefined"){this.loadScripts=A.scripts}if(typeof A.timeout!="undefined"){this.timeout=A.timeout}}this.showLoading();if(!D){this.defaultUrl=B}if(typeof B=="function"){B=B.call(this)}var E=Ext.apply({},{url:B,params:(typeof F=="function"&&C)?F.createDelegate(C):F,success:this.processSuccess,failure:this.processFailure,scope:this,callback:undefined,timeout:(this.timeout*1000),disableCaching:this.disableCaching,argument:{"options":A,"url":B,"form":null,"callback":G,"scope":C||window,"params":F}},A);this.transaction=Ext.Ajax.request(E)}},formUpdate:function(C,A,B,D){if(this.fireEvent("beforeupdate",this.el,C,A)!==false){if(typeof A=="function"){A=A.call(this)}C=Ext.getDom(C);this.transaction=Ext.Ajax.request({form:C,url:A,success:this.processSuccess,failure:this.processFailure,scope:this,timeout:(this.timeout*1000),argument:{"url":A,"form":C,"callback":D,"reset":B}});this.showLoading.defer(1,this)}},refresh:function(A){if(this.defaultUrl==null){return }this.update(this.defaultUrl,null,A,true)},startAutoRefresh:function(B,C,D,E,A){if(A){this.update(C||this.defaultUrl,D,E,true)}if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId)}this.autoRefreshProcId=setInterval(this.update.createDelegate(this,[C||this.defaultUrl,D,E,true]),B*1000)},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId}},isAutoRefreshing:function(){return this.autoRefreshProcId?true:false},showLoading:function(){if(this.showLoadIndicator){this.el.update(this.indicatorText)}},processSuccess:function(A){this.transaction=null;if(A.argument.form&&A.argument.reset){try{A.argument.form.reset()}catch(B){}}if(this.loadScripts){this.renderer.render(this.el,A,this,this.updateComplete.createDelegate(this,[A]))}else{this.renderer.render(this.el,A,this);this.updateComplete(A)}},updateComplete:function(A){this.fireEvent("update",this.el,A);if(typeof A.argument.callback=="function"){A.argument.callback.call(A.argument.scope,this.el,true,A,A.argument.options)}},processFailure:function(A){this.transaction=null;this.fireEvent("failure",this.el,A);if(typeof A.argument.callback=="function"){A.argument.callback.call(A.argument.scope,this.el,false,A,A.argument.options)}},setRenderer:function(A){this.renderer=A},getRenderer:function(){return this.renderer},setDefaultUrl:function(A){this.defaultUrl=A},abort:function(){if(this.transaction){Ext.Ajax.abort(this.transaction)}},isUpdating:function(){if(this.transaction){return Ext.Ajax.isLoading(this.transaction)}return false}});Ext.Updater.defaults={timeout:30,loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL||"javascript:false"),disableCaching:false,showLoadIndicator:true,indicatorText:"<div class=\"loading-indicator\">Loading...</div>"};Ext.Updater.updateElement=function(D,C,E,B){var A=Ext.get(D).getUpdater();Ext.apply(A,B);A.update(C,E,B?B.callback:null)};Ext.Updater.BasicRenderer=function(){};Ext.Updater.BasicRenderer.prototype={render:function(C,A,B,D){C.update(A.responseText,B.loadScripts,D)}};Ext.UpdateManager=Ext.Updater;
+(function(){Date.formatCodeToRegex=function(character,currentGroup){var p=Date.parseCodes[character];if(p){p=Ext.type(p)=="function"?p():p;Date.parseCodes[character]=p}return p?Ext.applyIf({c:p.c?String.format(p.c,currentGroup||"{0}"):p.c},p):{g:0,c:null,s:Ext.escapeRe(character)}};var $f=Date.formatCodeToRegex;Ext.apply(Date,{parseFunctions:{count:0},parseRegexes:[],formatFunctions:{count:0},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},getShortMonthName:function(month){return Date.monthNames[month].substring(0,3)},getShortDayName:function(day){return Date.dayNames[day].substring(0,3)},getMonthNumber:function(name){return Date.monthNumbers[name.substring(0,1).toUpperCase()+name.substring(1,3).toLowerCase()]},formatCodes:{d:"String.leftPad(this.getDate(), 2, '0')",D:"Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"this.getSuffix()",w:"this.getDay()",z:"this.getDayOfYear()",W:"String.leftPad(this.getWeekOfYear(), 2, '0')",F:"Date.monthNames[this.getMonth()]",m:"String.leftPad(this.getMonth() + 1, 2, '0')",M:"Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"this.getDaysInMonth()",L:"(this.isLeapYear() ? 1 : 0)",o:"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"this.getFullYear()",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"String.leftPad(this.getHours(), 2, '0')",i:"String.leftPad(this.getMinutes(), 2, '0')",s:"String.leftPad(this.getSeconds(), 2, '0')",u:"String.leftPad(this.getMilliseconds(), 3, '0')",O:"this.getGMTOffset()",P:"this.getGMTOffset(true)",T:"this.getTimezone()",Z:"(this.getTimezoneOffset() * -60)",c:function(){for(var c="Y-m-dTH:i:sP",code=[],i=0,l=c.length;i<l;++i){var e=c.charAt(i);code.push(e=="T"?"'T'":Date.getFormatCode(e))}return code.join(" + ")},U:"Math.round(this.getTime() / 1000)"},parseDate:function(input,format){var p=Date.parseFunctions;if(p[format]==null){Date.createParser(format)}var func=p[format];return Date[func](input)},getFormatCode:function(character){var f=Date.formatCodes[character];if(f){f=Ext.type(f)=="function"?f():f;Date.formatCodes[character]=f}return f||("'"+String.escape(character)+"'")},createNewFormat:function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var code="Date.prototype."+funcName+" = function(){return ";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true}else{if(special){special=false;code+="'"+String.escape(ch)+"' + "}else{code+=Date.getFormatCode(ch)+" + "}}}eval(code.substring(0,code.length-3)+";}")},createParser:function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input){\n"+"var y, m, d, h = 0, i = 0, s = 0, ms = 0, o, z, u, v;\n"+"input = String(input);\n"+"d = new Date();\n"+"y = d.getFullYear();\n"+"m = d.getMonth();\n"+"d = d.getDate();\n"+"var results = input.match(Date.parseRegexes["+regexNum+"]);\n"+"if (results && results.length > 0) {";var regex="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true}else{if(special){special=false;regex+=String.escape(ch)}else{var obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c}}}}code+="if (u){\n"+"v = new Date(u * 1000);\n"+"}else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0 && ms >= 0){\n"+"v = new Date(y, m, d, h, i, s, ms);\n"+"}else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0){\n"+"v = new Date(y, m, d, h, i, s);\n"+"}else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0){\n"+"v = new Date(y, m, d, h, i);\n"+"}else if (y >= 0 && m >= 0 && d > 0 && h >= 0){\n"+"v = new Date(y, m, d, h);\n"+"}else if (y >= 0 && m >= 0 && d > 0){\n"+"v = new Date(y, m, d);\n"+"}else if (y >= 0 && m >= 0){\n"+"v = new Date(y, m);\n"+"}else if (y >= 0){\n"+"v = new Date(y);\n"+"}\n}\nreturn (v && (z || o))?"+" (Ext.type(z) == 'number' ? v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - z) :"+" v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn))) : v;\n"+"}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$","i");eval(code)},parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},D:function(){for(var a=[],i=0;i<7;a.push(Date.getShortDayName(i)),++i){}return{g:0,c:null,s:"(?:"+a.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:0,c:null,s:"(?:\\d{1,3}"},W:{g:0,c:null,s:"(?:\\d{2})"},F:function(){return{g:1,c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n",s:"("+Date.monthNames.join("|")+")"}},M:function(){for(var a=[],i=0;i<12;a.push(Date.getShortMonthName(i)),++i){}return Ext.applyIf({s:"("+a.join("|")+")"},$f("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{2})"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{1,2})"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:function(){return $f("Y")},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\n"+"y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (results[{0}] == 'am') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(am|pm)"},A:{g:1,c:"if (results[{0}] == 'AM') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"},g:function(){return $f("G")},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},h:function(){return $f("H")},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1);","var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);","var mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1);","var hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60);","var mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,4}"},Z:{g:1,c:"z = results[{0}] * 1;\n"+"z = (-43200 <= z && z <= 50400)? z : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var calc=[];var arr=[$f("Y",1),$f("m",2),$f("d",3),$f("h",4),$f("i",5),$f("s",6),{c:"ms = (results[7] || '.0').substring(1); ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:"if(results[9] == 'Z'){\no = 0;\n}else{\n"+$f("P",9).c+"\n}"}];for(var i=0,l=arr.length;i<l;++i){calc.push(arr[i].c)}return{g:1,c:calc.join(""),s:arr[0].s+"-"+arr[1].s+"-"+arr[2].s+"T"+arr[3].s+":"+arr[4].s+":"+arr[5].s+"((.|,)\\d+)?"+"("+$f("P",null).s+"|Z)"}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}}})}());Ext.override(Date,{dateFormat:function(B){if(Date.formatFunctions[B]==null){Date.createNewFormat(B)}var A=Date.formatFunctions[B];return this[A]()},getTimezone:function(){return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(A){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.abs(Math.floor(this.getTimezoneOffset()/60)),2,"0")+(A?":":"")+String.leftPad(Math.abs(this.getTimezoneOffset()%60),2,"0")},getDayOfYear:function(){var A=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var B=0;B<this.getMonth();++B){A+=Date.daysInMonth[B]}return A+this.getDate()-1},getWeekOfYear:function(){var B=86400000;var C=7*B;var D=Date.UTC(this.getFullYear(),this.getMonth(),this.getDate()+3)/B;var A=Math.floor(D/7);var E=new Date(A*C).getUTCFullYear();return A-Math.floor(Date.UTC(E,0,7)/C)+1},isLeapYear:function(){var A=this.getFullYear();return !!((A&3)==0&&(A%100||(A%400==0&&A)))},getFirstDayOfMonth:function(){var A=(this.getDay()-(this.getDate()-1))%7;return(A<0)?(A+7):A},getLastDayOfMonth:function(){var A=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(A<0)?(A+7):A},getFirstDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),1)},getLastDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth())},getDaysInMonth:function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()]},getSuffix:function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(){return new Date(this.getTime())},clearTime:function(A){if(A){return this.clone().clearTime()}this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this},add:function(B,C){var D=this.clone();if(!B||C===0){return D}switch(B.toLowerCase()){case Date.MILLI:D.setMilliseconds(this.getMilliseconds()+C);break;case Date.SECOND:D.setSeconds(this.getSeconds()+C);break;case Date.MINUTE:D.setMinutes(this.getMinutes()+C);break;case Date.HOUR:D.setHours(this.getHours()+C);break;case Date.DAY:D.setDate(this.getDate()+C);break;case Date.MONTH:var A=this.getDate();if(A>28){A=Math.min(A,this.getFirstDateOfMonth().add("mo",C).getLastDateOfMonth().getDate())}D.setDate(A);D.setMonth(this.getMonth()+C);break;case Date.YEAR:D.setFullYear(this.getFullYear()+C);break}return D},between:function(C,A){var B=this.getTime();return C.getTime()<=B&&B<=A.getTime()}});Date.prototype.format=Date.prototype.dateFormat;if(Ext.isSafari){Date.brokenSetMonth=Date.prototype.setMonth;Date.prototype.setMonth=function(A){if(A<=-1){var D=Math.ceil(-A);var C=Math.ceil(D/12);var B=(D%12)?12-D%12:0;this.setFullYear(this.getFullYear()-C);return Date.brokenSetMonth.call(this,B)}else{return Date.brokenSetMonth.apply(this,arguments)}}};
+Ext.util.DelayedTask=function(E,D,A){var G=null,F,B;var C=function(){var H=new Date().getTime();if(H-B>=F){clearInterval(G);G=null;E.apply(D,A||[])}};this.delay=function(I,K,J,H){if(G&&I!=F){this.cancel()}F=I;B=new Date().getTime();E=K||E;D=J||D;A=H||A;if(!G){G=setInterval(C,F)}};this.cancel=function(){if(G){clearInterval(G);G=null}}};
+Ext.util.TaskRunner=function(E){E=E||10;var F=[],A=[];var B=0;var G=false;var D=function(){G=false;clearInterval(B);B=0};var H=function(){if(!G){G=true;B=setInterval(I,E)}};var C=function(J){A.push(J);if(J.onStop){J.onStop.apply(J.scope||J)}};var I=function(){if(A.length>0){for(var O=0,K=A.length;O<K;O++){F.remove(A[O])}A=[];if(F.length<1){D();return }}var M=new Date().getTime();for(var O=0,K=F.length;O<K;++O){var N=F[O];var J=M-N.taskRunTime;if(N.interval<=J){var L=N.run.apply(N.scope||N,N.args||[++N.taskRunCount]);N.taskRunTime=M;if(L===false||N.taskRunCount===N.repeat){C(N);return }}if(N.duration&&N.duration<=(M-N.taskStartTime)){C(N)}}};this.start=function(J){F.push(J);J.taskStartTime=new Date().getTime();J.taskRunTime=0;J.taskRunCount=0;H();return J};this.stop=function(J){C(J);return J};this.stopAll=function(){D();for(var K=0,J=F.length;K<J;K++){if(F[K].onStop){F[K].onStop()}}F=[];A=[]}};Ext.TaskMgr=new Ext.util.TaskRunner();
+Ext.util.MixedCollection=function(B,A){this.items=[];this.map={};this.keys=[];this.length=0;this.addEvents("clear","add","replace","remove","sort");this.allowFunctions=B===true;if(A){this.getKey=A}Ext.util.MixedCollection.superclass.constructor.call(this)};Ext.extend(Ext.util.MixedCollection,Ext.util.Observable,{allowFunctions:false,add:function(B,C){if(arguments.length==1){C=arguments[0];B=this.getKey(C)}if(typeof B=="undefined"||B===null){this.length++;this.items.push(C);this.keys.push(null)}else{var A=this.map[B];if(A){return this.replace(B,C)}this.length++;this.items.push(C);this.map[B]=C;this.keys.push(B)}this.fireEvent("add",this.length-1,C,B);return C},getKey:function(A){return A.id},replace:function(C,D){if(arguments.length==1){D=arguments[0];C=this.getKey(D)}var A=this.item(C);if(typeof C=="undefined"||C===null||typeof A=="undefined"){return this.add(C,D)}var B=this.indexOfKey(C);this.items[B]=D;this.map[C]=D;this.fireEvent("replace",C,A,D);return D},addAll:function(E){if(arguments.length>1||Ext.isArray(E)){var B=arguments.length>1?arguments:E;for(var D=0,A=B.length;D<A;D++){this.add(B[D])}}else{for(var C in E){if(this.allowFunctions||typeof E[C]!="function"){this.add(C,E[C])}}}},each:function(E,D){var B=[].concat(this.items);for(var C=0,A=B.length;C<A;C++){if(E.call(D||B[C],B[C],C,A)===false){break}}},eachKey:function(D,C){for(var B=0,A=this.keys.length;B<A;B++){D.call(C||window,this.keys[B],this.items[B],B,A)}},find:function(D,C){for(var B=0,A=this.items.length;B<A;B++){if(D.call(C||window,this.items[B],this.keys[B])){return this.items[B]}}return null},insert:function(A,B,C){if(arguments.length==2){C=arguments[1];B=this.getKey(C)}if(A>=this.length){return this.add(B,C)}this.length++;this.items.splice(A,0,C);if(typeof B!="undefined"&&B!=null){this.map[B]=C}this.keys.splice(A,0,B);this.fireEvent("add",A,C,B);return C},remove:function(A){return this.removeAt(this.indexOf(A))},removeAt:function(A){if(A<this.length&&A>=0){this.length--;var C=this.items[A];this.items.splice(A,1);var B=this.keys[A];if(typeof B!="undefined"){delete this.map[B]}this.keys.splice(A,1);this.fireEvent("remove",C,B);return C}return false},removeKey:function(A){return this.removeAt(this.indexOfKey(A))},getCount:function(){return this.length},indexOf:function(A){return this.items.indexOf(A)},indexOfKey:function(A){return this.keys.indexOf(A)},item:function(A){var B=typeof this.map[A]!="undefined"?this.map[A]:this.items[A];return typeof B!="function"||this.allowFunctions?B:null},itemAt:function(A){return this.items[A]},key:function(A){return this.map[A]},contains:function(A){return this.indexOf(A)!=-1},containsKey:function(A){return typeof this.map[A]!="undefined"},clear:function(){this.length=0;this.items=[];this.keys=[];this.map={};this.fireEvent("clear")},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},_sort:function(I,A,H){var C=String(A).toUpperCase()=="DESC"?-1:1;H=H||function(K,J){return K-J};var G=[],B=this.keys,F=this.items;for(var D=0,E=F.length;D<E;D++){G[G.length]={key:B[D],value:F[D],index:D}}G.sort(function(K,J){var L=H(K[I],J[I])*C;if(L==0){L=(K.index<J.index?-1:1)}return L});for(var D=0,E=G.length;D<E;D++){F[D]=G[D].value;B[D]=G[D].key}this.fireEvent("sort",this)},sort:function(A,B){this._sort("value",A,B)},keySort:function(A,B){this._sort("key",A,B||function(D,C){return String(D).toUpperCase()-String(C).toUpperCase()})},getRange:function(E,A){var B=this.items;if(B.length<1){return[]}E=E||0;A=Math.min(typeof A=="undefined"?this.length-1:A,this.length-1);var D=[];if(E<=A){for(var C=E;C<=A;C++){D[D.length]=B[C]}}else{for(var C=E;C>=A;C--){D[D.length]=B[C]}}return D},filter:function(C,B,D,A){if(Ext.isEmpty(B,false)){return this.clone()}B=this.createValueMatcher(B,D,A);return this.filterBy(function(E){return E&&B.test(E[C])})},filterBy:function(F,E){var G=new Ext.util.MixedCollection();G.getKey=this.getKey;var B=this.keys,D=this.items;for(var C=0,A=D.length;C<A;C++){if(F.call(E||this,D[C],B[C])){G.add(B[C],D[C])}}return G},findIndex:function(C,B,E,D,A){if(Ext.isEmpty(B,false)){return -1}B=this.createValueMatcher(B,D,A);return this.findIndexBy(function(F){return F&&B.test(F[C])},null,E)},findIndexBy:function(F,E,G){var B=this.keys,D=this.items;for(var C=(G||0),A=D.length;C<A;C++){if(F.call(E||this,D[C],B[C])){return C}}if(typeof G=="number"&&G>0){for(var C=0;C<G;C++){if(F.call(E||this,D[C],B[C])){return C}}}return -1},createValueMatcher:function(B,C,A){if(!B.exec){B=String(B);B=new RegExp((C===true?"":"^")+Ext.escapeRe(B),A?"":"i")}return B},clone:function(){var E=new Ext.util.MixedCollection();var B=this.keys,D=this.items;for(var C=0,A=D.length;C<A;C++){E.add(B[C],D[C])}E.getKey=this.getKey;return E}});Ext.util.MixedCollection.prototype.get=Ext.util.MixedCollection.prototype.item;
+Ext.util.JSON=new (function(){var useHasOwn=!!{}.hasOwnProperty;var pad=function(n){return n<10?"0"+n:n};var m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\"":"\\\"","\\":"\\\\"};var encodeString=function(s){if(/["\\\x00-\x1f]/.test(s)){return"\""+s.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c}c=b.charCodeAt();return"\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16)})+"\""}return"\""+s+"\""};var encodeArray=function(o){var a=["["],b,i,l=o.length,v;for(i=0;i<l;i+=1){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(v===null?"null":Ext.util.JSON.encode(v));b=true}}a.push("]");return a.join("")};this.encodeDate=function(o){return"\""+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+"\""};this.encode=function(o){if(typeof o=="undefined"||o===null){return"null"}else{if(Ext.isArray(o)){return encodeArray(o)}else{if(Ext.isDate(o)){return Ext.util.JSON.encodeDate(o)}else{if(typeof o=="string"){return encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(typeof o=="boolean"){return String(o)}else{var a=["{"],b,i,v;for(i in o){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(this.encode(i),":",v===null?"null":this.encode(v));b=true}}}a.push("}");return a.join("")}}}}}}};this.decode=function(json){return eval("("+json+")")}})();Ext.encode=Ext.util.JSON.encode;Ext.decode=Ext.util.JSON.decode;
+Ext.util.Format=function(){var trimRe=/^\s+|\s+$/g;return{ellipsis:function(value,len){if(value&&value.length>len){return value.substr(0,len-3)+"..."}return value},undef:function(value){return value!==undefined?value:""},defaultValue:function(value,defaultValue){return value!==undefined&&value!==""?value:defaultValue},htmlEncode:function(value){return !value?value:String(value).replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;")},htmlDecode:function(value){return !value?value:String(value).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,"\"").replace(/&amp;/g,"&")},trim:function(value){return String(value).replace(trimRe,"")},substr:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},uppercase:function(value){return String(value).toUpperCase()},capitalize:function(value){return !value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase()},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);args.unshift(value);return eval(fn).apply(window,args)}else{return eval(fn).call(window,value)}},usMoney:function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);v=String(v);var ps=v.split(".");var whole=ps[0];var sub=ps[1]?"."+ps[1]:".00";var r=/(\d+)(\d{3})/;while(r.test(whole)){whole=whole.replace(r,"$1"+","+"$2")}v=whole+sub;if(v.charAt(0)=="-"){return"-$"+v.substr(1)}return"$"+v},date:function(v,format){if(!v){return""}if(!Ext.isDate(v)){v=new Date(Date.parse(v))}return v.dateFormat(format||"m/d/Y")},dateRenderer:function(format){return function(v){return Ext.util.Format.date(v,format)}},stripTagsRE:/<\/?[^>]+>/gi,stripTags:function(v){return !v?v:String(v).replace(this.stripTagsRE,"")},stripScriptsRe:/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,stripScripts:function(v){return !v?v:String(v).replace(this.stripScriptsRe,"")},fileSize:function(size){if(size<1024){return size+" bytes"}else{if(size<1048576){return(Math.round(((size*10)/1024))/10)+" KB"}else{return(Math.round(((size*10)/1048576))/10)+" MB"}}},math:function(){var fns={};return function(v,a){if(!fns[a]){fns[a]=new Function("v","return v "+a+";")}return fns[a](v)}}(),nl2br:function(v){return v===undefined||v===null?"":v.replace(/\n/g,"<br/>")}}}();
+Ext.XTemplate=function(){Ext.XTemplate.superclass.constructor.apply(this,arguments);var P=this.html;P=["<tpl>",P,"</tpl>"].join("");var O=/<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/;var N=/^<tpl\b[^>]*?for="(.*?)"/;var L=/^<tpl\b[^>]*?if="(.*?)"/;var J=/^<tpl\b[^>]*?exec="(.*?)"/;var C,B=0;var G=[];while(C=P.match(O)){var M=C[0].match(N);var K=C[0].match(L);var I=C[0].match(J);var E=null,H=null,D=null;var A=M&&M[1]?M[1]:"";if(K){E=K&&K[1]?K[1]:null;if(E){H=new Function("values","parent","xindex","xcount","with(values){ return "+(Ext.util.Format.htmlDecode(E))+"; }")}}if(I){E=I&&I[1]?I[1]:null;if(E){D=new Function("values","parent","xindex","xcount","with(values){ "+(Ext.util.Format.htmlDecode(E))+"; }")}}if(A){switch(A){case".":A=new Function("values","parent","with(values){ return values; }");break;case"..":A=new Function("values","parent","with(values){ return parent; }");break;default:A=new Function("values","parent","with(values){ return "+A+"; }")}}G.push({id:B,target:A,exec:D,test:H,body:C[1]||""});P=P.replace(C[0],"{xtpl"+B+"}");++B}for(var F=G.length-1;F>=0;--F){this.compileTpl(G[F])}this.master=G[G.length-1];this.tpls=G};Ext.extend(Ext.XTemplate,Ext.Template,{re:/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(A,H,G,D,C){var J=this.tpls[A];if(J.test&&!J.test.call(this,H,G,D,C)){return""}if(J.exec&&J.exec.call(this,H,G,D,C)){return""}var I=J.target?J.target.call(this,H,G):H;G=J.target?H:G;if(J.target&&Ext.isArray(I)){var B=[];for(var E=0,F=I.length;E<F;E++){B[B.length]=J.compiled.call(this,I[E],G,E+1,F)}return B.join("")}return J.compiled.call(this,I,G,D,C)},compileTpl:function(tpl){var fm=Ext.util.Format;var useF=this.disableFormats!==true;var sep=Ext.isGecko?"+":",";var fn=function(m,name,format,args,math){if(name.substr(0,4)=="xtpl"){return"'"+sep+"this.applySubTemplate("+name.substr(4)+", values, parent, xindex, xcount)"+sep+"'"}var v;if(name==="."){v="values"}else{if(name==="#"){v="xindex"}else{if(name.indexOf(".")!=-1){v=name}else{v="values['"+name+"']"}}}if(math){v="("+v+math+")"}if(format&&useF){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format="this.call(\""+format.substr(5)+"\", ";args=", values"}}else{args="";format="("+v+" === undefined ? '' : "}return"'"+sep+format+v+args+")"+sep+"'"};var codeFn=function(m,code){return"'"+sep+"("+code+")"+sep+"'"};var body;if(Ext.isGecko){body="tpl.compiled = function(values, parent, xindex, xcount){ return '"+tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn)+"';};"}else{body=["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];body.push(tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn));body.push("'].join('');};");body=body.join("")}eval(body);return this},applyTemplate:function(A){return this.master.compiled.call(this,A,{},1,1)},compile:function(){return this}});Ext.XTemplate.prototype.apply=Ext.XTemplate.prototype.applyTemplate;Ext.XTemplate.from=function(A){A=Ext.getDom(A);return new Ext.XTemplate(A.value||A.innerHTML)};
+Ext.util.CSS=function(){var D=null;var C=document;var B=/(-[a-z])/gi;var A=function(E,F){return F.charAt(1).toUpperCase()};return{createStyleSheet:function(G,J){var F;var E=C.getElementsByTagName("head")[0];var I=C.createElement("style");I.setAttribute("type","text/css");if(J){I.setAttribute("id",J)}if(Ext.isIE){E.appendChild(I);F=I.styleSheet;F.cssText=G}else{try{I.appendChild(C.createTextNode(G))}catch(H){I.cssText=G}E.appendChild(I);F=I.styleSheet?I.styleSheet:(I.sheet||C.styleSheets[C.styleSheets.length-1])}this.cacheStyleSheet(F);return F},removeStyleSheet:function(F){var E=C.getElementById(F);if(E){E.parentNode.removeChild(E)}},swapStyleSheet:function(G,E){this.removeStyleSheet(G);var F=C.createElement("link");F.setAttribute("rel","stylesheet");F.setAttribute("type","text/css");F.setAttribute("id",G);F.setAttribute("href",E);C.getElementsByTagName("head")[0].appendChild(F)},refreshCache:function(){return this.getRules(true)},cacheStyleSheet:function(F){if(!D){D={}}try{var H=F.cssRules||F.rules;for(var E=H.length-1;E>=0;--E){D[H[E].selectorText]=H[E]}}catch(G){}},getRules:function(F){if(D==null||F){D={};var H=C.styleSheets;for(var G=0,E=H.length;G<E;G++){try{this.cacheStyleSheet(H[G])}catch(I){}}}return D},getRule:function(E,G){var F=this.getRules(G);if(!Ext.isArray(E)){return F[E]}for(var H=0;H<E.length;H++){if(F[E[H]]){return F[E[H]]}}return null},updateRule:function(E,H,G){if(!Ext.isArray(E)){var I=this.getRule(E);if(I){I.style[H.replace(B,A)]=G;return true}}else{for(var F=0;F<E.length;F++){if(this.updateRule(E[F],H,G)){return true}}}return false}}}();
+Ext.util.ClickRepeater=function(B,A){this.el=Ext.get(B);this.el.unselectable();Ext.apply(this,A);this.addEvents("mousedown","click","mouseup");this.el.on("mousedown",this.handleMouseDown,this);if(this.preventDefault||this.stopDefault){this.el.on("click",function(C){if(this.preventDefault){C.preventDefault()}if(this.stopDefault){C.stopEvent()}},this)}if(this.handler){this.on("click",this.handler,this.scope||this)}Ext.util.ClickRepeater.superclass.constructor.call(this)};Ext.extend(Ext.util.ClickRepeater,Ext.util.Observable,{interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,handleMouseDown:function(){clearTimeout(this.timer);this.el.blur();if(this.pressClass){this.el.addClass(this.pressClass)}this.mousedownTime=new Date();Ext.getDoc().on("mouseup",this.handleMouseUp,this);this.el.on("mouseout",this.handleMouseOut,this);this.fireEvent("mousedown",this);this.fireEvent("click",this);if(this.accelerate){this.delay=400}this.timer=this.click.defer(this.delay||this.interval,this)},click:function(){this.fireEvent("click",this);this.timer=this.click.defer(this.accelerate?this.easeOutExpo(this.mousedownTime.getElapsed(),400,-390,12000):this.interval,this)},easeOutExpo:function(B,A,D,C){return(B==C)?A+D:D*(-Math.pow(2,-10*B/C)+1)+A},handleMouseOut:function(){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass)}this.el.on("mouseover",this.handleMouseReturn,this)},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn,this);if(this.pressClass){this.el.addClass(this.pressClass)}this.click()},handleMouseUp:function(){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn,this);this.el.un("mouseout",this.handleMouseOut,this);Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeClass(this.pressClass);this.fireEvent("mouseup",this)}});
+Ext.KeyNav=function(B,A){this.el=Ext.get(B);Ext.apply(this,A);if(!this.disabled){this.disabled=true;this.enable()}};Ext.KeyNav.prototype={disabled:false,defaultEventAction:"stopEvent",forceKeyDown:false,prepareEvent:function(C){var A=C.getKey();var B=this.keyToHandler[A];if(Ext.isSafari2&&B&&A>=37&&A<=40){C.stopEvent()}},relay:function(C){var A=C.getKey();var B=this.keyToHandler[A];if(B&&this[B]){if(this.doRelay(C,this[B],B)!==true){C[this.defaultEventAction]()}}},doRelay:function(C,B,A){return B.call(this.scope||this,C)},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,keyToHandler:{37:"left",39:"right",38:"up",40:"down",33:"pageUp",34:"pageDown",46:"del",36:"home",35:"end",13:"enter",27:"esc",9:"tab"},enable:function(){if(this.disabled){if(this.forceKeyDown||Ext.isIE||Ext.isSafari3||Ext.isAir){this.el.on("keydown",this.relay,this)}else{this.el.on("keydown",this.prepareEvent,this);this.el.on("keypress",this.relay,this)}this.disabled=false}},disable:function(){if(!this.disabled){if(this.forceKeyDown||Ext.isIE||Ext.isSafari3||Ext.isAir){this.el.un("keydown",this.relay)}else{this.el.un("keydown",this.prepareEvent);this.el.un("keypress",this.relay)}this.disabled=true}}};
+Ext.KeyMap=function(C,B,A){this.el=Ext.get(C);this.eventName=A||"keydown";this.bindings=[];if(B){this.addBinding(B)}this.enable()};Ext.KeyMap.prototype={stopEvent:false,addBinding:function(D){if(Ext.isArray(D)){for(var F=0,H=D.length;F<H;F++){this.addBinding(D[F])}return }var N=D.key,C=D.shift,A=D.ctrl,G=D.alt,J=D.fn||D.handler,M=D.scope;if(D.stopEvent){this.stopEvent=D.stopEvent}if(typeof N=="string"){var K=[];var I=N.toUpperCase();for(var E=0,H=I.length;E<H;E++){K.push(I.charCodeAt(E))}N=K}var B=Ext.isArray(N);var L=function(R){if((!C||R.shiftKey)&&(!A||R.ctrlKey)&&(!G||R.altKey)){var P=R.getKey();if(B){for(var Q=0,O=N.length;Q<O;Q++){if(N[Q]==P){if(this.stopEvent){R.stopEvent()}J.call(M||window,P,R);return }}}else{if(P==N){if(this.stopEvent){R.stopEvent()}J.call(M||window,P,R)}}}};this.bindings.push(L)},on:function(B,D,C){var G,A,E,F;if(typeof B=="object"&&!Ext.isArray(B)){G=B.key;A=B.shift;E=B.ctrl;F=B.alt}else{G=B}this.addBinding({key:G,shift:A,ctrl:E,alt:F,fn:D,scope:C})},handleKeyDown:function(D){if(this.enabled){var B=this.bindings;for(var C=0,A=B.length;C<A;C++){B[C].call(this,D)}}},isEnabled:function(){return this.enabled},enable:function(){if(!this.enabled){this.el.on(this.eventName,this.handleKeyDown,this);this.enabled=true}},disable:function(){if(this.enabled){this.el.removeListener(this.eventName,this.handleKeyDown,this);this.enabled=false}}};
+Ext.util.TextMetrics=function(){var A;return{measure:function(B,C,D){if(!A){A=Ext.util.TextMetrics.Instance(B,D)}A.bind(B);A.setFixedWidth(D||"auto");return A.getSize(C)},createInstance:function(B,C){return Ext.util.TextMetrics.Instance(B,C)}}}();Ext.util.TextMetrics.Instance=function(B,D){var C=new Ext.Element(document.createElement("div"));document.body.appendChild(C.dom);C.position("absolute");C.setLeftTop(-1000,-1000);C.hide();if(D){C.setWidth(D)}var A={getSize:function(F){C.update(F);var E=C.getSize();C.update("");return E},bind:function(E){C.setStyle(Ext.fly(E).getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(E){C.setWidth(E)},getWidth:function(E){C.dom.style.width="auto";return this.getSize(E).width},getHeight:function(E){return this.getSize(E).height}};A.bind(B);return A};Ext.Element.measureText=Ext.util.TextMetrics.measure;
+(function(){var A=Ext.EventManager;var B=Ext.lib.Dom;Ext.dd.DragDrop=function(E,C,D){if(E){this.init(E,C,D)}};Ext.dd.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:function(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:function(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:function(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvalidDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4MouseDown:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(H,F,M){if(typeof F=="number"){F={left:F,right:F,top:F,bottom:F}}F=F||this.defaultPadding;var J=Ext.get(this.getEl()).getBox();var C=Ext.get(H);var L=C.getScroll();var I,D=C.dom;if(D==document.body){I={x:L.left,y:L.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()}}else{var K=C.getXY();I={x:K[0]+L.left,y:K[1]+L.top,width:D.clientWidth,height:D.clientHeight}}var G=J.y-I.y;var E=J.x-I.x;this.resetConstraints();this.setXConstraint(E-(F.left||0),I.width-E-J.width-(F.right||0),this.xTickSize);this.setYConstraint(G-(F.top||0),I.height-G-J.height-(F.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(E,C,D){this.initTarget(E,C,D);A.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(E,C,D){this.config=D||{};this.DDM=Ext.dd.DDM;this.groups={};if(typeof E!=="string"){E=Ext.id(E)}this.id=E;this.addToGroup((C)?C:"default");this.handleElId=E;this.setDragElId(E);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(E,C,F,D){if(!C&&0!==C){this.padding=[E,E,E,E]}else{if(!F&&0!==F){this.padding=[E,C,E,C]}else{this.padding=[E,C,F,D]}}},setInitPosition:function(F,E){var G=this.getEl();if(!this.DDM.verifyEl(G)){return }var D=F||0;var C=E||0;var H=B.getXY(G);this.initPageX=H[0]-D;this.initPageY=H[1]-C;this.lastPageX=H[0];this.lastPageY=H[1];this.setStartPosition(H)},setStartPosition:function(D){var C=D||B.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=C[0];this.startPageY=C[1]},addToGroup:function(C){this.groups[C]=true;this.DDM.regDragDrop(this,C)},removeFromGroup:function(C){if(this.groups[C]){delete this.groups[C]}this.DDM.removeDDFromGroup(this,C)},setDragElId:function(C){this.dragElId=C},setHandleElId:function(C){if(typeof C!=="string"){C=Ext.id(C)}this.handleElId=C;this.DDM.regHandle(this.id,C)},setOuterHandleElId:function(C){if(typeof C!=="string"){C=Ext.id(C)}A.on(C,"mousedown",this.handleMouseDown,this);this.setHandleElId(C);this.hasOuterHandles=true},unreg:function(){A.un(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDM.isLocked()||this.locked)},handleMouseDown:function(E,D){if(this.primaryButtonOnly&&E.button!=0){return }if(this.isLocked()){return }this.DDM.refreshCache(this.groups);var C=new Ext.lib.Point(Ext.lib.Event.getPageX(E),Ext.lib.Event.getPageY(E));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(C,this)){}else{if(this.clickValidator(E)){this.setStartPosition();this.b4MouseDown(E);this.onMouseDown(E);this.DDM.handleMouseDown(E,this);this.DDM.stopEvent(E)}else{}}},clickValidator:function(D){var C=D.getTarget();return(this.isValidHandleChild(C)&&(this.id==this.handleElId||this.DDM.handleWasClicked(C,this.id)))},addInvalidHandleType:function(C){var D=C.toUpperCase();this.invalidHandleTypes[D]=D},addInvalidHandleId:function(C){if(typeof C!=="string"){C=Ext.id(C)}this.invalidHandleIds[C]=C},addInvalidHandleClass:function(C){this.invalidHandleClasses.push(C)},removeInvalidHandleType:function(C){var D=C.toUpperCase();delete this.invalidHandleTypes[D]},removeInvalidHandleId:function(C){if(typeof C!=="string"){C=Ext.id(C)}delete this.invalidHandleIds[C]},removeInvalidHandleClass:function(D){for(var E=0,C=this.invalidHandleClasses.length;E<C;++E){if(this.invalidHandleClasses[E]==D){delete this.invalidHandleClasses[E]}}},isValidHandleChild:function(F){var E=true;var H;try{H=F.nodeName.toUpperCase()}catch(G){H=F.nodeName}E=E&&!this.invalidHandleTypes[H];E=E&&!this.invalidHandleIds[F.id];for(var D=0,C=this.invalidHandleClasses.length;E&&D<C;++D){E=!Ext.fly(F).hasClass(this.invalidHandleClasses[D])}return E},setXTicks:function(F,C){this.xTicks=[];this.xTickSize=C;var E={};for(var D=this.initPageX;D>=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true}}this.xTicks.sort(this.DDM.numericSort)},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true}}this.yTicks.sort(this.DDM.numericSort)},setXConstraint:function(E,D,C){this.leftConstraint=E;this.rightConstraint=D;this.minX=this.initPageX-E;this.maxX=this.initPageX+D;if(C){this.setXTicks(this.initPageX,C)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(C,E,D){this.topConstraint=C;this.bottomConstraint=E;this.minY=this.initPageY-C;this.maxY=this.initPageY+E;if(D){this.setYTicks(this.initPageY,D)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(I,F){if(!F){return I}else{if(F[0]>=I){return F[0]}else{for(var D=0,C=F.length;D<C;++D){var E=D+1;if(F[E]&&F[E]>=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E]}}return F[F.length-1]}}},toString:function(){return("DragDrop "+this.id)}}})();if(!Ext.dd.DragDropMgr){Ext.dd.DragDropMgr=function(){var A=Ext.EventManager;return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(D,C){for(var E in this.ids){for(var B in this.ids[E]){var F=this.ids[E][B];if(!this.isTypeOfDD(F)){continue}F[D].apply(F,C)}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true)},_onResize:function(B){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(C,B){if(!this.initialized){this.init()}if(!this.ids[B]){this.ids[B]={}}this.ids[B][C.id]=C},removeDDFromGroup:function(D,B){if(!this.ids[B]){this.ids[B]={}}var C=this.ids[B];if(C&&C[D.id]){delete C[D.id]}},_remove:function(C){for(var B in C.groups){if(B&&this.ids[B][C.id]){delete this.ids[B][C.id]}}delete this.handleIds[C.id]},regHandle:function(C,B){if(!this.handleIds[C]){this.handleIds[C]={}}this.handleIds[C][B]=B},isDragDrop:function(B){return(this.getDDById(B))?true:false},getRelated:function(F,C){var E=[];for(var D in F.groups){for(j in this.ids[D]){var B=this.ids[D][j];if(!this.isTypeOfDD(B)){continue}if(!C||B.isTarget){E[E.length]=B}}}return E},isLegalTarget:function(F,E){var C=this.getRelated(F,true);for(var D=0,B=C.length;D<B;++D){if(C[D].id==E.id){return true}}return false},isTypeOfDD:function(B){return(B&&B.__ygDragDrop)},isHandle:function(C,B){return(this.handleIds[C]&&this.handleIds[C][B])},getDDById:function(C){for(var B in this.ids){if(this.ids[B][C]){return this.ids[B][C]}}return null},handleMouseDown:function(D,C){if(Ext.QuickTips){Ext.QuickTips.disable()}this.currentTarget=D.getTarget();this.dragCurrent=C;var B=C.getEl();this.startX=D.getPageX();this.startY=D.getPageY();this.deltaX=this.startX-B.offsetLeft;this.deltaY=this.startY-B.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var E=Ext.dd.DDM;E.startDrag(E.startX,E.startY)},this.clickTimeThresh)},startDrag:function(B,C){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(B,C);this.dragCurrent.startDrag(B,C)}this.dragThreshMet=true},handleMouseUp:function(B){if(Ext.QuickTips){Ext.QuickTips.enable()}if(!this.dragCurrent){return }clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(B,true)}else{}this.stopDrag(B);this.stopEvent(B)},stopEvent:function(B){if(this.stopPropagation){B.stopPropagation()}if(this.preventDefault){B.preventDefault()}},stopDrag:function(B){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(B);this.dragCurrent.endDrag(B)}this.dragCurrent.onMouseUp(B)}this.dragCurrent=null;this.dragOvers={}},handleMouseMove:function(D){if(!this.dragCurrent){return true}if(Ext.isIE&&(D.button!==0&&D.button!==1&&D.button!==2)){this.stopEvent(D);return this.handleMouseUp(D)}if(!this.dragThreshMet){var C=Math.abs(this.startX-D.getPageX());var B=Math.abs(this.startY-D.getPageY());if(C>this.clickPixelThresh||B>this.clickPixelThresh){this.startDrag(this.startX,this.startY)}}if(this.dragThreshMet){this.dragCurrent.b4Drag(D);this.dragCurrent.onDrag(D);if(!this.dragCurrent.moveOnly){this.fireEvents(D,false)}}this.stopEvent(D);return true},fireEvents:function(K,L){var N=this.dragCurrent;if(!N||N.isLocked()){return }var O=K.getPoint();var B=[];var E=[];var I=[];var G=[];var D=[];for(var F in this.dragOvers){var C=this.dragOvers[F];if(!this.isTypeOfDD(C)){continue}if(!this.isOverTarget(O,C,this.mode)){E.push(C)}B[F]=true;delete this.dragOvers[F]}for(var M in N.groups){if("string"!=typeof M){continue}for(F in this.ids[M]){var H=this.ids[M][F];if(!this.isTypeOfDD(H)){continue}if(H.isTarget&&!H.isLocked()&&H!=N){if(this.isOverTarget(O,H,this.mode)){if(L){G.push(H)}else{if(!B[H.id]){D.push(H)}else{I.push(H)}this.dragOvers[H.id]=H}}}}}if(this.mode){if(E.length){N.b4DragOut(K,E);N.onDragOut(K,E)}if(D.length){N.onDragEnter(K,D)}if(I.length){N.b4DragOver(K,I);N.onDragOver(K,I)}if(G.length){N.b4DragDrop(K,G);N.onDragDrop(K,G)}}else{var J=0;for(F=0,J=E.length;F<J;++F){N.b4DragOut(K,E[F].id);N.onDragOut(K,E[F].id)}for(F=0,J=D.length;F<J;++F){N.onDragEnter(K,D[F].id)}for(F=0,J=I.length;F<J;++F){N.b4DragOver(K,I[F].id);N.onDragOver(K,I[F].id)}for(F=0,J=G.length;F<J;++F){N.b4DragDrop(K,G[F].id);N.onDragDrop(K,G[F].id)}}if(L&&!G.length){N.onInvalidDrop(K)}},getBestMatch:function(D){var F=null;var C=D.length;if(C==1){F=D[0]}else{for(var E=0;E<C;++E){var B=D[E];if(B.cursorIsOver){F=B;break}else{if(!F||F.overlap.getArea()<B.overlap.getArea()){F=B}}}}return F},refreshCache:function(C){for(var B in C){if("string"!=typeof B){continue}for(var D in this.ids[B]){var E=this.ids[B][D];if(this.isTypeOfDD(E)){var F=this.getLocation(E);if(F){this.locationCache[E.id]=F}else{delete this.locationCache[E.id]}}}}},verifyEl:function(C){if(C){var B;if(Ext.isIE){try{B=C.offsetParent}catch(D){}}else{B=C.offsetParent}if(B){return true}}return false},getLocation:function(G){if(!this.isTypeOfDD(G)){return null}var E=G.getEl(),J,D,C,L,K,M,B,I,F;try{J=Ext.lib.Dom.getXY(E)}catch(H){}if(!J){return null}D=J[0];C=D+E.offsetWidth;L=J[1];K=L+E.offsetHeight;M=L-G.padding[0];B=C+G.padding[1];I=K+G.padding[2];F=D-G.padding[3];return new Ext.lib.Region(M,B,I,F)},isOverTarget:function(J,B,D){var F=this.locationCache[B.id];if(!F||!this.useCache){F=this.getLocation(B);this.locationCache[B.id]=F}if(!F){return false}B.cursorIsOver=F.contains(J);var I=this.dragCurrent;if(!I||!I.getTargetCoord||(!D&&!I.constrainX&&!I.constrainY)){return B.cursorIsOver}B.overlap=null;var G=I.getTargetCoord(J.x,J.y);var C=I.getDragEl();var E=new Ext.lib.Region(G.y,G.x+C.offsetWidth,G.y+C.offsetHeight,G.x);var H=E.intersect(F);if(H){B.overlap=H;return(D)?true:B.cursorIsOver}else{return false}},_onUnload:function(C,B){Ext.dd.DragDropMgr.unregAll()},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null}this._execOnAll("unreg",[]);for(var B in this.elementCache){delete this.elementCache[B]}this.elementCache={};this.ids={}},elementCache:{},getElWrapper:function(C){var B=this.elementCache[C];if(!B||!B.el){B=this.elementCache[C]=new this.ElementWrapper(Ext.getDom(C))}return B},getElement:function(B){return Ext.getDom(B)},getCss:function(C){var B=Ext.getDom(C);return(B)?B.style:null},ElementWrapper:function(B){this.el=B||null;this.id=this.el&&B.id;this.css=this.el&&B.style},getPosX:function(B){return Ext.lib.Dom.getX(B)},getPosY:function(B){return Ext.lib.Dom.getY(B)},swapNode:function(D,B){if(D.swapNode){D.swapNode(B)}else{var E=B.parentNode;var C=B.nextSibling;if(C==D){E.insertBefore(D,B)}else{if(B==D.nextSibling){E.insertBefore(B,D)}else{D.parentNode.replaceChild(B,D);E.insertBefore(D,C)}}}},getScroll:function(){var D,B,E=document.documentElement,C=document.body;if(E&&(E.scrollTop||E.scrollLeft)){D=E.scrollTop;B=E.scrollLeft}else{if(C){D=C.scrollTop;B=C.scrollLeft}else{}}return{top:D,left:B}},getStyle:function(C,B){return Ext.fly(C).getStyle(B)},getScrollTop:function(){return this.getScroll().top},getScrollLeft:function(){return this.getScroll().left},moveToEl:function(B,D){var C=Ext.lib.Dom.getXY(D);Ext.lib.Dom.setXY(B,C)},numericSort:function(C,B){return(C-B)},_timeoutCount:0,_addListeners:function(){var B=Ext.dd.DDM;if(Ext.lib.Event&&document){B._onLoad()}else{if(B._timeoutCount>2000){}else{setTimeout(B._addListeners,10);if(document&&document.body){B._timeoutCount+=1}}}},handleWasClicked:function(B,D){if(this.isHandle(D,B.id)){return true}else{var C=B.parentNode;while(C){if(this.isHandle(D,C.id)){return true}else{C=C.parentNode}}}return false}}}();Ext.dd.DDM=Ext.dd.DragDropMgr;Ext.dd.DDM._addListeners()}Ext.dd.DD=function(C,A,B){if(C){this.init(C,A,B)}};Ext.extend(Ext.dd.DD,Ext.dd.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D)},setDelta:function(B,A){this.deltaX=B;this.deltaY=A},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B)},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);var B=C.dom?C:Ext.fly(C,"_dd");if(!this.deltaSetXY){var H=[E.x,E.y];B.setXY(H);var D=B.getLeft(true);var A=B.getTop(true);this.deltaSetXY=[D-E.x,A-E.y]}else{B.setLeftTop(E.x+this.deltaSetXY[0],E.y+this.deltaSetXY[1])}this.cachePosition(E.x,E.y);this.autoScroll(E.x,E.y,C.offsetHeight,C.offsetWidth);return E},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A}else{var C=Ext.lib.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1]}},autoScroll:function(J,I,E,K){if(this.scroll){var L=Ext.lib.Dom.getViewHeight();var B=Ext.lib.Dom.getViewWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A)}if(I<N&&N>0&&I-N<C){window.scrollTo(D,N-A)}if(M>B&&F<C){window.scrollTo(D+A,N)}if(J<D&&D>0&&J-D<C){window.scrollTo(D-A,N)}}},getTargetCoord:function(C,B){var A=C-this.deltaX;var D=B-this.deltaY;if(this.constrainX){if(A<this.minX){A=this.minX}if(A>this.maxX){A=this.maxX}}if(this.constrainY){if(D<this.minY){D=this.minY}if(D>this.maxY){D=this.maxY}}A=this.getTick(A,this.xTicks);D=this.getTick(D,this.yTicks);return{x:A,y:D}},applyConfig:function(){Ext.dd.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false)},b4MouseDown:function(A){this.autoOffset(A.getPageX(),A.getPageY())},b4Drag:function(A){this.setDragElPos(A.getPageX(),A.getPageY())},toString:function(){return("DD "+this.id)}});Ext.dd.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame()}};Ext.dd.DDProxy.dragElId="ygddfdiv";Ext.extend(Ext.dd.DDProxy,Ext.dd.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this;var A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame()},50);return }var D=this.getDragEl();if(!D){D=document.createElement("div");D.id=this.dragElId;var C=D.style;C.position="absolute";C.visibility="hidden";C.cursor="move";C.border="2px solid #aaa";C.zIndex=999;A.insertBefore(D,A.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){Ext.dd.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2))}this.setDragElPos(E,D);Ext.fly(A).show()},_resizeProxy:function(){if(this.resizeFrame){var A=this.getEl();Ext.fly(this.getDragEl()).setSize(A.offsetWidth,A.offsetHeight)}},b4MouseDown:function(B){var A=B.getPageX();var C=B.getPageY();this.autoOffset(A,C);this.setDragElPos(A,C)},b4StartDrag:function(A,B){this.showFrame(A,B)},b4EndDrag:function(A){Ext.fly(this.getDragEl()).hide()},endDrag:function(C){var B=this.getEl();var A=this.getDragEl();A.style.visibility="";this.beforeMove();B.style.visibility="hidden";Ext.dd.DDM.moveToEl(B,A);A.style.visibility="hidden";B.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}});Ext.dd.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B)}};Ext.extend(Ext.dd.DDTarget,Ext.dd.DragDrop,{toString:function(){return("DDTarget "+this.id)}});
+Ext.dd.DragTracker=function(A){Ext.apply(this,A);this.addEvents("mousedown","mouseup","mousemove","dragstart","dragend","drag");this.dragRegion=new Ext.lib.Region(0,0,0,0);if(this.el){this.initEl(this.el)}};Ext.extend(Ext.dd.DragTracker,Ext.util.Observable,{active:false,tolerance:5,autoStart:false,initEl:function(A){this.el=Ext.get(A);A.on("mousedown",this.onMouseDown,this,this.delegate?{delegate:this.delegate}:undefined)},destroy:function(){this.el.un("mousedown",this.onMouseDown,this)},onMouseDown:function(C,B){if(this.fireEvent("mousedown",this,C)!==false&&this.onBeforeStart(C)!==false){this.startXY=this.lastXY=C.getXY();this.dragTarget=this.delegate?B:this.el.dom;C.preventDefault();var A=Ext.getDoc();A.on("mouseup",this.onMouseUp,this);A.on("mousemove",this.onMouseMove,this);A.on("selectstart",this.stopSelect,this);if(this.autoStart){this.timer=this.triggerStart.defer(this.autoStart===true?1000:this.autoStart,this)}}},onMouseMove:function(D,C){D.preventDefault();var B=D.getXY(),A=this.startXY;this.lastXY=B;if(!this.active){if(Math.abs(A[0]-B[0])>this.tolerance||Math.abs(A[1]-B[1])>this.tolerance){this.triggerStart()}else{return }}this.fireEvent("mousemove",this,D);this.onDrag(D);this.fireEvent("drag",this,D)},onMouseUp:function(B){var A=Ext.getDoc();A.un("mousemove",this.onMouseMove,this);A.un("mouseup",this.onMouseUp,this);A.un("selectstart",this.stopSelect,this);B.preventDefault();this.clearStart();this.active=false;delete this.elRegion;this.fireEvent("mouseup",this,B);this.onEnd(B);this.fireEvent("dragend",this,B)},triggerStart:function(A){this.clearStart();this.active=true;this.onStart(this.startXY);this.fireEvent("dragstart",this,this.startXY)},clearStart:function(){if(this.timer){clearTimeout(this.timer);delete this.timer}},stopSelect:function(A){A.stopEvent();return false},onBeforeStart:function(A){},onStart:function(A){},onDrag:function(A){},onEnd:function(A){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getXY:function(A){return A?this.constrainModes[A].call(this,this.lastXY):this.lastXY},getOffset:function(C){var B=this.getXY(C);var A=this.startXY;return[A[0]-B[0],A[1]-B[1]]},constrainModes:{"point":function(B){if(!this.elRegion){this.elRegion=this.getDragCt().getRegion()}var A=this.dragRegion;A.left=B[0];A.top=B[1];A.right=B[0];A.bottom=B[1];A.constrainTo(this.elRegion);return[A.left,A.top]}}});
+Ext.dd.ScrollManager=function(){var C=Ext.dd.DragDropMgr;var E={};var B=null;var H={};var G=function(K){B=null;A()};var I=function(){if(C.dragCurrent){C.refreshCache(C.dragCurrent.groups)}};var D=function(){if(C.dragCurrent){var K=Ext.dd.ScrollManager;var L=H.el.ddScrollConfig?H.el.ddScrollConfig.increment:K.increment;if(!K.animate){if(H.el.scroll(H.dir,L)){I()}}else{H.el.scroll(H.dir,L,true,K.animDuration,I)}}};var A=function(){if(H.id){clearInterval(H.id)}H.id=0;H.el=null;H.dir=""};var F=function(L,K){A();H.el=L;H.dir=K;var M=(L.ddScrollConfig&&L.ddScrollConfig.frequency)?L.ddScrollConfig.frequency:Ext.dd.ScrollManager.frequency;H.id=setInterval(D,M)};var J=function(N,P){if(P||!C.dragCurrent){return }var Q=Ext.dd.ScrollManager;if(!B||B!=C.dragCurrent){B=C.dragCurrent;Q.refreshCache()}var R=Ext.lib.Event.getXY(N);var S=new Ext.lib.Point(R[0],R[1]);for(var L in E){var M=E[L],K=M._region;var O=M.ddScrollConfig?M.ddScrollConfig:Q;if(K&&K.contains(S)&&M.isScrollable()){if(K.bottom-S.y<=O.vthresh){if(H.el!=M){F(M,"down")}return }else{if(K.right-S.x<=O.hthresh){if(H.el!=M){F(M,"left")}return }else{if(S.y-K.top<=O.vthresh){if(H.el!=M){F(M,"up")}return }else{if(S.x-K.left<=O.hthresh){if(H.el!=M){F(M,"right")}return }}}}}}A()};C.fireEvents=C.fireEvents.createSequence(J,C);C.stopDrag=C.stopDrag.createSequence(G,C);return{register:function(M){if(Ext.isArray(M)){for(var L=0,K=M.length;L<K;L++){this.register(M[L])}}else{M=Ext.get(M);E[M.id]=M}},unregister:function(M){if(Ext.isArray(M)){for(var L=0,K=M.length;L<K;L++){this.unregister(M[L])}}else{M=Ext.get(M);delete E[M.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,refreshCache:function(){for(var K in E){if(typeof E[K]=="object"){E[K]._region=E[K].getRegion()}}}}}();
+Ext.dd.Registry=function(){var D={};var B={};var A=0;var C=function(F,E){if(typeof F=="string"){return F}var G=F.id;if(!G&&E!==false){G="extdd-"+(++A);F.id=G}return G};return{register:function(H,I){I=I||{};if(typeof H=="string"){H=document.getElementById(H)}I.ddel=H;D[C(H)]=I;if(I.isHandle!==false){B[I.ddel.id]=I}if(I.handles){var G=I.handles;for(var F=0,E=G.length;F<E;F++){B[C(G[F])]=I}}},unregister:function(H){var J=C(H,false);var I=D[J];if(I){delete D[J];if(I.handles){var G=I.handles;for(var F=0,E=G.length;F<E;F++){delete B[C(G[F],false)]}}}},getHandle:function(E){if(typeof E!="string"){E=E.id}return B[E]},getHandleFromEvent:function(F){var E=Ext.lib.Event.getTarget(F);return E?B[E.id]:null},getTarget:function(E){if(typeof E!="string"){E=E.id}return D[E]},getTargetFromEvent:function(F){var E=Ext.lib.Event.getTarget(F);return E?D[E.id]||B[E.id]:null}}}();
+Ext.dd.StatusProxy=function(A){Ext.apply(this,A);this.id=this.id||Ext.id();this.el=new Ext.Layer({dh:{id:this.id,tag:"div",cls:"x-dd-drag-proxy "+this.dropNotAllowed,children:[{tag:"div",cls:"x-dd-drop-icon"},{tag:"div",cls:"x-dd-drag-ghost"}]},shadow:!A||A.shadow!==false});this.ghost=Ext.get(this.el.dom.childNodes[1]);this.dropStatus=this.dropNotAllowed};Ext.dd.StatusProxy.prototype={dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",setStatus:function(A){A=A||this.dropNotAllowed;if(this.dropStatus!=A){this.el.replaceClass(this.dropStatus,A);this.dropStatus=A}},reset:function(A){this.el.dom.className="x-dd-drag-proxy "+this.dropNotAllowed;this.dropStatus=this.dropNotAllowed;if(A){this.ghost.update("")}},update:function(A){if(typeof A=="string"){this.ghost.update(A)}else{this.ghost.update("");A.style.margin="0";this.ghost.dom.appendChild(A)}var B=this.ghost.dom.firstChild;if(B){Ext.fly(B).setStyle(Ext.isIE?"styleFloat":"cssFloat","none")}},getEl:function(){return this.el},getGhost:function(){return this.ghost},hide:function(A){this.el.hide();if(A){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},show:function(){this.el.show()},sync:function(){this.el.sync()},repair:function(B,C,A){this.callback=C;this.scope=A;if(B&&this.animRepair!==false){this.el.addClass("x-dd-drag-repair");this.el.hideUnders(true);this.anim=this.el.shift({duration:this.repairDuration||0.5,easing:"easeOut",xy:B,stopFx:true,callback:this.afterRepair,scope:this})}else{this.afterRepair()}},afterRepair:function(){this.hide(true);if(typeof this.callback=="function"){this.callback.call(this.scope||this)}this.callback=null;this.scope=null}};
+Ext.dd.DragSource=function(B,A){this.el=Ext.get(B);if(!this.dragData){this.dragData={}}Ext.apply(this,A);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy()}Ext.dd.DragSource.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true});this.dragging=false};Ext.extend(Ext.dd.DragSource,Ext.dd.DDProxy,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",getDragData:function(A){return this.dragData},onDragEnter:function(C,D){var B=Ext.dd.DragDropMgr.getDDById(D);this.cachedTarget=B;if(this.beforeDragEnter(B,C,D)!==false){if(B.isNotifyTarget){var A=B.notifyEnter(this,C,this.dragData);this.proxy.setStatus(A)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(B,C,D)}}},beforeDragEnter:function(B,A,C){return true},alignElWithMouse:function(){Ext.dd.DragSource.superclass.alignElWithMouse.apply(this,arguments);this.proxy.sync()},onDragOver:function(C,D){var B=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(D);if(this.beforeDragOver(B,C,D)!==false){if(B.isNotifyTarget){var A=B.notifyOver(this,C,this.dragData);this.proxy.setStatus(A)}if(this.afterDragOver){this.afterDragOver(B,C,D)}}},beforeDragOver:function(B,A,C){return true},onDragOut:function(B,C){var A=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(C);if(this.beforeDragOut(A,B,C)!==false){if(A.isNotifyTarget){A.notifyOut(this,B,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(A,B,C)}}this.cachedTarget=null},beforeDragOut:function(B,A,C){return true},onDragDrop:function(B,C){var A=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(C);if(this.beforeDragDrop(A,B,C)!==false){if(A.isNotifyTarget){if(A.notifyDrop(this,B,this.dragData)){this.onValidDrop(A,B,C)}else{this.onInvalidDrop(A,B,C)}}else{this.onValidDrop(A,B,C)}if(this.afterDragDrop){this.afterDragDrop(A,B,C)}}delete this.cachedTarget},beforeDragDrop:function(B,A,C){return true},onValidDrop:function(B,A,C){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(B,A,C)}},getRepairXY:function(B,A){return this.el.getXY()},onInvalidDrop:function(B,A,C){this.beforeInvalidDrop(B,A,C);if(this.cachedTarget){if(this.cachedTarget.isNotifyTarget){this.cachedTarget.notifyOut(this,A,this.dragData)}this.cacheTarget=null}this.proxy.repair(this.getRepairXY(A,this.dragData),this.afterRepair,this);if(this.afterInvalidDrop){this.afterInvalidDrop(A,C)}},afterRepair:function(){if(Ext.enableFx){this.el.highlight(this.hlColor||"c3daf9")}this.dragging=false},beforeInvalidDrop:function(B,A,C){return true},handleMouseDown:function(B){if(this.dragging){return }var A=this.getDragData(B);if(A&&this.onBeforeDrag(A,B)!==false){this.dragData=A;this.proxy.stop();Ext.dd.DragSource.superclass.handleMouseDown.apply(this,arguments)}},onBeforeDrag:function(A,B){return true},onStartDrag:Ext.emptyFn,startDrag:function(A,B){this.proxy.reset();this.dragging=true;this.proxy.update("");this.onInitDrag(A,B);this.proxy.show()},onInitDrag:function(A,C){var B=this.el.dom.cloneNode(true);B.id=Ext.id();this.proxy.update(B);this.onStartDrag(A,C);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(A){},endDrag:function(A){this.onEndDrag(this.dragData,A)},onEndDrag:function(A,B){},autoOffset:function(A,B){this.setDelta(-12,-20)}});
+Ext.dd.DropTarget=function(B,A){this.el=Ext.get(B);Ext.apply(this,A);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}Ext.dd.DropTarget.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{isTarget:true})};Ext.extend(Ext.dd.DropTarget,Ext.dd.DDTarget,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(A,C,B){if(this.overClass){this.el.addClass(this.overClass)}return this.dropAllowed},notifyOver:function(A,C,B){return this.dropAllowed},notifyOut:function(A,C,B){if(this.overClass){this.el.removeClass(this.overClass)}},notifyDrop:function(A,C,B){return false}});
+Ext.dd.DragZone=function(B,A){Ext.dd.DragZone.superclass.constructor.call(this,B,A);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}};Ext.extend(Ext.dd.DragZone,Ext.dd.DragSource,{getDragData:function(A){return Ext.dd.Registry.getHandleFromEvent(A)},onInitDrag:function(A,B){this.proxy.update(this.dragData.ddel.cloneNode(true));this.onStartDrag(A,B);return true},afterRepair:function(){if(Ext.enableFx){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")}this.dragging=false},getRepairXY:function(A){return Ext.Element.fly(this.dragData.ddel).getXY()}});
+Ext.dd.DropZone=function(B,A){Ext.dd.DropZone.superclass.constructor.call(this,B,A)};Ext.extend(Ext.dd.DropZone,Ext.dd.DropTarget,{getTargetFromEvent:function(A){return Ext.dd.Registry.getTargetFromEvent(A)},onNodeEnter:function(D,A,C,B){},onNodeOver:function(D,A,C,B){return this.dropAllowed},onNodeOut:function(D,A,C,B){},onNodeDrop:function(D,A,C,B){return false},onContainerOver:function(A,C,B){return this.dropNotAllowed},onContainerDrop:function(A,C,B){return false},notifyEnter:function(A,C,B){return this.dropNotAllowed},notifyOver:function(A,C,B){var D=this.getTargetFromEvent(C);if(!D){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,A,C,B);this.lastOverNode=null}return this.onContainerOver(A,C,B)}if(this.lastOverNode!=D){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,A,C,B)}this.onNodeEnter(D,A,C,B);this.lastOverNode=D}return this.onNodeOver(D,A,C,B)},notifyOut:function(A,C,B){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,A,C,B);this.lastOverNode=null}},notifyDrop:function(A,C,B){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,A,C,B);this.lastOverNode=null}var D=this.getTargetFromEvent(C);return D?this.onNodeDrop(D,A,C,B):this.onContainerDrop(A,C,B)},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)}});
+Ext.data.SortTypes={none:function(A){return A},stripTagsRE:/<\/?[^>]+>/gi,asText:function(A){return String(A).replace(this.stripTagsRE,"")},asUCText:function(A){return String(A).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(A){return String(A).toUpperCase()},asDate:function(A){if(!A){return 0}if(Ext.isDate(A)){return A.getTime()}return Date.parse(String(A))},asFloat:function(A){var B=parseFloat(String(A).replace(/,/g,""));if(isNaN(B)){B=0}return B},asInt:function(A){var B=parseInt(String(A).replace(/,/g,""));if(isNaN(B)){B=0}return B}};
+Ext.data.Record=function(A,B){this.id=(B||B===0)?B:++Ext.data.Record.AUTO_ID;this.data=A};Ext.data.Record.create=function(E){var C=Ext.extend(Ext.data.Record,{});var D=C.prototype;D.fields=new Ext.util.MixedCollection(false,function(F){return F.name});for(var B=0,A=E.length;B<A;B++){D.fields.add(new Ext.data.Field(E[B]))}C.getField=function(F){return D.fields.get(F)};return C};Ext.data.Record.AUTO_ID=1000;Ext.data.Record.EDIT="edit";Ext.data.Record.REJECT="reject";Ext.data.Record.COMMIT="commit";Ext.data.Record.prototype={dirty:false,editing:false,error:null,modified:null,join:function(A){this.store=A},set:function(A,B){if(String(this.data[A])==String(B)){return }this.dirty=true;if(!this.modified){this.modified={}}if(typeof this.modified[A]=="undefined"){this.modified[A]=this.data[A]}this.data[A]=B;if(!this.editing&&this.store){this.store.afterEdit(this)}},get:function(A){return this.data[A]},beginEdit:function(){this.editing=true;this.modified={}},cancelEdit:function(){this.editing=false;delete this.modified},endEdit:function(){this.editing=false;if(this.dirty&&this.store){this.store.afterEdit(this)}},reject:function(B){var A=this.modified;for(var C in A){if(typeof A[C]!="function"){this.data[C]=A[C]}}this.dirty=false;delete this.modified;this.editing=false;if(this.store&&B!==true){this.store.afterReject(this)}},commit:function(A){this.dirty=false;delete this.modified;this.editing=false;if(this.store&&A!==true){this.store.afterCommit(this)}},getChanges:function(){var A=this.modified,B={};for(var C in A){if(A.hasOwnProperty(C)){B[C]=this.data[C]}}return B},hasError:function(){return this.error!=null},clearError:function(){this.error=null},copy:function(A){return new this.constructor(Ext.apply({},this.data),A||this.id)},isModified:function(A){return !!(this.modified&&this.modified.hasOwnProperty(A))}};
+Ext.StoreMgr=Ext.apply(new Ext.util.MixedCollection(),{register:function(){for(var A=0,B;B=arguments[A];A++){this.add(B)}},unregister:function(){for(var A=0,B;B=arguments[A];A++){this.remove(this.lookup(B))}},lookup:function(A){return typeof A=="object"?A:this.get(A)},getKey:function(A){return A.storeId||A.id}});
+Ext.data.Store=function(A){this.data=new Ext.util.MixedCollection(false);this.data.getKey=function(B){return B.id};this.baseParams={};this.paramNames={"start":"start","limit":"limit","sort":"sort","dir":"dir"};if(A&&A.data){this.inlineData=A.data;delete A.data}Ext.apply(this,A);if(this.url&&!this.proxy){this.proxy=new Ext.data.HttpProxy({url:this.url})}if(this.reader){if(!this.recordType){this.recordType=this.reader.recordType}if(this.reader.onMetaChange){this.reader.onMetaChange=this.onMetaChange.createDelegate(this)}}if(this.recordType){this.fields=this.recordType.prototype.fields}this.modified=[];this.addEvents("datachanged","metachange","add","remove","update","clear","beforeload","load","loadexception");if(this.proxy){this.relayEvents(this.proxy,["loadexception"])}this.sortToggle={};if(this.sortInfo){this.setDefaultSort(this.sortInfo.field,this.sortInfo.direction)}Ext.data.Store.superclass.constructor.call(this);if(this.storeId||this.id){Ext.StoreMgr.register(this)}if(this.inlineData){this.loadData(this.inlineData);delete this.inlineData}else{if(this.autoLoad){this.load.defer(10,this,[typeof this.autoLoad=="object"?this.autoLoad:undefined])}}};Ext.extend(Ext.data.Store,Ext.util.Observable,{remoteSort:false,pruneModifiedRecords:false,lastOptions:null,destroy:function(){if(this.id){Ext.StoreMgr.unregister(this)}this.data=null;this.purgeListeners()},add:function(B){B=[].concat(B);if(B.length<1){return }for(var D=0,A=B.length;D<A;D++){B[D].join(this)}var C=this.data.length;this.data.addAll(B);if(this.snapshot){this.snapshot.addAll(B)}this.fireEvent("add",this,B,C)},addSorted:function(A){var B=this.findInsertIndex(A);this.insert(B,A)},remove:function(A){var B=this.data.indexOf(A);this.data.removeAt(B);if(this.pruneModifiedRecords){this.modified.remove(A)}if(this.snapshot){this.snapshot.remove(A)}this.fireEvent("remove",this,A,B)},removeAll:function(){this.data.clear();if(this.snapshot){this.snapshot.clear()}if(this.pruneModifiedRecords){this.modified=[]}this.fireEvent("clear",this)},insert:function(C,B){B=[].concat(B);for(var D=0,A=B.length;D<A;D++){this.data.insert(C,B[D]);B[D].join(this)}this.fireEvent("add",this,B,C)},indexOf:function(A){return this.data.indexOf(A)},indexOfId:function(A){return this.data.indexOfKey(A)},getById:function(A){return this.data.key(A)},getAt:function(A){return this.data.itemAt(A)},getRange:function(B,A){return this.data.getRange(B,A)},storeOptions:function(A){A=Ext.apply({},A);delete A.callback;delete A.scope;this.lastOptions=A},load:function(B){B=B||{};if(this.fireEvent("beforeload",this,B)!==false){this.storeOptions(B);var C=Ext.apply(B.params||{},this.baseParams);if(this.sortInfo&&this.remoteSort){var A=this.paramNames;C[A["sort"]]=this.sortInfo.field;C[A["dir"]]=this.sortInfo.direction}this.proxy.load(C,this.reader,this.loadRecords,this,B);return true}else{return false}},reload:function(A){this.load(Ext.applyIf(A||{},this.lastOptions))},loadRecords:function(G,B,F){if(!G||F===false){if(F!==false){this.fireEvent("load",this,[],B)}if(B.callback){B.callback.call(B.scope||this,[],B,false)}return }var E=G.records,D=G.totalRecords||E.length;if(!B||B.add!==true){if(this.pruneModifiedRecords){this.modified=[]}for(var C=0,A=E.length;C<A;C++){E[C].join(this)}if(this.snapshot){this.data=this.snapshot;delete this.snapshot}this.data.clear();this.data.addAll(E);this.totalLength=D;this.applySort();this.fireEvent("datachanged",this)}else{this.totalLength=Math.max(D,this.data.length+E.length);this.add(E)}this.fireEvent("load",this,E,B);if(B.callback){B.callback.call(B.scope||this,E,B,true)}},loadData:function(C,A){var B=this.reader.readRecords(C);this.loadRecords(B,{add:A},true)},getCount:function(){return this.data.length||0},getTotalCount:function(){return this.totalLength||0},getSortState:function(){return this.sortInfo},applySort:function(){if(this.sortInfo&&!this.remoteSort){var A=this.sortInfo,B=A.field;this.sortData(B,A.direction)}},sortData:function(C,D){D=D||"ASC";var A=this.fields.get(C).sortType;var B=function(F,E){var H=A(F.data[C]),G=A(E.data[C]);return H>G?1:(H<G?-1:0)};this.data.sort(D,B);if(this.snapshot&&this.snapshot!=this.data){this.snapshot.sort(D,B)}},setDefaultSort:function(B,A){A=A?A.toUpperCase():"ASC";this.sortInfo={field:B,direction:A};this.sortToggle[B]=A},sort:function(E,C){var D=this.fields.get(E);if(!D){return false}if(!C){if(this.sortInfo&&this.sortInfo.field==D.name){C=(this.sortToggle[D.name]||"ASC").toggle("ASC","DESC")}else{C=D.sortDir}}var B=(this.sortToggle)?this.sortToggle[D.name]:null;var A=(this.sortInfo)?this.sortInfo:null;this.sortToggle[D.name]=C;this.sortInfo={field:D.name,direction:C};if(!this.remoteSort){this.applySort();this.fireEvent("datachanged",this)}else{if(!this.load(this.lastOptions)){if(B){this.sortToggle[D.name]=B}if(A){this.sortInfo=A}}}},each:function(B,A){this.data.each(B,A)},getModifiedRecords:function(){return this.modified},createFilterFn:function(C,B,D,A){if(Ext.isEmpty(B,false)){return false}B=this.data.createValueMatcher(B,D,A);return function(E){return B.test(E.data[C])}},sum:function(E,F,A){var C=this.data.items,B=0;F=F||0;A=(A||A===0)?A:C.length-1;for(var D=F;D<=A;D++){B+=(C[D].data[E]||0)}return B},filter:function(D,C,E,A){var B=this.createFilterFn(D,C,E,A);return B?this.filterBy(B):this.clearFilter()},filterBy:function(B,A){this.snapshot=this.snapshot||this.data;this.data=this.queryBy(B,A||this);this.fireEvent("datachanged",this)},query:function(D,C,E,A){var B=this.createFilterFn(D,C,E,A);return B?this.queryBy(B):this.data.clone()},queryBy:function(B,A){var C=this.snapshot||this.data;return C.filterBy(B,A||this)},find:function(D,C,F,E,A){var B=this.createFilterFn(D,C,E,A);return B?this.data.findIndexBy(B,null,F):-1},findBy:function(B,A,C){return this.data.findIndexBy(B,A,C)},collect:function(G,H,B){var F=(B===true&&this.snapshot)?this.snapshot.items:this.data.items;var I,J,A=[],C={};for(var D=0,E=F.length;D<E;D++){I=F[D].data[G];J=String(I);if((H||!Ext.isEmpty(I))&&!C[J]){C[J]=true;A[A.length]=I}}return A},clearFilter:function(A){if(this.isFiltered()){this.data=this.snapshot;delete this.snapshot;if(A!==true){this.fireEvent("datachanged",this)}}},isFiltered:function(){return this.snapshot&&this.snapshot!=this.data},afterEdit:function(A){if(this.modified.indexOf(A)==-1){this.modified.push(A)}this.fireEvent("update",this,A,Ext.data.Record.EDIT)},afterReject:function(A){this.modified.remove(A);this.fireEvent("update",this,A,Ext.data.Record.REJECT)},afterCommit:function(A){this.modified.remove(A);this.fireEvent("update",this,A,Ext.data.Record.COMMIT)},commitChanges:function(){var B=this.modified.slice(0);this.modified=[];for(var C=0,A=B.length;C<A;C++){B[C].commit()}},rejectChanges:function(){var B=this.modified.slice(0);this.modified=[];for(var C=0,A=B.length;C<A;C++){B[C].reject()}},onMetaChange:function(B,A,C){this.recordType=A;this.fields=A.prototype.fields;delete this.snapshot;this.sortInfo=B.sortInfo;this.modified=[];this.fireEvent("metachange",this,this.reader.meta)},findInsertIndex:function(A){this.suspendEvents();var C=this.data.clone();this.data.add(A);this.applySort();var B=this.data.indexOf(A);this.data=C;this.resumeEvents();return B}});
+Ext.data.SimpleStore=function(A){Ext.data.SimpleStore.superclass.constructor.call(this,Ext.apply(A,{reader:new Ext.data.ArrayReader({id:A.id},Ext.data.Record.create(A.fields))}))};Ext.extend(Ext.data.SimpleStore,Ext.data.Store,{loadData:function(E,B){if(this.expandData===true){var D=[];for(var C=0,A=E.length;C<A;C++){D[D.length]=[E[C]]}E=D}Ext.data.SimpleStore.superclass.loadData.call(this,E,B)}});
+Ext.data.JsonStore=function(A){Ext.data.JsonStore.superclass.constructor.call(this,Ext.apply(A,{proxy:A.proxy||(!A.data?new Ext.data.HttpProxy({url:A.url}):undefined),reader:new Ext.data.JsonReader(A,A.fields)}))};Ext.extend(Ext.data.JsonStore,Ext.data.Store);
+Ext.data.Field=function(D){if(typeof D=="string"){D={name:D}}Ext.apply(this,D);if(!this.type){this.type="auto"}var C=Ext.data.SortTypes;if(typeof this.sortType=="string"){this.sortType=C[this.sortType]}if(!this.sortType){switch(this.type){case"string":this.sortType=C.asUCString;break;case"date":this.sortType=C.asDate;break;default:this.sortType=C.none}}var E=/[\$,%]/g;if(!this.convert){var B,A=this.dateFormat;switch(this.type){case"":case"auto":case undefined:B=function(F){return F};break;case"string":B=function(F){return(F===undefined||F===null)?"":String(F)};break;case"int":B=function(F){return F!==undefined&&F!==null&&F!==""?parseInt(String(F).replace(E,""),10):""};break;case"float":B=function(F){return F!==undefined&&F!==null&&F!==""?parseFloat(String(F).replace(E,""),10):""};break;case"bool":case"boolean":B=function(F){return F===true||F==="true"||F==1};break;case"date":B=function(G){if(!G){return""}if(Ext.isDate(G)){return G}if(A){if(A=="timestamp"){return new Date(G*1000)}if(A=="time"){return new Date(parseInt(G,10))}return Date.parseDate(G,A)}var F=Date.parse(G);return F?new Date(F):null};break}this.convert=B}};Ext.data.Field.prototype={dateFormat:null,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC"};
+Ext.data.DataReader=function(A,B){this.meta=A;this.recordType=Ext.isArray(B)?Ext.data.Record.create(B):B};Ext.data.DataReader.prototype={};
+Ext.data.DataProxy=function(){this.addEvents("beforeload","load");Ext.data.DataProxy.superclass.constructor.call(this)};Ext.extend(Ext.data.DataProxy,Ext.util.Observable);
+Ext.data.MemoryProxy=function(A){Ext.data.MemoryProxy.superclass.constructor.call(this);this.data=A};Ext.extend(Ext.data.MemoryProxy,Ext.data.DataProxy,{load:function(F,C,G,D,B){F=F||{};var A;try{A=C.readRecords(this.data)}catch(E){this.fireEvent("loadexception",this,B,null,E);G.call(D,null,B,false);return }G.call(D,A,B,true)},update:function(B,A){}});
+Ext.data.HttpProxy=function(A){Ext.data.HttpProxy.superclass.constructor.call(this);this.conn=A;this.useAjax=!A||!A.events};Ext.extend(Ext.data.HttpProxy,Ext.data.DataProxy,{getConnection:function(){return this.useAjax?Ext.Ajax:this.conn},load:function(E,B,F,C,A){if(this.fireEvent("beforeload",this,E)!==false){var D={params:E||{},request:{callback:F,scope:C,arg:A},reader:B,callback:this.loadResponse,scope:this};if(this.useAjax){Ext.applyIf(D,this.conn);if(this.activeRequest){Ext.Ajax.abort(this.activeRequest)}this.activeRequest=Ext.Ajax.request(D)}else{this.conn.request(D)}}else{F.call(C||this,null,A,false)}},loadResponse:function(E,D,B){delete this.activeRequest;if(!D){this.fireEvent("loadexception",this,E,B);E.request.callback.call(E.request.scope,null,E.request.arg,false);return }var A;try{A=E.reader.read(B)}catch(C){this.fireEvent("loadexception",this,E,B,C);E.request.callback.call(E.request.scope,null,E.request.arg,false);return }this.fireEvent("load",this,E,E.request.arg);E.request.callback.call(E.request.scope,A,E.request.arg,true)},update:function(A){},updateResponse:function(A){}});
+Ext.data.ScriptTagProxy=function(A){Ext.data.ScriptTagProxy.superclass.constructor.call(this);Ext.apply(this,A);this.head=document.getElementsByTagName("head")[0]};Ext.data.ScriptTagProxy.TRANS_ID=1000;Ext.extend(Ext.data.ScriptTagProxy,Ext.data.DataProxy,{timeout:30000,callbackParam:"callback",nocache:true,load:function(E,F,H,I,J){if(this.fireEvent("beforeload",this,E)!==false){var C=Ext.urlEncode(Ext.apply(E,this.extraParams));var B=this.url;B+=(B.indexOf("?")!=-1?"&":"?")+C;if(this.nocache){B+="&_dc="+(new Date().getTime())}var A=++Ext.data.ScriptTagProxy.TRANS_ID;var K={id:A,cb:"stcCallback"+A,scriptId:"stcScript"+A,params:E,arg:J,url:B,callback:H,scope:I,reader:F};var D=this;window[K.cb]=function(L){D.handleResponse(L,K)};B+=String.format("&{0}={1}",this.callbackParam,K.cb);if(this.autoAbort!==false){this.abort()}K.timeoutId=this.handleFailure.defer(this.timeout,this,[K]);var G=document.createElement("script");G.setAttribute("src",B);G.setAttribute("type","text/javascript");G.setAttribute("id",K.scriptId);this.head.appendChild(G);this.trans=K}else{H.call(I||this,null,J,false)}},isLoading:function(){return this.trans?true:false},abort:function(){if(this.isLoading()){this.destroyTrans(this.trans)}},destroyTrans:function(B,A){this.head.removeChild(document.getElementById(B.scriptId));clearTimeout(B.timeoutId);if(A){window[B.cb]=undefined;try{delete window[B.cb]}catch(C){}}else{window[B.cb]=function(){window[B.cb]=undefined;try{delete window[B.cb]}catch(D){}}}},handleResponse:function(D,B){this.trans=false;this.destroyTrans(B,true);var A;try{A=B.reader.readRecords(D)}catch(C){this.fireEvent("loadexception",this,D,B.arg,C);B.callback.call(B.scope||window,null,B.arg,false);return }this.fireEvent("load",this,D,B.arg);B.callback.call(B.scope||window,A,B.arg,true)},handleFailure:function(A){this.trans=false;this.destroyTrans(A,false);this.fireEvent("loadexception",this,null,A.arg);A.callback.call(A.scope||window,null,A.arg,false)}});
+Ext.data.JsonReader=function(A,B){A=A||{};Ext.data.JsonReader.superclass.constructor.call(this,A,B||A.fields)};Ext.extend(Ext.data.JsonReader,Ext.data.DataReader,{read:function(response){var json=response.responseText;var o=eval("("+json+")");if(!o){throw {message:"JsonReader.read: Json object not found"}}return this.readRecords(o)},onMetaChange:function(A,C,B){},simpleAccess:function(B,A){return B[A]},getJsonAccessor:function(){var A=/[\[\.]/;return function(C){try{return(A.test(C))?new Function("obj","return obj."+C):function(D){return D[C]}}catch(B){}return Ext.emptyFn}}(),readRecords:function(K){this.jsonData=K;if(K.metaData){delete this.ef;this.meta=K.metaData;this.recordType=Ext.data.Record.create(K.metaData.fields);this.onMetaChange(this.meta,this.recordType,K)}var H=this.meta,A=this.recordType,R=A.prototype.fields,F=R.items,E=R.length;if(!this.ef){if(H.totalProperty){this.getTotal=this.getJsonAccessor(H.totalProperty)}if(H.successProperty){this.getSuccess=this.getJsonAccessor(H.successProperty)}this.getRoot=H.root?this.getJsonAccessor(H.root):function(U){return U};if(H.id){var Q=this.getJsonAccessor(H.id);this.getId=function(V){var U=Q(V);return(U===undefined||U==="")?null:U}}else{this.getId=function(){return null}}this.ef=[];for(var O=0;O<E;O++){R=F[O];var T=(R.mapping!==undefined&&R.mapping!==null)?R.mapping:R.name;this.ef[O]=this.getJsonAccessor(T)}}var M=this.getRoot(K),S=M.length,I=S,D=true;if(H.totalProperty){var G=parseInt(this.getTotal(K),10);if(!isNaN(G)){I=G}}if(H.successProperty){var G=this.getSuccess(K);if(G===false||G==="false"){D=false}}var P=[];for(var O=0;O<S;O++){var L=M[O];var B={};var J=this.getId(L);for(var N=0;N<E;N++){R=F[N];var G=this.ef[N](L);B[R.name]=R.convert((G!==undefined)?G:R.defaultValue,L)}var C=new A(B,J);C.json=L;P[O]=C}return{success:D,records:P,totalRecords:I}}});
+Ext.data.XmlReader=function(A,B){A=A||{};Ext.data.XmlReader.superclass.constructor.call(this,A,B||A.fields)};Ext.extend(Ext.data.XmlReader,Ext.data.DataReader,{read:function(A){var B=A.responseXML;if(!B){throw {message:"XmlReader.read: XML Document not available"}}return this.readRecords(B)},readRecords:function(T){this.xmlData=T;var N=T.documentElement||T;var I=Ext.DomQuery;var B=this.recordType,L=B.prototype.fields;var D=this.meta.id;var G=0,E=true;if(this.meta.totalRecords){G=I.selectNumber(this.meta.totalRecords,N,0)}if(this.meta.success){var K=I.selectValue(this.meta.success,N,true);E=K!==false&&K!=="false"}var Q=[];var U=I.select(this.meta.record,N);for(var P=0,R=U.length;P<R;P++){var M=U[P];var A={};var J=D?I.selectValue(D,M):undefined;for(var O=0,H=L.length;O<H;O++){var S=L.items[O];var F=I.selectValue(S.mapping||S.name,M,S.defaultValue);F=S.convert(F,M);A[S.name]=F}var C=new B(A,J);C.node=M;Q[Q.length]=C}return{success:E,records:Q,totalRecords:G||Q.length}}});
+Ext.data.ArrayReader=Ext.extend(Ext.data.JsonReader,{readRecords:function(C){var B=this.meta?this.meta.id:null;var G=this.recordType,K=G.prototype.fields;var E=[];var M=C;for(var I=0;I<M.length;I++){var D=M[I];var O={};var A=((B||B===0)&&D[B]!==undefined&&D[B]!==""?D[B]:null);for(var H=0,P=K.length;H<P;H++){var L=K.items[H];var F=L.mapping!==undefined&&L.mapping!==null?L.mapping:H;var N=D[F]!==undefined?D[F]:L.defaultValue;N=L.convert(N,D);O[L.name]=N}var J=new G(O,A);J.json=D;E[E.length]=J}return{records:E,totalRecords:E.length}}});
+Ext.data.Tree=function(A){this.nodeHash={};this.root=null;if(A){this.setRootNode(A)}this.addEvents("append","remove","move","insert","beforeappend","beforeremove","beforemove","beforeinsert");Ext.data.Tree.superclass.constructor.call(this)};Ext.extend(Ext.data.Tree,Ext.util.Observable,{pathSeparator:"/",proxyNodeEvent:function(){return this.fireEvent.apply(this,arguments)},getRootNode:function(){return this.root},setRootNode:function(A){this.root=A;A.ownerTree=this;A.isRoot=true;this.registerNode(A);return A},getNodeById:function(A){return this.nodeHash[A]},registerNode:function(A){this.nodeHash[A.id]=A},unregisterNode:function(A){delete this.nodeHash[A.id]},toString:function(){return"[Tree"+(this.id?" "+this.id:"")+"]"}});Ext.data.Node=function(A){this.attributes=A||{};this.leaf=this.attributes.leaf;this.id=this.attributes.id;if(!this.id){this.id=Ext.id(null,"ynode-");this.attributes.id=this.id}this.childNodes=[];if(!this.childNodes.indexOf){this.childNodes.indexOf=function(D){for(var C=0,B=this.length;C<B;C++){if(this[C]==D){return C}}return -1}}this.parentNode=null;this.firstChild=null;this.lastChild=null;this.previousSibling=null;this.nextSibling=null;this.addEvents({"append":true,"remove":true,"move":true,"insert":true,"beforeappend":true,"beforeremove":true,"beforemove":true,"beforeinsert":true});this.listeners=this.attributes.listeners;Ext.data.Node.superclass.constructor.call(this)};Ext.extend(Ext.data.Node,Ext.util.Observable,{fireEvent:function(B){if(Ext.data.Node.superclass.fireEvent.apply(this,arguments)===false){return false}var A=this.getOwnerTree();if(A){if(A.proxyNodeEvent.apply(A,arguments)===false){return false}}return true},isLeaf:function(){return this.leaf===true},setFirstChild:function(A){this.firstChild=A},setLastChild:function(A){this.lastChild=A},isLast:function(){return(!this.parentNode?true:this.parentNode.lastChild==this)},isFirst:function(){return(!this.parentNode?true:this.parentNode.firstChild==this)},hasChildNodes:function(){return !this.isLeaf()&&this.childNodes.length>0},isExpandable:function(){return this.attributes.expandable||this.hasChildNodes()},appendChild:function(E){var F=false;if(Ext.isArray(E)){F=E}else{if(arguments.length>1){F=arguments}}if(F){for(var D=0,A=F.length;D<A;D++){this.appendChild(F[D])}}else{if(this.fireEvent("beforeappend",this.ownerTree,this,E)===false){return false}var B=this.childNodes.length;var C=E.parentNode;if(C){if(E.fireEvent("beforemove",E.getOwnerTree(),E,C,this,B)===false){return false}C.removeChild(E)}B=this.childNodes.length;if(B==0){this.setFirstChild(E)}this.childNodes.push(E);E.parentNode=this;var G=this.childNodes[B-1];if(G){E.previousSibling=G;G.nextSibling=E}else{E.previousSibling=null}E.nextSibling=null;this.setLastChild(E);E.setOwnerTree(this.getOwnerTree());this.fireEvent("append",this.ownerTree,this,E,B);if(C){E.fireEvent("move",this.ownerTree,E,C,this,B)}return E}},removeChild:function(B){var A=this.childNodes.indexOf(B);if(A==-1){return false}if(this.fireEvent("beforeremove",this.ownerTree,this,B)===false){return false}this.childNodes.splice(A,1);if(B.previousSibling){B.previousSibling.nextSibling=B.nextSibling}if(B.nextSibling){B.nextSibling.previousSibling=B.previousSibling}if(this.firstChild==B){this.setFirstChild(B.nextSibling)}if(this.lastChild==B){this.setLastChild(B.previousSibling)}B.setOwnerTree(null);B.parentNode=null;B.previousSibling=null;B.nextSibling=null;this.fireEvent("remove",this.ownerTree,this,B);return B},insertBefore:function(D,A){if(!A){return this.appendChild(D)}if(D==A){return false}if(this.fireEvent("beforeinsert",this.ownerTree,this,D,A)===false){return false}var B=this.childNodes.indexOf(A);var C=D.parentNode;var E=B;if(C==this&&this.childNodes.indexOf(D)<B){E--}if(C){if(D.fireEvent("beforemove",D.getOwnerTree(),D,C,this,B,A)===false){return false}C.removeChild(D)}if(E==0){this.setFirstChild(D)}this.childNodes.splice(E,0,D);D.parentNode=this;var F=this.childNodes[E-1];if(F){D.previousSibling=F;F.nextSibling=D}else{D.previousSibling=null}D.nextSibling=A;A.previousSibling=D;D.setOwnerTree(this.getOwnerTree());this.fireEvent("insert",this.ownerTree,this,D,A);if(C){D.fireEvent("move",this.ownerTree,D,C,this,E,A)}return D},remove:function(){this.parentNode.removeChild(this);return this},item:function(A){return this.childNodes[A]},replaceChild:function(A,B){this.insertBefore(A,B);this.removeChild(B);return B},indexOf:function(A){return this.childNodes.indexOf(A)},getOwnerTree:function(){if(!this.ownerTree){var A=this;while(A){if(A.ownerTree){this.ownerTree=A.ownerTree;break}A=A.parentNode}}return this.ownerTree},getDepth:function(){var B=0;var A=this;while(A.parentNode){++B;A=A.parentNode}return B},setOwnerTree:function(B){if(B!=this.ownerTree){if(this.ownerTree){this.ownerTree.unregisterNode(this)}this.ownerTree=B;var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].setOwnerTree(B)}if(B){B.registerNode(this)}}},getPath:function(B){B=B||"id";var D=this.parentNode;var A=[this.attributes[B]];while(D){A.unshift(D.attributes[B]);D=D.parentNode}var C=this.getOwnerTree().pathSeparator;return C+A.join(C)},bubble:function(C,B,A){var D=this;while(D){if(C.apply(B||D,A||[D])===false){break}D=D.parentNode}},cascade:function(F,E,B){if(F.apply(E||this,B||[this])!==false){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].cascade(F,E,B)}}},eachChild:function(F,E,B){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){if(F.apply(E||this,B||[D[C]])===false){break}}},findChild:function(D,E){var C=this.childNodes;for(var B=0,A=C.length;B<A;B++){if(C[B].attributes[D]==E){return C[B]}}return null},findChildBy:function(E,D){var C=this.childNodes;for(var B=0,A=C.length;B<A;B++){if(E.call(D||C[B],C[B])===true){return C[B]}}return null},sort:function(E,D){var C=this.childNodes;var A=C.length;if(A>0){var F=D?function(){E.apply(D,arguments)}:E;C.sort(F);for(var B=0;B<A;B++){var G=C[B];G.previousSibling=C[B-1];G.nextSibling=C[B+1];if(B==0){this.setFirstChild(G)}if(B==A-1){this.setLastChild(G)}}}},contains:function(A){return A.isAncestor(this)},isAncestor:function(A){var B=this.parentNode;while(B){if(B==A){return true}B=B.parentNode}return false},toString:function(){return"[Node"+(this.id?" "+this.id:"")+"]"}});
+Ext.data.GroupingStore=Ext.extend(Ext.data.Store,{remoteGroup:false,groupOnSort:false,clearGrouping:function(){this.groupField=false;if(this.remoteGroup){if(this.baseParams){delete this.baseParams.groupBy}this.reload()}else{this.applySort();this.fireEvent("datachanged",this)}},groupBy:function(C,B){if(this.groupField==C&&!B){return }this.groupField=C;if(this.remoteGroup){if(!this.baseParams){this.baseParams={}}this.baseParams["groupBy"]=C}if(this.groupOnSort){this.sort(C);return }if(this.remoteGroup){this.reload()}else{var A=this.sortInfo||{};if(A.field!=C){this.applySort()}else{this.sortData(C)}this.fireEvent("datachanged",this)}},applySort:function(){Ext.data.GroupingStore.superclass.applySort.call(this);if(!this.groupOnSort&&!this.remoteGroup){var A=this.getGroupState();if(A&&A!=this.sortInfo.field){this.sortData(this.groupField)}}},applyGrouping:function(A){if(this.groupField!==false){this.groupBy(this.groupField,true);return true}else{if(A===true){this.fireEvent("datachanged",this)}return false}},getGroupState:function(){return this.groupOnSort&&this.groupField!==false?(this.sortInfo?this.sortInfo.field:undefined):this.groupField}});
+Ext.ComponentMgr=function(){var B=new Ext.util.MixedCollection();var A={};return{register:function(C){B.add(C)},unregister:function(C){B.remove(C)},get:function(C){return B.get(C)},onAvailable:function(E,D,C){B.on("add",function(F,G){if(G.id==E){D.call(C||G,G);B.un("add",D,C)}})},all:B,registerType:function(D,C){A[D]=C;C.xtype=D},create:function(C,D){return new A[C.xtype||D](C)}}}();Ext.reg=Ext.ComponentMgr.registerType;
+Ext.Component=function(B){B=B||{};if(B.initialConfig){if(B.isAction){this.baseAction=B}B=B.initialConfig}else{if(B.tagName||B.dom||typeof B=="string"){B={applyTo:B,id:B.id||B}}}this.initialConfig=B;Ext.apply(this,B);this.addEvents("disable","enable","beforeshow","show","beforehide","hide","beforerender","render","beforedestroy","destroy","beforestaterestore","staterestore","beforestatesave","statesave");this.getId();Ext.ComponentMgr.register(this);Ext.Component.superclass.constructor.call(this);if(this.baseAction){this.baseAction.addComponent(this)}this.initComponent();if(this.plugins){if(Ext.isArray(this.plugins)){for(var C=0,A=this.plugins.length;C<A;C++){this.plugins[C]=this.initPlugin(this.plugins[C])}}else{this.plugins=this.initPlugin(this.plugins)}}if(this.stateful!==false){this.initState(B)}if(this.applyTo){this.applyToMarkup(this.applyTo);delete this.applyTo}else{if(this.renderTo){this.render(this.renderTo);delete this.renderTo}}};Ext.Component.AUTO_ID=1000;Ext.extend(Ext.Component,Ext.util.Observable,{disabledClass:"x-item-disabled",allowDomMove:true,autoShow:false,hideMode:"display",hideParent:false,hidden:false,disabled:false,rendered:false,ctype:"Ext.Component",actionMode:"el",getActionEl:function(){return this[this.actionMode]},initPlugin:function(A){A.init(this);return A},initComponent:Ext.emptyFn,render:function(B,A){if(!this.rendered&&this.fireEvent("beforerender",this)!==false){if(!B&&this.el){this.el=Ext.get(this.el);B=this.el.dom.parentNode;this.allowDomMove=false}this.container=Ext.get(B);if(this.ctCls){this.container.addClass(this.ctCls)}this.rendered=true;if(A!==undefined){if(typeof A=="number"){A=this.container.dom.childNodes[A]}else{A=Ext.getDom(A)}}this.onRender(this.container,A||null);if(this.autoShow){this.el.removeClass(["x-hidden","x-hide-"+this.hideMode])}if(this.cls){this.el.addClass(this.cls);delete this.cls}if(this.style){this.el.applyStyles(this.style);delete this.style}this.fireEvent("render",this);this.afterRender(this.container);if(this.hidden){this.hide()}if(this.disabled){this.disable()}if(this.stateful!==false){this.initStateEvents()}}return this},initState:function(A){if(Ext.state.Manager){var B=Ext.state.Manager.get(this.stateId||this.id);if(B){if(this.fireEvent("beforestaterestore",this,B)!==false){this.applyState(B);this.fireEvent("staterestore",this,B)}}}},initStateEvents:function(){if(this.stateEvents){for(var A=0,B;B=this.stateEvents[A];A++){this.on(B,this.saveState,this,{delay:100})}}},applyState:function(B,A){if(B){Ext.apply(this,B)}},getState:function(){return null},saveState:function(){if(Ext.state.Manager){var A=this.getState();if(this.fireEvent("beforestatesave",this,A)!==false){Ext.state.Manager.set(this.stateId||this.id,A);this.fireEvent("statesave",this,A)}}},applyToMarkup:function(A){this.allowDomMove=false;this.el=Ext.get(A);this.render(this.el.dom.parentNode)},addClass:function(A){if(this.el){this.el.addClass(A)}else{this.cls=this.cls?this.cls+" "+A:A}},removeClass:function(A){if(this.el){this.el.removeClass(A)}else{if(this.cls){this.cls=this.cls.split(" ").remove(A).join(" ")}}},onRender:function(B,A){if(this.autoEl){if(typeof this.autoEl=="string"){this.el=document.createElement(this.autoEl)}else{var C=document.createElement("div");Ext.DomHelper.overwrite(C,this.autoEl);this.el=C.firstChild}if(!this.el.id){this.el.id=this.getId()}}if(this.el){this.el=Ext.get(this.el);if(this.allowDomMove!==false){B.dom.insertBefore(this.el.dom,A)}if(this.overCls){this.el.addClassOnOver(this.overCls)}}},getAutoCreate:function(){var A=typeof this.autoCreate=="object"?this.autoCreate:Ext.apply({},this.defaultAutoCreate);if(this.id&&!A.id){A.id=this.id}return A},afterRender:Ext.emptyFn,destroy:function(){if(this.fireEvent("beforedestroy",this)!==false){this.beforeDestroy();if(this.rendered){this.el.removeAllListeners();this.el.remove();if(this.actionMode=="container"){this.container.remove()}}this.onDestroy();Ext.ComponentMgr.unregister(this);this.fireEvent("destroy",this);this.purgeListeners()}},beforeDestroy:Ext.emptyFn,onDestroy:Ext.emptyFn,getEl:function(){return this.el},getId:function(){return this.id||(this.id="ext-comp-"+(++Ext.Component.AUTO_ID))},getItemId:function(){return this.itemId||this.getId()},focus:function(B,A){if(A){this.focus.defer(typeof A=="number"?A:10,this,[B,false]);return }if(this.rendered){this.el.focus();if(B===true){this.el.dom.select()}}return this},blur:function(){if(this.rendered){this.el.blur()}return this},disable:function(){if(this.rendered){this.onDisable()}this.disabled=true;this.fireEvent("disable",this);return this},onDisable:function(){this.getActionEl().addClass(this.disabledClass);this.el.dom.disabled=true},enable:function(){if(this.rendered){this.onEnable()}this.disabled=false;this.fireEvent("enable",this);return this},onEnable:function(){this.getActionEl().removeClass(this.disabledClass);this.el.dom.disabled=false},setDisabled:function(A){this[A?"disable":"enable"]()},show:function(){if(this.fireEvent("beforeshow",this)!==false){this.hidden=false;if(this.autoRender){this.render(typeof this.autoRender=="boolean"?Ext.getBody():this.autoRender)}if(this.rendered){this.onShow()}this.fireEvent("show",this)}return this},onShow:function(){if(this.hideParent){this.container.removeClass("x-hide-"+this.hideMode)}else{this.getActionEl().removeClass("x-hide-"+this.hideMode)}},hide:function(){if(this.fireEvent("beforehide",this)!==false){this.hidden=true;if(this.rendered){this.onHide()}this.fireEvent("hide",this)}return this},onHide:function(){if(this.hideParent){this.container.addClass("x-hide-"+this.hideMode)}else{this.getActionEl().addClass("x-hide-"+this.hideMode)}},setVisible:function(A){if(A){this.show()}else{this.hide()}return this},isVisible:function(){return this.rendered&&this.getActionEl().isVisible()},cloneConfig:function(B){B=B||{};var C=B.id||Ext.id();var A=Ext.applyIf(B,this.initialConfig);A.id=C;return new this.constructor(A)},getXType:function(){return this.constructor.xtype},isXType:function(B,A){return !A?("/"+this.getXTypes()+"/").indexOf("/"+B+"/")!=-1:this.constructor.xtype==B},getXTypes:function(){var A=this.constructor;if(!A.xtypes){var C=[],B=this;while(B&&B.constructor.xtype){C.unshift(B.constructor.xtype);B=B.constructor.superclass}A.xtypeChain=C;A.xtypes=C.join("/")}return A.xtypes},findParentBy:function(A){for(var B=this.ownerCt;(B!=null)&&!A(B,this);B=B.ownerCt){}return B||null},findParentByType:function(A){return typeof A=="function"?this.findParentBy(function(B){return B.constructor===A}):this.findParentBy(function(B){return B.constructor.xtype===A})},mon:function(E,B,D,C,A){if(!this.mons){this.mons=[];this.on("beforedestroy",function(){for(var H=0,G=this.mons.length;H<G;H++){var F=this.mons[H];F.item.un(F.ename,F.fn,F.scope)}},this)}this.mons.push({item:E,ename:B,fn:D,scope:C});E.on(B,D,C,A)}});Ext.reg("component",Ext.Component);
+Ext.Action=function(A){this.initialConfig=A;this.items=[]};Ext.Action.prototype={isAction:true,setText:function(A){this.initialConfig.text=A;this.callEach("setText",[A])},getText:function(){return this.initialConfig.text},setIconClass:function(A){this.initialConfig.iconCls=A;this.callEach("setIconClass",[A])},getIconClass:function(){return this.initialConfig.iconCls},setDisabled:function(A){this.initialConfig.disabled=A;this.callEach("setDisabled",[A])},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},isDisabled:function(){return this.initialConfig.disabled},setHidden:function(A){this.initialConfig.hidden=A;this.callEach("setVisible",[!A])},show:function(){this.setHidden(false)},hide:function(){this.setHidden(true)},isHidden:function(){return this.initialConfig.hidden},setHandler:function(B,A){this.initialConfig.handler=B;this.initialConfig.scope=A;this.callEach("setHandler",[B,A])},each:function(B,A){Ext.each(this.items,B,A)},callEach:function(E,B){var D=this.items;for(var C=0,A=D.length;C<A;C++){D[C][E].apply(D[C],B)}},addComponent:function(A){this.items.push(A);A.on("destroy",this.removeComponent,this)},removeComponent:function(A){this.items.remove(A)},execute:function(){this.initialConfig.handler.apply(this.initialConfig.scope||window,arguments)}};
+(function(){Ext.Layer=function(D,C){D=D||{};var E=Ext.DomHelper;var G=D.parentEl,F=G?Ext.getDom(G):document.body;if(C){this.dom=Ext.getDom(C)}if(!this.dom){var H=D.dh||{tag:"div",cls:"x-layer"};this.dom=E.append(F,H)}if(D.cls){this.addClass(D.cls)}this.constrain=D.constrain!==false;this.visibilityMode=Ext.Element.VISIBILITY;if(D.id){this.id=this.dom.id=D.id}else{this.id=Ext.id(this.dom)}this.zindex=D.zindex||this.getZIndex();this.position("absolute",this.zindex);if(D.shadow){this.shadowOffset=D.shadowOffset||4;this.shadow=new Ext.Shadow({offset:this.shadowOffset,mode:D.shadow})}else{this.shadowOffset=0}this.useShim=D.shim!==false&&Ext.useShims;this.useDisplay=D.useDisplay;this.hide()};var A=Ext.Element.prototype;var B=[];Ext.extend(Ext.Layer,Ext.Element,{getZIndex:function(){return this.zindex||parseInt(this.getStyle("z-index"),10)||11000},getShim:function(){if(!this.useShim){return null}if(this.shim){return this.shim}var D=B.shift();if(!D){D=this.createShim();D.enableDisplayMode("block");D.dom.style.display="none";D.dom.style.visibility="visible"}var C=this.dom.parentNode;if(D.dom.parentNode!=C){C.insertBefore(D.dom,this.dom)}D.setStyle("z-index",this.getZIndex()-2);this.shim=D;return D},hideShim:function(){if(this.shim){this.shim.setDisplayed(false);B.push(this.shim);delete this.shim}},disableShadow:function(){if(this.shadow){this.shadowDisabled=true;this.shadow.hide();this.lastShadowOffset=this.shadowOffset;this.shadowOffset=0}},enableShadow:function(C){if(this.shadow){this.shadowDisabled=false;this.shadowOffset=this.lastShadowOffset;delete this.lastShadowOffset;if(C){this.sync(true)}}},sync:function(C){var I=this.shadow;if(!this.updating&&this.isVisible()&&(I||this.useShim)){var F=this.getShim();var H=this.getWidth(),E=this.getHeight();var D=this.getLeft(true),J=this.getTop(true);if(I&&!this.shadowDisabled){if(C&&!I.isVisible()){I.show(this)}else{I.realign(D,J,H,E)}if(F){if(C){F.show()}var G=I.adjusts,K=F.dom.style;K.left=(Math.min(D,D+G.l))+"px";K.top=(Math.min(J,J+G.t))+"px";K.width=(H+G.w)+"px";K.height=(E+G.h)+"px"}}else{if(F){if(C){F.show()}F.setSize(H,E);F.setLeftTop(D,J)}}}},destroy:function(){this.hideShim();if(this.shadow){this.shadow.hide()}this.removeAllListeners();Ext.removeNode(this.dom);Ext.Element.uncache(this.id)},remove:function(){this.destroy()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(C){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var G=Ext.lib.Dom.getViewWidth(),C=Ext.lib.Dom.getViewHeight();var L=Ext.getDoc().getScroll();var K=this.getXY();var H=K[0],F=K[1];var I=this.dom.offsetWidth+this.shadowOffset,D=this.dom.offsetHeight+this.shadowOffset;var E=false;if((H+I)>G+L.left){H=G-I-this.shadowOffset;E=true}if((F+D)>C+L.top){F=C-D-this.shadowOffset;E=true}if(H<L.left){H=L.left;E=true}if(F<L.top){F=L.top;E=true}if(E){if(this.avoidY){var J=this.avoidY;if(F<=J&&(F+D)>=J){F=J-D-5}}K=[H,F];this.storeXY(K);A.setXY.call(this,K);this.sync()}}},isVisible:function(){return this.visible},showAction:function(){this.visible=true;if(this.useDisplay===true){this.setDisplayed("")}else{if(this.lastXY){A.setXY.call(this,this.lastXY)}else{if(this.lastLT){A.setLeftTop.call(this,this.lastLT[0],this.lastLT[1])}}}},hideAction:function(){this.visible=false;if(this.useDisplay===true){this.setDisplayed(false)}else{this.setLeftTop(-10000,-10000)}},setVisible:function(E,D,G,H,F){if(E){this.showAction()}if(D&&E){var C=function(){this.sync(true);if(H){H()}}.createDelegate(this);A.setVisible.call(this,true,true,G,C,F)}else{if(!E){this.hideUnders(true)}var C=H;if(D){C=function(){this.hideAction();if(H){H()}}.createDelegate(this)}A.setVisible.call(this,E,D,G,C,F);if(E){this.sync(true)}else{if(!D){this.hideAction()}}}},storeXY:function(C){delete this.lastLT;this.lastXY=C},storeLeftTop:function(D,C){delete this.lastXY;this.lastLT=[D,C]},beforeFx:function(){this.beforeAction();return Ext.Layer.superclass.beforeFx.apply(this,arguments)},afterFx:function(){Ext.Layer.superclass.afterFx.apply(this,arguments);this.sync(this.isVisible())},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide()}},setLeft:function(C){this.storeLeftTop(C,this.getTop(true));A.setLeft.apply(this,arguments);this.sync()},setTop:function(C){this.storeLeftTop(this.getLeft(true),C);A.setTop.apply(this,arguments);this.sync()},setLeftTop:function(D,C){this.storeLeftTop(D,C);A.setLeftTop.apply(this,arguments);this.sync()},setXY:function(F,D,G,H,E){this.fixDisplay();this.beforeAction();this.storeXY(F);var C=this.createCB(H);A.setXY.call(this,F,D,G,C,E);if(!D){C()}},createCB:function(D){var C=this;return function(){C.constrainXY();C.sync(true);if(D){D()}}},setX:function(C,D,F,G,E){this.setXY([C,this.getY()],D,F,G,E)},setY:function(G,C,E,F,D){this.setXY([this.getX(),G],C,E,F,D)},setSize:function(E,F,D,H,I,G){this.beforeAction();var C=this.createCB(I);A.setSize.call(this,E,F,D,H,C,G);if(!D){C()}},setWidth:function(E,D,G,H,F){this.beforeAction();var C=this.createCB(H);A.setWidth.call(this,E,D,G,C,F);if(!D){C()}},setHeight:function(E,D,G,H,F){this.beforeAction();var C=this.createCB(H);A.setHeight.call(this,E,D,G,C,F);if(!D){C()}},setBounds:function(J,H,K,D,I,F,G,E){this.beforeAction();var C=this.createCB(G);if(!I){this.storeXY([J,H]);A.setXY.call(this,[J,H]);A.setSize.call(this,K,D,I,F,C,E);C()}else{A.setBounds.call(this,J,H,K,D,I,F,C,E)}return this},setZIndex:function(C){this.zindex=C;this.setStyle("z-index",C+2);if(this.shadow){this.shadow.setZIndex(C+1)}if(this.shim){this.shim.setStyle("z-index",C)}}})})();
+Ext.Shadow=function(C){Ext.apply(this,C);if(typeof this.mode!="string"){this.mode=this.defaultMode}var D=this.offset,B={h:0};var A=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":B.w=0;B.l=B.t=D;B.t-=1;if(Ext.isIE){B.l-=this.offset+A;B.t-=this.offset+A;B.w-=A;B.h-=A;B.t+=1}break;case"sides":B.w=(D*2);B.l=-D;B.t=D-1;if(Ext.isIE){B.l-=(this.offset-A);B.t-=this.offset+A;B.l+=1;B.w-=(this.offset-A)*2;B.w-=A+1;B.h-=1}break;case"frame":B.w=B.h=(D*2);B.l=B.t=-D;B.t+=1;B.h-=2;if(Ext.isIE){B.l-=(this.offset-A);B.t-=(this.offset-A);B.l+=1;B.w-=(this.offset+A+1);B.h-=(this.offset+A);B.h+=1}break}this.adjusts=B};Ext.Shadow.prototype={offset:4,defaultMode:"drop",show:function(A){A=Ext.get(A);if(!this.el){this.el=Ext.Shadow.Pool.pull();if(this.el.dom.nextSibling!=A.dom){this.el.insertBefore(A)}}this.el.setStyle("z-index",this.zIndex||parseInt(A.getStyle("z-index"),10)-1);if(Ext.isIE){this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")"}this.realign(A.getLeft(true),A.getTop(true),A.getWidth(),A.getHeight());this.el.dom.style.display="block"},isVisible:function(){return this.el?true:false},realign:function(A,M,L,D){if(!this.el){return }var I=this.adjusts,G=this.el.dom,N=G.style;var E=0;N.left=(A+I.l)+"px";N.top=(M+I.t)+"px";var K=(L+I.w),C=(D+I.h),F=K+"px",J=C+"px";if(N.width!=F||N.height!=J){N.width=F;N.height=J;if(!Ext.isIE){var H=G.childNodes;var B=Math.max(0,(K-12))+"px";H[0].childNodes[1].style.width=B;H[1].childNodes[1].style.width=B;H[2].childNodes[1].style.width=B;H[1].style.height=Math.max(0,(C-12))+"px"}}},hide:function(){if(this.el){this.el.dom.style.display="none";Ext.Shadow.Pool.push(this.el);delete this.el}},setZIndex:function(A){this.zIndex=A;if(this.el){this.el.setStyle("z-index",A)}}};Ext.Shadow.Pool=function(){var B=[];var A=Ext.isIE?"<div class=\"x-ie-shadow\"></div>":"<div class=\"x-shadow\"><div class=\"xst\"><div class=\"xstl\"></div><div class=\"xstc\"></div><div class=\"xstr\"></div></div><div class=\"xsc\"><div class=\"xsml\"></div><div class=\"xsmc\"></div><div class=\"xsmr\"></div></div><div class=\"xsb\"><div class=\"xsbl\"></div><div class=\"xsbc\"></div><div class=\"xsbr\"></div></div></div>";return{pull:function(){var C=B.shift();if(!C){C=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,A));C.autoBoxAdjust=false}return C},push:function(C){B.push(C)}}}();
+Ext.BoxComponent=Ext.extend(Ext.Component,{initComponent:function(){Ext.BoxComponent.superclass.initComponent.call(this);this.addEvents("resize","move")},boxReady:false,deferHeight:false,setSize:function(B,D){if(typeof B=="object"){D=B.height;B=B.width}if(!this.boxReady){this.width=B;this.height=D;return this}if(this.lastSize&&this.lastSize.width==B&&this.lastSize.height==D){return this}this.lastSize={width:B,height:D};var C=this.adjustSize(B,D);var F=C.width,A=C.height;if(F!==undefined||A!==undefined){var E=this.getResizeEl();if(!this.deferHeight&&F!==undefined&&A!==undefined){E.setSize(F,A)}else{if(!this.deferHeight&&A!==undefined){E.setHeight(A)}else{if(F!==undefined){E.setWidth(F)}}}this.onResize(F,A,B,D);this.fireEvent("resize",this,F,A,B,D)}return this},setWidth:function(A){return this.setSize(A)},setHeight:function(A){return this.setSize(undefined,A)},getSize:function(){return this.el.getSize()},getPosition:function(A){if(A===true){return[this.el.getLeft(true),this.el.getTop(true)]}return this.xy||this.el.getXY()},getBox:function(A){var B=this.el.getSize();if(A===true){B.x=this.el.getLeft(true);B.y=this.el.getTop(true)}else{var C=this.xy||this.el.getXY();B.x=C[0];B.y=C[1]}return B},updateBox:function(A){this.setSize(A.width,A.height);this.setPagePosition(A.x,A.y);return this},getResizeEl:function(){return this.resizeEl||this.el},getPositionEl:function(){return this.positionEl||this.el},setPosition:function(A,F){if(A&&typeof A[1]=="number"){F=A[1];A=A[0]}this.x=A;this.y=F;if(!this.boxReady){return this}var B=this.adjustPosition(A,F);var E=B.x,D=B.y;var C=this.getPositionEl();if(E!==undefined||D!==undefined){if(E!==undefined&&D!==undefined){C.setLeftTop(E,D)}else{if(E!==undefined){C.setLeft(E)}else{if(D!==undefined){C.setTop(D)}}}this.onPosition(E,D);this.fireEvent("move",this,E,D)}return this},setPagePosition:function(A,C){if(A&&typeof A[1]=="number"){C=A[1];A=A[0]}this.pageX=A;this.pageY=C;if(!this.boxReady){return }if(A===undefined||C===undefined){return }var B=this.el.translatePoints(A,C);this.setPosition(B.left,B.top);return this},onRender:function(B,A){Ext.BoxComponent.superclass.onRender.call(this,B,A);if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl)}if(this.positionEl){this.positionEl=Ext.get(this.positionEl)}},afterRender:function(){Ext.BoxComponent.superclass.afterRender.call(this);this.boxReady=true;this.setSize(this.width,this.height);if(this.x||this.y){this.setPosition(this.x,this.y)}else{if(this.pageX||this.pageY){this.setPagePosition(this.pageX,this.pageY)}}},syncSize:function(){delete this.lastSize;this.setSize(this.autoWidth?undefined:this.el.getWidth(),this.autoHeight?undefined:this.el.getHeight());return this},onResize:function(D,B,A,C){},onPosition:function(A,B){},adjustSize:function(A,B){if(this.autoWidth){A="auto"}if(this.autoHeight){B="auto"}return{width:A,height:B}},adjustPosition:function(A,B){return{x:A,y:B}}});Ext.reg("box",Ext.BoxComponent);
+Ext.SplitBar=function(C,E,B,D,A){this.el=Ext.get(C,true);this.el.dom.unselectable="on";this.resizingEl=Ext.get(E,true);this.orientation=B||Ext.SplitBar.HORIZONTAL;this.minSize=0;this.maxSize=2000;this.animate=false;this.useShim=false;this.shim=null;if(!A){this.proxy=Ext.SplitBar.createProxy(this.orientation)}else{this.proxy=Ext.get(A).dom}this.dd=new Ext.dd.DDProxy(this.el.dom.id,"XSplitBars",{dragElId:this.proxy.id});this.dd.b4StartDrag=this.onStartProxyDrag.createDelegate(this);this.dd.endDrag=this.onEndProxyDrag.createDelegate(this);this.dragSpecs={};this.adapter=new Ext.SplitBar.BasicLayoutAdapter();this.adapter.init(this);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.placement=D||(this.el.getX()>this.resizingEl.getX()?Ext.SplitBar.LEFT:Ext.SplitBar.RIGHT);this.el.addClass("x-splitbar-h")}else{this.placement=D||(this.el.getY()>this.resizingEl.getY()?Ext.SplitBar.TOP:Ext.SplitBar.BOTTOM);this.el.addClass("x-splitbar-v")}this.addEvents("resize","moved","beforeresize","beforeapply");Ext.SplitBar.superclass.constructor.call(this)};Ext.extend(Ext.SplitBar,Ext.util.Observable,{onStartProxyDrag:function(A,E){this.fireEvent("beforeresize",this);this.overlay=Ext.DomHelper.append(document.body,{cls:"x-drag-overlay",html:"&#160;"},true);this.overlay.unselectable();this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();Ext.get(this.proxy).setDisplayed("block");var C=this.adapter.getElementSize(this);this.activeMinSize=this.getMinimumSize();this.activeMaxSize=this.getMaximumSize();var D=C-this.activeMinSize;var B=Math.max(this.activeMaxSize-C,0);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.dd.resetConstraints();this.dd.setXConstraint(this.placement==Ext.SplitBar.LEFT?D:B,this.placement==Ext.SplitBar.LEFT?B:D);this.dd.setYConstraint(0,0)}else{this.dd.resetConstraints();this.dd.setXConstraint(0,0);this.dd.setYConstraint(this.placement==Ext.SplitBar.TOP?D:B,this.placement==Ext.SplitBar.TOP?B:D)}this.dragSpecs.startSize=C;this.dragSpecs.startPoint=[A,E];Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd,A,E)},onEndProxyDrag:function(C){Ext.get(this.proxy).setDisplayed(false);var B=Ext.lib.Event.getXY(C);if(this.overlay){this.overlay.remove();delete this.overlay}var A;if(this.orientation==Ext.SplitBar.HORIZONTAL){A=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.LEFT?B[0]-this.dragSpecs.startPoint[0]:this.dragSpecs.startPoint[0]-B[0])}else{A=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.TOP?B[1]-this.dragSpecs.startPoint[1]:this.dragSpecs.startPoint[1]-B[1])}A=Math.min(Math.max(A,this.activeMinSize),this.activeMaxSize);if(A!=this.dragSpecs.startSize){if(this.fireEvent("beforeapply",this,A)!==false){this.adapter.setElementSize(this,A);this.fireEvent("moved",this,A);this.fireEvent("resize",this,A)}}},getAdapter:function(){return this.adapter},setAdapter:function(A){this.adapter=A;this.adapter.init(this)},getMinimumSize:function(){return this.minSize},setMinimumSize:function(A){this.minSize=A},getMaximumSize:function(){return this.maxSize},setMaximumSize:function(A){this.maxSize=A},setCurrentSize:function(B){var A=this.animate;this.animate=false;this.adapter.setElementSize(this,B);this.animate=A},destroy:function(A){if(this.shim){this.shim.remove()}this.dd.unreg();Ext.removeNode(this.proxy);if(A){this.el.remove()}}});Ext.SplitBar.createProxy=function(B){var C=new Ext.Element(document.createElement("div"));C.unselectable();var A="x-splitbar-proxy";C.addClass(A+" "+(B==Ext.SplitBar.HORIZONTAL?A+"-h":A+"-v"));document.body.appendChild(C.dom);return C.dom};Ext.SplitBar.BasicLayoutAdapter=function(){};Ext.SplitBar.BasicLayoutAdapter.prototype={init:function(A){},getElementSize:function(A){if(A.orientation==Ext.SplitBar.HORIZONTAL){return A.resizingEl.getWidth()}else{return A.resizingEl.getHeight()}},setElementSize:function(B,A,C){if(B.orientation==Ext.SplitBar.HORIZONTAL){if(!B.animate){B.resizingEl.setWidth(A);if(C){C(B,A)}}else{B.resizingEl.setWidth(A,true,0.1,C,"easeOut")}}else{if(!B.animate){B.resizingEl.setHeight(A);if(C){C(B,A)}}else{B.resizingEl.setHeight(A,true,0.1,C,"easeOut")}}}};Ext.SplitBar.AbsoluteLayoutAdapter=function(A){this.basic=new Ext.SplitBar.BasicLayoutAdapter();this.container=Ext.get(A)};Ext.SplitBar.AbsoluteLayoutAdapter.prototype={init:function(A){this.basic.init(A)},getElementSize:function(A){return this.basic.getElementSize(A)},setElementSize:function(B,A,C){this.basic.setElementSize(B,A,this.moveSplitter.createDelegate(this,[B]))},moveSplitter:function(A){var B=Ext.SplitBar;switch(A.placement){case B.LEFT:A.el.setX(A.resizingEl.getRight());break;case B.RIGHT:A.el.setStyle("right",(this.container.getWidth()-A.resizingEl.getLeft())+"px");break;case B.TOP:A.el.setY(A.resizingEl.getBottom());break;case B.BOTTOM:A.el.setY(A.resizingEl.getTop()-A.el.getHeight());break}}};Ext.SplitBar.VERTICAL=1;Ext.SplitBar.HORIZONTAL=2;Ext.SplitBar.LEFT=1;Ext.SplitBar.RIGHT=2;Ext.SplitBar.TOP=3;Ext.SplitBar.BOTTOM=4;
+Ext.Container=Ext.extend(Ext.BoxComponent,{autoDestroy:true,defaultType:"panel",initComponent:function(){Ext.Container.superclass.initComponent.call(this);this.addEvents("afterlayout","beforeadd","beforeremove","add","remove");var A=this.items;if(A){delete this.items;if(Ext.isArray(A)){this.add.apply(this,A)}else{this.add(A)}}},initItems:function(){if(!this.items){this.items=new Ext.util.MixedCollection(false,this.getComponentId);this.getLayout()}},setLayout:function(A){if(this.layout&&this.layout!=A){this.layout.setContainer(null)}this.initItems();this.layout=A;A.setContainer(this)},render:function(){Ext.Container.superclass.render.apply(this,arguments);if(this.layout){if(typeof this.layout=="string"){this.layout=new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)}this.setLayout(this.layout);if(this.activeItem!==undefined){var A=this.activeItem;delete this.activeItem;this.layout.setActiveItem(A);return }}if(!this.ownerCt){this.doLayout()}if(this.monitorResize===true){Ext.EventManager.onWindowResize(this.doLayout,this,[false])}},getLayoutTarget:function(){return this.el},getComponentId:function(A){return A.itemId||A.id},add:function(C){if(!this.items){this.initItems()}var B=arguments,A=B.length;if(A>1){for(var D=0;D<A;D++){this.add(B[D])}return }var F=this.lookupComponent(this.applyDefaults(C));var E=this.items.length;if(this.fireEvent("beforeadd",this,F,E)!==false&&this.onBeforeAdd(F)!==false){this.items.add(F);F.ownerCt=this;this.fireEvent("add",this,F,E)}return F},insert:function(D,C){if(!this.items){this.initItems()}var B=arguments,A=B.length;if(A>2){for(var E=A-1;E>=1;--E){this.insert(D,B[E])}return }var F=this.lookupComponent(this.applyDefaults(C));if(F.ownerCt==this&&this.items.indexOf(F)<D){--D}if(this.fireEvent("beforeadd",this,F,D)!==false&&this.onBeforeAdd(F)!==false){this.items.insert(D,F);F.ownerCt=this;this.fireEvent("add",this,F,D)}return F},applyDefaults:function(A){if(this.defaults){if(typeof A=="string"){A=Ext.ComponentMgr.get(A);Ext.apply(A,this.defaults)}else{if(!A.events){Ext.applyIf(A,this.defaults)}else{Ext.apply(A,this.defaults)}}}return A},onBeforeAdd:function(A){if(A.ownerCt){A.ownerCt.remove(A,false)}if(this.hideBorders===true){A.border=(A.border===true)}},remove:function(A,B){var C=this.getComponent(A);if(C&&this.fireEvent("beforeremove",this,C)!==false){this.items.remove(C);delete C.ownerCt;if(B===true||(B!==false&&this.autoDestroy)){C.destroy()}if(this.layout&&this.layout.activeItem==C){delete this.layout.activeItem}this.fireEvent("remove",this,C)}return C},getComponent:function(A){if(typeof A=="object"){return A}return this.items.get(A)},lookupComponent:function(A){if(typeof A=="string"){return Ext.ComponentMgr.get(A)}else{if(!A.events){return this.createComponent(A)}}return A},createComponent:function(A){return Ext.ComponentMgr.create(A,this.defaultType)},doLayout:function(D){if(this.rendered&&this.layout){this.layout.layout()}if(D!==false&&this.items){var C=this.items.items;for(var B=0,A=C.length;B<A;B++){var E=C[B];if(E.doLayout){E.doLayout()}}}},getLayout:function(){if(!this.layout){var A=new Ext.layout.ContainerLayout(this.layoutConfig);this.setLayout(A)}return this.layout},beforeDestroy:function(){if(this.items){Ext.destroy.apply(Ext,this.items.items)}if(this.monitorResize){Ext.EventManager.removeResizeListener(this.doLayout,this)}if(this.layout&&this.layout.destroy){this.layout.destroy()}Ext.Container.superclass.beforeDestroy.call(this)},bubble:function(C,B,A){var D=this;while(D){if(C.apply(B||D,A||[D])===false){break}D=D.ownerCt}},cascade:function(F,E,B){if(F.apply(E||this,B||[this])!==false){if(this.items){var D=this.items.items;for(var C=0,A=D.length;C<A;C++){if(D[C].cascade){D[C].cascade(F,E,B)}else{F.apply(E||D[C],B||[D[C]])}}}}},findById:function(C){var A,B=this;this.cascade(function(D){if(B!=D&&D.id===C){A=D;return false}});return A||null},findByType:function(A){return typeof A=="function"?this.findBy(function(B){return B.constructor===A}):this.findBy(function(B){return B.constructor.xtype===A})},find:function(B,A){return this.findBy(function(C){return C[B]===A})},findBy:function(D,C){var A=[],B=this;this.cascade(function(E){if(B!=E&&D.call(C||E,E,B)===true){A.push(E)}});return A}});Ext.Container.LAYOUTS={};Ext.reg("container",Ext.Container);
+Ext.layout.ContainerLayout=function(A){Ext.apply(this,A)};Ext.layout.ContainerLayout.prototype={monitorResize:false,activeItem:null,layout:function(){var A=this.container.getLayoutTarget();this.onLayout(this.container,A);this.container.fireEvent("afterlayout",this.container,this)},onLayout:function(A,B){this.renderAll(A,B)},isValidParent:function(C,B){var A=C.getPositionEl?C.getPositionEl():C.getEl();return A.dom.parentNode==B.dom},renderAll:function(D,E){var B=D.items.items;for(var C=0,A=B.length;C<A;C++){var F=B[C];if(F&&(!F.rendered||!this.isValidParent(F,E))){this.renderItem(F,C,E)}}},renderItem:function(D,A,C){if(D&&!D.rendered){D.render(C,A);if(this.extraCls){var B=D.getPositionEl?D.getPositionEl():D;B.addClass(this.extraCls)}if(this.renderHidden&&D!=this.activeItem){D.hide()}}else{if(D&&!this.isValidParent(D,C)){if(this.extraCls){D.addClass(this.extraCls)}if(typeof A=="number"){A=C.dom.childNodes[A]}C.dom.insertBefore(D.getEl().dom,A||null);if(this.renderHidden&&D!=this.activeItem){D.hide()}}}},onResize:function(){if(this.container.collapsed){return }var A=this.container.bufferResize;if(A){if(!this.resizeTask){this.resizeTask=new Ext.util.DelayedTask(this.layout,this);this.resizeBuffer=typeof A=="number"?A:100}this.resizeTask.delay(this.resizeBuffer)}else{this.layout()}},setContainer:function(A){if(this.monitorResize&&A!=this.container){if(this.container){this.container.un("resize",this.onResize,this)}if(A){A.on("resize",this.onResize,this)}}this.container=A},parseMargins:function(B){var C=B.split(" ");var A=C.length;if(A==1){C[1]=C[0];C[2]=C[0];C[3]=C[0]}if(A==2){C[2]=C[0];C[3]=C[1]}return{top:parseInt(C[0],10)||0,right:parseInt(C[1],10)||0,bottom:parseInt(C[2],10)||0,left:parseInt(C[3],10)||0}},destroy:Ext.emptyFn};Ext.Container.LAYOUTS["auto"]=Ext.layout.ContainerLayout;
+Ext.layout.FitLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,onLayout:function(A,B){Ext.layout.FitLayout.superclass.onLayout.call(this,A,B);if(!this.container.collapsed){this.setItemSize(this.activeItem||A.items.itemAt(0),B.getStyleSize())}},setItemSize:function(B,A){if(B&&A.height>0){B.setSize(A)}}});Ext.Container.LAYOUTS["fit"]=Ext.layout.FitLayout;
+Ext.layout.CardLayout=Ext.extend(Ext.layout.FitLayout,{deferredRender:false,renderHidden:true,setActiveItem:function(A){A=this.container.getComponent(A);if(this.activeItem!=A){if(this.activeItem){this.activeItem.hide()}this.activeItem=A;A.show();this.layout()}},renderAll:function(A,B){if(this.deferredRender){this.renderItem(this.activeItem,undefined,B)}else{Ext.layout.CardLayout.superclass.renderAll.call(this,A,B)}}});Ext.Container.LAYOUTS["card"]=Ext.layout.CardLayout;
+Ext.layout.AnchorLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,getAnchorViewSize:function(A,B){return B.dom==document.body?B.getViewSize():B.getStyleSize()},onLayout:function(F,I){Ext.layout.AnchorLayout.superclass.onLayout.call(this,F,I);var O=this.getAnchorViewSize(F,I);var M=O.width,E=O.height;if(M<20||E<20){return }var B,K;if(F.anchorSize){if(typeof F.anchorSize=="number"){B=F.anchorSize}else{B=F.anchorSize.width;K=F.anchorSize.height}}else{B=F.initialConfig.width;K=F.initialConfig.height}var H=F.items.items,G=H.length,D,J,L,C,A;for(D=0;D<G;D++){J=H[D];if(J.anchor){L=J.anchorSpec;if(!L){var N=J.anchor.split(" ");J.anchorSpec=L={right:this.parseAnchor(N[0],J.initialConfig.width,B),bottom:this.parseAnchor(N[1],J.initialConfig.height,K)}}C=L.right?this.adjustWidthAnchor(L.right(M),J):undefined;A=L.bottom?this.adjustHeightAnchor(L.bottom(E),J):undefined;if(C||A){J.setSize(C||undefined,A||undefined)}}}},parseAnchor:function(B,F,A){if(B&&B!="none"){var D;if(/^(r|right|b|bottom)$/i.test(B)){var E=A-F;return function(G){if(G!==D){D=G;return G-E}}}else{if(B.indexOf("%")!=-1){var C=parseFloat(B.replace("%",""))*0.01;return function(G){if(G!==D){D=G;return Math.floor(G*C)}}}else{B=parseInt(B,10);if(!isNaN(B)){return function(G){if(G!==D){D=G;return G+B}}}}}}return false},adjustWidthAnchor:function(B,A){return B},adjustHeightAnchor:function(B,A){return B}});Ext.Container.LAYOUTS["anchor"]=Ext.layout.AnchorLayout;
+Ext.layout.ColumnLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,extraCls:"x-column",scrollOffset:0,isValidParent:function(B,A){return B.getEl().dom.parentNode==this.innerCt.dom},onLayout:function(C,F){var D=C.items.items,E=D.length,G,A;if(!this.innerCt){F.addClass("x-column-layout-ct");this.innerCt=F.createChild({cls:"x-column-inner"});this.innerCt.createChild({cls:"x-clear"})}this.renderAll(C,this.innerCt);var J=Ext.isIE&&F.dom!=Ext.getBody().dom?F.getStyleSize():F.getViewSize();if(J.width<1&&J.height<1){return }var H=J.width-F.getPadding("lr")-this.scrollOffset,B=J.height-F.getPadding("tb"),I=H;this.innerCt.setWidth(H);for(A=0;A<E;A++){G=D[A];if(!G.columnWidth){I-=(G.getSize().width+G.getEl().getMargins("lr"))}}I=I<0?0:I;for(A=0;A<E;A++){G=D[A];if(G.columnWidth){G.setSize(Math.floor(G.columnWidth*I)-G.getEl().getMargins("lr"))}}}});Ext.Container.LAYOUTS["column"]=Ext.layout.ColumnLayout;
+Ext.layout.BorderLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,rendered:false,onLayout:function(B,X){var C;if(!this.rendered){X.position();X.addClass("x-border-layout-ct");var M=B.items.items;C=[];for(var Q=0,R=M.length;Q<R;Q++){var U=M[Q];var F=U.region;if(U.collapsed){C.push(U)}U.collapsed=false;if(!U.rendered){U.cls=U.cls?U.cls+" x-border-panel":"x-border-panel";U.render(X,Q)}this[F]=F!="center"&&U.split?new Ext.layout.BorderLayout.SplitRegion(this,U.initialConfig,F):new Ext.layout.BorderLayout.Region(this,U.initialConfig,F);this[F].render(X,U)}this.rendered=true}var L=X.getViewSize();if(L.width<20||L.height<20){if(C){this.restoreCollapsed=C}return }else{if(this.restoreCollapsed){C=this.restoreCollapsed;delete this.restoreCollapsed}}var J=L.width,S=L.height;var I=J,P=S,G=0,H=0;var N=this.north,K=this.south,E=this.west,T=this.east,U=this.center;if(!U){throw"No center region defined in BorderLayout "+B.id}if(N&&N.isVisible()){var W=N.getSize();var O=N.getMargins();W.width=J-(O.left+O.right);W.x=O.left;W.y=O.top;G=W.height+W.y+O.bottom;P-=G;N.applyLayout(W)}if(K&&K.isVisible()){var W=K.getSize();var O=K.getMargins();W.width=J-(O.left+O.right);W.x=O.left;var V=(W.height+O.top+O.bottom);W.y=S-V+O.top;P-=V;K.applyLayout(W)}if(E&&E.isVisible()){var W=E.getSize();var O=E.getMargins();W.height=P-(O.top+O.bottom);W.x=O.left;W.y=G+O.top;var A=(W.width+O.left+O.right);H+=A;I-=A;E.applyLayout(W)}if(T&&T.isVisible()){var W=T.getSize();var O=T.getMargins();W.height=P-(O.top+O.bottom);var A=(W.width+O.left+O.right);W.x=J-A+O.left;W.y=G+O.top;I-=A;T.applyLayout(W)}var O=U.getMargins();var D={x:H+O.left,y:G+O.top,width:I-(O.left+O.right),height:P-(O.top+O.bottom)};U.applyLayout(D);if(C){for(var Q=0,R=C.length;Q<R;Q++){C[Q].collapse(false)}}if(Ext.isIE&&Ext.isStrict){X.repaint()}},destroy:function(){var B=["north","south","east","west"];for(var A=0;A<B.length;A++){var C=this[B[A]];if(C&&C.split){C.split.destroy(true)}}Ext.layout.BorderLayout.superclass.destroy.call(this)}});Ext.layout.BorderLayout.Region=function(B,A,C){Ext.apply(this,A);this.layout=B;this.position=C;this.state={};if(typeof this.margins=="string"){this.margins=this.layout.parseMargins(this.margins)}this.margins=Ext.applyIf(this.margins||{},this.defaultMargins);if(this.collapsible){if(typeof this.cmargins=="string"){this.cmargins=this.layout.parseMargins(this.cmargins)}if(this.collapseMode=="mini"&&!this.cmargins){this.cmargins={left:0,top:0,right:0,bottom:0}}else{this.cmargins=Ext.applyIf(this.cmargins||{},C=="north"||C=="south"?this.defaultNSCMargins:this.defaultEWCMargins)}}};Ext.layout.BorderLayout.Region.prototype={collapsible:false,split:false,floatable:true,minWidth:50,minHeight:50,defaultMargins:{left:0,top:0,right:0,bottom:0},defaultNSCMargins:{left:5,top:5,right:5,bottom:5},defaultEWCMargins:{left:5,top:0,right:5,bottom:0},isCollapsed:false,render:function(B,C){this.panel=C;C.el.enableDisplayMode();this.targetEl=B;this.el=C.el;var A=C.getState,D=this.position;C.getState=function(){return Ext.apply(A.call(C)||{},this.state)}.createDelegate(this);if(D!="center"){C.allowQueuedExpand=false;C.on({beforecollapse:this.beforeCollapse,collapse:this.onCollapse,beforeexpand:this.beforeExpand,expand:this.onExpand,hide:this.onHide,show:this.onShow,scope:this});if(this.collapsible){C.collapseEl="el";C.slideAnchor=this.getSlideAnchor()}if(C.tools&&C.tools.toggle){C.tools.toggle.addClass("x-tool-collapse-"+D);C.tools.toggle.addClassOnOver("x-tool-collapse-"+D+"-over")}}},getCollapsedEl:function(){if(!this.collapsedEl){if(!this.toolTemplate){var B=new Ext.Template("<div class=\"x-tool x-tool-{id}\">&#160;</div>");B.disableFormats=true;B.compile();Ext.layout.BorderLayout.Region.prototype.toolTemplate=B}this.collapsedEl=this.targetEl.createChild({cls:"x-layout-collapsed x-layout-collapsed-"+this.position,id:this.panel.id+"-xcollapsed"});this.collapsedEl.enableDisplayMode("block");if(this.collapseMode=="mini"){this.collapsedEl.addClass("x-layout-cmini-"+this.position);this.miniCollapsedEl=this.collapsedEl.createChild({cls:"x-layout-mini x-layout-mini-"+this.position,html:"&#160;"});this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.onExpandClick,this,{stopEvent:true})}else{var A=this.toolTemplate.append(this.collapsedEl.dom,{id:"expand-"+this.position},true);A.addClassOnOver("x-tool-expand-"+this.position+"-over");A.on("click",this.onExpandClick,this,{stopEvent:true});if(this.floatable!==false){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.collapseClick,this)}}}return this.collapsedEl},onExpandClick:function(A){if(this.isSlid){this.afterSlideIn();this.panel.expand(false)}else{this.panel.expand()}},onCollapseClick:function(A){this.panel.collapse()},beforeCollapse:function(B,A){this.lastAnim=A;if(this.splitEl){this.splitEl.hide()}this.getCollapsedEl().show();this.panel.el.setStyle("z-index",100);this.isCollapsed=true;this.layout.layout()},onCollapse:function(A){this.panel.el.setStyle("z-index",1);if(this.lastAnim===false||this.panel.animCollapse===false){this.getCollapsedEl().dom.style.visibility="visible"}else{this.getCollapsedEl().slideIn(this.panel.slideAnchor,{duration:0.2})}this.state.collapsed=true;this.panel.saveState()},beforeExpand:function(A){var B=this.getCollapsedEl();this.el.show();if(this.position=="east"||this.position=="west"){this.panel.setSize(undefined,B.getHeight())}else{this.panel.setSize(B.getWidth(),undefined)}B.hide();B.dom.style.visibility="hidden";this.panel.el.setStyle("z-index",100)},onExpand:function(){this.isCollapsed=false;if(this.splitEl){this.splitEl.show()}this.layout.layout();this.panel.el.setStyle("z-index",1);this.state.collapsed=false;this.panel.saveState()},collapseClick:function(A){if(this.isSlid){A.stopPropagation();this.slideIn()}else{A.stopPropagation();this.slideOut()}},onHide:function(){if(this.isCollapsed){this.getCollapsedEl().hide()}else{if(this.splitEl){this.splitEl.hide()}}},onShow:function(){if(this.isCollapsed){this.getCollapsedEl().show()}else{if(this.splitEl){this.splitEl.show()}}},isVisible:function(){return !this.panel.hidden},getMargins:function(){return this.isCollapsed&&this.cmargins?this.cmargins:this.margins},getSize:function(){return this.isCollapsed?this.getCollapsedEl().getSize():this.panel.getSize()},setPanel:function(A){this.panel=A},getMinWidth:function(){return this.minWidth},getMinHeight:function(){return this.minHeight},applyLayoutCollapsed:function(A){var B=this.getCollapsedEl();B.setLeftTop(A.x,A.y);B.setSize(A.width,A.height)},applyLayout:function(A){if(this.isCollapsed){this.applyLayoutCollapsed(A)}else{this.panel.setPosition(A.x,A.y);this.panel.setSize(A.width,A.height)}},beforeSlide:function(){this.panel.beforeEffect()},afterSlide:function(){this.panel.afterEffect()},initAutoHide:function(){if(this.autoHide!==false){if(!this.autoHideHd){var A=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={"mouseout":function(B){if(!B.within(this.el,true)){A.delay(500)}},"mouseover":function(B){A.cancel()},scope:this}}this.el.on(this.autoHideHd)}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover)}},clearMonitor:function(){Ext.getDoc().un("click",this.slideInIf,this)},slideOut:function(){if(this.isSlid||this.el.hasActiveFx()){return }this.isSlid=true;var A=this.panel.tools;if(A&&A.toggle){A.toggle.hide()}this.el.show();if(this.position=="east"||this.position=="west"){this.panel.setSize(undefined,this.collapsedEl.getHeight())}else{this.panel.setSize(this.collapsedEl.getWidth(),undefined)}this.restoreLT=[this.el.dom.style.left,this.el.dom.style.top];this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.el.setStyle("z-index",102);if(this.animFloat!==false){this.beforeSlide();this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.afterSlide();this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)},scope:this,block:true})}else{this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)}},afterSlideIn:function(){this.clearAutoHide();this.isSlid=false;this.clearMonitor();this.el.setStyle("z-index","");this.el.dom.style.left=this.restoreLT[0];this.el.dom.style.top=this.restoreLT[1];var A=this.panel.tools;if(A&&A.toggle){A.toggle.show()}},slideIn:function(A){if(!this.isSlid||this.el.hasActiveFx()){Ext.callback(A);return }this.isSlid=false;if(this.animFloat!==false){this.beforeSlide();this.el.slideOut(this.getSlideAnchor(),{callback:function(){this.el.hide();this.afterSlide();this.afterSlideIn();Ext.callback(A)},scope:this,block:true})}else{this.el.hide();this.afterSlideIn()}},slideInIf:function(A){if(!A.within(this.el)){this.slideIn()}},anchors:{"west":"left","east":"right","north":"top","south":"bottom"},sanchors:{"west":"l","east":"r","north":"t","south":"b"},canchors:{"west":"tl-tr","east":"tr-tl","north":"tl-bl","south":"bl-tl"},getAnchor:function(){return this.anchors[this.position]},getCollapseAnchor:function(){return this.canchors[this.position]},getSlideAnchor:function(){return this.sanchors[this.position]},getAlignAdj:function(){var A=this.cmargins;switch(this.position){case"west":return[0,0];break;case"east":return[0,0];break;case"north":return[0,0];break;case"south":return[0,0];break}},getExpandAdj:function(){var B=this.collapsedEl,A=this.cmargins;switch(this.position){case"west":return[-(A.right+B.getWidth()+A.left),0];break;case"east":return[A.right+B.getWidth()+A.left,0];break;case"north":return[0,-(A.top+A.bottom+B.getHeight())];break;case"south":return[0,A.top+A.bottom+B.getHeight()];break}}};Ext.layout.BorderLayout.SplitRegion=function(B,A,C){Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this,B,A,C);this.applyLayout=this.applyFns[C]};Ext.extend(Ext.layout.BorderLayout.SplitRegion,Ext.layout.BorderLayout.Region,{splitTip:"Drag to resize.",collapsibleSplitTip:"Drag to resize. Double click to hide.",useSplitTips:false,splitSettings:{north:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.TOP,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},south:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.BOTTOM,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},east:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.RIGHT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"},west:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.LEFT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"}},applyFns:{west:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;this.panel.setPosition(C.x,C.y);var A=D.offsetWidth;B.left=(C.x+C.width-A)+"px";B.top=(C.y)+"px";B.height=Math.max(0,C.height)+"px";this.panel.setSize(C.width-A,C.height)},east:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetWidth;this.panel.setPosition(C.x+A,C.y);B.left=(C.x)+"px";B.top=(C.y)+"px";B.height=Math.max(0,C.height)+"px";this.panel.setSize(C.width-A,C.height)},north:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetHeight;this.panel.setPosition(C.x,C.y);B.left=(C.x)+"px";B.top=(C.y+C.height-A)+"px";B.width=Math.max(0,C.width)+"px";this.panel.setSize(C.width,C.height-A)},south:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetHeight;this.panel.setPosition(C.x,C.y+A);B.left=(C.x)+"px";B.top=(C.y)+"px";B.width=Math.max(0,C.width)+"px";this.panel.setSize(C.width,C.height-A)}},render:function(A,C){Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this,A,C);var D=this.position;this.splitEl=A.createChild({cls:"x-layout-split x-layout-split-"+D,html:"&#160;",id:this.panel.id+"-xsplit"});if(this.collapseMode=="mini"){this.miniSplitEl=this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-"+D,html:"&#160;"});this.miniSplitEl.addClassOnOver("x-layout-mini-over");this.miniSplitEl.on("click",this.onCollapseClick,this,{stopEvent:true})}var B=this.splitSettings[D];this.split=new Ext.SplitBar(this.splitEl.dom,C.el,B.orientation);this.split.placement=B.placement;this.split.getMaximumSize=this[B.maxFn].createDelegate(this);this.split.minSize=this.minSize||this[B.minProp];this.split.on("beforeapply",this.onSplitMove,this);this.split.useShim=this.useShim===true;this.maxSize=this.maxSize||this[B.maxProp];if(C.hidden){this.splitEl.hide()}if(this.useSplitTips){this.splitEl.dom.title=this.collapsible?this.collapsibleSplitTip:this.splitTip}if(this.collapsible){this.splitEl.on("dblclick",this.onCollapseClick,this)}},getSize:function(){if(this.isCollapsed){return this.collapsedEl.getSize()}var A=this.panel.getSize();if(this.position=="north"||this.position=="south"){A.height+=this.splitEl.dom.offsetHeight}else{A.width+=this.splitEl.dom.offsetWidth}return A},getHMaxSize:function(){var B=this.maxSize||10000;var A=this.layout.center;return Math.min(B,(this.el.getWidth()+A.el.getWidth())-A.getMinWidth())},getVMaxSize:function(){var B=this.maxSize||10000;var A=this.layout.center;return Math.min(B,(this.el.getHeight()+A.el.getHeight())-A.getMinHeight())},onSplitMove:function(B,A){var C=this.panel.getSize();this.lastSplitSize=A;if(this.position=="north"||this.position=="south"){this.panel.setSize(C.width,A);this.state.height=A}else{this.panel.setSize(A,C.height);this.state.width=A}this.layout.layout();this.panel.saveState();return false},getSplitBar:function(){return this.split}});Ext.Container.LAYOUTS["border"]=Ext.layout.BorderLayout;
+Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{labelSeparator:":",getAnchorViewSize:function(A,B){return A.body.getStyleSize()},setContainer:function(B){Ext.layout.FormLayout.superclass.setContainer.call(this,B);if(B.labelAlign){B.addClass("x-form-label-"+B.labelAlign)}if(B.hideLabels){this.labelStyle="display:none";this.elementStyle="padding-left:0;";this.labelAdjust=0}else{this.labelSeparator=B.labelSeparator||this.labelSeparator;B.labelWidth=B.labelWidth||100;if(typeof B.labelWidth=="number"){var C=(typeof B.labelPad=="number"?B.labelPad:5);this.labelAdjust=B.labelWidth+C;this.labelStyle="width:"+B.labelWidth+"px;";this.elementStyle="padding-left:"+(B.labelWidth+C)+"px"}if(B.labelAlign=="top"){this.labelStyle="width:auto;";this.labelAdjust=0;this.elementStyle="padding-left:0;"}}if(!this.fieldTpl){var A=new Ext.Template("<div class=\"x-form-item {5}\" tabIndex=\"-1\">","<label for=\"{0}\" style=\"{2}\" class=\"x-form-item-label\">{1}{4}</label>","<div class=\"x-form-element\" id=\"x-form-el-{0}\" style=\"{3}\">","</div><div class=\"{6}\"></div>","</div>");A.disableFormats=true;A.compile();Ext.layout.FormLayout.prototype.fieldTpl=A}},renderItem:function(D,A,C){if(D&&!D.rendered&&D.isFormField&&D.inputType!="hidden"){var B=[D.id,D.fieldLabel,D.labelStyle||this.labelStyle||"",this.elementStyle||"",typeof D.labelSeparator=="undefined"?this.labelSeparator:D.labelSeparator,(D.itemCls||this.container.itemCls||"")+(D.hideLabel?" x-hide-label":""),D.clearCls||"x-form-clear-left"];if(typeof A=="number"){A=C.dom.childNodes[A]||null}if(A){this.fieldTpl.insertBefore(A,B)}else{this.fieldTpl.append(C,B)}D.render("x-form-el-"+D.id)}else{Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments)}},adjustWidthAnchor:function(B,A){return B-(A.isFormField?(A.hideLabel?0:this.labelAdjust):0)},isValidParent:function(B,A){return true}});Ext.Container.LAYOUTS["form"]=Ext.layout.FormLayout;
+Ext.layout.Accordion=Ext.extend(Ext.layout.FitLayout,{fill:true,autoWidth:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:false,animate:false,sequence:false,activeOnTop:false,renderItem:function(A){if(this.animate===false){A.animCollapse=false}A.collapsible=true;if(this.autoWidth){A.autoWidth=true}if(this.titleCollapse){A.titleCollapse=true}if(this.hideCollapseTool){A.hideCollapseTool=true}if(this.collapseFirst!==undefined){A.collapseFirst=this.collapseFirst}if(!this.activeItem&&!A.collapsed){this.activeItem=A}else{if(this.activeItem){A.collapsed=true}}Ext.layout.Accordion.superclass.renderItem.apply(this,arguments);A.header.addClass("x-accordion-hd");A.on("beforeexpand",this.beforeExpand,this)},beforeExpand:function(C,B){var A=this.activeItem;if(A){if(this.sequence){delete this.activeItem;if(!A.collapsed){A.collapse({callback:function(){C.expand(B||true)},scope:this});return false}}else{A.collapse(this.animate)}}this.activeItem=C;if(this.activeOnTop){C.el.dom.parentNode.insertBefore(C.el.dom,C.el.dom.parentNode.firstChild)}this.layout()},setItemSize:function(F,E){if(this.fill&&F){var B=this.container.items.items;var D=0;for(var C=0,A=B.length;C<A;C++){var G=B[C];if(G!=F){D+=(G.getSize().height-G.bwrap.getHeight())}}E.height-=D;F.setSize(E)}}});Ext.Container.LAYOUTS["accordion"]=Ext.layout.Accordion;
+Ext.layout.TableLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:false,setContainer:function(A){Ext.layout.TableLayout.superclass.setContainer.call(this,A);this.currentRow=0;this.currentColumn=0;this.cells=[]},onLayout:function(C,E){var D=C.items.items,A=D.length,F,B;if(!this.table){E.addClass("x-table-layout-ct");this.table=E.createChild({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},null,true);this.renderAll(C,E)}},getRow:function(A){var B=this.table.tBodies[0].childNodes[A];if(!B){B=document.createElement("tr");this.table.tBodies[0].appendChild(B)}return B},getNextCell:function(H){var A=this.getNextNonSpan(this.currentColumn,this.currentRow);var E=this.currentColumn=A[0],D=this.currentRow=A[1];for(var G=D;G<D+(H.rowspan||1);G++){if(!this.cells[G]){this.cells[G]=[]}for(var C=E;C<E+(H.colspan||1);C++){this.cells[G][C]=true}}var F=document.createElement("td");if(H.cellId){F.id=H.cellId}var B="x-table-layout-cell";if(H.cellCls){B+=" "+H.cellCls}F.className=B;if(H.colspan){F.colSpan=H.colspan}if(H.rowspan){F.rowSpan=H.rowspan}this.getRow(D).appendChild(F);return F},getNextNonSpan:function(A,C){var B=this.columns;while((B&&A>=B)||(this.cells[C]&&this.cells[C][A])){if(B&&A>=B){C++;A=0}else{A++}}return[A,C]},renderItem:function(C,A,B){if(C&&!C.rendered){C.render(this.getNextCell(C))}},isValidParent:function(B,A){return true}});Ext.Container.LAYOUTS["table"]=Ext.layout.TableLayout;
+Ext.layout.AbsoluteLayout=Ext.extend(Ext.layout.AnchorLayout,{extraCls:"x-abs-layout-item",isForm:false,setContainer:function(A){Ext.layout.AbsoluteLayout.superclass.setContainer.call(this,A);if(A.isXType("form")){this.isForm=true}},onLayout:function(A,B){if(this.isForm){A.body.position()}else{B.position()}Ext.layout.AbsoluteLayout.superclass.onLayout.call(this,A,B)},getAnchorViewSize:function(A,B){return this.isForm?A.body.getStyleSize():Ext.layout.AbsoluteLayout.superclass.getAnchorViewSize.call(this,A,B)},isValidParent:function(B,A){return this.isForm?true:Ext.layout.AbsoluteLayout.superclass.isValidParent.call(this,B,A)},adjustWidthAnchor:function(B,A){return B?B-A.getPosition(true)[0]:B},adjustHeightAnchor:function(B,A){return B?B-A.getPosition(true)[1]:B}});Ext.Container.LAYOUTS["absolute"]=Ext.layout.AbsoluteLayout;
+Ext.Viewport=Ext.extend(Ext.Container,{initComponent:function(){Ext.Viewport.superclass.initComponent.call(this);document.getElementsByTagName("html")[0].className+=" x-viewport";this.el=Ext.getBody();this.el.setHeight=Ext.emptyFn;this.el.setWidth=Ext.emptyFn;this.el.setSize=Ext.emptyFn;this.el.dom.scroll="no";this.allowDomMove=false;this.autoWidth=true;this.autoHeight=true;Ext.EventManager.onWindowResize(this.fireResize,this);this.renderTo=this.el},fireResize:function(A,B){this.fireEvent("resize",this,A,B,A,B)}});Ext.reg("viewport",Ext.Viewport);
+Ext.Panel=Ext.extend(Ext.Container,{baseCls:"x-panel",collapsedCls:"x-panel-collapsed",maskDisabled:true,animCollapse:Ext.enableFx,headerAsText:true,buttonAlign:"right",collapsed:false,collapseFirst:true,minButtonWidth:75,elements:"body",toolTarget:"header",collapseEl:"bwrap",slideAnchor:"t",disabledClass:"",deferHeight:true,expandDefaults:{duration:0.25},collapseDefaults:{duration:0.25},initComponent:function(){Ext.Panel.superclass.initComponent.call(this);this.addEvents("bodyresize","titlechange","collapse","expand","beforecollapse","beforeexpand","beforeclose","close","activate","deactivate");if(this.tbar){this.elements+=",tbar";if(typeof this.tbar=="object"){this.topToolbar=this.tbar}delete this.tbar}if(this.bbar){this.elements+=",bbar";if(typeof this.bbar=="object"){this.bottomToolbar=this.bbar}delete this.bbar}if(this.header===true){this.elements+=",header";delete this.header}else{if(this.title&&this.header!==false){this.elements+=",header"}}if(this.footer===true){this.elements+=",footer";delete this.footer}if(this.buttons){var C=this.buttons;this.buttons=[];for(var B=0,A=C.length;B<A;B++){if(C[B].render){C[B].ownerCt=this;this.buttons.push(C[B])}else{this.addButton(C[B])}}}if(this.autoLoad){this.on("render",this.doAutoLoad,this,{delay:10})}},createElement:function(A,C){if(this[A]){C.appendChild(this[A].dom);return }if(A==="bwrap"||this.elements.indexOf(A)!=-1){if(this[A+"Cfg"]){this[A]=Ext.fly(C).createChild(this[A+"Cfg"])}else{var B=document.createElement("div");B.className=this[A+"Cls"];this[A]=Ext.get(C.appendChild(B))}}},onRender:function(H,G){Ext.Panel.superclass.onRender.call(this,H,G);this.createClasses();if(this.el){this.el.addClass(this.baseCls);this.header=this.el.down("."+this.headerCls);this.bwrap=this.el.down("."+this.bwrapCls);var M=this.bwrap?this.bwrap:this.el;this.tbar=M.down("."+this.tbarCls);this.body=M.down("."+this.bodyCls);this.bbar=M.down("."+this.bbarCls);this.footer=M.down("."+this.footerCls);this.fromMarkup=true}else{this.el=H.createChild({id:this.id,cls:this.baseCls},G)}var A=this.el,K=A.dom;if(this.cls){this.el.addClass(this.cls)}if(this.buttons){this.elements+=",footer"}if(this.frame){A.insertHtml("afterBegin",String.format(Ext.Element.boxMarkup,this.baseCls));this.createElement("header",K.firstChild.firstChild.firstChild);this.createElement("bwrap",K);var O=this.bwrap.dom;var E=K.childNodes[1],B=K.childNodes[2];O.appendChild(E);O.appendChild(B);var P=O.firstChild.firstChild.firstChild;this.createElement("tbar",P);this.createElement("body",P);this.createElement("bbar",P);this.createElement("footer",O.lastChild.firstChild.firstChild);if(!this.footer){this.bwrap.dom.lastChild.className+=" x-panel-nofooter"}}else{this.createElement("header",K);this.createElement("bwrap",K);var O=this.bwrap.dom;this.createElement("tbar",O);this.createElement("body",O);this.createElement("bbar",O);this.createElement("footer",O);if(!this.header){this.body.addClass(this.bodyCls+"-noheader");if(this.tbar){this.tbar.addClass(this.tbarCls+"-noheader")}}}if(this.border===false){this.el.addClass(this.baseCls+"-noborder");this.body.addClass(this.bodyCls+"-noborder");if(this.header){this.header.addClass(this.headerCls+"-noborder")}if(this.footer){this.footer.addClass(this.footerCls+"-noborder")}if(this.tbar){this.tbar.addClass(this.tbarCls+"-noborder")}if(this.bbar){this.bbar.addClass(this.bbarCls+"-noborder")}}if(this.bodyBorder===false){this.body.addClass(this.bodyCls+"-noborder")}if(this.bodyStyle){this.body.applyStyles(this.bodyStyle)}this.bwrap.enableDisplayMode("block");if(this.header){this.header.unselectable();if(this.headerAsText){this.header.dom.innerHTML="<span class=\""+this.headerTextCls+"\">"+this.header.dom.innerHTML+"</span>";if(this.iconCls){this.setIconClass(this.iconCls)}}}if(this.floating){this.makeFloating(this.floating)}if(this.collapsible){this.tools=this.tools?this.tools.slice(0):[];if(!this.hideCollapseTool){this.tools[this.collapseFirst?"unshift":"push"]({id:"toggle",handler:this.toggleCollapse,scope:this})}if(this.titleCollapse&&this.header){this.header.on("click",this.toggleCollapse,this);this.header.setStyle("cursor","pointer")}}if(this.tools){var J=this.tools;this.tools={};this.addTool.apply(this,J)}else{this.tools={}}if(this.buttons&&this.buttons.length>0){var D=this.footer.createChild({cls:"x-panel-btns-ct",cn:{cls:"x-panel-btns x-panel-btns-"+this.buttonAlign,html:"<table cellspacing=\"0\"><tbody><tr></tr></tbody></table><div class=\"x-clear\"></div>"}},null,true);var L=D.getElementsByTagName("tr")[0];for(var F=0,I=this.buttons.length;F<I;F++){var N=this.buttons[F];var C=document.createElement("td");C.className="x-panel-btn-td";N.render(L.appendChild(C))}}if(this.tbar&&this.topToolbar){if(Ext.isArray(this.topToolbar)){this.topToolbar=new Ext.Toolbar(this.topToolbar)}this.topToolbar.render(this.tbar);this.topToolbar.ownerCt=this}if(this.bbar&&this.bottomToolbar){if(Ext.isArray(this.bottomToolbar)){this.bottomToolbar=new Ext.Toolbar(this.bottomToolbar)}this.bottomToolbar.render(this.bbar);this.bottomToolbar.ownerCt=this}},setIconClass:function(B){var A=this.iconCls;this.iconCls=B;if(this.rendered&&this.header){if(this.frame){this.header.addClass("x-panel-icon");this.header.replaceClass(A,this.iconCls)}else{var D=this.header.dom;var C=D.firstChild&&String(D.firstChild.tagName).toLowerCase()=="img"?D.firstChild:null;if(C){Ext.fly(C).replaceClass(A,this.iconCls)}else{Ext.DomHelper.insertBefore(D.firstChild,{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-panel-inline-icon "+this.iconCls})}}}},makeFloating:function(A){this.floating=true;this.el=new Ext.Layer(typeof A=="object"?A:{shadow:this.shadow!==undefined?this.shadow:"sides",shadowOffset:this.shadowOffset,constrain:false,shim:this.shim===false?false:undefined},this.el)},getTopToolbar:function(){return this.topToolbar},getBottomToolbar:function(){return this.bottomToolbar},addButton:function(A,D,C){var E={handler:D,scope:C,minWidth:this.minButtonWidth,hideParent:true};if(typeof A=="string"){E.text=A}else{Ext.apply(E,A)}var B=new Ext.Button(E);B.ownerCt=this;if(!this.buttons){this.buttons=[]}this.buttons.push(B);return B},addTool:function(){if(!this[this.toolTarget]){return }if(!this.toolTemplate){var F=new Ext.Template("<div class=\"x-tool x-tool-{id}\">&#160;</div>");F.disableFormats=true;F.compile();Ext.Panel.prototype.toolTemplate=F}for(var E=0,C=arguments,B=C.length;E<B;E++){var A=C[E],G="x-tool-"+A.id+"-over";var D=this.toolTemplate.insertFirst((A.align!=="left")?this[this.toolTarget]:this[this.toolTarget].child("span"),A,true);this.tools[A.id]=D;D.enableDisplayMode("block");D.on("click",this.createToolHandler(D,A,G,this));if(A.on){D.on(A.on)}if(A.hidden){D.hide()}if(A.qtip){if(typeof A.qtip=="object"){Ext.QuickTips.register(Ext.apply({target:D.id},A.qtip))}else{D.dom.qtip=A.qtip}}D.addClassOnOver(G)}},onShow:function(){if(this.floating){return this.el.show()}Ext.Panel.superclass.onShow.call(this)},onHide:function(){if(this.floating){return this.el.hide()}Ext.Panel.superclass.onHide.call(this)},createToolHandler:function(C,A,D,B){return function(E){C.removeClass(D);E.stopEvent();if(A.handler){A.handler.call(A.scope||C,E,C,B)}}},afterRender:function(){if(this.fromMarkup&&this.height===undefined&&!this.autoHeight){this.height=this.el.getHeight()}if(this.floating&&!this.hidden&&!this.initHidden){this.el.show()}if(this.title){this.setTitle(this.title)}this.setAutoScroll();if(this.html){this.body.update(typeof this.html=="object"?Ext.DomHelper.markup(this.html):this.html);delete this.html}if(this.contentEl){var A=Ext.getDom(this.contentEl);Ext.fly(A).removeClass(["x-hidden","x-hide-display"]);this.body.dom.appendChild(A)}if(this.collapsed){this.collapsed=false;this.collapse(false)}Ext.Panel.superclass.afterRender.call(this);this.initEvents()},setAutoScroll:function(){if(this.rendered&&this.autoScroll){var A=this.body||this.el;if(A){A.setOverflow("auto")}}},getKeyMap:function(){if(!this.keyMap){this.keyMap=new Ext.KeyMap(this.el,this.keys)}return this.keyMap},initEvents:function(){if(this.keys){this.getKeyMap()}if(this.draggable){this.initDraggable()}},initDraggable:function(){this.dd=new Ext.Panel.DD(this,typeof this.draggable=="boolean"?null:this.draggable)},beforeEffect:function(){if(this.floating){this.el.beforeAction()}this.el.addClass("x-panel-animated")},afterEffect:function(){this.syncShadow();this.el.removeClass("x-panel-animated")},createEffect:function(B,A,C){var D={scope:C,block:true};if(B===true){D.callback=A;return D}else{if(!B.callback){D.callback=A}else{D.callback=function(){A.call(C);Ext.callback(B.callback,B.scope)}}}return Ext.applyIf(D,B)},collapse:function(B){if(this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforecollapse",this,B)===false){return }var A=B===true||(B!==false&&this.animCollapse);this.beforeEffect();this.onCollapse(A,B);return this},onCollapse:function(A,B){if(A){this[this.collapseEl].slideOut(this.slideAnchor,Ext.apply(this.createEffect(B||true,this.afterCollapse,this),this.collapseDefaults))}else{this[this.collapseEl].hide();this.afterCollapse()}},afterCollapse:function(){this.collapsed=true;this.el.addClass(this.collapsedCls);this.afterEffect();this.fireEvent("collapse",this)},expand:function(B){if(!this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforeexpand",this,B)===false){return }var A=B===true||(B!==false&&this.animCollapse);this.el.removeClass(this.collapsedCls);this.beforeEffect();this.onExpand(A,B);return this},onExpand:function(A,B){if(A){this[this.collapseEl].slideIn(this.slideAnchor,Ext.apply(this.createEffect(B||true,this.afterExpand,this),this.expandDefaults))}else{this[this.collapseEl].show();this.afterExpand()}},afterExpand:function(){this.collapsed=false;this.afterEffect();this.fireEvent("expand",this)},toggleCollapse:function(A){this[this.collapsed?"expand":"collapse"](A);return this},onDisable:function(){if(this.rendered&&this.maskDisabled){this.el.mask()}Ext.Panel.superclass.onDisable.call(this)},onEnable:function(){if(this.rendered&&this.maskDisabled){this.el.unmask()}Ext.Panel.superclass.onEnable.call(this)},onResize:function(A,B){if(A!==undefined||B!==undefined){if(!this.collapsed){if(typeof A=="number"){this.body.setWidth(this.adjustBodyWidth(A-this.getFrameWidth()))}else{if(A=="auto"){this.body.setWidth(A)}}if(typeof B=="number"){this.body.setHeight(this.adjustBodyHeight(B-this.getFrameHeight()))}else{if(B=="auto"){this.body.setHeight(B)}}if(this.disabled&&this.el._mask){this.el._mask.setSize(this.el.dom.clientWidth,this.el.getHeight())}}else{this.queuedBodySize={width:A,height:B};if(!this.queuedExpand&&this.allowQueuedExpand!==false){this.queuedExpand=true;this.on("expand",function(){delete this.queuedExpand;this.onResize(this.queuedBodySize.width,this.queuedBodySize.height);this.doLayout()},this,{single:true})}}this.fireEvent("bodyresize",this,A,B)}this.syncShadow()},adjustBodyHeight:function(A){return A},adjustBodyWidth:function(A){return A},onPosition:function(){this.syncShadow()},getFrameWidth:function(){var B=this.el.getFrameWidth("lr");if(this.frame){var A=this.bwrap.dom.firstChild;B+=(Ext.fly(A).getFrameWidth("l")+Ext.fly(A.firstChild).getFrameWidth("r"));var C=this.bwrap.dom.firstChild.firstChild.firstChild;B+=Ext.fly(C).getFrameWidth("lr")}return B},getFrameHeight:function(){var A=this.el.getFrameWidth("tb");A+=(this.tbar?this.tbar.getHeight():0)+(this.bbar?this.bbar.getHeight():0);if(this.frame){var C=this.el.dom.firstChild;var D=this.bwrap.dom.lastChild;A+=(C.offsetHeight+D.offsetHeight);var B=this.bwrap.dom.firstChild.firstChild.firstChild;A+=Ext.fly(B).getFrameWidth("tb")}else{A+=(this.header?this.header.getHeight():0)+(this.footer?this.footer.getHeight():0)}return A},getInnerWidth:function(){return this.getSize().width-this.getFrameWidth()},getInnerHeight:function(){return this.getSize().height-this.getFrameHeight()},syncShadow:function(){if(this.floating){this.el.sync(true)}},getLayoutTarget:function(){return this.body},setTitle:function(B,A){this.title=B;if(this.header&&this.headerAsText){this.header.child("span").update(B)}if(A){this.setIconClass(A)}this.fireEvent("titlechange",this,B);return this},getUpdater:function(){return this.body.getUpdater()},load:function(){var A=this.body.getUpdater();A.update.apply(A,arguments);return this},beforeDestroy:function(){Ext.Element.uncache(this.header,this.tbar,this.bbar,this.footer,this.body);if(this.tools){for(var B in this.tools){Ext.destroy(this.tools[B])}}if(this.buttons){for(var A in this.buttons){Ext.destroy(this.buttons[A])}}Ext.destroy(this.topToolbar,this.bottomToolbar);Ext.Panel.superclass.beforeDestroy.call(this)},createClasses:function(){this.headerCls=this.baseCls+"-header";this.headerTextCls=this.baseCls+"-header-text";this.bwrapCls=this.baseCls+"-bwrap";this.tbarCls=this.baseCls+"-tbar";this.bodyCls=this.baseCls+"-body";this.bbarCls=this.baseCls+"-bbar";this.footerCls=this.baseCls+"-footer"},createGhost:function(A,E,B){var D=document.createElement("div");D.className="x-panel-ghost "+(A?A:"");if(this.header){D.appendChild(this.el.dom.firstChild.cloneNode(true))}Ext.fly(D.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight());D.style.width=this.el.dom.offsetWidth+"px";if(!B){this.container.dom.appendChild(D)}else{Ext.getDom(B).appendChild(D)}if(E!==false&&this.el.useShim!==false){var C=new Ext.Layer({shadow:false,useDisplay:true,constrain:false},D);C.show();return C}else{return new Ext.Element(D)}},doAutoLoad:function(){this.body.load(typeof this.autoLoad=="object"?this.autoLoad:{url:this.autoLoad})}});Ext.reg("panel",Ext.Panel);
+Ext.Window=Ext.extend(Ext.Panel,{baseCls:"x-window",resizable:true,draggable:true,closable:true,constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:100,minWidth:200,expandOnShow:true,closeAction:"close",elements:"header,body",collapsible:false,initHidden:true,monitorResize:true,frame:true,floating:true,initComponent:function(){Ext.Window.superclass.initComponent.call(this);this.addEvents("resize","maximize","minimize","restore")},getState:function(){return Ext.apply(Ext.Window.superclass.getState.call(this)||{},this.getBox())},onRender:function(B,A){Ext.Window.superclass.onRender.call(this,B,A);if(this.plain){this.el.addClass("x-window-plain")}this.focusEl=this.el.createChild({tag:"a",href:"#",cls:"x-dlg-focus",tabIndex:"-1",html:"&#160;"});this.focusEl.swallowEvent("click",true);this.proxy=this.el.createProxy("x-window-proxy");this.proxy.enableDisplayMode("block");if(this.modal){this.mask=this.container.createChild({cls:"ext-el-mask"},this.el.dom);this.mask.enableDisplayMode("block");this.mask.hide()}},initEvents:function(){Ext.Window.superclass.initEvents.call(this);if(this.animateTarget){this.setAnimateTarget(this.animateTarget)}if(this.resizable){this.resizer=new Ext.Resizable(this.el,{minWidth:this.minWidth,minHeight:this.minHeight,handles:this.resizeHandles||"all",pinned:true,resizeElement:this.resizerAction});this.resizer.window=this;this.resizer.on("beforeresize",this.beforeResize,this)}if(this.draggable){this.header.addClass("x-window-draggable")}this.initTools();this.el.on("mousedown",this.toFront,this);this.manager=this.manager||Ext.WindowMgr;this.manager.register(this);this.hidden=true;if(this.maximized){this.maximized=false;this.maximize()}if(this.closable){var A=this.getKeyMap();A.on(27,this.onEsc,this);A.disable()}},initDraggable:function(){this.dd=new Ext.Window.DD(this)},onEsc:function(){this[this.closeAction]()},beforeDestroy:function(){Ext.destroy(this.resizer,this.dd,this.proxy,this.mask);Ext.Window.superclass.beforeDestroy.call(this)},onDestroy:function(){if(this.manager){this.manager.unregister(this)}Ext.Window.superclass.onDestroy.call(this)},initTools:function(){if(this.minimizable){this.addTool({id:"minimize",handler:this.minimize.createDelegate(this,[])})}if(this.maximizable){this.addTool({id:"maximize",handler:this.maximize.createDelegate(this,[])});this.addTool({id:"restore",handler:this.restore.createDelegate(this,[]),hidden:true});this.header.on("dblclick",this.toggleMaximize,this)}if(this.closable){this.addTool({id:"close",handler:this[this.closeAction].createDelegate(this,[])})}},resizerAction:function(){var A=this.proxy.getBox();this.proxy.hide();this.window.handleResize(A);return A},beforeResize:function(){this.resizer.minHeight=Math.max(this.minHeight,this.getFrameHeight()+40);this.resizer.minWidth=Math.max(this.minWidth,this.getFrameWidth()+40);this.resizeBox=this.el.getBox()},updateHandles:function(){if(Ext.isIE&&this.resizer){this.resizer.syncHandleHeight();this.el.repaint()}},handleResize:function(B){var A=this.resizeBox;if(A.x!=B.x||A.y!=B.y){this.updateBox(B)}else{this.setSize(B)}this.focus();this.updateHandles();this.saveState();if(this.layout){this.doLayout()}this.fireEvent("resize",this,B.width,B.height)},focus:function(){var C=this.focusEl,A=this.defaultButton,B=typeof A;if(B!="undefined"){if(B=="number"){C=this.buttons[A]}else{if(B=="string"){C=Ext.getCmp(A)}else{C=A}}}C.focus.defer(10,C)},setAnimateTarget:function(A){A=Ext.get(A);this.animateTarget=A},beforeShow:function(){delete this.el.lastXY;delete this.el.lastLT;if(this.x===undefined||this.y===undefined){var A=this.el.getAlignToXY(this.container,"c-c");var B=this.el.translatePoints(A[0],A[1]);this.x=this.x===undefined?B.left:this.x;this.y=this.y===undefined?B.top:this.y}this.el.setLeftTop(this.x,this.y);if(this.expandOnShow){this.expand(false)}if(this.modal){Ext.getBody().addClass("x-body-masked");this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.mask.show()}},show:function(C,A,B){if(!this.rendered){this.render(Ext.getBody())}if(this.hidden===false){this.toFront();return }if(this.fireEvent("beforeshow",this)===false){return }if(A){this.on("show",A,B,{single:true})}this.hidden=false;if(C!==undefined){this.setAnimateTarget(C)}this.beforeShow();if(this.animateTarget){this.animShow()}else{this.afterShow()}},afterShow:function(){this.proxy.hide();this.el.setStyle("display","block");this.el.show();if(this.maximized){this.fitContainer()}if(Ext.isMac&&Ext.isGecko){this.cascade(this.setAutoScroll)}if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.onWindowResize(this.onWindowResize,this)}this.doConstrain();if(this.layout){this.doLayout()}if(this.keyMap){this.keyMap.enable()}this.toFront();this.updateHandles();this.fireEvent("show",this)},animShow:function(){this.proxy.show();this.proxy.setBox(this.animateTarget.getBox());this.proxy.setOpacity(0);var A=this.getBox(false);A.callback=this.afterShow;A.scope=this;A.duration=0.25;A.easing="easeNone";A.opacity=0.5;A.block=true;this.el.setStyle("display","none");this.proxy.shift(A)},hide:function(C,A,B){if(this.activeGhost){this.hide.defer(100,this,[C,A,B]);return }if(this.hidden||this.fireEvent("beforehide",this)===false){return }if(A){this.on("hide",A,B,{single:true})}this.hidden=true;if(C!==undefined){this.setAnimateTarget(C)}if(this.animateTarget){this.animHide()}else{this.el.hide();this.afterHide()}},afterHide:function(){this.proxy.hide();if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.removeResizeListener(this.onWindowResize,this)}if(this.modal){this.mask.hide();Ext.getBody().removeClass("x-body-masked")}if(this.keyMap){this.keyMap.disable()}this.fireEvent("hide",this)},animHide:function(){this.proxy.setOpacity(0.5);this.proxy.show();var B=this.getBox(false);this.proxy.setBox(B);this.el.hide();var A=this.animateTarget.getBox();A.callback=this.afterHide;A.scope=this;A.duration=0.25;A.easing="easeNone";A.block=true;A.opacity=0;this.proxy.shift(A)},onWindowResize:function(){if(this.maximized){this.fitContainer()}if(this.modal){this.mask.setSize("100%","100%");var A=this.mask.dom.offsetHeight;this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true))}this.doConstrain()},doConstrain:function(){if(this.constrain||this.constrainHeader){var B;if(this.constrain){B={right:this.el.shadowOffset,left:this.el.shadowOffset,bottom:this.el.shadowOffset}}else{var A=this.getSize();B={right:-(A.width-100),bottom:-(A.height-25)}}var C=this.el.getConstrainToXY(this.container,true,B);if(C){this.setPosition(C[0],C[1])}}},ghost:function(A){var C=this.createGhost(A);var B=this.getBox(true);C.setLeftTop(B.x,B.y);C.setWidth(B.width);this.el.hide();this.activeGhost=C;return C},unghost:function(B,A){if(B!==false){this.el.show();this.focus();if(Ext.isMac&&Ext.isGecko){this.cascade(this.setAutoScroll)}}if(A!==false){this.setPosition(this.activeGhost.getLeft(true),this.activeGhost.getTop(true))}this.activeGhost.hide();this.activeGhost.remove();delete this.activeGhost},minimize:function(){this.fireEvent("minimize",this)},close:function(){if(this.fireEvent("beforeclose",this)!==false){this.hide(null,function(){this.fireEvent("close",this);this.destroy()},this)}},maximize:function(){if(!this.maximized){this.expand(false);this.restoreSize=this.getSize();this.restorePos=this.getPosition(true);if(this.maximizable){this.tools.maximize.hide();this.tools.restore.show()}this.maximized=true;this.el.disableShadow();if(this.dd){this.dd.lock()}if(this.collapsible){this.tools.toggle.hide()}this.el.addClass("x-window-maximized");this.container.addClass("x-window-maximized-ct");this.setPosition(0,0);this.fitContainer();this.fireEvent("maximize",this)}},restore:function(){if(this.maximized){this.el.removeClass("x-window-maximized");this.tools.restore.hide();this.tools.maximize.show();this.setPosition(this.restorePos[0],this.restorePos[1]);this.setSize(this.restoreSize.width,this.restoreSize.height);delete this.restorePos;delete this.restoreSize;this.maximized=false;this.el.enableShadow(true);if(this.dd){this.dd.unlock()}if(this.collapsible){this.tools.toggle.show()}this.container.removeClass("x-window-maximized-ct");this.doConstrain();this.fireEvent("restore",this)}},toggleMaximize:function(){this[this.maximized?"restore":"maximize"]()},fitContainer:function(){var A=this.container.getViewSize();this.setSize(A.width,A.height)},setZIndex:function(A){if(this.modal){this.mask.setStyle("z-index",A)}this.el.setZIndex(++A);A+=5;if(this.resizer){this.resizer.proxy.setStyle("z-index",++A)}this.lastZIndex=A},alignTo:function(B,A,C){var D=this.el.getAlignToXY(B,A,C);this.setPagePosition(D[0],D[1]);return this},anchorTo:function(C,G,D,B,F){var E=function(){this.alignTo(C,G,D)};Ext.EventManager.onWindowResize(E,this);var A=typeof B;if(A!="undefined"){Ext.EventManager.on(window,"scroll",E,this,{buffer:A=="number"?B:50})}E.call(this);this[F]=E;return this},toFront:function(){if(this.manager.bringToFront(this)){this.focus()}return this},setActive:function(A){if(A){if(!this.maximized){this.el.enableShadow(true)}this.fireEvent("activate",this)}else{this.el.disableShadow();this.fireEvent("deactivate",this)}},toBack:function(){this.manager.sendToBack(this);return this},center:function(){var A=this.el.getAlignToXY(this.container,"c-c");this.setPagePosition(A[0],A[1]);return this}});Ext.reg("window",Ext.Window);Ext.Window.DD=function(A){this.win=A;Ext.Window.DD.superclass.constructor.call(this,A.el.id,"WindowDD-"+A.id);this.setHandleElId(A.header.id);this.scroll=false};Ext.extend(Ext.Window.DD,Ext.dd.DD,{moveOnly:true,headerOffsets:[100,25],startDrag:function(){var A=this.win;this.proxy=A.ghost();if(A.constrain!==false){var C=A.el.shadowOffset;this.constrainTo(A.container,{right:C,left:C,bottom:C})}else{if(A.constrainHeader!==false){var B=this.proxy.getSize();this.constrainTo(A.container,{right:-(B.width-this.headerOffsets[0]),bottom:-(B.height-this.headerOffsets[1])})}}},b4Drag:Ext.emptyFn,onDrag:function(A){this.alignElWithMouse(this.proxy,A.getPageX(),A.getPageY())},endDrag:function(A){this.win.unghost();this.win.saveState()}});
+Ext.WindowGroup=function(){var F={};var D=[];var E=null;var C=function(I,H){return(!I._lastAccess||I._lastAccess<H._lastAccess)?-1:1};var G=function(){var J=D,H=J.length;if(H>0){J.sort(C);var I=J[0].manager.zseed;for(var K=0;K<H;K++){var L=J[K];if(L&&!L.hidden){L.setZIndex(I+(K*10))}}}A()};var B=function(H){if(H!=E){if(E){E.setActive(false)}E=H;if(H){H.setActive(true)}}};var A=function(){for(var H=D.length-1;H>=0;--H){if(!D[H].hidden){B(D[H]);return }}B(null)};return{zseed:9000,register:function(H){F[H.id]=H;D.push(H);H.on("hide",A)},unregister:function(H){delete F[H.id];H.un("hide",A);D.remove(H)},get:function(H){return typeof H=="object"?H:F[H]},bringToFront:function(H){H=this.get(H);if(H!=E){H._lastAccess=new Date().getTime();G();return true}return false},sendToBack:function(H){H=this.get(H);H._lastAccess=-(new Date().getTime());G();return H},hideAll:function(){for(var H in F){if(F[H]&&typeof F[H]!="function"&&F[H].isVisible()){F[H].hide()}}},getActive:function(){return E},getBy:function(J,I){var K=[];for(var H=D.length-1;H>=0;--H){var L=D[H];if(J.call(I||L,L)!==false){K.push(L)}}return K},each:function(I,H){for(var J in F){if(F[J]&&typeof F[J]!="function"){if(I.call(H||F[J],F[J])===false){return }}}}}};Ext.WindowMgr=new Ext.WindowGroup();
+Ext.dd.PanelProxy=function(A,B){this.panel=A;this.id=this.panel.id+"-ddproxy";Ext.apply(this,B)};Ext.dd.PanelProxy.prototype={insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){if(this.ghost){if(this.proxy){this.proxy.remove();delete this.proxy}this.panel.el.dom.style.display="";this.ghost.remove();delete this.ghost}},show:function(){if(!this.ghost){this.ghost=this.panel.createGhost(undefined,undefined,Ext.getBody());this.ghost.setXY(this.panel.el.getXY());if(this.insertProxy){this.proxy=this.panel.el.insertSibling({cls:"x-panel-dd-spacer"});this.proxy.setSize(this.panel.getSize())}this.panel.el.dom.style.display="none"}},repair:function(B,C,A){this.hide();if(typeof C=="function"){C.call(A||this)}},moveProxy:function(A,B){if(this.proxy){A.insertBefore(this.proxy.dom,B)}}};Ext.Panel.DD=function(B,A){this.panel=B;this.dragData={panel:B};this.proxy=new Ext.dd.PanelProxy(B,A);Ext.Panel.DD.superclass.constructor.call(this,B.el,A);var C=B.header;if(C){this.setHandleElId(C.id)}(C?C:this.panel.body).setStyle("cursor","move");this.scroll=false};Ext.extend(Ext.Panel.DD,Ext.dd.DragSource,{showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(A,B){this.proxy.show()},b4MouseDown:function(B){var A=B.getPageX();var C=B.getPageY();this.autoOffset(A,C)},onInitDrag:function(A,B){this.onStartDrag(A,B);return true},createFrame:Ext.emptyFn,getDragEl:function(A){return this.proxy.ghost.dom},endDrag:function(A){this.proxy.hide();this.panel.saveState()},autoOffset:function(A,B){A-=this.startPageX;B-=this.startPageY;this.setDelta(A,B)}});
+Ext.state.Provider=function(){this.addEvents("statechange");this.state={};Ext.state.Provider.superclass.constructor.call(this)};Ext.extend(Ext.state.Provider,Ext.util.Observable,{get:function(B,A){return typeof this.state[B]=="undefined"?A:this.state[B]},clear:function(A){delete this.state[A];this.fireEvent("statechange",this,A,null)},set:function(A,B){this.state[A]=B;this.fireEvent("statechange",this,A,B)},decodeValue:function(A){var J=/^(a|n|d|b|s|o)\:(.*)$/;var C=J.exec(unescape(A));if(!C||!C[1]){return }var F=C[1];var H=C[2];switch(F){case"n":return parseFloat(H);case"d":return new Date(Date.parse(H));case"b":return(H=="1");case"a":var G=[];var I=H.split("^");for(var B=0,D=I.length;B<D;B++){G.push(this.decodeValue(I[B]))}return G;case"o":var G={};var I=H.split("^");for(var B=0,D=I.length;B<D;B++){var E=I[B].split("=");G[E[0]]=this.decodeValue(E[1])}return G;default:return H}},encodeValue:function(C){var B;if(typeof C=="number"){B="n:"+C}else{if(typeof C=="boolean"){B="b:"+(C?"1":"0")}else{if(Ext.isDate(C)){B="d:"+C.toGMTString()}else{if(Ext.isArray(C)){var F="";for(var E=0,A=C.length;E<A;E++){F+=this.encodeValue(C[E]);if(E!=A-1){F+="^"}}B="a:"+F}else{if(typeof C=="object"){var F="";for(var D in C){if(typeof C[D]!="function"&&C[D]!==undefined){F+=D+"="+this.encodeValue(C[D])+"^"}}B="o:"+F.substring(0,F.length-1)}else{B="s:"+C}}}}}return escape(B)}});
+Ext.state.Manager=function(){var A=new Ext.state.Provider();return{setProvider:function(B){A=B},get:function(C,B){return A.get(C,B)},set:function(B,C){A.set(B,C)},clear:function(B){A.clear(B)},getProvider:function(){return A}}}();
+Ext.state.CookieProvider=function(A){Ext.state.CookieProvider.superclass.constructor.call(this);this.path="/";this.expires=new Date(new Date().getTime()+(1000*60*60*24*7));this.domain=null;this.secure=false;Ext.apply(this,A);this.state=this.readCookies()};Ext.extend(Ext.state.CookieProvider,Ext.state.Provider,{set:function(A,B){if(typeof B=="undefined"||B===null){this.clear(A);return }this.setCookie(A,B);Ext.state.CookieProvider.superclass.set.call(this,A,B)},clear:function(A){this.clearCookie(A);Ext.state.CookieProvider.superclass.clear.call(this,A)},readCookies:function(){var C={};var F=document.cookie+";";var B=/\s?(.*?)=(.*?);/g;var E;while((E=B.exec(F))!=null){var A=E[1];var D=E[2];if(A&&A.substring(0,3)=="ys-"){C[A.substr(3)]=this.decodeValue(D)}}return C},setCookie:function(A,B){document.cookie="ys-"+A+"="+this.encodeValue(B)+((this.expires==null)?"":("; expires="+this.expires.toGMTString()))+((this.path==null)?"":("; path="+this.path))+((this.domain==null)?"":("; domain="+this.domain))+((this.secure==true)?"; secure":"")},clearCookie:function(A){document.cookie="ys-"+A+"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"+((this.path==null)?"":("; path="+this.path))+((this.domain==null)?"":("; domain="+this.domain))+((this.secure==true)?"; secure":"")}});
+Ext.DataView=Ext.extend(Ext.BoxComponent,{selectedClass:"x-view-selected",emptyText:"",deferEmptyText:true,trackOver:false,last:false,initComponent:function(){Ext.DataView.superclass.initComponent.call(this);if(typeof this.tpl=="string"){this.tpl=new Ext.XTemplate(this.tpl)}this.addEvents("beforeclick","click","mouseenter","mouseleave","containerclick","dblclick","contextmenu","selectionchange","beforeselect");this.all=new Ext.CompositeElementLite();this.selected=new Ext.CompositeElementLite()},onRender:function(){if(!this.el){this.el=document.createElement("div");this.el.id=this.id}Ext.DataView.superclass.onRender.apply(this,arguments)},afterRender:function(){Ext.DataView.superclass.afterRender.call(this);this.el.on({"click":this.onClick,"dblclick":this.onDblClick,"contextmenu":this.onContextMenu,scope:this});if(this.overClass||this.trackOver){this.el.on({"mouseover":this.onMouseOver,"mouseout":this.onMouseOut,scope:this})}if(this.store){this.setStore(this.store,true)}},refresh:function(){this.clearSelections(false,true);this.el.update("");var A=this.store.getRange();if(A.length<1){if(!this.deferEmptyText||this.hasSkippedEmptyText){this.el.update(this.emptyText)}this.hasSkippedEmptyText=true;this.all.clear();return }this.tpl.overwrite(this.el,this.collectData(A,0));this.all.fill(Ext.query(this.itemSelector,this.el.dom));this.updateIndexes(0)},prepareData:function(A){return A},collectData:function(B,E){var D=[];for(var C=0,A=B.length;C<A;C++){D[D.length]=this.prepareData(B[C].data,E+C,B[C])}return D},bufferRender:function(A){var B=document.createElement("div");this.tpl.overwrite(B,this.collectData(A));return Ext.query(this.itemSelector,B)},onUpdate:function(F,A){var B=this.store.indexOf(A);var E=this.isSelected(B);var C=this.all.elements[B];var D=this.bufferRender([A],B)[0];this.all.replaceElement(B,D,true);if(E){this.selected.replaceElement(C,D);this.all.item(B).addClass(this.selectedClass)}this.updateIndexes(B,B)},onAdd:function(E,C,D){if(this.all.getCount()==0){this.refresh();return }var B=this.bufferRender(C,D),F,A=this.all.elements;if(D<this.all.getCount()){F=this.all.item(D).insertSibling(B,"before",true);A.splice.apply(A,[D,0].concat(B))}else{F=this.all.last().insertSibling(B,"after",true);A.push.apply(A,B)}this.updateIndexes(D)},onRemove:function(C,A,B){this.deselect(B);this.all.removeElement(B,true);this.updateIndexes(B)},refreshNode:function(A){this.onUpdate(this.store,this.store.getAt(A))},updateIndexes:function(D,C){var B=this.all.elements;D=D||0;C=C||((C===0)?0:(B.length-1));for(var A=D;A<=C;A++){B[A].viewIndex=A}},setStore:function(A,B){if(!B&&this.store){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("datachanged",this.refresh,this);this.store.un("add",this.onAdd,this);this.store.un("remove",this.onRemove,this);this.store.un("update",this.onUpdate,this);this.store.un("clear",this.refresh,this)}if(A){A=Ext.StoreMgr.lookup(A);A.on("beforeload",this.onBeforeLoad,this);A.on("datachanged",this.refresh,this);A.on("add",this.onAdd,this);A.on("remove",this.onRemove,this);A.on("update",this.onUpdate,this);A.on("clear",this.refresh,this)}this.store=A;if(A){this.refresh()}},findItemFromChild:function(A){return Ext.fly(A).findParent(this.itemSelector,this.el)},onClick:function(C){var B=C.getTarget(this.itemSelector,this.el);if(B){var A=this.indexOf(B);if(this.onItemClick(B,A,C)!==false){this.fireEvent("click",this,A,B,C)}}else{if(this.fireEvent("containerclick",this,C)!==false){this.clearSelections()}}},onContextMenu:function(B){var A=B.getTarget(this.itemSelector,this.el);if(A){this.fireEvent("contextmenu",this,this.indexOf(A),A,B)}},onDblClick:function(B){var A=B.getTarget(this.itemSelector,this.el);if(A){this.fireEvent("dblclick",this,this.indexOf(A),A,B)}},onMouseOver:function(B){var A=B.getTarget(this.itemSelector,this.el);if(A&&A!==this.lastItem){this.lastItem=A;Ext.fly(A).addClass(this.overClass);this.fireEvent("mouseenter",this,this.indexOf(A),A,B)}},onMouseOut:function(A){if(this.lastItem){if(!A.within(this.lastItem,true)){Ext.fly(this.lastItem).removeClass(this.overClass);this.fireEvent("mouseleave",this,this.indexOf(this.lastItem),this.lastItem,A);delete this.lastItem}}},onItemClick:function(B,A,C){if(this.fireEvent("beforeclick",this,A,B,C)===false){return false}if(this.multiSelect){this.doMultiSelection(B,A,C);C.preventDefault()}else{if(this.singleSelect){this.doSingleSelection(B,A,C);C.preventDefault()}}return true},doSingleSelection:function(B,A,C){if(C.ctrlKey&&this.isSelected(A)){this.deselect(A)}else{this.select(A,false)}},doMultiSelection:function(C,A,D){if(D.shiftKey&&this.last!==false){var B=this.last;this.selectRange(B,A,D.ctrlKey);this.last=B}else{if((D.ctrlKey||this.simpleSelect)&&this.isSelected(A)){this.deselect(A)}else{this.select(A,D.ctrlKey||D.shiftKey||this.simpleSelect)}}},getSelectionCount:function(){return this.selected.getCount()},getSelectedNodes:function(){return this.selected.elements},getSelectedIndexes:function(){var B=[],D=this.selected.elements;for(var C=0,A=D.length;C<A;C++){B.push(D[C].viewIndex)}return B},getSelectedRecords:function(){var D=[],C=this.selected.elements;for(var B=0,A=C.length;B<A;B++){D[D.length]=this.store.getAt(C[B].viewIndex)}return D},getRecords:function(B){var E=[],D=B;for(var C=0,A=D.length;C<A;C++){E[E.length]=this.store.getAt(D[C].viewIndex)}return E},getRecord:function(A){return this.store.getAt(A.viewIndex)},clearSelections:function(A,B){if((this.multiSelect||this.singleSelect)&&this.selected.getCount()>0){if(!B){this.selected.removeClass(this.selectedClass)}this.selected.clear();this.last=false;if(!A){this.fireEvent("selectionchange",this,this.selected.elements)}}},isSelected:function(A){return this.selected.contains(this.getNode(A))},deselect:function(A){if(this.isSelected(A)){A=this.getNode(A);this.selected.removeElement(A);if(this.last==A.viewIndex){this.last=false}Ext.fly(A).removeClass(this.selectedClass);this.fireEvent("selectionchange",this,this.selected.elements)}},select:function(D,F,B){if(Ext.isArray(D)){if(!F){this.clearSelections(true)}for(var C=0,A=D.length;C<A;C++){this.select(D[C],true,true)}if(!B){this.fireEvent("selectionchange",this,this.selected.elements)}}else{var E=this.getNode(D);if(!F){this.clearSelections(true)}if(E&&!this.isSelected(E)){if(this.fireEvent("beforeselect",this,E,this.selected.elements)!==false){Ext.fly(E).addClass(this.selectedClass);this.selected.add(E);this.last=E.viewIndex;if(!B){this.fireEvent("selectionchange",this,this.selected.elements)}}}}},selectRange:function(C,A,B){if(!B){this.clearSelections(true)}this.select(this.getNodes(C,A),true)},getNode:function(A){if(typeof A=="string"){return document.getElementById(A)}else{if(typeof A=="number"){return this.all.elements[A]}}return A},getNodes:function(E,A){var D=this.all.elements;E=E||0;A=typeof A=="undefined"?Math.max(D.length-1,0):A;var B=[],C;if(E<=A){for(C=E;C<=A&&D[C];C++){B.push(D[C])}}else{for(C=E;C>=A&&D[C];C--){B.push(D[C])}}return B},indexOf:function(A){A=this.getNode(A);if(typeof A.viewIndex=="number"){return A.viewIndex}return this.all.indexOf(A)},onBeforeLoad:function(){if(this.loadingText){this.clearSelections(false,true);this.el.update("<div class=\"loading-indicator\">"+this.loadingText+"</div>");this.all.clear()}},onDestroy:function(){Ext.DataView.superclass.onDestroy.call(this);this.setStore(null)}});Ext.reg("dataview",Ext.DataView);
+Ext.ColorPalette=function(A){Ext.ColorPalette.superclass.constructor.call(this,A);this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope,true)}};Ext.extend(Ext.ColorPalette,Ext.Component,{itemCls:"x-color-palette",value:null,clickEvent:"click",ctype:"Ext.ColorPalette",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],onRender:function(B,A){var C=this.tpl||new Ext.XTemplate("<tpl for=\".\"><a href=\"#\" class=\"color-{.}\" hidefocus=\"on\"><em><span style=\"background:#{.}\" unselectable=\"on\">&#160;</span></em></a></tpl>");var D=document.createElement("div");D.className=this.itemCls;C.overwrite(D,this.colors);B.dom.insertBefore(D,A);this.el=Ext.get(D);this.el.on(this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!="click"){this.el.on("click",Ext.emptyFn,this,{delegate:"a",preventDefault:true})}},afterRender:function(){Ext.ColorPalette.superclass.afterRender.call(this);if(this.value){var A=this.value;this.value=null;this.select(A)}},handleClick:function(B,A){B.preventDefault();if(!this.disabled){var C=A.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(C.toUpperCase())}},select:function(A){A=A.replace("#","");if(A!=this.value||this.allowReselect){var B=this.el;if(this.value){B.child("a.color-"+this.value).removeClass("x-color-palette-sel")}B.child("a.color-"+A).addClass("x-color-palette-sel");this.value=A;this.fireEvent("select",this,A)}}});Ext.reg("colorpalette",Ext.ColorPalette);
+Ext.DatePicker=Ext.extend(Ext.Component,{todayText:"Today",okText:"&#160;OK&#160;",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDaysText:"Disabled",disabledDatesText:"Disabled",constrainToViewport:true,monthNames:Date.monthNames,dayNames:Date.dayNames,nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",startDay:0,showToday:true,initComponent:function(){Ext.DatePicker.superclass.initComponent.call(this);this.value=this.value?this.value.clearTime():new Date().clearTime();this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope||this)}this.initDisabledDays()},initDisabledDays:function(){if(!this.disabledDatesRE&&this.disabledDates){var A=this.disabledDates;var C="(?:";for(var B=0;B<A.length;B++){C+=A[B];if(B!=A.length-1){C+="|"}}this.disabledDatesRE=new RegExp(C+")")}},setDisabledDates:function(A){if(Ext.isArray(A)){this.disabledDates=A;this.disabledDatesRE=null}else{this.disabledDatesRE=A}this.initDisabledDays();this.update(this.value,true)},setDisabledDays:function(A){this.disabledDays=A;this.update(this.value,true)},setMinDate:function(A){this.minDate=A;this.update(this.value,true)},setMaxDate:function(A){this.maxDate=A;this.update(this.value,true)},setValue:function(B){var A=this.value;this.value=B.clearTime(true);if(this.el){this.update(this.value)}},getValue:function(){return this.value},focus:function(){if(this.el){this.update(this.activeDate)}},onRender:function(A,F){var C=["<table cellspacing=\"0\">","<tr><td class=\"x-date-left\"><a href=\"#\" title=\"",this.prevText,"\">&#160;</a></td><td class=\"x-date-middle\" align=\"center\"></td><td class=\"x-date-right\"><a href=\"#\" title=\"",this.nextText,"\">&#160;</a></td></tr>","<tr><td colspan=\"3\"><table class=\"x-date-inner\" cellspacing=\"0\"><thead><tr>"];var E=this.dayNames;for(var D=0;D<7;D++){var G=this.startDay+D;if(G>6){G=G-7}C.push("<th><span>",E[G].substr(0,1),"</span></th>")}C[C.length]="</tr></thead><tbody><tr>";for(var D=0;D<42;D++){if(D%7==0&&D!=0){C[C.length]="</tr><tr>"}C[C.length]="<td><a href=\"#\" hidefocus=\"on\" class=\"x-date-date\" tabIndex=\"1\"><em><span></span></em></a></td>"}C.push("</tr></tbody></table></td></tr>",this.showToday?"<tr><td colspan=\"3\" class=\"x-date-bottom\" align=\"center\"></td></tr>":"","</table><div class=\"x-date-mp\"></div>");var B=document.createElement("div");B.className="x-date-picker";B.innerHTML=C.join("");A.dom.insertBefore(B,F);this.el=Ext.get(B);this.eventEl=Ext.get(B.firstChild);new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.eventEl.on("mousewheel",this.handleMouseWheel,this);this.monthPicker=this.el.down("div.x-date-mp");this.monthPicker.enableDisplayMode("block");var I=new Ext.KeyNav(this.eventEl,{"left":function(J){J.ctrlKey?this.showPrevMonth():this.update(this.activeDate.add("d",-1))},"right":function(J){J.ctrlKey?this.showNextMonth():this.update(this.activeDate.add("d",1))},"up":function(J){J.ctrlKey?this.showNextYear():this.update(this.activeDate.add("d",-7))},"down":function(J){J.ctrlKey?this.showPrevYear():this.update(this.activeDate.add("d",7))},"pageUp":function(J){this.showNextMonth()},"pageDown":function(J){this.showPrevMonth()},"enter":function(J){J.stopPropagation();return true},scope:this});this.eventEl.on("click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.el.unselectable();this.cells=this.el.select("table.x-date-inner tbody td");this.textNodes=this.el.query("table.x-date-inner tbody span");this.mbtn=new Ext.Button({text:"&#160;",tooltip:this.monthYearText,renderTo:this.el.child("td.x-date-middle",true)});this.mbtn.on("click",this.showMonthPicker,this);this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu");if(this.showToday){this.todayKeyListener=this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);var H=(new Date()).dateFormat(this.format);this.todayBtn=new Ext.Button({renderTo:this.el.child("td.x-date-bottom",true),text:String.format(this.todayText,H),tooltip:String.format(this.todayTip,H),handler:this.selectToday,scope:this})}if(Ext.isIE){this.el.repaint()}this.update(this.value)},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var A=["<table border=\"0\" cellspacing=\"0\">"];for(var B=0;B<6;B++){A.push("<tr><td class=\"x-date-mp-month\"><a href=\"#\">",this.monthNames[B].substr(0,3),"</a></td>","<td class=\"x-date-mp-month x-date-mp-sep\"><a href=\"#\">",this.monthNames[B+6].substr(0,3),"</a></td>",B==0?"<td class=\"x-date-mp-ybtn\" align=\"center\"><a class=\"x-date-mp-prev\"></a></td><td class=\"x-date-mp-ybtn\" align=\"center\"><a class=\"x-date-mp-next\"></a></td></tr>":"<td class=\"x-date-mp-year\"><a href=\"#\"></a></td><td class=\"x-date-mp-year\"><a href=\"#\"></a></td></tr>")}A.push("<tr class=\"x-date-mp-btns\"><td colspan=\"4\"><button type=\"button\" class=\"x-date-mp-ok\">",this.okText,"</button><button type=\"button\" class=\"x-date-mp-cancel\">",this.cancelText,"</button></td></tr>","</table>");this.monthPicker.update(A.join(""));this.monthPicker.on("click",this.onMonthClick,this);this.monthPicker.on("dblclick",this.onMonthDblClick,this);this.mpMonths=this.monthPicker.select("td.x-date-mp-month");this.mpYears=this.monthPicker.select("td.x-date-mp-year");this.mpMonths.each(function(C,D,E){E+=1;if((E%2)==0){C.dom.xmonth=5+Math.round(E*0.5)}else{C.dom.xmonth=Math.round((E-1)*0.5)}})}},showMonthPicker:function(){this.createMonthPicker();var A=this.el.getSize();this.monthPicker.setSize(A);this.monthPicker.child("table").setSize(A);this.mpSelMonth=(this.activeDate||this.value).getMonth();this.updateMPMonth(this.mpSelMonth);this.mpSelYear=(this.activeDate||this.value).getFullYear();this.updateMPYear(this.mpSelYear);this.monthPicker.slideIn("t",{duration:0.2})},updateMPYear:function(E){this.mpyear=E;var C=this.mpYears.elements;for(var B=1;B<=10;B++){var D=C[B-1],A;if((B%2)==0){A=E+Math.round(B*0.5);D.firstChild.innerHTML=A;D.xyear=A}else{A=E-(5-Math.round(B*0.5));D.firstChild.innerHTML=A;D.xyear=A}this.mpYears.item(B-1)[A==this.mpSelYear?"addClass":"removeClass"]("x-date-mp-sel")}},updateMPMonth:function(A){this.mpMonths.each(function(B,C,D){B[B.dom.xmonth==A?"addClass":"removeClass"]("x-date-mp-sel")})},selectMPMonth:function(A){},onMonthClick:function(D,B){D.stopEvent();var C=new Ext.Element(B),A;if(C.is("button.x-date-mp-cancel")){this.hideMonthPicker()}else{if(C.is("button.x-date-mp-ok")){var E=new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate());if(E.getMonth()!=this.mpSelMonth){E=new Date(this.mpSelYear,this.mpSelMonth,1).getLastDateOfMonth()}this.update(E);this.hideMonthPicker()}else{if(A=C.up("td.x-date-mp-month",2)){this.mpMonths.removeClass("x-date-mp-sel");A.addClass("x-date-mp-sel");this.mpSelMonth=A.dom.xmonth}else{if(A=C.up("td.x-date-mp-year",2)){this.mpYears.removeClass("x-date-mp-sel");A.addClass("x-date-mp-sel");this.mpSelYear=A.dom.xyear}else{if(C.is("a.x-date-mp-prev")){this.updateMPYear(this.mpyear-10)}else{if(C.is("a.x-date-mp-next")){this.updateMPYear(this.mpyear+10)}}}}}}},onMonthDblClick:function(D,B){D.stopEvent();var C=new Ext.Element(B),A;if(A=C.up("td.x-date-mp-month",2)){this.update(new Date(this.mpSelYear,A.dom.xmonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}else{if(A=C.up("td.x-date-mp-year",2)){this.update(new Date(A.dom.xyear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}}},hideMonthPicker:function(A){if(this.monthPicker){if(A===true){this.monthPicker.hide()}else{this.monthPicker.slideOut("t",{duration:0.2})}}},showPrevMonth:function(A){this.update(this.activeDate.add("mo",-1))},showNextMonth:function(A){this.update(this.activeDate.add("mo",1))},showPrevYear:function(){this.update(this.activeDate.add("y",-1))},showNextYear:function(){this.update(this.activeDate.add("y",1))},handleMouseWheel:function(A){var B=A.getWheelDelta();if(B>0){this.showPrevMonth();A.stopEvent()}else{if(B<0){this.showNextMonth();A.stopEvent()}}},handleDateClick:function(B,A){B.stopEvent();if(A.dateValue&&!Ext.fly(A.parentNode).hasClass("x-date-disabled")){this.setValue(new Date(A.dateValue));this.fireEvent("select",this,this.value)}},selectToday:function(){if(this.todayBtn&&!this.todayBtn.disabled){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value)}},update:function(a,U){var A=this.activeDate;this.activeDate=a;if(!U&&A&&this.el){var K=a.getTime();if(A.getMonth()==a.getMonth()&&A.getFullYear()==a.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(d){if(d.dom.firstChild.dateValue==K){d.addClass("x-date-selected");setTimeout(function(){try{d.dom.firstChild.focus()}catch(f){}},50);return false}});return }}var G=a.getDaysInMonth();var L=a.getFirstDateOfMonth();var D=L.getDay()-this.startDay;if(D<=this.startDay){D+=7}var V=a.add("mo",-1);var E=V.getDaysInMonth()-D;var C=this.cells.elements;var M=this.textNodes;G+=D;var R=86400000;var X=(new Date(V.getFullYear(),V.getMonth(),E)).clearTime();var W=new Date().clearTime().getTime();var P=a.clearTime().getTime();var O=this.minDate?this.minDate.clearTime():Number.NEGATIVE_INFINITY;var S=this.maxDate?this.maxDate.clearTime():Number.POSITIVE_INFINITY;var Z=this.disabledDatesRE;var N=this.disabledDatesText;var c=this.disabledDays?this.disabledDays.join(""):false;var Y=this.disabledDaysText;var T=this.format;if(this.showToday){var I=new Date().clearTime();var B=(I<O||I>S||(Z&&T&&Z.test(I.dateFormat(T)))||(c&&c.indexOf(I.getDay())!=-1));this.todayBtn.setDisabled(B);this.todayKeyListener[B?"disable":"enable"]()}var H=function(g,d){d.title="";var e=X.getTime();d.firstChild.dateValue=e;if(e==W){d.className+=" x-date-today";d.title=g.todayText}if(e==P){d.className+=" x-date-selected";setTimeout(function(){try{d.firstChild.focus()}catch(h){}},50)}if(e<O){d.className=" x-date-disabled";d.title=g.minText;return }if(e>S){d.className=" x-date-disabled";d.title=g.maxText;return }if(c){if(c.indexOf(X.getDay())!=-1){d.title=Y;d.className=" x-date-disabled"}}if(Z&&T){var f=X.dateFormat(T);if(Z.test(f)){d.title=N.replace("%0",f);d.className=" x-date-disabled"}}};var Q=0;for(;Q<D;Q++){M[Q].innerHTML=(++E);X.setDate(X.getDate()+1);C[Q].className="x-date-prevday";H(this,C[Q])}for(;Q<G;Q++){intDay=Q-D+1;M[Q].innerHTML=(intDay);X.setDate(X.getDate()+1);C[Q].className="x-date-active";H(this,C[Q])}var b=0;for(;Q<42;Q++){M[Q].innerHTML=(++b);X.setDate(X.getDate()+1);C[Q].className="x-date-nextday";H(this,C[Q])}this.mbtn.setText(this.monthNames[a.getMonth()]+" "+a.getFullYear());if(!this.internalRender){var F=this.el.dom.firstChild;var J=F.offsetWidth;this.el.setWidth(J+this.el.getBorderWidth("lr"));Ext.fly(F).setWidth(J);this.internalRender=true;if(Ext.isOpera&&!this.secondPass){F.rows[0].cells[1].style.width=(J-(F.rows[0].cells[0].offsetWidth+F.rows[0].cells[2].offsetWidth))+"px";this.secondPass=true;this.update.defer(10,this,[a])}}},beforeDestroy:function(){if(this.rendered){Ext.destroy(this.mbtn,this.todayBtn)}}});Ext.reg("datepicker",Ext.DatePicker);
+Ext.TabPanel=Ext.extend(Ext.Panel,{monitorResize:true,deferredRender:true,tabWidth:120,minTabWidth:30,resizeTabs:false,enableTabScroll:false,scrollIncrement:0,scrollRepeatInterval:400,scrollDuration:0.35,animScroll:true,tabPosition:"top",baseCls:"x-tab-panel",autoTabs:false,autoTabSelector:"div.x-tab",activeTab:null,tabMargin:2,plain:false,wheelIncrement:20,idDelimiter:"__",itemCls:"x-tab-item",elements:"body",headerAsText:false,frame:false,hideBorders:true,initComponent:function(){this.frame=false;Ext.TabPanel.superclass.initComponent.call(this);this.addEvents("beforetabchange","tabchange","contextmenu");this.setLayout(new Ext.layout.CardLayout({deferredRender:this.deferredRender}));if(this.tabPosition=="top"){this.elements+=",header";this.stripTarget="header"}else{this.elements+=",footer";this.stripTarget="footer"}if(!this.stack){this.stack=Ext.TabPanel.AccessStack()}this.initItems()},render:function(){Ext.TabPanel.superclass.render.apply(this,arguments);if(this.activeTab!==undefined){var A=this.activeTab;delete this.activeTab;this.setActiveTab(A)}},onRender:function(C,A){Ext.TabPanel.superclass.onRender.call(this,C,A);if(this.plain){var F=this.tabPosition=="top"?"header":"footer";this[F].addClass("x-tab-panel-"+F+"-plain")}var B=this[this.stripTarget];this.stripWrap=B.createChild({cls:"x-tab-strip-wrap",cn:{tag:"ul",cls:"x-tab-strip x-tab-strip-"+this.tabPosition}});var E=(this.tabPosition=="bottom"?this.stripWrap:null);this.stripSpacer=B.createChild({cls:"x-tab-strip-spacer"},E);this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:"li",cls:"x-tab-edge"});this.strip.createChild({cls:"x-clear"});this.body.addClass("x-tab-panel-body-"+this.tabPosition);if(!this.itemTpl){var D=new Ext.Template("<li class=\"{cls}\" id=\"{id}\"><a class=\"x-tab-strip-close\" onclick=\"return false;\"></a>","<a class=\"x-tab-right\" href=\"#\" onclick=\"return false;\"><em class=\"x-tab-left\">","<span class=\"x-tab-strip-inner\"><span class=\"x-tab-strip-text {iconCls}\">{text}</span></span>","</em></a></li>");D.disableFormats=true;D.compile();Ext.TabPanel.prototype.itemTpl=D}this.items.each(this.initTab,this)},afterRender:function(){Ext.TabPanel.superclass.afterRender.call(this);if(this.autoTabs){this.readTabs(false)}},initEvents:function(){Ext.TabPanel.superclass.initEvents.call(this);this.on("add",this.onAdd,this);this.on("remove",this.onRemove,this);this.strip.on("mousedown",this.onStripMouseDown,this);this.strip.on("contextmenu",this.onStripContextMenu,this);if(this.enableTabScroll){this.strip.on("mousewheel",this.onWheel,this)}},findTargets:function(C){var B=null;var A=C.getTarget("li",this.strip);if(A){B=this.getComponent(A.id.split(this.idDelimiter)[1]);if(B.disabled){return{close:null,item:null,el:null}}}return{close:C.getTarget(".x-tab-strip-close",this.strip),item:B,el:A}},onStripMouseDown:function(B){if(B.button!=0){return }B.preventDefault();var A=this.findTargets(B);if(A.close){this.remove(A.item);return }if(A.item&&A.item!=this.activeTab){this.setActiveTab(A.item)}},onStripContextMenu:function(B){B.preventDefault();var A=this.findTargets(B);if(A.item){this.fireEvent("contextmenu",this,A.item,B)}},readTabs:function(D){if(D===true){this.items.each(function(G){this.remove(G)},this)}var C=this.el.query(this.autoTabSelector);for(var B=0,A=C.length;B<A;B++){var E=C[B];var F=E.getAttribute("title");E.removeAttribute("title");this.add({title:F,el:E})}},initTab:function(D,B){var E=this.strip.dom.childNodes[B];var A=D.closable?"x-tab-strip-closable":"";if(D.disabled){A+=" x-item-disabled"}if(D.iconCls){A+=" x-tab-with-icon"}if(D.tabCls){A+=" "+D.tabCls}var F={id:this.id+this.idDelimiter+D.getItemId(),text:D.title,cls:A,iconCls:D.iconCls||""};var C=E?this.itemTpl.insertBefore(E,F):this.itemTpl.append(this.strip,F);Ext.fly(C).addClassOnOver("x-tab-strip-over");if(D.tabTip){Ext.fly(C).child("span.x-tab-strip-text",true).qtip=D.tabTip}D.on("disable",this.onItemDisabled,this);D.on("enable",this.onItemEnabled,this);D.on("titlechange",this.onItemTitleChanged,this);D.on("beforeshow",this.onBeforeShowItem,this)},onAdd:function(C,B,A){this.initTab(B,A);if(this.items.getCount()==1){this.syncSize()}this.delegateUpdates()},onBeforeAdd:function(B){var A=B.events?(this.items.containsKey(B.getItemId())?B:null):this.items.get(B);if(A){this.setActiveTab(B);return false}Ext.TabPanel.superclass.onBeforeAdd.apply(this,arguments);var C=B.elements;B.elements=C?C.replace(",header",""):C;B.border=(B.border===true)},onRemove:function(C,B){Ext.removeNode(this.getTabEl(B));this.stack.remove(B);B.un("disable",this.onItemDisabled,this);B.un("enable",this.onItemEnabled,this);B.un("titlechange",this.onItemTitleChanged,this);B.un("beforeshow",this.onBeforeShowItem,this);if(B==this.activeTab){var A=this.stack.next();if(A){this.setActiveTab(A)}else{this.setActiveTab(0)}}this.delegateUpdates()},onBeforeShowItem:function(A){if(A!=this.activeTab){this.setActiveTab(A);return false}},onItemDisabled:function(B){var A=this.getTabEl(B);if(A){Ext.fly(A).addClass("x-item-disabled")}this.stack.remove(B)},onItemEnabled:function(B){var A=this.getTabEl(B);if(A){Ext.fly(A).removeClass("x-item-disabled")}},onItemTitleChanged:function(B){var A=this.getTabEl(B);if(A){Ext.fly(A).child("span.x-tab-strip-text",true).innerHTML=B.title}},getTabEl:function(A){var B=(typeof A==="number")?this.items.items[A].getItemId():A.getItemId();return document.getElementById(this.id+this.idDelimiter+B)},onResize:function(){Ext.TabPanel.superclass.onResize.apply(this,arguments);this.delegateUpdates()},beginUpdate:function(){this.suspendUpdates=true},endUpdate:function(){this.suspendUpdates=false;this.delegateUpdates()},hideTabStripItem:function(B){B=this.getComponent(B);var A=this.getTabEl(B);if(A){A.style.display="none";this.delegateUpdates()}this.stack.remove(B)},unhideTabStripItem:function(B){B=this.getComponent(B);var A=this.getTabEl(B);if(A){A.style.display="";this.delegateUpdates()}},delegateUpdates:function(){if(this.suspendUpdates){return }if(this.resizeTabs&&this.rendered){this.autoSizeTabs()}if(this.enableTabScroll&&this.rendered){this.autoScrollTabs()}},autoSizeTabs:function(){var G=this.items.length;var B=this.tabPosition!="bottom"?"header":"footer";var C=this[B].dom.offsetWidth;var A=this[B].dom.clientWidth;if(!this.resizeTabs||G<1||!A){return }var I=Math.max(Math.min(Math.floor((A-4)/G)-this.tabMargin,this.tabWidth),this.minTabWidth);this.lastTabWidth=I;var K=this.stripWrap.dom.getElementsByTagName("li");for(var E=0,H=K.length-1;E<H;E++){var J=K[E];var L=J.childNodes[1].firstChild.firstChild;var F=J.offsetWidth;var D=L.offsetWidth;L.style.width=(I-(F-D))+"px"}},adjustBodyWidth:function(A){if(this.header){this.header.setWidth(A)}if(this.footer){this.footer.setWidth(A)}return A},setActiveTab:function(C){C=this.getComponent(C);if(!C||this.fireEvent("beforetabchange",this,C,this.activeTab)===false){return }if(!this.rendered){this.activeTab=C;return }if(this.activeTab!=C){if(this.activeTab){var A=this.getTabEl(this.activeTab);if(A){Ext.fly(A).removeClass("x-tab-strip-active")}this.activeTab.fireEvent("deactivate",this.activeTab)}var B=this.getTabEl(C);Ext.fly(B).addClass("x-tab-strip-active");this.activeTab=C;this.stack.add(C);this.layout.setActiveItem(C);if(this.layoutOnTabChange&&C.doLayout){C.doLayout()}if(this.scrolling){this.scrollToTab(C,this.animScroll)}C.fireEvent("activate",C);this.fireEvent("tabchange",this,C)}},getActiveTab:function(){return this.activeTab||null},getItem:function(A){return this.getComponent(A)},autoScrollTabs:function(){var G=this.items.length;var D=this.header.dom.offsetWidth;var C=this.header.dom.clientWidth;var F=this.stripWrap;var E=F.dom;var B=E.offsetWidth;var H=this.getScrollPos();var A=this.edge.getOffsetsTo(this.stripWrap)[0]+H;if(!this.enableTabScroll||G<1||B<20){return }if(A<=C){E.scrollLeft=0;F.setWidth(C);if(this.scrolling){this.scrolling=false;this.header.removeClass("x-tab-scrolling");this.scrollLeft.hide();this.scrollRight.hide();if(Ext.isAir){E.style.marginLeft="";E.style.marginRight=""}}}else{if(!this.scrolling){this.header.addClass("x-tab-scrolling");if(Ext.isAir){E.style.marginLeft="18px";E.style.marginRight="18px"}}C-=F.getMargins("lr");F.setWidth(C>20?C:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(H>(A-C)){E.scrollLeft=A-C}else{this.scrollToTab(this.activeTab,false)}this.updateScrollButtons()}},createScrollers:function(){var C=this.stripWrap.dom.offsetHeight;var A=this.header.insertFirst({cls:"x-tab-scroller-left"});A.setHeight(C);A.addClassOnOver("x-tab-scroller-left-over");this.leftRepeater=new Ext.util.ClickRepeater(A,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=A;var B=this.header.insertFirst({cls:"x-tab-scroller-right"});B.setHeight(C);B.addClassOnOver("x-tab-scroller-right-over");this.rightRepeater=new Ext.util.ClickRepeater(B,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=B},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},getScrollIncrement:function(){return this.scrollIncrement||(this.resizeTabs?this.lastTabWidth+2:100)},scrollToTab:function(E,A){if(!E){return }var C=this.getTabEl(E);var G=this.getScrollPos(),D=this.getScrollArea();var F=Ext.fly(C).getOffsetsTo(this.stripWrap)[0]+G;var B=F+C.offsetWidth;if(F<G){this.scrollTo(F,A)}else{if(B>(G+D)){this.scrollTo(B-D,A)}}},scrollTo:function(B,A){this.stripWrap.scrollTo("left",B,A?this.getScrollAnim():false);if(!A){this.updateScrollButtons()}},onWheel:function(D){var E=D.getWheelDelta()*this.wheelIncrement*-1;D.stopEvent();var F=this.getScrollPos();var C=F+E;var A=this.getScrollWidth()-this.getScrollArea();var B=Math.max(0,Math.min(A,C));if(B!=F){this.scrollTo(B,false)}},onScrollRight:function(){var A=this.getScrollWidth()-this.getScrollArea();var C=this.getScrollPos();var B=Math.min(A,C+this.getScrollIncrement());if(B!=C){this.scrollTo(B,this.animScroll)}},onScrollLeft:function(){var B=this.getScrollPos();var A=Math.max(0,B-this.getScrollIncrement());if(A!=B){this.scrollTo(A,this.animScroll)}},updateScrollButtons:function(){var A=this.getScrollPos();this.scrollLeft[A==0?"addClass":"removeClass"]("x-tab-scroller-left-disabled");this.scrollRight[A>=(this.getScrollWidth()-this.getScrollArea())?"addClass":"removeClass"]("x-tab-scroller-right-disabled")}});Ext.reg("tabpanel",Ext.TabPanel);Ext.TabPanel.prototype.activate=Ext.TabPanel.prototype.setActiveTab;Ext.TabPanel.AccessStack=function(){var A=[];return{add:function(B){A.push(B);if(A.length>10){A.shift()}},remove:function(E){var D=[];for(var C=0,B=A.length;C<B;C++){if(A[C]!=E){D.push(A[C])}}A=D},next:function(){return A.pop()}}};
+Ext.Button=Ext.extend(Ext.Component,{hidden:false,disabled:false,pressed:false,enableToggle:false,menuAlign:"tl-bl?",type:"button",menuClassTarget:"tr",clickEvent:"click",handleMouseEvents:true,tooltipType:"qtip",buttonSelector:"button:first",initComponent:function(){Ext.Button.superclass.initComponent.call(this);this.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout");if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu)}if(typeof this.toggleGroup==="string"){this.enableToggle=true}},onRender:function(C,A){if(!this.template){if(!Ext.Button.buttonTemplate){Ext.Button.buttonTemplate=new Ext.Template("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"x-btn-wrap\"><tbody><tr>","<td class=\"x-btn-left\"><i>&#160;</i></td><td class=\"x-btn-center\"><em unselectable=\"on\"><button class=\"x-btn-text\" type=\"{1}\">{0}</button></em></td><td class=\"x-btn-right\"><i>&#160;</i></td>","</tr></tbody></table>")}this.template=Ext.Button.buttonTemplate}var B,E=[this.text||"&#160;",this.type];if(A){B=this.template.insertBefore(A,E,true)}else{B=this.template.append(C,E,true)}var D=B.child(this.buttonSelector);D.on("focus",this.onFocus,this);D.on("blur",this.onBlur,this);this.initButtonEl(B,D);if(this.menu){this.el.child(this.menuClassTarget).addClass("x-btn-with-menu")}Ext.ButtonToggleMgr.register(this)},initButtonEl:function(B,C){this.el=B;B.addClass("x-btn");if(this.icon){C.setStyle("background-image","url("+this.icon+")")}if(this.iconCls){C.addClass(this.iconCls);if(!this.cls){B.addClass(this.text?"x-btn-text-icon":"x-btn-icon")}}if(this.tabIndex!==undefined){C.dom.tabIndex=this.tabIndex}if(this.tooltip){if(typeof this.tooltip=="object"){Ext.QuickTips.register(Ext.apply({target:C.id},this.tooltip))}else{C.dom[this.tooltipType]=this.tooltip}}if(this.pressed){this.el.addClass("x-btn-pressed")}if(this.handleMouseEvents){B.on("mouseover",this.onMouseOver,this);B.on("mousedown",this.onMouseDown,this)}if(this.menu){this.menu.on("show",this.onMenuShow,this);this.menu.on("hide",this.onMenuHide,this)}if(this.id){this.el.dom.id=this.el.id=this.id}if(this.repeat){var A=new Ext.util.ClickRepeater(B,typeof this.repeat=="object"?this.repeat:{});A.on("click",this.onClick,this)}B.on(this.clickEvent,this.onClick,this)},afterRender:function(){Ext.Button.superclass.afterRender.call(this);if(Ext.isIE6){this.autoWidth.defer(1,this)}else{this.autoWidth()}},setIconClass:function(A){if(this.el){this.el.child(this.buttonSelector).replaceClass(this.iconCls,A)}this.iconCls=A},beforeDestroy:function(){if(this.rendered){var A=this.el.child(this.buttonSelector);if(A){A.removeAllListeners()}}if(this.menu){Ext.destroy(this.menu)}},onDestroy:function(){if(this.rendered){Ext.ButtonToggleMgr.unregister(this)}},autoWidth:function(){if(this.el){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var A=this.el.child(this.buttonSelector);if(A&&A.getWidth()>20){A.clip();A.setWidth(Ext.util.TextMetrics.measure(A,this.text).width+A.getFrameWidth("lr"))}}if(this.minWidth){if(this.el.getWidth()<this.minWidth){this.el.setWidth(this.minWidth)}}}},setHandler:function(B,A){this.handler=B;this.scope=A},setText:function(A){this.text=A;if(this.el){this.el.child("td.x-btn-center "+this.buttonSelector).update(A)}this.autoWidth()},getText:function(){return this.text},toggle:function(A){A=A===undefined?!this.pressed:A;if(A!=this.pressed){if(A){this.el.addClass("x-btn-pressed");this.pressed=true;this.fireEvent("toggle",this,true)}else{this.el.removeClass("x-btn-pressed");this.pressed=false;this.fireEvent("toggle",this,false)}if(this.toggleHandler){this.toggleHandler.call(this.scope||this,this,A)}}},focus:function(){this.el.child(this.buttonSelector).focus()},onDisable:function(){if(this.el){if(!Ext.isIE6||!this.text){this.el.addClass(this.disabledClass)}this.el.dom.disabled=true}this.disabled=true},onEnable:function(){if(this.el){if(!Ext.isIE6||!this.text){this.el.removeClass(this.disabledClass)}this.el.dom.disabled=false}this.disabled=false},showMenu:function(){if(this.menu){this.menu.show(this.el,this.menuAlign)}return this},hideMenu:function(){if(this.menu){this.menu.hide()}return this},hasVisibleMenu:function(){return this.menu&&this.menu.isVisible()},onClick:function(A){if(A){A.preventDefault()}if(A.button!=0){return }if(!this.disabled){if(this.enableToggle&&(this.allowDepress!==false||!this.pressed)){this.toggle()}if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("click",this,A);if(this.handler){this.handler.call(this.scope||this,this,A)}}},isMenuTriggerOver:function(B,A){return this.menu&&!A},isMenuTriggerOut:function(B,A){return this.menu&&!A},onMouseOver:function(B){if(!this.disabled){var A=B.within(this.el,true);if(!A){this.el.addClass("x-btn-over");if(!this.monitoringMouseOver){Ext.getDoc().on("mouseover",this.monitorMouseOver,this);this.monitoringMouseOver=true}this.fireEvent("mouseover",this,B)}if(this.isMenuTriggerOver(B,A)){this.fireEvent("menutriggerover",this,this.menu,B)}}},monitorMouseOver:function(A){if(A.target!=this.el.dom&&!A.within(this.el)){if(this.monitoringMouseOver){Ext.getDoc().un("mouseover",this.monitorMouseOver,this);this.monitoringMouseOver=false}this.onMouseOut(A)}},onMouseOut:function(B){var A=B.within(this.el)&&B.target!=this.el.dom;this.el.removeClass("x-btn-over");this.fireEvent("mouseout",this,B);if(this.isMenuTriggerOut(B,A)){this.fireEvent("menutriggerout",this,this.menu,B)}},onFocus:function(A){if(!this.disabled){this.el.addClass("x-btn-focus")}},onBlur:function(A){this.el.removeClass("x-btn-focus")},getClickEl:function(B,A){return this.el},onMouseDown:function(A){if(!this.disabled&&A.button==0){this.getClickEl(A).addClass("x-btn-click");Ext.getDoc().on("mouseup",this.onMouseUp,this)}},onMouseUp:function(A){if(A.button==0){this.getClickEl(A,true).removeClass("x-btn-click");Ext.getDoc().un("mouseup",this.onMouseUp,this)}},onMenuShow:function(A){this.ignoreNextClick=0;this.el.addClass("x-btn-menu-active");this.fireEvent("menushow",this,this.menu)},onMenuHide:function(A){this.el.removeClass("x-btn-menu-active");this.ignoreNextClick=this.restoreClick.defer(250,this);this.fireEvent("menuhide",this,this.menu)},restoreClick:function(){this.ignoreNextClick=0}});Ext.reg("button",Ext.Button);Ext.ButtonToggleMgr=function(){var A={};function B(E,G){if(G){var F=A[E.toggleGroup];for(var D=0,C=F.length;D<C;D++){if(F[D]!=E){F[D].toggle(false)}}}}return{register:function(C){if(!C.toggleGroup){return }var D=A[C.toggleGroup];if(!D){D=A[C.toggleGroup]=[]}D.push(C);C.on("toggle",B)},unregister:function(C){if(!C.toggleGroup){return }var D=A[C.toggleGroup];if(D){D.remove(C);C.un("toggle",B)}}}}();
+Ext.SplitButton=Ext.extend(Ext.Button,{arrowSelector:"button:last",initComponent:function(){Ext.SplitButton.superclass.initComponent.call(this);this.addEvents("arrowclick")},onRender:function(D,A){var B=new Ext.Template("<table cellspacing=\"0\" class=\"x-btn-menu-wrap x-btn\"><tr><td>","<table cellspacing=\"0\" class=\"x-btn-wrap x-btn-menu-text-wrap\"><tbody>","<tr><td class=\"x-btn-left\"><i>&#160;</i></td><td class=\"x-btn-center\"><button class=\"x-btn-text\" type=\"{1}\">{0}</button></td></tr>","</tbody></table></td><td>","<table cellspacing=\"0\" class=\"x-btn-wrap x-btn-menu-arrow-wrap\"><tbody>","<tr><td class=\"x-btn-center\"><button class=\"x-btn-menu-arrow-el\" type=\"button\">&#160;</button></td><td class=\"x-btn-right\"><i>&#160;</i></td></tr>","</tbody></table></td></tr></table>");var C,F=[this.text||"&#160;",this.type];if(A){C=B.insertBefore(A,F,true)}else{C=B.append(D,F,true)}var E=C.child(this.buttonSelector);this.initButtonEl(C,E);this.arrowBtnTable=C.child("table:last");if(this.arrowTooltip){C.child(this.arrowSelector).dom[this.tooltipType]=this.arrowTooltip}},autoWidth:function(){if(this.el){var C=this.el.child("table:first");var B=this.el.child("table:last");this.el.setWidth("auto");C.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var A=this.el.child(this.buttonSelector);if(A&&A.getWidth()>20){A.clip();A.setWidth(Ext.util.TextMetrics.measure(A,this.text).width+A.getFrameWidth("lr"))}}if(this.minWidth){if((C.getWidth()+B.getWidth())<this.minWidth){C.setWidth(this.minWidth-B.getWidth())}}this.el.setWidth(C.getWidth()+B.getWidth())}},setArrowHandler:function(B,A){this.arrowHandler=B;this.scope=A},onClick:function(A){A.preventDefault();if(!this.disabled){if(A.getTarget(".x-btn-menu-arrow-wrap")){if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("arrowclick",this,A);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,A)}}else{if(this.enableToggle){this.toggle()}this.fireEvent("click",this,A);if(this.handler){this.handler.call(this.scope||this,this,A)}}}},getClickEl:function(B,A){if(!A){return(this.lastClickEl=B.getTarget("table",10,true))}return this.lastClickEl},onDisable:function(){if(this.el){if(!Ext.isIE6){this.el.addClass("x-item-disabled")}this.el.child(this.buttonSelector).dom.disabled=true;this.el.child(this.arrowSelector).dom.disabled=true}this.disabled=true},onEnable:function(){if(this.el){if(!Ext.isIE6){this.el.removeClass("x-item-disabled")}this.el.child(this.buttonSelector).dom.disabled=false;this.el.child(this.arrowSelector).dom.disabled=false}this.disabled=false},isMenuTriggerOver:function(A){return this.menu&&A.within(this.arrowBtnTable)&&!A.within(this.arrowBtnTable,true)},isMenuTriggerOut:function(B,A){return this.menu&&!B.within(this.arrowBtnTable)},onDestroy:function(){Ext.destroy(this.arrowBtnTable);Ext.SplitButton.superclass.onDestroy.call(this)}});Ext.MenuButton=Ext.SplitButton;Ext.reg("splitbutton",Ext.SplitButton);
+Ext.CycleButton=Ext.extend(Ext.SplitButton,{getItemText:function(A){if(A&&this.showText===true){var B="";if(this.prependText){B+=this.prependText}B+=A.text;return B}return undefined},setActiveItem:function(C,A){if(typeof C!="object"){C=this.menu.items.get(C)}if(C){if(!this.rendered){this.text=this.getItemText(C);this.iconCls=C.iconCls}else{var B=this.getItemText(C);if(B){this.setText(B)}this.setIconClass(C.iconCls)}this.activeItem=C;if(!C.checked){C.setChecked(true,true)}if(this.forceIcon){this.setIconClass(this.forceIcon)}if(!A){this.fireEvent("change",this,C)}}},getActiveItem:function(){return this.activeItem},initComponent:function(){this.addEvents("change");if(this.changeHandler){this.on("change",this.changeHandler,this.scope||this);delete this.changeHandler}this.itemCount=this.items.length;this.menu={cls:"x-cycle-menu",items:[]};var D;for(var B=0,A=this.itemCount;B<A;B++){var C=this.items[B];C.group=C.group||this.id;C.itemIndex=B;C.checkHandler=this.checkHandler;C.scope=this;C.checked=C.checked||false;this.menu.items.push(C);if(C.checked){D=C}}this.setActiveItem(D,true);Ext.CycleButton.superclass.initComponent.call(this);this.on("click",this.toggleSelected,this)},checkHandler:function(A,B){if(B){this.setActiveItem(A)}},toggleSelected:function(){this.menu.render();var C,A;for(var B=1;B<this.itemCount;B++){C=(this.activeItem.itemIndex+B)%this.itemCount;A=this.menu.items.itemAt(C);if(!A.disabled){A.setChecked(true);break}}}});Ext.reg("cycle",Ext.CycleButton);
+Ext.Toolbar=function(A){if(Ext.isArray(A)){A={buttons:A}}Ext.Toolbar.superclass.constructor.call(this,A)};(function(){var A=Ext.Toolbar;Ext.extend(A,Ext.BoxComponent,{trackMenus:true,initComponent:function(){A.superclass.initComponent.call(this);if(this.items){this.buttons=this.items}this.items=new Ext.util.MixedCollection(false,function(B){return B.itemId||B.id||Ext.id()})},autoCreate:{cls:"x-toolbar x-small-editor",html:"<table cellspacing=\"0\"><tr></tr></table>"},onRender:function(C,B){this.el=C.createChild(Ext.apply({id:this.id},this.autoCreate),B);this.tr=this.el.child("tr",true)},afterRender:function(){A.superclass.afterRender.call(this);if(this.buttons){this.add.apply(this,this.buttons);delete this.buttons}},add:function(){var C=arguments,B=C.length;for(var D=0;D<B;D++){var E=C[D];if(E.isFormField){this.addField(E)}else{if(E.render){this.addItem(E)}else{if(typeof E=="string"){if(E=="separator"||E=="-"){this.addSeparator()}else{if(E==" "){this.addSpacer()}else{if(E=="->"){this.addFill()}else{this.addText(E)}}}}else{if(E.tagName){this.addElement(E)}else{if(typeof E=="object"){if(E.xtype){this.addField(Ext.ComponentMgr.create(E,"button"))}else{this.addButton(E)}}}}}}}},addSeparator:function(){return this.addItem(new A.Separator())},addSpacer:function(){return this.addItem(new A.Spacer())},addFill:function(){return this.addItem(new A.Fill())},addElement:function(B){return this.addItem(new A.Item(B))},addItem:function(B){var C=this.nextBlock();this.initMenuTracking(B);B.render(C);this.items.add(B);return B},addButton:function(D){if(Ext.isArray(D)){var F=[];for(var E=0,C=D.length;E<C;E++){F.push(this.addButton(D[E]))}return F}var B=D;if(!(D instanceof A.Button)){B=D.split?new A.SplitButton(D):new A.Button(D)}var G=this.nextBlock();this.initMenuTracking(B);B.render(G);this.items.add(B);return B},initMenuTracking:function(B){if(this.trackMenus&&B.menu){B.on({"menutriggerover":this.onButtonTriggerOver,"menushow":this.onButtonMenuShow,"menuhide":this.onButtonMenuHide,scope:this})}},addText:function(B){return this.addItem(new A.TextItem(B))},insertButton:function(C,F){if(Ext.isArray(F)){var E=[];for(var D=0,B=F.length;D<B;D++){E.push(this.insertButton(C+D,F[D]))}return E}if(!(F instanceof A.Button)){F=new A.Button(F)}var G=document.createElement("td");this.tr.insertBefore(G,this.tr.childNodes[C]);this.initMenuTracking(F);F.render(G);this.items.insert(C,F);return F},addDom:function(C,B){var E=this.nextBlock();Ext.DomHelper.overwrite(E,C);var D=new A.Item(E.firstChild);D.render(E);this.items.add(D);return D},addField:function(C){var D=this.nextBlock();C.render(D);var B=new A.Item(D.firstChild);B.render(D);this.items.add(C);return B},nextBlock:function(){var B=document.createElement("td");this.tr.appendChild(B);return B},onDestroy:function(){Ext.Toolbar.superclass.onDestroy.call(this);if(this.rendered){if(this.items){Ext.destroy.apply(Ext,this.items.items)}Ext.Element.uncache(this.tr)}},onDisable:function(){this.items.each(function(B){if(B.disable){B.disable()}})},onEnable:function(){this.items.each(function(B){if(B.enable){B.enable()}})},onButtonTriggerOver:function(B){if(this.activeMenuBtn&&this.activeMenuBtn!=B){this.activeMenuBtn.hideMenu();B.showMenu();this.activeMenuBtn=B}},onButtonMenuShow:function(B){this.activeMenuBtn=B},onButtonMenuHide:function(B){delete this.activeMenuBtn}});Ext.reg("toolbar",Ext.Toolbar);A.Item=function(B){this.el=Ext.getDom(B);this.id=Ext.id(this.el);this.hidden=false};A.Item.prototype={getEl:function(){return this.el},render:function(B){this.td=B;B.appendChild(this.el)},destroy:function(){if(this.td&&this.td.parentNode){this.td.parentNode.removeChild(this.td)}},show:function(){this.hidden=false;this.td.style.display=""},hide:function(){this.hidden=true;this.td.style.display="none"},setVisible:function(B){if(B){this.show()}else{this.hide()}},focus:function(){Ext.fly(this.el).focus()},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;this.el.disabled=true},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;this.el.disabled=false}};Ext.reg("tbitem",A.Item);A.Separator=function(){var B=document.createElement("span");B.className="ytb-sep";A.Separator.superclass.constructor.call(this,B)};Ext.extend(A.Separator,A.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbseparator",A.Separator);A.Spacer=function(){var B=document.createElement("div");B.className="ytb-spacer";A.Spacer.superclass.constructor.call(this,B)};Ext.extend(A.Spacer,A.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbspacer",A.Spacer);A.Fill=Ext.extend(A.Spacer,{render:function(B){B.style.width="100%";A.Fill.superclass.render.call(this,B)}});Ext.reg("tbfill",A.Fill);A.TextItem=function(B){var C=document.createElement("span");C.className="ytb-text";C.innerHTML=B.text?B.text:B;A.TextItem.superclass.constructor.call(this,C)};Ext.extend(A.TextItem,A.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbtext",A.TextItem);A.Button=Ext.extend(Ext.Button,{hideParent:true,onDestroy:function(){A.Button.superclass.onDestroy.call(this);if(this.container){this.container.remove()}}});Ext.reg("tbbutton",A.Button);A.SplitButton=Ext.extend(Ext.SplitButton,{hideParent:true,onDestroy:function(){A.SplitButton.superclass.onDestroy.call(this);if(this.container){this.container.remove()}}});Ext.reg("tbsplit",A.SplitButton);A.MenuButton=A.SplitButton})();
+Ext.PagingToolbar=Ext.extend(Ext.Toolbar,{pageSize:20,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",paramNames:{start:"start",limit:"limit"},initComponent:function(){this.addEvents("change","beforechange");Ext.PagingToolbar.superclass.initComponent.call(this);this.cursor=0;this.bind(this.store)},onRender:function(B,A){Ext.PagingToolbar.superclass.onRender.call(this,B,A);this.first=this.addButton({tooltip:this.firstText,iconCls:"x-tbar-page-first",disabled:true,handler:this.onClick.createDelegate(this,["first"])});this.prev=this.addButton({tooltip:this.prevText,iconCls:"x-tbar-page-prev",disabled:true,handler:this.onClick.createDelegate(this,["prev"])});this.addSeparator();this.add(this.beforePageText);this.field=Ext.get(this.addDom({tag:"input",type:"text",size:"3",value:"1",cls:"x-tbar-page-number"}).el);this.field.on("keydown",this.onPagingKeydown,this);this.field.on("focus",function(){this.dom.select()});this.afterTextEl=this.addText(String.format(this.afterPageText,1));this.field.setHeight(18);this.addSeparator();this.next=this.addButton({tooltip:this.nextText,iconCls:"x-tbar-page-next",disabled:true,handler:this.onClick.createDelegate(this,["next"])});this.last=this.addButton({tooltip:this.lastText,iconCls:"x-tbar-page-last",disabled:true,handler:this.onClick.createDelegate(this,["last"])});this.addSeparator();this.loading=this.addButton({tooltip:this.refreshText,iconCls:"x-tbar-loading",handler:this.onClick.createDelegate(this,["refresh"])});if(this.displayInfo){this.displayEl=Ext.fly(this.el.dom).createChild({cls:"x-paging-info"})}if(this.dsLoaded){this.onLoad.apply(this,this.dsLoaded)}},updateInfo:function(){if(this.displayEl){var A=this.store.getCount();var B=A==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+A,this.store.getTotalCount());this.displayEl.update(B)}},onLoad:function(A,C,F){if(!this.rendered){this.dsLoaded=[A,C,F];return }this.cursor=F.params?F.params[this.paramNames.start]:0;var E=this.getPageData(),B=E.activePage,D=E.pages;this.afterTextEl.el.innerHTML=String.format(this.afterPageText,E.pages);this.field.dom.value=B;this.first.setDisabled(B==1);this.prev.setDisabled(B==1);this.next.setDisabled(B==D);this.last.setDisabled(B==D);this.loading.enable();this.updateInfo();this.fireEvent("change",this,E)},getPageData:function(){var A=this.store.getTotalCount();return{total:A,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:A<this.pageSize?1:Math.ceil(A/this.pageSize)}},onLoadError:function(){if(!this.rendered){return }this.loading.enable()},readPage:function(C){var A=this.field.dom.value,B;if(!A||isNaN(B=parseInt(A,10))){this.field.dom.value=C.activePage;return false}return B},onPagingKeydown:function(D){var B=D.getKey(),E=this.getPageData(),C;if(B==D.RETURN){D.stopEvent();C=this.readPage(E);if(C!==false){C=Math.min(Math.max(1,C),E.pages)-1;this.doLoad(C*this.pageSize)}}else{if(B==D.HOME||B==D.END){D.stopEvent();C=B==D.HOME?1:E.pages;this.field.dom.value=C}else{if(B==D.UP||B==D.PAGEUP||B==D.DOWN||B==D.PAGEDOWN){D.stopEvent();if(C=this.readPage(E)){var A=D.shiftKey?10:1;if(B==D.DOWN||B==D.PAGEDOWN){A*=-1}C+=A;if(C>=1&C<=E.pages){this.field.dom.value=C}}}}}},beforeLoad:function(){if(this.rendered&&this.loading){this.loading.disable()}},doLoad:function(C){var B={},A=this.paramNames;B[A.start]=C;B[A.limit]=this.pageSize;if(this.fireEvent("beforechange",this,B)!==false){this.store.load({params:B})}},changePage:function(A){this.doLoad(((A-1)*this.pageSize).constrain(0,this.store.getTotalCount()))},onClick:function(E){var B=this.store;switch(E){case"first":this.doLoad(0);break;case"prev":this.doLoad(Math.max(0,this.cursor-this.pageSize));break;case"next":this.doLoad(this.cursor+this.pageSize);break;case"last":var D=B.getTotalCount();var A=D%this.pageSize;var C=A?(D-A):D-this.pageSize;this.doLoad(C);break;case"refresh":this.doLoad(this.cursor);break}},unbind:function(A){A=Ext.StoreMgr.lookup(A);A.un("beforeload",this.beforeLoad,this);A.un("load",this.onLoad,this);A.un("loadexception",this.onLoadError,this);this.store=undefined},bind:function(A){A=Ext.StoreMgr.lookup(A);A.on("beforeload",this.beforeLoad,this);A.on("load",this.onLoad,this);A.on("loadexception",this.onLoadError,this);this.store=A}});Ext.reg("paging",Ext.PagingToolbar);
+Ext.Resizable=function(D,E){this.el=Ext.get(D);if(E&&E.wrap){E.resizeChild=this.el;this.el=this.el.wrap(typeof E.wrap=="object"?E.wrap:{cls:"xresizable-wrap"});this.el.id=this.el.dom.id=E.resizeChild.id+"-rzwrap";this.el.setStyle("overflow","hidden");this.el.setPositioning(E.resizeChild.getPositioning());E.resizeChild.clearPositioning();if(!E.width||!E.height){var F=E.resizeChild.getSize();this.el.setSize(F.width,F.height)}if(E.pinned&&!E.adjustments){E.adjustments="auto"}}this.proxy=this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id+"-rzproxy"},Ext.getBody());this.proxy.unselectable();this.proxy.enableDisplayMode("block");Ext.apply(this,E);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned")}var I=this.el.getStyle("position");if(I!="absolute"&&I!="fixed"){this.el.setStyle("position","relative")}if(!this.handles){this.handles="s,e,se";if(this.multiDirectional){this.handles+=",n,w"}}if(this.handles=="all"){this.handles="n s e w ne nw se sw"}var M=this.handles.split(/\s*?[,;]\s*?| /);var C=Ext.Resizable.positions;for(var H=0,J=M.length;H<J;H++){if(M[H]&&C[M[H]]){var L=C[M[H]];this[L]=new Ext.Resizable.Handle(this,L,this.disableTrackOver,this.transparent)}}this.corner=this.southeast;if(this.handles.indexOf("n")!=-1||this.handles.indexOf("w")!=-1){this.updateBox=true}this.activeHandle=null;if(this.resizeChild){if(typeof this.resizeChild=="boolean"){this.resizeChild=Ext.get(this.el.dom.firstChild,true)}else{this.resizeChild=Ext.get(this.resizeChild,true)}}if(this.adjustments=="auto"){var B=this.resizeChild;var K=this.west,G=this.east,A=this.north,M=this.south;if(B&&(K||A)){B.position("relative");B.setLeft(K?K.el.getWidth():0);B.setTop(A?A.el.getHeight():0)}this.adjustments=[(G?-G.el.getWidth():0)+(K?-K.el.getWidth():0),(A?-A.el.getHeight():0)+(M?-M.el.getHeight():0)-1]}if(this.draggable){this.dd=this.dynamic?this.el.initDD(null):this.el.initDDProxy(null,{dragElId:this.proxy.id});this.dd.setHandleElId(this.resizeChild?this.resizeChild.id:this.el.id)}this.addEvents("beforeresize","resize");if(this.width!==null&&this.height!==null){this.resizeTo(this.width,this.height)}else{this.updateChildSize()}if(Ext.isIE){this.el.dom.style.zoom=1}Ext.Resizable.superclass.constructor.call(this)};Ext.extend(Ext.Resizable,Ext.util.Observable,{resizeChild:false,adjustments:[0,0],minWidth:5,minHeight:5,maxWidth:10000,maxHeight:10000,enabled:true,animate:false,duration:0.35,dynamic:false,handles:false,multiDirectional:false,disableTrackOver:false,easing:"easeOutStrong",widthIncrement:0,heightIncrement:0,pinned:false,width:null,height:null,preserveRatio:false,transparent:false,minX:0,minY:0,draggable:false,resizeTo:function(B,A){this.el.setSize(B,A);this.updateChildSize();this.fireEvent("resize",this,B,A,null)},startSizing:function(C,B){this.fireEvent("beforeresize",this,C);if(this.enabled){if(!this.overlay){this.overlay=this.el.createProxy({tag:"div",cls:"x-resizable-overlay",html:"&#160;"},Ext.getBody());this.overlay.unselectable();this.overlay.enableDisplayMode("block");this.overlay.on("mousemove",this.onMouseMove,this);this.overlay.on("mouseup",this.onMouseUp,this)}this.overlay.setStyle("cursor",B.el.getStyle("cursor"));this.resizing=true;this.startBox=this.el.getBox();this.startPoint=C.getXY();this.offsets=[(this.startBox.x+this.startBox.width)-this.startPoint[0],(this.startBox.y+this.startBox.height)-this.startPoint[1]];this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();if(this.constrainTo){var A=Ext.get(this.constrainTo);this.resizeRegion=A.getRegion().adjust(A.getFrameWidth("t"),A.getFrameWidth("l"),-A.getFrameWidth("b"),-A.getFrameWidth("r"))}this.proxy.setStyle("visibility","hidden");this.proxy.show();this.proxy.setBox(this.startBox);if(!this.dynamic){this.proxy.setStyle("visibility","visible")}}},onMouseDown:function(A,B){if(this.enabled){B.stopEvent();this.activeHandle=A;this.startSizing(B,A)}},onMouseUp:function(B){var A=this.resizeElement();this.resizing=false;this.handleOut();this.overlay.hide();this.proxy.hide();this.fireEvent("resize",this,A.width,A.height,B)},updateChildSize:function(){if(this.resizeChild){var C=this.el;var D=this.resizeChild;var B=this.adjustments;if(C.dom.offsetWidth){var A=C.getSize(true);D.setSize(A.width+B[0],A.height+B[1])}if(Ext.isIE){setTimeout(function(){if(C.dom.offsetWidth){var E=C.getSize(true);D.setSize(E.width+B[0],E.height+B[1])}},10)}}},snap:function(C,E,B){if(!E||!C){return C}var D=C;var A=C%E;if(A>0){if(A>(E/2)){D=C+(E-A)}else{D=C-A}}return Math.max(B,D)},resizeElement:function(){var A=this.proxy.getBox();if(this.updateBox){this.el.setBox(A,false,this.animate,this.duration,null,this.easing)}else{this.el.setSize(A.width,A.height,this.animate,this.duration,null,this.easing)}this.updateChildSize();if(!this.dynamic){this.proxy.hide()}return A},constrain:function(B,C,A,D){if(B-C<A){C=B-A}else{if(B-C>D){C=D-B}}return C},onMouseMove:function(S){if(this.enabled){try{if(this.resizeRegion&&!this.resizeRegion.contains(S.getPoint())){return }var Q=this.curSize||this.startBox;var I=this.startBox.x,H=this.startBox.y;var C=I,B=H;var J=Q.width,R=Q.height;var D=J,L=R;var K=this.minWidth,T=this.minHeight;var P=this.maxWidth,W=this.maxHeight;var F=this.widthIncrement;var A=this.heightIncrement;var U=S.getXY();var O=-(this.startPoint[0]-Math.max(this.minX,U[0]));var M=-(this.startPoint[1]-Math.max(this.minY,U[1]));var G=this.activeHandle.position;switch(G){case"east":J+=O;J=Math.min(Math.max(K,J),P);break;case"south":R+=M;R=Math.min(Math.max(T,R),W);break;case"southeast":J+=O;R+=M;J=Math.min(Math.max(K,J),P);R=Math.min(Math.max(T,R),W);break;case"north":M=this.constrain(R,M,T,W);H+=M;R-=M;break;case"west":O=this.constrain(J,O,K,P);I+=O;J-=O;break;case"northeast":J+=O;J=Math.min(Math.max(K,J),P);M=this.constrain(R,M,T,W);H+=M;R-=M;break;case"northwest":O=this.constrain(J,O,K,P);M=this.constrain(R,M,T,W);H+=M;R-=M;I+=O;J-=O;break;case"southwest":O=this.constrain(J,O,K,P);R+=M;R=Math.min(Math.max(T,R),W);I+=O;J-=O;break}var N=this.snap(J,F,K);var V=this.snap(R,A,T);if(N!=J||V!=R){switch(G){case"northeast":H-=V-R;break;case"north":H-=V-R;break;case"southwest":I-=N-J;break;case"west":I-=N-J;break;case"northwest":I-=N-J;H-=V-R;break}J=N;R=V}if(this.preserveRatio){switch(G){case"southeast":case"east":R=L*(J/D);R=Math.min(Math.max(T,R),W);J=D*(R/L);break;case"south":J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);break;case"northeast":J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);break;case"north":var X=J;J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);I+=(X-J)/2;break;case"southwest":R=L*(J/D);R=Math.min(Math.max(T,R),W);var X=J;J=D*(R/L);I+=X-J;break;case"west":var E=R;R=L*(J/D);R=Math.min(Math.max(T,R),W);H+=(E-R)/2;var X=J;J=D*(R/L);I+=X-J;break;case"northwest":var X=J;var E=R;R=L*(J/D);R=Math.min(Math.max(T,R),W);J=D*(R/L);H+=E-R;I+=X-J;break}}this.proxy.setBounds(I,H,J,R);if(this.dynamic){this.resizeElement()}}catch(S){}}},handleOver:function(){if(this.enabled){this.el.addClass("x-resizable-over")}},handleOut:function(){if(!this.resizing){this.el.removeClass("x-resizable-over")}},getEl:function(){return this.el},getResizeChild:function(){return this.resizeChild},destroy:function(C){this.proxy.remove();if(this.overlay){this.overlay.removeAllListeners();this.overlay.remove()}var D=Ext.Resizable.positions;for(var A in D){if(typeof D[A]!="function"&&this[D[A]]){var B=this[D[A]];B.el.removeAllListeners();B.el.remove()}}if(C){this.el.update("");this.el.remove()}},syncHandleHeight:function(){var A=this.el.getHeight(true);if(this.west){this.west.el.setHeight(A)}if(this.east){this.east.el.setHeight(A)}}});Ext.Resizable.positions={n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};Ext.Resizable.Handle=function(C,E,B,D){if(!this.tpl){var A=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});A.compile();Ext.Resizable.Handle.prototype.tpl=A}this.position=E;this.rz=C;this.el=this.tpl.append(C.el.dom,[this.position],true);this.el.unselectable();if(D){this.el.setOpacity(0)}this.el.on("mousedown",this.onMouseDown,this);if(!B){this.el.on("mouseover",this.onMouseOver,this);this.el.on("mouseout",this.onMouseOut,this)}};Ext.Resizable.Handle.prototype={afterResize:function(A){},onMouseDown:function(A){this.rz.onMouseDown(this,A)},onMouseOver:function(A){this.rz.handleOver(this,A)},onMouseOut:function(A){this.rz.handleOut(this,A)}};
+Ext.Editor=function(B,A){this.field=B;Ext.Editor.superclass.constructor.call(this,A)};Ext.extend(Ext.Editor,Ext.Component,{value:"",alignment:"c-c?",shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:false,cancelOnEsc:false,updateEl:false,initComponent:function(){Ext.Editor.superclass.initComponent.call(this);this.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onRender:function(B,A){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:B,shim:this.shim,shadowOffset:4,id:this.id,constrain:this.constrain});this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!="title"){this.field.msgTarget="qtip"}this.field.inEditor=true;this.field.render(this.el);if(Ext.isGecko){this.field.el.dom.setAttribute("autocomplete","off")}this.field.on("specialkey",this.onSpecialKey,this);if(this.swallowKeys){this.field.el.swallowEvent(["keydown","keypress"])}this.field.show();this.field.on("blur",this.onBlur,this);if(this.field.grow){this.field.on("autosize",this.el.sync,this.el,{delay:1})}},onSpecialKey:function(C,B){var A=B.getKey();if(this.completeOnEnter&&A==B.ENTER){B.stopEvent();this.completeEdit()}else{if(this.cancelOnEsc&&A==B.ESC){this.cancelEdit()}else{this.fireEvent("specialkey",C,B)}}if(this.field.triggerBlur&&(A==B.ENTER||A==B.ESC||A==B.TAB)){this.field.triggerBlur()}},startEdit:function(B,C){if(this.editing){this.completeEdit()}this.boundEl=Ext.get(B);var A=C!==undefined?C:this.boundEl.dom.innerHTML;if(!this.rendered){this.render(this.parentEl||document.body)}if(this.fireEvent("beforestartedit",this,this.boundEl,A)===false){return }this.startValue=A;this.field.setValue(A);this.doAutoSize();this.el.alignTo(this.boundEl,this.alignment);this.editing=true;this.show()},doAutoSize:function(){if(this.autoSize){var A=this.boundEl.getSize();switch(this.autoSize){case"width":this.setSize(A.width,"");break;case"height":this.setSize("",A.height);break;default:this.setSize(A.width,A.height)}}},setSize:function(A,B){delete this.field.lastSize;this.field.setSize(A,B);if(this.el){if(Ext.isGecko2||Ext.isOpera){this.el.setSize(A,B)}this.el.sync()}},realign:function(){this.el.alignTo(this.boundEl,this.alignment)},completeEdit:function(A){if(!this.editing){return }var B=this.getValue();if(this.revertInvalid!==false&&!this.field.isValid()){B=this.startValue;this.cancelEdit(true)}if(String(B)===String(this.startValue)&&this.ignoreNoChange){this.editing=false;this.hide();return }if(this.fireEvent("beforecomplete",this,B,this.startValue)!==false){this.editing=false;if(this.updateEl&&this.boundEl){this.boundEl.update(B)}if(A!==true){this.hide()}this.fireEvent("complete",this,B,this.startValue)}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide()}this.field.show();if(Ext.isIE&&!this.fixIEFocus){this.fixIEFocus=true;this.deferredFocus.defer(50,this)}else{this.field.focus()}this.fireEvent("startedit",this.boundEl,this.startValue)},deferredFocus:function(){if(this.editing){this.field.focus()}},cancelEdit:function(A){if(this.editing){var B=this.getValue();this.setValue(this.startValue);if(A!==true){this.hide()}this.fireEvent("canceledit",this,B,this.startValue)}},onBlur:function(){if(this.allowBlur!==true&&this.editing){this.completeEdit()}},onHide:function(){if(this.editing){this.completeEdit();return }this.field.blur();if(this.field.collapse){this.field.collapse()}this.el.hide();if(this.hideEl!==false){this.boundEl.show()}},setValue:function(A){this.field.setValue(A)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){this.field.destroy();this.field=null}});Ext.reg("editor",Ext.Editor);
+Ext.MessageBox=function(){var R,B,N,Q;var G,J,P,A,K,M,H,F;var O,S,L,C="";var D=function(U){if(R.isVisible()){R.hide();Ext.callback(B.fn,B.scope||window,[U,S.dom.value],1)}};var T=function(){if(B&&B.cls){R.el.removeClass(B.cls)}K.reset()};var E=function(W,U,V){if(B&&B.closable!==false){R.hide()}if(V){V.stopEvent()}};var I=function(U){var W=0;if(!U){O["ok"].hide();O["cancel"].hide();O["yes"].hide();O["no"].hide();return W}R.footer.dom.style.display="";for(var V in O){if(typeof O[V]!="function"){if(U[V]){O[V].show();O[V].setText(typeof U[V]=="string"?U[V]:Ext.MessageBox.buttonText[V]);W+=O[V].el.getWidth()+15}else{O[V].hide()}}}return W};return{getDialog:function(U){if(!R){R=new Ext.Window({autoCreate:true,title:U,resizable:false,constrain:true,constrainHeader:true,minimizable:false,maximizable:false,stateful:false,modal:true,shim:true,buttonAlign:"center",width:400,height:100,minHeight:80,plain:true,footer:true,closable:true,close:function(){if(B&&B.buttons&&B.buttons.no&&!B.buttons.cancel){D("no")}else{D("cancel")}}});O={};var V=this.buttonText;O["ok"]=R.addButton(V["ok"],D.createCallback("ok"));O["yes"]=R.addButton(V["yes"],D.createCallback("yes"));O["no"]=R.addButton(V["no"],D.createCallback("no"));O["cancel"]=R.addButton(V["cancel"],D.createCallback("cancel"));O["ok"].hideMode=O["yes"].hideMode=O["no"].hideMode=O["cancel"].hideMode="offsets";R.render(document.body);R.getEl().addClass("x-window-dlg");N=R.mask;G=R.body.createChild({html:"<div class=\"ext-mb-icon\"></div><div class=\"ext-mb-content\"><span class=\"ext-mb-text\"></span><br /><div class=\"ext-mb-fix-cursor\"><input type=\"text\" class=\"ext-mb-input\" /><textarea class=\"ext-mb-textarea\"></textarea></div></div>"});H=Ext.get(G.dom.firstChild);var W=G.dom.childNodes[1];J=Ext.get(W.firstChild);P=Ext.get(W.childNodes[2].firstChild);P.enableDisplayMode();P.addKeyListener([10,13],function(){if(R.isVisible()&&B&&B.buttons){if(B.buttons.ok){D("ok")}else{if(B.buttons.yes){D("yes")}}}});A=Ext.get(W.childNodes[2].childNodes[1]);A.enableDisplayMode();K=new Ext.ProgressBar({renderTo:G});G.createChild({cls:"x-clear"})}return R},updateText:function(X){if(!R.isVisible()&&!B.width){R.setSize(this.maxWidth,100)}J.update(X||"&#160;");var V=C!=""?(H.getWidth()+H.getMargins("lr")):0;var Z=J.getWidth()+J.getMargins("lr");var W=R.getFrameWidth("lr");var Y=R.body.getFrameWidth("lr");if(Ext.isIE&&V>0){V+=3}var U=Math.max(Math.min(B.width||V+Z+W+Y,this.maxWidth),Math.max(B.minWidth||this.minWidth,L||0));if(B.prompt===true){S.setWidth(U-V-W-Y)}if(B.progress===true||B.wait===true){K.setSize(U-V-W-Y)}R.setSize(U,"auto").center();return this},updateProgress:function(V,U,W){K.updateProgress(V,U);if(W){this.updateText(W)}return this},isVisible:function(){return R&&R.isVisible()},hide:function(){if(this.isVisible()){R.hide();T()}return this},show:function(X){if(this.isVisible()){this.hide()}B=X;var Y=this.getDialog(B.title||"&#160;");Y.setTitle(B.title||"&#160;");var U=(B.closable!==false&&B.progress!==true&&B.wait!==true);Y.tools.close.setDisplayed(U);S=P;B.prompt=B.prompt||(B.multiline?true:false);if(B.prompt){if(B.multiline){P.hide();A.show();A.setHeight(typeof B.multiline=="number"?B.multiline:this.defaultTextHeight);S=A}else{P.show();A.hide()}}else{P.hide();A.hide()}S.dom.value=B.value||"";if(B.prompt){Y.focusEl=S}else{var W=B.buttons;var V=null;if(W&&W.ok){V=O["ok"]}else{if(W&&W.yes){V=O["yes"]}}if(V){Y.focusEl=V}}if(B.iconCls){Y.setIconClass(B.iconCls)}this.setIcon(B.icon);L=I(B.buttons);K.setVisible(B.progress===true||B.wait===true);this.updateProgress(0,B.progressText);this.updateText(B.msg);if(B.cls){Y.el.addClass(B.cls)}Y.proxyDrag=B.proxyDrag===true;Y.modal=B.modal!==false;Y.mask=B.modal!==false?N:false;if(!Y.isVisible()){document.body.appendChild(R.el.dom);Y.setAnimateTarget(B.animEl);Y.show(B.animEl)}Y.on("show",function(){if(U===true){Y.keyMap.enable()}else{Y.keyMap.disable()}},this,{single:true});if(B.wait===true){K.wait(B.waitConfig)}return this},setIcon:function(U){if(U&&U!=""){H.removeClass("x-hidden");H.replaceClass(C,U);C=U}else{H.replaceClass(C,"x-hidden");C=""}return this},progress:function(W,V,U){this.show({title:W,msg:V,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,progressText:U});return this},wait:function(W,V,U){this.show({title:V,msg:W,buttons:false,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:U});return this},alert:function(X,W,V,U){this.show({title:X,msg:W,buttons:this.OK,fn:V,scope:U});return this},confirm:function(X,W,V,U){this.show({title:X,msg:W,buttons:this.YESNO,fn:V,scope:U,icon:this.QUESTION});return this},prompt:function(Z,Y,W,V,U,X){this.show({title:Z,msg:Y,buttons:this.OKCANCEL,fn:W,minWidth:250,scope:V,prompt:true,multiline:U,value:X});return this},OK:{ok:true},CANCEL:{cancel:true},OKCANCEL:{ok:true,cancel:true},YESNO:{yes:true,no:true},YESNOCANCEL:{yes:true,no:true,cancel:true},INFO:"ext-mb-info",WARNING:"ext-mb-warning",QUESTION:"ext-mb-question",ERROR:"ext-mb-error",defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}}}();Ext.Msg=Ext.MessageBox;
+Ext.Tip=Ext.extend(Ext.Panel,{minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",autoRender:true,quickShowInterval:250,frame:true,hidden:true,baseCls:"x-tip",floating:{shadow:true,shim:true,useDisplay:true,constrain:false},autoHeight:true,initComponent:function(){Ext.Tip.superclass.initComponent.call(this);if(this.closable&&!this.title){this.elements+=",header"}},afterRender:function(){Ext.Tip.superclass.afterRender.call(this);if(this.closable){this.addTool({id:"close",handler:this.hide,scope:this})}},showAt:function(A){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){this.doAutoWidth()}if(this.constrainPosition){A=this.el.adjustForConstraints(A)}this.setPagePosition(A[0],A[1])},doAutoWidth:function(){var A=this.body.getTextWidth();if(this.title){A=Math.max(A,this.header.child("span").getTextWidth(this.title))}A+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr");this.setWidth(A.constrain(this.minWidth,this.maxWidth));if(Ext.isIE7&&!this.repainted){this.el.repaint();this.repainted=true}},showBy:function(A,B){if(!this.rendered){this.render(Ext.getBody())}this.showAt(this.el.getAlignToXY(A,B||this.defaultAlign))},initDraggable:function(){this.dd=new Ext.Tip.DD(this,typeof this.draggable=="boolean"?null:this.draggable);this.header.addClass("x-tip-draggable")}});Ext.Tip.DD=function(B,A){Ext.apply(this,A);this.tip=B;Ext.Tip.DD.superclass.constructor.call(this,B.el.id,"WindowDD-"+B.id);this.setHandleElId(B.header.id);this.scroll=false};Ext.extend(Ext.Tip.DD,Ext.dd.DD,{moveOnly:true,scroll:false,headerOffsets:[100,25],startDrag:function(){this.tip.el.disableShadow()},endDrag:function(A){this.tip.el.enableShadow(true)}});
+Ext.ToolTip=Ext.extend(Ext.Tip,{showDelay:500,hideDelay:200,dismissDelay:5000,mouseOffset:[15,18],trackMouse:false,constrainPosition:true,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget()},initTarget:function(){if(this.target){this.target=Ext.get(this.target);this.target.on("mouseover",this.onTargetOver,this);this.target.on("mouseout",this.onTargetOut,this);this.target.on("mousemove",this.onMouseMove,this)}},onMouseMove:function(A){this.targetXY=A.getXY();if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}},getTargetXY:function(){return[this.targetXY[0]+this.mouseOffset[0],this.targetXY[1]+this.mouseOffset[1]]},onTargetOver:function(A){if(this.disabled||A.within(this.target.dom,true)){return }this.clearTimer("hide");this.targetXY=A.getXY();this.delayShow()},delayShow:function(){if(this.hidden&&!this.showTimer){if(this.lastActive.getElapsed()<this.quickShowInterval){this.show()}else{this.showTimer=this.show.defer(this.showDelay,this)}}else{if(!this.hidden&&this.autoHide!==false){this.show()}}},onTargetOut:function(A){if(this.disabled||A.within(this.target.dom,true)){return }this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},delayHide:function(){if(!this.hidden&&!this.hideTimer){this.hideTimer=this.hide.defer(this.hideDelay,this)}},hide:function(){this.clearTimer("dismiss");this.lastActive=new Date();Ext.ToolTip.superclass.hide.call(this)},show:function(){this.showAt(this.getTargetXY())},showAt:function(A){this.lastActive=new Date();this.clearTimers();Ext.ToolTip.superclass.showAt.call(this,A);if(this.dismissDelay&&this.autoHide!==false){this.dismissTimer=this.hide.defer(this.dismissDelay,this)}},clearTimer:function(A){A=A+"Timer";clearTimeout(this[A]);delete this[A]},clearTimers:function(){this.clearTimer("show");this.clearTimer("dismiss");this.clearTimer("hide")},onShow:function(){Ext.ToolTip.superclass.onShow.call(this);Ext.getDoc().on("mousedown",this.onDocMouseDown,this)},onHide:function(){Ext.ToolTip.superclass.onHide.call(this);Ext.getDoc().un("mousedown",this.onDocMouseDown,this)},onDocMouseDown:function(A){if(this.autoHide!==false&&!A.within(this.el.dom)){this.disable();this.enable.defer(100,this)}},onDisable:function(){this.clearTimers();this.hide()},adjustPosition:function(A,D){var C=this.targetXY[1],B=this.getSize().height;if(this.constrainPosition&&D<=C&&(D+B)>=C){D=C-B-5}return{x:A,y:D}},onDestroy:function(){Ext.ToolTip.superclass.onDestroy.call(this);if(this.target){this.target.un("mouseover",this.onTargetOver,this);this.target.un("mouseout",this.onTargetOut,this);this.target.un("mousemove",this.onMouseMove,this)}}});
+Ext.QuickTip=Ext.extend(Ext.ToolTip,{interceptTitles:false,tagConfig:{namespace:"ext",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(D){var F=Ext.isArray(D)?D:arguments;for(var E=0,A=F.length;E<A;E++){var H=F[E];var G=H.target;if(G){if(Ext.isArray(G)){for(var C=0,B=G.length;C<B;C++){this.targets[Ext.id(G[C])]=H}}else{this.targets[Ext.id(G)]=H}}}},unregister:function(A){delete this.targets[Ext.id(A)]},onTargetOver:function(G){if(this.disabled){return }this.targetXY=G.getXY();var C=G.getTarget();if(!C||C.nodeType!==1||C==document||C==document.body){return }if(this.activeTarget&&C==this.activeTarget.el){this.clearTimer("hide");this.show();return }if(C&&this.targets[C.id]){this.activeTarget=this.targets[C.id];this.activeTarget.el=C;this.delayShow();return }var E,F=Ext.fly(C),B=this.tagConfig;var D=B.namespace;if(this.interceptTitles&&C.title){E=C.title;C.qtip=E;C.removeAttribute("title");G.preventDefault()}else{E=C.qtip||F.getAttributeNS(D,B.attribute)}if(E){var A=F.getAttributeNS(D,B.hide);this.activeTarget={el:C,text:E,width:F.getAttributeNS(D,B.width),autoHide:A!="user"&&A!=="false",title:F.getAttributeNS(D,B.title),cls:F.getAttributeNS(D,B.cls),align:F.getAttributeNS(D,B.align)};this.delayShow()}},onTargetOut:function(A){this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},showAt:function(B){var A=this.activeTarget;if(A){if(!this.rendered){this.render(Ext.getBody());this.activeTarget=A}if(A.width){this.setWidth(A.width);this.body.setWidth(this.adjustBodyWidth(A.width-this.getFrameWidth()));this.measureWidth=false}else{this.measureWidth=true}this.setTitle(A.title||"");this.body.update(A.text);this.autoHide=A.autoHide;this.dismissDelay=A.dismissDelay||this.dismissDelay;if(this.lastCls){this.el.removeClass(this.lastCls);delete this.lastCls}if(A.cls){this.el.addClass(A.cls);this.lastCls=A.cls}if(A.align){B=this.el.getAlignToXY(A.el,A.align);this.constrainPosition=false}else{this.constrainPosition=true}}Ext.QuickTip.superclass.showAt.call(this,B)},hide:function(){delete this.activeTarget;Ext.QuickTip.superclass.hide.call(this)}});
+Ext.QuickTips=function(){var B,A=[];return{init:function(C){if(!B){if(!Ext.isReady){Ext.onReady(function(){Ext.QuickTips.init(C)});return }B=new Ext.QuickTip({elements:"header,body"});if(C!==false){B.render(Ext.getBody())}}},enable:function(){if(B){A.pop();if(A.length<1){B.enable()}}},disable:function(){if(B){B.disable()}A.push(1)},isEnabled:function(){return B!==undefined&&!B.disabled},getQuickTip:function(){return B},register:function(){B.register.apply(B,arguments)},unregister:function(){B.unregister.apply(B,arguments)},tips:function(){B.register.apply(B,arguments)}}}();
+Ext.tree.TreePanel=Ext.extend(Ext.Panel,{rootVisible:true,animate:Ext.enableFx,lines:true,enableDD:false,hlDrop:Ext.enableFx,pathSeparator:"/",initComponent:function(){Ext.tree.TreePanel.superclass.initComponent.call(this);if(!this.eventModel){this.eventModel=new Ext.tree.TreeEventModel(this)}var A=this.loader;if(!A){A=new Ext.tree.TreeLoader({dataUrl:this.dataUrl})}else{if(typeof A=="object"&&!A.load){A=new Ext.tree.TreeLoader(A)}}this.loader=A;this.nodeHash={};if(this.root){this.setRootNode(this.root)}this.addEvents("append","remove","movenode","insert","beforeappend","beforeremove","beforemovenode","beforeinsert","beforeload","load","textchange","beforeexpandnode","beforecollapsenode","expandnode","disabledchange","collapsenode","beforeclick","click","checkchange","dblclick","contextmenu","beforechildrenrendered","startdrag","enddrag","dragdrop","beforenodedrop","nodedrop","nodedragover");if(this.singleExpand){this.on("beforeexpandnode",this.restrictExpand,this)}},proxyNodeEvent:function(C,B,A,G,F,E,D){if(C=="collapse"||C=="expand"||C=="beforecollapse"||C=="beforeexpand"||C=="move"||C=="beforemove"){C=C+"node"}return this.fireEvent(C,B,A,G,F,E,D)},getRootNode:function(){return this.root},setRootNode:function(B){if(!B.render){B=this.loader.createNode(B)}this.root=B;B.ownerTree=this;B.isRoot=true;this.registerNode(B);if(!this.rootVisible){var A=B.attributes.uiProvider;B.ui=A?new A(B):new Ext.tree.RootTreeNodeUI(B)}return B},getNodeById:function(A){return this.nodeHash[A]},registerNode:function(A){this.nodeHash[A.id]=A},unregisterNode:function(A){delete this.nodeHash[A.id]},toString:function(){return"[Tree"+(this.id?" "+this.id:"")+"]"},restrictExpand:function(A){var B=A.parentNode;if(B){if(B.expandedChild&&B.expandedChild.parentNode==B){B.expandedChild.collapse()}B.expandedChild=A}},getChecked:function(A,B){B=B||this.root;var C=[];var D=function(){if(this.attributes.checked){C.push(!A?this:(A=="id"?this.id:this.attributes[A]))}};B.cascade(D);return C},getEl:function(){return this.el},getLoader:function(){return this.loader},expandAll:function(){this.root.expand(true)},collapseAll:function(){this.root.collapse(true)},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.tree.DefaultSelectionModel()}return this.selModel},expandPath:function(F,A,G){A=A||"id";var D=F.split(this.pathSeparator);var C=this.root;if(C.attributes[A]!=D[1]){if(G){G(false,null)}return }var B=1;var E=function(){if(++B==D.length){if(G){G(true,C)}return }var H=C.findChild(A,D[B]);if(!H){if(G){G(false,C)}return }C=H;H.expand(false,false,E)};C.expand(false,false,E)},selectPath:function(E,A,F){A=A||"id";var C=E.split(this.pathSeparator);var B=C.pop();if(C.length>0){var D=function(H,G){if(H&&G){var I=G.findChild(A,B);if(I){I.select();if(F){F(true,I)}}else{if(F){F(false,I)}}}else{if(F){F(false,I)}}};this.expandPath(C.join(this.pathSeparator),A,D)}else{this.root.select();if(F){F(true,this.root)}}},getTreeEl:function(){return this.body},onRender:function(B,A){Ext.tree.TreePanel.superclass.onRender.call(this,B,A);this.el.addClass("x-tree");this.innerCt=this.body.createChild({tag:"ul",cls:"x-tree-root-ct "+(this.useArrows?"x-tree-arrows":this.lines?"x-tree-lines":"x-tree-no-lines")})},initEvents:function(){Ext.tree.TreePanel.superclass.initEvents.call(this);if(this.containerScroll){Ext.dd.ScrollManager.register(this.body)}if((this.enableDD||this.enableDrop)&&!this.dropZone){this.dropZone=new Ext.tree.TreeDropZone(this,this.dropConfig||{ddGroup:this.ddGroup||"TreeDD",appendOnly:this.ddAppendOnly===true})}if((this.enableDD||this.enableDrag)&&!this.dragZone){this.dragZone=new Ext.tree.TreeDragZone(this,this.dragConfig||{ddGroup:this.ddGroup||"TreeDD",scroll:this.ddScroll})}this.getSelectionModel().init(this)},afterRender:function(){Ext.tree.TreePanel.superclass.afterRender.call(this);this.root.render();if(!this.rootVisible){this.root.renderChildren()}},onDestroy:function(){if(this.rendered){this.body.removeAllListeners();Ext.dd.ScrollManager.unregister(this.body);if(this.dropZone){this.dropZone.unreg()}if(this.dragZone){this.dragZone.unreg()}}this.root.destroy();this.nodeHash=null;Ext.tree.TreePanel.superclass.onDestroy.call(this)}});Ext.tree.TreePanel.nodeTypes={};Ext.reg("treepanel",Ext.tree.TreePanel);
+Ext.tree.TreeEventModel=function(A){this.tree=A;this.tree.on("render",this.initEvents,this)};Ext.tree.TreeEventModel.prototype={initEvents:function(){var A=this.tree.getTreeEl();A.on("click",this.delegateClick,this);if(this.tree.trackMouseOver!==false){A.on("mouseover",this.delegateOver,this);A.on("mouseout",this.delegateOut,this)}A.on("dblclick",this.delegateDblClick,this);A.on("contextmenu",this.delegateContextMenu,this)},getNode:function(B){var A;if(A=B.getTarget(".x-tree-node-el",10)){var C=Ext.fly(A,"_treeEvents").getAttributeNS("ext","tree-node-id");if(C){return this.tree.getNodeById(C)}}return null},getNodeTarget:function(B){var A=B.getTarget(".x-tree-node-icon",1);if(!A){A=B.getTarget(".x-tree-node-el",6)}return A},delegateOut:function(B,A){if(!this.beforeEvent(B)){return }if(B.getTarget(".x-tree-ec-icon",1)){var C=this.getNode(B);this.onIconOut(B,C);if(C==this.lastEcOver){delete this.lastEcOver}}if((A=this.getNodeTarget(B))&&!B.within(A,true)){this.onNodeOut(B,this.getNode(B))}},delegateOver:function(B,A){if(!this.beforeEvent(B)){return }if(this.lastEcOver){this.onIconOut(B,this.lastEcOver);delete this.lastEcOver}if(B.getTarget(".x-tree-ec-icon",1)){this.lastEcOver=this.getNode(B);this.onIconOver(B,this.lastEcOver)}if(A=this.getNodeTarget(B)){this.onNodeOver(B,this.getNode(B))}},delegateClick:function(B,A){if(!this.beforeEvent(B)){return }if(B.getTarget("input[type=checkbox]",1)){this.onCheckboxClick(B,this.getNode(B))}else{if(B.getTarget(".x-tree-ec-icon",1)){this.onIconClick(B,this.getNode(B))}else{if(this.getNodeTarget(B)){this.onNodeClick(B,this.getNode(B))}}}},delegateDblClick:function(B,A){if(this.beforeEvent(B)&&this.getNodeTarget(B)){this.onNodeDblClick(B,this.getNode(B))}},delegateContextMenu:function(B,A){if(this.beforeEvent(B)&&this.getNodeTarget(B)){this.onNodeContextMenu(B,this.getNode(B))}},onNodeClick:function(B,A){A.ui.onClick(B)},onNodeOver:function(B,A){A.ui.onOver(B)},onNodeOut:function(B,A){A.ui.onOut(B)},onIconOver:function(B,A){A.ui.addClass("x-tree-ec-over")},onIconOut:function(B,A){A.ui.removeClass("x-tree-ec-over")},onIconClick:function(B,A){A.ui.ecClick(B)},onCheckboxClick:function(B,A){A.ui.onCheckChange(B)},onNodeDblClick:function(B,A){A.ui.onDblClick(B)},onNodeContextMenu:function(B,A){A.ui.onContextMenu(B)},beforeEvent:function(A){if(this.disabled){A.stopEvent();return false}return true},disable:function(){this.disabled=true},enable:function(){this.disabled=false}};
+Ext.tree.DefaultSelectionModel=function(A){this.selNode=null;this.addEvents("selectionchange","beforeselect");Ext.apply(this,A);Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.tree.DefaultSelectionModel,Ext.util.Observable,{init:function(A){this.tree=A;A.getTreeEl().on("keydown",this.onKeyDown,this);A.on("click",this.onNodeClick,this)},onNodeClick:function(A,B){this.select(A)},select:function(B){var A=this.selNode;if(A!=B&&this.fireEvent("beforeselect",this,B,A)!==false){if(A){A.ui.onSelectedChange(false)}this.selNode=B;B.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,B,A)}return B},unselect:function(A){if(this.selNode==A){this.clearSelections()}},clearSelections:function(){var A=this.selNode;if(A){A.ui.onSelectedChange(false);this.selNode=null;this.fireEvent("selectionchange",this,null)}return A},getSelectedNode:function(){return this.selNode},isSelected:function(A){return this.selNode==A},selectPrevious:function(){var A=this.selNode||this.lastSelNode;if(!A){return null}var C=A.previousSibling;if(C){if(!C.isExpanded()||C.childNodes.length<1){return this.select(C)}else{var B=C.lastChild;while(B&&B.isExpanded()&&B.childNodes.length>0){B=B.lastChild}return this.select(B)}}else{if(A.parentNode&&(this.tree.rootVisible||!A.parentNode.isRoot)){return this.select(A.parentNode)}}return null},selectNext:function(){var B=this.selNode||this.lastSelNode;if(!B){return null}if(B.firstChild&&B.isExpanded()){return this.select(B.firstChild)}else{if(B.nextSibling){return this.select(B.nextSibling)}else{if(B.parentNode){var A=null;B.parentNode.bubble(function(){if(this.nextSibling){A=this.getOwnerTree().selModel.select(this.nextSibling);return false}});return A}}}return null},onKeyDown:function(C){var B=this.selNode||this.lastSelNode;var D=this;if(!B){return }var A=C.getKey();switch(A){case C.DOWN:C.stopEvent();this.selectNext();break;case C.UP:C.stopEvent();this.selectPrevious();break;case C.RIGHT:C.preventDefault();if(B.hasChildNodes()){if(!B.isExpanded()){B.expand()}else{if(B.firstChild){this.select(B.firstChild,C)}}}break;case C.LEFT:C.preventDefault();if(B.hasChildNodes()&&B.isExpanded()){B.collapse()}else{if(B.parentNode&&(this.tree.rootVisible||B.parentNode!=this.tree.getRootNode())){this.select(B.parentNode,C)}}break}}});Ext.tree.MultiSelectionModel=function(A){this.selNodes=[];this.selMap={};this.addEvents("selectionchange");Ext.apply(this,A);Ext.tree.MultiSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.tree.MultiSelectionModel,Ext.util.Observable,{init:function(A){this.tree=A;A.getTreeEl().on("keydown",this.onKeyDown,this);A.on("click",this.onNodeClick,this)},onNodeClick:function(A,B){this.select(A,B,B.ctrlKey)},select:function(A,C,B){if(B!==true){this.clearSelections(true)}if(this.isSelected(A)){this.lastSelNode=A;return A}this.selNodes.push(A);this.selMap[A.id]=A;this.lastSelNode=A;A.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,this.selNodes);return A},unselect:function(B){if(this.selMap[B.id]){B.ui.onSelectedChange(false);var C=this.selNodes;var A=C.indexOf(B);if(A!=-1){this.selNodes.splice(A,1)}delete this.selMap[B.id];this.fireEvent("selectionchange",this,this.selNodes)}},clearSelections:function(B){var D=this.selNodes;if(D.length>0){for(var C=0,A=D.length;C<A;C++){D[C].ui.onSelectedChange(false)}this.selNodes=[];this.selMap={};if(B!==true){this.fireEvent("selectionchange",this,this.selNodes)}}},isSelected:function(A){return this.selMap[A.id]?true:false},getSelectedNodes:function(){return this.selNodes},onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious});
+Ext.tree.TreeNode=function(A){A=A||{};if(typeof A=="string"){A={text:A}}this.childrenRendered=false;this.rendered=false;Ext.tree.TreeNode.superclass.constructor.call(this,A);this.expanded=A.expanded===true;this.isTarget=A.isTarget!==false;this.draggable=A.draggable!==false&&A.allowDrag!==false;this.allowChildren=A.allowChildren!==false&&A.allowDrop!==false;this.text=A.text;this.disabled=A.disabled===true;this.addEvents("textchange","beforeexpand","beforecollapse","expand","disabledchange","collapse","beforeclick","click","checkchange","dblclick","contextmenu","beforechildrenrendered");var B=this.attributes.uiProvider||this.defaultUI||Ext.tree.TreeNodeUI;this.ui=new B(this)};Ext.extend(Ext.tree.TreeNode,Ext.data.Node,{preventHScroll:true,isExpanded:function(){return this.expanded},getUI:function(){return this.ui},getLoader:function(){var A;return this.loader||((A=this.getOwnerTree())&&A.loader?A.loader:new Ext.tree.TreeLoader())},setFirstChild:function(A){var B=this.firstChild;Ext.tree.TreeNode.superclass.setFirstChild.call(this,A);if(this.childrenRendered&&B&&A!=B){B.renderIndent(true,true)}if(this.rendered){this.renderIndent(true,true)}},setLastChild:function(B){var A=this.lastChild;Ext.tree.TreeNode.superclass.setLastChild.call(this,B);if(this.childrenRendered&&A&&B!=A){A.renderIndent(true,true)}if(this.rendered){this.renderIndent(true,true)}},appendChild:function(B){if(!B.render&&!Ext.isArray(B)){B=this.getLoader().createNode(B)}var A=Ext.tree.TreeNode.superclass.appendChild.call(this,B);if(A&&this.childrenRendered){A.render()}this.ui.updateExpandIcon();return A},removeChild:function(A){this.ownerTree.getSelectionModel().unselect(A);Ext.tree.TreeNode.superclass.removeChild.apply(this,arguments);if(this.childrenRendered){A.ui.remove()}if(this.childNodes.length<1){this.collapse(false,false)}else{this.ui.updateExpandIcon()}if(!this.firstChild&&!this.isHiddenRoot()){this.childrenRendered=false}return A},insertBefore:function(C,A){if(!C.render){C=this.getLoader().createNode(C)}var B=Ext.tree.TreeNode.superclass.insertBefore.apply(this,arguments);if(B&&A&&this.childrenRendered){C.render()}this.ui.updateExpandIcon();return B},setText:function(B){var A=this.text;this.text=B;this.attributes.text=B;if(this.rendered){this.ui.onTextChange(this,B,A)}this.fireEvent("textchange",this,B,A)},select:function(){this.getOwnerTree().getSelectionModel().select(this)},unselect:function(){this.getOwnerTree().getSelectionModel().unselect(this)},isSelected:function(){return this.getOwnerTree().getSelectionModel().isSelected(this)},expand:function(A,B,C){if(!this.expanded){if(this.fireEvent("beforeexpand",this,A,B)===false){return }if(!this.childrenRendered){this.renderChildren()}this.expanded=true;if(!this.isHiddenRoot()&&(this.getOwnerTree().animate&&B!==false)||B){this.ui.animExpand(function(){this.fireEvent("expand",this);if(typeof C=="function"){C(this)}if(A===true){this.expandChildNodes(true)}}.createDelegate(this));return }else{this.ui.expand();this.fireEvent("expand",this);if(typeof C=="function"){C(this)}}}else{if(typeof C=="function"){C(this)}}if(A===true){this.expandChildNodes(true)}},isHiddenRoot:function(){return this.isRoot&&!this.getOwnerTree().rootVisible},collapse:function(B,E){if(this.expanded&&!this.isHiddenRoot()){if(this.fireEvent("beforecollapse",this,B,E)===false){return }this.expanded=false;if((this.getOwnerTree().animate&&E!==false)||E){this.ui.animCollapse(function(){this.fireEvent("collapse",this);if(B===true){this.collapseChildNodes(true)}}.createDelegate(this));return }else{this.ui.collapse();this.fireEvent("collapse",this)}}if(B===true){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].collapse(true,false)}}},delayedExpand:function(A){if(!this.expandProcId){this.expandProcId=this.expand.defer(A,this)}},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId)}this.expandProcId=false},toggle:function(){if(this.expanded){this.collapse()}else{this.expand()}},ensureVisible:function(B){var A=this.getOwnerTree();A.expandPath(this.parentNode.getPath(),false,function(){var C=A.getNodeById(this.id);A.getTreeEl().scrollChildIntoView(C.ui.anchor);Ext.callback(B)}.createDelegate(this))},expandChildNodes:function(B){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].expand(B)}},collapseChildNodes:function(B){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].collapse(B)}},disable:function(){this.disabled=true;this.unselect();if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,true)}this.fireEvent("disabledchange",this,true)},enable:function(){this.disabled=false;if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,false)}this.fireEvent("disabledchange",this,false)},renderChildren:function(B){if(B!==false){this.fireEvent("beforechildrenrendered",this)}var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].render(true)}this.childrenRendered=true},sort:function(E,D){Ext.tree.TreeNode.superclass.sort.apply(this,arguments);if(this.childrenRendered){var C=this.childNodes;for(var B=0,A=C.length;B<A;B++){C[B].render(true)}}},render:function(A){this.ui.render(A);if(!this.rendered){this.getOwnerTree().registerNode(this);this.rendered=true;if(this.expanded){this.expanded=false;this.expand(false,false)}}},renderIndent:function(B,E){if(E){this.ui.childIndent=null}this.ui.renderIndent();if(B===true&&this.childrenRendered){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].renderIndent(true,E)}}},beginUpdate:function(){this.childrenRendered=false},endUpdate:function(){if(this.expanded&&this.rendered){this.renderChildren()}},destroy:function(){if(this.childNodes){for(var B=0,A=this.childNodes.length;B<A;B++){this.childNodes[B].destroy()}this.childNodes=null}if(this.ui.destroy){this.ui.destroy()}}});Ext.tree.TreePanel.nodeTypes.node=Ext.tree.TreeNode;
+Ext.tree.AsyncTreeNode=function(A){this.loaded=A&&A.loaded===true;this.loading=false;Ext.tree.AsyncTreeNode.superclass.constructor.apply(this,arguments);this.addEvents("beforeload","load")};Ext.extend(Ext.tree.AsyncTreeNode,Ext.tree.TreeNode,{expand:function(B,D,F){if(this.loading){var E;var C=function(){if(!this.loading){clearInterval(E);this.expand(B,D,F)}}.createDelegate(this);E=setInterval(C,200);return }if(!this.loaded){if(this.fireEvent("beforeload",this)===false){return }this.loading=true;this.ui.beforeLoad(this);var A=this.loader||this.attributes.loader||this.getOwnerTree().getLoader();if(A){A.load(this,this.loadComplete.createDelegate(this,[B,D,F]));return }}Ext.tree.AsyncTreeNode.superclass.expand.call(this,B,D,F)},isLoading:function(){return this.loading},loadComplete:function(A,B,C){this.loading=false;this.loaded=true;this.ui.afterLoad(this);this.fireEvent("load",this);this.expand(A,B,C)},isLoaded:function(){return this.loaded},hasChildNodes:function(){if(!this.isLeaf()&&!this.loaded){return true}else{return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this)}},reload:function(A){this.collapse(false,false);while(this.firstChild){this.removeChild(this.firstChild)}this.childrenRendered=false;this.loaded=false;if(this.isHiddenRoot()){this.expanded=false}this.expand(false,false,A)}});Ext.tree.TreePanel.nodeTypes.async=Ext.tree.AsyncTreeNode;
+Ext.tree.TreeNodeUI=function(A){this.node=A;this.rendered=false;this.animating=false;this.wasLeaf=true;this.ecc="x-tree-ec-icon x-tree-elbow";this.emptyIcon=Ext.BLANK_IMAGE_URL};Ext.tree.TreeNodeUI.prototype={removeChild:function(A){if(this.rendered){this.ctNode.removeChild(A.ui.getEl())}},beforeLoad:function(){this.addClass("x-tree-node-loading")},afterLoad:function(){this.removeClass("x-tree-node-loading")},onTextChange:function(B,C,A){if(this.rendered){this.textNode.innerHTML=C}},onDisableChange:function(A,B){this.disabled=B;if(this.checkbox){this.checkbox.disabled=B}if(B){this.addClass("x-tree-node-disabled")}else{this.removeClass("x-tree-node-disabled")}},onSelectedChange:function(A){if(A){this.focus();this.addClass("x-tree-selected")}else{this.removeClass("x-tree-selected")}},onMove:function(A,G,E,F,D,B){this.childIndent=null;if(this.rendered){var H=F.ui.getContainer();if(!H){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);return }var C=B?B.ui.getEl():null;if(C){H.insertBefore(this.wrap,C)}else{H.appendChild(this.wrap)}this.node.renderIndent(true)}},addClass:function(A){if(this.elNode){Ext.fly(this.elNode).addClass(A)}},removeClass:function(A){if(this.elNode){Ext.fly(this.elNode).removeClass(A)}},remove:function(){if(this.rendered){this.holder=document.createElement("div");this.holder.appendChild(this.wrap)}},fireEvent:function(){return this.node.fireEvent.apply(this.node,arguments)},initEvents:function(){this.node.on("move",this.onMove,this);if(this.node.disabled){this.addClass("x-tree-node-disabled");if(this.checkbox){this.checkbox.disabled=true}}if(this.node.hidden){this.hide()}var B=this.node.getOwnerTree();var A=B.enableDD||B.enableDrag||B.enableDrop;if(A&&(!this.node.isRoot||B.rootVisible)){Ext.dd.Registry.register(this.elNode,{node:this.node,handles:this.getDDHandles(),isHandle:false})}},getDDHandles:function(){return[this.iconNode,this.textNode,this.elNode]},hide:function(){this.node.hidden=true;if(this.wrap){this.wrap.style.display="none"}},show:function(){this.node.hidden=false;if(this.wrap){this.wrap.style.display=""}},onContextMenu:function(A){if(this.node.hasListener("contextmenu")||this.node.getOwnerTree().hasListener("contextmenu")){A.preventDefault();this.focus();this.fireEvent("contextmenu",this.node,A)}},onClick:function(B){if(this.dropping){B.stopEvent();return }if(this.fireEvent("beforeclick",this.node,B)!==false){var A=B.getTarget("a");if(!this.disabled&&this.node.attributes.href&&A){this.fireEvent("click",this.node,B);return }else{if(A&&B.ctrlKey){B.stopEvent()}}B.preventDefault();if(this.disabled){return }if(this.node.attributes.singleClickExpand&&!this.animating&&this.node.isExpandable()){this.node.toggle()}this.fireEvent("click",this.node,B)}else{B.stopEvent()}},onDblClick:function(A){A.preventDefault();if(this.disabled){return }if(this.checkbox){this.toggleCheck()}if(!this.animating&&this.node.isExpandable()){this.node.toggle()}this.fireEvent("dblclick",this.node,A)},onOver:function(A){this.addClass("x-tree-node-over")},onOut:function(A){this.removeClass("x-tree-node-over")},onCheckChange:function(){var A=this.checkbox.checked;this.checkbox.defaultChecked=A;this.node.attributes.checked=A;this.fireEvent("checkchange",this.node,A)},ecClick:function(A){if(!this.animating&&this.node.isExpandable()){this.node.toggle()}},startDrop:function(){this.dropping=true},endDrop:function(){setTimeout(function(){this.dropping=false}.createDelegate(this),50)},expand:function(){this.updateExpandIcon();this.ctNode.style.display=""},focus:function(){if(!this.node.preventHScroll){try{this.anchor.focus()}catch(C){}}else{if(!Ext.isIE){try{var B=this.node.getOwnerTree().getTreeEl().dom;var A=B.scrollLeft;this.anchor.focus();B.scrollLeft=A}catch(C){}}}},toggleCheck:function(B){var A=this.checkbox;if(A){A.checked=(B===undefined?!A.checked:B);this.onCheckChange()}},blur:function(){try{this.anchor.blur()}catch(A){}},animExpand:function(B){var A=Ext.get(this.ctNode);A.stopFx();if(!this.node.isExpandable()){this.updateExpandIcon();this.ctNode.style.display="";Ext.callback(B);return }this.animating=true;this.updateExpandIcon();A.slideIn("t",{callback:function(){this.animating=false;Ext.callback(B)},scope:this,duration:this.node.ownerTree.duration||0.25})},highlight:function(){var A=this.node.getOwnerTree();Ext.fly(this.wrap).highlight(A.hlColor||"C3DAF9",{endColor:A.hlBaseColor})},collapse:function(){this.updateExpandIcon();this.ctNode.style.display="none"},animCollapse:function(B){var A=Ext.get(this.ctNode);A.enableDisplayMode("block");A.stopFx();this.animating=true;this.updateExpandIcon();A.slideOut("t",{callback:function(){this.animating=false;Ext.callback(B)},scope:this,duration:this.node.ownerTree.duration||0.25})},getContainer:function(){return this.ctNode},getEl:function(){return this.wrap},appendDDGhost:function(A){A.appendChild(this.elNode.cloneNode(true))},getDDRepairXY:function(){return Ext.lib.Dom.getXY(this.iconNode)},onRender:function(){this.render()},render:function(B){var D=this.node,A=D.attributes;var C=D.parentNode?D.parentNode.ui.getContainer():D.ownerTree.innerCt.dom;if(!this.rendered){this.rendered=true;this.renderElements(D,A,C,B);if(A.qtip){if(this.textNode.setAttributeNS){this.textNode.setAttributeNS("ext","qtip",A.qtip);if(A.qtipTitle){this.textNode.setAttributeNS("ext","qtitle",A.qtipTitle)}}else{this.textNode.setAttribute("ext:qtip",A.qtip);if(A.qtipTitle){this.textNode.setAttribute("ext:qtitle",A.qtipTitle)}}}else{if(A.qtipCfg){A.qtipCfg.target=Ext.id(this.textNode);Ext.QuickTips.register(A.qtipCfg)}}this.initEvents();if(!this.node.expanded){this.updateExpandIcon(true)}}else{if(B===true){C.appendChild(this.wrap)}}},renderElements:function(D,I,H,J){this.indentMarkup=D.parentNode?D.parentNode.ui.getChildIndent():"";var E=typeof I.checked=="boolean";var B=I.href?I.href:Ext.isGecko?"":"#";var C=["<li class=\"x-tree-node\"><div ext:tree-node-id=\"",D.id,"\" class=\"x-tree-node-el x-tree-node-leaf x-unselectable ",I.cls,"\" unselectable=\"on\">","<span class=\"x-tree-node-indent\">",this.indentMarkup,"</span>","<img src=\"",this.emptyIcon,"\" class=\"x-tree-ec-icon x-tree-elbow\" />","<img src=\"",I.icon||this.emptyIcon,"\" class=\"x-tree-node-icon",(I.icon?" x-tree-node-inline-icon":""),(I.iconCls?" "+I.iconCls:""),"\" unselectable=\"on\" />",E?("<input class=\"x-tree-node-cb\" type=\"checkbox\" "+(I.checked?"checked=\"checked\" />":"/>")):"","<a hidefocus=\"on\" class=\"x-tree-node-anchor\" href=\"",B,"\" tabIndex=\"1\" ",I.hrefTarget?" target=\""+I.hrefTarget+"\"":"","><span unselectable=\"on\">",D.text,"</span></a></div>","<ul class=\"x-tree-node-ct\" style=\"display:none;\"></ul>","</li>"].join("");var A;if(J!==true&&D.nextSibling&&(A=D.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",A,C)}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",H,C)}this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var G=this.elNode.childNodes;this.indentNode=G[0];this.ecNode=G[1];this.iconNode=G[2];var F=3;if(E){this.checkbox=G[3];this.checkbox.defaultChecked=this.checkbox.checked;F++}this.anchor=G[F];this.textNode=G[F].firstChild},getAnchor:function(){return this.anchor},getTextEl:function(){return this.textNode},getIconEl:function(){return this.iconNode},isChecked:function(){return this.checkbox?this.checkbox.checked:false},updateExpandIcon:function(){if(this.rendered){var E=this.node,D,C;var A=E.isLast()?"x-tree-elbow-end":"x-tree-elbow";if(E.isExpandable()){if(E.expanded){A+="-minus";D="x-tree-node-collapsed";C="x-tree-node-expanded"}else{A+="-plus";D="x-tree-node-expanded";C="x-tree-node-collapsed"}if(this.wasLeaf){this.removeClass("x-tree-node-leaf");this.wasLeaf=false}if(this.c1!=D||this.c2!=C){Ext.fly(this.elNode).replaceClass(D,C);this.c1=D;this.c2=C}}else{if(!this.wasLeaf){Ext.fly(this.elNode).replaceClass("x-tree-node-expanded","x-tree-node-leaf");delete this.c1;delete this.c2;this.wasLeaf=true}}var B="x-tree-ec-icon "+A;if(this.ecc!=B){this.ecNode.className=B;this.ecc=B}}},getChildIndent:function(){if(!this.childIndent){var A=[];var B=this.node;while(B){if(!B.isRoot||(B.isRoot&&B.ownerTree.rootVisible)){if(!B.isLast()){A.unshift("<img src=\""+this.emptyIcon+"\" class=\"x-tree-elbow-line\" />")}else{A.unshift("<img src=\""+this.emptyIcon+"\" class=\"x-tree-icon\" />")}}B=B.parentNode}this.childIndent=A.join("")}return this.childIndent},renderIndent:function(){if(this.rendered){var A="";var B=this.node.parentNode;if(B){A=B.ui.getChildIndent()}if(this.indentMarkup!=A){this.indentNode.innerHTML=A;this.indentMarkup=A}this.updateExpandIcon()}},destroy:function(){if(this.elNode){Ext.dd.Registry.unregister(this.elNode.id)}delete this.elNode;delete this.ctNode;delete this.indentNode;delete this.ecNode;delete this.iconNode;delete this.checkbox;delete this.anchor;delete this.textNode;Ext.removeNode(this.ctNode)}};Ext.tree.RootTreeNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{render:function(){if(!this.rendered){var A=this.node.ownerTree.innerCt.dom;this.node.expanded=true;A.innerHTML="<div class=\"x-tree-root-node\"></div>";this.wrap=this.ctNode=A.firstChild}},collapse:Ext.emptyFn,expand:Ext.emptyFn});
+Ext.tree.TreeLoader=function(A){this.baseParams={};Ext.apply(this,A);this.addEvents("beforeload","load","loadexception");Ext.tree.TreeLoader.superclass.constructor.call(this)};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,load:function(A,B){if(this.clearOnLoad){while(A.firstChild){A.removeChild(A.firstChild)}}if(this.doPreload(A)){if(typeof B=="function"){B()}}else{if(this.dataUrl||this.url){this.requestData(A,B)}}},doPreload:function(D){if(D.attributes.children){if(D.childNodes.length<1){var C=D.attributes.children;D.beginUpdate();for(var B=0,A=C.length;B<A;B++){var E=D.appendChild(this.createNode(C[B]));if(this.preloadChildren){this.doPreload(E)}}D.endUpdate()}return true}else{return false}},getParams:function(D){var A=[],C=this.baseParams;for(var B in C){if(typeof C[B]!="function"){A.push(encodeURIComponent(B),"=",encodeURIComponent(C[B]),"&")}}A.push("node=",encodeURIComponent(D.id));return A.join("")},requestData:function(A,B){if(this.fireEvent("beforeload",this,A,B)!==false){this.transId=Ext.Ajax.request({method:this.requestMethod,url:this.dataUrl||this.url,success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:B,node:A},params:this.getParams(A)})}else{if(typeof B=="function"){B()}}},isLoading:function(){return !!this.transId},abort:function(){if(this.isLoading()){Ext.Ajax.abort(this.transId)}},createNode:function(attr){if(this.baseAttrs){Ext.applyIf(attr,this.baseAttrs)}if(this.applyLoader!==false){attr.loader=this}if(typeof attr.uiProvider=="string"){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider)}if(attr.nodeType){return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr)}else{return attr.leaf?new Ext.tree.TreeNode(attr):new Ext.tree.AsyncTreeNode(attr)}},processResponse:function(response,node,callback){var json=response.responseText;try{var o=eval("("+json+")");node.beginUpdate();for(var i=0,len=o.length;i<len;i++){var n=this.createNode(o[i]);if(n){node.appendChild(n)}}node.endUpdate();if(typeof callback=="function"){callback(this,node)}}catch(e){this.handleFailure(response)}},handleResponse:function(B){this.transId=false;var A=B.argument;this.processResponse(B,A.node,A.callback);this.fireEvent("load",this,A.node,B)},handleFailure:function(B){this.transId=false;var A=B.argument;this.fireEvent("loadexception",this,A.node,B);if(typeof A.callback=="function"){A.callback(this,A.node)}}});
+Ext.tree.TreeFilter=function(A,B){this.tree=A;this.filtered={};Ext.apply(this,B)};Ext.tree.TreeFilter.prototype={clearBlank:false,reverse:false,autoClear:false,remove:false,filter:function(D,A,B){A=A||"text";var C;if(typeof D=="string"){var E=D.length;if(E==0&&this.clearBlank){this.clear();return }D=D.toLowerCase();C=function(F){return F.attributes[A].substr(0,E).toLowerCase()==D}}else{if(D.exec){C=function(F){return D.test(F.attributes[A])}}else{throw"Illegal filter type, must be string or regex"}}this.filterBy(C,null,B)},filterBy:function(D,C,B){B=B||this.tree.root;if(this.autoClear){this.clear()}var A=this.filtered,H=this.reverse;var E=function(J){if(J==B){return true}if(A[J.id]){return false}var I=D.call(C||J,J);if(!I||H){A[J.id]=J;J.ui.hide();return false}return true};B.cascade(E);if(this.remove){for(var G in A){if(typeof G!="function"){var F=A[G];if(F&&F.parentNode){F.parentNode.removeChild(F)}}}}},clear:function(){var B=this.tree;var A=this.filtered;for(var D in A){if(typeof D!="function"){var C=A[D];if(C){C.ui.show()}}}this.filtered={}}};
+Ext.tree.TreeSorter=function(B,C){Ext.apply(this,C);B.on("beforechildrenrendered",this.doSort,this);B.on("append",this.updateSort,this);B.on("insert",this.updateSort,this);B.on("textchange",this.updateSortParent,this);var E=this.dir&&this.dir.toLowerCase()=="desc";var F=this.property||"text";var G=this.sortType;var A=this.folderSort;var D=this.caseSensitive===true;var H=this.leafAttr||"leaf";this.sortFn=function(J,I){if(A){if(J.attributes[H]&&!I.attributes[H]){return 1}if(!J.attributes[H]&&I.attributes[H]){return -1}}var L=G?G(J):(D?J.attributes[F]:J.attributes[F].toUpperCase());var K=G?G(I):(D?I.attributes[F]:I.attributes[F].toUpperCase());if(L<K){return E?+1:-1}else{if(L>K){return E?-1:+1}else{return 0}}}};Ext.tree.TreeSorter.prototype={doSort:function(A){A.sort(this.sortFn)},compareNodes:function(B,A){return(B.text.toUpperCase()>A.text.toUpperCase()?1:-1)},updateSort:function(A,B){if(B.childrenRendered){this.doSort.defer(1,this,[B])}},updateSortParent:function(A){var B=A.parentNode;if(B&&B.childrenRendered){this.doSort.defer(1,this,[B])}}};
+if(Ext.dd.DropZone){Ext.tree.TreeDropZone=function(A,B){this.allowParentInsert=false;this.allowContainerDrop=false;this.appendOnly=false;Ext.tree.TreeDropZone.superclass.constructor.call(this,A.innerCt,B);this.tree=A;this.dragOverData={};this.lastInsertClass="x-tree-no-status"};Ext.extend(Ext.tree.TreeDropZone,Ext.dd.DropZone,{ddGroup:"TreeDD",expandDelay:1000,expandNode:function(A){if(A.hasChildNodes()&&!A.isExpanded()){A.expand(false,null,this.triggerCacheRefresh.createDelegate(this))}},queueExpand:function(A){this.expandProcId=this.expandNode.defer(this.expandDelay,this,[A])},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false}},isValidDropPoint:function(A,I,G,D,C){if(!A||!C){return false}var E=A.node;var F=C.node;if(!(E&&E.isTarget&&I)){return false}if(I=="append"&&E.allowChildren===false){return false}if((I=="above"||I=="below")&&(E.parentNode&&E.parentNode.allowChildren===false)){return false}if(F&&(E==F||F.contains(E))){return false}var B=this.dragOverData;B.tree=this.tree;B.target=E;B.data=C;B.point=I;B.source=G;B.rawEvent=D;B.dropNode=F;B.cancel=false;var H=this.tree.fireEvent("nodedragover",B);return B.cancel===false&&H!==false},getDropPoint:function(E,D,I){var J=D.node;if(J.isRoot){return J.allowChildren!==false?"append":false}var B=D.ddel;var K=Ext.lib.Dom.getY(B),G=K+B.offsetHeight;var F=Ext.lib.Event.getPageY(E);var H=J.allowChildren===false||J.isLeaf();if(this.appendOnly||J.parentNode.allowChildren===false){return H?false:"append"}var C=false;if(!this.allowParentInsert){C=J.hasChildNodes()&&J.isExpanded()}var A=(G-K)/(H?2:3);if(F>=K&&F<(K+A)){return"above"}else{if(!C&&(H||F>=G-A&&F<=G)){return"below"}else{return"append"}}},onNodeEnter:function(D,A,C,B){this.cancelExpand()},onNodeOver:function(B,G,F,E){var I=this.getDropPoint(F,B,G);var C=B.node;if(!this.expandProcId&&I=="append"&&C.hasChildNodes()&&!B.node.isExpanded()){this.queueExpand(C)}else{if(I!="append"){this.cancelExpand()}}var D=this.dropNotAllowed;if(this.isValidDropPoint(B,I,G,F,E)){if(I){var A=B.ddel;var H;if(I=="above"){D=B.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";H="x-tree-drag-insert-above"}else{if(I=="below"){D=B.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";H="x-tree-drag-insert-below"}else{D="x-tree-drop-ok-append";H="x-tree-drag-append"}}if(this.lastInsertClass!=H){Ext.fly(A).replaceClass(this.lastInsertClass,H);this.lastInsertClass=H}}}return D},onNodeOut:function(D,A,C,B){this.cancelExpand();this.removeDropIndicators(D)},onNodeDrop:function(C,I,E,D){var H=this.getDropPoint(E,C,I);var F=C.node;F.ui.startDrop();if(!this.isValidDropPoint(C,H,I,E,D)){F.ui.endDrop();return false}var G=D.node||(I.getTreeNode?I.getTreeNode(D,F,H,E):null);var B={tree:this.tree,target:F,data:D,point:H,source:I,rawEvent:E,dropNode:G,cancel:!G,dropStatus:false};var A=this.tree.fireEvent("beforenodedrop",B);if(A===false||B.cancel===true||!B.dropNode){F.ui.endDrop();return B.dropStatus}F=B.target;if(H=="append"&&!F.isExpanded()){F.expand(false,null,function(){this.completeDrop(B)}.createDelegate(this))}else{this.completeDrop(B)}return true},completeDrop:function(G){var D=G.dropNode,E=G.point,C=G.target;if(!Ext.isArray(D)){D=[D]}var F;for(var B=0,A=D.length;B<A;B++){F=D[B];if(E=="above"){C.parentNode.insertBefore(F,C)}else{if(E=="below"){C.parentNode.insertBefore(F,C.nextSibling)}else{C.appendChild(F)}}}F.ui.focus();if(Ext.enableFx&&this.tree.hlDrop){F.ui.highlight()}C.ui.endDrop();this.tree.fireEvent("nodedrop",G)},afterNodeMoved:function(A,C,E,D,B){if(Ext.enableFx&&this.tree.hlDrop){B.ui.focus();B.ui.highlight()}this.tree.fireEvent("nodedrop",this.tree,D,C,A,E)},getTree:function(){return this.tree},removeDropIndicators:function(B){if(B&&B.ddel){var A=B.ddel;Ext.fly(A).removeClass(["x-tree-drag-insert-above","x-tree-drag-insert-below","x-tree-drag-append"]);this.lastInsertClass="_noclass"}},beforeDragDrop:function(B,A,C){this.cancelExpand();return true},afterRepair:function(A){if(A&&Ext.enableFx){A.node.ui.highlight()}this.hideProxy()}})};
+if(Ext.dd.DragZone){Ext.tree.TreeDragZone=function(A,B){Ext.tree.TreeDragZone.superclass.constructor.call(this,A.getTreeEl(),B);this.tree=A};Ext.extend(Ext.tree.TreeDragZone,Ext.dd.DragZone,{ddGroup:"TreeDD",onBeforeDrag:function(A,B){var C=A.node;return C&&C.draggable&&!C.disabled},onInitDrag:function(B){var A=this.dragData;this.tree.getSelectionModel().select(A.node);this.tree.eventModel.disable();this.proxy.update("");A.node.ui.appendDDGhost(this.proxy.ghost.dom);this.tree.fireEvent("startdrag",this.tree,A.node,B)},getRepairXY:function(B,A){return A.node.ui.getDDRepairXY()},onEndDrag:function(A,B){this.tree.eventModel.enable.defer(100,this.tree.eventModel);this.tree.fireEvent("enddrag",this.tree,A.node,B)},onValidDrop:function(A,B,C){this.tree.fireEvent("dragdrop",this.tree,this.dragData.node,A,B);this.hideProxy()},beforeInvalidDrop:function(A,C){var B=this.tree.getSelectionModel();B.clearSelections();B.select(this.dragData.node)},afterRepair:function(){if(Ext.enableFx&&this.tree.hlDrop){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")}this.dragging=false}})};
+Ext.tree.TreeEditor=function(A,C,B){C=C||{};var D=C.events?C:new Ext.form.TextField(C);Ext.tree.TreeEditor.superclass.constructor.call(this,D,B);this.tree=A;if(!A.rendered){A.on("render",this.initEditor,this)}else{this.initEditor(A)}};Ext.extend(Ext.tree.TreeEditor,Ext.Editor,{alignment:"l-l",autoSize:false,hideEl:false,cls:"x-small-editor x-tree-editor",shim:false,shadow:"frame",maxWidth:250,editDelay:350,initEditor:function(A){A.on("beforeclick",this.beforeNodeClick,this);A.on("dblclick",this.onNodeDblClick,this);this.on("complete",this.updateNode,this);this.on("beforestartedit",this.fitToTree,this);this.on("startedit",this.bindScroll,this,{delay:10});this.on("specialkey",this.onSpecialKey,this)},fitToTree:function(B,C){var E=this.tree.getTreeEl().dom,D=C.dom;if(E.scrollLeft>D.offsetLeft){E.scrollLeft=D.offsetLeft}var A=Math.min(this.maxWidth,(E.clientWidth>20?E.clientWidth:E.offsetWidth)-Math.max(0,D.offsetLeft-E.scrollLeft)-5);this.setSize(A,"")},triggerEdit:function(A,B){this.completeEdit();if(A.attributes.editable!==false){this.editNode=A;if(this.tree.autoScroll){A.ui.getEl().scrollIntoView(this.tree.body)}this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[A.ui.textNode,A.text]);return false}},bindScroll:function(){this.tree.getTreeEl().on("scroll",this.cancelEdit,this)},beforeNodeClick:function(A,B){clearTimeout(this.autoEditTimer);if(this.tree.getSelectionModel().isSelected(A)){B.stopEvent();return this.triggerEdit(A)}},onNodeDblClick:function(A,B){clearTimeout(this.autoEditTimer)},updateNode:function(A,B){this.tree.getTreeEl().un("scroll",this.cancelEdit,this);this.editNode.setText(B)},onHide:function(){Ext.tree.TreeEditor.superclass.onHide.call(this);if(this.editNode){this.editNode.ui.focus.defer(50,this.editNode.ui)}},onSpecialKey:function(C,B){var A=B.getKey();if(A==B.ESC){B.stopEvent();this.cancelEdit()}else{if(A==B.ENTER&&!B.hasModifier()){B.stopEvent();this.completeEdit()}}}});
+Ext.menu.Menu=function(A){if(Ext.isArray(A)){A={items:A}}Ext.apply(this,A);this.id=this.id||Ext.id();this.addEvents("beforeshow","beforehide","show","hide","click","mouseover","mouseout","itemclick");Ext.menu.MenuMgr.register(this);Ext.menu.Menu.superclass.constructor.call(this);var B=this.items;this.items=new Ext.util.MixedCollection();if(B){this.add.apply(this,B)}};Ext.extend(Ext.menu.Menu,Ext.util.Observable,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,ignoreParentClicks:false,hidden:true,createEl:function(){return new Ext.Layer({cls:"x-menu",shadow:this.shadow,constrain:false,parentEl:this.parentEl||document.body,zindex:15000})},render:function(){if(this.el){return }var B=this.el=this.createEl();if(!this.keyNav){this.keyNav=new Ext.menu.MenuNav(this)}if(this.plain){B.addClass("x-menu-plain")}if(this.cls){B.addClass(this.cls)}this.focusEl=B.createChild({tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"});var A=B.createChild({tag:"ul",cls:"x-menu-list"});A.on("click",this.onClick,this);A.on("mouseover",this.onMouseOver,this);A.on("mouseout",this.onMouseOut,this);this.items.each(function(D){var C=document.createElement("li");C.className="x-menu-list-item";A.dom.appendChild(C);D.render(C,this)},this);this.ul=A;this.autoWidth()},autoWidth:function(){var D=this.el,C=this.ul;if(!D){return }var A=this.width;if(A){D.setWidth(A)}else{if(Ext.isIE){D.setWidth(this.minWidth);var B=D.dom.offsetWidth;D.setWidth(C.getWidth()+D.getFrameWidth("lr"))}}},delayAutoWidth:function(){if(this.el){if(!this.awTask){this.awTask=new Ext.util.DelayedTask(this.autoWidth,this)}this.awTask.delay(20)}},findTargetItem:function(B){var A=B.getTarget(".x-menu-list-item",this.ul,true);if(A&&A.menuItemId){return this.items.get(A.menuItemId)}},onClick:function(B){var A;if(A=this.findTargetItem(B)){if(A.menu&&this.ignoreParentClicks){A.expandMenu()}else{A.onClick(B);this.fireEvent("click",this,A,B)}}},setActiveItem:function(A,B){if(A!=this.activeItem){if(this.activeItem){this.activeItem.deactivate()}this.activeItem=A;A.activate(B)}else{if(B){A.expandMenu()}}},tryActivate:function(F,E){var B=this.items;for(var C=F,A=B.length;C>=0&&C<A;C+=E){var D=B.get(C);if(!D.disabled&&D.canActivate){this.setActiveItem(D,false);return D}}return false},onMouseOver:function(B){var A;if(A=this.findTargetItem(B)){if(A.canActivate&&!A.disabled){this.setActiveItem(A,true)}}this.over=true;this.fireEvent("mouseover",this,B,A)},onMouseOut:function(B){var A;if(A=this.findTargetItem(B)){if(A==this.activeItem&&A.shouldDeactivate(B)){this.activeItem.deactivate();delete this.activeItem}}this.over=false;this.fireEvent("mouseout",this,B,A)},isVisible:function(){return this.el&&!this.hidden},show:function(B,C,A){this.parentMenu=A;if(!this.el){this.render()}this.fireEvent("beforeshow",this);this.showAt(this.el.getAlignToXY(B,C||this.defaultAlign),A,false)},showAt:function(C,B,A){this.parentMenu=B;if(!this.el){this.render()}if(A!==false){this.fireEvent("beforeshow",this);C=this.el.adjustForConstraints(C)}this.el.setXY(C);this.el.show();this.hidden=false;this.focus();this.fireEvent("show",this)},focus:function(){if(!this.hidden){this.doFocus.defer(50,this)}},doFocus:function(){if(!this.hidden){this.focusEl.focus()}},hide:function(A){if(this.el&&this.isVisible()){this.fireEvent("beforehide",this);if(this.activeItem){this.activeItem.deactivate();this.activeItem=null}this.el.hide();this.hidden=true;this.fireEvent("hide",this)}if(A===true&&this.parentMenu){this.parentMenu.hide(true)}},add:function(){var B=arguments,A=B.length,E;for(var C=0;C<A;C++){var D=B[C];if(D.render){E=this.addItem(D)}else{if(typeof D=="string"){if(D=="separator"||D=="-"){E=this.addSeparator()}else{E=this.addText(D)}}else{if(D.tagName||D.el){E=this.addElement(D)}else{if(typeof D=="object"){Ext.applyIf(D,this.defaults);E=this.addMenuItem(D)}}}}}return E},getEl:function(){if(!this.el){this.render()}return this.el},addSeparator:function(){return this.addItem(new Ext.menu.Separator())},addElement:function(A){return this.addItem(new Ext.menu.BaseItem(A))},addItem:function(B){this.items.add(B);if(this.ul){var A=document.createElement("li");A.className="x-menu-list-item";this.ul.dom.appendChild(A);B.render(A,this);this.delayAutoWidth()}return B},addMenuItem:function(A){if(!(A instanceof Ext.menu.Item)){if(typeof A.checked=="boolean"){A=new Ext.menu.CheckItem(A)}else{A=new Ext.menu.Item(A)}}return this.addItem(A)},addText:function(A){return this.addItem(new Ext.menu.TextItem(A))},insert:function(B,C){this.items.insert(B,C);if(this.ul){var A=document.createElement("li");A.className="x-menu-list-item";this.ul.dom.insertBefore(A,this.ul.dom.childNodes[B]);C.render(A,this);this.delayAutoWidth()}return C},remove:function(A){this.items.removeKey(A.id);A.destroy()},removeAll:function(){if(this.items){var A;while(A=this.items.first()){this.remove(A)}}},destroy:function(){this.beforeDestroy();Ext.menu.MenuMgr.unregister(this);if(this.keyNav){this.keyNav.disable()}this.removeAll();if(this.ul){this.ul.removeAllListeners()}if(this.el){this.el.destroy()}},beforeDestroy:Ext.emptyFn});Ext.menu.MenuNav=function(A){Ext.menu.MenuNav.superclass.constructor.call(this,A.el);this.scope=this.menu=A};Ext.extend(Ext.menu.MenuNav,Ext.KeyNav,{doRelay:function(C,B){var A=C.getKey();if(!this.menu.activeItem&&C.isNavKeyPress()&&A!=C.SPACE&&A!=C.RETURN){this.menu.tryActivate(0,1);return false}return B.call(this.scope||this,C,this.menu)},up:function(B,A){if(!A.tryActivate(A.items.indexOf(A.activeItem)-1,-1)){A.tryActivate(A.items.length-1,-1)}},down:function(B,A){if(!A.tryActivate(A.items.indexOf(A.activeItem)+1,1)){A.tryActivate(0,1)}},right:function(B,A){if(A.activeItem){A.activeItem.expandMenu(true)}},left:function(B,A){A.hide();if(A.parentMenu&&A.parentMenu.activeItem){A.parentMenu.activeItem.activate()}},enter:function(B,A){if(A.activeItem){B.stopPropagation();A.activeItem.onClick(B);A.fireEvent("click",this,A.activeItem);return true}}});
+Ext.menu.MenuMgr=function(){var F,D,C={},A=false,K=new Date();function M(){F={};D=new Ext.util.MixedCollection();Ext.getDoc().addKeyListener(27,function(){if(D.length>0){H()}})}function H(){if(D&&D.length>0){var N=D.clone();N.each(function(O){O.hide()})}}function E(N){D.remove(N);if(D.length<1){Ext.getDoc().un("mousedown",L);A=false}}function J(N){var O=D.last();K=new Date();D.add(N);if(!A){Ext.getDoc().on("mousedown",L);A=true}if(N.parentMenu){N.getEl().setZIndex(parseInt(N.parentMenu.getEl().getStyle("z-index"),10)+3);N.parentMenu.activeChild=N}else{if(O&&O.isVisible()){N.getEl().setZIndex(parseInt(O.getEl().getStyle("z-index"),10)+3)}}}function B(N){if(N.activeChild){N.activeChild.hide()}if(N.autoHideTimer){clearTimeout(N.autoHideTimer);delete N.autoHideTimer}}function G(N){var O=N.parentMenu;if(!O&&!N.allowOtherMenus){H()}else{if(O&&O.activeChild){O.activeChild.hide()}}}function L(N){if(K.getElapsed()>50&&D.length>0&&!N.getTarget(".x-menu")){H()}}function I(O,R){if(R){var Q=C[O.group];for(var P=0,N=Q.length;P<N;P++){if(Q[P]!=O){Q[P].setChecked(false)}}}}return{hideAll:function(){H()},register:function(O){if(!F){M()}F[O.id]=O;O.on("beforehide",B);O.on("hide",E);O.on("beforeshow",G);O.on("show",J);var N=O.group;if(N&&O.events["checkchange"]){if(!C[N]){C[N]=[]}C[N].push(O);O.on("checkchange",onCheck)}},get:function(N){if(typeof N=="string"){if(!F){return null}return F[N]}else{if(N.events){return N}else{if(typeof N.length=="number"){return new Ext.menu.Menu({items:N})}else{return new Ext.menu.Menu(N)}}}},unregister:function(O){delete F[O.id];O.un("beforehide",B);O.un("hide",E);O.un("beforeshow",G);O.un("show",J);var N=O.group;if(N&&O.events["checkchange"]){C[N].remove(O);O.un("checkchange",onCheck)}},registerCheckable:function(N){var O=N.group;if(O){if(!C[O]){C[O]=[]}C[O].push(N);N.on("beforecheckchange",I)}},unregisterCheckable:function(N){var O=N.group;if(O){C[O].remove(N);N.un("beforecheckchange",I)}},getCheckedItem:function(P){var Q=C[P];if(Q){for(var O=0,N=Q.length;O<N;O++){if(Q[O].checked){return Q[O]}}}return null},setCheckedItem:function(P,R){var Q=C[P];if(Q){for(var O=0,N=Q.length;O<N;O++){if(Q[O].id==R){Q[O].setChecked(true)}}}return null}}}();
+Ext.menu.BaseItem=function(A){Ext.menu.BaseItem.superclass.constructor.call(this,A);this.addEvents("click","activate","deactivate");if(this.handler){this.on("click",this.handler,this.scope)}};Ext.extend(Ext.menu.BaseItem,Ext.Component,{canActivate:false,activeClass:"x-menu-item-active",hideOnClick:true,hideDelay:100,ctype:"Ext.menu.BaseItem",actionMode:"container",render:function(A,B){this.parentMenu=B;Ext.menu.BaseItem.superclass.render.call(this,A);this.container.menuItemId=this.id},onRender:function(B,A){this.el=Ext.get(this.el);B.dom.appendChild(this.el.dom)},setHandler:function(B,A){if(this.handler){this.un("click",this.handler,this.scope)}this.on("click",this.handler=B,this.scope=A)},onClick:function(A){if(!this.disabled&&this.fireEvent("click",this,A)!==false&&this.parentMenu.fireEvent("itemclick",this,A)!==false){this.handleClick(A)}else{A.stopEvent()}},activate:function(){if(this.disabled){return false}var A=this.container;A.addClass(this.activeClass);this.region=A.getRegion().adjust(2,2,-2,-2);this.fireEvent("activate",this);return true},deactivate:function(){this.container.removeClass(this.activeClass);this.fireEvent("deactivate",this)},shouldDeactivate:function(A){return !this.region||!this.region.contains(A.getPoint())},handleClick:function(A){if(this.hideOnClick){this.parentMenu.hide.defer(this.hideDelay,this.parentMenu,[true])}},expandMenu:function(A){},hideMenu:function(){}});
+Ext.menu.TextItem=function(A){if(typeof A=="string"){A={text:A}}Ext.menu.TextItem.superclass.constructor.call(this,A)};Ext.extend(Ext.menu.TextItem,Ext.menu.BaseItem,{hideOnClick:false,itemCls:"x-menu-text",onRender:function(){var A=document.createElement("span");A.className=this.itemCls;A.innerHTML=this.text;this.el=A;Ext.menu.TextItem.superclass.onRender.apply(this,arguments)}});
+Ext.menu.Separator=function(A){Ext.menu.Separator.superclass.constructor.call(this,A)};Ext.extend(Ext.menu.Separator,Ext.menu.BaseItem,{itemCls:"x-menu-sep",hideOnClick:false,onRender:function(A){var B=document.createElement("span");B.className=this.itemCls;B.innerHTML="&#160;";this.el=B;A.addClass("x-menu-sep-li");Ext.menu.Separator.superclass.onRender.apply(this,arguments)}});
+Ext.menu.Item=function(A){Ext.menu.Item.superclass.constructor.call(this,A);if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu)}};Ext.extend(Ext.menu.Item,Ext.menu.BaseItem,{itemCls:"x-menu-item",canActivate:true,showDelay:200,hideDelay:200,ctype:"Ext.menu.Item",onRender:function(B,A){var C=document.createElement("a");C.hideFocus=true;C.unselectable="on";C.href=this.href||"#";if(this.hrefTarget){C.target=this.hrefTarget}C.className=this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:"");C.innerHTML=String.format("<img src=\"{0}\" class=\"x-menu-item-icon {2}\" />{1}",this.icon||Ext.BLANK_IMAGE_URL,this.itemText||this.text,this.iconCls||"");this.el=C;Ext.menu.Item.superclass.onRender.call(this,B,A)},setText:function(A){this.text=A;if(this.rendered){this.el.update(String.format("<img src=\"{0}\" class=\"x-menu-item-icon {2}\">{1}",this.icon||Ext.BLANK_IMAGE_URL,this.text,this.iconCls||""));this.parentMenu.autoWidth()}},setIconClass:function(A){var B=this.iconCls;this.iconCls=A;if(this.rendered){this.el.child("img.x-menu-item-icon").replaceClass(B,this.iconCls)}},handleClick:function(A){if(!this.href){A.stopEvent()}Ext.menu.Item.superclass.handleClick.apply(this,arguments)},activate:function(A){if(Ext.menu.Item.superclass.activate.apply(this,arguments)){this.focus();if(A){this.expandMenu()}}return true},shouldDeactivate:function(A){if(Ext.menu.Item.superclass.shouldDeactivate.call(this,A)){if(this.menu&&this.menu.isVisible()){return !this.menu.getEl().getRegion().contains(A.getPoint())}return true}return false},deactivate:function(){Ext.menu.Item.superclass.deactivate.apply(this,arguments);this.hideMenu()},expandMenu:function(A){if(!this.disabled&&this.menu){clearTimeout(this.hideTimer);delete this.hideTimer;if(!this.menu.isVisible()&&!this.showTimer){this.showTimer=this.deferExpand.defer(this.showDelay,this,[A])}else{if(this.menu.isVisible()&&A){this.menu.tryActivate(0,1)}}}},deferExpand:function(A){delete this.showTimer;this.menu.show(this.container,this.parentMenu.subMenuAlign||"tl-tr?",this.parentMenu);if(A){this.menu.tryActivate(0,1)}},hideMenu:function(){clearTimeout(this.showTimer);delete this.showTimer;if(!this.hideTimer&&this.menu&&this.menu.isVisible()){this.hideTimer=this.deferHide.defer(this.hideDelay,this)}},deferHide:function(){delete this.hideTimer;if(this.menu.over){this.parentMenu.setActiveItem(this,false)}else{this.menu.hide()}}});
+Ext.menu.CheckItem=function(A){Ext.menu.CheckItem.superclass.constructor.call(this,A);this.addEvents("beforecheckchange","checkchange");if(this.checkHandler){this.on("checkchange",this.checkHandler,this.scope)}Ext.menu.MenuMgr.registerCheckable(this)};Ext.extend(Ext.menu.CheckItem,Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",onRender:function(A){Ext.menu.CheckItem.superclass.onRender.apply(this,arguments);if(this.group){this.el.addClass(this.groupClass)}if(this.checked){this.checked=false;this.setChecked(true,true)}},destroy:function(){Ext.menu.MenuMgr.unregisterCheckable(this);Ext.menu.CheckItem.superclass.destroy.apply(this,arguments)},setChecked:function(B,A){if(this.checked!=B&&this.fireEvent("beforecheckchange",this,B)!==false){if(this.container){this.container[B?"addClass":"removeClass"]("x-menu-item-checked")}this.checked=B;if(A!==true){this.fireEvent("checkchange",this,B)}}},handleClick:function(A){if(!this.disabled&&!(this.checked&&this.group)){this.setChecked(!this.checked)}Ext.menu.CheckItem.superclass.handleClick.apply(this,arguments)}});
+Ext.menu.Adapter=function(B,A){Ext.menu.Adapter.superclass.constructor.call(this,A);this.component=B};Ext.extend(Ext.menu.Adapter,Ext.menu.BaseItem,{canActivate:true,onRender:function(B,A){this.component.render(B);this.el=this.component.getEl()},activate:function(){if(this.disabled){return false}this.component.focus();this.fireEvent("activate",this);return true},deactivate:function(){this.fireEvent("deactivate",this)},disable:function(){this.component.disable();Ext.menu.Adapter.superclass.disable.call(this)},enable:function(){this.component.enable();Ext.menu.Adapter.superclass.enable.call(this)}});
+Ext.menu.DateItem=function(A){Ext.menu.DateItem.superclass.constructor.call(this,new Ext.DatePicker(A),A);this.picker=this.component;this.addEvents("select");this.picker.on("render",function(B){B.getEl().swallowEvent("click");B.container.addClass("x-menu-date-item")});this.picker.on("select",this.onSelect,this)};Ext.extend(Ext.menu.DateItem,Ext.menu.Adapter,{onSelect:function(B,A){this.fireEvent("select",this,A,B);Ext.menu.DateItem.superclass.handleClick.call(this)}});
+Ext.menu.ColorItem=function(A){Ext.menu.ColorItem.superclass.constructor.call(this,new Ext.ColorPalette(A),A);this.palette=this.component;this.relayEvents(this.palette,["select"]);if(this.selectHandler){this.on("select",this.selectHandler,this.scope)}};Ext.extend(Ext.menu.ColorItem,Ext.menu.Adapter);
+Ext.menu.DateMenu=function(A){Ext.menu.DateMenu.superclass.constructor.call(this,A);this.plain=true;var B=new Ext.menu.DateItem(A);this.add(B);this.picker=B.picker;this.relayEvents(B,["select"]);this.on("beforeshow",function(){if(this.picker){this.picker.hideMonthPicker(true)}},this)};Ext.extend(Ext.menu.DateMenu,Ext.menu.Menu,{cls:"x-date-menu",beforeDestroy:function(){this.picker.destroy()}});
+Ext.menu.ColorMenu=function(A){Ext.menu.ColorMenu.superclass.constructor.call(this,A);this.plain=true;var B=new Ext.menu.ColorItem(A);this.add(B);this.palette=B.palette;this.relayEvents(B,["select"])};Ext.extend(Ext.menu.ColorMenu,Ext.menu.Menu);
+Ext.form.Field=Ext.extend(Ext.BoxComponent,{invalidClass:"x-form-invalid",invalidText:"The value in this field is invalid",focusClass:"x-form-focus",validationEvent:"keyup",validateOnBlur:true,validationDelay:250,defaultAutoCreate:{tag:"input",type:"text",size:"20",autocomplete:"off"},fieldClass:"x-form-field",msgTarget:"qtip",msgFx:"normal",readOnly:false,disabled:false,isFormField:true,hasFocus:false,initComponent:function(){Ext.form.Field.superclass.initComponent.call(this);this.addEvents("focus","blur","specialkey","change","invalid","valid")},getName:function(){return this.rendered&&this.el.dom.name?this.el.dom.name:(this.hiddenName||"")},onRender:function(C,A){Ext.form.Field.superclass.onRender.call(this,C,A);if(!this.el){var B=this.getAutoCreate();if(!B.name){B.name=this.name||this.id}if(this.inputType){B.type=this.inputType}this.el=C.createChild(B,A)}var D=this.el.dom.type;if(D){if(D=="password"){D="text"}this.el.addClass("x-form-"+D)}if(this.readOnly){this.el.dom.readOnly=true}if(this.tabIndex!==undefined){this.el.dom.setAttribute("tabIndex",this.tabIndex)}this.el.addClass([this.fieldClass,this.cls])},initValue:function(){if(this.value!==undefined){this.setValue(this.value)}else{if(this.el.dom.value.length>0&&this.el.dom.value!=this.emptyText){this.setValue(this.el.dom.value)}}this.originalValue=this.getValue()},isDirty:function(){if(this.disabled){return false}return String(this.getValue())!==String(this.originalValue)},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents();this.initValue()},fireKey:function(A){if(A.isSpecialKey()){this.fireEvent("specialkey",this,A)}},reset:function(){this.setValue(this.originalValue);this.clearInvalid()},initEvents:function(){this.el.on(Ext.isIE||Ext.isSafari3?"keydown":"keypress",this.fireKey,this);this.el.on("focus",this.onFocus,this);var A=this.inEditor&&Ext.isWindows&&Ext.isGecko?{buffer:10}:null;this.el.on("blur",this.onBlur,this,A);this.originalValue=this.getValue()},onFocus:function(){if(!Ext.isOpera&&this.focusClass){this.el.addClass(this.focusClass)}if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this)}},beforeBlur:Ext.emptyFn,onBlur:function(){this.beforeBlur();if(!Ext.isOpera&&this.focusClass){this.el.removeClass(this.focusClass)}this.hasFocus=false;if(this.validationEvent!==false&&this.validateOnBlur&&this.validationEvent!="blur"){this.validate()}var A=this.getValue();if(String(A)!==String(this.startValue)){this.fireEvent("change",this,A,this.startValue)}this.fireEvent("blur",this)},isValid:function(A){if(this.disabled){return true}var C=this.preventMark;this.preventMark=A===true;var B=this.validateValue(this.processValue(this.getRawValue()));this.preventMark=C;return B},validate:function(){if(this.disabled||this.validateValue(this.processValue(this.getRawValue()))){this.clearInvalid();return true}return false},processValue:function(A){return A},validateValue:function(A){return true},markInvalid:function(C){if(!this.rendered||this.preventMark){return }this.el.addClass(this.invalidClass);C=C||this.invalidText;switch(this.msgTarget){case"qtip":this.el.dom.qtip=C;this.el.dom.qclass="x-form-invalid-tip";if(Ext.QuickTips){Ext.QuickTips.enable()}break;case"title":this.el.dom.title=C;break;case"under":if(!this.errorEl){var B=this.getErrorCt();if(!B){this.el.dom.title=C;break}this.errorEl=B.createChild({cls:"x-form-invalid-msg"});this.errorEl.setWidth(B.getWidth(true)-20)}this.errorEl.update(C);Ext.form.Field.msgFx[this.msgFx].show(this.errorEl,this);break;case"side":if(!this.errorIcon){var B=this.getErrorCt();if(!B){this.el.dom.title=C;break}this.errorIcon=B.createChild({cls:"x-form-invalid-icon"})}this.alignErrorIcon();this.errorIcon.dom.qtip=C;this.errorIcon.dom.qclass="x-form-invalid-tip";this.errorIcon.show();this.on("resize",this.alignErrorIcon,this);break;default:var A=Ext.getDom(this.msgTarget);A.innerHTML=C;A.style.display=this.msgDisplay;break}this.fireEvent("invalid",this,C)},getErrorCt:function(){return this.el.findParent(".x-form-element",5,true)||this.el.findParent(".x-form-field-wrap",5,true)},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,"tl-tr",[2,0])},clearInvalid:function(){if(!this.rendered||this.preventMark){return }this.el.removeClass(this.invalidClass);switch(this.msgTarget){case"qtip":this.el.dom.qtip="";break;case"title":this.el.dom.title="";break;case"under":if(this.errorEl){Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl,this)}break;case"side":if(this.errorIcon){this.errorIcon.dom.qtip="";this.errorIcon.hide();this.un("resize",this.alignErrorIcon,this)}break;default:var A=Ext.getDom(this.msgTarget);A.innerHTML="";A.style.display="none";break}this.fireEvent("valid",this)},getRawValue:function(){var A=this.rendered?this.el.getValue():Ext.value(this.value,"");if(A===this.emptyText){A=""}return A},getValue:function(){if(!this.rendered){return this.value}var A=this.el.getValue();if(A===this.emptyText||A===undefined){A=""}return A},setRawValue:function(A){return this.el.dom.value=(A===null||A===undefined?"":A)},setValue:function(A){this.value=A;if(this.rendered){this.el.dom.value=(A===null||A===undefined?"":A);this.validate()}},adjustSize:function(A,C){var B=Ext.form.Field.superclass.adjustSize.call(this,A,C);B.width=this.adjustWidth(this.el.dom.tagName,B.width);return B},adjustWidth:function(A,B){A=A.toLowerCase();if(typeof B=="number"&&!Ext.isSafari){if(Ext.isIE&&(A=="input"||A=="textarea")){if(A=="input"&&!Ext.isStrict){return this.inEditor?B:B-3}if(A=="input"&&Ext.isStrict){return B-(Ext.isIE6?4:1)}if(A=="textarea"&&Ext.isStrict){return B-2}}else{if(Ext.isOpera&&Ext.isStrict){if(A=="input"){return B+2}if(A=="textarea"){return B-2}}}}return B}});Ext.form.MessageTargets={"qtip":{mark:function(A){this.el.dom.qtip=msg;this.el.dom.qclass="x-form-invalid-tip";if(Ext.QuickTips){Ext.QuickTips.enable()}},clear:function(A){this.el.dom.qtip=""}},"title":{mark:function(A){this.el.dom.title=msg},clear:function(A){this.el.dom.title=""}},"under":{mark:function(B){if(!this.errorEl){var A=this.getErrorCt();if(!A){this.el.dom.title=msg;return }this.errorEl=A.createChild({cls:"x-form-invalid-msg"});this.errorEl.setWidth(A.getWidth(true)-20)}this.errorEl.update(msg);Ext.form.Field.msgFx[this.msgFx].show(this.errorEl,this)},clear:function(A){if(this.errorEl){Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl,this)}else{this.el.dom.title=""}}},"side":{mark:function(B){if(!this.errorIcon){var A=this.getErrorCt();if(!A){this.el.dom.title=msg;return }this.errorIcon=A.createChild({cls:"x-form-invalid-icon"})}this.alignErrorIcon();this.errorIcon.dom.qtip=msg;this.errorIcon.dom.qclass="x-form-invalid-tip";this.errorIcon.show();this.on("resize",this.alignErrorIcon,this)},clear:function(A){if(this.errorIcon){this.errorIcon.dom.qtip="";this.errorIcon.hide();this.un("resize",this.alignErrorIcon,this)}else{this.el.dom.title=""}}},"around":{mark:function(A){},clear:function(A){}}};Ext.form.Field.msgFx={normal:{show:function(A,B){A.setDisplayed("block")},hide:function(A,B){A.setDisplayed(false).update("")}},slide:{show:function(A,B){A.slideIn("t",{stopFx:true})},hide:function(A,B){A.slideOut("t",{stopFx:true,useDisplay:true})}},slideRight:{show:function(A,B){A.fixDisplay();A.alignTo(B.el,"tl-tr");A.slideIn("l",{stopFx:true})},hide:function(A,B){A.slideOut("l",{stopFx:true,useDisplay:true})}}};Ext.reg("field",Ext.form.Field);
+Ext.form.TextField=Ext.extend(Ext.form.Field,{grow:false,growMin:30,growMax:800,vtype:null,maskRe:null,disableKeyFilter:false,allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",selectOnFocus:false,blankText:"This field is required",validator:null,regex:null,regexText:"",emptyText:null,emptyClass:"x-form-empty-field",initComponent:function(){Ext.form.TextField.superclass.initComponent.call(this);this.addEvents("autosize","keydown","keyup","keypress")},initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=="keyup"){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.el.on("keyup",this.filterValidation,this)}else{if(this.validationEvent!==false){this.el.on(this.validationEvent,this.validate,this,{buffer:this.validationDelay})}}if(this.selectOnFocus||this.emptyText){this.on("focus",this.preFocus,this);this.el.on("mousedown",function(){if(!this.hasFocus){this.el.on("mouseup",function(A){A.preventDefault()},this,{single:true})}},this);if(this.emptyText){this.on("blur",this.postBlur,this);this.applyEmptyText()}}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+"Mask"]))){this.el.on("keypress",this.filterKeys,this)}if(this.grow){this.el.on("keyup",this.onKeyUpBuffered,this,{buffer:50});this.el.on("click",this.autoSize,this)}if(this.enableKeyEvents){this.el.on("keyup",this.onKeyUp,this);this.el.on("keydown",this.onKeyDown,this);this.el.on("keypress",this.onKeyPress,this)}},processValue:function(A){if(this.stripCharsRe){var B=A.replace(this.stripCharsRe,"");if(B!==A){this.setRawValue(B);return B}}return A},filterValidation:function(A){if(!A.isNavKeyPress()){this.validationTask.delay(this.validationDelay)}},onKeyUpBuffered:function(A){if(!A.isNavKeyPress()){this.autoSize()}},onKeyUp:function(A){this.fireEvent("keyup",this,A)},onKeyDown:function(A){this.fireEvent("keydown",this,A)},onKeyPress:function(A){this.fireEvent("keypress",this,A)},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText()},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass)}},preFocus:function(){if(this.emptyText){if(this.el.dom.value==this.emptyText){this.setRawValue("")}this.el.removeClass(this.emptyClass)}if(this.selectOnFocus){this.el.dom.select()}},postBlur:function(){this.applyEmptyText()},filterKeys:function(B){if(B.ctrlKey){return }var A=B.getKey();if(Ext.isGecko&&(B.isNavKeyPress()||A==B.BACKSPACE||(A==B.DELETE&&B.button==-1))){return }var D=B.getCharCode(),C=String.fromCharCode(D);if(!Ext.isGecko&&B.isSpecialKey()&&!C){return }if(!this.maskRe.test(C)){B.stopEvent()}},setValue:function(A){if(this.emptyText&&this.el&&A!==undefined&&A!==null&&A!==""){this.el.removeClass(this.emptyClass)}Ext.form.TextField.superclass.setValue.apply(this,arguments);this.applyEmptyText();this.autoSize()},validateValue:function(A){if(A.length<1||A===this.emptyText){if(this.allowBlank){this.clearInvalid();return true}else{this.markInvalid(this.blankText);return false}}if(A.length<this.minLength){this.markInvalid(String.format(this.minLengthText,this.minLength));return false}if(A.length>this.maxLength){this.markInvalid(String.format(this.maxLengthText,this.maxLength));return false}if(this.vtype){var C=Ext.form.VTypes;if(!C[this.vtype](A,this)){this.markInvalid(this.vtypeText||C[this.vtype+"Text"]);return false}}if(typeof this.validator=="function"){var B=this.validator(A);if(B!==true){this.markInvalid(B);return false}}if(this.regex&&!this.regex.test(A)){this.markInvalid(this.regexText);return false}return true},selectText:function(E,A){var C=this.getRawValue();if(C.length>0){E=E===undefined?0:E;A=A===undefined?C.length:A;var D=this.el.dom;if(D.setSelectionRange){D.setSelectionRange(E,A)}else{if(D.createTextRange){var B=D.createTextRange();B.moveStart("character",E);B.moveEnd("character",A-C.length);B.select()}}}},autoSize:function(){if(!this.grow||!this.rendered){return }if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el)}var C=this.el;var B=C.dom.value;var D=document.createElement("div");D.appendChild(document.createTextNode(B));B=D.innerHTML;D=null;B+="&#160;";var A=Math.min(this.growMax,Math.max(this.metrics.getWidth(B)+10,this.growMin));this.el.setWidth(A);this.fireEvent("autosize",this,A)}});Ext.reg("textfield",Ext.form.TextField);
+Ext.form.TriggerField=Ext.extend(Ext.form.TextField,{defaultAutoCreate:{tag:"input",type:"text",size:"16",autocomplete:"off"},hideTrigger:false,autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,mimicing:false,onResize:function(A,B){Ext.form.TriggerField.superclass.onResize.call(this,A,B);if(typeof A=="number"){this.el.setWidth(this.adjustWidth("input",A-this.trigger.getWidth()))}this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},alignErrorIcon:function(){if(this.wrap){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])}},onRender:function(B,A){Ext.form.TriggerField.superclass.onRender.call(this,B,A);this.wrap=this.el.wrap({cls:"x-form-field-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.triggerClass});if(this.hideTrigger){this.trigger.setDisplayed(false)}this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())}},afterRender:function(){Ext.form.TriggerField.superclass.afterRender.call(this);var A;if(Ext.isIE&&this.el.getY()!=(A=this.trigger.getY())){this.el.position();this.el.setY(A)}},initTrigger:function(){this.trigger.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver("x-form-trigger-over");this.trigger.addClassOnClick("x-form-trigger-click")},onDestroy:function(){if(this.trigger){this.trigger.removeAllListeners();this.trigger.remove()}if(this.wrap){this.wrap.remove()}Ext.form.TriggerField.superclass.onDestroy.call(this)},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass("x-trigger-wrap-focus");this.mimicing=true;Ext.get(Ext.isIE?document.body:document).on("mousedown",this.mimicBlur,this,{delay:10});if(this.monitorTab){this.el.on("keydown",this.checkTab,this)}}},checkTab:function(A){if(A.getKey()==A.TAB){this.triggerBlur()}},onBlur:function(){},mimicBlur:function(A){if(!this.wrap.contains(A.target)&&this.validateBlur(A)){this.triggerBlur()}},triggerBlur:function(){this.mimicing=false;Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur,this);if(this.monitorTab){this.el.un("keydown",this.checkTab,this)}this.beforeBlur();this.wrap.removeClass("x-trigger-wrap-focus");Ext.form.TriggerField.superclass.onBlur.call(this)},beforeBlur:Ext.emptyFn,validateBlur:function(A){return true},onDisable:function(){Ext.form.TriggerField.superclass.onDisable.call(this);if(this.wrap){this.wrap.addClass(this.disabledClass);this.el.removeClass(this.disabledClass)}},onEnable:function(){Ext.form.TriggerField.superclass.onEnable.call(this);if(this.wrap){this.wrap.removeClass(this.disabledClass)}},onShow:function(){if(this.wrap){this.wrap.dom.style.display="";this.wrap.dom.style.visibility="visible"}},onHide:function(){this.wrap.dom.style.display="none"},onTriggerClick:Ext.emptyFn});Ext.form.TwinTriggerField=Ext.extend(Ext.form.TriggerField,{initComponent:function(){Ext.form.TwinTriggerField.superclass.initComponent.call(this);this.triggerConfig={tag:"span",cls:"x-form-twin-triggers",cn:[{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger2Class}]}},getTrigger:function(A){return this.triggers[A]},initTrigger:function(){var A=this.trigger.select(".x-form-trigger",true);this.wrap.setStyle("overflow","hidden");var B=this;A.each(function(D,F,C){D.hide=function(){var G=B.wrap.getWidth();this.dom.style.display="none";B.el.setWidth(G-B.trigger.getWidth())};D.show=function(){var G=B.wrap.getWidth();this.dom.style.display="";B.el.setWidth(G-B.trigger.getWidth())};var E="Trigger"+(C+1);if(this["hide"+E]){D.dom.style.display="none"}D.on("click",this["on"+E+"Click"],this,{preventDefault:true});D.addClassOnOver("x-form-trigger-over");D.addClassOnClick("x-form-trigger-click")},this);this.triggers=A.elements},onTrigger1Click:Ext.emptyFn,onTrigger2Click:Ext.emptyFn});Ext.reg("trigger",Ext.form.TriggerField);
+Ext.form.TextArea=Ext.extend(Ext.form.TextField,{growMin:60,growMax:1000,growAppend:"&#160;\n&#160;",growPad:0,enterIsSpecial:false,preventScrollbars:false,onRender:function(B,A){if(!this.el){this.defaultAutoCreate={tag:"textarea",style:"width:100px;height:60px;",autocomplete:"off"}}Ext.form.TextArea.superclass.onRender.call(this,B,A);if(this.grow){this.textSizeEl=Ext.DomHelper.append(document.body,{tag:"pre",cls:"x-form-grow-sizer"});if(this.preventScrollbars){this.el.setStyle("overflow","hidden")}this.el.setHeight(this.growMin)}},onDestroy:function(){if(this.textSizeEl){Ext.removeNode(this.textSizeEl)}Ext.form.TextArea.superclass.onDestroy.call(this)},fireKey:function(A){if(A.isSpecialKey()&&(this.enterIsSpecial||(A.getKey()!=A.ENTER||A.hasModifier()))){this.fireEvent("specialkey",this,A)}},onKeyUp:function(A){if(!A.isNavKeyPress()||A.getKey()==A.ENTER){this.autoSize()}Ext.form.TextArea.superclass.onKeyUp.call(this,A)},autoSize:function(){if(!this.grow||!this.textSizeEl){return }var C=this.el;var A=C.dom.value;var D=this.textSizeEl;D.innerHTML="";D.appendChild(document.createTextNode(A));A=D.innerHTML;Ext.fly(D).setWidth(this.el.getWidth());if(A.length<1){A="&#160;&#160;"}else{if(Ext.isIE){A=A.replace(/\n/g,"<p>&#160;</p>")}A+=this.growAppend}D.innerHTML=A;var B=Math.min(this.growMax,Math.max(D.offsetHeight,this.growMin)+this.growPad);if(B!=this.lastHeight){this.lastHeight=B;this.el.setHeight(B);this.fireEvent("autosize",this,B)}}});Ext.reg("textarea",Ext.form.TextArea);
+Ext.form.NumberField=Ext.extend(Ext.form.TextField,{fieldClass:"x-form-field x-form-num-field",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,allowNegative:true,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",baseChars:"0123456789",initEvents:function(){Ext.form.NumberField.superclass.initEvents.call(this);var B=this.baseChars+"";if(this.allowDecimals){B+=this.decimalSeparator}if(this.allowNegative){B+="-"}this.stripCharsRe=new RegExp("[^"+B+"]","gi");var A=function(D){var C=D.getKey();if(!Ext.isIE&&(D.isSpecialKey()||C==D.BACKSPACE||C==D.DELETE)){return }var E=D.getCharCode();if(B.indexOf(String.fromCharCode(E))===-1){D.stopEvent()}};this.el.on("keypress",A,this)},validateValue:function(B){if(!Ext.form.NumberField.superclass.validateValue.call(this,B)){return false}if(B.length<1){return true}B=String(B).replace(this.decimalSeparator,".");if(isNaN(B)){this.markInvalid(String.format(this.nanText,B));return false}var A=this.parseValue(B);if(A<this.minValue){this.markInvalid(String.format(this.minText,this.minValue));return false}if(A>this.maxValue){this.markInvalid(String.format(this.maxText,this.maxValue));return false}return true},getValue:function(){return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))},setValue:function(A){A=typeof A=="number"?A:parseFloat(String(A).replace(this.decimalSeparator,"."));A=isNaN(A)?"":String(A).replace(".",this.decimalSeparator);Ext.form.NumberField.superclass.setValue.call(this,A)},parseValue:function(A){A=parseFloat(String(A).replace(this.decimalSeparator,"."));return isNaN(A)?"":A},fixPrecision:function(B){var A=isNaN(B);if(!this.allowDecimals||this.decimalPrecision==-1||A||!B){return A?"":B}return parseFloat(parseFloat(B).toFixed(this.decimalPrecision))},beforeBlur:function(){var A=this.parseValue(this.getRawValue());if(A){this.setValue(this.fixPrecision(A))}}});Ext.reg("numberfield",Ext.form.NumberField);
+Ext.form.DateField=Ext.extend(Ext.form.TriggerField,{format:"m/d/Y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d",disabledDaysText:"Disabled",disabledDatesText:"Disabled",minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:"x-form-date-trigger",showToday:true,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);if(typeof this.minValue=="string"){this.minValue=this.parseDate(this.minValue)}if(typeof this.maxValue=="string"){this.maxValue=this.parseDate(this.maxValue)}this.ddMatch=null;this.initDisabledDays()},initDisabledDays:function(){if(this.disabledDates){var A=this.disabledDates;var C="(?:";for(var B=0;B<A.length;B++){C+=A[B];if(B!=A.length-1){C+="|"}}this.disabledDatesRE=new RegExp(C+")")}},setDisabledDates:function(A){this.disabledDates=A;this.initDisabledDays();if(this.menu){this.menu.picker.setDisabledDates(this.disabledDatesRE)}},setDisabledDays:function(A){this.disabledDays=A;if(this.menu){this.menu.picker.setDisabledDays(A)}},setMinValue:function(A){this.minValue=(typeof A=="string"?this.parseDate(A):A);if(this.menu){this.menu.picker.setMinDate(this.minValue)}},setMaxValue:function(A){this.maxValue=(typeof A=="string"?this.parseDate(A):A);if(this.menu){this.menu.picker.setMaxDate(this.maxValue)}},validateValue:function(E){E=this.formatDate(E);if(!Ext.form.DateField.superclass.validateValue.call(this,E)){return false}if(E.length<1){return true}var C=E;E=this.parseDate(E);if(!E){this.markInvalid(String.format(this.invalidText,C,this.format));return false}var F=E.getTime();if(this.minValue&&F<this.minValue.getTime()){this.markInvalid(String.format(this.minText,this.formatDate(this.minValue)));return false}if(this.maxValue&&F>this.maxValue.getTime()){this.markInvalid(String.format(this.maxText,this.formatDate(this.maxValue)));return false}if(this.disabledDays){var A=E.getDay();for(var B=0;B<this.disabledDays.length;B++){if(A===this.disabledDays[B]){this.markInvalid(this.disabledDaysText);return false}}}var D=this.formatDate(E);if(this.ddMatch&&this.ddMatch.test(D)){this.markInvalid(String.format(this.disabledDatesText,D));return false}return true},validateBlur:function(){return !this.menu||!this.menu.isVisible()},getValue:function(){return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))||""},setValue:function(A){Ext.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)))},parseDate:function(D){if(!D||Ext.isDate(D)){return D}var B=Date.parseDate(D,this.format);if(!B&&this.altFormats){if(!this.altFormatsArray){this.altFormatsArray=this.altFormats.split("|")}for(var C=0,A=this.altFormatsArray.length;C<A&&!B;C++){B=Date.parseDate(D,this.altFormatsArray[C])}}return B},onDestroy:function(){if(this.menu){this.menu.destroy()}if(this.wrap){this.wrap.remove()}Ext.form.DateField.superclass.onDestroy.call(this)},formatDate:function(A){return Ext.isDate(A)?A.dateFormat(this.format):A},menuListeners:{select:function(A,B){this.setValue(B)},show:function(){this.onFocus()},hide:function(){this.focus.defer(10,this);var A=this.menuListeners;this.menu.un("select",A.select,this);this.menu.un("show",A.show,this);this.menu.un("hide",A.hide,this)}},onTriggerClick:function(){if(this.disabled){return }if(this.menu==null){this.menu=new Ext.menu.DateMenu()}Ext.apply(this.menu.picker,{minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.format,showToday:this.showToday,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))});this.menu.on(Ext.apply({},this.menuListeners,{scope:this}));this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?")},beforeBlur:function(){var A=this.parseDate(this.getRawValue());if(A){this.setValue(A)}}});Ext.reg("datefield",Ext.form.DateField);
+Ext.form.ComboBox=Ext.extend(Ext.form.TriggerField,{defaultAutoCreate:{tag:"input",type:"text",size:"24",autocomplete:"off"},listClass:"",selectedClass:"x-combo-selected",triggerClass:"x-form-arrow-trigger",shadow:"sides",listAlign:"tl-bl?",maxHeight:300,minHeight:90,triggerAction:"query",minChars:4,typeAhead:false,queryDelay:500,pageSize:0,selectOnFocus:false,queryParam:"query",loadingText:"Loading...",resizable:false,handleHeight:8,editable:true,allQuery:"",mode:"remote",minListWidth:70,forceSelection:false,typeAheadDelay:250,lazyInit:true,initComponent:function(){Ext.form.ComboBox.superclass.initComponent.call(this);this.addEvents("expand","collapse","beforeselect","select","beforequery");if(this.transform){this.allowDomMove=false;var C=Ext.getDom(this.transform);if(!this.hiddenName){this.hiddenName=C.name}if(!this.store){this.mode="local";var G=[],D=C.options;for(var B=0,A=D.length;B<A;B++){var F=D[B];var E=(Ext.isIE?F.getAttributeNode("value").specified:F.hasAttribute("value"))?F.value:F.text;if(F.selected){this.value=E}G.push([E,F.text])}this.store=new Ext.data.SimpleStore({"id":0,fields:["value","text"],data:G});this.valueField="value";this.displayField="text"}C.name=Ext.id();if(!this.lazyRender){this.target=true;this.el=Ext.DomHelper.insertBefore(C,this.autoCreate||this.defaultAutoCreate);Ext.removeNode(C);this.render(this.el.parentNode)}else{Ext.removeNode(C)}}else{if(Ext.isArray(this.store)){if(Ext.isArray(this.store[0])){this.store=new Ext.data.SimpleStore({fields:["value","text"],data:this.store});this.valueField="value"}else{this.store=new Ext.data.SimpleStore({fields:["text"],data:this.store,expandData:true});this.valueField="text"}this.displayField="text";this.mode="local"}}this.selectedIndex=-1;if(this.mode=="local"){if(this.initialConfig.queryDelay===undefined){this.queryDelay=10}if(this.initialConfig.minChars===undefined){this.minChars=0}}},onRender:function(B,A){Ext.form.ComboBox.superclass.onRender.call(this,B,A);if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:"input",type:"hidden",name:this.hiddenName,id:(this.hiddenId||this.hiddenName)},"before",true);this.el.dom.removeAttribute("name")}if(Ext.isGecko){this.el.dom.setAttribute("autocomplete","off")}if(!this.lazyInit){this.initList()}else{this.on("focus",this.initList,this,{single:true})}if(!this.editable){this.editable=true;this.setEditable(false)}},initValue:function(){Ext.form.ComboBox.superclass.initValue.call(this);if(this.hiddenField){this.hiddenField.value=this.hiddenValue!==undefined?this.hiddenValue:this.value!==undefined?this.value:""}},initList:function(){if(!this.list){var A="x-combo-list";this.list=new Ext.Layer({shadow:this.shadow,cls:[A,this.listClass].join(" "),constrain:false});var B=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);this.list.setWidth(B);this.list.swallowEvent("mousewheel");this.assetHeight=0;if(this.title){this.header=this.list.createChild({cls:A+"-hd",html:this.title});this.assetHeight+=this.header.getHeight()}this.innerList=this.list.createChild({cls:A+"-inner"});this.innerList.on("mouseover",this.onViewOver,this);this.innerList.on("mousemove",this.onViewMove,this);this.innerList.setWidth(B-this.list.getFrameWidth("lr"));if(this.pageSize){this.footer=this.list.createChild({cls:A+"-ft"});this.pageTb=new Ext.PagingToolbar({store:this.store,pageSize:this.pageSize,renderTo:this.footer});this.assetHeight+=this.footer.getHeight()}if(!this.tpl){this.tpl="<tpl for=\".\"><div class=\""+A+"-item\">{"+this.displayField+"}</div></tpl>"}this.view=new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector||"."+A+"-item"});this.view.on("click",this.onViewClick,this);this.bindStore(this.store,true);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:"se"});this.resizer.on("resize",function(E,C,D){this.maxHeight=D-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;this.listWidth=C;this.innerList.setWidth(C-this.list.getFrameWidth("lr"));this.restrictHeight()},this);this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")}}},bindStore:function(A,B){if(this.store&&!B){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("loadexception",this.collapse,this);if(!A){this.store=null;if(this.view){this.view.setStore(null)}}}if(A){this.store=Ext.StoreMgr.lookup(A);this.store.on("beforeload",this.onBeforeLoad,this);this.store.on("load",this.onLoad,this);this.store.on("loadexception",this.collapse,this);if(this.view){this.view.setStore(A)}}},initEvents:function(){Ext.form.ComboBox.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{"up":function(A){this.inKeyMode=true;this.selectPrev()},"down":function(A){if(!this.isExpanded()){this.onTriggerClick()}else{this.inKeyMode=true;this.selectNext()}},"enter":function(A){this.onViewClick();this.delayedCheck=true;this.unsetDelayCheck.defer(10,this)},"esc":function(A){this.collapse()},"tab":function(A){this.onViewClick(false);return true},scope:this,doRelay:function(C,B,A){if(A=="down"||this.scope.isExpanded()){return Ext.KeyNav.prototype.doRelay.apply(this,arguments)}return true},forceKeyDown:true});this.queryDelay=Math.max(this.queryDelay||10,this.mode=="local"?10:250);this.dqTask=new Ext.util.DelayedTask(this.initQuery,this);if(this.typeAhead){this.taTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.editable!==false){this.el.on("keyup",this.onKeyUp,this)}if(this.forceSelection){this.on("blur",this.doForce,this)}},onDestroy:function(){if(this.view){this.view.el.removeAllListeners();this.view.el.remove();this.view.purgeListeners()}if(this.list){this.list.destroy()}this.bindStore(null);Ext.form.ComboBox.superclass.onDestroy.call(this)},unsetDelayCheck:function(){delete this.delayedCheck},fireKey:function(A){if(A.isNavKeyPress()&&!this.isExpanded()&&!this.delayedCheck){this.fireEvent("specialkey",this,A)}},onResize:function(A,B){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(this.list&&this.listWidth===undefined){var C=Math.max(A,this.minListWidth);this.list.setWidth(C);this.innerList.setWidth(C-this.list.getFrameWidth("lr"))}},onEnable:function(){Ext.form.ComboBox.superclass.onEnable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=false}},onDisable:function(){Ext.form.ComboBox.superclass.onDisable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=true}},setEditable:function(A){if(A==this.editable){return }this.editable=A;if(!A){this.el.dom.setAttribute("readOnly",true);this.el.on("mousedown",this.onTriggerClick,this);this.el.addClass("x-combo-noedit")}else{this.el.dom.setAttribute("readOnly",false);this.el.un("mousedown",this.onTriggerClick,this);this.el.removeClass("x-combo-noedit")}},onBeforeLoad:function(){if(!this.hasFocus){return }this.innerList.update(this.loadingText?"<div class=\"loading-indicator\">"+this.loadingText+"</div>":"");this.restrictHeight();this.selectedIndex=-1},onLoad:function(){if(!this.hasFocus){return }if(this.store.getCount()>0){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select()}if(!this.selectByValue(this.value,true)){this.select(0,true)}}else{this.selectNext();if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay)}}}else{this.onEmptyResults()}},onTypeAhead:function(){if(this.store.getCount()>0){var B=this.store.getAt(0);var C=B.data[this.displayField];var A=C.length;var D=this.getRawValue().length;if(D!=A){this.setRawValue(C);this.selectText(D,C.length)}}},onSelect:function(A,B){if(this.fireEvent("beforeselect",this,A,B)!==false){this.setValue(A.data[this.valueField||this.displayField]);this.collapse();this.fireEvent("select",this,A,B)}},getValue:function(){if(this.valueField){return typeof this.value!="undefined"?this.value:""}else{return Ext.form.ComboBox.superclass.getValue.call(this)}},clearValue:function(){if(this.hiddenField){this.hiddenField.value=""}this.setRawValue("");this.lastSelectionText="";this.applyEmptyText();this.value=""},setValue:function(A){var C=A;if(this.valueField){var B=this.findRecord(this.valueField,A);if(B){C=B.data[this.displayField]}else{if(this.valueNotFoundText!==undefined){C=this.valueNotFoundText}}}this.lastSelectionText=C;if(this.hiddenField){this.hiddenField.value=A}Ext.form.ComboBox.superclass.setValue.call(this,C);this.value=A},findRecord:function(C,B){var A;if(this.store.getCount()>0){this.store.each(function(D){if(D.data[C]==B){A=D;return false}})}return A},onViewMove:function(B,A){this.inKeyMode=false},onViewOver:function(D,B){if(this.inKeyMode){return }var C=this.view.findItemFromChild(B);if(C){var A=this.view.indexOf(C);this.select(A,false)}},onViewClick:function(B){var A=this.view.getSelectedIndexes()[0];var C=this.store.getAt(A);if(C){this.onSelect(C,A)}if(B!==false){this.el.focus()}},restrictHeight:function(){this.innerList.dom.style.height="";var B=this.innerList.dom;var E=this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight;var C=Math.max(B.clientHeight,B.offsetHeight,B.scrollHeight);var A=this.getPosition()[1]-Ext.getBody().getScroll().top;var F=Ext.lib.Dom.getViewHeight()-A-this.getSize().height;var D=Math.max(A,F,this.minHeight||0)-this.list.shadowOffset-E-5;C=Math.min(C,D,this.maxHeight);this.innerList.setHeight(C);this.list.beginUpdate();this.list.setHeight(C+E);this.list.alignTo(this.wrap,this.listAlign);this.list.endUpdate()},onEmptyResults:function(){this.collapse()},isExpanded:function(){return this.list&&this.list.isVisible()},selectByValue:function(A,C){if(A!==undefined&&A!==null){var B=this.findRecord(this.valueField||this.displayField,A);if(B){this.select(this.store.indexOf(B),C);return true}}return false},select:function(A,C){this.selectedIndex=A;this.view.select(A);if(C!==false){var B=this.view.getNode(A);if(B){this.innerList.scrollChildIntoView(B,false)}}},selectNext:function(){var A=this.store.getCount();if(A>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex<A-1){this.select(this.selectedIndex+1)}}}},selectPrev:function(){var A=this.store.getCount();if(A>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex!=0){this.select(this.selectedIndex-1)}}}},onKeyUp:function(A){if(this.editable!==false&&!A.isSpecialKey()){this.lastKey=A.getKey();this.dqTask.delay(this.queryDelay)}},validateBlur:function(){return !this.list||!this.list.isVisible()},initQuery:function(){this.doQuery(this.getRawValue())},doForce:function(){if(this.el.dom.value.length>0){this.el.dom.value=this.lastSelectionText===undefined?"":this.lastSelectionText;this.applyEmptyText()}},doQuery:function(C,B){if(C===undefined||C===null){C=""}var A={query:C,forceAll:B,combo:this,cancel:false};if(this.fireEvent("beforequery",A)===false||A.cancel){return false}C=A.query;B=A.forceAll;if(B===true||(C.length>=this.minChars)){if(this.lastQuery!==C){this.lastQuery=C;if(this.mode=="local"){this.selectedIndex=-1;if(B){this.store.clearFilter()}else{this.store.filter(this.displayField,C)}this.onLoad()}else{this.store.baseParams[this.queryParam]=C;this.store.load({params:this.getParams(C)});this.expand()}}else{this.selectedIndex=-1;this.onLoad()}}},getParams:function(A){var B={};if(this.pageSize){B.start=0;B.limit=this.pageSize}return B},collapse:function(){if(!this.isExpanded()){return }this.list.hide();Ext.getDoc().un("mousewheel",this.collapseIf,this);Ext.getDoc().un("mousedown",this.collapseIf,this);this.fireEvent("collapse",this)},collapseIf:function(A){if(!A.within(this.wrap)&&!A.within(this.list)){this.collapse()}},expand:function(){if(this.isExpanded()||!this.hasFocus){return }this.list.alignTo(this.wrap,this.listAlign);this.list.show();this.innerList.setOverflow("auto");Ext.getDoc().on("mousewheel",this.collapseIf,this);Ext.getDoc().on("mousedown",this.collapseIf,this);this.fireEvent("expand",this)},onTriggerClick:function(){if(this.disabled){return }if(this.isExpanded()){this.collapse();this.el.focus()}else{this.onFocus({});if(this.triggerAction=="all"){this.doQuery(this.allQuery,true)}else{this.doQuery(this.getRawValue())}this.el.focus()}}});Ext.reg("combo",Ext.form.ComboBox);
+Ext.form.Checkbox=Ext.extend(Ext.form.Field,{checkedCls:"x-form-check-checked",focusCls:"x-form-check-focus",overCls:"x-form-check-over",mouseDownCls:"x-form-check-down",tabIndex:0,checked:false,defaultAutoCreate:{tag:"input",type:"checkbox",autocomplete:"off"},baseCls:"x-form-check",initComponent:function(){Ext.form.Checkbox.superclass.initComponent.call(this);this.addEvents("check")},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.initCheckEvents()},initCheckEvents:function(){this.innerWrap.removeAllListeners();this.innerWrap.addClassOnOver(this.overCls);this.innerWrap.addClassOnClick(this.mouseDownCls);this.innerWrap.on("click",this.onClick,this);this.innerWrap.on("keyup",this.onKeyUp,this)},onRender:function(B,A){Ext.form.Checkbox.superclass.onRender.call(this,B,A);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue}this.el.addClass("x-hidden");this.innerWrap=this.el.wrap({tabIndex:this.tabIndex,cls:this.baseCls+"-wrap-inner"});this.wrap=this.innerWrap.wrap({cls:this.baseCls+"-wrap"});if(this.boxLabel){this.labelEl=this.innerWrap.createChild({tag:"label",htmlFor:this.el.id,cls:"x-form-cb-label",html:this.boxLabel})}this.imageEl=this.innerWrap.createChild({tag:"img",src:Ext.BLANK_IMAGE_URL,cls:this.baseCls},this.el);if(this.checked){this.setValue(true)}else{this.checked=this.el.dom.checked}this.originalValue=this.checked},onDestroy:function(){if(this.rendered){Ext.destroy(this.imageEl,this.labelEl,this.innerWrap,this.wrap)}Ext.form.Checkbox.superclass.onDestroy.call(this)},onFocus:function(A){Ext.form.Checkbox.superclass.onFocus.call(this,A);this.el.addClass(this.focusCls)},onBlur:function(A){Ext.form.Checkbox.superclass.onBlur.call(this,A);this.el.removeClass(this.focusCls)},onResize:function(){Ext.form.Checkbox.superclass.onResize.apply(this,arguments);if(!this.boxLabel&&!this.fieldLabel){this.el.alignTo(this.wrap,"c-c")}},onKeyUp:function(A){if(A.getKey()==Ext.EventObject.SPACE){this.onClick(A)}},onClick:function(A){if(!this.disabled&&!this.readOnly){this.toggleValue()}A.stopEvent()},onEnable:function(){Ext.form.Checkbox.superclass.onEnable.call(this);this.initCheckEvents()},onDisable:function(){Ext.form.Checkbox.superclass.onDisable.call(this);this.innerWrap.removeAllListeners()},toggleValue:function(){this.setValue(!this.checked)},getResizeEl:function(){if(!this.resizeEl){this.resizeEl=Ext.isSafari?this.wrap:(this.wrap.up(".x-form-element",5)||this.wrap)}return this.resizeEl},getPositionEl:function(){return this.wrap},getActionEl:function(){return this.wrap},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,initValue:Ext.emptyFn,getValue:function(){if(this.rendered){return this.el.dom.checked}return false},setValue:function(A){var B=this.checked;this.checked=(A===true||A==="true"||A=="1"||String(A).toLowerCase()=="on");if(this.el&&this.el.dom){this.el.dom.checked=this.checked;this.el.dom.defaultChecked=this.checked}this.wrap[this.checked?"addClass":"removeClass"](this.checkedCls);if(B!=this.checked){this.fireEvent("check",this,this.checked);if(this.handler){this.handler.call(this.scope||this,this,this.checked)}}}});Ext.reg("checkbox",Ext.form.Checkbox);
+Ext.form.CheckboxGroup=Ext.extend(Ext.form.Field,{columns:"auto",vertical:false,allowBlank:true,blankText:"You must select at least one item in this group",defaultType:"checkbox",groupCls:"x-form-check-group",onRender:function(H,F){if(!this.el){var M={cls:this.groupCls,layout:"column",border:false,renderTo:H};var A={defaultType:this.defaultType,layout:"form",border:false,defaults:{hideLabel:true,anchor:"100%"}};if(this.items[0].items){Ext.apply(M,{layoutConfig:{columns:this.items.length},defaults:this.defaults,items:this.items});for(var E=0,J=this.items.length;E<J;E++){Ext.applyIf(this.items[E],A)}}else{var D,K=[];if(typeof this.columns=="string"){this.columns=this.items.length}if(!Ext.isArray(this.columns)){var I=[];for(var E=0;E<this.columns;E++){I.push((100/this.columns)*0.01)}this.columns=I}D=this.columns.length;for(var E=0;E<D;E++){var B=Ext.apply({items:[]},A);B[this.columns[E]<=1?"columnWidth":"width"]=this.columns[E];if(this.defaults){B.defaults=Ext.apply(B.defaults||{},this.defaults)}K.push(B)}if(this.vertical){var O=Math.ceil(this.items.length/D),L=0;for(var E=0,J=this.items.length;E<J;E++){if(E>0&&E%O==0){L++}if(this.items[E].fieldLabel){this.items[E].hideLabel=false}K[L].items.push(this.items[E])}}else{for(var E=0,J=this.items.length;E<J;E++){var N=E%D;if(this.items[E].fieldLabel){this.items[E].hideLabel=false}K[N].items.push(this.items[E])}}Ext.apply(M,{layoutConfig:{columns:D},items:K})}this.panel=new Ext.Panel(M);this.el=this.panel.getEl();if(this.forId&&this.itemCls){var C=this.el.up(this.itemCls).child("label",true);if(C){C.setAttribute("htmlFor",this.forId)}}var G=this.panel.findBy(function(P){return P.isFormField},this);this.items=new Ext.util.MixedCollection();this.items.addAll(G)}Ext.form.CheckboxGroup.superclass.onRender.call(this,H,F)},validateValue:function(A){if(!this.allowBlank){var B=true;this.items.each(function(C){if(C.checked){return B=false}},this);if(B){this.markInvalid(this.blankText);return false}}return true},onDisable:function(){this.items.each(function(A){A.disable()})},onEnable:function(){this.items.each(function(A){A.enable()})},onResize:function(A,B){this.panel.setSize(A,B);this.panel.doLayout()},reset:function(){Ext.form.CheckboxGroup.superclass.reset.call(this);this.items.each(function(A){if(A.reset){A.reset()}},this)},initValue:Ext.emptyFn,getValue:Ext.emptyFn,getRawValue:Ext.emptyFn,setValue:Ext.emptyFn,setRawValue:Ext.emptyFn});Ext.reg("checkboxgroup",Ext.form.CheckboxGroup);
+Ext.form.Radio=Ext.extend(Ext.form.Checkbox,{inputType:"radio",baseCls:"x-form-radio",getGroupValue:function(){var A=this.getParent().child("input[name="+this.el.dom.name+"]:checked",true);return A?A.value:null},getParent:function(){return this.el.up("form")||Ext.getBody()},toggleValue:function(){if(!this.checked){var A=this.getParent().select("input[name="+this.el.dom.name+"]");A.each(function(B){if(B.dom.id==this.id){this.setValue(true)}else{Ext.getCmp(B.dom.id).setValue(false)}},this)}},setValue:function(A){if(typeof A=="boolean"){Ext.form.Radio.superclass.setValue.call(this,A)}else{var B=this.getParent().child("input[name="+this.el.dom.name+"][value="+A+"]",true);if(B&&!B.checked){Ext.getCmp(B.id).toggleValue()}}},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.reg("radio",Ext.form.Radio);
+Ext.form.RadioGroup=Ext.extend(Ext.form.CheckboxGroup,{allowBlank:true,blankText:"You must select one item in this group",defaultType:"radio",groupCls:"x-form-radio-group"});Ext.reg("radiogroup",Ext.form.RadioGroup);
+Ext.form.Hidden=Ext.extend(Ext.form.Field,{inputType:"hidden",onRender:function(){Ext.form.Hidden.superclass.onRender.apply(this,arguments)},initEvents:function(){this.originalValue=this.getValue()},setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.reg("hidden",Ext.form.Hidden);
+Ext.form.BasicForm=function(B,A){Ext.apply(this,A);this.items=new Ext.util.MixedCollection(false,function(C){return C.id||(C.id=Ext.id())});this.addEvents("beforeaction","actionfailed","actioncomplete");if(B){this.initEl(B)}Ext.form.BasicForm.superclass.constructor.call(this)};Ext.extend(Ext.form.BasicForm,Ext.util.Observable,{timeout:30,activeAction:null,trackResetOnLoad:false,initEl:function(A){this.el=Ext.get(A);this.id=this.el.id||Ext.id();if(!this.standardSubmit){this.el.on("submit",this.onSubmit,this)}this.el.addClass("x-form")},getEl:function(){return this.el},onSubmit:function(A){A.stopEvent()},destroy:function(){this.items.each(function(A){Ext.destroy(A)});if(this.el){this.el.removeAllListeners();this.el.remove()}this.purgeListeners()},isValid:function(){var A=true;this.items.each(function(B){if(!B.validate()){A=false}});return A},isDirty:function(){var A=false;this.items.each(function(B){if(B.isDirty()){A=true;return false}});return A},doAction:function(B,A){if(typeof B=="string"){B=new Ext.form.Action.ACTION_TYPES[B](this,A)}if(this.fireEvent("beforeaction",this,B)!==false){this.beforeAction(B);B.run.defer(100,B)}return this},submit:function(B){if(this.standardSubmit){var A=this.isValid();if(A){this.el.dom.submit()}return A}this.doAction("submit",B);return this},load:function(A){this.doAction("load",A);return this},updateRecord:function(B){B.beginEdit();var A=B.fields;A.each(function(C){var D=this.findField(C.name);if(D){B.set(C.name,D.getValue())}},this);B.endEdit();return this},loadRecord:function(A){this.setValues(A.data);return this},beforeAction:function(A){var B=A.options;if(B.waitMsg){if(this.waitMsgTarget===true){this.el.mask(B.waitMsg,"x-mask-loading")}else{if(this.waitMsgTarget){this.waitMsgTarget=Ext.get(this.waitMsgTarget);this.waitMsgTarget.mask(B.waitMsg,"x-mask-loading")}else{Ext.MessageBox.wait(B.waitMsg,B.waitTitle||this.waitTitle||"Please Wait...")}}}},afterAction:function(A,C){this.activeAction=null;var B=A.options;if(B.waitMsg){if(this.waitMsgTarget===true){this.el.unmask()}else{if(this.waitMsgTarget){this.waitMsgTarget.unmask()}else{Ext.MessageBox.updateProgress(1);Ext.MessageBox.hide()}}}if(C){if(B.reset){this.reset()}Ext.callback(B.success,B.scope,[this,A]);this.fireEvent("actioncomplete",this,A)}else{Ext.callback(B.failure,B.scope,[this,A]);this.fireEvent("actionfailed",this,A)}},findField:function(B){var A=this.items.get(B);if(!A){this.items.each(function(C){if(C.isFormField&&(C.dataIndex==B||C.id==B||C.getName()==B)){A=C;return false}})}return A||null},markInvalid:function(G){if(Ext.isArray(G)){for(var C=0,A=G.length;C<A;C++){var B=G[C];var D=this.findField(B.id);if(D){D.markInvalid(B.msg)}}}else{var E,F;for(F in G){if(typeof G[F]!="function"&&(E=this.findField(F))){E.markInvalid(G[F])}}}return this},setValues:function(C){if(Ext.isArray(C)){for(var D=0,A=C.length;D<A;D++){var B=C[D];var E=this.findField(B.id);if(E){E.setValue(B.value);if(this.trackResetOnLoad){E.originalValue=E.getValue()}}}}else{var F,G;for(G in C){if(typeof C[G]!="function"&&(F=this.findField(G))){F.setValue(C[G]);if(this.trackResetOnLoad){F.originalValue=F.getValue()}}}}return this},getValues:function(B){var A=Ext.lib.Ajax.serializeForm(this.el.dom);if(B===true){return A}return Ext.urlDecode(A)},clearInvalid:function(){this.items.each(function(A){A.clearInvalid()});return this},reset:function(){this.items.each(function(A){A.reset()});return this},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this},remove:function(A){this.items.remove(A);return this},render:function(){this.items.each(function(A){if(A.isFormField&&!A.rendered&&document.getElementById(A.id)){A.applyToMarkup(A.id)}});return this},applyToFields:function(A){this.items.each(function(B){Ext.apply(B,A)});return this},applyIfToFields:function(A){this.items.each(function(B){Ext.applyIf(B,A)});return this}});Ext.BasicForm=Ext.form.BasicForm;
+Ext.FormPanel=Ext.extend(Ext.Panel,{buttonAlign:"center",minButtonWidth:75,labelAlign:"left",monitorValid:false,monitorPoll:200,layout:"form",initComponent:function(){this.form=this.createForm();this.bodyCfg={tag:"form",cls:this.baseCls+"-body",method:this.method||"POST",id:this.formId||Ext.id()};if(this.fileUpload){this.bodyCfg.enctype="multipart/form-data"}Ext.FormPanel.superclass.initComponent.call(this);this.addEvents("clientvalidation");this.relayEvents(this.form,["beforeaction","actionfailed","actioncomplete"])},createForm:function(){delete this.initialConfig.listeners;return new Ext.form.BasicForm(null,this.initialConfig)},initFields:function(){var C=this.form;var A=this;var B=function(D){if(D.isFormField){C.add(D)}else{if(D.doLayout&&D!=A){Ext.applyIf(D,{labelAlign:D.ownerCt.labelAlign,labelWidth:D.ownerCt.labelWidth,itemCls:D.ownerCt.itemCls});if(D.items){D.items.each(B)}}}};this.items.each(B)},getLayoutTarget:function(){return this.form.el},getForm:function(){return this.form},onRender:function(B,A){this.initFields();Ext.FormPanel.superclass.onRender.call(this,B,A);this.form.initEl(this.body)},beforeDestroy:function(){Ext.FormPanel.superclass.beforeDestroy.call(this);this.stopMonitoring();Ext.destroy(this.form)},initEvents:function(){Ext.FormPanel.superclass.initEvents.call(this);this.items.on("remove",this.onRemove,this);this.items.on("add",this.onAdd,this);if(this.monitorValid){this.startMonitoring()}},onAdd:function(A,B){if(B.isFormField){this.form.add(B)}},onRemove:function(A){if(A.isFormField){Ext.destroy(A.container.up(".x-form-item"));this.form.remove(A)}},startMonitoring:function(){if(!this.bound){this.bound=true;Ext.TaskMgr.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this})}},stopMonitoring:function(){this.bound=false},load:function(){this.form.load.apply(this.form,arguments)},onDisable:function(){Ext.FormPanel.superclass.onDisable.call(this);if(this.form){this.form.items.each(function(){this.disable()})}},onEnable:function(){Ext.FormPanel.superclass.onEnable.call(this);if(this.form){this.form.items.each(function(){this.enable()})}},bindHandler:function(){if(!this.bound){return false}var D=true;this.form.items.each(function(E){if(!E.isValid(true)){D=false;return false}});if(this.buttons){for(var C=0,A=this.buttons.length;C<A;C++){var B=this.buttons[C];if(B.formBind===true&&B.disabled===D){B.setDisabled(!D)}}}this.fireEvent("clientvalidation",this,D)}});Ext.reg("form",Ext.FormPanel);Ext.form.FormPanel=Ext.FormPanel;
+Ext.form.FieldSet=Ext.extend(Ext.Panel,{baseCls:"x-fieldset",layout:"form",onRender:function(B,A){if(!this.el){this.el=document.createElement("fieldset");this.el.id=this.id;if(this.title||this.header||this.checkboxToggle){this.el.appendChild(document.createElement("legend")).className="x-fieldset-header"}}Ext.form.FieldSet.superclass.onRender.call(this,B,A);if(this.checkboxToggle){var C=typeof this.checkboxToggle=="object"?this.checkboxToggle:{tag:"input",type:"checkbox",name:this.checkboxName||this.id+"-checkbox"};this.checkbox=this.header.insertFirst(C);this.checkbox.dom.checked=!this.collapsed;this.checkbox.on("click",this.onCheckClick,this)}},onCollapse:function(A,B){if(this.checkbox){this.checkbox.dom.checked=false}this.afterCollapse()},onExpand:function(A,B){if(this.checkbox){this.checkbox.dom.checked=true}this.afterExpand()},onCheckClick:function(){this[this.checkbox.dom.checked?"expand":"collapse"]()}});Ext.reg("fieldset",Ext.form.FieldSet);
+Ext.form.HtmlEditor=Ext.extend(Ext.form.Field,{enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,enableLinks:true,enableFont:true,createLinkText:"Please enter the URL for the link:",defaultLinkValue:"http:/"+"/",fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],defaultFont:"tahoma",validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Ext.emptyFn,iframePad:3,hideMode:"offsets",defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"off"},initComponent:function(){this.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange")},createFontOptions:function(){var D=[],B=this.fontFamilies,C,F;for(var E=0,A=B.length;E<A;E++){C=B[E];F=C.toLowerCase();D.push("<option value=\"",F,"\" style=\"font-family:",C,";\"",(this.defaultFont==F?" selected=\"true\">":">"),C,"</option>")}return D.join("")},createToolbar:function(D){var A=Ext.QuickTips&&Ext.QuickTips.isEnabled();function C(G,E,F){return{itemId:G,cls:"x-btn-icon x-edit-"+G,enableToggle:E!==false,scope:D,handler:F||D.relayBtnCmd,clickEvent:"mousedown",tooltip:A?D.buttonTips[G]||undefined:undefined,tabIndex:-1}}var B=new Ext.Toolbar({renderTo:this.wrap.dom.firstChild});B.el.on("click",function(E){E.preventDefault()});if(this.enableFont&&!Ext.isSafari2){this.fontSelect=B.el.createChild({tag:"select",cls:"x-font-select",html:this.createFontOptions()});this.fontSelect.on("change",function(){var E=this.fontSelect.dom.value;this.relayCmd("fontname",E);this.deferFocus()},this);B.add(this.fontSelect.dom,"-")}if(this.enableFormat){B.add(C("bold"),C("italic"),C("underline"))}if(this.enableFontSize){B.add("-",C("increasefontsize",false,this.adjustFont),C("decreasefontsize",false,this.adjustFont))}if(this.enableColors){B.add("-",{itemId:"forecolor",cls:"x-btn-icon x-edit-forecolor",clickEvent:"mousedown",tooltip:A?D.buttonTips["forecolor"]||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,selectHandler:function(F,E){this.execCmd("forecolor",Ext.isSafari||Ext.isIE?"#"+E:E);this.deferFocus()},scope:this,clickEvent:"mousedown"})},{itemId:"backcolor",cls:"x-btn-icon x-edit-backcolor",clickEvent:"mousedown",tooltip:A?D.buttonTips["backcolor"]||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,selectHandler:function(F,E){if(Ext.isGecko){this.execCmd("useCSS",false);this.execCmd("hilitecolor",E);this.execCmd("useCSS",true);this.deferFocus()}else{this.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isSafari||Ext.isIE?"#"+E:E);this.deferFocus()}},scope:this,clickEvent:"mousedown"})})}if(this.enableAlignments){B.add("-",C("justifyleft"),C("justifycenter"),C("justifyright"))}if(!Ext.isSafari2){if(this.enableLinks){B.add("-",C("createlink",false,this.createLink))}if(this.enableLists){B.add("-",C("insertorderedlist"),C("insertunorderedlist"))}if(this.enableSourceEdit){B.add("-",C("sourceedit",true,function(E){this.toggleSourceEdit(E.pressed)}))}}this.tb=B},getDocMarkup:function(){return"<html><head><style type=\"text/css\">body{border:0;margin:0;padding:3px;height:98%;cursor:text;}</style></head><body></body></html>"},getEditorBody:function(){return this.doc.body||this.doc.documentElement},getDoc:function(){return Ext.isIE?this.getWin().document:(this.iframe.contentDocument||this.getWin().document)},getWin:function(){return Ext.isIE?this.iframe.contentWindow:window.frames[this.iframe.name]},onRender:function(B,A){Ext.form.HtmlEditor.superclass.onRender.call(this,B,A);this.el.dom.style.border="0 none";this.el.dom.setAttribute("tabIndex",-1);this.el.addClass("x-hidden");if(Ext.isIE){this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;")}this.wrap=this.el.wrap({cls:"x-html-editor-wrap",cn:{cls:"x-html-editor-tb"}});this.createToolbar(this);this.tb.items.each(function(E){if(E.itemId!="sourceedit"){E.disable()}});var C=document.createElement("iframe");C.name=Ext.id();C.frameBorder="0";C.src=Ext.isIE?Ext.SSL_SECURE_URL:"javascript:;";this.wrap.dom.appendChild(C);this.iframe=C;this.initFrame();if(this.autoMonitorDesignMode!==false){this.monitorTask=Ext.TaskMgr.start({run:this.checkDesignMode,scope:this,interval:100})}if(!this.width){var D=this.el.getSize();this.setSize(D.width,this.height||D.height)}},initFrame:function(){this.doc=this.getDoc();this.win=this.getWin();this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var A={run:function(){if(this.doc.body||this.doc.readyState=="complete"){Ext.TaskMgr.stop(A);this.doc.designMode="on";this.initEditor.defer(10,this)}},interval:10,duration:10000,scope:this};Ext.TaskMgr.start(A)},checkDesignMode:function(){if(this.wrap&&this.wrap.dom.offsetWidth){var A=this.getDoc();if(!A){return }if(!A.editorInitialized||String(A.designMode).toLowerCase()!="on"){this.initFrame()}}},onResize:function(B,C){Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(typeof B=="number"){var D=B-this.wrap.getFrameWidth("lr");this.el.setWidth(this.adjustWidth("textarea",D));this.iframe.style.width=D+"px"}if(typeof C=="number"){var A=C-this.wrap.getFrameWidth("tb")-this.tb.el.getHeight();this.el.setHeight(this.adjustWidth("textarea",A));this.iframe.style.height=A+"px";if(this.doc){this.getEditorBody().style.height=(A-(this.iframePad*2))+"px"}}}},toggleSourceEdit:function(A){if(A===undefined){A=!this.sourceEditMode}this.sourceEditMode=A===true;var C=this.tb.items.get("sourceedit");if(C.pressed!==this.sourceEditMode){C.toggle(this.sourceEditMode);return }if(this.sourceEditMode){this.tb.items.each(function(D){if(D.itemId!="sourceedit"){D.disable()}});this.syncValue();this.iframe.className="x-hidden";this.el.removeClass("x-hidden");this.el.dom.removeAttribute("tabIndex");this.el.focus()}else{if(this.initialized){this.tb.items.each(function(D){D.enable()})}this.pushValue();this.iframe.className="";this.el.addClass("x-hidden");this.el.dom.setAttribute("tabIndex",-1);this.deferFocus()}var B=this.lastSize;if(B){delete this.lastSize;this.setSize(B)}this.fireEvent("editmodechange",this,this.sourceEditMode)},createLink:function(){var A=prompt(this.createLinkText,this.defaultLinkValue);if(A&&A!="http:/"+"/"){this.relayCmd("createlink",A)}},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},initEvents:function(){this.originalValue=this.getValue()},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,setValue:function(A){Ext.form.HtmlEditor.superclass.setValue.call(this,A);this.pushValue()},cleanHtml:function(A){A=String(A);if(A.length>5){if(Ext.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")}}if(A=="&nbsp;"){A=""}return A},syncValue:function(){if(this.initialized){var D=this.getEditorBody();var C=D.innerHTML;if(Ext.isSafari){var B=D.getAttribute("style");var A=B.match(/text-align:(.*?);/i);if(A&&A[1]){C="<div style=\""+A[0]+"\">"+C+"</div>"}}C=this.cleanHtml(C);if(this.fireEvent("beforesync",this,C)!==false){this.el.dom.value=C;this.fireEvent("sync",this,C)}}},pushValue:function(){if(this.initialized){var A=this.el.dom.value;if(!this.activated&&A.length<1){A="&nbsp;"}if(this.fireEvent("beforepush",this,A)!==false){this.getEditorBody().innerHTML=A;this.fireEvent("push",this,A)}}},deferFocus:function(){this.focus.defer(10,this)},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus()}else{this.el.focus()}},initEditor:function(){var B=this.getEditorBody();var A=this.el.getStyles("font-size","font-family","background-image","background-repeat");A["background-attachment"]="fixed";B.bgProperties="fixed";Ext.DomHelper.applyStyles(B,A);if(this.doc){try{Ext.EventManager.removeAll(this.doc)}catch(C){}}this.doc=this.getDoc();Ext.EventManager.on(this.doc,{"mousedown":this.onEditorEvent,"dblclick":this.onEditorEvent,"click":this.onEditorEvent,"keyup":this.onEditorEvent,buffer:100,scope:this});if(Ext.isGecko){Ext.EventManager.on(this.doc,"keypress",this.applyCommand,this)}if(Ext.isIE||Ext.isSafari||Ext.isOpera){Ext.EventManager.on(this.doc,"keydown",this.fixKeys,this)}this.initialized=true;this.fireEvent("initialize",this);this.doc.editorInitialized=true;this.pushValue()},onDestroy:function(){if(this.monitorTask){Ext.TaskMgr.stop(this.monitorTask)}if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();if(A.menu.el){A.menu.el.destroy()}}A.destroy()});this.wrap.dom.innerHTML="";this.wrap.remove()}},onFirstFocus:function(){this.activated=true;this.tb.items.each(function(D){D.enable()});if(Ext.isGecko){this.win.focus();var A=this.win.getSelection();if(!A.focusNode||A.focusNode.nodeType!=3){var B=A.getRangeAt(0);B.selectNodeContents(this.getEditorBody());B.collapse(true);this.deferFocus()}try{this.execCmd("useCSS",true);this.execCmd("styleWithCSS",false)}catch(C){}}this.fireEvent("activate",this)},adjustFont:function(B){var C=B.itemId=="increasefontsize"?1:-1;var A=parseInt(this.doc.queryCommandValue("FontSize")||2,10);if(Ext.isSafari3||Ext.isAir){if(A<=10){A=1+C}else{if(A<=13){A=2+C}else{if(A<=16){A=3+C}else{if(A<=18){A=4+C}else{if(A<=24){A=5+C}else{A=6+C}}}}}A=A.constrain(1,6)}else{if(Ext.isSafari){C*=2}A=Math.max(1,A+C)+(Ext.isSafari?"px":0)}this.execCmd("FontSize",A)},onEditorEvent:function(A){this.updateToolbar()},updateToolbar:function(){if(!this.activated){this.onFirstFocus();return }var B=this.tb.items.map,C=this.doc;if(this.enableFont&&!Ext.isSafari2){var A=(this.doc.queryCommandValue("FontName")||this.defaultFont).toLowerCase();if(A!=this.fontSelect.dom.value){this.fontSelect.dom.value=A}}if(this.enableFormat){B.bold.toggle(C.queryCommandState("bold"));B.italic.toggle(C.queryCommandState("italic"));B.underline.toggle(C.queryCommandState("underline"))}if(this.enableAlignments){B.justifyleft.toggle(C.queryCommandState("justifyleft"));B.justifycenter.toggle(C.queryCommandState("justifycenter"));B.justifyright.toggle(C.queryCommandState("justifyright"))}if(!Ext.isSafari2&&this.enableLists){B.insertorderedlist.toggle(C.queryCommandState("insertorderedlist"));B.insertunorderedlist.toggle(C.queryCommandState("insertunorderedlist"))}Ext.menu.MenuMgr.hideAll();this.syncValue()},relayBtnCmd:function(A){this.relayCmd(A.itemId)},relayCmd:function(B,A){(function(){this.focus();this.execCmd(B,A);this.updateToolbar()}).defer(10,this)},execCmd:function(B,A){this.doc.execCommand(B,false,A===undefined?null:A);this.syncValue()},applyCommand:function(B){if(B.ctrlKey){var C=B.getCharCode(),A;if(C>0){C=String.fromCharCode(C);switch(C){case"b":A="bold";break;case"i":A="italic";break;case"u":A="underline";break}if(A){this.win.focus();this.execCmd(A);this.deferFocus();B.preventDefault()}}}},insertAtCursor:function(B){if(!this.activated){return }if(Ext.isIE){this.win.focus();var A=this.doc.selection.createRange();if(A){A.collapse(true);A.pasteHTML(B);this.syncValue();this.deferFocus()}}else{if(Ext.isGecko||Ext.isOpera){this.win.focus();this.execCmd("InsertHTML",B);this.deferFocus()}else{if(Ext.isSafari){this.execCmd("InsertText",B);this.deferFocus()}}}},fixKeys:function(){if(Ext.isIE){return function(D){var A=D.getKey(),B;if(A==D.TAB){D.stopEvent();B=this.doc.selection.createRange();if(B){B.collapse(true);B.pasteHTML("&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}else{if(A==D.ENTER){B=this.doc.selection.createRange();if(B){var C=B.parentElement();if(!C||C.tagName.toLowerCase()!="li"){D.stopEvent();B.pasteHTML("<br />");B.collapse(false);B.select()}}}}}}else{if(Ext.isOpera){return function(B){var A=B.getKey();if(A==B.TAB){B.stopEvent();this.win.focus();this.execCmd("InsertHTML","&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}}else{if(Ext.isSafari){return function(B){var A=B.getKey();if(A==B.TAB){B.stopEvent();this.execCmd("InsertText","\t");this.deferFocus()}}}}}}(),getToolbar:function(){return this.tb},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:"x-html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:"x-html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:"x-html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:"x-html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:"x-html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:"x-html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:"x-html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:"x-html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:"x-html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:"x-html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:"x-html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:"x-html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:"x-html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:"x-html-editor-tip"}}});Ext.reg("htmleditor",Ext.form.HtmlEditor);
+Ext.form.TimeField=Ext.extend(Ext.form.ComboBox,{minValue:null,maxValue:null,minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H",increment:15,mode:"local",triggerAction:"all",typeAhead:false,initDate:"1/1/2008",initComponent:function(){Ext.form.TimeField.superclass.initComponent.call(this);if(typeof this.minValue=="string"){this.minValue=this.parseDate(this.minValue)}if(typeof this.maxValue=="string"){this.maxValue=this.parseDate(this.maxValue)}if(!this.store){var B=this.parseDate(this.minValue);if(!B){B=new Date(this.initDate).clearTime()}var A=this.parseDate(this.maxValue);if(!A){A=new Date(this.initDate).clearTime().add("mi",(24*60)-1)}var C=[];while(B<=A){C.push([B.dateFormat(this.format)]);B=B.add("mi",this.increment)}this.store=new Ext.data.SimpleStore({fields:["text"],data:C});this.displayField="text"}},getValue:function(){var A=Ext.form.TimeField.superclass.getValue.call(this);return this.formatDate(this.parseDate(A))||""},setValue:function(A){Ext.form.TimeField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)))},validateValue:Ext.form.DateField.prototype.validateValue,parseDate:Ext.form.DateField.prototype.parseDate,formatDate:Ext.form.DateField.prototype.formatDate,beforeBlur:function(){var A=this.parseDate(this.getRawValue());if(A){this.setValue(A.dateFormat(this.format))}}});Ext.reg("timefield",Ext.form.TimeField);
+Ext.form.Label=Ext.extend(Ext.BoxComponent,{onRender:function(B,A){if(!this.el){this.el=document.createElement("label");this.el.id=this.getId();this.el.innerHTML=this.text?Ext.util.Format.htmlEncode(this.text):(this.html||"");if(this.forId){this.el.setAttribute("htmlFor",this.forId)}}Ext.form.Label.superclass.onRender.call(this,B,A)},setText:function(A,B){this.text=A;if(this.rendered){this.el.dom.innerHTML=B!==false?Ext.util.Format.htmlEncode(A):A}return this}});Ext.reg("label",Ext.form.Label);
+Ext.form.Action=function(B,A){this.form=B;this.options=A||{}};Ext.form.Action.CLIENT_INVALID="client";Ext.form.Action.SERVER_INVALID="server";Ext.form.Action.CONNECT_FAILURE="connect";Ext.form.Action.LOAD_FAILURE="load";Ext.form.Action.prototype={type:"default",run:function(A){},success:function(A){},handleResponse:function(A){},failure:function(A){this.response=A;this.failureType=Ext.form.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(A){this.response=A;if(!A.responseText){return true}this.result=this.handleResponse(A);return this.result},getUrl:function(C){var A=this.options.url||this.form.url||this.form.el.dom.action;if(C){var B=this.getParams();if(B){A+=(A.indexOf("?")!=-1?"&":"?")+B}}return A},getMethod:function(){return(this.options.method||this.form.method||this.form.el.dom.method||"POST").toUpperCase()},getParams:function(){var A=this.form.baseParams;var B=this.options.params;if(B){if(typeof B=="object"){B=Ext.urlEncode(Ext.applyIf(B,A))}else{if(typeof B=="string"&&A){B+="&"+Ext.urlEncode(A)}}}else{if(A){B=Ext.urlEncode(A)}}return B},createCallback:function(A){var A=A||{};return{success:this.success,failure:this.failure,scope:this,timeout:(A.timeout*1000)||(this.form.timeout*1000),upload:this.form.fileUpload?this.success:undefined}}};Ext.form.Action.Submit=function(B,A){Ext.form.Action.Submit.superclass.constructor.call(this,B,A)};Ext.extend(Ext.form.Action.Submit,Ext.form.Action,{type:"submit",run:function(){var B=this.options;var C=this.getMethod();var A=C=="GET";if(B.clientValidation===false||this.form.isValid()){Ext.Ajax.request(Ext.apply(this.createCallback(B),{form:this.form.el.dom,url:this.getUrl(A),method:C,headers:B.headers,params:!A?this.getParams():null,isUpload:this.form.fileUpload}))}else{if(B.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false)}}},success:function(B){var A=this.processResponse(B);if(A===true||A.success){this.form.afterAction(this,true);return }if(A.errors){this.form.markInvalid(A.errors);this.failureType=Ext.form.Action.SERVER_INVALID}this.form.afterAction(this,false)},handleResponse:function(C){if(this.form.errorReader){var B=this.form.errorReader.read(C);var F=[];if(B.records){for(var D=0,A=B.records.length;D<A;D++){var E=B.records[D];F[D]=E.data}}if(F.length<1){F=null}return{success:B.success,errors:F}}return Ext.decode(C.responseText)}});Ext.form.Action.Load=function(B,A){Ext.form.Action.Load.superclass.constructor.call(this,B,A);this.reader=this.form.reader};Ext.extend(Ext.form.Action.Load,Ext.form.Action,{type:"load",run:function(){Ext.Ajax.request(Ext.apply(this.createCallback(this.options),{method:this.getMethod(),url:this.getUrl(false),headers:this.options.headers,params:this.getParams()}))},success:function(B){var A=this.processResponse(B);if(A===true||!A.success||!A.data){this.failureType=Ext.form.Action.LOAD_FAILURE;this.form.afterAction(this,false);return }this.form.clearInvalid();this.form.setValues(A.data);this.form.afterAction(this,true)},handleResponse:function(B){if(this.form.reader){var A=this.form.reader.read(B);var C=A.records&&A.records[0]?A.records[0].data:null;return{success:A.success,data:C}}return Ext.decode(B.responseText)}});Ext.form.Action.ACTION_TYPES={"load":Ext.form.Action.Load,"submit":Ext.form.Action.Submit};
+Ext.form.VTypes=function(){var C=/^[a-zA-Z_]+$/;var D=/^[a-zA-Z0-9_]+$/;var B=/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;var A=/(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;return{"email":function(E){return B.test(E)},"emailText":"This field should be an e-mail address in the format \"user@domain.com\"","emailMask":/[a-z0-9_\.\-@]/i,"url":function(E){return A.test(E)},"urlText":"This field should be a URL in the format \"http:/"+"/www.domain.com\"","alpha":function(E){return C.test(E)},"alphaText":"This field should only contain letters and _","alphaMask":/[a-z_]/i,"alphanum":function(E){return D.test(E)},"alphanumText":"This field should only contain letters, numbers and _","alphanumMask":/[a-z0-9_]/i}}();
+Ext.grid.GridPanel=Ext.extend(Ext.Panel,{ddText:"{0} selected row{1}",minColumnWidth:25,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableHdMenu:true,stripeRows:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,deferRowRender:true,rendered:false,viewReady:false,stateEvents:["columnmove","columnresize","sortchange"],initComponent:function(){Ext.grid.GridPanel.superclass.initComponent.call(this);this.autoScroll=false;this.autoWidth=false;if(Ext.isArray(this.columns)){this.colModel=new Ext.grid.ColumnModel(this.columns);delete this.columns}if(this.ds){this.store=this.ds;delete this.ds}if(this.cm){this.colModel=this.cm;delete this.cm}if(this.sm){this.selModel=this.sm;delete this.sm}this.store=Ext.StoreMgr.lookup(this.store);this.addEvents("click","dblclick","contextmenu","mousedown","mouseup","mouseover","mouseout","keypress","keydown","cellmousedown","rowmousedown","headermousedown","cellclick","celldblclick","rowclick","rowdblclick","headerclick","headerdblclick","rowcontextmenu","cellcontextmenu","headercontextmenu","bodyscroll","columnresize","columnmove","sortchange")},onRender:function(C,A){Ext.grid.GridPanel.superclass.onRender.apply(this,arguments);var D=this.body;this.el.addClass("x-grid-panel");var B=this.getView();B.init(this);D.on("mousedown",this.onMouseDown,this);D.on("click",this.onClick,this);D.on("dblclick",this.onDblClick,this);D.on("contextmenu",this.onContextMenu,this);D.on("keydown",this.onKeyDown,this);this.relayEvents(D,["mousedown","mouseup","mouseover","mouseout","keypress"]);this.getSelectionModel().init(this);this.view.render()},initEvents:function(){Ext.grid.GridPanel.superclass.initEvents.call(this);if(this.loadMask){this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({store:this.store},this.loadMask))}},initStateEvents:function(){Ext.grid.GridPanel.superclass.initStateEvents.call(this);this.colModel.on("hiddenchange",this.saveState,this,{delay:100})},applyState:function(F){var B=this.colModel;var E=F.columns;if(E){for(var C=0,A=E.length;C<A;C++){var D=E[C];var H=B.getColumnById(D.id);if(H){H.hidden=D.hidden;H.width=D.width;var G=B.getIndexById(D.id);if(G!=C){B.moveColumn(G,C)}}}}if(F.sort){this.store[this.store.remoteSort?"setDefaultSort":"sort"](F.sort.field,F.sort.direction)}},getState:function(){var C={columns:[]};for(var B=0,D;D=this.colModel.config[B];B++){C.columns[B]={id:D.id,width:D.width};if(D.hidden){C.columns[B].hidden=true}}var A=this.store.getSortState();if(A){C.sort=A}return C},afterRender:function(){Ext.grid.GridPanel.superclass.afterRender.call(this);this.view.layout();if(this.deferRowRender){this.view.afterRender.defer(10,this.view)}else{this.view.afterRender()}this.viewReady=true},reconfigure:function(A,B){if(this.loadMask){this.loadMask.destroy();this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({store:A},this.initialConfig.loadMask))}this.view.bind(A,B);this.store=A;this.colModel=B;if(this.rendered){this.view.refresh(true)}},onKeyDown:function(A){this.fireEvent("keydown",A)},onDestroy:function(){if(this.rendered){if(this.loadMask){this.loadMask.destroy()}var A=this.body;A.removeAllListeners();this.view.destroy();A.update("")}this.colModel.purgeListeners();Ext.grid.GridPanel.superclass.onDestroy.call(this)},processEvent:function(C,E){this.fireEvent(C,E);var D=E.getTarget();var B=this.view;var G=B.findHeaderIndex(D);if(G!==false){this.fireEvent("header"+C,this,G,E)}else{var F=B.findRowIndex(D);var A=B.findCellIndex(D);if(F!==false){this.fireEvent("row"+C,this,F,E);if(A!==false){this.fireEvent("cell"+C,this,F,A,E)}}}},onClick:function(A){this.processEvent("click",A)},onMouseDown:function(A){this.processEvent("mousedown",A)},onContextMenu:function(B,A){this.processEvent("contextmenu",B)},onDblClick:function(A){this.processEvent("dblclick",A)},walkCells:function(J,C,B,E,I){var H=this.colModel,F=H.getColumnCount();var A=this.store,G=A.getCount(),D=true;if(B<0){if(C<0){J--;D=false}while(J>=0){if(!D){C=F-1}D=false;while(C>=0){if(E.call(I||this,J,C,H)===true){return[J,C]}C--}J--}}else{if(C>=F){J++;D=false}while(J<G){if(!D){C=0}D=false;while(C<F){if(E.call(I||this,J,C,H)===true){return[J,C]}C++}J++}}return null},getSelections:function(){return this.selModel.getSelections()},onResize:function(){Ext.grid.GridPanel.superclass.onResize.apply(this,arguments);if(this.viewReady){this.view.layout()}},getGridEl:function(){return this.body},stopEditing:function(){},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.grid.RowSelectionModel(this.disableSelection?{selectRow:Ext.emptyFn}:null)}return this.selModel},getStore:function(){return this.store},getColumnModel:function(){return this.colModel},getView:function(){if(!this.view){this.view=new Ext.grid.GridView(this.viewConfig)}return this.view},getDragDropText:function(){var A=this.selModel.getCount();return String.format(this.ddText,A,A==1?"":"s")}});Ext.reg("grid",Ext.grid.GridPanel);
+Ext.grid.GridView=function(A){Ext.apply(this,A);this.addEvents("beforerowremoved","beforerowsinserted","beforerefresh","rowremoved","rowsinserted","rowupdated","refresh");Ext.grid.GridView.superclass.constructor.call(this)};Ext.extend(Ext.grid.GridView,Ext.util.Observable,{deferEmptyText:true,scrollOffset:19,autoFill:false,forceFit:false,sortClasses:["sort-asc","sort-desc"],sortAscText:"Sort Ascending",sortDescText:"Sort Descending",columnsText:"Columns",borderWidth:2,tdClass:"x-grid3-cell",hdCls:"x-grid3-hd",cellSelectorDepth:4,rowSelectorDepth:10,cellSelector:"td.x-grid3-cell",rowSelector:"div.x-grid3-row",initTemplates:function(){var C=this.templates||{};if(!C.master){C.master=new Ext.Template("<div class=\"x-grid3\" hidefocus=\"true\">","<div class=\"x-grid3-viewport\">","<div class=\"x-grid3-header\"><div class=\"x-grid3-header-inner\"><div class=\"x-grid3-header-offset\">{header}</div></div><div class=\"x-clear\"></div></div>","<div class=\"x-grid3-scroller\"><div class=\"x-grid3-body\">{body}</div><a href=\"#\" class=\"x-grid3-focus\" tabIndex=\"-1\"></a></div>","</div>","<div class=\"x-grid3-resize-marker\">&#160;</div>","<div class=\"x-grid3-resize-proxy\">&#160;</div>","</div>")}if(!C.header){C.header=new Ext.Template("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"{tstyle}\">","<thead><tr class=\"x-grid3-hd-row\">{cells}</tr></thead>","</table>")}if(!C.hcell){C.hcell=new Ext.Template("<td class=\"x-grid3-hd x-grid3-cell x-grid3-td-{id}\" style=\"{style}\"><div {tooltip} {attr} class=\"x-grid3-hd-inner x-grid3-hd-{id}\" unselectable=\"on\" style=\"{istyle}\">",this.grid.enableHdMenu?"<a class=\"x-grid3-hd-btn\" href=\"#\"></a>":"","{value}<img class=\"x-grid3-sort-icon\" src=\"",Ext.BLANK_IMAGE_URL,"\" />","</div></td>")}if(!C.body){C.body=new Ext.Template("{rows}")}if(!C.row){C.row=new Ext.Template("<div class=\"x-grid3-row {alt}\" style=\"{tstyle}\"><table class=\"x-grid3-row-table\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"{tstyle}\">","<tbody><tr>{cells}</tr>",(this.enableRowBody?"<tr class=\"x-grid3-row-body-tr\" style=\"{bodyStyle}\"><td colspan=\"{cols}\" class=\"x-grid3-body-cell\" tabIndex=\"0\" hidefocus=\"on\"><div class=\"x-grid3-row-body\">{body}</div></td></tr>":""),"</tbody></table></div>")}if(!C.cell){C.cell=new Ext.Template("<td class=\"x-grid3-col x-grid3-cell x-grid3-td-{id} {css}\" style=\"{style}\" tabIndex=\"0\" {cellAttr}>","<div class=\"x-grid3-cell-inner x-grid3-col-{id}\" unselectable=\"on\" {attr}>{value}</div>","</td>")}for(var A in C){var B=C[A];if(B&&typeof B.compile=="function"&&!B.compiled){B.disableFormats=true;B.compile()}}this.templates=C;this.colRe=new RegExp("x-grid3-td-([^\\s]+)","")},fly:function(A){if(!this._flyweight){this._flyweight=new Ext.Element.Flyweight(document.body)}this._flyweight.dom=A;return this._flyweight},getEditorParent:function(A){return this.scroller.dom},initElements:function(){var C=Ext.Element;var B=this.grid.getGridEl().dom.firstChild;var A=B.childNodes;this.el=new C(B);this.mainWrap=new C(A[0]);this.mainHd=new C(this.mainWrap.dom.firstChild);if(this.grid.hideHeaders){this.mainHd.setDisplayed(false)}this.innerHd=this.mainHd.dom.firstChild;this.scroller=new C(this.mainWrap.dom.childNodes[1]);if(this.forceFit){this.scroller.setStyle("overflow-x","hidden")}this.mainBody=new C(this.scroller.dom.firstChild);this.focusEl=new C(this.scroller.dom.childNodes[1]);this.focusEl.swallowEvent("click",true);this.resizeMarker=new C(A[1]);this.resizeProxy=new C(A[2])},getRows:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},findCell:function(A){if(!A){return false}return this.fly(A).findParent(this.cellSelector,this.cellSelectorDepth)},findCellIndex:function(C,B){var A=this.findCell(C);if(A&&(!B||this.fly(A).hasClass(B))){return this.getCellIndex(A)}return false},getCellIndex:function(B){if(B){var A=B.className.match(this.colRe);if(A&&A[1]){return this.cm.getIndexById(A[1])}}return false},findHeaderCell:function(B){var A=this.findCell(B);return A&&this.fly(A).hasClass(this.hdCls)?A:null},findHeaderIndex:function(A){return this.findCellIndex(A,this.hdCls)},findRow:function(A){if(!A){return false}return this.fly(A).findParent(this.rowSelector,this.rowSelectorDepth)},findRowIndex:function(A){var B=this.findRow(A);return B?B.rowIndex:false},getRow:function(A){return this.getRows()[A]},getCell:function(B,A){return this.getRow(B).getElementsByTagName("td")[A]},getHeaderCell:function(A){return this.mainHd.dom.getElementsByTagName("td")[A]},addRowClass:function(C,A){var B=this.getRow(C);if(B){this.fly(B).addClass(A)}},removeRowClass:function(C,A){var B=this.getRow(C);if(B){this.fly(B).removeClass(A)}},removeRow:function(A){Ext.removeNode(this.getRow(A));this.focusRow(A)},removeRows:function(C,A){var B=this.mainBody.dom;for(var D=C;D<=A;D++){Ext.removeNode(B.childNodes[C])}this.focusRow(C)},getScrollState:function(){var A=this.scroller.dom;return{left:A.scrollLeft,top:A.scrollTop}},restoreScroll:function(A){var B=this.scroller.dom;B.scrollLeft=A.left;B.scrollTop=A.top},scrollToTop:function(){this.scroller.dom.scrollTop=0;this.scroller.dom.scrollLeft=0},syncScroll:function(){this.syncHeaderScroll();var A=this.scroller.dom;this.grid.fireEvent("bodyscroll",A.scrollLeft,A.scrollTop)},syncHeaderScroll:function(){var A=this.scroller.dom;this.innerHd.scrollLeft=A.scrollLeft;this.innerHd.scrollLeft=A.scrollLeft},updateSortIcon:function(B,A){var D=this.sortClasses;var C=this.mainHd.select("td").removeClass(D);C.item(B).addClass(D[A=="DESC"?1:0])},updateAllColumnWidths:function(){var D=this.getTotalWidth();var H=this.cm.getColumnCount();var F=[];for(var B=0;B<H;B++){F[B]=this.getColumnWidth(B)}this.innerHd.firstChild.firstChild.style.width=D;for(var B=0;B<H;B++){var C=this.getHeaderCell(B);C.style.width=F[B]}var G=this.getRows();for(var B=0,E=G.length;B<E;B++){G[B].style.width=D;G[B].firstChild.style.width=D;var I=G[B].firstChild.rows[0];for(var A=0;A<H;A++){I.childNodes[A].style.width=F[A]}}this.onAllColumnWidthsUpdated(F,D)},updateColumnWidth:function(D,G){var B=this.getColumnWidth(D);var C=this.getTotalWidth();this.innerHd.firstChild.firstChild.style.width=C;var H=this.getHeaderCell(D);H.style.width=B;var F=this.getRows();for(var E=0,A=F.length;E<A;E++){F[E].style.width=C;F[E].firstChild.style.width=C;F[E].firstChild.rows[0].childNodes[D].style.width=B}this.onColumnWidthUpdated(D,B,C)},updateColumnHidden:function(C,F){var B=this.getTotalWidth();this.innerHd.firstChild.firstChild.style.width=B;var H=F?"none":"";var G=this.getHeaderCell(C);G.style.display=H;var E=this.getRows();for(var D=0,A=E.length;D<A;D++){E[D].style.width=B;E[D].firstChild.style.width=B;E[D].firstChild.rows[0].childNodes[C].style.display=H}this.onColumnHiddenUpdated(C,F,B);delete this.lastViewWidth;this.layout()},doRender:function(E,G,M,A,L,Q){var B=this.templates,D=B.cell,F=B.row,H=L-1;var C="width:"+this.getTotalWidth()+";";var T=[],N,U,O={},I={tstyle:C},K;for(var P=0,S=G.length;P<S;P++){K=G[P];N=[];var J=(P+A);for(var R=0;R<L;R++){U=E[R];O.id=U.id;O.css=R==0?"x-grid3-cell-first ":(R==H?"x-grid3-cell-last ":"");O.attr=O.cellAttr="";O.value=U.renderer(K.data[U.name],O,K,J,R,M);O.style=U.style;if(O.value==undefined||O.value===""){O.value="&#160;"}if(K.dirty&&typeof K.modified[U.name]!=="undefined"){O.css+=" x-grid3-dirty-cell"}N[N.length]=D.apply(O)}var V=[];if(Q&&((J+1)%2==0)){V[0]="x-grid3-row-alt"}if(K.dirty){V[1]=" x-grid3-dirty-row"}I.cols=L;if(this.getRowClass){V[2]=this.getRowClass(K,J,I,M)}I.alt=V.join(" ");I.cells=N.join("");T[T.length]=F.apply(I)}return T.join("")},processRows:function(E,D){if(this.ds.getCount()<1){return }D=D||!this.grid.stripeRows;E=E||0;var I=this.getRows();var F=" x-grid3-row-alt ";for(var B=E,C=I.length;B<C;B++){var H=I[B];H.rowIndex=B;if(!D){var A=((B+1)%2==0);var G=(" "+H.className+" ").indexOf(F)!=-1;if(A==G){continue}if(A){H.className+=" x-grid3-row-alt"}else{H.className=H.className.replace("x-grid3-row-alt","")}}}},afterRender:function(){this.mainBody.dom.innerHTML=this.renderRows();this.processRows(0,true);if(this.deferEmptyText!==true){this.applyEmptyText()}},renderUI:function(){var D=this.renderHeaders();var A=this.templates.body.apply({rows:""});var B=this.templates.master.apply({body:A,header:D});var C=this.grid;C.getGridEl().dom.innerHTML=B;this.initElements();Ext.fly(this.innerHd).on("click",this.handleHdDown,this);this.mainHd.on("mouseover",this.handleHdOver,this);this.mainHd.on("mouseout",this.handleHdOut,this);this.mainHd.on("mousemove",this.handleHdMove,this);this.scroller.on("scroll",this.syncScroll,this);if(C.enableColumnResize!==false){this.splitone=new Ext.grid.GridView.SplitDragZone(C,this.mainHd.dom)}if(C.enableColumnMove){this.columnDrag=new Ext.grid.GridView.ColumnDragZone(C,this.innerHd);this.columnDrop=new Ext.grid.HeaderDropZone(C,this.mainHd.dom)}if(C.enableHdMenu!==false){if(C.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:C.id+"-hcols-menu"});this.colMenu.on("beforeshow",this.beforeColMenuShow,this);this.colMenu.on("itemclick",this.handleHdMenuClick,this)}this.hmenu=new Ext.menu.Menu({id:C.id+"-hctx"});this.hmenu.add({id:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{id:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});if(C.enableColumnHide!==false){this.hmenu.add("-",{id:"columns",text:this.columnsText,menu:this.colMenu,iconCls:"x-cols-icon"})}this.hmenu.on("itemclick",this.handleHdMenuClick,this)}if(C.enableDragDrop||C.enableDrag){this.dragZone=new Ext.grid.GridDragZone(C,{ddGroup:C.ddGroup||"GridDD"})}this.updateHeaderSortState()},layout:function(){if(!this.mainBody){return }var C=this.grid;var F=C.getGridEl();var A=F.getSize(true);var B=A.width;if(B<20||A.height<20){return }if(C.autoHeight){this.scroller.dom.style.overflow="visible"}else{this.el.setSize(A.width,A.height);var E=this.mainHd.getHeight();var D=A.height-(E);this.scroller.setSize(B,D);if(this.innerHd){this.innerHd.style.width=(B)+"px"}}if(this.forceFit){if(this.lastViewWidth!=B){this.fitColumns(false,false);this.lastViewWidth=B}}else{this.autoExpand();this.syncHeaderScroll()}this.onLayout(B,D)},onLayout:function(A,B){},onColumnWidthUpdated:function(C,A,B){},onAllColumnWidthsUpdated:function(A,B){},onColumnHiddenUpdated:function(B,C,A){},updateColumnText:function(A,B){},afterMove:function(A){},init:function(A){this.grid=A;this.initTemplates();this.initData(A.store,A.colModel);this.initUI(A)},getColumnId:function(A){return this.cm.getColumnId(A)},renderHeaders:function(){var C=this.cm,F=this.templates;var E=F.hcell;var B=[],H=[],G={};for(var D=0,A=C.getColumnCount();D<A;D++){G.id=C.getColumnId(D);G.value=C.getColumnHeader(D)||"";G.style=this.getColumnStyle(D,true);G.tooltip=this.getColumnTooltip(D);if(C.config[D].align=="right"){G.istyle="padding-right:16px"}else{delete G.istyle}B[B.length]=E.apply(G)}return F.header.apply({cells:B.join(""),tstyle:"width:"+this.getTotalWidth()+";"})},getColumnTooltip:function(A){var B=this.cm.getColumnTooltip(A);if(B){if(Ext.QuickTips.isEnabled()){return"ext:qtip=\""+B+"\""}else{return"title=\""+B+"\""}}return""},beforeUpdate:function(){this.grid.stopEditing(true)},updateHeaders:function(){this.innerHd.firstChild.innerHTML=this.renderHeaders()},focusRow:function(A){this.focusCell(A,0,false)},focusCell:function(D,A,C){D=Math.min(D,Math.max(0,this.getRows().length-1));var B=this.ensureVisible(D,A,C);this.focusEl.setXY(B||this.scroller.getXY());if(Ext.isGecko){this.focusEl.focus()}else{this.focusEl.focus.defer(1,this.focusEl)}},ensureVisible:function(P,E,D){if(typeof P!="number"){P=P.rowIndex}if(!this.ds){return }if(P<0||P>=this.ds.getCount()){return }E=(E!==undefined?E:0);var I=this.getRow(P),F;if(!(D===false&&E===0)){while(this.cm.isHidden(E)){E++}F=this.getCell(P,E)}if(!I){return }var L=this.scroller.dom;var O=0;var C=I,M=this.el.dom;while(C&&C!=M){O+=C.offsetTop;C=C.offsetParent}O-=this.mainHd.dom.offsetHeight;var N=O+I.offsetHeight;var A=L.clientHeight;var M=parseInt(L.scrollTop,10);var K=M+A;if(O<M){L.scrollTop=O}else{if(N>K){L.scrollTop=N-A}}if(D!==false){var J=parseInt(F.offsetLeft,10);var H=J+F.offsetWidth;var G=parseInt(L.scrollLeft,10);var B=G+L.clientWidth;if(J<G){L.scrollLeft=J}else{if(H>B){L.scrollLeft=H-L.clientWidth}}}return F?Ext.fly(F).getXY():[L.scrollLeft+this.el.getX(),Ext.fly(I).getY()]},insertRows:function(A,F,C,E){if(!E&&F===0&&C>=A.getCount()-1){this.refresh()}else{if(!E){this.fireEvent("beforerowsinserted",this,F,C)}var B=this.renderRows(F,C);var D=this.getRow(F);if(D){Ext.DomHelper.insertHtml("beforeBegin",D,B)}else{Ext.DomHelper.insertHtml("beforeEnd",this.mainBody.dom,B)}if(!E){this.fireEvent("rowsinserted",this,F,C);this.processRows(F)}}this.focusRow(F)},deleteRows:function(A,C,B){if(A.getRowCount()<1){this.refresh()}else{this.fireEvent("beforerowsdeleted",this,C,B);this.removeRows(C,B);this.processRows(C);this.fireEvent("rowsdeleted",this,C,B)}},getColumnStyle:function(A,C){var B=!C?(this.cm.config[A].css||""):"";B+="width:"+this.getColumnWidth(A)+";";if(this.cm.isHidden(A)){B+="display:none;"}var D=this.cm.config[A].align;if(D){B+="text-align:"+D+";"}return B},getColumnWidth:function(B){var A=this.cm.getColumnWidth(B);if(typeof A=="number"){return(Ext.isBorderBox?A:(A-this.borderWidth>0?A-this.borderWidth:0))+"px"}return A},getTotalWidth:function(){return this.cm.getTotalWidth()+"px"},fitColumns:function(D,G,E){var F=this.cm,S,L,O;var R=F.getTotalWidth(false);var J=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(J<20){return }var B=J-R;if(B===0){return false}var A=F.getColumnCount(true);var P=A-(typeof E=="number"?1:0);if(P===0){P=1;E=undefined}var K=F.getColumnCount();var I=[];var N=0;var M=0;var H;for(O=0;O<K;O++){if(!F.isHidden(O)&&!F.isFixed(O)&&O!==E){H=F.getColumnWidth(O);I.push(O);N=O;I.push(H);M+=H}}var C=(J-F.getTotalWidth())/M;while(I.length){H=I.pop();O=I.pop();F.setColumnWidth(O,Math.max(this.grid.minColumnWidth,Math.floor(H+H*C)),true)}if((R=F.getTotalWidth(false))>J){var Q=P!=A?E:N;F.setColumnWidth(Q,Math.max(1,F.getColumnWidth(Q)-(R-J)),true)}if(D!==true){this.updateAllColumnWidths()}return true},autoExpand:function(B){var G=this.grid,A=this.cm;if(!this.userResized&&G.autoExpandColumn){var D=A.getTotalWidth(false);var H=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(D!=H){var F=A.getIndexById(G.autoExpandColumn);var E=A.getColumnWidth(F);var C=Math.min(Math.max(((H-D)+E),G.autoExpandMin),G.autoExpandMax);if(C!=E){A.setColumnWidth(F,C,true);if(B!==true){this.updateColumnWidth(F,C)}}}}},getColumnData:function(){var D=[],A=this.cm,E=A.getColumnCount();for(var C=0;C<E;C++){var B=A.getDataIndex(C);D[C]={name:(typeof B=="undefined"?this.ds.fields.get(C).name:B),renderer:A.getRenderer(C),id:A.getColumnId(C),style:this.getColumnStyle(C)}}return D},renderRows:function(H,C){var D=this.grid,F=D.colModel,A=D.store,I=D.stripeRows;var G=F.getColumnCount();if(A.getCount()<1){return""}var E=this.getColumnData();H=H||0;C=typeof C=="undefined"?A.getCount()-1:C;var B=A.getRange(H,C);return this.doRender(E,B,A,H,G,I)},renderBody:function(){var A=this.renderRows();return this.templates.body.apply({rows:A})},refreshRow:function(B){var D=this.ds,C;if(typeof B=="number"){C=B;B=D.getAt(C)}else{C=D.indexOf(B)}var A=[];this.insertRows(D,C,C,true);this.getRow(C).rowIndex=C;this.onRemove(D,B,C+1,true);this.fireEvent("rowupdated",this,C,B)},refresh:function(B){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var A=this.renderBody();this.mainBody.update(A);if(B===true){this.updateHeaders();this.updateHeaderSortState()}this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this)},applyEmptyText:function(){if(this.emptyText&&!this.hasRows()){this.mainBody.update("<div class=\"x-grid-empty\">"+this.emptyText+"</div>")}},updateHeaderSortState:function(){var B=this.ds.getSortState();if(!B){return }if(!this.sortState||(this.sortState.field!=B.field||this.sortState.direction!=B.direction)){this.grid.fireEvent("sortchange",this.grid,B)}this.sortState=B;var C=this.cm.findColumnIndex(B.field);if(C!=-1){var A=B.direction;this.updateSortIcon(C,A)}},destroy:function(){if(this.colMenu){this.colMenu.removeAll();Ext.menu.MenuMgr.unregister(this.colMenu);this.colMenu.getEl().remove();delete this.colMenu}if(this.hmenu){this.hmenu.removeAll();Ext.menu.MenuMgr.unregister(this.hmenu);this.hmenu.getEl().remove();delete this.hmenu}if(this.grid.enableColumnMove){var C=Ext.dd.DDM.ids["gridHeader"+this.grid.getGridEl().id];if(C){for(var A in C){if(!C[A].config.isTarget&&C[A].dragElId){var B=C[A].dragElId;C[A].unreg();Ext.get(B).remove()}else{if(C[A].config.isTarget){C[A].proxyTop.remove();C[A].proxyBottom.remove();C[A].unreg()}}if(Ext.dd.DDM.locationCache[A]){delete Ext.dd.DDM.locationCache[A]}}delete Ext.dd.DDM.ids["gridHeader"+this.grid.getGridEl().id]}}Ext.destroy(this.resizeMarker,this.resizeProxy);if(this.dragZone){this.dragZone.unreg()}this.initData(null,null);Ext.EventManager.removeResizeListener(this.onWindowResize,this)},onDenyColumnHide:function(){},render:function(){if(this.autoFill){this.fitColumns(true,true)}else{if(this.forceFit){this.fitColumns(true,false)}else{if(this.grid.autoExpandColumn){this.autoExpand(true)}}}this.renderUI()},initData:function(B,A){if(this.ds){this.ds.un("load",this.onLoad,this);this.ds.un("datachanged",this.onDataChange,this);this.ds.un("add",this.onAdd,this);this.ds.un("remove",this.onRemove,this);this.ds.un("update",this.onUpdate,this);this.ds.un("clear",this.onClear,this)}if(B){B.on("load",this.onLoad,this);B.on("datachanged",this.onDataChange,this);B.on("add",this.onAdd,this);B.on("remove",this.onRemove,this);B.on("update",this.onUpdate,this);B.on("clear",this.onClear,this)}this.ds=B;if(this.cm){this.cm.un("configchange",this.onColConfigChange,this);this.cm.un("widthchange",this.onColWidthChange,this);this.cm.un("headerchange",this.onHeaderChange,this);this.cm.un("hiddenchange",this.onHiddenChange,this);this.cm.un("columnmoved",this.onColumnMove,this);this.cm.un("columnlockchange",this.onColumnLock,this)}if(A){delete this.lastViewWidth;A.on("configchange",this.onColConfigChange,this);A.on("widthchange",this.onColWidthChange,this);A.on("headerchange",this.onHeaderChange,this);A.on("hiddenchange",this.onHiddenChange,this);A.on("columnmoved",this.onColumnMove,this);A.on("columnlockchange",this.onColumnLock,this)}this.cm=A},onDataChange:function(){this.refresh();this.updateHeaderSortState()},onClear:function(){this.refresh()},onUpdate:function(B,A){this.refreshRow(A)},onAdd:function(C,A,B){this.insertRows(C,B,B+(A.length-1))},onRemove:function(D,A,B,C){if(C!==true){this.fireEvent("beforerowremoved",this,B,A)}this.removeRow(B);if(C!==true){this.processRows(B);this.applyEmptyText();this.fireEvent("rowremoved",this,B,A)}},onLoad:function(){this.scrollToTop()},onColWidthChange:function(A,B,C){this.updateColumnWidth(B,C)},onHeaderChange:function(A,B,C){this.updateHeaders()},onHiddenChange:function(A,B,C){this.updateColumnHidden(B,C)},onColumnMove:function(A,D,B){this.indexMap=null;var C=this.getScrollState();this.refresh(true);this.restoreScroll(C);this.afterMove(B)},onColConfigChange:function(){delete this.lastViewWidth;this.indexMap=null;this.refresh(true)},initUI:function(A){A.on("headerclick",this.onHeaderClick,this);if(A.trackMouseOver){A.on("mouseover",this.onRowOver,this);A.on("mouseout",this.onRowOut,this)}},initEvents:function(){},onHeaderClick:function(B,A){if(this.headersDisabled||!this.cm.isSortable(A)){return }B.stopEditing(true);B.store.sort(this.cm.getDataIndex(A))},onRowOver:function(B,A){var C;if((C=this.findRowIndex(A))!==false){this.addRowClass(C,"x-grid3-row-over")}},onRowOut:function(B,A){var C;if((C=this.findRowIndex(A))!==false&&C!==this.findRowIndex(B.getRelatedTarget())){this.removeRowClass(C,"x-grid3-row-over")}},handleWheel:function(A){A.stopPropagation()},onRowSelect:function(A){this.addRowClass(A,"x-grid3-row-selected")},onRowDeselect:function(A){this.removeRowClass(A,"x-grid3-row-selected")},onCellSelect:function(C,B){var A=this.getCell(C,B);if(A){this.fly(A).addClass("x-grid3-cell-selected")}},onCellDeselect:function(C,B){var A=this.getCell(C,B);if(A){this.fly(A).removeClass("x-grid3-cell-selected")}},onColumnSplitterMoved:function(C,B){this.userResized=true;var A=this.grid.colModel;A.setColumnWidth(C,B,true);if(this.forceFit){this.fitColumns(true,false,C);this.updateAllColumnWidths()}else{this.updateColumnWidth(C,B)}this.grid.fireEvent("columnresize",C,B)},handleHdMenuClick:function(C){var B=this.hdCtxIndex;var A=this.cm,D=this.ds;switch(C.id){case"asc":D.sort(A.getDataIndex(B),"ASC");break;case"desc":D.sort(A.getDataIndex(B),"DESC");break;default:B=A.getIndexById(C.id.substr(4));if(B!=-1){if(C.checked&&A.getColumnsBy(this.isHideableColumn,this).length<=1){this.onDenyColumnHide();return false}A.setHidden(B,C.checked)}}return true},isHideableColumn:function(A){return !A.hidden&&!A.fixed},beforeColMenuShow:function(){var A=this.cm,C=A.getColumnCount();this.colMenu.removeAll();for(var B=0;B<C;B++){if(A.config[B].fixed!==true&&A.config[B].hideable!==false){this.colMenu.add(new Ext.menu.CheckItem({id:"col-"+A.getColumnId(B),text:A.getColumnHeader(B),checked:!A.isHidden(B),hideOnClick:false,disabled:A.config[B].hideable===false}))}}},handleHdDown:function(F,D){if(Ext.fly(D).hasClass("x-grid3-hd-btn")){F.stopEvent();var E=this.findHeaderCell(D);Ext.fly(E).addClass("x-grid3-hd-menu-open");var C=this.getCellIndex(E);this.hdCtxIndex=C;var B=this.hmenu.items,A=this.cm;B.get("asc").setDisabled(!A.isSortable(C));B.get("desc").setDisabled(!A.isSortable(C));this.hmenu.on("hide",function(){Ext.fly(E).removeClass("x-grid3-hd-menu-open")},this,{single:true});this.hmenu.show(D,"tl-bl?")}},handleHdOver:function(D,A){var C=this.findHeaderCell(A);if(C&&!this.headersDisabled){this.activeHd=C;this.activeHdIndex=this.getCellIndex(C);var B=this.fly(C);this.activeHdRegion=B.getRegion();if(!this.cm.isMenuDisabled(this.activeHdIndex)){B.addClass("x-grid3-hd-over");this.activeHdBtn=B.child(".x-grid3-hd-btn");if(this.activeHdBtn){this.activeHdBtn.dom.style.height=(C.firstChild.offsetHeight-1)+"px"}}}},handleHdMove:function(F,D){if(this.activeHd&&!this.headersDisabled){var B=this.splitHandleWidth||5;var E=this.activeHdRegion;var A=F.getPageX();var C=this.activeHd.style;if(A-E.left<=B&&this.cm.isResizable(this.activeHdIndex-1)){C.cursor=Ext.isAir?"move":Ext.isSafari?"e-resize":"col-resize"}else{if(E.right-A<=(!this.activeHdBtn?B:2)&&this.cm.isResizable(this.activeHdIndex)){C.cursor=Ext.isAir?"move":Ext.isSafari?"w-resize":"col-resize"}else{C.cursor=""}}}},handleHdOut:function(C,A){var B=this.findHeaderCell(A);if(B&&(!Ext.isIE||!C.within(B,true))){this.activeHd=null;this.fly(B).removeClass("x-grid3-hd-over");B.style.cursor=""}},hasRows:function(){var A=this.mainBody.dom.firstChild;return A&&A.className!="x-grid-empty"},bind:function(A,B){this.initData(A,B)}});Ext.grid.GridView.SplitDragZone=function(A,B){this.grid=A;this.view=A.getView();this.marker=this.view.resizeMarker;this.proxy=this.view.resizeProxy;Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this,B,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.scroll=false;this.hw=this.view.splitHandleWidth||5};Ext.extend(Ext.grid.GridView.SplitDragZone,Ext.dd.DDProxy,{b4StartDrag:function(A,E){this.view.headersDisabled=true;var D=this.view.mainWrap.getHeight();this.marker.setHeight(D);this.marker.show();this.marker.alignTo(this.view.getHeaderCell(this.cellIndex),"tl-tl",[-2,0]);this.proxy.setHeight(D);var B=this.cm.getColumnWidth(this.cellIndex);var C=Math.max(B-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(C,1000);this.setYConstraint(0,0);this.minX=A-C;this.maxX=A+1000;this.startPos=A;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,A,E)},handleMouseDown:function(A){var H=this.view.findHeaderCell(A.getTarget());if(H){var K=this.view.fly(H).getXY(),E=K[0],D=K[1];var I=A.getXY(),C=I[0],B=I[1];var G=H.offsetWidth,F=false;if((C-E)<=this.hw){F=-1}else{if((E+G)-C<=this.hw){F=0}}if(F!==false){this.cm=this.grid.colModel;var J=this.view.getCellIndex(H);if(F==-1){if(J+F<0){return }while(this.cm.isHidden(J+F)){--F;if(J+F<0){return }}}this.cellIndex=J+F;this.split=H.dom;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)}}else{if(this.view.columnDrag){this.view.columnDrag.callHandleMouseDown(A)}}}},endDrag:function(D){this.marker.hide();var A=this.view;var B=Math.max(this.minX,D.getPageX());var C=B-this.startPos;A.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+C);setTimeout(function(){A.headersDisabled=false},50)},autoOffset:function(){this.setDelta(0,0)}});
+Ext.grid.GroupingView=Ext.extend(Ext.grid.GridView,{hideGroupedColumn:false,showGroupName:true,startCollapsed:false,enableGrouping:true,enableGroupingMenu:true,enableNoGroups:true,emptyGroupText:"(None)",ignoreAdd:false,groupTextTpl:"{text}",gidSeed:1000,initTemplates:function(){Ext.grid.GroupingView.superclass.initTemplates.call(this);this.state={};var A=this.grid.getSelectionModel();A.on(A.selectRow?"beforerowselect":"beforecellselect",this.onBeforeRowSelect,this);if(!this.startGroup){this.startGroup=new Ext.XTemplate("<div id=\"{groupId}\" class=\"x-grid-group {cls}\">","<div id=\"{groupId}-hd\" class=\"x-grid-group-hd\" style=\"{style}\"><div>",this.groupTextTpl,"</div></div>","<div id=\"{groupId}-bd\" class=\"x-grid-group-body\">")}this.startGroup.compile();this.endGroup="</div></div>"},findGroup:function(A){return Ext.fly(A).up(".x-grid-group",this.mainBody.dom)},getGroups:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},onAdd:function(){if(this.enableGrouping&&!this.ignoreAdd){var A=this.getScrollState();this.refresh();this.restoreScroll(A)}else{if(!this.enableGrouping){Ext.grid.GroupingView.superclass.onAdd.apply(this,arguments)}}},onRemove:function(E,A,B,D){Ext.grid.GroupingView.superclass.onRemove.apply(this,arguments);var C=document.getElementById(A._groupId);if(C&&C.childNodes[1].childNodes.length<1){Ext.removeNode(C)}this.applyEmptyText()},refreshRow:function(A){if(this.ds.getCount()==1){this.refresh()}else{this.isUpdating=true;Ext.grid.GroupingView.superclass.refreshRow.apply(this,arguments);this.isUpdating=false}},beforeMenuShow:function(){var C=this.getGroupField();var B=this.hmenu.items.get("groupBy");if(B){B.setDisabled(this.cm.config[this.hdCtxIndex].groupable===false)}var A=this.hmenu.items.get("showGroups");if(A){A.setDisabled(!C&&this.cm.config[this.hdCtxIndex].groupable===false);A.setChecked(!!C,true)}},renderUI:function(){Ext.grid.GroupingView.superclass.renderUI.call(this);this.mainBody.on("mousedown",this.interceptMouse,this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{id:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({id:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}},onGroupByClick:function(){this.grid.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));this.beforeMenuShow()},onShowGroupsClick:function(A,B){if(B){this.onGroupByClick()}else{this.grid.store.clearGrouping()}},toggleGroup:function(C,B){this.grid.stopEditing(true);C=Ext.getDom(C);var A=Ext.fly(C);B=B!==undefined?B:A.hasClass("x-grid-group-collapsed");this.state[A.dom.id]=B;A[B?"removeClass":"addClass"]("x-grid-group-collapsed")},toggleAllGroups:function(C){var B=this.getGroups();for(var D=0,A=B.length;D<A;D++){this.toggleGroup(B[D],C)}},expandAllGroups:function(){this.toggleAllGroups(true)},collapseAllGroups:function(){this.toggleAllGroups(false)},interceptMouse:function(B){var A=B.getTarget(".x-grid-group-hd",this.mainBody);if(A){B.stopEvent();this.toggleGroup(A.parentNode)}},getGroup:function(A,D,F,G,B,E){var C=F?F(A,{},D,G,B,E):String(A);if(C===""){C=this.cm.config[B].emptyGroupText||this.emptyGroupText}return C},getGroupField:function(){return this.grid.store.getGroupState()},renderRows:function(){var A=this.getGroupField();var D=!!A;if(this.hideGroupedColumn){var B=this.cm.findColumnIndex(A);if(!D&&this.lastGroupField!==undefined){this.mainBody.update("");this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField),false);delete this.lastGroupField}else{if(D&&this.lastGroupField===undefined){this.lastGroupField=A;this.cm.setHidden(B,true)}else{if(D&&this.lastGroupField!==undefined&&A!==this.lastGroupField){this.mainBody.update("");var C=this.cm.findColumnIndex(this.lastGroupField);this.cm.setHidden(C,false);this.lastGroupField=A;this.cm.setHidden(B,true)}}}}return Ext.grid.GroupingView.superclass.renderRows.apply(this,arguments)},doRender:function(D,G,P,A,O,R){if(G.length<1){return""}var Y=this.getGroupField();var N=this.cm.findColumnIndex(Y);this.enableGrouping=!!Y;if(!this.enableGrouping||this.isUpdating){return Ext.grid.GroupingView.superclass.doRender.apply(this,arguments)}var H="width:"+this.getTotalWidth()+";";var Q=this.grid.getGridEl().id;var F=this.cm.config[N];var B=F.groupRenderer||F.renderer;var S=this.showGroupName?(F.groupName||F.header)+": ":"";var X=[],K,T,U,M;for(T=0,U=G.length;T<U;T++){var J=A+T;var L=G[T],E=L.data[Y],V=this.getGroup(E,L,B,J,N,P);if(!K||K.group!=V){M=Q+"-gp-"+Y+"-"+Ext.util.Format.htmlEncode(V);var C=typeof this.state[M]!=="undefined"?!this.state[M]:this.startCollapsed;var I=C?"x-grid-group-collapsed":"";K={group:V,gvalue:E,text:S+V,groupId:M,startRow:J,rs:[L],cls:I,style:H};X.push(K)}else{K.rs.push(L)}L._groupId=M}var W=[];for(T=0,U=X.length;T<U;T++){var V=X[T];this.doGroupStart(W,V,D,P,O);W[W.length]=Ext.grid.GroupingView.superclass.doRender.call(this,D,V.rs,P,V.startRow,O,R);this.doGroupEnd(W,V,D,P,O)}return W.join("")},getGroupId:function(F){var D=this.grid.getGridEl().id;var C=this.getGroupField();var E=this.cm.findColumnIndex(C);var B=this.cm.config[E];var G=B.groupRenderer||B.renderer;var A=this.getGroup(F,{data:{}},G,0,E,this.ds);return D+"-gp-"+C+"-"+Ext.util.Format.htmlEncode(F)},doGroupStart:function(A,D,B,E,C){A[A.length]=this.startGroup.apply(D)},doGroupEnd:function(A,D,B,E,C){A[A.length]=this.endGroup},getRows:function(){if(!this.enableGrouping){return Ext.grid.GroupingView.superclass.getRows.call(this)}var G=[];var F,C=this.getGroups();for(var E=0,A=C.length;E<A;E++){F=C[E].childNodes[1].childNodes;for(var D=0,B=F.length;D<B;D++){G[G.length]=F[D]}}return G},updateGroupWidths:function(){if(!this.enableGrouping||!this.hasRows()){return }var C=Math.max(this.cm.getTotalWidth(),this.el.dom.offsetWidth-this.scrollOffset)+"px";var B=this.getGroups();for(var D=0,A=B.length;D<A;D++){B[D].firstChild.style.width=C}},onColumnWidthUpdated:function(C,A,B){this.updateGroupWidths()},onAllColumnWidthsUpdated:function(A,B){this.updateGroupWidths()},onColumnHiddenUpdated:function(B,C,A){this.updateGroupWidths()},onLayout:function(){this.updateGroupWidths()},onBeforeRowSelect:function(D,C){if(!this.enableGrouping){return }var B=this.getRow(C);if(B&&!B.offsetParent){var A=this.findGroup(B);this.toggleGroup(A,true)}},groupByText:"Group By This Field",showGroupsText:"Show in Groups"});Ext.grid.GroupingView.GROUP_ID=1000;
+Ext.grid.HeaderDragZone=function(A,C,B){this.grid=A;this.view=A.getView();this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDragZone.superclass.constructor.call(this,C);if(B){this.setHandleElId(Ext.id(C));this.setOuterHandleElId(Ext.id(B))}this.scroll=false};Ext.extend(Ext.grid.HeaderDragZone,Ext.dd.DragZone,{maxDragWidth:120,getDragData:function(C){var A=Ext.lib.Event.getTarget(C);var B=this.view.findHeaderCell(A);if(B){return{ddel:B.firstChild,header:B}}return false},onInitDrag:function(A){this.view.headersDisabled=true;var B=this.dragData.ddel.cloneNode(true);B.id=Ext.id();B.style.width=Math.min(this.dragData.header.offsetWidth,this.maxDragWidth)+"px";this.proxy.update(B);return true},afterValidDrop:function(){var A=this.view;setTimeout(function(){A.headersDisabled=false},50)},afterInvalidDrop:function(){var A=this.view;setTimeout(function(){A.headersDisabled=false},50)}});Ext.grid.HeaderDropZone=function(A,C,B){this.grid=A;this.view=A.getView();this.proxyTop=Ext.DomHelper.append(document.body,{cls:"col-move-top",html:"&#160;"},true);this.proxyBottom=Ext.DomHelper.append(document.body,{cls:"col-move-bottom",html:"&#160;"},true);this.proxyTop.hide=this.proxyBottom.hide=function(){this.setLeftTop(-100,-100);this.setStyle("visibility","hidden")};this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDropZone.superclass.constructor.call(this,A.getGridEl().dom)};Ext.extend(Ext.grid.HeaderDropZone,Ext.dd.DropZone,{proxyOffsets:[-4,-9],fly:Ext.Element.fly,getTargetFromEvent:function(C){var A=Ext.lib.Event.getTarget(C);var B=this.view.findCellIndex(A);if(B!==false){return this.view.getHeaderCell(B)}},nextVisible:function(C){var B=this.view,A=this.grid.colModel;C=C.nextSibling;while(C){if(!A.isHidden(B.getCellIndex(C))){return C}C=C.nextSibling}return null},prevVisible:function(C){var B=this.view,A=this.grid.colModel;C=C.prevSibling;while(C){if(!A.isHidden(B.getCellIndex(C))){return C}C=C.prevSibling}return null},positionIndicator:function(D,B,E){var H=Ext.lib.Event.getPageX(E);var A=Ext.lib.Dom.getRegion(B.firstChild);var I,K,G=A.top+this.proxyOffsets[1];if((A.right-H)<=(A.right-A.left)/2){I=A.right+this.view.borderWidth;K="after"}else{I=A.left;K="before"}var F=this.view.getCellIndex(D);var J=this.view.getCellIndex(B);if(this.grid.colModel.isFixed(J)){return false}var C=this.grid.colModel.isLocked(J);if(K=="after"){J++}if(F<J){J--}if(F==J&&(C==this.grid.colModel.isLocked(F))){return false}I+=this.proxyOffsets[0];this.proxyTop.setLeftTop(I,G);this.proxyTop.show();if(!this.bottomOffset){this.bottomOffset=this.view.mainHd.getHeight()}this.proxyBottom.setLeftTop(I,G+this.proxyTop.dom.offsetHeight+this.bottomOffset);this.proxyBottom.show();return K},onNodeEnter:function(D,A,C,B){if(B.header!=D){this.positionIndicator(B.header,D,C)}},onNodeOver:function(E,B,D,C){var A=false;if(C.header!=E){A=this.positionIndicator(C.header,E,D)}if(!A){this.proxyTop.hide();this.proxyBottom.hide()}return A?this.dropAllowed:this.dropNotAllowed},onNodeOut:function(D,A,C,B){this.proxyTop.hide();this.proxyBottom.hide()},onNodeDrop:function(B,K,F,D){var E=D.header;if(E!=B){var I=this.grid.colModel;var H=Ext.lib.Event.getPageX(F);var A=Ext.lib.Dom.getRegion(B.firstChild);var L=(A.right-H)<=((A.right-A.left)/2)?"after":"before";var G=this.view.getCellIndex(E);var J=this.view.getCellIndex(B);var C=I.isLocked(J);if(L=="after"){J++}if(G<J){J--}if(G==J&&(C==I.isLocked(G))){return false}I.setLocked(G,C,true);I.moveColumn(G,J);this.grid.fireEvent("columnmove",G,J);return true}return false}});Ext.grid.GridView.ColumnDragZone=function(A,B){Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this,A,B,null);this.proxy.el.addClass("x-grid3-col-dd")};Ext.extend(Ext.grid.GridView.ColumnDragZone,Ext.grid.HeaderDragZone,{handleMouseDown:function(A){},callHandleMouseDown:function(A){Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this,A)}});
+Ext.grid.SplitDragZone=function(A,C,B){this.grid=A;this.view=A.getView();this.proxy=this.view.resizeProxy;Ext.grid.SplitDragZone.superclass.constructor.call(this,C,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.setHandleElId(Ext.id(C));this.setOuterHandleElId(Ext.id(B));this.scroll=false};Ext.extend(Ext.grid.SplitDragZone,Ext.dd.DDProxy,{fly:Ext.Element.fly,b4StartDrag:function(A,D){this.view.headersDisabled=true;this.proxy.setHeight(this.view.mainWrap.getHeight());var B=this.cm.getColumnWidth(this.cellIndex);var C=Math.max(B-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(C,1000);this.setYConstraint(0,0);this.minX=A-C;this.maxX=A+1000;this.startPos=A;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,A,D)},handleMouseDown:function(B){ev=Ext.EventObject.setEvent(B);var A=this.fly(ev.getTarget());if(A.hasClass("x-grid-split")){this.cellIndex=this.view.getCellIndex(A.dom);this.split=A.dom;this.cm=this.grid.colModel;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)}}},endDrag:function(C){this.view.headersDisabled=false;var A=Math.max(this.minX,Ext.lib.Event.getPageX(C));var B=A-this.startPos;this.view.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+B)},autoOffset:function(){this.setDelta(0,0)}});
+Ext.grid.GridDragZone=function(B,A){this.view=B.getView();Ext.grid.GridDragZone.superclass.constructor.call(this,this.view.mainBody.dom,A);if(this.view.lockedBody){this.setHandleElId(Ext.id(this.view.mainBody.dom));this.setOuterHandleElId(Ext.id(this.view.lockedBody.dom))}this.scroll=false;this.grid=B;this.ddel=document.createElement("div");this.ddel.className="x-grid-dd-wrap"};Ext.extend(Ext.grid.GridDragZone,Ext.dd.DragZone,{ddGroup:"GridDD",getDragData:function(B){var A=Ext.lib.Event.getTarget(B);var D=this.view.findRowIndex(A);if(D!==false){var C=this.grid.selModel;if(!C.isSelected(D)||B.hasModifier()){C.handleMouseDown(this.grid,D,B)}return{grid:this.grid,ddel:this.ddel,rowIndex:D,selections:C.getSelections()}}return false},onInitDrag:function(B){var A=this.dragData;this.ddel.innerHTML=this.grid.getDragDropText();this.proxy.update(this.ddel)},afterRepair:function(){this.dragging=false},getRepairXY:function(B,A){return false},onEndDrag:function(A,B){},onValidDrop:function(A,B,C){this.hideProxy()},beforeInvalidDrop:function(A,B){}});
+Ext.grid.ColumnModel=function(A){this.defaultWidth=100;this.defaultSortable=false;if(A.columns){Ext.apply(this,A);this.setConfig(A.columns,true)}else{this.setConfig(A,true)}this.addEvents("widthchange","headerchange","hiddenchange","columnmoved","columnlockchange","configchange");Ext.grid.ColumnModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.ColumnModel,Ext.util.Observable,{getColumnId:function(A){return this.config[A].id},setConfig:function(C,B){if(!B){delete this.totalWidth;for(var D=0,A=this.config.length;D<A;D++){var E=this.config[D];if(E.editor){E.editor.destroy()}}}this.config=C;this.lookup={};for(var D=0,A=C.length;D<A;D++){var E=C[D];if(typeof E.renderer=="string"){E.renderer=Ext.util.Format[E.renderer]}if(typeof E.id=="undefined"){E.id=D}if(E.editor&&E.editor.isFormField){E.editor=new Ext.grid.GridEditor(E.editor)}this.lookup[E.id]=E}if(!B){this.fireEvent("configchange",this)}},getColumnById:function(A){return this.lookup[A]},getIndexById:function(C){for(var B=0,A=this.config.length;B<A;B++){if(this.config[B].id==C){return B}}return -1},moveColumn:function(C,A){var B=this.config[C];this.config.splice(C,1);this.config.splice(A,0,B);this.dataMap=null;this.fireEvent("columnmoved",this,C,A)},isLocked:function(A){return this.config[A].locked===true},setLocked:function(B,C,A){if(this.isLocked(B)==C){return }this.config[B].locked=C;if(!A){this.fireEvent("columnlockchange",this,B,C)}},getTotalLockedWidth:function(){var A=0;for(var B=0;B<this.config.length;B++){if(this.isLocked(B)&&!this.isHidden(B)){this.totalWidth+=this.getColumnWidth(B)}}return A},getLockedCount:function(){for(var B=0,A=this.config.length;B<A;B++){if(!this.isLocked(B)){return B}}},getColumnCount:function(C){if(C===true){var D=0;for(var B=0,A=this.config.length;B<A;B++){if(!this.isHidden(B)){D++}}return D}return this.config.length},getColumnsBy:function(D,C){var E=[];for(var B=0,A=this.config.length;B<A;B++){var F=this.config[B];if(D.call(C||this,F,B)===true){E[E.length]=F}}return E},isSortable:function(A){if(typeof this.config[A].sortable=="undefined"){return this.defaultSortable}return this.config[A].sortable},isMenuDisabled:function(A){return !!this.config[A].menuDisabled},getRenderer:function(A){if(!this.config[A].renderer){return Ext.grid.ColumnModel.defaultRenderer}return this.config[A].renderer},setRenderer:function(A,B){this.config[A].renderer=B},getColumnWidth:function(A){return this.config[A].width||this.defaultWidth},setColumnWidth:function(B,C,A){this.config[B].width=C;this.totalWidth=null;if(!A){this.fireEvent("widthchange",this,B,C)}},getTotalWidth:function(B){if(!this.totalWidth){this.totalWidth=0;for(var C=0,A=this.config.length;C<A;C++){if(B||!this.isHidden(C)){this.totalWidth+=this.getColumnWidth(C)}}}return this.totalWidth},getColumnHeader:function(A){return this.config[A].header},setColumnHeader:function(A,B){this.config[A].header=B;this.fireEvent("headerchange",this,A,B)},getColumnTooltip:function(A){return this.config[A].tooltip},setColumnTooltip:function(A,B){this.config[A].tooltip=B},getDataIndex:function(A){return this.config[A].dataIndex},setDataIndex:function(A,B){this.config[A].dataIndex=B},findColumnIndex:function(C){var D=this.config;for(var B=0,A=D.length;B<A;B++){if(D[B].dataIndex==C){return B}}return -1},isCellEditable:function(A,B){return(this.config[A].editable||(typeof this.config[A].editable=="undefined"&&this.config[A].editor))?true:false},getCellEditor:function(A,B){return this.config[A].editor},setEditable:function(A,B){this.config[A].editable=B},isHidden:function(A){return this.config[A].hidden},isFixed:function(A){return this.config[A].fixed},isResizable:function(A){return A>=0&&this.config[A].resizable!==false&&this.config[A].fixed!==true},setHidden:function(A,B){var C=this.config[A];if(C.hidden!==B){C.hidden=B;this.totalWidth=null;this.fireEvent("hiddenchange",this,A,B)}},setEditor:function(A,B){this.config[A].editor=B}});Ext.grid.ColumnModel.defaultRenderer=function(A){if(typeof A=="string"&&A.length<1){return"&#160;"}return A};Ext.grid.DefaultColumnModel=Ext.grid.ColumnModel;
+Ext.grid.AbstractSelectionModel=function(){this.locked=false;Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.AbstractSelectionModel,Ext.util.Observable,{init:function(A){this.grid=A;this.initEvents()},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked}});
+Ext.grid.RowSelectionModel=function(A){Ext.apply(this,A);this.selections=new Ext.util.MixedCollection(false,function(B){return B.id});this.last=false;this.lastActive=false;this.addEvents("selectionchange","beforerowselect","rowselect","rowdeselect");Ext.grid.RowSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.RowSelectionModel,Ext.grid.AbstractSelectionModel,{singleSelect:false,initEvents:function(){if(!this.grid.enableDragDrop&&!this.grid.enableDrag){this.grid.on("rowmousedown",this.handleMouseDown,this)}else{this.grid.on("rowclick",function(B,D,C){if(C.button===0&&!C.shiftKey&&!C.ctrlKey){this.selectRow(D,false);B.view.focusRow(D)}},this)}this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{"up":function(C){if(!C.shiftKey){this.selectPrevious(C.shiftKey)}else{if(this.last!==false&&this.lastActive!==false){var B=this.last;this.selectRange(this.last,this.lastActive-1);this.grid.getView().focusRow(this.lastActive);if(B!==false){this.last=B}}else{this.selectFirstRow()}}},"down":function(C){if(!C.shiftKey){this.selectNext(C.shiftKey)}else{if(this.last!==false&&this.lastActive!==false){var B=this.last;this.selectRange(this.last,this.lastActive+1);this.grid.getView().focusRow(this.lastActive);if(B!==false){this.last=B}}else{this.selectFirstRow()}}},scope:this});var A=this.grid.view;A.on("refresh",this.onRefresh,this);A.on("rowupdated",this.onRowUpdated,this);A.on("rowremoved",this.onRemove,this)},onRefresh:function(){var F=this.grid.store,B;var D=this.getSelections();this.clearSelections(true);for(var C=0,A=D.length;C<A;C++){var E=D[C];if((B=F.indexOfId(E.id))!=-1){this.selectRow(B,true)}}if(D.length!=this.selections.getCount()){this.fireEvent("selectionchange",this)}},onRemove:function(A,B,C){if(this.selections.remove(C)!==false){this.fireEvent("selectionchange",this)}},onRowUpdated:function(A,B,C){if(this.isSelected(C)){A.onRowSelect(B)}},selectRecords:function(B,E){if(!E){this.clearSelections()}var D=this.grid.store;for(var C=0,A=B.length;C<A;C++){this.selectRow(D.indexOf(B[C]),true)}},getCount:function(){return this.selections.length},selectFirstRow:function(){this.selectRow(0)},selectLastRow:function(A){this.selectRow(this.grid.store.getCount()-1,A)},selectNext:function(A){if(this.hasNext()){this.selectRow(this.last+1,A);this.grid.getView().focusRow(this.last);return true}return false},selectPrevious:function(A){if(this.hasPrevious()){this.selectRow(this.last-1,A);this.grid.getView().focusRow(this.last);return true}return false},hasNext:function(){return this.last!==false&&(this.last+1)<this.grid.store.getCount()},hasPrevious:function(){return !!this.last},getSelections:function(){return[].concat(this.selections.items)},getSelected:function(){return this.selections.itemAt(0)},each:function(E,D){var C=this.getSelections();for(var B=0,A=C.length;B<A;B++){if(E.call(D||this,C[B],B)===false){return false}}return true},clearSelections:function(A){if(this.locked){return }if(A!==true){var C=this.grid.store;var B=this.selections;B.each(function(D){this.deselectRow(C.indexOfId(D.id))},this);B.clear()}else{this.selections.clear()}this.last=false},selectAll:function(){if(this.locked){return }this.selections.clear();for(var B=0,A=this.grid.store.getCount();B<A;B++){this.selectRow(B,true)}},hasSelection:function(){return this.selections.length>0},isSelected:function(A){var B=typeof A=="number"?this.grid.store.getAt(A):A;return(B&&this.selections.key(B.id)?true:false)},isIdSelected:function(A){return(this.selections.key(A)?true:false)},handleMouseDown:function(D,F,E){if(E.button!==0||this.isLocked()){return }var A=this.grid.getView();if(E.shiftKey&&this.last!==false){var C=this.last;this.selectRange(C,F,E.ctrlKey);this.last=C;A.focusRow(F)}else{var B=this.isSelected(F);if(E.ctrlKey&&B){this.deselectRow(F)}else{if(!B||this.getCount()>1){this.selectRow(F,E.ctrlKey||E.shiftKey);A.focusRow(F)}}}},selectRows:function(C,D){if(!D){this.clearSelections()}for(var B=0,A=C.length;B<A;B++){this.selectRow(C[B],true)}},selectRange:function(B,A,D){if(this.locked){return }if(!D){this.clearSelections()}if(B<=A){for(var C=B;C<=A;C++){this.selectRow(C,true)}}else{for(var C=B;C>=A;C--){this.selectRow(C,true)}}},deselectRange:function(C,B,A){if(this.locked){return }for(var D=C;D<=B;D++){this.deselectRow(D,A)}},selectRow:function(B,D,A){if(this.locked||(B<0||B>=this.grid.store.getCount())||this.isSelected(B)){return }var C=this.grid.store.getAt(B);if(C&&this.fireEvent("beforerowselect",this,B,D,C)!==false){if(!D||this.singleSelect){this.clearSelections()}this.selections.add(C);this.last=this.lastActive=B;if(!A){this.grid.getView().onRowSelect(B)}this.fireEvent("rowselect",this,B,C);this.fireEvent("selectionchange",this)}},deselectRow:function(B,A){if(this.locked){return }if(this.last==B){this.last=false}if(this.lastActive==B){this.lastActive=false}var C=this.grid.store.getAt(B);if(C){this.selections.remove(C);if(!A){this.grid.getView().onRowDeselect(B)}this.fireEvent("rowdeselect",this,B,C);this.fireEvent("selectionchange",this)}},restoreLast:function(){if(this._last){this.last=this._last}},acceptsNav:function(C,B,A){return !A.isHidden(B)&&A.isCellEditable(B,C)},onEditorKey:function(F,E){var C=E.getKey(),G,D=this.grid,B=D.activeEditor;var A=E.shiftKey;if(C==E.TAB){E.stopEvent();B.completeEdit();if(A){G=D.walkCells(B.row,B.col-1,-1,this.acceptsNav,this)}else{G=D.walkCells(B.row,B.col+1,1,this.acceptsNav,this)}}else{if(C==E.ENTER){E.stopEvent();B.completeEdit();if(this.moveEditorOnEnter!==false){if(A){G=D.walkCells(B.row-1,B.col,-1,this.acceptsNav,this)}else{G=D.walkCells(B.row+1,B.col,1,this.acceptsNav,this)}}}else{if(C==E.ESC){B.cancelEdit()}}}if(G){D.startEditing(G[0],G[1])}}});
+Ext.grid.CellSelectionModel=function(A){Ext.apply(this,A);this.selection=null;this.addEvents("beforecellselect","cellselect","selectionchange");Ext.grid.CellSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.CellSelectionModel,Ext.grid.AbstractSelectionModel,{initEvents:function(){this.grid.on("cellmousedown",this.handleMouseDown,this);this.grid.getGridEl().on(Ext.isIE||Ext.isSafari3?"keydown":"keypress",this.handleKeyDown,this);var A=this.grid.view;A.on("refresh",this.onViewChange,this);A.on("rowupdated",this.onRowUpdated,this);A.on("beforerowremoved",this.clearSelections,this);A.on("beforerowsinserted",this.clearSelections,this);if(this.grid.isEditor){this.grid.on("beforeedit",this.beforeEdit,this)}},beforeEdit:function(A){this.select(A.row,A.column,false,true,A.record)},onRowUpdated:function(A,B,C){if(this.selection&&this.selection.record==C){A.onCellSelect(B,this.selection.cell[1])}},onViewChange:function(){this.clearSelections(true)},getSelectedCell:function(){return this.selection?this.selection.cell:null},clearSelections:function(B){var A=this.selection;if(A){if(B!==true){this.grid.view.onCellDeselect(A.cell[0],A.cell[1])}this.selection=null;this.fireEvent("selectionchange",this,null)}},hasSelection:function(){return this.selection?true:false},handleMouseDown:function(B,D,A,C){if(C.button!==0||this.isLocked()){return }this.select(D,A)},select:function(F,C,B,E,D){if(this.fireEvent("beforecellselect",this,F,C)!==false){this.clearSelections();D=D||this.grid.store.getAt(F);this.selection={record:D,cell:[F,C]};if(!B){var A=this.grid.getView();A.onCellSelect(F,C);if(E!==true){A.focusCell(F,C)}}this.fireEvent("cellselect",this,F,C);this.fireEvent("selectionchange",this,this.selection)}},isSelectable:function(C,B,A){return !A.isHidden(B)},handleKeyDown:function(F){if(!F.isNavKeyPress()){return }var E=this.grid,J=this.selection;if(!J){F.stopEvent();var I=E.walkCells(0,0,1,this.isSelectable,this);if(I){this.select(I[0],I[1])}return }var B=this;var H=function(M,K,L){return E.walkCells(M,K,L,B.isSelectable,B)};var C=F.getKey(),A=J.cell[0],G=J.cell[1];var D;switch(C){case F.TAB:if(F.shiftKey){D=H(A,G-1,-1)}else{D=H(A,G+1,1)}break;case F.DOWN:D=H(A+1,G,1);break;case F.UP:D=H(A-1,G,-1);break;case F.RIGHT:D=H(A,G+1,1);break;case F.LEFT:D=H(A,G-1,-1);break;case F.ENTER:if(E.isEditor&&!E.editing){E.startEditing(A,G);F.stopEvent();return }break}if(D){this.select(D[0],D[1]);F.stopEvent()}},acceptsNav:function(C,B,A){return !A.isHidden(B)&&A.isCellEditable(B,C)},onEditorKey:function(E,D){var B=D.getKey(),F,C=this.grid,A=C.activeEditor;if(B==D.TAB){if(D.shiftKey){F=C.walkCells(A.row,A.col-1,-1,this.acceptsNav,this)}else{F=C.walkCells(A.row,A.col+1,1,this.acceptsNav,this)}D.stopEvent()}else{if(B==D.ENTER){A.completeEdit();D.stopEvent()}else{if(B==D.ESC){D.stopEvent();A.cancelEdit()}}}if(F){C.startEditing(F[0],F[1])}}});
+Ext.grid.EditorGridPanel=Ext.extend(Ext.grid.GridPanel,{clicksToEdit:2,isEditor:true,detectEdit:false,autoEncode:false,trackMouseOver:false,initComponent:function(){Ext.grid.EditorGridPanel.superclass.initComponent.call(this);if(!this.selModel){this.selModel=new Ext.grid.CellSelectionModel()}this.activeEditor=null;this.addEvents("beforeedit","afteredit","validateedit")},initEvents:function(){Ext.grid.EditorGridPanel.superclass.initEvents.call(this);this.on("bodyscroll",this.stopEditing,this,[true]);if(this.clicksToEdit==1){this.on("cellclick",this.onCellDblClick,this)}else{if(this.clicksToEdit=="auto"&&this.view.mainBody){this.view.mainBody.on("mousedown",this.onAutoEditClick,this)}this.on("celldblclick",this.onCellDblClick,this)}this.getGridEl().addClass("xedit-grid")},onCellDblClick:function(B,C,A){this.startEditing(C,A)},onAutoEditClick:function(C,B){if(C.button!==0){return }var E=this.view.findRowIndex(B);var A=this.view.findCellIndex(B);if(E!==false&&A!==false){this.stopEditing();if(this.selModel.getSelectedCell){var D=this.selModel.getSelectedCell();if(D&&D.cell[0]===E&&D.cell[1]===A){this.startEditing(E,A)}}else{if(this.selModel.isSelected(E)){this.startEditing(E,A)}}}},onEditComplete:function(B,D,A){this.editing=false;this.activeEditor=null;B.un("specialkey",this.selModel.onEditorKey,this.selModel);var C=B.record;var F=this.colModel.getDataIndex(B.col);D=this.postEditValue(D,A,C,F);if(String(D)!==String(A)){var E={grid:this,record:C,field:F,originalValue:A,value:D,row:B.row,column:B.col,cancel:false};if(this.fireEvent("validateedit",E)!==false&&!E.cancel){C.set(F,E.value);delete E.cancel;this.fireEvent("afteredit",E)}}this.view.focusCell(B.row,B.col)},startEditing:function(F,B){this.stopEditing();if(this.colModel.isCellEditable(B,F)){this.view.ensureVisible(F,B,true);var C=this.store.getAt(F);var E=this.colModel.getDataIndex(B);var D={grid:this,record:C,field:E,value:C.data[E],row:F,column:B,cancel:false};if(this.fireEvent("beforeedit",D)!==false&&!D.cancel){this.editing=true;var A=this.colModel.getCellEditor(B,F);if(!A.rendered){A.render(this.view.getEditorParent(A))}(function(){A.row=F;A.col=B;A.record=C;A.on("complete",this.onEditComplete,this,{single:true});A.on("specialkey",this.selModel.onEditorKey,this.selModel);this.activeEditor=A;var G=this.preEditValue(C,E);A.startEdit(this.view.getCell(F,B).firstChild,G)}).defer(50,this)}}},preEditValue:function(A,C){var B=A.data[C];return this.autoEncode&&typeof B=="string"?Ext.util.Format.htmlDecode(B):B},postEditValue:function(C,A,B,D){return this.autoEncode&&typeof C=="string"?Ext.util.Format.htmlEncode(C):C},stopEditing:function(A){if(this.activeEditor){this.activeEditor[A===true?"cancelEdit":"completeEdit"]()}this.activeEditor=null},onDestroy:function(){if(this.rendered){var C=this.colModel.config;for(var B=0,A=C.length;B<A;B++){var D=C[B];Ext.destroy(D.editor)}}Ext.grid.EditorGridPanel.superclass.onDestroy.call(this)}});Ext.reg("editorgrid",Ext.grid.EditorGridPanel);
+Ext.grid.GridEditor=function(B,A){Ext.grid.GridEditor.superclass.constructor.call(this,B,A);B.monitorTab=false};Ext.extend(Ext.grid.GridEditor,Ext.Editor,{alignment:"tl-tl",autoSize:"width",hideEl:false,cls:"x-small-editor x-grid-editor",shim:false,shadow:false});
+Ext.grid.PropertyRecord=Ext.data.Record.create([{name:"name",type:"string"},"value"]);Ext.grid.PropertyStore=function(A,B){this.grid=A;this.store=new Ext.data.Store({recordType:Ext.grid.PropertyRecord});this.store.on("update",this.onUpdate,this);if(B){this.setSource(B)}Ext.grid.PropertyStore.superclass.constructor.call(this)};Ext.extend(Ext.grid.PropertyStore,Ext.util.Observable,{setSource:function(C){this.source=C;this.store.removeAll();var B=[];for(var A in C){if(this.isEditableValue(C[A])){B.push(new Ext.grid.PropertyRecord({name:A,value:C[A]},A))}}this.store.loadRecords({records:B},{},true)},onUpdate:function(E,A,D){if(D==Ext.data.Record.EDIT){var B=A.data["value"];var C=A.modified["value"];if(this.grid.fireEvent("beforepropertychange",this.source,A.id,B,C)!==false){this.source[A.id]=B;A.commit();this.grid.fireEvent("propertychange",this.source,A.id,B,C)}else{A.reject()}}},getProperty:function(A){return this.store.getAt(A)},isEditableValue:function(A){if(Ext.isDate(A)){return true}else{if(typeof A=="object"||typeof A=="function"){return false}}return true},setValue:function(B,A){this.source[B]=A;this.store.getById(B).set("value",A)},getSource:function(){return this.source}});Ext.grid.PropertyColumnModel=function(C,B){this.grid=C;var D=Ext.grid;D.PropertyColumnModel.superclass.constructor.call(this,[{header:this.nameText,width:50,sortable:true,dataIndex:"name",id:"name",menuDisabled:true},{header:this.valueText,width:50,resizable:false,dataIndex:"value",id:"value",menuDisabled:true}]);this.store=B;this.bselect=Ext.DomHelper.append(document.body,{tag:"select",cls:"x-grid-editor x-hide-display",children:[{tag:"option",value:"true",html:"true"},{tag:"option",value:"false",html:"false"}]});var E=Ext.form;var A=new E.Field({el:this.bselect,bselect:this.bselect,autoShow:true,getValue:function(){return this.bselect.value=="true"}});this.editors={"date":new D.GridEditor(new E.DateField({selectOnFocus:true})),"string":new D.GridEditor(new E.TextField({selectOnFocus:true})),"number":new D.GridEditor(new E.NumberField({selectOnFocus:true,style:"text-align:left;"})),"boolean":new D.GridEditor(A)};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this)};Ext.extend(Ext.grid.PropertyColumnModel,Ext.grid.ColumnModel,{nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",renderDate:function(A){return A.dateFormat(this.dateFormat)},renderBool:function(A){return A?"true":"false"},isCellEditable:function(A,B){return A==1},getRenderer:function(A){return A==1?this.renderCellDelegate:this.renderPropDelegate},renderProp:function(A){return this.getPropertyName(A)},renderCell:function(A){var B=A;if(Ext.isDate(A)){B=this.renderDate(A)}else{if(typeof A=="boolean"){B=this.renderBool(A)}}return Ext.util.Format.htmlEncode(B)},getPropertyName:function(B){var A=this.grid.propertyNames;return A&&A[B]?A[B]:B},getCellEditor:function(A,E){var B=this.store.getProperty(E);var D=B.data["name"],C=B.data["value"];if(this.grid.customEditors[D]){return this.grid.customEditors[D]}if(Ext.isDate(C)){return this.editors["date"]}else{if(typeof C=="number"){return this.editors["number"]}else{if(typeof C=="boolean"){return this.editors["boolean"]}else{return this.editors["string"]}}}}});Ext.grid.PropertyGrid=Ext.extend(Ext.grid.EditorGridPanel,{enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,viewConfig:{forceFit:true},initComponent:function(){this.customEditors=this.customEditors||{};this.lastEditRow=null;var B=new Ext.grid.PropertyStore(this);this.propStore=B;var A=new Ext.grid.PropertyColumnModel(this,B);B.store.sort("name","ASC");this.addEvents("beforepropertychange","propertychange");this.cm=A;this.ds=B.store;Ext.grid.PropertyGrid.superclass.initComponent.call(this);this.selModel.on("beforecellselect",function(E,D,C){if(C===0){this.startEditing.defer(200,this,[D,1]);return false}},this)},onRender:function(){Ext.grid.PropertyGrid.superclass.onRender.apply(this,arguments);this.getGridEl().addClass("x-props-grid")},afterRender:function(){Ext.grid.PropertyGrid.superclass.afterRender.apply(this,arguments);if(this.source){this.setSource(this.source)}},setSource:function(A){this.propStore.setSource(A)},getSource:function(){return this.propStore.getSource()}});Ext.reg("propertygrid",Ext.grid.PropertyGrid);
+Ext.grid.RowNumberer=function(A){Ext.apply(this,A);if(this.rowspan){this.renderer=this.renderer.createDelegate(this)}};Ext.grid.RowNumberer.prototype={header:"",width:23,sortable:false,fixed:true,menuDisabled:true,dataIndex:"",id:"numberer",rowspan:undefined,renderer:function(B,C,A,D){if(this.rowspan){C.cellAttr="rowspan=\""+this.rowspan+"\""}return D+1}};
+Ext.grid.CheckboxSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,{header:"<div class=\"x-grid3-hd-checker\">&#160;</div>",width:20,sortable:false,menuDisabled:true,fixed:true,dataIndex:"",id:"checker",initEvents:function(){Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on("render",function(){var A=this.grid.getView();A.mainBody.on("mousedown",this.onMouseDown,this);Ext.fly(A.innerHd).on("mousedown",this.onHdMouseDown,this)},this)},onMouseDown:function(C,B){if(C.button===0&&B.className=="x-grid3-row-checker"){C.stopEvent();var D=C.getTarget(".x-grid3-row");if(D){var A=D.rowIndex;if(this.isSelected(A)){this.deselectRow(A)}else{this.selectRow(A,true)}}}},onHdMouseDown:function(C,A){if(A.className=="x-grid3-hd-checker"){C.stopEvent();var B=Ext.fly(A.parentNode);var D=B.hasClass("x-grid3-hd-checker-on");if(D){B.removeClass("x-grid3-hd-checker-on");this.clearSelections()}else{B.addClass("x-grid3-hd-checker-on");this.selectAll()}}},renderer:function(B,C,A){return"<div class=\"x-grid3-row-checker\">&#160;</div>"}});
+Ext.LoadMask=function(C,B){this.el=Ext.get(C);Ext.apply(this,B);if(this.store){this.store.on("beforeload",this.onBeforeLoad,this);this.store.on("load",this.onLoad,this);this.store.on("loadexception",this.onLoad,this);this.removeMask=Ext.value(this.removeMask,false)}else{var A=this.el.getUpdater();A.showLoadIndicator=false;A.on("beforeupdate",this.onBeforeLoad,this);A.on("update",this.onLoad,this);A.on("failure",this.onLoad,this);this.removeMask=Ext.value(this.removeMask,true)}};Ext.LoadMask.prototype={msg:"Loading...",msgCls:"x-mask-loading",disabled:false,disable:function(){this.disabled=true},enable:function(){this.disabled=false},onLoad:function(){this.el.unmask(this.removeMask)},onBeforeLoad:function(){if(!this.disabled){this.el.mask(this.msg,this.msgCls)}},show:function(){this.onBeforeLoad()},hide:function(){this.onLoad()},destroy:function(){if(this.store){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("loadexception",this.onLoad,this)}else{var A=this.el.getUpdater();A.un("beforeupdate",this.onBeforeLoad,this);A.un("update",this.onLoad,this);A.un("failure",this.onLoad,this)}}};
+Ext.ProgressBar=Ext.extend(Ext.BoxComponent,{baseCls:"x-progress",waitTimer:null,initComponent:function(){Ext.ProgressBar.superclass.initComponent.call(this);this.addEvents("update")},onRender:function(D,A){Ext.ProgressBar.superclass.onRender.call(this,D,A);var C=new Ext.Template("<div class=\"{cls}-wrap\">","<div class=\"{cls}-inner\">","<div class=\"{cls}-bar\">","<div class=\"{cls}-text\">","<div>&#160;</div>","</div>","</div>","<div class=\"{cls}-text {cls}-text-back\">","<div>&#160;</div>","</div>","</div>","</div>");if(A){this.el=C.insertBefore(A,{cls:this.baseCls},true)}else{this.el=C.append(D,{cls:this.baseCls},true)}if(this.id){this.el.dom.id=this.id}var B=this.el.dom.firstChild;this.progressBar=Ext.get(B.firstChild);if(this.textEl){this.textEl=Ext.get(this.textEl);delete this.textTopEl}else{this.textTopEl=Ext.get(this.progressBar.dom.firstChild);var E=Ext.get(B.childNodes[1]);this.textTopEl.setStyle("z-index",99).addClass("x-hidden");this.textEl=new Ext.CompositeElement([this.textTopEl.dom.firstChild,E.dom.firstChild]);this.textEl.setWidth(B.offsetWidth)}this.progressBar.setHeight(B.offsetHeight)},afterRender:function(){Ext.ProgressBar.superclass.afterRender.call(this);if(this.value){this.updateProgress(this.value,this.text)}else{this.updateText(this.text)}},updateProgress:function(B,C){this.value=B||0;if(C){this.updateText(C)}if(this.rendered){var A=Math.floor(B*this.el.dom.firstChild.offsetWidth);this.progressBar.setWidth(A);if(this.textTopEl){this.textTopEl.removeClass("x-hidden").setWidth(A)}}this.fireEvent("update",this,B,C);return this},wait:function(B){if(!this.waitTimer){var A=this;B=B||{};this.updateText(B.text);this.waitTimer=Ext.TaskMgr.start({run:function(C){var D=B.increment||10;this.updateProgress(((((C+D)%D)+1)*(100/D))*0.01)},interval:B.interval||1000,duration:B.duration,onStop:function(){if(B.fn){B.fn.apply(B.scope||this)}this.reset()},scope:A})}return this},isWaiting:function(){return this.waitTimer!=null},updateText:function(A){this.text=A||"&#160;";if(this.rendered){this.textEl.update(this.text)}return this},syncProgressBar:function(){if(this.value){this.updateProgress(this.value,this.text)}return this},setSize:function(A,C){Ext.ProgressBar.superclass.setSize.call(this,A,C);if(this.textTopEl){var B=this.el.dom.firstChild;this.textEl.setSize(B.offsetWidth,B.offsetHeight)}this.syncProgressBar();return this},reset:function(A){this.updateProgress(0);if(this.textTopEl){this.textTopEl.addClass("x-hidden")}if(this.waitTimer){this.waitTimer.onStop=null;Ext.TaskMgr.stop(this.waitTimer);this.waitTimer=null}if(A===true){this.hide()}return this}});Ext.reg("progress",Ext.ProgressBar);
+Ext.Slider=Ext.extend(Ext.BoxComponent,{vertical:false,minValue:0,maxValue:100,keyIncrement:1,increment:0,clickRange:[5,15],clickToChange:true,animate:true,dragging:false,initComponent:function(){if(this.value===undefined){this.value=this.minValue}Ext.Slider.superclass.initComponent.call(this);this.keyIncrement=Math.max(this.increment,this.keyIncrement);this.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");if(this.vertical){Ext.apply(this,Ext.Slider.Vertical)}},onRender:function(){this.autoEl={cls:"x-slider "+(this.vertical?"x-slider-vert":"x-slider-horz"),cn:{cls:"x-slider-end",cn:{cls:"x-slider-inner",cn:[{cls:"x-slider-thumb"},{tag:"a",cls:"x-slider-focus",href:"#",tabIndex:"-1",hidefocus:"on"}]}}};Ext.Slider.superclass.onRender.apply(this,arguments);this.endEl=this.el.first();this.innerEl=this.endEl.first();this.thumb=this.innerEl.first();this.halfThumb=(this.vertical?this.thumb.getHeight():this.thumb.getWidth())/2;this.focusEl=this.thumb.next();this.initEvents()},initEvents:function(){this.thumb.addClassOnOver("x-slider-thumb-over");this.mon(this.el,"mousedown",this.onMouseDown,this);this.mon(this.el,"keydown",this.onKeyDown,this);this.focusEl.swallowEvent("click",true);this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeDragStart.createDelegate(this),onStart:this.onDragStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onDragEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(this.thumb);this.on("beforedestroy",this.tracker.destroy,this.tracker)},onMouseDown:function(B){if(this.disabled){return }if(this.clickToChange&&B.target!=this.thumb.dom){var A=this.innerEl.translatePoints(B.getXY());this.onClickChange(A)}this.focus()},onClickChange:function(A){if(A.top>this.clickRange[0]&&A.top<this.clickRange[1]){this.setValue(Math.round(this.reverseValue(A.left)),undefined,true)}},onKeyDown:function(B){if(this.disabled){B.preventDefault();return }var A=B.getKey();switch(A){case B.UP:case B.RIGHT:B.stopEvent();if(B.ctrlKey){this.setValue(this.maxValue,undefined,true)}else{this.setValue(this.value+this.keyIncrement,undefined,true)}break;case B.DOWN:case B.LEFT:B.stopEvent();if(B.ctrlKey){this.setValue(this.minValue,undefined,true)}else{this.setValue(this.value-this.keyIncrement,undefined,true)}break;default:B.preventDefault()}},doSnap:function(B){if(!this.increment||this.increment==1||!B){return B}var D=B,C=this.increment;var A=B%C;if(A>0){if(A>(C/2)){D=B+(C-A)}else{D=B-A}}return D.constrain(this.minValue,this.maxValue)},afterRender:function(){Ext.Slider.superclass.afterRender.apply(this,arguments);if(this.value!==undefined){var A=this.normalizeValue(this.value);if(A!==this.value){delete this.value;this.setValue(A,false)}else{this.moveThumb(this.translateValue(A),false)}}},getRatio:function(){var A=this.innerEl.getWidth();var B=this.maxValue-this.minValue;return B==0?A:(A/B)},normalizeValue:function(A){if(typeof A!="number"){A=parseInt(A)}A=Math.round(A);A=this.doSnap(A);A=A.constrain(this.minValue,this.maxValue);return A},setValue:function(B,A,C){B=this.normalizeValue(B);if(B!==this.value&&this.fireEvent("beforechange",this,B,this.value)!==false){this.value=B;this.moveThumb(this.translateValue(B),A!==false);this.fireEvent("change",this,B);if(C){this.fireEvent("changecomplete",this,B)}}},translateValue:function(A){var B=this.getRatio();return(A*B)-(this.minValue*B)-this.halfThumb},reverseValue:function(B){var A=this.getRatio();return(B+this.halfThumb+(this.minValue*A))/A},moveThumb:function(B,A){if(!A||this.animate===false){this.thumb.setLeft(B)}else{this.thumb.shift({left:B,stopFx:true,duration:0.35})}},focus:function(){this.focusEl.focus(10)},onBeforeDragStart:function(A){return !this.disabled},onDragStart:function(A){this.thumb.addClass("x-slider-thumb-drag");this.dragging=true;this.dragStartValue=this.value;this.fireEvent("dragstart",this,A)},onDrag:function(A){var B=this.innerEl.translatePoints(this.tracker.getXY());this.setValue(Math.round(this.reverseValue(B.left)),false);this.fireEvent("drag",this,A)},onDragEnd:function(A){this.thumb.removeClass("x-slider-thumb-drag");this.dragging=false;this.fireEvent("dragend",this,A);if(this.dragStartValue!=this.value){this.fireEvent("changecomplete",this,this.value)}},onResize:function(A,B){this.innerEl.setWidth(A-(this.el.getPadding("l")+this.endEl.getPadding("r")));this.syncThumb()},syncThumb:function(){if(this.rendered){this.moveThumb(this.translateValue(this.value))}},getValue:function(){return this.value}});Ext.reg("slider",Ext.Slider);Ext.Slider.Vertical={onResize:function(A,B){this.innerEl.setHeight(B-(this.el.getPadding("t")+this.endEl.getPadding("b")));this.syncThumb()},getRatio:function(){var B=this.innerEl.getHeight();var A=this.maxValue-this.minValue;return B/A},moveThumb:function(B,A){if(!A||this.animate===false){this.thumb.setBottom(B)}else{this.thumb.shift({bottom:B,stopFx:true,duration:0.35})}},onDrag:function(B){var C=this.innerEl.translatePoints(this.tracker.getXY());var A=this.innerEl.getHeight()-C.top;this.setValue(Math.round(A/this.getRatio()),false);this.fireEvent("drag",this,B)},onClickChange:function(B){if(B.left>this.clickRange[0]&&B.left<this.clickRange[1]){var A=this.innerEl.getHeight()-B.top;this.setValue(Math.round(A/this.getRatio()),undefined,true)}}};
+Ext.StatusBar=Ext.extend(Ext.Toolbar,{cls:"x-statusbar",busyIconCls:"x-status-busy",busyText:"Loading...",autoClear:5000,activeThreadId:0,initComponent:function(){if(this.statusAlign=="right"){this.cls+=" x-status-right"}Ext.StatusBar.superclass.initComponent.call(this)},afterRender:function(){Ext.StatusBar.superclass.afterRender.call(this);var A=this.statusAlign=="right",B=Ext.get(this.nextBlock());if(A){this.tr.appendChild(B.dom)}else{B.insertBefore(this.tr.firstChild)}this.statusEl=B.createChild({cls:"x-status-text "+(this.iconCls||this.defaultIconCls||""),html:this.text||this.defaultText||""});this.statusEl.unselectable();this.spacerEl=B.insertSibling({tag:"td",style:"width:100%",cn:[{cls:"ytb-spacer"}]},A?"before":"after")},setStatus:function(C){C=C||{};if(typeof C=="string"){C={text:C}}if(C.text!==undefined){this.setText(C.text)}if(C.iconCls!==undefined){this.setIcon(C.iconCls)}if(C.clear){var D=C.clear,B=this.autoClear,A={useDefaults:true,anim:true};if(typeof D=="object"){D=Ext.applyIf(D,A);if(D.wait){B=D.wait}}else{if(typeof D=="number"){B=D;D=A}else{if(typeof D=="boolean"){D=A}}}D.threadId=this.activeThreadId;this.clearStatus.defer(B,this,[D])}return this},clearStatus:function(C){C=C||{};if(C.threadId&&C.threadId!==this.activeThreadId){return this}var B=C.useDefaults?this.defaultText:"",A=C.useDefaults?(this.defaultIconCls?this.defaultIconCls:""):"";if(C.anim){this.statusEl.fadeOut({remove:false,useDisplay:true,scope:this,callback:function(){this.setStatus({text:B,iconCls:A});this.statusEl.show()}})}else{this.statusEl.hide();this.setStatus({text:B,iconCls:A});this.statusEl.show()}return this},setText:function(A){this.activeThreadId++;this.text=A||"";if(this.rendered){this.statusEl.update(this.text)}return this},getText:function(){return this.text},setIcon:function(A){this.activeThreadId++;A=A||"";if(this.rendered){if(this.currIconCls){this.statusEl.removeClass(this.currIconCls);this.currIconCls=null}if(A.length>0){this.statusEl.addClass(A);this.currIconCls=A}}else{this.currIconCls=A}return this},showBusy:function(A){if(typeof A=="string"){A={text:A}}A=Ext.applyIf(A||{},{text:this.busyText,iconCls:this.busyIconCls});return this.setStatus(A)}});Ext.reg("statusbar",Ext.StatusBar);
+Ext.History=(function(){var E,C;var J=false;var D;function F(){var K=top.location.href,L=K.indexOf("#");return L>=0?K.substr(L+1):null}function A(){C.value=D}function G(K){D=K;Ext.History.fireEvent("change",K)}function H(L){var K=["<html><body><div id=\"state\">",L,"</div></body></html>"].join("");try{var N=E.contentWindow.document;N.open();N.write(K);N.close();return true}catch(M){return false}}function B(){if(!E.contentWindow||!E.contentWindow.document){setTimeout(B,10);return }var N=E.contentWindow.document;var L=N.getElementById("state");var K=L?L.innerText:null;var M=F();setInterval(function(){N=E.contentWindow.document;L=N.getElementById("state");var P=L?L.innerText:null;var O=F();if(P!==K){K=P;G(K);top.location.hash=K;M=K;A()}else{if(O!==M){M=O;H(O)}}},50);J=true;Ext.History.fireEvent("ready",Ext.History)}function I(){D=C.value;if(Ext.isIE){B()}else{var K=F();setInterval(function(){var L=F();if(L!==K){K=L;G(K);A()}},50);J=true;Ext.History.fireEvent("ready",Ext.History)}}return{fieldId:"x-history-field",iframeId:"x-history-frame",events:{},init:function(L,K){if(J){Ext.callback(L,K,[this]);return }if(!Ext.isReady){Ext.onReady(function(){Ext.History.init(L,K)});return }C=Ext.getDom(Ext.History.fieldId);if(Ext.isIE){E=Ext.getDom(Ext.History.iframeId)}this.addEvents("ready","change");if(L){this.on("ready",L,K,{single:true})}I()},add:function(K,L){if(L!==false){if(this.getToken()==K){return true}}if(Ext.isIE){return H(K)}else{top.location.hash=K;return true}},back:function(){history.go(-1)},forward:function(){history.go(1)},getToken:function(){return J?D:F()}}})();Ext.apply(Ext.History,new Ext.util.Observable());
diff --git a/deluge/ui/web/docs/template/resources/ext-base.js b/deluge/ui/web/docs/template/resources/ext-base.js
new file mode 100644
index 0000000..b68f63d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/ext-base.js
@@ -0,0 +1,10 @@
+/*
+ * Ext JS Library 2.2
+ * Copyright(c) 2006-2008, Ext JS, LLC.
+ * licensing@extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+Ext={version:"2.2"};window["undefined"]=window["undefined"];Ext.apply=function(C,D,B){if(B){Ext.apply(C,B)}if(C&&D&&typeof D=="object"){for(var A in D){C[A]=D[A]}}return C};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isGecko3=!isSafari&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return }var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+" == \"undefined\"){"+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.length=="number"&&typeof v.splice=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7,isIE7:isIE7,isGecko:isGecko,isGecko2:isGecko&&!isGecko3,isGecko3:isGecko3,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isMac&&isGecko&&!isGecko3))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var A=arguments;var B=this;return function(){return B.apply(window,A)}},createDelegate:function(C,B,A){var D=this;return function(){var F=B||arguments;if(A===true){F=Array.prototype.slice.call(arguments,0);F=F.concat(B)}else{if(typeof A=="number"){F=Array.prototype.slice.call(arguments,0);var E=[A,0].concat(B);Array.prototype.splice.apply(F,E)}}return D.apply(C||window,F)}},defer:function(C,E,B,A){var D=this.createDelegate(E,B,A);if(C){return setTimeout(D,C)}D();return 0},createSequence:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){var D=C.apply(this||window,arguments);B.apply(A||this||window,arguments);return D}},createInterceptor:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){B.target=this;B.method=C;if(B.apply(A||this||window,arguments)===false){return }return C.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(A){return A.replace(/('|\\)/g,"\\$1")},leftPad:function(D,B,C){var A=new String(D);if(!C){C=" "}while(A.length<B){A=C+A}return A.toString()},format:function(B){var A=Array.prototype.slice.call(arguments,1);return B.replace(/\{(\d+)\}/g,function(C,D){return A[D]})}});String.prototype.toggle=function(B,A){return this==B?A:B};String.prototype.trim=function(){var A=/^\s+|\s+$/g;return function(){return this.replace(A,"")}}();Ext.applyIf(Number.prototype,{constrain:function(B,A){return Math.min(Math.max(this,B),A)}});Ext.applyIf(Array.prototype,{indexOf:function(C){for(var B=0,A=this.length;B<A;B++){if(this[B]==C){return B}}return -1},remove:function(B){var A=this.indexOf(B);if(A!=-1){this.splice(A,1)}return this}});Date.prototype.getElapsed=function(A){return Math.abs((A||new Date()).getTime()-this.getTime())};
+(function(){var B;Ext.lib.Dom={getViewWidth:function(E){return E?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(E){return E?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){var E=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(E,this.getViewportHeight())},getDocumentWidth:function(){var E=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(E,this.getViewportWidth())},getViewportHeight:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientHeight:document.body.clientHeight}else{return self.innerHeight}},getViewportWidth:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientWidth:document.body.clientWidth}else{return self.innerWidth}},isAncestor:function(F,G){F=Ext.getDom(F);G=Ext.getDom(G);if(!F||!G){return false}if(F.contains&&!Ext.isSafari){return F.contains(G)}else{if(F.compareDocumentPosition){return !!(F.compareDocumentPosition(G)&16)}else{var E=G.parentNode;while(E){if(E==F){return true}else{if(!E.tagName||E.tagName.toUpperCase()=="HTML"){return false}}E=E.parentNode}return false}}},getRegion:function(E){return Ext.lib.Region.getRegion(E)},getY:function(E){return this.getXY(E)[1]},getX:function(E){return this.getXY(E)[0]},getXY:function(G){var F,K,M,N,J=(document.body||document.documentElement);G=Ext.getDom(G);if(G==J){return[0,0]}if(G.getBoundingClientRect){M=G.getBoundingClientRect();N=C(document).getScroll();return[M.left+N.left,M.top+N.top]}var O=0,L=0;F=G;var E=C(G).getStyle("position")=="absolute";while(F){O+=F.offsetLeft;L+=F.offsetTop;if(!E&&C(F).getStyle("position")=="absolute"){E=true}if(Ext.isGecko){K=C(F);var P=parseInt(K.getStyle("borderTopWidth"),10)||0;var H=parseInt(K.getStyle("borderLeftWidth"),10)||0;O+=H;L+=P;if(F!=G&&K.getStyle("overflow")!="visible"){O+=H;L+=P}}F=F.offsetParent}if(Ext.isSafari&&E){O-=J.offsetLeft;L-=J.offsetTop}if(Ext.isGecko&&!E){var I=C(J);O+=parseInt(I.getStyle("borderLeftWidth"),10)||0;L+=parseInt(I.getStyle("borderTopWidth"),10)||0}F=G.parentNode;while(F&&F!=J){if(!Ext.isOpera||(F.tagName!="TR"&&C(F).getStyle("display")!="inline")){O-=F.scrollLeft;L-=F.scrollTop}F=F.parentNode}return[O,L]},setXY:function(E,F){E=Ext.fly(E,"_setXY");E.position();var G=E.translatePoints(F);if(F[0]!==false){E.dom.style.left=G.left+"px"}if(F[1]!==false){E.dom.style.top=G.top+"px"}},setX:function(F,E){this.setXY(F,[E,false])},setY:function(E,F){this.setXY(E,[false,F])}};Ext.lib.Event=function(){var F=false;var G=[];var K=[];var I=0;var H=[];var E=0;var J=null;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,_interval:null,startInterval:function(){if(!this._interval){var L=this;var M=function(){L._tryPreloadAttach()};this._interval=setInterval(M,this.POLL_INTERVAL)}},onAvailable:function(N,L,O,M){H.push({id:N,fn:L,obj:O,override:M,checkReady:false});I=this.POLL_RETRYS;this.startInterval()},addListener:function(Q,M,P){Q=Ext.getDom(Q);if(!Q||!P){return false}if("unload"==M){K[K.length]=[Q,M,P];return true}var O=function(R){return typeof Ext!="undefined"?P(Ext.lib.Event.getEvent(R)):false};var L=[Q,M,P,O];var N=G.length;G[N]=L;this.doAdd(Q,M,O,false);return true},removeListener:function(S,O,R){var Q,N;S=Ext.getDom(S);if(!R){return this.purgeElement(S,false,O)}if("unload"==O){for(Q=0,N=K.length;Q<N;Q++){var M=K[Q];if(M&&M[0]==S&&M[1]==O&&M[2]==R){K.splice(Q,1);return true}}return false}var L=null;var P=arguments[3];if("undefined"==typeof P){P=this._getCacheIndex(S,O,R)}if(P>=0){L=G[P]}if(!S||!L){return false}this.doRemove(S,O,L[this.WFN],false);delete G[P][this.WFN];delete G[P][this.FN];G.splice(P,1);return true},getTarget:function(N,M){N=N.browserEvent||N;var L=N.target||N.srcElement;return this.resolveTextNode(L)},resolveTextNode:function(L){if(Ext.isSafari&&L&&3==L.nodeType){return L.parentNode}else{return L}},getPageX:function(M){M=M.browserEvent||M;var L=M.pageX;if(!L&&0!==L){L=M.clientX||0;if(Ext.isIE){L+=this.getScroll()[1]}}return L},getPageY:function(L){L=L.browserEvent||L;var M=L.pageY;if(!M&&0!==M){M=L.clientY||0;if(Ext.isIE){M+=this.getScroll()[0]}}return M},getXY:function(L){L=L.browserEvent||L;return[this.getPageX(L),this.getPageY(L)]},getRelatedTarget:function(M){M=M.browserEvent||M;var L=M.relatedTarget;if(!L){if(M.type=="mouseout"){L=M.toElement}else{if(M.type=="mouseover"){L=M.fromElement}}}return this.resolveTextNode(L)},getTime:function(N){N=N.browserEvent||N;if(!N.time){var M=new Date().getTime();try{N.time=M}catch(L){this.lastError=L;return M}}return N.time},stopEvent:function(L){this.stopPropagation(L);this.preventDefault(L)},stopPropagation:function(L){L=L.browserEvent||L;if(L.stopPropagation){L.stopPropagation()}else{L.cancelBubble=true}},preventDefault:function(L){L=L.browserEvent||L;if(L.preventDefault){L.preventDefault()}else{L.returnValue=false}},getEvent:function(M){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break}N=N.caller}}return L},getCharCode:function(L){L=L.browserEvent||L;return L.charCode||L.keyCode||0},_getCacheIndex:function(Q,N,P){for(var O=0,M=G.length;O<M;++O){var L=G[O];if(L&&L[this.FN]==P&&L[this.EL]==Q&&L[this.TYPE]==N){return O}}return -1},elCache:{},getEl:function(L){return document.getElementById(L)},clearCache:function(){},_load:function(M){F=true;var L=Ext.lib.Event;if(Ext.isIE){L.doRemove(window,"load",L._load)}},_tryPreloadAttach:function(){if(this.locked){return false}this.locked=true;var R=!F;if(!R){R=(I>0)}var Q=[];for(var M=0,L=H.length;M<L;++M){var P=H[M];if(P){var O=this.getEl(P.id);if(O){if(!P.checkReady||F||O.nextSibling||(document&&document.body)){var N=O;if(P.override){if(P.override===true){N=P.obj}else{N=P.override}}P.fn.call(N,P.obj);H[M]=null}}else{Q.push(P)}}}I=(Q.length===0)?0:I-1;if(R){this.startInterval()}else{clearInterval(this._interval);this._interval=null}this.locked=false;return true},purgeElement:function(P,Q,N){var R=this.getListeners(P,N);if(R){for(var O=0,L=R.length;O<L;++O){var M=R[O];this.removeListener(P,M.type,M.fn)}}if(Q&&P&&P.childNodes){for(O=0,L=P.childNodes.length;O<L;++O){this.purgeElement(P.childNodes[O],Q,N)}}},getListeners:function(M,R){var P=[],L;if(!R){L=[G,K]}else{if(R=="unload"){L=[K]}else{L=[G]}}for(var O=0;O<L.length;++O){var T=L[O];if(T&&T.length>0){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===M&&(!R||R===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.ADJ_SCOPE],index:Q})}}}}return(P.length)?P:null},_unload:function(S){var R=Ext.lib.Event,P,O,M,L,N;for(P=0,L=K.length;P<L;++P){M=K[P];if(M){var Q=window;if(M[R.ADJ_SCOPE]){if(M[R.ADJ_SCOPE]===true){Q=M[R.OBJ]}else{Q=M[R.ADJ_SCOPE]}}M[R.FN].call(Q,R.getEvent(S),M[R.OBJ]);K[P]=null;M=null;Q=null}}K=null;if(G&&G.length>0){O=G.length;while(O){N=O-1;M=G[N];if(M){R.removeListener(M[R.EL],M[R.TYPE],M[R.FN],N)}O=O-1}M=null;R.clearCache()}R.doRemove(window,"unload",R._unload)},getScroll:function(){var L=document.documentElement,M=document.body;if(L&&(L.scrollTop||L.scrollLeft)){return[L.scrollTop,L.scrollLeft]}else{if(M){return[M.scrollTop,M.scrollLeft]}else{return[0,0]}}},doAdd:function(){if(window.addEventListener){return function(O,M,N,L){O.addEventListener(M,N,(L))}}else{if(window.attachEvent){return function(O,M,N,L){O.attachEvent("on"+M,N)}}else{return function(){}}}}(),doRemove:function(){if(window.removeEventListener){return function(O,M,N,L){O.removeEventListener(M,N,(L))}}else{if(window.detachEvent){return function(N,L,M){N.detachEvent("on"+L,M)}}else{return function(){}}}}()}}();var D=Ext.lib.Event;D.on=D.addListener;D.un=D.removeListener;if(document&&document.body){D._load()}else{D.doAdd(window,"load",D._load)}D.doAdd(window,"unload",D._unload);D._tryPreloadAttach();Ext.lib.Ajax={request:function(K,I,E,J,F){if(F){var G=F.headers;if(G){for(var H in G){if(G.hasOwnProperty(H)){this.initHeader(H,G[H],false)}}}if(F.xmlData){if(!G||!G["Content-Type"]){this.initHeader("Content-Type","text/xml",false)}K=(K?K:(F.method?F.method:"POST"));J=F.xmlData}else{if(F.jsonData){if(!G||!G["Content-Type"]){this.initHeader("Content-Type","application/json",false)}K=(K?K:(F.method?F.method:"POST"));J=typeof F.jsonData=="object"?Ext.encode(F.jsonData):F.jsonData}}}return this.asyncRequest(K,I,E,J)},serializeForm:function(F){if(typeof F=="string"){F=(document.getElementById(F)||document.forms[F])}var G,E,H,J,K="",M=false;for(var L=0;L<F.elements.length;L++){G=F.elements[L];J=F.elements[L].disabled;E=F.elements[L].name;H=F.elements[L].value;if(!J&&E){switch(G.type){case"select-one":case"select-multiple":for(var I=0;I<G.options.length;I++){if(G.options[I].selected){if(Ext.isIE){K+=encodeURIComponent(E)+"="+encodeURIComponent(G.options[I].attributes["value"].specified?G.options[I].value:G.options[I].text)+"&"}else{K+=encodeURIComponent(E)+"="+encodeURIComponent(G.options[I].hasAttribute("value")?G.options[I].value:G.options[I].text)+"&"}}}break;case"radio":case"checkbox":if(G.checked){K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&"}break;case"file":case undefined:case"reset":case"button":break;case"submit":if(M==false){K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&";M=true}break;default:K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&";break}}}K=K.substr(0,K.length-1);return K},headers:{},hasHeaders:false,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",hasDefaultHeaders:true,defaultHeaders:{},poll:{},timeout:{},pollInterval:50,transactionId:0,setProgId:function(E){this.activeX.unshift(E)},setDefaultPostHeader:function(E){this.useDefaultHeader=E},setDefaultXhrHeader:function(E){this.useDefaultXhrHeader=E},setPollingInterval:function(E){if(typeof E=="number"&&isFinite(E)){this.pollInterval=E}},createXhrObject:function(I){var H,E;try{E=new XMLHttpRequest();H={conn:E,tId:I}}catch(G){for(var F=0;F<this.activeX.length;++F){try{E=new ActiveXObject(this.activeX[F]);H={conn:E,tId:I};break}catch(G){}}}finally{return H}},getConnectionObject:function(){var F;var G=this.transactionId;try{F=this.createXhrObject(G);if(F){this.transactionId++}}catch(E){}finally{return F}},asyncRequest:function(I,F,H,E){var G=this.getConnectionObject();if(!G){return null}else{G.conn.open(I,F,true);if(this.useDefaultXhrHeader){if(!this.defaultHeaders["X-Requested-With"]){this.initHeader("X-Requested-With",this.defaultXhrHeader,true)}}if(E&&this.useDefaultHeader&&(!this.hasHeaders||!this.headers["Content-Type"])){this.initHeader("Content-Type",this.defaultPostHeader)}if(this.hasDefaultHeaders||this.hasHeaders){this.setHeader(G)}this.handleReadyState(G,H);G.conn.send(E||null);return G}},handleReadyState:function(F,G){var E=this;if(G&&G.timeout){this.timeout[F.tId]=window.setTimeout(function(){E.abort(F,G,true)},G.timeout)}this.poll[F.tId]=window.setInterval(function(){if(F.conn&&F.conn.readyState==4){window.clearInterval(E.poll[F.tId]);delete E.poll[F.tId];if(G&&G.timeout){window.clearTimeout(E.timeout[F.tId]);delete E.timeout[F.tId]}E.handleTransactionResponse(F,G)}},this.pollInterval)},handleTransactionResponse:function(I,J,E){if(!J){this.releaseObject(I);return }var G,F;try{if(I.conn.status!==undefined&&I.conn.status!=0){G=I.conn.status}else{G=13030}}catch(H){G=13030}if(G>=200&&G<300){F=this.createResponseObject(I,J.argument);if(J.success){if(!J.scope){J.success(F)}else{J.success.apply(J.scope,[F])}}}else{switch(G){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:F=this.createExceptionObject(I.tId,J.argument,(E?E:false));if(J.failure){if(!J.scope){J.failure(F)}else{J.failure.apply(J.scope,[F])}}break;default:F=this.createResponseObject(I,J.argument);if(J.failure){if(!J.scope){J.failure(F)}else{J.failure.apply(J.scope,[F])}}}}this.releaseObject(I);F=null},createResponseObject:function(E,K){var H={};var M={};try{var G=E.conn.getAllResponseHeaders();var J=G.split("\n");for(var I=0;I<J.length;I++){var F=J[I].indexOf(":");if(F!=-1){M[J[I].substring(0,F)]=J[I].substring(F+2)}}}catch(L){}H.tId=E.tId;H.status=E.conn.status;H.statusText=E.conn.statusText;H.getResponseHeader=M;H.getAllResponseHeaders=G;H.responseText=E.conn.responseText;H.responseXML=E.conn.responseXML;if(typeof K!==undefined){H.argument=K}return H},createExceptionObject:function(L,H,E){var J=0;var K="communication failure";var G=-1;var F="transaction aborted";var I={};I.tId=L;if(E){I.status=G;I.statusText=F}else{I.status=J;I.statusText=K}if(H){I.argument=H}return I},initHeader:function(E,H,G){var F=(G)?this.defaultHeaders:this.headers;if(F[E]===undefined){F[E]=H}else{F[E]=H+","+F[E]}if(G){this.hasDefaultHeaders=true}else{this.hasHeaders=true}},setHeader:function(E){if(this.hasDefaultHeaders){for(var F in this.defaultHeaders){if(this.defaultHeaders.hasOwnProperty(F)){E.conn.setRequestHeader(F,this.defaultHeaders[F])}}}if(this.hasHeaders){for(var F in this.headers){if(this.headers.hasOwnProperty(F)){E.conn.setRequestHeader(F,this.headers[F])}}this.headers={};this.hasHeaders=false}},resetDefaultHeaders:function(){delete this.defaultHeaders;this.defaultHeaders={};this.hasDefaultHeaders=false},abort:function(F,G,E){if(this.isCallInProgress(F)){F.conn.abort();window.clearInterval(this.poll[F.tId]);delete this.poll[F.tId];if(E){delete this.timeout[F.tId]}this.handleTransactionResponse(F,G,true);return true}else{return false}},isCallInProgress:function(E){if(E.conn){return E.conn.readyState!=4&&E.conn.readyState!=0}else{return false}},releaseObject:function(E){E.conn=null;E=null},activeX:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]};Ext.lib.Region=function(G,H,E,F){this.top=G;this[1]=G;this.right=H;this.bottom=E;this.left=F;this[0]=F};Ext.lib.Region.prototype={contains:function(E){return(E.left>=this.left&&E.right<=this.right&&E.top>=this.top&&E.bottom<=this.bottom)},getArea:function(){return((this.bottom-this.top)*(this.right-this.left))},intersect:function(I){var G=Math.max(this.top,I.top);var H=Math.min(this.right,I.right);var E=Math.min(this.bottom,I.bottom);var F=Math.max(this.left,I.left);if(E>=G&&H>=F){return new Ext.lib.Region(G,H,E,F)}else{return null}},union:function(I){var G=Math.min(this.top,I.top);var H=Math.max(this.right,I.right);var E=Math.max(this.bottom,I.bottom);var F=Math.min(this.left,I.left);return new Ext.lib.Region(G,H,E,F)},constrainTo:function(E){this.top=this.top.constrain(E.top,E.bottom);this.bottom=this.bottom.constrain(E.top,E.bottom);this.left=this.left.constrain(E.left,E.right);this.right=this.right.constrain(E.left,E.right);return this},adjust:function(G,F,E,H){this.top+=G;this.left+=F;this.right+=H;this.bottom+=E;return this}};Ext.lib.Region.getRegion=function(H){var J=Ext.lib.Dom.getXY(H);var G=J[1];var I=J[0]+H.offsetWidth;var E=J[1]+H.offsetHeight;var F=J[0];return new Ext.lib.Region(G,I,E,F)};Ext.lib.Point=function(E,F){if(Ext.isArray(E)){F=E[1];E=E[0]}this.x=this.right=this.left=this[0]=E;this.y=this.top=this.bottom=this[1]=F};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.lib.Anim={scroll:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.Scroll)},motion:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.Motion)},color:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.ColorAnim)},run:function(I,F,K,L,E,H,G){G=G||Ext.lib.AnimBase;if(typeof L=="string"){L=Ext.lib.Easing[L]}var J=new G(I,F,K,L);J.animateX(function(){Ext.callback(E,H)});return J}};function C(E){if(!B){B=new Ext.Element.Flyweight()}B.dom=E;return B}if(Ext.isIE){function A(){var E=Function.prototype;delete E.createSequence;delete E.defer;delete E.createDelegate;delete E.createCallback;delete E.createInterceptor;window.detachEvent("onunload",A)}window.attachEvent("onunload",A)}Ext.lib.AnimBase=function(F,E,G,H){if(F){this.init(F,E,G,H)}};Ext.lib.AnimBase.prototype={toString:function(){var E=this.getEl();var F=E.id||E.tagName;return("Anim "+F)},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(E,G,F){return this.method(this.currentFrame,G,F-G,this.totalFrames)},setAttribute:function(E,G,F){if(this.patterns.noNegatives.test(E)){G=(G>0)?G:0}Ext.fly(this.getEl(),"_anim").setStyle(E,G+F)},getAttribute:function(E){var G=this.getEl();var I=C(G).getStyle(E);if(I!=="auto"&&!this.patterns.offsetUnit.test(I)){return parseFloat(I)}var F=this.patterns.offsetAttribute.exec(E)||[];var J=!!(F[3]);var H=!!(F[2]);if(H||(C(G).getStyle("position")=="absolute"&&J)){I=G["offset"+F[0].charAt(0).toUpperCase()+F[0].substr(1)]}else{I=0}return I},getDefaultUnit:function(E){if(this.patterns.defaultUnit.test(E)){return"px"}return""},animateX:function(G,E){var F=function(){this.onComplete.removeListener(F);if(typeof G=="function"){G.call(E||this,this)}};this.onComplete.addListener(F,this);this.animate()},setRuntimeAttribute:function(F){var K;var G;var H=this.attributes;this.runtimeAttributes[F]={};var J=function(L){return(typeof L!=="undefined")};if(!J(H[F]["to"])&&!J(H[F]["by"])){return false}K=(J(H[F]["from"]))?H[F]["from"]:this.getAttribute(F);if(J(H[F]["to"])){G=H[F]["to"]}else{if(J(H[F]["by"])){if(K.constructor==Array){G=[];for(var I=0,E=K.length;I<E;++I){G[I]=K[I]+H[F]["by"][I]}}else{G=K+H[F]["by"]}}}this.runtimeAttributes[F].start=K;this.runtimeAttributes[F].end=G;this.runtimeAttributes[F].unit=(J(H[F].unit))?H[F]["unit"]:this.getDefaultUnit(F)},init:function(G,L,K,E){var F=false;var H=null;var J=0;G=Ext.getDom(G);this.attributes=L||{};this.duration=K||1;this.method=E||Ext.lib.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=Ext.lib.AnimMgr.fps;this.getEl=function(){return G};this.isAnimated=function(){return F};this.getStartTime=function(){return H};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(Ext.lib.AnimMgr.fps*this.duration):this.duration;Ext.lib.AnimMgr.registerElement(this)};this.stop=function(O){if(O){this.currentFrame=this.totalFrames;this._onTween.fire()}Ext.lib.AnimMgr.stop(this)};var N=function(){this.onStart.fire();this.runtimeAttributes={};for(var O in this.attributes){this.setRuntimeAttribute(O)}F=true;J=0;H=new Date()};var M=function(){var Q={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};Q.toString=function(){return("duration: "+Q.duration+", currentFrame: "+Q.currentFrame)};this.onTween.fire(Q);var P=this.runtimeAttributes;for(var O in P){this.setAttribute(O,this.doMethod(O,P[O].start,P[O].end),P[O].unit)}J+=1};var I=function(){var O=(new Date()-H)/1000;var P={duration:O,frames:J,fps:J/O};P.toString=function(){return("duration: "+P.duration+", frames: "+P.frames+", fps: "+P.fps)};F=false;J=0;this.onComplete.fire(P)};this._onStart=new Ext.util.Event(this);this.onStart=new Ext.util.Event(this);this.onTween=new Ext.util.Event(this);this._onTween=new Ext.util.Event(this);this.onComplete=new Ext.util.Event(this);this._onComplete=new Ext.util.Event(this);this._onStart.addListener(N);this._onTween.addListener(M);this._onComplete.addListener(I)}};Ext.lib.AnimMgr=new function(){var G=null;var F=[];var E=0;this.fps=1000;this.delay=1;this.registerElement=function(J){F[F.length]=J;E+=1;J._onStart.fire();this.start()};this.unRegister=function(K,J){K._onComplete.fire();J=J||I(K);if(J!=-1){F.splice(J,1)}E-=1;if(E<=0){this.stop()}};this.start=function(){if(G===null){G=setInterval(this.run,this.delay)}};this.stop=function(L){if(!L){clearInterval(G);for(var K=0,J=F.length;K<J;++K){if(F[0].isAnimated()){this.unRegister(F[0],0)}}F=[];G=null;E=0}else{this.unRegister(L)}};this.run=function(){for(var L=0,J=F.length;L<J;++L){var K=F[L];if(!K||!K.isAnimated()){continue}if(K.currentFrame<K.totalFrames||K.totalFrames===null){K.currentFrame+=1;if(K.useSeconds){H(K)}K._onTween.fire()}else{Ext.lib.AnimMgr.stop(K,L)}}};var I=function(L){for(var K=0,J=F.length;K<J;++K){if(F[K]==L){return K}}return -1};var H=function(K){var N=K.totalFrames;var M=K.currentFrame;var L=(K.currentFrame*K.duration*1000/K.totalFrames);var J=(new Date()-K.getStartTime());var O=0;if(J<K.duration*1000){O=Math.round((J/L-1)*K.currentFrame)}else{O=N-(M+1)}if(O>0&&isFinite(O)){if(K.currentFrame+O>=N){O=N-(M+1)}K.currentFrame+=O}}};Ext.lib.Bezier=new function(){this.getPosition=function(I,H){var J=I.length;var G=[];for(var F=0;F<J;++F){G[F]=[I[F][0],I[F][1]]}for(var E=1;E<J;++E){for(F=0;F<J-E;++F){G[F][0]=(1-H)*G[F][0]+H*G[parseInt(F+1,10)][0];G[F][1]=(1-H)*G[F][1]+H*G[parseInt(F+1,10)][1]}}return[G[0][0],G[0][1]]}};(function(){Ext.lib.ColorAnim=function(I,H,J,K){Ext.lib.ColorAnim.superclass.constructor.call(this,I,H,J,K)};Ext.extend(Ext.lib.ColorAnim,Ext.lib.AnimBase);var F=Ext.lib;var G=F.ColorAnim.superclass;var E=F.ColorAnim.prototype;E.toString=function(){var H=this.getEl();var I=H.id||H.tagName;return("ColorAnim "+I)};E.patterns.color=/color$/i;E.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;E.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;E.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;E.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;E.parseColor=function(H){if(H.length==3){return H}var I=this.patterns.hex.exec(H);if(I&&I.length==4){return[parseInt(I[1],16),parseInt(I[2],16),parseInt(I[3],16)]}I=this.patterns.rgb.exec(H);if(I&&I.length==4){return[parseInt(I[1],10),parseInt(I[2],10),parseInt(I[3],10)]}I=this.patterns.hex3.exec(H);if(I&&I.length==4){return[parseInt(I[1]+I[1],16),parseInt(I[2]+I[2],16),parseInt(I[3]+I[3],16)]}return null};E.getAttribute=function(H){var J=this.getEl();if(this.patterns.color.test(H)){var K=C(J).getStyle(H);if(this.patterns.transparent.test(K)){var I=J.parentNode;K=C(I).getStyle(H);while(I&&this.patterns.transparent.test(K)){I=I.parentNode;K=C(I).getStyle(H);if(I.tagName.toUpperCase()=="HTML"){K="#fff"}}}}else{K=G.getAttribute.call(this,H)}return K};E.doMethod=function(I,M,J){var L;if(this.patterns.color.test(I)){L=[];for(var K=0,H=M.length;K<H;++K){L[K]=G.doMethod.call(this,I,M[K],J[K])}L="rgb("+Math.floor(L[0])+","+Math.floor(L[1])+","+Math.floor(L[2])+")"}else{L=G.doMethod.call(this,I,M,J)}return L};E.setRuntimeAttribute=function(I){G.setRuntimeAttribute.call(this,I);if(this.patterns.color.test(I)){var K=this.attributes;var M=this.parseColor(this.runtimeAttributes[I].start);var J=this.parseColor(this.runtimeAttributes[I].end);if(typeof K[I]["to"]==="undefined"&&typeof K[I]["by"]!=="undefined"){J=this.parseColor(K[I].by);for(var L=0,H=M.length;L<H;++L){J[L]=M[L]+J[L]}}this.runtimeAttributes[I].start=M;this.runtimeAttributes[I].end=J}}})();Ext.lib.Easing={easeNone:function(F,E,H,G){return H*F/G+E},easeIn:function(F,E,H,G){return H*(F/=G)*F+E},easeOut:function(F,E,H,G){return -H*(F/=G)*(F-2)+E},easeBoth:function(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E},easeInStrong:function(F,E,H,G){return H*(F/=G)*F*F*F+E},easeOutStrong:function(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E},easeBothStrong:function(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E},elasticIn:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}return -(F*Math.pow(2,10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I))+E},elasticOut:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}return F*Math.pow(2,-10*G)*Math.sin((G*J-H)*(2*Math.PI)/I)+K+E},elasticBoth:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J/2)==2){return E+K}if(!I){I=J*(0.3*1.5)}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}if(G<1){return -0.5*(F*Math.pow(2,10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I))+E}return F*Math.pow(2,-10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I)*0.5+K+E},backIn:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}return I*(F/=H)*F*((G+1)*F-G)+E},backOut:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}return I*((F=F/H-1)*F*((G+1)*F+G)+1)+E},backBoth:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}if((F/=H/2)<1){return I/2*(F*F*(((G*=(1.525))+1)*F-G))+E}return I/2*((F-=2)*F*(((G*=(1.525))+1)*F+G)+2)+E},bounceIn:function(F,E,H,G){return H-Ext.lib.Easing.bounceOut(G-F,0,H,G)+E},bounceOut:function(F,E,H,G){if((F/=G)<(1/2.75)){return H*(7.5625*F*F)+E}else{if(F<(2/2.75)){return H*(7.5625*(F-=(1.5/2.75))*F+0.75)+E}else{if(F<(2.5/2.75)){return H*(7.5625*(F-=(2.25/2.75))*F+0.9375)+E}}}return H*(7.5625*(F-=(2.625/2.75))*F+0.984375)+E},bounceBoth:function(F,E,H,G){if(F<G/2){return Ext.lib.Easing.bounceIn(F*2,0,H,G)*0.5+E}return Ext.lib.Easing.bounceOut(F*2-G,0,H,G)*0.5+H*0.5+E}};(function(){Ext.lib.Motion=function(K,J,L,M){if(K){Ext.lib.Motion.superclass.constructor.call(this,K,J,L,M)}};Ext.extend(Ext.lib.Motion,Ext.lib.ColorAnim);var H=Ext.lib;var I=H.Motion.superclass;var F=H.Motion.prototype;F.toString=function(){var J=this.getEl();var K=J.id||J.tagName;return("Motion "+K)};F.patterns.points=/^points$/i;F.setAttribute=function(J,L,K){if(this.patterns.points.test(J)){K=K||"px";I.setAttribute.call(this,"left",L[0],K);I.setAttribute.call(this,"top",L[1],K)}else{I.setAttribute.call(this,J,L,K)}};F.getAttribute=function(J){if(this.patterns.points.test(J)){var K=[I.getAttribute.call(this,"left"),I.getAttribute.call(this,"top")]}else{K=I.getAttribute.call(this,J)}return K};F.doMethod=function(J,N,K){var M=null;if(this.patterns.points.test(J)){var L=this.method(this.currentFrame,0,100,this.totalFrames)/100;M=H.Bezier.getPosition(this.runtimeAttributes[J],L)}else{M=I.doMethod.call(this,J,N,K)}return M};F.setRuntimeAttribute=function(S){if(this.patterns.points.test(S)){var K=this.getEl();var M=this.attributes;var J;var O=M["points"]["control"]||[];var L;var P,R;if(O.length>0&&!Ext.isArray(O[0])){O=[O]}else{var N=[];for(P=0,R=O.length;P<R;++P){N[P]=O[P]}O=N}Ext.fly(K,"_anim").position();if(G(M["points"]["from"])){Ext.lib.Dom.setXY(K,M["points"]["from"])}else{Ext.lib.Dom.setXY(K,Ext.lib.Dom.getXY(K))}J=this.getAttribute("points");if(G(M["points"]["to"])){L=E.call(this,M["points"]["to"],J);var Q=Ext.lib.Dom.getXY(this.getEl());for(P=0,R=O.length;P<R;++P){O[P]=E.call(this,O[P],J)}}else{if(G(M["points"]["by"])){L=[J[0]+M["points"]["by"][0],J[1]+M["points"]["by"][1]];for(P=0,R=O.length;P<R;++P){O[P]=[J[0]+O[P][0],J[1]+O[P][1]]}}}this.runtimeAttributes[S]=[J];if(O.length>0){this.runtimeAttributes[S]=this.runtimeAttributes[S].concat(O)}this.runtimeAttributes[S][this.runtimeAttributes[S].length]=L}else{I.setRuntimeAttribute.call(this,S)}};var E=function(J,L){var K=Ext.lib.Dom.getXY(this.getEl());J=[J[0]-K[0]+L[0],J[1]-K[1]+L[1]];return J};var G=function(J){return(typeof J!=="undefined")}})();(function(){Ext.lib.Scroll=function(I,H,J,K){if(I){Ext.lib.Scroll.superclass.constructor.call(this,I,H,J,K)}};Ext.extend(Ext.lib.Scroll,Ext.lib.ColorAnim);var F=Ext.lib;var G=F.Scroll.superclass;var E=F.Scroll.prototype;E.toString=function(){var H=this.getEl();var I=H.id||H.tagName;return("Scroll "+I)};E.doMethod=function(H,K,I){var J=null;if(H=="scroll"){J=[this.method(this.currentFrame,K[0],I[0]-K[0],this.totalFrames),this.method(this.currentFrame,K[1],I[1]-K[1],this.totalFrames)]}else{J=G.doMethod.call(this,H,K,I)}return J};E.getAttribute=function(H){var J=null;var I=this.getEl();if(H=="scroll"){J=[I.scrollLeft,I.scrollTop]}else{J=G.getAttribute.call(this,H)}return J};E.setAttribute=function(H,K,J){var I=this.getEl();if(H=="scroll"){I.scrollLeft=K[0];I.scrollTop=K[1]}else{G.setAttribute.call(this,H,K,J)}}})()})();
diff --git a/deluge/ui/web/docs/template/resources/extanim32.gif b/deluge/ui/web/docs/template/resources/extanim32.gif
new file mode 100644
index 0000000..effe7c9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/extanim32.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/extanim64.gif b/deluge/ui/web/docs/template/resources/extanim64.gif
new file mode 100644
index 0000000..07a6862
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/extanim64.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/extjs.gif b/deluge/ui/web/docs/template/resources/extjs.gif
new file mode 100644
index 0000000..724796d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/extjs.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/fav.gif b/deluge/ui/web/docs/template/resources/fav.gif
new file mode 100644
index 0000000..abe3cf0
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/fav.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/folder.gif b/deluge/ui/web/docs/template/resources/folder.gif
new file mode 100644
index 0000000..2064442
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/folder.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/folder_open.gif b/deluge/ui/web/docs/template/resources/folder_open.gif
new file mode 100644
index 0000000..ba4c657
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/folder_open.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/form.png b/deluge/ui/web/docs/template/resources/form.png
new file mode 100644
index 0000000..ef32f38
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/form.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/forum.gif b/deluge/ui/web/docs/template/resources/forum.gif
new file mode 100644
index 0000000..21d7268
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/forum.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/hd-bg.gif b/deluge/ui/web/docs/template/resources/hd-bg.gif
new file mode 100644
index 0000000..310102a
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/hd-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/hide-inherited.gif b/deluge/ui/web/docs/template/resources/hide-inherited.gif
new file mode 100644
index 0000000..eae8e54
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/hide-inherited.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/icon-grid.gif b/deluge/ui/web/docs/template/resources/icon-grid.gif
new file mode 100644
index 0000000..6b64286
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/icon-grid.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/box/corners-blue.gif b/deluge/ui/web/docs/template/resources/images/default/box/corners-blue.gif
new file mode 100644
index 0000000..fa419b5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/box/corners-blue.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/box/corners.gif b/deluge/ui/web/docs/template/resources/images/default/box/corners.gif
new file mode 100644
index 0000000..8aa8cae
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/box/corners.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/box/l-blue.gif b/deluge/ui/web/docs/template/resources/images/default/box/l-blue.gif
new file mode 100644
index 0000000..5ed7f00
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/box/l-blue.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/box/l.gif b/deluge/ui/web/docs/template/resources/images/default/box/l.gif
new file mode 100644
index 0000000..0160f97
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/box/l.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/box/r-blue.gif b/deluge/ui/web/docs/template/resources/images/default/box/r-blue.gif
new file mode 100644
index 0000000..3ea5cae
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/box/r-blue.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/box/r.gif b/deluge/ui/web/docs/template/resources/images/default/box/r.gif
new file mode 100644
index 0000000..34237f6
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/box/r.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/box/tb-blue.gif b/deluge/ui/web/docs/template/resources/images/default/box/tb-blue.gif
new file mode 100644
index 0000000..562fecc
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/box/tb-blue.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/box/tb.gif b/deluge/ui/web/docs/template/resources/images/default/box/tb.gif
new file mode 100644
index 0000000..435889b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/box/tb.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/button/btn-arrow.gif b/deluge/ui/web/docs/template/resources/images/default/button/btn-arrow.gif
new file mode 100644
index 0000000..f90d5df
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/button/btn-arrow.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/button/btn-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/button/btn-sprite.gif
new file mode 100644
index 0000000..b52e0ce
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/button/btn-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/dd/drop-add.gif b/deluge/ui/web/docs/template/resources/images/default/dd/drop-add.gif
new file mode 100644
index 0000000..b22cd14
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/dd/drop-add.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/dd/drop-no.gif b/deluge/ui/web/docs/template/resources/images/default/dd/drop-no.gif
new file mode 100644
index 0000000..08d0833
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/dd/drop-no.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/dd/drop-yes.gif b/deluge/ui/web/docs/template/resources/images/default/dd/drop-yes.gif
new file mode 100644
index 0000000..8aacb30
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/dd/drop-yes.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/editor/tb-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/editor/tb-sprite.gif
new file mode 100644
index 0000000..fb70577
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/editor/tb-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/checkbox.gif b/deluge/ui/web/docs/template/resources/images/default/form/checkbox.gif
new file mode 100644
index 0000000..835b346
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/checkbox.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/clear-trigger.gif b/deluge/ui/web/docs/template/resources/images/default/form/clear-trigger.gif
new file mode 100644
index 0000000..da78d45
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/clear-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/clear-trigger.psd b/deluge/ui/web/docs/template/resources/images/default/form/clear-trigger.psd
new file mode 100644
index 0000000..f637fa5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/clear-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/date-trigger.gif b/deluge/ui/web/docs/template/resources/images/default/form/date-trigger.gif
new file mode 100644
index 0000000..25ef7b3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/date-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/date-trigger.psd b/deluge/ui/web/docs/template/resources/images/default/form/date-trigger.psd
new file mode 100644
index 0000000..74883b2
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/date-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/error-tip-corners.gif b/deluge/ui/web/docs/template/resources/images/default/form/error-tip-corners.gif
new file mode 100644
index 0000000..6ea4c38
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/error-tip-corners.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/exclamation.gif b/deluge/ui/web/docs/template/resources/images/default/form/exclamation.gif
new file mode 100644
index 0000000..ea31a30
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/exclamation.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/radio.gif b/deluge/ui/web/docs/template/resources/images/default/form/radio.gif
new file mode 100644
index 0000000..36bb91d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/radio.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/search-trigger.gif b/deluge/ui/web/docs/template/resources/images/default/form/search-trigger.gif
new file mode 100644
index 0000000..db8802b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/search-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/search-trigger.psd b/deluge/ui/web/docs/template/resources/images/default/form/search-trigger.psd
new file mode 100644
index 0000000..b11f273
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/search-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/text-bg.gif b/deluge/ui/web/docs/template/resources/images/default/form/text-bg.gif
new file mode 100644
index 0000000..4179607
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/text-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/trigger-tpl.gif b/deluge/ui/web/docs/template/resources/images/default/form/trigger-tpl.gif
new file mode 100644
index 0000000..e3701a3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/trigger-tpl.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/trigger.gif b/deluge/ui/web/docs/template/resources/images/default/form/trigger.gif
new file mode 100644
index 0000000..b220bbe
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/trigger.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/form/trigger.psd b/deluge/ui/web/docs/template/resources/images/default/form/trigger.psd
new file mode 100644
index 0000000..1f1ed64
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/form/trigger.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/gradient-bg.gif b/deluge/ui/web/docs/template/resources/images/default/gradient-bg.gif
new file mode 100644
index 0000000..8134e49
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/gradient-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/arrow-left-white.gif b/deluge/ui/web/docs/template/resources/images/default/grid/arrow-left-white.gif
new file mode 100644
index 0000000..63088f5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/arrow-left-white.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/arrow-right-white.gif b/deluge/ui/web/docs/template/resources/images/default/grid/arrow-right-white.gif
new file mode 100644
index 0000000..e9e0678
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/arrow-right-white.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/col-move-bottom.gif b/deluge/ui/web/docs/template/resources/images/default/grid/col-move-bottom.gif
new file mode 100644
index 0000000..cc1e473
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/col-move-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/col-move-top.gif b/deluge/ui/web/docs/template/resources/images/default/grid/col-move-top.gif
new file mode 100644
index 0000000..58ff32c
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/col-move-top.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/columns.gif b/deluge/ui/web/docs/template/resources/images/default/grid/columns.gif
new file mode 100644
index 0000000..2d3a823
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/columns.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/dirty.gif b/deluge/ui/web/docs/template/resources/images/default/grid/dirty.gif
new file mode 100644
index 0000000..4f217a4
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/dirty.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/done.gif b/deluge/ui/web/docs/template/resources/images/default/grid/done.gif
new file mode 100644
index 0000000..a937cb2
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/done.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/drop-no.gif b/deluge/ui/web/docs/template/resources/images/default/grid/drop-no.gif
new file mode 100644
index 0000000..31a332b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/drop-no.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/drop-yes.gif b/deluge/ui/web/docs/template/resources/images/default/grid/drop-yes.gif
new file mode 100644
index 0000000..926010e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/drop-yes.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/footer-bg.gif b/deluge/ui/web/docs/template/resources/images/default/grid/footer-bg.gif
new file mode 100644
index 0000000..126120f
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/footer-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid-blue-hd.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid-blue-hd.gif
new file mode 100644
index 0000000..862094e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid-blue-hd.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid-blue-split.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid-blue-split.gif
new file mode 100644
index 0000000..5286f58
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid-blue-split.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid-hrow.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid-hrow.gif
new file mode 100644
index 0000000..6374104
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid-hrow.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid-loading.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid-loading.gif
new file mode 100644
index 0000000..d112c54
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid-loading.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid-split.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid-split.gif
new file mode 100644
index 0000000..c76a16e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid-split.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid-vista-hd.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid-vista-hd.gif
new file mode 100644
index 0000000..d097263
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid-vista-hd.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hd-btn.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hd-btn.gif
new file mode 100644
index 0000000..2112607
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hd-btn.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hrow-over.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hrow-over.gif
new file mode 100644
index 0000000..f9c07af
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hrow-over.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hrow.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hrow.gif
new file mode 100644
index 0000000..8d459a3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-hrow.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid3-special-col-bg.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-special-col-bg.gif
new file mode 100644
index 0000000..0b4d6ca
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-special-col-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/grid3-special-col-sel-bg.gif b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-special-col-sel-bg.gif
new file mode 100644
index 0000000..1dfe9a6
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/grid3-special-col-sel-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/group-by.gif b/deluge/ui/web/docs/template/resources/images/default/grid/group-by.gif
new file mode 100644
index 0000000..d6075bb
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/group-by.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/group-expand-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/grid/group-expand-sprite.gif
new file mode 100644
index 0000000..9c1653b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/group-expand-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hd-pop.gif b/deluge/ui/web/docs/template/resources/images/default/grid/hd-pop.gif
new file mode 100644
index 0000000..eb8ba79
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/hd-pop.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-asc.gif b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-asc.gif
new file mode 100644
index 0000000..8917e0e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-asc.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-desc.gif b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-desc.gif
new file mode 100644
index 0000000..f26b7c2
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-desc.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.gif b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.gif
new file mode 100644
index 0000000..1596126
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.png b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.png
new file mode 100644
index 0000000..8830597
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.gif b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.gif
new file mode 100644
index 0000000..af59cf9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.png b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.png
new file mode 100644
index 0000000..4ec318f
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/invalid_line.gif b/deluge/ui/web/docs/template/resources/images/default/grid/invalid_line.gif
new file mode 100644
index 0000000..fb7e0f3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/invalid_line.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/loading.gif b/deluge/ui/web/docs/template/resources/images/default/grid/loading.gif
new file mode 100644
index 0000000..e846e1d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/loading.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/mso-hd.gif b/deluge/ui/web/docs/template/resources/images/default/grid/mso-hd.gif
new file mode 100644
index 0000000..669f3cf
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/mso-hd.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/nowait.gif b/deluge/ui/web/docs/template/resources/images/default/grid/nowait.gif
new file mode 100644
index 0000000..4c5862c
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/nowait.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/page-first-disabled.gif b/deluge/ui/web/docs/template/resources/images/default/grid/page-first-disabled.gif
new file mode 100644
index 0000000..1e02c41
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/page-first-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/page-first.gif b/deluge/ui/web/docs/template/resources/images/default/grid/page-first.gif
new file mode 100644
index 0000000..d84f41a
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/page-first.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/page-last-disabled.gif b/deluge/ui/web/docs/template/resources/images/default/grid/page-last-disabled.gif
new file mode 100644
index 0000000..8697067
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/page-last-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/page-last.gif b/deluge/ui/web/docs/template/resources/images/default/grid/page-last.gif
new file mode 100644
index 0000000..3df5c2b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/page-last.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/page-next-disabled.gif b/deluge/ui/web/docs/template/resources/images/default/grid/page-next-disabled.gif
new file mode 100644
index 0000000..90a7756
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/page-next-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/page-next.gif b/deluge/ui/web/docs/template/resources/images/default/grid/page-next.gif
new file mode 100644
index 0000000..9601635
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/page-next.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/page-prev-disabled.gif b/deluge/ui/web/docs/template/resources/images/default/grid/page-prev-disabled.gif
new file mode 100644
index 0000000..37154d6
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/page-prev-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/page-prev.gif b/deluge/ui/web/docs/template/resources/images/default/grid/page-prev.gif
new file mode 100644
index 0000000..eb70cf8
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/page-prev.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/pick-button.gif b/deluge/ui/web/docs/template/resources/images/default/grid/pick-button.gif
new file mode 100644
index 0000000..6957924
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/pick-button.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/refresh.gif b/deluge/ui/web/docs/template/resources/images/default/grid/refresh.gif
new file mode 100644
index 0000000..110f684
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/refresh.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/row-check-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/grid/row-check-sprite.gif
new file mode 100644
index 0000000..6101164
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/row-check-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/row-expand-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/grid/row-expand-sprite.gif
new file mode 100644
index 0000000..6f4d874
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/row-expand-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/row-over.gif b/deluge/ui/web/docs/template/resources/images/default/grid/row-over.gif
new file mode 100644
index 0000000..b288e38
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/row-over.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/row-sel.gif b/deluge/ui/web/docs/template/resources/images/default/grid/row-sel.gif
new file mode 100644
index 0000000..98209e6
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/row-sel.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/sort_asc.gif b/deluge/ui/web/docs/template/resources/images/default/grid/sort_asc.gif
new file mode 100644
index 0000000..67a2a4c
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/sort_asc.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/sort_desc.gif b/deluge/ui/web/docs/template/resources/images/default/grid/sort_desc.gif
new file mode 100644
index 0000000..34db47c
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/sort_desc.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/wait.gif b/deluge/ui/web/docs/template/resources/images/default/grid/wait.gif
new file mode 100644
index 0000000..471c1a4
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/grid/wait.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/collapse.gif b/deluge/ui/web/docs/template/resources/images/default/layout/collapse.gif
new file mode 100644
index 0000000..d87b0a9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/collapse.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/expand.gif b/deluge/ui/web/docs/template/resources/images/default/layout/expand.gif
new file mode 100644
index 0000000..7b6e1c1
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/expand.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/gradient-bg.gif b/deluge/ui/web/docs/template/resources/images/default/layout/gradient-bg.gif
new file mode 100644
index 0000000..8134e49
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/gradient-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/mini-bottom.gif b/deluge/ui/web/docs/template/resources/images/default/layout/mini-bottom.gif
new file mode 100644
index 0000000..c18f9e3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/mini-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/mini-left.gif b/deluge/ui/web/docs/template/resources/images/default/layout/mini-left.gif
new file mode 100644
index 0000000..99f7993
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/mini-left.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/mini-right.gif b/deluge/ui/web/docs/template/resources/images/default/layout/mini-right.gif
new file mode 100644
index 0000000..5b13c5a
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/mini-right.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/mini-top.gif b/deluge/ui/web/docs/template/resources/images/default/layout/mini-top.gif
new file mode 100644
index 0000000..a4ca2bb
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/mini-top.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/ns-collapse.gif b/deluge/ui/web/docs/template/resources/images/default/layout/ns-collapse.gif
new file mode 100644
index 0000000..df2a77e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/ns-collapse.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/ns-expand.gif b/deluge/ui/web/docs/template/resources/images/default/layout/ns-expand.gif
new file mode 100644
index 0000000..77ab9da
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/ns-expand.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/panel-close.gif b/deluge/ui/web/docs/template/resources/images/default/layout/panel-close.gif
new file mode 100644
index 0000000..2bdd623
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/panel-close.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/panel-title-bg.gif b/deluge/ui/web/docs/template/resources/images/default/layout/panel-title-bg.gif
new file mode 100644
index 0000000..d1daef5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/panel-title-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/panel-title-light-bg.gif b/deluge/ui/web/docs/template/resources/images/default/layout/panel-title-light-bg.gif
new file mode 100644
index 0000000..8c2c83d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/panel-title-light-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/stick.gif b/deluge/ui/web/docs/template/resources/images/default/layout/stick.gif
new file mode 100644
index 0000000..5a1e8ba
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/stick.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/stuck.gif b/deluge/ui/web/docs/template/resources/images/default/layout/stuck.gif
new file mode 100644
index 0000000..0a8de4d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/stuck.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/tab-close-on.gif b/deluge/ui/web/docs/template/resources/images/default/layout/tab-close-on.gif
new file mode 100644
index 0000000..eacea39
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/tab-close-on.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/layout/tab-close.gif b/deluge/ui/web/docs/template/resources/images/default/layout/tab-close.gif
new file mode 100644
index 0000000..45db61e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/layout/tab-close.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/menu/checked.gif b/deluge/ui/web/docs/template/resources/images/default/menu/checked.gif
new file mode 100644
index 0000000..fad5893
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/menu/checked.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/menu/group-checked.gif b/deluge/ui/web/docs/template/resources/images/default/menu/group-checked.gif
new file mode 100644
index 0000000..d30b3e5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/menu/group-checked.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/menu/item-over.gif b/deluge/ui/web/docs/template/resources/images/default/menu/item-over.gif
new file mode 100644
index 0000000..0167839
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/menu/item-over.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/menu/menu-parent.gif b/deluge/ui/web/docs/template/resources/images/default/menu/menu-parent.gif
new file mode 100644
index 0000000..1e37562
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/menu/menu-parent.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/menu/menu.gif b/deluge/ui/web/docs/template/resources/images/default/menu/menu.gif
new file mode 100644
index 0000000..30a2c4b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/menu/menu.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/menu/unchecked.gif b/deluge/ui/web/docs/template/resources/images/default/menu/unchecked.gif
new file mode 100644
index 0000000..43823e5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/menu/unchecked.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/corners-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/panel/corners-sprite.gif
new file mode 100644
index 0000000..aa0d0ed
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/corners-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/left-right.gif b/deluge/ui/web/docs/template/resources/images/default/panel/left-right.gif
new file mode 100644
index 0000000..9fae2d5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/left-right.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/light-hd.gif b/deluge/ui/web/docs/template/resources/images/default/panel/light-hd.gif
new file mode 100644
index 0000000..58d6747
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/light-hd.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/tool-sprite-tpl.gif b/deluge/ui/web/docs/template/resources/images/default/panel/tool-sprite-tpl.gif
new file mode 100644
index 0000000..e647867
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/tool-sprite-tpl.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/tool-sprites.gif b/deluge/ui/web/docs/template/resources/images/default/panel/tool-sprites.gif
new file mode 100644
index 0000000..cca91e8
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/tool-sprites.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/tools-sprites-trans.gif b/deluge/ui/web/docs/template/resources/images/default/panel/tools-sprites-trans.gif
new file mode 100644
index 0000000..e58bf20
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/tools-sprites-trans.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.gif b/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.gif
new file mode 100644
index 0000000..be6c50e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.png b/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.png
new file mode 100644
index 0000000..27299d1
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/white-corners-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/panel/white-corners-sprite.gif
new file mode 100644
index 0000000..22d4bba
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/white-corners-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/white-left-right.gif b/deluge/ui/web/docs/template/resources/images/default/panel/white-left-right.gif
new file mode 100644
index 0000000..d82c337
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/white-left-right.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/white-top-bottom.gif b/deluge/ui/web/docs/template/resources/images/default/panel/white-top-bottom.gif
new file mode 100644
index 0000000..fe7dd1c
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/panel/white-top-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/progress/progress-bg.gif b/deluge/ui/web/docs/template/resources/images/default/progress/progress-bg.gif
new file mode 100644
index 0000000..1c1abeb
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/progress/progress-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/qtip/bg.gif b/deluge/ui/web/docs/template/resources/images/default/qtip/bg.gif
new file mode 100644
index 0000000..43488af
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/qtip/bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/qtip/close.gif b/deluge/ui/web/docs/template/resources/images/default/qtip/close.gif
new file mode 100644
index 0000000..69ab915
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/qtip/close.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/qtip/tip-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/qtip/tip-sprite.gif
new file mode 100644
index 0000000..9810aca
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/qtip/tip-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/s.gif b/deluge/ui/web/docs/template/resources/images/default/s.gif
new file mode 100644
index 0000000..1d11fa9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/s.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shadow-c.png b/deluge/ui/web/docs/template/resources/images/default/shadow-c.png
new file mode 100644
index 0000000..f66116a
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shadow-c.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shadow-c.psd b/deluge/ui/web/docs/template/resources/images/default/shadow-c.psd
new file mode 100644
index 0000000..28bbe69
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shadow-c.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shadow-lr.png b/deluge/ui/web/docs/template/resources/images/default/shadow-lr.png
new file mode 100644
index 0000000..2ed5f7a
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shadow-lr.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shadow.png b/deluge/ui/web/docs/template/resources/images/default/shadow.png
new file mode 100644
index 0000000..eddcd0b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shadow.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/blue-loading.gif b/deluge/ui/web/docs/template/resources/images/default/shared/blue-loading.gif
new file mode 100644
index 0000000..3bbf639
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/blue-loading.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/calendar.gif b/deluge/ui/web/docs/template/resources/images/default/shared/calendar.gif
new file mode 100644
index 0000000..133cf23
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/calendar.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/glass-bg.gif b/deluge/ui/web/docs/template/resources/images/default/shared/glass-bg.gif
new file mode 100644
index 0000000..26fbbae
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/glass-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/hd-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/shared/hd-sprite.gif
new file mode 100644
index 0000000..42da1ea
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/hd-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/large-loading.gif b/deluge/ui/web/docs/template/resources/images/default/shared/large-loading.gif
new file mode 100644
index 0000000..b36b555
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/large-loading.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/left-btn.gif b/deluge/ui/web/docs/template/resources/images/default/shared/left-btn.gif
new file mode 100644
index 0000000..a0ddd9e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/left-btn.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/loading-balls.gif b/deluge/ui/web/docs/template/resources/images/default/shared/loading-balls.gif
new file mode 100644
index 0000000..9ce214b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/loading-balls.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/right-btn.gif b/deluge/ui/web/docs/template/resources/images/default/shared/right-btn.gif
new file mode 100644
index 0000000..dee63e2
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/right-btn.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shared/warning.gif b/deluge/ui/web/docs/template/resources/images/default/shared/warning.gif
new file mode 100644
index 0000000..806d4bc
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/shared/warning.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/e-handle-dark.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/e-handle-dark.gif
new file mode 100644
index 0000000..b5486c1
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/e-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/e-handle.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/e-handle.gif
new file mode 100644
index 0000000..00ba835
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/e-handle.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/ne-handle-dark.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/ne-handle-dark.gif
new file mode 100644
index 0000000..04e5ecf
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/ne-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/ne-handle.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/ne-handle.gif
new file mode 100644
index 0000000..09405c7
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/ne-handle.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/nw-handle-dark.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/nw-handle-dark.gif
new file mode 100644
index 0000000..6e49d69
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/nw-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/nw-handle.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/nw-handle.gif
new file mode 100644
index 0000000..2fcea8a
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/nw-handle.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/s-handle-dark.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/s-handle-dark.gif
new file mode 100644
index 0000000..4eb5f0f
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/s-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/s-handle.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/s-handle.gif
new file mode 100644
index 0000000..bf069c2
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/s-handle.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/se-handle-dark.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/se-handle-dark.gif
new file mode 100644
index 0000000..c4c1087
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/se-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/se-handle.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/se-handle.gif
new file mode 100644
index 0000000..972055e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/se-handle.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/square.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/square.gif
new file mode 100644
index 0000000..14ce6f7
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/square.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/sw-handle-dark.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/sw-handle-dark.gif
new file mode 100644
index 0000000..77224b0
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/sw-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/sizer/sw-handle.gif b/deluge/ui/web/docs/template/resources/images/default/sizer/sw-handle.gif
new file mode 100644
index 0000000..3ca0ed9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/sizer/sw-handle.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.png b/deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.png
new file mode 100644
index 0000000..72c7d9a
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.png b/deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.png
new file mode 100644
index 0000000..04792c5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.png b/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.png
new file mode 100644
index 0000000..bb01e9b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.png b/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.png
new file mode 100644
index 0000000..4c7ebfc
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/scroll-left.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/scroll-left.gif
new file mode 100644
index 0000000..9f2f6d1
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/scroll-left.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/scroll-right.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/scroll-right.gif
new file mode 100644
index 0000000..4c5e7e3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/scroll-right.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/scroller-bg.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/scroller-bg.gif
new file mode 100644
index 0000000..099b90d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/scroller-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-inactive-left-bg.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-inactive-left-bg.gif
new file mode 100644
index 0000000..188bf94
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-inactive-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-inactive-right-bg.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-inactive-right-bg.gif
new file mode 100644
index 0000000..e1f5e3c
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-inactive-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-left-bg.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-left-bg.gif
new file mode 100644
index 0000000..e695186
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-right-bg.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-right-bg.gif
new file mode 100644
index 0000000..dde7968
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-btm-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-close.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-close.gif
new file mode 100644
index 0000000..e699878
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-close.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.gif
new file mode 100644
index 0000000..34f1333
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.png b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.png
new file mode 100644
index 0000000..9b3a23a
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-btm-bg.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-btm-bg.gif
new file mode 100644
index 0000000..5eaba1e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-btm-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tabs-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/tabs/tabs-sprite.gif
new file mode 100644
index 0000000..e969fb0
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tabs-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/toolbar/bg.gif b/deluge/ui/web/docs/template/resources/images/default/toolbar/bg.gif
new file mode 100644
index 0000000..0b085bf
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/toolbar/bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-arrow-light.gif b/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-arrow-light.gif
new file mode 100644
index 0000000..b0e24b5
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-arrow-light.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-arrow.gif b/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-arrow.gif
new file mode 100644
index 0000000..8acb460
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-arrow.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-over-bg.gif b/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-over-bg.gif
new file mode 100644
index 0000000..ee2dd98
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/toolbar/btn-over-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/toolbar/gray-bg.gif b/deluge/ui/web/docs/template/resources/images/default/toolbar/gray-bg.gif
new file mode 100644
index 0000000..bd49438
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/toolbar/gray-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/toolbar/tb-bg.gif b/deluge/ui/web/docs/template/resources/images/default/toolbar/tb-bg.gif
new file mode 100644
index 0000000..4969e4e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/toolbar/tb-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/toolbar/tb-btn-sprite.gif b/deluge/ui/web/docs/template/resources/images/default/toolbar/tb-btn-sprite.gif
new file mode 100644
index 0000000..19bbef3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/toolbar/tb-btn-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/arrows.gif b/deluge/ui/web/docs/template/resources/images/default/tree/arrows.gif
new file mode 100644
index 0000000..f8ff7b8
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/arrows.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/drop-add.gif b/deluge/ui/web/docs/template/resources/images/default/tree/drop-add.gif
new file mode 100644
index 0000000..b22cd14
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/drop-add.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/drop-between.gif b/deluge/ui/web/docs/template/resources/images/default/tree/drop-between.gif
new file mode 100644
index 0000000..5c6c09d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/drop-between.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/drop-no.gif b/deluge/ui/web/docs/template/resources/images/default/tree/drop-no.gif
new file mode 100644
index 0000000..9d9c6a9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/drop-no.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/drop-over.gif b/deluge/ui/web/docs/template/resources/images/default/tree/drop-over.gif
new file mode 100644
index 0000000..30d1ca7
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/drop-over.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/drop-under.gif b/deluge/ui/web/docs/template/resources/images/default/tree/drop-under.gif
new file mode 100644
index 0000000..85f66b1
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/drop-under.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/drop-yes.gif b/deluge/ui/web/docs/template/resources/images/default/tree/drop-yes.gif
new file mode 100644
index 0000000..8aacb30
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/drop-yes.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-minus-nl.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-minus-nl.gif
new file mode 100644
index 0000000..928779e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-minus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-minus.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-minus.gif
new file mode 100644
index 0000000..9a8d727
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-minus.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-plus-nl.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-plus-nl.gif
new file mode 100644
index 0000000..9f7f698
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-plus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-plus.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-plus.gif
new file mode 100644
index 0000000..5943a01
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end-plus.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end.gif
new file mode 100644
index 0000000..f24ddee
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-end.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-line.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-line.gif
new file mode 100644
index 0000000..75e6da4
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-line.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-minus-nl.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-minus-nl.gif
new file mode 100644
index 0000000..928779e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-minus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-minus.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-minus.gif
new file mode 100644
index 0000000..97dcc71
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-minus.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-plus-nl.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-plus-nl.gif
new file mode 100644
index 0000000..9f7f698
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-plus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow-plus.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-plus.gif
new file mode 100644
index 0000000..698de47
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow-plus.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/elbow.gif b/deluge/ui/web/docs/template/resources/images/default/tree/elbow.gif
new file mode 100644
index 0000000..b8f4208
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/elbow.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/folder-open.gif b/deluge/ui/web/docs/template/resources/images/default/tree/folder-open.gif
new file mode 100644
index 0000000..56ba737
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/folder-open.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/folder.gif b/deluge/ui/web/docs/template/resources/images/default/tree/folder.gif
new file mode 100644
index 0000000..20412f7
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/folder.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/leaf.gif b/deluge/ui/web/docs/template/resources/images/default/tree/leaf.gif
new file mode 100644
index 0000000..445769d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/leaf.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/loading.gif b/deluge/ui/web/docs/template/resources/images/default/tree/loading.gif
new file mode 100644
index 0000000..e846e1d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/loading.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/tree/s.gif b/deluge/ui/web/docs/template/resources/images/default/tree/s.gif
new file mode 100644
index 0000000..1d11fa9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/tree/s.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/icon-error.gif b/deluge/ui/web/docs/template/resources/images/default/window/icon-error.gif
new file mode 100644
index 0000000..397b655
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/icon-error.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/icon-info.gif b/deluge/ui/web/docs/template/resources/images/default/window/icon-info.gif
new file mode 100644
index 0000000..58281c3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/icon-info.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/icon-question.gif b/deluge/ui/web/docs/template/resources/images/default/window/icon-question.gif
new file mode 100644
index 0000000..08abd82
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/icon-question.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/icon-warning.gif b/deluge/ui/web/docs/template/resources/images/default/window/icon-warning.gif
new file mode 100644
index 0000000..27ff98b
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/icon-warning.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/left-corners.png b/deluge/ui/web/docs/template/resources/images/default/window/left-corners.png
new file mode 100644
index 0000000..0d5f8a8
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/left-corners.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/left-corners.psd b/deluge/ui/web/docs/template/resources/images/default/window/left-corners.psd
new file mode 100644
index 0000000..3d7f062
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/left-corners.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/left-right.png b/deluge/ui/web/docs/template/resources/images/default/window/left-right.png
new file mode 100644
index 0000000..9fea0e4
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/left-right.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/left-right.psd b/deluge/ui/web/docs/template/resources/images/default/window/left-right.psd
new file mode 100644
index 0000000..f490c5e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/left-right.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/right-corners.png b/deluge/ui/web/docs/template/resources/images/default/window/right-corners.png
new file mode 100644
index 0000000..8f88f33
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/right-corners.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/right-corners.psd b/deluge/ui/web/docs/template/resources/images/default/window/right-corners.psd
new file mode 100644
index 0000000..86d5095
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/right-corners.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.png b/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.png
new file mode 100644
index 0000000..c6d63f6
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.psd b/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.psd
new file mode 100644
index 0000000..d2b2302
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.psd
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/inherited.gif b/deluge/ui/web/docs/template/resources/inherited.gif
new file mode 100644
index 0000000..63039d9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/inherited.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/member-collapsed.gif b/deluge/ui/web/docs/template/resources/member-collapsed.gif
new file mode 100644
index 0000000..16bce1d
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/member-collapsed.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/member-expanded.gif b/deluge/ui/web/docs/template/resources/member-expanded.gif
new file mode 100644
index 0000000..d72c132
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/member-expanded.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/member-hover.gif b/deluge/ui/web/docs/template/resources/member-hover.gif
new file mode 100644
index 0000000..9b53390
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/member-hover.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/method.gif b/deluge/ui/web/docs/template/resources/method.gif
new file mode 100644
index 0000000..af74265
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/method.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/minus.gif b/deluge/ui/web/docs/template/resources/minus.gif
new file mode 100644
index 0000000..2c63585
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/minus.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/pkg-closed.gif b/deluge/ui/web/docs/template/resources/pkg-closed.gif
new file mode 100644
index 0000000..71139cb
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/pkg-closed.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/pkg-open.gif b/deluge/ui/web/docs/template/resources/pkg-open.gif
new file mode 100644
index 0000000..ffd18a3
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/pkg-open.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/pkg.gif b/deluge/ui/web/docs/template/resources/pkg.gif
new file mode 100644
index 0000000..d3d3448
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/pkg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/plus.gif b/deluge/ui/web/docs/template/resources/plus.gif
new file mode 100644
index 0000000..c09f82e
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/plus.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/prettify/prettify.css b/deluge/ui/web/docs/template/resources/prettify/prettify.css
new file mode 100644
index 0000000..0f1ed75
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/prettify/prettify.css
@@ -0,0 +1 @@
+.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{padding:2px;border:1px solid #888}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}} \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/resources/prettify/prettify.js b/deluge/ui/web/docs/template/resources/prettify/prettify.js
new file mode 100644
index 0000000..f8f4f7f
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/prettify/prettify.js
@@ -0,0 +1,25 @@
+function _pr_isIE6(){var F=navigator&&navigator.userAgent&&/\bMSIE 6\./.test(navigator.userAgent);_pr_isIE6=function(){return F};return F}var aa="break continue do else for if return while ",ba="auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile ",ca="catch class delete false import new operator private protected public this throw true try ",da="alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename typeof using virtual wchar_t where ",
+ea="boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ",fa="as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ",ga="debugger eval export function get null set undefined var with Infinity NaN ",ha="caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",
+ia="and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",ja="alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",ka="case done elif esac eval fi function in local set then until ",la="a",ma="z",na="A",oa="Z",pa="!",qa="!=",ra="!==",s="#",sa="%",Ha="%=",v="&",Ia="&&",Ja="&&=",Ka="&=",La=
+"(",Ma="*",Na="*=",Oa="+=",Pa=",",Qa="-=",Ra="->",w="/",Sa="/=",Ta=":",Ua="::",y=";",z="<",Va="<<",Wa="<<=",Xa="<=",Ya="=",Za="==",$a="===",A=">",ab=">=",bb=">>",cb=">>=",db=">>>",eb=">>>=",fb="?",C="@",gb="[",hb="^",ib="^=",jb="^^",kb="^^=",lb="{",mb="|",nb="|=",ob="||",pb="||=",qb="~",rb="break",sb="case",tb="continue",ub="delete",vb="do",wb="else",xb="finally",yb="instanceof",zb="return",Ab="throw",Bb="try",Cb="typeof",Db="(?:(?:(?:^|[^0-9.])\\.{1,3})|(?:(?:^|[^\\+])\\+)|(?:(?:^|[^\\-])-)",Eb=
+"|\\b",Fb="\\$1",Gb="|^)\\s*$",Hb="&amp;",Ib="&lt;",Jb="&gt;",Kb="&quot;",Lb="&#",Mb="x",Nb="'",G='"',Ob=" ",Pb="XMP",Qb="</",Rb='="',H="PRE",Sb='<!DOCTYPE foo PUBLIC "foo bar">\n<foo />',I="",Tb="\t",Ub="\n",Vb="nocode",Wb=' $1="$2$3$4"',J="pln",O="com",Xb="dec",P="src",Q="tag",R="atv",S="pun",Yb="<>/=",X="atn",Zb=" \t\r\n",Y="str",$b="'\"",ac="'\"`",bc="\"'",cc=" \r\n",Z="lit",dc="123456789",ec=".",fc="kwd",gc="typ",$="</span>",hc='<span class="',ic='">',jc="$1&nbsp;",kc="<br />",lc="console",mc=
+"cannot override language handler %s",nc="default-code",oc="default-markup",pc="html",qc="htm",rc="xhtml",sc="xml",tc="xsl",uc="c",vc="cc",wc="cpp",xc="cs",yc="cxx",zc="cyc",Ac="java",Bc="bsh",Cc="csh",Dc="sh",Ec="cv",Fc="py",Gc="perl",Hc="pl",Ic="pm",Jc="rb",Kc="js",Lc="pre",Mc="code",Nc="xmp",Oc="prettyprint",Pc="class",Qc="br",Rc="\r\n";(function(){function F(b){b=b.split(/ /g);var a={};for(var c=b.length;--c>=0;){var d=b[c];if(d)a[d]=null}return a}var K=aa,Sc=K+ba,T=Sc+ca,ta=T+da,ua=T+ea,Tc=ua+
+fa,va=T+ga,wa=ha,xa=K+ia,ya=K+ja,za=K+ka,Uc=ta+Tc+va+wa+xa+ya+za;function Vc(b){return b>=la&&b<=ma||b>=na&&b<=oa}function D(b,a,c,d){b.unshift(c,d||0);try{a.splice.apply(a,b)}finally{b.splice(0,2)}}var Wc=(function(){var b=[pa,qa,ra,s,sa,Ha,v,Ia,Ja,Ka,La,Ma,Na,Oa,Pa,Qa,Ra,w,Sa,Ta,Ua,y,z,Va,Wa,Xa,Ya,Za,$a,A,ab,bb,cb,db,eb,fb,C,gb,hb,ib,jb,kb,lb,mb,nb,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab,Bb,Cb],a=Db;for(var c=0;c<b.length;++c){var d=b[c];a+=Vc(d.charAt(0))?Eb+d:mb+d.replace(/([^=<>:&])/g,Fb)}a+=
+Gb;return new RegExp(a)})(),Aa=/&/g,Ba=/</g,Ca=/>/g,Xc=/\"/g;function Yc(b){return b.replace(Aa,Hb).replace(Ba,Ib).replace(Ca,Jb).replace(Xc,Kb)}function U(b){return b.replace(Aa,Hb).replace(Ba,Ib).replace(Ca,Jb)}var Zc=/&lt;/g,$c=/&gt;/g,ad=/&apos;/g,bd=/&quot;/g,cd=/&amp;/g,dd=/&nbsp;/g;function ed(b){var a=b.indexOf(v);if(a<0)return b;for(--a;(a=b.indexOf(Lb,a+1))>=0;){var c=b.indexOf(y,a);if(c>=0){var d=b.substring(a+3,c),g=10;if(d&&d.charAt(0)===Mb){d=d.substring(1);g=16}var e=parseInt(d,g);
+if(!isNaN(e))b=b.substring(0,a)+String.fromCharCode(e)+b.substring(c+1)}}return b.replace(Zc,z).replace($c,A).replace(ad,Nb).replace(bd,G).replace(cd,v).replace(dd,Ob)}function Da(b){return Pb===b.tagName}function L(b,a){switch(b.nodeType){case 1:var c=b.tagName.toLowerCase();a.push(z,c);for(var d=0;d<b.attributes.length;++d){var g=b.attributes[d];if(!g.specified)continue;a.push(Ob);L(g,a)}a.push(A);for(var e=b.firstChild;e;e=e.nextSibling)L(e,a);if(b.firstChild||!/^(?:br|link|img)$/.test(c))a.push(Qb,
+c,A);break;case 2:a.push(b.name.toLowerCase(),Rb,Yc(b.value),G);break;case 3:case 4:a.push(U(b.nodeValue));break}}var V=null;function fd(b){if(null===V){var a=document.createElement(H);a.appendChild(document.createTextNode(Sb));V=!/</.test(a.innerHTML)}if(V){var c=b.innerHTML;if(Da(b))c=U(c);return c}var d=[];for(var g=b.firstChild;g;g=g.nextSibling)L(g,d);return d.join(I)}function gd(b){var a=0;return function(c){var d=null,g=0;for(var e=0,h=c.length;e<h;++e){var f=c.charAt(e);switch(f){case Tb:if(!d)d=
+[];d.push(c.substring(g,e));var i=b-a%b;a+=i;for(;i>=0;i-=" ".length)d.push(" ".substring(0,i));g=e+1;break;case Ub:a=0;break;default:++a}}if(!d)return c;d.push(c.substring(g));return d.join(I)}}var hd=/(?:[^<]+|<!--[\s\S]*?--\>|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g,id=/^<!--/,jd=/^<\[CDATA\[/,kd=/^<br\b/i,Ea=/^<(\/?)([a-zA-Z]+)/;function ld(b){var a=b.match(hd),c=[],d=0,g=[];if(a)for(var e=0,h=a.length;e<h;++e){var f=a[e];if(f.length>1&&f.charAt(0)===z){if(id.test(f))continue;
+if(jd.test(f)){c.push(f.substring(9,f.length-3));d+=f.length-12}else if(kd.test(f)){c.push(Ub);++d}else if(f.indexOf(Vb)>=0&&!!f.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,Wb).match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)){var i=f.match(Ea)[2],j=1;end_tag_loop:for(var m=e+1;m<h;++m){var o=a[m].match(Ea);if(o&&o[2]===i)if(o[1]===w){if(--j===0)break end_tag_loop}else++j}if(m<h){g.push(d,a.slice(e,m+1).join(I));e=m}else g.push(d,f)}else g.push(d,f)}else{var k=ed(f);c.push(k);d+=k.length}}return{source:c.join(I),
+tags:g}}function E(b,a){var c={};(function(){var e=b.concat(a);for(var h=e.length;--h>=0;){var f=e[h],i=f[3];if(i)for(var j=i.length;--j>=0;)c[i.charAt(j)]=f}})();var d=a.length,g=/\S/;return function(e,h){h=h||0;var f=[h,J],i=I,j=0,m=e;while(m.length){var o,k=null,p,l=c[m.charAt(0)];if(l){p=m.match(l[1]);k=p[0];o=l[0]}else{for(var n=0;n<d;++n){l=a[n];var q=l[2];if(q&&!q.test(i))continue;p=m.match(l[1]);if(p){k=p[0];o=l[0];break}}if(!k){o=J;k=m.substring(0,1)}}f.push(h+j,o);j+=k.length;m=m.substring(k.length);
+if(o!==O&&g.test(k))i=k}return f}}var md=E([],[[J,/^[^<]+/,null],[Xb,/^<!\w[^>]*(?:>|$)/,null],[O,/^<!--[\s\S]*?(?:--\>|$)/,null],[P,/^<\?[\s\S]*?(?:\?>|$)/,null],[P,/^<%[\s\S]*?(?:%>|$)/,null],[P,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[Q,/^<\/?\w[^<>]*>/,null]]);function nd(b){var a=md(b);for(var c=0;c<a.length;c+=2)if(a[c+1]===P){var d,g;d=a[c];g=c+2<a.length?a[c+2]:b.length;var e=b.substring(d,g),h=e.match(/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/);if(h)a.splice(c,2,d,Q,d+h[1].length,
+P,d+h[1].length+(h[2]||I).length,Q)}return a}var od=E([[R,/^\'[^\']*(?:\'|$)/,null,Nb],[R,/^\"[^\"]*(?:\"|$)/,null,G],[S,/^[<>\/=]+/,null,Yb]],[[Q,/^[\w:\-]+/,/^</],[R,/^[\w\-]+/,/^=/],[X,/^[\w:\-]+/,null],[J,/^\s+/,null,Zb]]);function pd(b,a){for(var c=0;c<a.length;c+=2){var d=a[c+1];if(d===Q){var g,e;g=a[c];e=c+2<a.length?a[c+2]:b.length;var h=b.substring(g,e),f=od(h,g);D(f,a,c,2);c+=f.length-2}}return a}function u(b){var a=[],c=[];if(b.tripleQuotedStrings)a.push([Y,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+null,$b]);else if(b.multiLineStrings)a.push([Y,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,ac]);else a.push([Y,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,bc]);c.push([J,/^(?:[^\'\"\`\/\#]+)/,null,cc]);if(b.hashComments)a.push([O,/^#[^\r\n]*/,null,s]);if(b.cStyleComments){c.push([O,/^\/\/[^\r\n]*/,null]);c.push([O,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(b.regexLiterals)c.push([Y,/^\/(?=[^\/*])(?:[^\/\x5B\x5C]|\x5C[\s\S]|\x5B(?:[^\x5C\x5D]|\x5C[\s\S])*(?:\x5D|$))+(?:\/|$)/,
+Wc]);var d=F(b.keywords);b=null;var g=E(a,c),e=E([],[[J,/^\s+/,null,cc],[J,/^[a-z_$@][a-z_$@0-9]*/i,null],[Z,/^0x[a-f0-9]+[a-z]/i,null],[Z,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?[a-z]*/i,null,dc],[S,/^[^\s\w\.$@]+/,null]]);function h(f,i){for(var j=0;j<i.length;j+=2){var m=i[j+1];if(m===J){var o,k,p,l;o=i[j];k=j+2<i.length?i[j+2]:f.length;p=f.substring(o,k);l=e(p,o);for(var n=0,q=l.length;n<q;n+=2){var r=l[n+1];if(r===J){var B=l[n],M=n+2<q?l[n+2]:p.length,x=f.substring(B,M);if(x===ec)l[n+
+1]=S;else if(x in d)l[n+1]=fc;else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(x))l[n+1]=x.charAt(0)===C?Z:gc}}D(l,i,j,2);j+=l.length-2}}return i}return function(f){var i=g(f);i=h(f,i);return i}}var W=u({keywords:Uc,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function qd(b,a){for(var c=0;c<a.length;c+=2){var d=a[c+1];if(d===P){var g,e;g=a[c];e=c+2<a.length?a[c+2]:b.length;var h=W(b.substring(g,e));for(var f=0,i=h.length;f<i;f+=2)h[f]+=g;D(h,a,c,2);c+=h.length-2}}return a}
+function rd(b,a){var c=false;for(var d=0;d<a.length;d+=2){var g=a[d+1],e,h;if(g===X){e=a[d];h=d+2<a.length?a[d+2]:b.length;c=/^on|^style$/i.test(b.substring(e,h))}else if(g===R){if(c){e=a[d];h=d+2<a.length?a[d+2]:b.length;var f=b.substring(e,h),i=f.length,j=i>=2&&/^[\"\']/.test(f)&&f.charAt(0)===f.charAt(i-1),m,o,k;if(j){o=e+1;k=h-1;m=f}else{o=e+1;k=h-1;m=f.substring(1,f.length-1)}var p=W(m);for(var l=0,n=p.length;l<n;l+=2)p[l]+=o;if(j){p.push(k,R);D(p,a,d+2,0)}else D(p,a,d,2)}c=false}}return a}function sd(b){var a=
+nd(b);a=pd(b,a);a=qd(b,a);a=rd(b,a);return a}function td(b,a,c){var d=[],g=0,e=null,h=null,f=0,i=0,j=gd(8),m=/([\r\n ]) /g,o=/(^| ) /gm,k=/\r\n?|\n/g,p=/[ \r\n]$/,l=true;function n(r){if(r>g){if(e&&e!==h){d.push($);e=null}if(!e&&h){e=h;d.push(hc,e,ic)}var B=U(j(b.substring(g,r))).replace(l?o:m,jc);l=p.test(B);d.push(B.replace(k,kc));g=r}}while(true){var q;q=f<a.length?(i<c.length?a[f]<=c[i]:true):false;if(q){n(a[f]);if(e){d.push($);e=null}d.push(a[f+1]);f+=2}else if(i<c.length){n(c[i]);h=c[i+1];i+=
+2}else break}n(b.length);if(e)d.push($);return d.join(I)}var N={};function t(b,a){for(var c=a.length;--c>=0;){var d=a[c];if(!N.hasOwnProperty(d))N[d]=b;else if(lc in window)console.log(mc,d)}}t(W,[nc]);t(sd,[oc,pc,qc,rc,sc,tc]);t(u({keywords:ta,hashComments:true,cStyleComments:true}),[uc,vc,wc,xc,yc,zc]);t(u({keywords:ua,cStyleComments:true}),[Ac]);t(u({keywords:za,hashComments:true,multiLineStrings:true}),[Bc,Cc,Dc]);t(u({keywords:xa,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),
+[Ec,Fc]);t(u({keywords:wa,hashComments:true,multiLineStrings:true,regexLiterals:true}),[Gc,Hc,Ic]);t(u({keywords:ya,hashComments:true,multiLineStrings:true,regexLiterals:true}),[Jc]);t(u({keywords:va,cStyleComments:true,regexLiterals:true}),[Kc]);function Fa(b,a){try{var c=ld(b),d=c.source,g=c.tags;if(!N.hasOwnProperty(a))a=/^\s*</.test(d)?oc:nc;var e=N[a].call({},d);return td(d,g,e)}catch(h){if(lc in window){console.log(h);console.trace()}return b}}function ud(b){var a=_pr_isIE6(),c=[document.getElementsByTagName(Lc),
+document.getElementsByTagName(Mc),document.getElementsByTagName(Nc)],d=[];for(var g=0;g<c.length;++g)for(var e=0;e<c[g].length;++e)d.push(c[g][e]);c=null;var h=0;function f(){var i=(new Date).getTime()+250;for(;h<d.length&&(new Date).getTime()<i;h++){var j=d[h];if(j.className&&j.className.indexOf(Oc)>=0){var m=j.className.match(/\blang-(\w+)\b/);if(m)m=m[1];var o=false;for(var k=j.parentNode;k;k=k.parentNode)if((k.tagName===Lc||k.tagName===Mc||k.tagName===Nc)&&k.className&&k.className.indexOf(Oc)>=
+0){o=true;break}if(!o){var p=fd(j);p=p.replace(/(?:\r\n?|\n)$/,I);var l=Fa(p,m);if(!Da(j))j.innerHTML=l;else{var n=document.createElement(H);for(var q=0;q<j.attributes.length;++q){var r=j.attributes[q];if(r.specified){var B=r.name.toLowerCase();if(B===Pc)n.className=r.value;else n.setAttribute(r.name,r.value)}}n.innerHTML=l;j.parentNode.replaceChild(n,j);j=n}if(a&&j.tagName===H){var M=j.getElementsByTagName(Qc);for(var x=M.length;--x>=0;){var Ga=M[x];Ga.parentNode.replaceChild(document.createTextNode(Rc),
+Ga)}}}}}if(h<d.length)setTimeout(f,250);else if(b)b()}f()}window.PR_normalizedHtml=L;window.prettyPrintOne=Fa;window.prettyPrint=ud;window.PR={createSimpleLexer:E,registerLangHandler:t,sourceDecorator:u,PR_ATTRIB_NAME:X,PR_ATTRIB_VALUE:R,PR_COMMENT:O,PR_DECLARATION:Xb,PR_KEYWORD:fc,PR_LITERAL:Z,PR_NOCODE:Vb,PR_PLAIN:J,PR_PUNCTUATION:S,PR_SOURCE:P,PR_STRING:Y,PR_TAG:Q,PR_TYPE:gc}})();
diff --git a/deluge/ui/web/docs/template/resources/print.css b/deluge/ui/web/docs/template/resources/print.css
new file mode 100644
index 0000000..53ea597
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/print.css
@@ -0,0 +1,206 @@
+body {
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ color: #000000;
+ background-color:#FFFFFF;
+ margin: 0px;
+ padding: 10px;
+}
+.body-wrap{
+ width:95%;
+}
+.list {list-style:inside square;margin-bottom:10px;}
+.list li{padding:2px;}
+body, td, th {
+ font-size: 13px;
+}
+code {
+ font-family: "Lucida Console", "Courier New", Courier, monospace;
+ font-size: 12px;
+}
+pre {
+ font-family: "Lucida Console", "Courier New", Courier, monospace;
+ font-size: 12px;
+}
+th {
+ text-align: left;
+ font-weight: bold;
+ vertical-align: bottom;
+ color:black;
+ padding:3px;
+ font-weight:bold;
+ border:1px solid #cccccc;
+ border-collapse: collapse;
+}
+.top-tools{
+ display:none;
+}
+table {
+ background-color: white;
+}
+a {
+ color: #083772;
+}
+a:link {
+ color: #083772;
+ text-decoration: none;
+}
+
+a:visited {
+ color: #1e4e8f;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+ color: #0000CC;
+}
+
+a:active {
+ text-decoration: none;
+ color: #1e4e8f;
+}
+
+/* Headings */
+h1, h2, h3, h4, h5, h6 {
+ font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+ font-weight: bold;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ letter-spacing: 1px;
+ width: 90%;
+}
+
+h1 {
+ font-size: 18px;
+}
+
+h2 {
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 18px;
+ padding-top: 20px;
+ padding-bottom: 5px;
+}
+
+h3 {
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+h4 {
+ font-size: 12px;
+ color: #666666;
+}
+
+h5 {
+ font-size: 11px;
+}
+
+.label {
+ font-weight: bold;
+ padding-right: 15px;
+}
+.description{
+ margin: 10px 0px;
+}
+.member-table{
+ width:100%;
+ margin-bottom:10px;
+}
+.member-table td{
+ padding:2px;
+ vertical-align:top;
+ padding-right:15px;
+}
+body .alt{
+ background:#f1f1f1;
+}
+.member-table td.micon{
+ width:20px;
+ padding:0px;
+ border-left:1px solid #bbbbbb;
+}
+.member-table td.msource{
+ border-right:1px solid #bbbbbb;
+ width:100px;
+}
+.mlink{
+ font-weight:bold;
+}
+.member-table td.inherited{
+ background-image: url(inherited.gif);
+ background-position:2px 2px;
+ background-repeat: no-repeat;
+}
+.member-table td.mdesc{
+ padding-top:0px;
+}
+.member-table td.micon,.member-table td.mdesc,.member-table td.msource{
+ border-bottom:1px solid #bbbbbb;
+}
+.optional{
+ color:#555555;
+}
+
+pre {
+ background: #F8F8F8;
+ border: 1px solid #e8e8e8;
+ border-left-width: 8px;
+ padding: 0.8em;
+ margin: 1em ;
+ margin-right: 0;
+}
+pre {
+ font-size: 12px !important;
+ line-height:14px !important;
+ padding:5px;
+ margin-left:0;
+}
+.detail-wrap{
+ border:1px solid #bbbbbb;
+ border-bottom:0px none;
+}
+.mdetail-head{
+ margin-top:10px;
+}
+.mdetail{
+ padding:7px;
+ border-bottom:1px solid #bbbbbb;
+}
+.mdetail h3{
+ margin: 5px 0px;
+ font-size:14px;
+ color:#083772;
+}
+.mdetail-desc{
+ margin:8px;
+}
+.mdetail-def{
+ font-style: italic;
+ font-size: 12px;
+ margin-top:10px;
+ margin-left:8px;
+ display:block;
+}
+.sub-desc{
+ margin:5px;
+ margin-left:16px;
+}
+.mdetail-params{
+ margin-top:10px;
+}
+.mdetail-params strong{
+ font-weight:bold;
+ display: block;
+ margin-bottom:3px;
+}
+.mdetail-params ul{
+ list-style: inside;
+ list-style-type: disc;
+ margin-left:12px;
+}
+.mdetail-params li{
+ list-style: inside;
+ list-style-type: disc;
+} \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/resources/print.gif b/deluge/ui/web/docs/template/resources/print.gif
new file mode 100644
index 0000000..b8a48cc
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/print.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/prop.gif b/deluge/ui/web/docs/template/resources/prop.gif
new file mode 100644
index 0000000..9d99a99
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/prop.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/reset.css b/deluge/ui/web/docs/template/resources/reset.css
new file mode 100644
index 0000000..16180f7
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/reset.css
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2006, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 0.11.0
+*/
+body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/resources/s.gif b/deluge/ui/web/docs/template/resources/s.gif
new file mode 100644
index 0000000..1d11fa9
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/s.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/static.gif b/deluge/ui/web/docs/template/resources/static.gif
new file mode 100644
index 0000000..3599698
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/static.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/style.css b/deluge/ui/web/docs/template/resources/style.css
new file mode 100644
index 0000000..da14f55
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/style.css
@@ -0,0 +1,360 @@
+.body-wrap {
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ color: #222;
+ background-color:#FFFFFF;
+ margin: 0px;
+ padding: 10px;
+ position:relative;
+}
+.body-wrap {
+ width:95%;
+}
+
+.body-wrap ul.list {
+ margin-left:20px;
+ margin-bottom:10px;
+}
+.body-wrap ul.list li {
+ list-style:inside square;
+ padding:2px;
+}
+.body-wrap .description p {
+ margin:8px 3px !important;
+}
+.body-wrap .description h4{
+ color:#083772;
+ border-bottom:1px dashed #ccc;
+ margin:8px 0;
+ padding-bottom:3px;
+}
+.body-wrap, .body-wrap td, .body-wrap th {
+ font-size: 13px;
+}
+.body-wrap code {
+ font-family: "Lucida Console", "Courier New", Courier, monospace;
+ font-size: 12px;
+}
+.body-wrap pre {
+ font-family: "Lucida Console", "Courier New", Courier, monospace;
+ font-size: 12px;
+}
+.body-wrap th {
+ text-align: left;
+ vertical-align:middle;
+ border-right:1px solid #d0d0d0;
+ border-top:1px solid #eee;
+ border-left:1px solid #eee;
+ background: #f9f9f9 url(../resources/images/default/grid/grid3-hrow.gif) repeat-x 0 top;
+ padding:3px;
+}
+.body-wrap .msource-header {
+ border-right: 0 none;
+}
+.body-wrap .top-tools{
+ font-size:11px;
+ text-align:right;
+}
+.body-wrap table {
+ background-color: white;
+}
+.body-wrap a {
+ color: #083772;
+}
+.body-wrap a:link {
+ color: #083772;
+ text-decoration: none;
+}
+
+.body-wrap a:visited {
+ color: #1e4e8f;
+ text-decoration: none;
+}
+
+.body-wrap a:hover {
+ text-decoration: underline;
+ color: #0000CC;
+}
+
+.body-wrap a:active {
+ text-decoration: none;
+ color: #1e4e8f;
+}
+
+/* Headings */
+.body-wrap h1, .body-wrap h2, .body-wrap h3, .body-wrap h4, .body-wrap h5, .body-wrap h6 {
+ font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+ font-weight: bold;
+ margin:3px 300px 3px 0;
+ letter-spacing: 1px;
+ width: 90%;
+}
+
+.body-wrap h1 {
+ font-size: 18px;
+}
+
+.body-wrap h2 {
+ font-weight: bold;
+ font-size: 15px;
+ padding-top: 20px;
+ padding-bottom: 5px;
+}
+
+.body-wrap h3 {
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.body-wrap h4 {
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 14px;
+}
+
+.body-wrap h5 {
+ font-size: 11px;
+}
+
+.body-wrap .label {
+ font-weight: bold;
+ padding:3px 15px 3px 0;
+ color:#333;
+}
+
+.body-wrap .hd-info {
+ color:#333;
+ padding:3px;
+}
+.body-wrap .hd-info a {
+
+}
+.body-wrap .description{
+ margin: 10px 0px;
+}
+.body-wrap .member-table{
+ width:100%;
+ margin-bottom:10px;
+}
+.body-wrap .member-table td{
+ padding:4px;
+ vertical-align:top;
+ padding-right:15px;
+}
+.body-wrap .member-table td.sig {
+ padding-left:7px;
+}
+.body-wrap .alt{
+ /*background:#f1f1f1;*/
+}
+.body-wrap .member-table td.micon{
+ width:16px;
+ padding:0px;
+ background: #f9f9f9 url(expand-bg.gif) repeat-y top right;
+ border-right:1px solid #d0d0d0;
+}
+.body-wrap .member-table td.micon a {
+ display:block;
+ height:1px;
+ width:1px;
+ overflow:hidden;
+ cursor:default;
+}
+.body-wrap .member-table .expandable td.micon a {
+ display:block;
+ width:98%;
+ height:30px;
+ text-decoration:none !important;
+ -moz-outline:none;
+ outline:none;
+}
+
+.body-wrap .member-table td.msource{
+ width:100px;
+}
+.mlink{
+ font-weight:bold;
+}
+
+.member-table {
+ border:1px solid #d0d0d0;
+}
+.member-table tr.inherited td.msource{
+ background-image: url(inherited.gif);
+ background-position:2px 4px;
+ background-repeat: no-repeat;
+ padding-left:18px;
+}
+.member-table .mdesc{
+ padding:5px 0;
+ color:#444;
+}
+.member-table td.micon,.member-table td.sig,.member-table td.msource{
+ border-top:1px solid #d0d0d0;
+}
+.body-wrap .optional{
+ color:#444 !important;
+}
+
+.body-wrap pre {
+ background: #F8F8F8;
+ border: 1px dotted #ccc;
+ margin: 1em ;
+ margin-right: 0;
+ font-size: 12px;
+ line-height:14px;
+ padding:7px;
+ margin-left:0;
+}
+.detail-wrap{
+
+}
+.mdetail-head{
+ margin-top:10px;
+}
+.mdetail{
+ padding:7px;
+ border-top:1px dotted #ccc;
+}
+.mdetail h3{
+ margin: 5px 0px;
+ font-size:14px;
+ color:#083772;
+}
+.mdetail-desc{
+ margin:8px;
+}
+.mdetail-def{
+ font-style: italic;
+ font-size: 12px;
+ margin-top:10px;
+ margin-left:8px;
+ display:block;
+}
+.sub-desc{
+ margin:5px;
+ margin-left:16px;
+}
+.mdetail-params{
+ margin-top:10px;
+}
+.mdetail-params strong{
+ display: block;
+ margin-bottom:3px;
+ font-size:11px;
+ font-weight:bold;
+ color:#555;
+}
+
+.mdetail-params ul{
+ list-style: inside;
+ list-style-type: circle;
+ margin:12px;
+}
+.mdetail-params li{
+ list-style: inside;
+ list-style-type: circle;
+}
+pre code{
+ font-size:12px !important;
+ color:#000;
+ line-height:16px !important;
+}
+pre code b{
+ font-weight: normal;
+ color: #800080;
+}
+pre code em{
+ font-weight: normal;
+ color: #008080;
+ background-color:#eee;
+}
+pre code i,pre code i b,pre code i em{
+ font-weight: normal;
+ font-style: normal;
+ color: #999;
+}
+
+.body-wrap .inheritance {
+ margin-top:20px;
+ float:right;
+ width:210px;
+}
+.body-wrap .inheritance pre {
+ text-align:left;
+ border: 0 none;
+ margin: 0;
+ font-size: 11px;
+ line-height:18px !important;
+ background:transparent url(block-bottom.gif) no-repeat left bottom;
+ padding:0 8px 5px!important;
+}
+
+.body-wrap .inheritance pre img {
+ vertical-align:middle;
+ margin-right:3px;
+}
+
+.expandable .micon a {
+ background: transparent url(member-collapsed.gif) no-repeat 5px 6px;
+ cursor:pointer;
+}
+
+.expandable td.micon:hover a {
+ background: transparent url(member-hover.gif) no-repeat 5px 6px;
+ cursor:pointer;
+}
+.body-wrap .member-table .expanded td.micon{
+ background: #f9f9f9 url(expand-bg-over.gif) repeat-y top right;
+}
+.body-wrap .member-table .expanded td.micon a {
+ background: transparent url(member-expanded.gif) no-repeat 5px 6px;
+ cursor:pointer;
+}
+
+.mdesc .long {
+ display:none;
+}
+.mdesc .long .mdetail-params {
+ font-size:12px;
+ padding-left:12px;
+}
+.expanded .mdesc .short {
+ display:none;
+}
+
+.expanded .mdesc .long {
+ display: block;
+}
+
+.full-details .expandable .micon a {
+ height:1px !important;
+ width:1px !important;
+ overflow:hidden;
+ cursor:default;
+}
+
+.full-details .mdesc .short {
+ display:none !important;
+}
+
+.full-details .mdesc .long {
+ display: block !important;
+}
+
+.full-details .body-wrap .member-table .expanded td.micon{
+ background: #f9f9f9 url(expand-bg.gif) repeat-y top right;
+}
+
+div.hr {
+ height:1px;
+ background:#ccc;
+ margin: 5px 0;
+ overflow:hidden;
+ line-height:1px;
+}
+
+
+.expanded .mdesc .long {
+ line-height:18px;
+}
diff --git a/deluge/ui/web/docs/template/resources/tabs.gif b/deluge/ui/web/docs/template/resources/tabs.gif
new file mode 100644
index 0000000..759de0f
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/tabs.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/tree-bg.gif b/deluge/ui/web/docs/template/resources/tree-bg.gif
new file mode 100644
index 0000000..00fac63
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/tree-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/wel-bg.gif b/deluge/ui/web/docs/template/resources/wel-bg.gif
new file mode 100644
index 0000000..9036602
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/wel-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/welcome-bg.gif b/deluge/ui/web/docs/template/resources/welcome-bg.gif
new file mode 100644
index 0000000..24b1ab2
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/welcome-bg.gif
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/welcome.css b/deluge/ui/web/docs/template/resources/welcome.css
new file mode 100644
index 0000000..d5b9a21
--- /dev/null
+++ b/deluge/ui/web/docs/template/resources/welcome.css
@@ -0,0 +1,25 @@
+body{
+ background:url(welcome-bg.gif) top left;
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ color: #000000;
+ margin: 0px;
+ font-size:13px;
+ padding-bottom:15px;
+}
+a {
+ color: #083772;
+}
+a:link {
+ color: #083772;
+ text-decoration: none;
+}
+
+a:visited {
+ color: #1e4e8f;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+ color: #0000CC;
+} \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/source-wrap.html b/deluge/ui/web/docs/template/source-wrap.html
new file mode 100644
index 0000000..b6437eb
--- /dev/null
+++ b/deluge/ui/web/docs/template/source-wrap.html
@@ -0,0 +1,10 @@
+<html>
+<head>
+ <title>The source code</title>
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
+</head>
+<body onload="prettyPrint();">
+ <pre class="prettyprint lang-js">###SOURCE###</pre>
+</body>
+</html> \ No newline at end of file
diff --git a/deluge/ui/web/docs/template/template.xml b/deluge/ui/web/docs/template/template.xml
new file mode 100644
index 0000000..f29c808
--- /dev/null
+++ b/deluge/ui/web/docs/template/template.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template>
+ <classTemplate tpl="tpl/class.xsl" targetDir="output"/>
+ <treeTemplate tpl="tpl/tree.xsl" targetFile="output/tree.js"/>
+ <source targetDir="source" wrapper="source-wrap.html"/>
+ <resources>
+ <copy src="index.html" dst="index.html"/>
+ <copy src="welcome.html" dst="welcome.html"/>
+ <copy src="resources" dst="resources"/>
+ </resources>
+</template>
diff --git a/deluge/ui/web/docs/template/tpl/class.xsl b/deluge/ui/web/docs/template/tpl/class.xsl
new file mode 100644
index 0000000..75ee17e
--- /dev/null
+++ b/deluge/ui/web/docs/template/tpl/class.xsl
@@ -0,0 +1,405 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xsl:stylesheet [
+ <!ENTITY nbsp "&#160;">
+]>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="http://www.extjs.com">
+<xsl:output method="html" indent="no"/>
+ <xsl:template match="/docClass">
+ <div class="body-wrap">
+ <div class="top-tools">
+ <a class="inner-link" href="#{className}-props">
+ <img src="resources/images/default/s.gif" class="item-icon icon-prop"/>Properties</a><xsl:text>&#x0D;</xsl:text>
+ <a class="inner-link" href="#{className}-methods">
+ <img src="resources/images/default/s.gif" class="item-icon icon-method"/>Methods</a><xsl:text>&#x0D;</xsl:text>
+ <a class="inner-link" href="#{className}-events">
+ <img src="resources/images/default/s.gif" class="item-icon icon-event"/>Events</a><xsl:text>&#x0D;</xsl:text>
+ <xsl:if test="cfgs">
+ <a class="inner-link" href="#{className}-configs">
+ <img src="resources/images/default/s.gif" class="item-icon icon-config"/>Config Options</a><xsl:text>&#x0D;</xsl:text>
+ </xsl:if>
+ <a class="bookmark" href="../docs/?class={className}">
+ <img src="resources/images/default/s.gif" class="item-icon icon-fav"/>Direct Link</a><xsl:text>&#x0D;</xsl:text>
+ </div>
+ <xsl:if test="superClasses">
+ <xsl:call-template name="super-classes"/>
+ </xsl:if>
+ <h1>Class <a href="source/{href}"><xsl:value-of select="className"/></a></h1>
+ <table cellspacing="0">
+ <tr>
+ <td class="label">Package:</td>
+ <td class="hd-info">
+ <xsl:choose>
+ <xsl:when test="packageName!=''"><xsl:value-of select="packageName"/></xsl:when>
+ <xsl:otherwise>Global</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr><td class="label">Defined In:</td><td class="hd-info"><a href="source/{href}"><xsl:value-of select="definedIn"/></a></td></tr>
+ <tr><td class="label">Class:</td><td class="hd-info"><a href="source/{href}"><xsl:value-of select="shortClassName"/></a></td></tr>
+ <xsl:if test="subClasses">
+ <xsl:call-template name="sub-classes"/>
+ </xsl:if>
+ <tr>
+ <td class="label">Extends:</td><td class="hd-info">
+ <xsl:choose>
+ <xsl:when test="superClasses">
+ <a href="output/{superClasses[last()]/className}.html" ext:cls="{superClasses[last()]/className}" ext:member=""><xsl:value-of select="superClasses[last()]/shortClassName"/></a>
+ </xsl:when>
+ <xsl:otherwise>Object</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <xsl:call-template name="class-custom-tags"/>
+ </table>
+ <div class="description">
+ <xsl:value-of select="description" disable-output-escaping="yes"/>
+ <xsl:if test="singleton='true'"><br/><br/><i>This class is a singleton and cannot be created directly.</i></xsl:if>
+ </div>
+ <div class="hr"> </div>
+
+ <!--Configs-->
+ <xsl:if test="cfgs">
+ <a id="{className}-configs"> </a>
+ <h2>Config Options</h2>
+ <table cellspacing="0" class="member-table">
+ <tbody>
+ <tr>
+ <th colspan="2" class="sig-header">Config Options</th>
+ <th class="msource-header">Defined By</th>
+ </tr>
+ <xsl:for-each select="cfgs">
+ <xsl:variable name="inherited">
+ <xsl:if test="/docClass/className!=className">inherited</xsl:if>
+ </xsl:variable>
+ <xsl:variable name="cls">
+ <xsl:if test="description/hasShort='true'">expandable</xsl:if>
+ </xsl:variable>
+ <tr class="config-row {$cls} {$inherited}">
+ <td class="micon"><a href="#expand" class="exi">&nbsp;</a></td>
+ <td class="sig">
+ <a id="{className}-{name}"/>
+ <b><a href="source/{href}"><xsl:value-of select="name"/></a></b> : <xsl:value-of select="type"/>
+ <div class="mdesc">
+ <xsl:choose>
+ <xsl:when test="description/hasShort='true'">
+ <div class="short"><xsl:value-of select="description/shortDescr"/></div>
+ <div class="long"><xsl:value-of select="description/longDescr" disable-output-escaping="yes"/><xsl:call-template name="custom-tags"/></div>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="description/longDescr" disable-output-escaping="yes"/><xsl:call-template name="custom-tags"/></xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </td>
+ <xsl:call-template name="msource">
+ <xsl:with-param name="inherited" select="$inherited='inherited'"/>
+ </xsl:call-template>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:if>
+
+ <!--Properties-->
+ <a id="{className}-props"> </a>
+ <h2>Public Properties</h2>
+ <xsl:choose>
+ <xsl:when test="properties">
+ <table cellspacing="0" class="member-table">
+ <tbody>
+ <tr>
+ <th colspan="2" class="sig-header">Property</th>
+ <th class="msource-header">Defined By</th>
+ </tr>
+ <xsl:for-each select="properties">
+ <xsl:variable name="inherited">
+ <xsl:if test="/docClass/className!=className">inherited</xsl:if>
+ </xsl:variable>
+ <xsl:variable name="cls">
+ <xsl:if test="description/hasShort='true'">expandable</xsl:if>
+ </xsl:variable>
+ <tr class="property-row {$cls} {$inherited}">
+ <td class="micon"><a href="#expand" class="exi">&nbsp;</a></td>
+ <td class="sig">
+ <a id="{className}-{name}"/>
+ <b><a href="source/{href}"><xsl:value-of select="name"/></a></b> : <xsl:value-of select="type"/>
+ <div class="mdesc">
+ <xsl:choose>
+ <xsl:when test="description/hasShort='true'">
+ <div class="short"><xsl:value-of select="description/shortDescr"/></div>
+ <div class="long"><xsl:value-of select="description/longDescr" disable-output-escaping="yes"/><xsl:call-template name="custom-tags"/></div>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="description/longDescr" disable-output-escaping="yes"/><xsl:call-template name="custom-tags"/></xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </td>
+ <xsl:call-template name="msource">
+ <xsl:with-param name="inherited" select="$inherited='inherited'"/>
+ </xsl:call-template>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise><div class="no-members">This class has no public properties.</div></xsl:otherwise>
+ </xsl:choose>
+
+ <!--Methods-->
+ <a id="{className}-methods"> </a>
+ <h2>Public Methods</h2>
+ <xsl:choose>
+ <xsl:when test="methods">
+ <table cellspacing="0" class="member-table">
+ <tbody>
+ <tr>
+ <th colspan="2" class="sig-header">Method</th>
+ <th class="msource-header">Defined By</th>
+ </tr>
+ <xsl:if test="hasConstructor='true'">
+ <xsl:call-template name="constructor"/>
+ </xsl:if>
+ <xsl:for-each select="methods">
+ <xsl:variable name="inherited">
+ <xsl:if test="/docClass/className!=className">inherited</xsl:if>
+ </xsl:variable>
+ <tr class="method-row expandable {$inherited}">
+ <td class="micon"><a href="#expand" class="exi">&nbsp;</a></td>
+ <td class="sig">
+ <a id="{className}-{name}"/>
+ <b><a href="source/{href}"><xsl:value-of select="name"/></a></b>
+ <xsl:call-template name="method-params"/>:
+ <xsl:choose>
+ <xsl:when test="returnType"><xsl:value-of select="returnType"/></xsl:when>
+ <xsl:otherwise>void</xsl:otherwise>
+ </xsl:choose>
+ <div class="mdesc">
+ <xsl:call-template name="custom-tags"/>
+ <div class="short">
+ <xsl:call-template name="check-if-static"/>
+ <xsl:value-of select="description/shortDescr"/>
+ </div>
+ <div class="long">
+ <xsl:call-template name="check-if-static"/>
+ <xsl:value-of select="description/longDescr" disable-output-escaping="yes"/>
+ <xsl:call-template name="method-params-details"/>
+ </div>
+ </div>
+ </td>
+ <xsl:call-template name="msource">
+ <xsl:with-param name="inherited" select="$inherited='inherited'"/>
+ </xsl:call-template>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise><div class="no-members">This class has no public methods.</div></xsl:otherwise>
+ </xsl:choose>
+
+ <!--Events-->
+ <a id="{className}-events"> </a>
+ <h2>Public Events</h2>
+ <xsl:choose>
+ <xsl:when test="events">
+ <table cellspacing="0" class="member-table">
+ <tbody>
+ <tr>
+ <th colspan="2" class="sig-header">Event</th>
+ <th class="msource-header">Defined By</th>
+ </tr>
+ <xsl:for-each select="events">
+ <xsl:variable name="inherited">
+ <xsl:if test="/docClass/className!=className">inherited</xsl:if>
+ </xsl:variable>
+ <tr class="method-row expandable {$inherited}">
+ <td class="micon"><a href="#expand" class="exi">&nbsp;</a></td>
+ <td class="sig">
+ <a id="{className}-{name}"/>
+ <b><a href="source/{href}"><xsl:value-of select="name"/></a></b> :
+ <xsl:call-template name="method-params"/>
+ <div class="mdesc">
+ <div class="short"><xsl:value-of select="description/shortDescr"/></div>
+ <div class="long">
+ <xsl:value-of select="description/longDescr" disable-output-escaping="yes"/>
+ <div class="mdetail-params">
+ <strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong>
+ <ul>
+ <xsl:if test="count(params)=0">
+ <li>None.</li>
+ </xsl:if>
+ <xsl:for-each select="params">
+ <li>
+ <code><xsl:value-of select="name"/></code> : <xsl:value-of select="type"/>
+ <div class="sub-desc">
+ <xsl:value-of select="description" disable-output-escaping="yes"/>
+ </div>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </div>
+ <xsl:call-template name="custom-tags"/>
+ </div>
+ </div>
+ </td>
+ <xsl:call-template name="msource">
+ <xsl:with-param name="inherited" select="$inherited='inherited'"/>
+ </xsl:call-template>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise><div class="no-members">This class has no public events.</div></xsl:otherwise>
+ </xsl:choose>
+
+ </div>
+ </xsl:template>
+
+ <!-- Right column with link to parent class -->
+ <xsl:template name="msource">
+ <xsl:param name="inherited"/>
+ <td class="msource">
+ <xsl:choose>
+ <xsl:when test="$inherited">
+ <a href="output/{className}.html#{name}" ext:member="#{name}" ext:cls="{className}">
+ <xsl:value-of select="shortClassName"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="shortClassName"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:template>
+
+ <xsl:template name="constructor">
+ <tr class="method-row expandable">
+ <td class="micon"><a href="#expand" class="exi">&nbsp;</a></td>
+ <td class="sig">
+ <a id="{className}-{shortClassName}"/>
+ <b><a href="source/{href}"><xsl:value-of select="shortClassName"/></a></b>
+ <xsl:call-template name="method-params"/>
+ <div class="mdesc">
+ <div class="short"><xsl:value-of select="constructorDescription/shortDescr"/></div>
+ <div class="long">
+ <xsl:value-of select="constructorDescription/longDescr" disable-output-escaping="yes"/>
+ <xsl:call-template name="method-params-details"/>
+ <xsl:call-template name="custom-tags"/>
+ </div>
+ </div>
+ </td>
+ <xsl:call-template name="msource">
+ <xsl:with-param name="inherited" select="false()"/>
+ </xsl:call-template>
+ </tr>
+ </xsl:template>
+
+ <!-- Method Parameters in short-->
+ <xsl:template name="method-params">(<xsl:if test="count(params)&gt;0">&nbsp;</xsl:if><xsl:for-each select="params">
+ <xsl:choose>
+ <xsl:when test="optional='true'"><span title="Optional" class="optional">[<code><xsl:value-of select="type"/>&nbsp;<xsl:value-of select="name"/></code>]</span></xsl:when>
+ <xsl:otherwise><code><xsl:value-of select="type"/>&nbsp;<xsl:value-of select="name"/></code></xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="position()!=last()">,&nbsp;</xsl:if>
+ </xsl:for-each><xsl:if test="count(params)&gt;0">&nbsp;</xsl:if>)
+ </xsl:template>
+
+
+
+ <!-- Method Parameters processing-->
+ <xsl:template name="method-params-details">
+ <div class="mdetail-params">
+ <strong>Parameters:</strong>
+ <ul>
+ <xsl:if test="count(params)=0">
+ <li>None.</li>
+ </xsl:if>
+ <xsl:for-each select="params">
+ <li>
+ <code><xsl:value-of select="name"/></code> : <xsl:value-of select="type"/>
+ <div class="sub-desc"><xsl:value-of select="description" disable-output-escaping="yes"/></div>
+ </li>
+ </xsl:for-each></ul>
+ <strong>Returns:</strong>
+ <ul>
+ <li>
+ <xsl:choose>
+ <xsl:when test="returnType">
+ <code><xsl:value-of select="returnType"/></code>
+ <div class="sub-desc"><xsl:value-of select="returnDescription"/></div>
+ </xsl:when>
+ <xsl:otherwise>void</xsl:otherwise>
+ </xsl:choose>
+ </li>
+ </ul>
+ </div>
+ </xsl:template>
+
+ <!-- Shows <static> if item is static-->
+ <xsl:template name="check-if-static">
+ <xsl:if test="isStatic='true'">&lt;static&gt;&nbsp;</xsl:if>
+ </xsl:template>
+
+ <!-- Shows inheritance tree in the right side -->
+ <xsl:template name="super-classes">
+ <div class="inheritance res-block">
+ <pre class="res-block-inner">
+ <xsl:for-each select="superClasses">
+ <a href="output/{className}.html" ext:member="" ext:cls="{className}"><xsl:value-of select="shortClassName"/></a><xsl:text>&#x0D;</xsl:text>
+ <xsl:call-template name="spacer">
+ <xsl:with-param name="n" select="position()"/>
+ </xsl:call-template>
+ <img src="resources/elbow-end.gif"/>
+ </xsl:for-each>
+ <xsl:value-of select="shortClassName"/>
+ </pre>
+ </div>
+ </xsl:template>
+
+ <!-- Recursive template generates "n" number of space elements -->
+ <xsl:template name="spacer">
+ <xsl:param name="n"/>
+ <xsl:if test="$n&gt;0">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:call-template name="spacer">
+ <xsl:with-param name="n" select="$n - 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Shows subclasses -->
+ <xsl:template name="sub-classes">
+ <tr>
+ <td class="label">Subclasses:</td>
+ <td class="hd-info">
+ <xsl:for-each select="subClasses">
+ <a href="output/{className}.html" ext:cls="{className}"><xsl:value-of select="shortClassName"/></a>
+ <xsl:if test="position()!=last()"><xsl:text>,&#x0D;</xsl:text></xsl:if>
+ </xsl:for-each>
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template name="class-custom-tags">
+ <xsl:if test="customTags">
+ <xsl:for-each select="customTags">
+ <tr>
+ <td class="label"><xsl:value-of select="title"/>:</td>
+ <td class="hd-info"><xsl:value-of select="value" disable-output-escaping="yes"/></td>
+ </tr>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="custom-tags">
+ <xsl:if test="customTags">
+ <table>
+ <xsl:for-each select="customTags">
+ <tr>
+ <td class="label"><xsl:value-of select="title"/>:</td>
+ <td class="hd-info"><xsl:value-of select="value" disable-output-escaping="yes"/></td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/deluge/ui/web/docs/template/tpl/tree.xsl b/deluge/ui/web/docs/template/tpl/tree.xsl
new file mode 100644
index 0000000..8085eda
--- /dev/null
+++ b/deluge/ui/web/docs/template/tpl/tree.xsl
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="text"/>
+
+ <xsl:template match="/">
+ Docs.classData ={"id":"apidocs","iconCls":"icon-docs","text":"API Documentation","singleClickExpand":true,"children":[<xsl:apply-templates/>]};
+ Docs.icons = {
+ <xsl:for-each select="//classes">
+ <xsl:variable name="icon">
+ <xsl:choose>
+ <xsl:when test="singleton='true'">icon-static</xsl:when>
+ <xsl:when test="component='true'">icon-cmp</xsl:when>
+ <xsl:otherwise>icon-cls</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ "<xsl:value-of select="className"/>":"<xsl:value-of select="$icon"/>"
+ <xsl:if test="position()!=last()">,</xsl:if>
+ </xsl:for-each>};
+ </xsl:template>
+
+ <xsl:template match="treePackage|packages">
+ <xsl:for-each select="packages">
+ {"id":"pkg-<xsl:value-of select="@fullName"/>","text":"<xsl:value-of select="@name"/>","iconCls":"icon-pkg","cls":"package","singleClickExpand":true, children:[<xsl:apply-templates select="."/>]}
+ <xsl:if test="position()!=last()">,</xsl:if>
+ </xsl:for-each>
+ <xsl:if test="count(packages)!=0 and count(classes)!=0">,</xsl:if>
+ <xsl:for-each select="classes">
+ <xsl:variable name="icon">
+ <xsl:choose>
+ <xsl:when test="singleton='true'">icon-static</xsl:when>
+ <xsl:when test="component='true'">icon-cmp</xsl:when>
+ <xsl:otherwise>icon-cls</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ {"href":"output/<xsl:value-of select="className"/>.html","text":"<xsl:value-of select="shortClassName"/>","id":"<xsl:value-of select="className"/>","isClass":true,"iconCls":"<xsl:value-of select="$icon"/>","cls":"cls","leaf":true}
+ <xsl:if test="position()!=last()">,</xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!--suppress default templates-->
+ <xsl:template match="*"/>
+
+
+</xsl:stylesheet>
+
diff --git a/deluge/ui/web/docs/template/welcome.html b/deluge/ui/web/docs/template/welcome.html
new file mode 100644
index 0000000..e5e76c1
--- /dev/null
+++ b/deluge/ui/web/docs/template/welcome.html
@@ -0,0 +1,47 @@
+<div id="welcome">
+ <div class="col">
+ <div id="search">
+ </div>
+ </div>
+ <div class="col-last">
+ <div class="res-block">
+ <div class="res-block-inner">
+ <h3>Additional Resources</h3>
+ <ul>
+ <li><a href="http://deluge-torrent.org/docs/" target="_blank">Deluge API Docs</a></li>
+ <li><a href="http://www.extjs.com/deploy/dev/docs/" target="_blank">Ext 3.1 API Docs</a></li>
+ <li><a href="http://www.extjs.com/deploy/dev/examples/samples.html" target="_blank">Ext 3.1 Samples</a></li>
+ <li><a href="http://extjs.com/learn" target="_blank">Ext Learning Center</a></li>
+ <li><a href="http://extjs.com/learn/Ext_FAQ" target="_blank">FAQ</a></li>
+ <li><a href="http://extjs.com/learn/Tutorials" target="_blank">Tutorials</a></li>
+ <li><a href="http://extjs.com/learn/Ext_Manual" target="_blank">Ext Community Manual</a></li>
+ <li><a href="http://extjs.com/blog" target="_blank">Ext JS Blog</a></li>
+ </ul>
+ </div>
+ </div>
+ <div class="res-block">
+ <div class="res-block-inner">
+ <h3>Support</h3>
+ <ul>
+ <li><a href="http://forum.deluge-torrent.org" target="_blank">Deluge Community Forums</a></li>
+ <li><a href="http://extjs.com/forum" target="_blank">Ext Community Forums</a></li>
+ </ul>
+ </div>
+ </div>
+ <div class="res-block">
+ <div class="res-block-inner">
+ <h3>Icon Legend</h3>
+ <ul id="legend" style="list-style:none;margin-left:0;">
+ <li><img src="resources/images/default/s.gif" class="item-icon icon-pkg">Package</li>
+ <li><img src="resources/images/default/s.gif" class="item-icon icon-cls">Class</li>
+ <li><img src="resources/images/default/s.gif" class="item-icon icon-static">Singleton</li>
+ <li><img src="resources/images/default/s.gif" class="item-icon icon-cmp">Component</li>
+ <li><img src="resources/images/default/s.gif" class="item-icon icon-method">Method</li>
+ <li><img src="resources/images/default/s.gif" class="item-icon icon-prop">Property</li>
+ <li><img src="resources/images/default/s.gif" class="item-icon icon-config">Config Option</li>
+ <li><img src="resources/images/default/s.gif" class="item-icon icon-event">Event</li>
+ </ul>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/deluge/ui/web/icons/active.png b/deluge/ui/web/icons/active.png
new file mode 100644
index 0000000..e5bab66
--- /dev/null
+++ b/deluge/ui/web/icons/active.png
Binary files differ
diff --git a/deluge/ui/web/icons/add.png b/deluge/ui/web/icons/add.png
new file mode 100644
index 0000000..4b2c047
--- /dev/null
+++ b/deluge/ui/web/icons/add.png
Binary files differ
diff --git a/deluge/ui/web/icons/add_file.png b/deluge/ui/web/icons/add_file.png
new file mode 100644
index 0000000..80b41c8
--- /dev/null
+++ b/deluge/ui/web/icons/add_file.png
Binary files differ
diff --git a/deluge/ui/web/icons/add_url.png b/deluge/ui/web/icons/add_url.png
new file mode 100644
index 0000000..3453f50
--- /dev/null
+++ b/deluge/ui/web/icons/add_url.png
Binary files differ
diff --git a/deluge/ui/web/icons/alert.png b/deluge/ui/web/icons/alert.png
new file mode 100644
index 0000000..49028db
--- /dev/null
+++ b/deluge/ui/web/icons/alert.png
Binary files differ
diff --git a/deluge/ui/web/icons/all.png b/deluge/ui/web/icons/all.png
new file mode 100644
index 0000000..1a9ba90
--- /dev/null
+++ b/deluge/ui/web/icons/all.png
Binary files differ
diff --git a/deluge/ui/web/icons/back.png b/deluge/ui/web/icons/back.png
new file mode 100644
index 0000000..cd955f5
--- /dev/null
+++ b/deluge/ui/web/icons/back.png
Binary files differ
diff --git a/deluge/ui/web/icons/bottom.png b/deluge/ui/web/icons/bottom.png
new file mode 100644
index 0000000..a57c743
--- /dev/null
+++ b/deluge/ui/web/icons/bottom.png
Binary files differ
diff --git a/deluge/ui/web/icons/checking.png b/deluge/ui/web/icons/checking.png
new file mode 100644
index 0000000..9961675
--- /dev/null
+++ b/deluge/ui/web/icons/checking.png
Binary files differ
diff --git a/deluge/ui/web/icons/connection_manager.png b/deluge/ui/web/icons/connection_manager.png
new file mode 100644
index 0000000..f2f72c9
--- /dev/null
+++ b/deluge/ui/web/icons/connection_manager.png
Binary files differ
diff --git a/deluge/ui/web/icons/connections.png b/deluge/ui/web/icons/connections.png
new file mode 100644
index 0000000..859df38
--- /dev/null
+++ b/deluge/ui/web/icons/connections.png
Binary files differ
diff --git a/deluge/ui/web/icons/create.png b/deluge/ui/web/icons/create.png
new file mode 100644
index 0000000..375078c
--- /dev/null
+++ b/deluge/ui/web/icons/create.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge-192.png b/deluge/ui/web/icons/deluge-192.png
new file mode 100644
index 0000000..93c6feb
--- /dev/null
+++ b/deluge/ui/web/icons/deluge-192.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge-32.png b/deluge/ui/web/icons/deluge-32.png
new file mode 100644
index 0000000..916f136
--- /dev/null
+++ b/deluge/ui/web/icons/deluge-32.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge-512.png b/deluge/ui/web/icons/deluge-512.png
new file mode 100644
index 0000000..464dd69
--- /dev/null
+++ b/deluge/ui/web/icons/deluge-512.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge-apple-180.png b/deluge/ui/web/icons/deluge-apple-180.png
new file mode 100644
index 0000000..527501f
--- /dev/null
+++ b/deluge/ui/web/icons/deluge-apple-180.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge.png b/deluge/ui/web/icons/deluge.png
new file mode 100644
index 0000000..1291dfa
--- /dev/null
+++ b/deluge/ui/web/icons/deluge.png
Binary files differ
diff --git a/deluge/ui/web/icons/dht.png b/deluge/ui/web/icons/dht.png
new file mode 100644
index 0000000..2396bb1
--- /dev/null
+++ b/deluge/ui/web/icons/dht.png
Binary files differ
diff --git a/deluge/ui/web/icons/document.png b/deluge/ui/web/icons/document.png
new file mode 100644
index 0000000..12b8b3e
--- /dev/null
+++ b/deluge/ui/web/icons/document.png
Binary files differ
diff --git a/deluge/ui/web/icons/down.png b/deluge/ui/web/icons/down.png
new file mode 100644
index 0000000..3e81fbe
--- /dev/null
+++ b/deluge/ui/web/icons/down.png
Binary files differ
diff --git a/deluge/ui/web/icons/downloading.png b/deluge/ui/web/icons/downloading.png
new file mode 100644
index 0000000..e64aa5a
--- /dev/null
+++ b/deluge/ui/web/icons/downloading.png
Binary files differ
diff --git a/deluge/ui/web/icons/drive.png b/deluge/ui/web/icons/drive.png
new file mode 100644
index 0000000..a358fa3
--- /dev/null
+++ b/deluge/ui/web/icons/drive.png
Binary files differ
diff --git a/deluge/ui/web/icons/edit_trackers.png b/deluge/ui/web/icons/edit_trackers.png
new file mode 100644
index 0000000..17f0d94
--- /dev/null
+++ b/deluge/ui/web/icons/edit_trackers.png
Binary files differ
diff --git a/deluge/ui/web/icons/error.png b/deluge/ui/web/icons/error.png
new file mode 100644
index 0000000..2ffb89f
--- /dev/null
+++ b/deluge/ui/web/icons/error.png
Binary files differ
diff --git a/deluge/ui/web/icons/expand_all.png b/deluge/ui/web/icons/expand_all.png
new file mode 100644
index 0000000..013d55a
--- /dev/null
+++ b/deluge/ui/web/icons/expand_all.png
Binary files differ
diff --git a/deluge/ui/web/icons/favicon.ico b/deluge/ui/web/icons/favicon.ico
new file mode 100644
index 0000000..176ca66
--- /dev/null
+++ b/deluge/ui/web/icons/favicon.ico
Binary files differ
diff --git a/deluge/ui/web/icons/find_more.png b/deluge/ui/web/icons/find_more.png
new file mode 100644
index 0000000..e53a4ef
--- /dev/null
+++ b/deluge/ui/web/icons/find_more.png
Binary files differ
diff --git a/deluge/ui/web/icons/forward.png b/deluge/ui/web/icons/forward.png
new file mode 100644
index 0000000..95ee822
--- /dev/null
+++ b/deluge/ui/web/icons/forward.png
Binary files differ
diff --git a/deluge/ui/web/icons/help.png b/deluge/ui/web/icons/help.png
new file mode 100644
index 0000000..e68c458
--- /dev/null
+++ b/deluge/ui/web/icons/help.png
Binary files differ
diff --git a/deluge/ui/web/icons/high.png b/deluge/ui/web/icons/high.png
new file mode 100644
index 0000000..6755979
--- /dev/null
+++ b/deluge/ui/web/icons/high.png
Binary files differ
diff --git a/deluge/ui/web/icons/home.png b/deluge/ui/web/icons/home.png
new file mode 100644
index 0000000..dda4941
--- /dev/null
+++ b/deluge/ui/web/icons/home.png
Binary files differ
diff --git a/deluge/ui/web/icons/inactive.png b/deluge/ui/web/icons/inactive.png
new file mode 100644
index 0000000..e434dad
--- /dev/null
+++ b/deluge/ui/web/icons/inactive.png
Binary files differ
diff --git a/deluge/ui/web/icons/install_plugin.png b/deluge/ui/web/icons/install_plugin.png
new file mode 100644
index 0000000..e502704
--- /dev/null
+++ b/deluge/ui/web/icons/install_plugin.png
Binary files differ
diff --git a/deluge/ui/web/icons/login.png b/deluge/ui/web/icons/login.png
new file mode 100644
index 0000000..ccc7ff3
--- /dev/null
+++ b/deluge/ui/web/icons/login.png
Binary files differ
diff --git a/deluge/ui/web/icons/logout.png b/deluge/ui/web/icons/logout.png
new file mode 100644
index 0000000..1e9d5b8
--- /dev/null
+++ b/deluge/ui/web/icons/logout.png
Binary files differ
diff --git a/deluge/ui/web/icons/low.png b/deluge/ui/web/icons/low.png
new file mode 100644
index 0000000..b9f1d2b
--- /dev/null
+++ b/deluge/ui/web/icons/low.png
Binary files differ
diff --git a/deluge/ui/web/icons/magnet.png b/deluge/ui/web/icons/magnet.png
new file mode 100644
index 0000000..6fc25ed
--- /dev/null
+++ b/deluge/ui/web/icons/magnet.png
Binary files differ
diff --git a/deluge/ui/web/icons/magnet_add.png b/deluge/ui/web/icons/magnet_add.png
new file mode 100644
index 0000000..f6010f5
--- /dev/null
+++ b/deluge/ui/web/icons/magnet_add.png
Binary files differ
diff --git a/deluge/ui/web/icons/magnet_copy.png b/deluge/ui/web/icons/magnet_copy.png
new file mode 100644
index 0000000..9b4ec6b
--- /dev/null
+++ b/deluge/ui/web/icons/magnet_copy.png
Binary files differ
diff --git a/deluge/ui/web/icons/move.png b/deluge/ui/web/icons/move.png
new file mode 100644
index 0000000..319cc16
--- /dev/null
+++ b/deluge/ui/web/icons/move.png
Binary files differ
diff --git a/deluge/ui/web/icons/no_download.png b/deluge/ui/web/icons/no_download.png
new file mode 100644
index 0000000..e569b6a
--- /dev/null
+++ b/deluge/ui/web/icons/no_download.png
Binary files differ
diff --git a/deluge/ui/web/icons/normal.png b/deluge/ui/web/icons/normal.png
new file mode 100644
index 0000000..95ee822
--- /dev/null
+++ b/deluge/ui/web/icons/normal.png
Binary files differ
diff --git a/deluge/ui/web/icons/ok.png b/deluge/ui/web/icons/ok.png
new file mode 100644
index 0000000..7919580
--- /dev/null
+++ b/deluge/ui/web/icons/ok.png
Binary files differ
diff --git a/deluge/ui/web/icons/pause.png b/deluge/ui/web/icons/pause.png
new file mode 100644
index 0000000..6e7b8c3
--- /dev/null
+++ b/deluge/ui/web/icons/pause.png
Binary files differ
diff --git a/deluge/ui/web/icons/preferences.png b/deluge/ui/web/icons/preferences.png
new file mode 100644
index 0000000..e8e6a06
--- /dev/null
+++ b/deluge/ui/web/icons/preferences.png
Binary files differ
diff --git a/deluge/ui/web/icons/queue.png b/deluge/ui/web/icons/queue.png
new file mode 100644
index 0000000..150ef8a
--- /dev/null
+++ b/deluge/ui/web/icons/queue.png
Binary files differ
diff --git a/deluge/ui/web/icons/queued.png b/deluge/ui/web/icons/queued.png
new file mode 100644
index 0000000..74db4c5
--- /dev/null
+++ b/deluge/ui/web/icons/queued.png
Binary files differ
diff --git a/deluge/ui/web/icons/recheck.png b/deluge/ui/web/icons/recheck.png
new file mode 100644
index 0000000..e53a4ef
--- /dev/null
+++ b/deluge/ui/web/icons/recheck.png
Binary files differ
diff --git a/deluge/ui/web/icons/remove.png b/deluge/ui/web/icons/remove.png
new file mode 100644
index 0000000..70db1ca
--- /dev/null
+++ b/deluge/ui/web/icons/remove.png
Binary files differ
diff --git a/deluge/ui/web/icons/seeding.png b/deluge/ui/web/icons/seeding.png
new file mode 100644
index 0000000..2d9dc58
--- /dev/null
+++ b/deluge/ui/web/icons/seeding.png
Binary files differ
diff --git a/deluge/ui/web/icons/start.png b/deluge/ui/web/icons/start.png
new file mode 100644
index 0000000..b9f1d2b
--- /dev/null
+++ b/deluge/ui/web/icons/start.png
Binary files differ
diff --git a/deluge/ui/web/icons/top.png b/deluge/ui/web/icons/top.png
new file mode 100644
index 0000000..db9969d
--- /dev/null
+++ b/deluge/ui/web/icons/top.png
Binary files differ
diff --git a/deluge/ui/web/icons/traffic.png b/deluge/ui/web/icons/traffic.png
new file mode 100644
index 0000000..b4ce5ea
--- /dev/null
+++ b/deluge/ui/web/icons/traffic.png
Binary files differ
diff --git a/deluge/ui/web/icons/up.png b/deluge/ui/web/icons/up.png
new file mode 100644
index 0000000..9aa7c64
--- /dev/null
+++ b/deluge/ui/web/icons/up.png
Binary files differ
diff --git a/deluge/ui/web/icons/update.png b/deluge/ui/web/icons/update.png
new file mode 100644
index 0000000..ee61b01
--- /dev/null
+++ b/deluge/ui/web/icons/update.png
Binary files differ
diff --git a/deluge/ui/web/icons/upload_slots.png b/deluge/ui/web/icons/upload_slots.png
new file mode 100644
index 0000000..294523e
--- /dev/null
+++ b/deluge/ui/web/icons/upload_slots.png
Binary files differ
diff --git a/deluge/ui/web/icons/warning.png b/deluge/ui/web/icons/warning.png
new file mode 100644
index 0000000..c81dc59
--- /dev/null
+++ b/deluge/ui/web/icons/warning.png
Binary files differ
diff --git a/deluge/ui/web/images/s.gif b/deluge/ui/web/images/s.gif
new file mode 100644
index 0000000..1d11fa9
--- /dev/null
+++ b/deluge/ui/web/images/s.gif
Binary files differ
diff --git a/deluge/ui/web/images/spinner-split.gif b/deluge/ui/web/images/spinner-split.gif
new file mode 100644
index 0000000..7281146
--- /dev/null
+++ b/deluge/ui/web/images/spinner-split.gif
Binary files differ
diff --git a/deluge/ui/web/images/spinner.gif b/deluge/ui/web/images/spinner.gif
new file mode 100644
index 0000000..4e72f53
--- /dev/null
+++ b/deluge/ui/web/images/spinner.gif
Binary files differ
diff --git a/deluge/ui/web/index.html b/deluge/ui/web/index.html
new file mode 100644
index 0000000..08c6d8b
--- /dev/null
+++ b/deluge/ui/web/index.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Deluge WebUI ${version}</title>
+
+ <link rel="icon" sizes="16x16" type="image/png"
+ href="${base}icons/deluge.png"/>
+ <link rel="icon" sizes="32x32" type="image/png"
+ href="${base}icons/deluge-32.png"/>
+ <!-- For Chrome, Android, iOS and Windows touch shortcuts: -->
+ <link rel="icon" sizes="192x192" type="image/png"
+ href="${base}icons/deluge-192.png"/>
+ <link rel="icon" sizes="512x512" type="image/png"
+ href="${base}icons/deluge-512.png"/>
+ <link rel="apple-touch-icon-precomposed"
+ href="${base}icons/deluge-apple-180.png"/>
+ <meta name="msapplication-TileColor" content="#599eee">
+ <meta name="theme-color" content="#599eee">
+
+ <!-- Stylesheets -->
+ % for stylesheet in stylesheets:
+ <link rel="stylesheet" type="text/css" href="${base}${stylesheet}"/>
+ % endfor
+
+ <script type="text/javascript">
+ deluge = {
+ author: 'Deluge Team',
+ version: '${version}',
+ config: ${js_config}
+ }
+ </script>
+
+ <!-- Javascript -->
+ % for script in scripts:
+ <script type="text/javascript" src="${base}${script}"></script>
+ % endfor
+ <script type="text/javascript">
+ Deluge.debug = ${debug};
+ </script>
+ </head>
+ <body>
+ <div style="background-image: url('${base}themes/images/default/tree/loading.gif');"></div>
+
+ <!-- Preload icon classes -->
+ <div class="ext-mb-error"></div>
+ <div class="icon-ok"></div>
+ </body>
+</html>
diff --git a/deluge/ui/web/js/deluge-all/.order b/deluge/ui/web/js/deluge-all/.order
new file mode 100644
index 0000000..4b6be43
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/.order
@@ -0,0 +1,2 @@
++ OptionsManager.js
++ StatusbarMenu.js
diff --git a/deluge/ui/web/js/deluge-all/AboutWindow.js b/deluge/ui/web/js/deluge-all/AboutWindow.js
new file mode 100644
index 0000000..cfae7a8
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/AboutWindow.js
@@ -0,0 +1,128 @@
+/**
+ * Deluge.AboutWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.namespace('Deluge.about');
+
+/**
+ * @class Deluge.about.AboutWindow
+ * @extends Ext.Window
+ */
+Deluge.about.AboutWindow = Ext.extend(Ext.Window, {
+ id: 'AboutWindow',
+ title: _('About Deluge'),
+ height: 330,
+ width: 270,
+ iconCls: 'x-deluge-main-panel',
+ resizable: false,
+ plain: true,
+ layout: {
+ type: 'vbox',
+ align: 'center',
+ },
+ buttonAlign: 'center',
+
+ initComponent: function () {
+ Deluge.about.AboutWindow.superclass.initComponent.call(this);
+ this.addEvents({
+ build_ready: true,
+ });
+
+ var self = this;
+ var libtorrent = function () {
+ deluge.client.core.get_libtorrent_version({
+ success: function (lt_version) {
+ comment += '<br/>' + _('libtorrent:') + ' ' + lt_version;
+ Ext.getCmp('about_comment').setText(comment, false);
+ self.fireEvent('build_ready');
+ },
+ });
+ };
+
+ var client_version = deluge.version;
+
+ var comment =
+ _(
+ 'A peer-to-peer file sharing program\nutilizing the BitTorrent protocol.'
+ ).replace('\n', '<br/>') +
+ '<br/><br/>' +
+ _('Client:') +
+ ' ' +
+ client_version +
+ '<br/>';
+ deluge.client.web.connected({
+ success: function (connected) {
+ if (connected) {
+ deluge.client.daemon.get_version({
+ success: function (server_version) {
+ comment +=
+ _('Server:') + ' ' + server_version + '<br/>';
+ libtorrent();
+ },
+ });
+ } else {
+ this.fireEvent('build_ready');
+ }
+ },
+ failure: function () {
+ this.fireEvent('build_ready');
+ },
+ scope: this,
+ });
+
+ this.add([
+ {
+ xtype: 'box',
+ style: 'padding-top: 5px',
+ height: 80,
+ width: 240,
+ cls: 'x-deluge-logo',
+ hideLabel: true,
+ },
+ {
+ xtype: 'label',
+ style: 'padding-top: 10px; font-weight: bold; font-size: 16px;',
+ text: _('Deluge') + ' ' + client_version,
+ },
+ {
+ xtype: 'label',
+ id: 'about_comment',
+ style: 'padding-top: 10px; text-align:center; font-size: 12px;',
+ html: comment,
+ },
+ {
+ xtype: 'label',
+ style: 'padding-top: 10px; font-size: 10px;',
+ text: _('Copyright 2007-2018 Deluge Team'),
+ },
+ {
+ xtype: 'label',
+ style: 'padding-top: 5px; font-size: 12px;',
+ html: '<a href="https://deluge-torrent.org" target="_blank">deluge-torrent.org</a>',
+ },
+ ]);
+ this.addButton(_('Close'), this.onCloseClick, this);
+ },
+
+ show: function () {
+ this.on('build_ready', function () {
+ Deluge.about.AboutWindow.superclass.show.call(this);
+ });
+ },
+
+ onCloseClick: function () {
+ this.close();
+ },
+});
+
+Ext.namespace('Deluge');
+
+Deluge.About = function () {
+ new Deluge.about.AboutWindow().show();
+};
diff --git a/deluge/ui/web/js/deluge-all/AddConnectionWindow.js b/deluge/ui/web/js/deluge-all/AddConnectionWindow.js
new file mode 100644
index 0000000..4d821f2
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/AddConnectionWindow.js
@@ -0,0 +1,117 @@
+/**
+ * Deluge.AddConnectionWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+/**
+ * @class Deluge.AddConnectionWindow
+ * @extends Ext.Window
+ */
+Deluge.AddConnectionWindow = Ext.extend(Ext.Window, {
+ title: _('Add Connection'),
+ iconCls: 'x-deluge-add-window-icon',
+
+ layout: 'fit',
+ width: 300,
+ height: 195,
+ constrainHeader: true,
+ bodyStyle: 'padding: 10px 5px;',
+ closeAction: 'hide',
+
+ initComponent: function () {
+ Deluge.AddConnectionWindow.superclass.initComponent.call(this);
+
+ this.addEvents('hostadded');
+
+ this.addButton(_('Close'), this.hide, this);
+ this.addButton(_('Add'), this.onAddClick, this);
+
+ this.on('hide', this.onHide, this);
+
+ this.form = this.add({
+ xtype: 'form',
+ defaultType: 'textfield',
+ baseCls: 'x-plain',
+ labelWidth: 60,
+ items: [
+ {
+ fieldLabel: _('Host:'),
+ labelSeparator: '',
+ name: 'host',
+ anchor: '75%',
+ value: '',
+ },
+ {
+ xtype: 'spinnerfield',
+ fieldLabel: _('Port:'),
+ labelSeparator: '',
+ name: 'port',
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 65535,
+ },
+ value: '58846',
+ anchor: '40%',
+ },
+ {
+ fieldLabel: _('Username:'),
+ labelSeparator: '',
+ name: 'username',
+ anchor: '75%',
+ value: '',
+ },
+ {
+ fieldLabel: _('Password:'),
+ labelSeparator: '',
+ anchor: '75%',
+ name: 'password',
+ inputType: 'password',
+ value: '',
+ },
+ ],
+ });
+ },
+
+ onAddClick: function () {
+ var values = this.form.getForm().getValues();
+ deluge.client.web.add_host(
+ values.host,
+ Number(values.port),
+ values.username,
+ values.password,
+ {
+ success: function (result) {
+ if (!result[0]) {
+ Ext.MessageBox.show({
+ title: _('Error'),
+ msg: String.format(
+ _('Unable to add host: {0}'),
+ result[1]
+ ),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ } else {
+ this.fireEvent('hostadded');
+ }
+ this.hide();
+ },
+ scope: this,
+ }
+ );
+ },
+
+ onHide: function () {
+ this.form.getForm().reset();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/AddTrackerWindow.js b/deluge/ui/web/js/deluge-all/AddTrackerWindow.js
new file mode 100644
index 0000000..aaf4a3f
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/AddTrackerWindow.js
@@ -0,0 +1,86 @@
+/**
+ * Deluge.AddTrackerWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+// Custom VType validator for tracker urls
+var trackerUrlTest =
+ /(((^https?)|(^udp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;
+Ext.apply(Ext.form.VTypes, {
+ trackerUrl: function (val, field) {
+ return trackerUrlTest.test(val);
+ },
+ trackerUrlText: 'Not a valid tracker url',
+});
+
+/**
+ * @class Deluge.AddTrackerWindow
+ * @extends Ext.Window
+ */
+Deluge.AddTrackerWindow = Ext.extend(Ext.Window, {
+ title: _('Add Tracker'),
+ layout: 'fit',
+ width: 375,
+ height: 150,
+ plain: true,
+ closable: true,
+ resizable: false,
+ constrainHeader: true,
+ bodyStyle: 'padding: 5px',
+ buttonAlign: 'right',
+ closeAction: 'hide',
+ iconCls: 'x-deluge-edit-trackers',
+
+ initComponent: function () {
+ Deluge.AddTrackerWindow.superclass.initComponent.call(this);
+
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+ this.addButton(_('Add'), this.onAddClick, this);
+ this.addEvents('add');
+
+ this.form = this.add({
+ xtype: 'form',
+ defaultType: 'textarea',
+ baseCls: 'x-plain',
+ labelWidth: 55,
+ items: [
+ {
+ fieldLabel: _('Trackers:'),
+ labelSeparator: '',
+ name: 'trackers',
+ anchor: '100%',
+ },
+ ],
+ });
+ },
+
+ onAddClick: function () {
+ var trackers = this.form.getForm().findField('trackers').getValue();
+ trackers = trackers.split('\n');
+
+ var cleaned = [];
+ Ext.each(
+ trackers,
+ function (tracker) {
+ if (Ext.form.VTypes.trackerUrl(tracker)) {
+ cleaned.push(tracker);
+ }
+ },
+ this
+ );
+ this.fireEvent('add', cleaned);
+ this.hide();
+ this.form.getForm().findField('trackers').setValue('');
+ },
+
+ onCancelClick: function () {
+ this.form.getForm().findField('trackers').setValue('');
+ this.hide();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/Client.js b/deluge/ui/web/js/deluge-all/Client.js
new file mode 100644
index 0000000..a06e863
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Client.js
@@ -0,0 +1,199 @@
+/**
+ * Deluge.Client.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Ext.ux.util');
+
+/**
+ * A class that connects to a json-rpc resource and adds the available
+ * methods as functions to the class instance.
+ * @class Ext.ux.util.RpcClient
+ * @namespace Ext.ux.util
+ */
+Ext.ux.util.RpcClient = Ext.extend(Ext.util.Observable, {
+ _components: [],
+
+ _methods: [],
+
+ _requests: {},
+
+ _url: null,
+
+ _optionKeys: ['scope', 'success', 'failure'],
+
+ /**
+ * @event connected
+ * Fires when the client has retrieved the list of methods from the server.
+ * @param {Ext.ux.util.RpcClient} this
+ */
+ constructor: function (config) {
+ Ext.ux.util.RpcClient.superclass.constructor.call(this, config);
+ this._url = config.url || null;
+ this._id = 0;
+
+ this.addEvents(
+ // raw events
+ 'connected',
+ 'error'
+ );
+ this.reloadMethods();
+ },
+
+ reloadMethods: function () {
+ this._execute('system.listMethods', {
+ success: this._setMethods,
+ scope: this,
+ });
+ },
+
+ _execute: function (method, options) {
+ options = options || {};
+ options.params = options.params || [];
+ options.id = this._id;
+
+ var request = Ext.encode({
+ method: method,
+ params: options.params,
+ id: options.id,
+ });
+ this._id++;
+
+ return Ext.Ajax.request({
+ url: this._url,
+ method: 'POST',
+ success: this._onSuccess,
+ failure: this._onFailure,
+ scope: this,
+ jsonData: request,
+ options: options,
+ });
+ },
+
+ _onFailure: function (response, requestOptions) {
+ var options = requestOptions.options;
+ errorObj = {
+ id: options.id,
+ result: null,
+ error: {
+ msg: 'HTTP: ' + response.status + ' ' + response.statusText,
+ code: 255,
+ },
+ };
+
+ this.fireEvent('error', errorObj, response, requestOptions);
+
+ if (Ext.type(options.failure) != 'function') return;
+ if (options.scope) {
+ options.failure.call(
+ options.scope,
+ errorObj,
+ response,
+ requestOptions
+ );
+ } else {
+ options.failure(errorObj, response, requestOptions);
+ }
+ },
+
+ _onSuccess: function (response, requestOptions) {
+ var responseObj = Ext.decode(response.responseText);
+ var options = requestOptions.options;
+ if (responseObj.error) {
+ this.fireEvent('error', responseObj, response, requestOptions);
+
+ if (Ext.type(options.failure) != 'function') return;
+ if (options.scope) {
+ options.failure.call(
+ options.scope,
+ responseObj,
+ response,
+ requestOptions
+ );
+ } else {
+ options.failure(responseObj, response, requestOptions);
+ }
+ } else {
+ if (Ext.type(options.success) != 'function') return;
+ if (options.scope) {
+ options.success.call(
+ options.scope,
+ responseObj.result,
+ responseObj,
+ response,
+ requestOptions
+ );
+ } else {
+ options.success(
+ responseObj.result,
+ responseObj,
+ response,
+ requestOptions
+ );
+ }
+ }
+ },
+
+ _parseArgs: function (args) {
+ var params = [];
+ Ext.each(args, function (arg) {
+ params.push(arg);
+ });
+
+ var options = params[params.length - 1];
+ if (Ext.type(options) == 'object') {
+ var keys = Ext.keys(options),
+ isOption = false;
+
+ Ext.each(this._optionKeys, function (key) {
+ if (keys.indexOf(key) > -1) isOption = true;
+ });
+
+ if (isOption) {
+ params.remove(options);
+ } else {
+ options = {};
+ }
+ } else {
+ options = {};
+ }
+ options.params = params;
+ return options;
+ },
+
+ _setMethods: function (methods) {
+ var components = {},
+ self = this;
+
+ Ext.each(methods, function (method) {
+ var parts = method.split('.');
+ var component = components[parts[0]] || {};
+
+ var fn = function () {
+ var options = self._parseArgs(arguments);
+ return self._execute(method, options);
+ };
+ component[parts[1]] = fn;
+ components[parts[0]] = component;
+ });
+
+ for (var name in components) {
+ self[name] = components[name];
+ }
+ Ext.each(
+ this._components,
+ function (component) {
+ if (!component in components) {
+ delete this[component];
+ }
+ },
+ this
+ );
+ this._components = Ext.keys(components);
+ this.fireEvent('connected', this);
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/ConnectionManager.js b/deluge/ui/web/js/deluge-all/ConnectionManager.js
new file mode 100644
index 0000000..2e61e22
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/ConnectionManager.js
@@ -0,0 +1,442 @@
+/**
+ * Deluge.ConnectionManager.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Deluge.ConnectionManager = Ext.extend(Ext.Window, {
+ layout: 'fit',
+ width: 300,
+ height: 220,
+ bodyStyle: 'padding: 10px 5px;',
+ buttonAlign: 'right',
+ closeAction: 'hide',
+ closable: true,
+ plain: true,
+ constrainHeader: true,
+ title: _('Connection Manager'),
+ iconCls: 'x-deluge-connect-window-icon',
+
+ initComponent: function () {
+ Deluge.ConnectionManager.superclass.initComponent.call(this);
+ this.on('hide', this.onHide, this);
+ this.on('show', this.onShow, this);
+
+ deluge.events.on('login', this.onLogin, this);
+ deluge.events.on('logout', this.onLogout, this);
+
+ this.addButton(_('Close'), this.onClose, this);
+ this.addButton(_('Connect'), this.onConnect, this);
+
+ this.list = new Ext.list.ListView({
+ store: new Ext.data.ArrayStore({
+ fields: [
+ { name: 'status', mapping: 4 },
+ { name: 'host', mapping: 1 },
+ { name: 'port', mapping: 2 },
+ { name: 'user', mapping: 3 },
+ { name: 'version', mapping: 5 },
+ ],
+ id: 0,
+ }),
+ columns: [
+ {
+ header: _('Status'),
+ width: 0.24,
+ sortable: true,
+ tpl: new Ext.XTemplate(
+ '<tpl if="status == \'Online\'">',
+ _('Online'),
+ '</tpl>',
+ '<tpl if="status == \'Offline\'">',
+ _('Offline'),
+ '</tpl>',
+ '<tpl if="status == \'Connected\'">',
+ _('Connected'),
+ '</tpl>'
+ ),
+ dataIndex: 'status',
+ },
+ {
+ id: 'host',
+ header: _('Host'),
+ width: 0.51,
+ sortable: true,
+ tpl: '{user}@{host}:{port}',
+ dataIndex: 'host',
+ },
+ {
+ header: _('Version'),
+ width: 0.25,
+ sortable: true,
+ tpl: '<tpl if="version">{version}</tpl>',
+ dataIndex: 'version',
+ },
+ ],
+ singleSelect: true,
+ listeners: {
+ selectionchange: { fn: this.onSelectionChanged, scope: this },
+ },
+ });
+
+ this.panel = this.add({
+ autoScroll: true,
+ items: [this.list],
+ bbar: new Ext.Toolbar({
+ buttons: [
+ {
+ id: 'cm-add',
+ cls: 'x-btn-text-icon',
+ text: _('Add'),
+ iconCls: 'icon-add',
+ handler: this.onAddClick,
+ scope: this,
+ },
+ {
+ id: 'cm-edit',
+ cls: 'x-btn-text-icon',
+ text: _('Edit'),
+ iconCls: 'icon-edit',
+ handler: this.onEditClick,
+ scope: this,
+ },
+ {
+ id: 'cm-remove',
+ cls: 'x-btn-text-icon',
+ text: _('Remove'),
+ iconCls: 'icon-remove',
+ handler: this.onRemoveClick,
+ disabled: true,
+ scope: this,
+ },
+ '->',
+ {
+ id: 'cm-stop',
+ cls: 'x-btn-text-icon',
+ text: _('Stop Daemon'),
+ iconCls: 'icon-error',
+ handler: this.onStopClick,
+ disabled: true,
+ scope: this,
+ },
+ ],
+ }),
+ });
+ this.update = this.update.createDelegate(this);
+ },
+
+ /**
+ * Check to see if the the web interface is currently connected
+ * to a Deluge Daemon and show the Connection Manager if not.
+ */
+ checkConnected: function () {
+ deluge.client.web.connected({
+ success: function (connected) {
+ if (connected) {
+ deluge.events.fire('connect');
+ } else {
+ this.show();
+ }
+ },
+ scope: this,
+ });
+ },
+
+ disconnect: function (show) {
+ deluge.events.fire('disconnect');
+ if (show) {
+ if (this.isVisible()) return;
+ this.show();
+ }
+ },
+
+ loadHosts: function () {
+ deluge.client.web.get_hosts({
+ success: this.onGetHosts,
+ scope: this,
+ });
+ },
+
+ update: function () {
+ this.updating = setTimeout(this.update, 2000);
+ this.list.getStore().each(function (r) {
+ deluge.client.web.get_host_status(r.id, {
+ success: this.onUpdate,
+ scope: this,
+ });
+ }, this);
+ },
+ onUpdate: function (host) {
+ if (!this.isVisible()) return;
+ this.onGetHostStatus(host);
+
+ if (this.updating) {
+ clearTimeout(this.updating);
+ }
+ this.updating = setTimeout(this.update, 2000);
+ },
+
+ /**
+ * Updates the buttons in the Connection Manager UI according to the
+ * passed in records host state.
+ * @param {Ext.data.Record} record The hosts record to update the UI for
+ */
+ updateButtons: function (record) {
+ var button = this.buttons[1],
+ status = record.get('status');
+
+ // Update the Connect/Disconnect button
+ button.enable();
+ if (status.toLowerCase() == 'connected') {
+ button.setText(_('Disconnect'));
+ } else {
+ button.setText(_('Connect'));
+ if (status.toLowerCase() != 'online') button.disable();
+ }
+
+ // Update the Stop/Start Daemon button
+ if (
+ status.toLowerCase() == 'connected' ||
+ status.toLowerCase() == 'online'
+ ) {
+ this.stopHostButton.enable();
+ this.stopHostButton.setText(_('Stop Daemon'));
+ } else {
+ if (
+ record.get('host') == '127.0.0.1' ||
+ record.get('host') == 'localhost'
+ ) {
+ this.stopHostButton.enable();
+ this.stopHostButton.setText(_('Start Daemon'));
+ } else {
+ this.stopHostButton.disable();
+ }
+ }
+ },
+
+ // private
+ onAddClick: function (button, e) {
+ if (!this.addWindow) {
+ this.addWindow = new Deluge.AddConnectionWindow();
+ this.addWindow.on('hostadded', this.onHostChange, this);
+ }
+ this.addWindow.show();
+ },
+
+ // private
+ onEditClick: function (button, e) {
+ var connection = this.list.getSelectedRecords()[0];
+ if (!connection) return;
+
+ if (!this.editWindow) {
+ this.editWindow = new Deluge.EditConnectionWindow();
+ this.editWindow.on('hostedited', this.onHostChange, this);
+ }
+ this.editWindow.show(connection);
+ },
+
+ // private
+ onHostChange: function () {
+ this.loadHosts();
+ },
+
+ // private
+ onClose: function (e) {
+ this.hide();
+ },
+
+ // private
+ onConnect: function (e) {
+ var selected = this.list.getSelectedRecords()[0];
+ if (!selected) return;
+
+ var me = this;
+ var disconnect = function () {
+ deluge.client.web.disconnect({
+ success: function (result) {
+ this.update(this);
+ deluge.events.fire('disconnect');
+ },
+ scope: me,
+ });
+ };
+
+ if (selected.get('status').toLowerCase() == 'connected') {
+ disconnect();
+ } else {
+ if (
+ this.list
+ .getStore()
+ .find('status', 'Connected', 0, false, false) > -1
+ ) {
+ disconnect();
+ }
+
+ var id = selected.id;
+ deluge.client.web.connect(id, {
+ success: function (methods) {
+ deluge.client.reloadMethods();
+ deluge.client.on(
+ 'connected',
+ function (e) {
+ deluge.events.fire('connect');
+ },
+ this,
+ { single: true }
+ );
+ },
+ });
+ this.hide();
+ }
+ },
+
+ // private
+ onGetHosts: function (hosts) {
+ this.list.getStore().loadData(hosts);
+ Ext.each(
+ hosts,
+ function (host) {
+ deluge.client.web.get_host_status(host[0], {
+ success: this.onGetHostStatus,
+ scope: this,
+ });
+ },
+ this
+ );
+ },
+
+ // private
+ onGetHostStatus: function (host) {
+ var record = this.list.getStore().getById(host[0]);
+ record.set('status', host[1]);
+ record.set('version', host[2]);
+ record.commit();
+ var selected = this.list.getSelectedRecords()[0];
+ if (!selected) return;
+ if (selected == record) this.updateButtons(record);
+ },
+
+ // private
+ onHide: function () {
+ if (this.updating) {
+ window.clearTimeout(this.updating);
+ this.updating = undefined;
+ }
+ },
+
+ // private
+ onLogin: function () {
+ if (deluge.config.first_login) {
+ Ext.MessageBox.confirm(
+ _('Change Default Password'),
+ _(
+ 'We recommend changing the default password.<br><br>Would you like to change it now?'
+ ),
+ function (res) {
+ this.checkConnected();
+ if (res == 'yes') {
+ deluge.preferences.show();
+ deluge.preferences.selectPage('Interface');
+ }
+ deluge.client.web.set_config({ first_login: false });
+ },
+ this
+ );
+ } else {
+ this.checkConnected();
+ }
+ },
+
+ // private
+ onLogout: function () {
+ this.disconnect();
+ if (!this.hidden && this.rendered) {
+ this.hide();
+ }
+ },
+
+ // private
+ onRemoveClick: function (button) {
+ var connection = this.list.getSelectedRecords()[0];
+ if (!connection) return;
+
+ deluge.client.web.remove_host(connection.id, {
+ success: function (result) {
+ if (!result) {
+ Ext.MessageBox.show({
+ title: _('Error'),
+ msg: result[1],
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ } else {
+ this.list.getStore().remove(connection);
+ }
+ },
+ scope: this,
+ });
+ },
+
+ // private
+ onSelectionChanged: function (list, selections) {
+ if (selections[0]) {
+ this.editHostButton.enable();
+ this.removeHostButton.enable();
+ this.stopHostButton.enable();
+ this.stopHostButton.setText(_('Stop Daemon'));
+ this.updateButtons(this.list.getRecord(selections[0]));
+ } else {
+ this.editHostButton.disable();
+ this.removeHostButton.disable();
+ this.stopHostButton.disable();
+ }
+ },
+
+ // FIXME: Find out why this is being fired twice
+ // private
+ onShow: function () {
+ if (!this.addHostButton) {
+ var bbar = this.panel.getBottomToolbar();
+ this.addHostButton = bbar.items.get('cm-add');
+ this.editHostButton = bbar.items.get('cm-edit');
+ this.removeHostButton = bbar.items.get('cm-remove');
+ this.stopHostButton = bbar.items.get('cm-stop');
+ }
+ this.loadHosts();
+ if (this.updating) return;
+ this.updating = window.setTimeout(this.update, 2000);
+ },
+
+ // private
+ onStopClick: function (button, e) {
+ var connection = this.list.getSelectedRecords()[0];
+ if (!connection) return;
+
+ if (connection.get('status') == 'Offline') {
+ // This means we need to start the daemon
+ deluge.client.web.start_daemon(connection.get('port'));
+ } else {
+ // This means we need to stop the daemon
+ deluge.client.web.stop_daemon(connection.id, {
+ success: function (result) {
+ if (!result[0]) {
+ Ext.MessageBox.show({
+ title: _('Error'),
+ msg: result[1],
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ }
+ },
+ });
+ }
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/CopyMagnetWindow.js b/deluge/ui/web/js/deluge-all/CopyMagnetWindow.js
new file mode 100644
index 0000000..ddcd4ab
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/CopyMagnetWindow.js
@@ -0,0 +1,73 @@
+/*
+ * Deluge.CopyMagnet.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ *
+ * In addition, as a special exception, the copyright holders give
+ * permission to link the code of portions of this program with the OpenSSL
+ * library.
+ * You must obey the GNU General Public License in all respects for all of
+ * the code used other than OpenSSL. If you modify file(s) with this
+ * exception, you may extend this exception to your version of the file(s),
+ * but you are not obligated to do so. If you do not wish to do so, delete
+ * this exception statement from your version. If you delete this exception
+ * statement from all source files in the program, then also delete it here.
+ */
+Deluge.CopyMagnet = Ext.extend(Ext.Window, {
+ title: _('Copy Magnet URI'),
+ width: 375,
+ closeAction: 'hide',
+ iconCls: 'icon-magnet-copy',
+
+ initComponent: function () {
+ Deluge.CopyMagnet.superclass.initComponent.call(this);
+ form = this.add({
+ xtype: 'form',
+ defaultType: 'textfield',
+ hideLabels: true,
+ });
+ this.magnetURI = form.add({
+ name: 'URI',
+ anchor: '100%',
+ });
+ this.addButton(_('Close'), this.onClose, this);
+ this.addButton(_('Copy'), this.onCopy, this);
+ },
+ show: function (a) {
+ Deluge.CopyMagnet.superclass.show.call(this);
+ var torrent = deluge.torrents.getSelected();
+ deluge.client.core.get_magnet_uri(torrent.id, {
+ success: this.onRequestComplete,
+ scope: this,
+ });
+ },
+ onRequestComplete: function (uri) {
+ this.magnetURI.setValue(uri);
+ },
+ onCopy: function () {
+ this.magnetURI.focus();
+ this.magnetURI.el.dom.select();
+ document.execCommand('copy');
+ },
+ onClose: function () {
+ this.hide();
+ },
+});
+
+deluge.copyMagnetWindow = new Deluge.CopyMagnet();
diff --git a/deluge/ui/web/js/deluge-all/Deluge.js b/deluge/ui/web/js/deluge-all/Deluge.js
new file mode 100644
index 0000000..260ad97
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Deluge.js
@@ -0,0 +1,179 @@
+/**
+ * Deluge.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+// Setup the state manager
+Ext.state.Manager.setProvider(
+ new Ext.state.CookieProvider({
+ /**
+ * By default, cookies will expire after 7 days. Provide
+ * an expiry date 10 years in the future to approximate
+ * a cookie that does not expire.
+ */
+ expires: new Date(
+ new Date().getTime() + 1000 * 60 * 60 * 24 * 365 * 10
+ ),
+ })
+);
+
+// Add some additional functions to ext and setup some of the
+// configurable parameters
+Ext.apply(Ext, {
+ isObjectEmpty: function (obj) {
+ for (var i in obj) {
+ return false;
+ }
+ return true;
+ },
+
+ areObjectsEqual: function (obj1, obj2) {
+ var equal = true;
+ if (!obj1 || !obj2) return false;
+ for (var i in obj1) {
+ if (obj1[i] != obj2[i]) {
+ equal = false;
+ }
+ }
+ return equal;
+ },
+
+ keys: function (obj) {
+ var keys = [];
+ for (var i in obj)
+ if (obj.hasOwnProperty(i)) {
+ keys.push(i);
+ }
+ return keys;
+ },
+
+ values: function (obj) {
+ var values = [];
+ for (var i in obj) {
+ if (obj.hasOwnProperty(i)) {
+ values.push(obj[i]);
+ }
+ }
+ return values;
+ },
+
+ splat: function (obj) {
+ var type = Ext.type(obj);
+ return type ? (type != 'array' ? [obj] : obj) : [];
+ },
+});
+Ext.getKeys = Ext.keys;
+Ext.BLANK_IMAGE_URL = deluge.config.base + 'images/s.gif';
+Ext.USE_NATIVE_JSON = true;
+
+// Create the Deluge namespace
+Ext.apply(Deluge, {
+ // private
+ pluginStore: {},
+
+ // private
+ progressTpl:
+ '<div class="x-progress-wrap x-progress-renderered">' +
+ '<div class="x-progress-inner">' +
+ '<div style="width: {2}px" class="x-progress-bar">' +
+ '<div style="z-index: 99; width: {3}px" class="x-progress-text">' +
+ '<div style="width: {1}px;">{0}</div>' +
+ '</div>' +
+ '</div>' +
+ '<div class="x-progress-text x-progress-text-back">' +
+ '<div style="width: {1}px;">{0}</div>' +
+ '</div>' +
+ '</div>' +
+ '</div>',
+
+ /**
+ * A method to create a progress bar that can be used by renderers
+ * to display a bar within a grid or tree.
+ * @param {Number} progress The bars progress
+ * @param {Number} width The width of the bar
+ * @param {String} text The text to display on the bar
+ * @param {Number} modified Amount to subtract from the width allowing for fixes
+ */
+ progressBar: function (progress, width, text, modifier) {
+ modifier = Ext.value(modifier, 10);
+ var progressWidth = ((width / 100.0) * progress).toFixed(0);
+ var barWidth = progressWidth - 1;
+ var textWidth =
+ progressWidth - modifier > 0 ? progressWidth - modifier : 0;
+ return String.format(
+ Deluge.progressTpl,
+ text,
+ width,
+ barWidth,
+ textWidth
+ );
+ },
+
+ /**
+ * Constructs a new instance of the specified plugin.
+ * @param {String} name The plugin name to create
+ */
+ createPlugin: function (name) {
+ return new Deluge.pluginStore[name]();
+ },
+
+ /**
+ * Check to see if a plugin has been registered.
+ * @param {String} name The plugin name to check
+ */
+ hasPlugin: function (name) {
+ return Deluge.pluginStore[name] ? true : false;
+ },
+
+ /**
+ * Register a plugin with the Deluge interface.
+ * @param {String} name The plugin name to register
+ * @param {Plugin} plugin The plugin to register
+ */
+ registerPlugin: function (name, plugin) {
+ Deluge.pluginStore[name] = plugin;
+ },
+});
+
+// Setup a space for plugins to insert themselves
+deluge.plugins = {};
+
+// Hinting for gettext_gen.py
+// _('Skip')
+// _('Low')
+// _('Normal')
+// _('High')
+// _('Mixed')
+FILE_PRIORITY = {
+ 0: 'Skip',
+ 1: 'Low',
+ 2: 'Low',
+ 3: 'Low',
+ 4: 'Normal',
+ 5: 'High',
+ 6: 'High',
+ 7: 'High',
+ 9: 'Mixed',
+ Skip: 0,
+ Low: 1,
+ Normal: 4,
+ High: 7,
+ Mixed: 9,
+};
+
+FILE_PRIORITY_CSS = {
+ 0: 'x-no-download',
+ 1: 'x-low-download',
+ 2: 'x-low-download',
+ 3: 'x-low-download',
+ 4: 'x-normal-download',
+ 5: 'x-high-download',
+ 6: 'x-high-download',
+ 7: 'x-high-download',
+ 9: 'x-mixed-download',
+};
diff --git a/deluge/ui/web/js/deluge-all/EditConnectionWindow.js b/deluge/ui/web/js/deluge-all/EditConnectionWindow.js
new file mode 100644
index 0000000..bfeb38f
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/EditConnectionWindow.js
@@ -0,0 +1,128 @@
+/**
+ * Deluge.EditConnectionWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+/**
+ * @class Deluge.EditConnectionWindow
+ * @extends Ext.Window
+ */
+Deluge.EditConnectionWindow = Ext.extend(Ext.Window, {
+ title: _('Edit Connection'),
+ iconCls: 'x-deluge-add-window-icon',
+
+ layout: 'fit',
+ width: 300,
+ height: 195,
+ constrainHeader: true,
+ bodyStyle: 'padding: 10px 5px;',
+ closeAction: 'hide',
+
+ initComponent: function () {
+ Deluge.EditConnectionWindow.superclass.initComponent.call(this);
+
+ this.addEvents('hostedited');
+
+ this.addButton(_('Close'), this.hide, this);
+ this.addButton(_('Edit'), this.onEditClick, this);
+
+ this.on('hide', this.onHide, this);
+
+ this.form = this.add({
+ xtype: 'form',
+ defaultType: 'textfield',
+ baseCls: 'x-plain',
+ labelWidth: 60,
+ items: [
+ {
+ fieldLabel: _('Host:'),
+ labelSeparator: '',
+ name: 'host',
+ anchor: '75%',
+ value: '',
+ },
+ {
+ xtype: 'spinnerfield',
+ fieldLabel: _('Port:'),
+ labelSeparator: '',
+ name: 'port',
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 0,
+ minValue: 0,
+ maxValue: 65535,
+ },
+ anchor: '40%',
+ value: 58846,
+ },
+ {
+ fieldLabel: _('Username:'),
+ labelSeparator: '',
+ name: 'username',
+ anchor: '75%',
+ value: '',
+ },
+ {
+ fieldLabel: _('Password:'),
+ labelSeparator: '',
+ anchor: '75%',
+ name: 'password',
+ inputType: 'password',
+ value: '',
+ },
+ ],
+ });
+ },
+
+ show: function (connection) {
+ Deluge.EditConnectionWindow.superclass.show.call(this);
+
+ this.form.getForm().findField('host').setValue(connection.get('host'));
+ this.form.getForm().findField('port').setValue(connection.get('port'));
+ this.form
+ .getForm()
+ .findField('username')
+ .setValue(connection.get('user'));
+ this.host_id = connection.id;
+ },
+
+ onEditClick: function () {
+ var values = this.form.getForm().getValues();
+ deluge.client.web.edit_host(
+ this.host_id,
+ values.host,
+ Number(values.port),
+ values.username,
+ values.password,
+ {
+ success: function (result) {
+ if (!result) {
+ console.log(result);
+ Ext.MessageBox.show({
+ title: _('Error'),
+ msg: String.format(_('Unable to edit host')),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ } else {
+ this.fireEvent('hostedited');
+ }
+ this.hide();
+ },
+ scope: this,
+ }
+ );
+ },
+
+ onHide: function () {
+ this.form.getForm().reset();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/EditTrackerWindow.js b/deluge/ui/web/js/deluge-all/EditTrackerWindow.js
new file mode 100644
index 0000000..646b8de
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/EditTrackerWindow.js
@@ -0,0 +1,74 @@
+/**
+ * Deluge.EditTrackerWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+/**
+ * @class Deluge.EditTrackerWindow
+ * @extends Ext.Window
+ */
+Deluge.EditTrackerWindow = Ext.extend(Ext.Window, {
+ title: _('Edit Tracker'),
+ layout: 'fit',
+ width: 375,
+ height: 110,
+ plain: true,
+ closable: true,
+ resizable: false,
+ constrainHeader: true,
+ bodyStyle: 'padding: 5px',
+ buttonAlign: 'right',
+ closeAction: 'hide',
+ iconCls: 'x-deluge-edit-trackers',
+
+ initComponent: function () {
+ Deluge.EditTrackerWindow.superclass.initComponent.call(this);
+
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+ this.addButton(_('Save'), this.onSaveClick, this);
+ this.on('hide', this.onHide, this);
+
+ this.form = this.add({
+ xtype: 'form',
+ defaultType: 'textfield',
+ baseCls: 'x-plain',
+ labelWidth: 55,
+ items: [
+ {
+ fieldLabel: _('Tracker:'),
+ labelSeparator: '',
+ name: 'tracker',
+ anchor: '100%',
+ },
+ ],
+ });
+ },
+
+ show: function (record) {
+ Deluge.EditTrackerWindow.superclass.show.call(this);
+
+ this.record = record;
+ this.form.getForm().findField('tracker').setValue(record.data['url']);
+ },
+
+ onCancelClick: function () {
+ this.hide();
+ },
+
+ onHide: function () {
+ this.form.getForm().findField('tracker').setValue('');
+ },
+
+ onSaveClick: function () {
+ var url = this.form.getForm().findField('tracker').getValue();
+ this.record.set('url', url);
+ this.record.commit();
+ this.hide();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/EditTrackersWindow.js b/deluge/ui/web/js/deluge-all/EditTrackersWindow.js
new file mode 100644
index 0000000..178fd58
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/EditTrackersWindow.js
@@ -0,0 +1,234 @@
+/**
+ * Deluge.EditTrackers.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+/**
+ * @class Deluge.EditTrackersWindow
+ * @extends Ext.Window
+ */
+Deluge.EditTrackersWindow = Ext.extend(Ext.Window, {
+ title: _('Edit Trackers'),
+ layout: 'fit',
+ width: 350,
+ height: 220,
+ plain: true,
+ closable: true,
+ resizable: true,
+ constrainHeader: true,
+
+ bodyStyle: 'padding: 5px',
+ buttonAlign: 'right',
+ closeAction: 'hide',
+ iconCls: 'x-deluge-edit-trackers',
+
+ initComponent: function () {
+ Deluge.EditTrackersWindow.superclass.initComponent.call(this);
+
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+ this.addButton(_('OK'), this.onOkClick, this);
+ this.addEvents('save');
+
+ this.on('show', this.onShow, this);
+ this.on('save', this.onSave, this);
+
+ this.addWindow = new Deluge.AddTrackerWindow();
+ this.addWindow.on('add', this.onAddTrackers, this);
+ this.editWindow = new Deluge.EditTrackerWindow();
+
+ this.list = new Ext.list.ListView({
+ store: new Ext.data.JsonStore({
+ root: 'trackers',
+ fields: ['tier', 'url'],
+ }),
+ columns: [
+ {
+ header: _('Tier'),
+ width: 0.1,
+ dataIndex: 'tier',
+ },
+ {
+ header: _('Tracker'),
+ width: 0.9,
+ dataIndex: 'url',
+ tpl: new Ext.XTemplate('{url:htmlEncode}'),
+ },
+ ],
+ columnSort: {
+ sortClasses: ['', ''],
+ },
+ stripeRows: true,
+ singleSelect: true,
+ listeners: {
+ dblclick: { fn: this.onListNodeDblClicked, scope: this },
+ selectionchange: { fn: this.onSelect, scope: this },
+ },
+ });
+
+ this.panel = this.add({
+ items: [this.list],
+ autoScroll: true,
+ bbar: new Ext.Toolbar({
+ items: [
+ {
+ text: _('Up'),
+ iconCls: 'icon-up',
+ handler: this.onUpClick,
+ scope: this,
+ },
+ {
+ text: _('Down'),
+ iconCls: 'icon-down',
+ handler: this.onDownClick,
+ scope: this,
+ },
+ '->',
+ {
+ text: _('Add'),
+ iconCls: 'icon-add',
+ handler: this.onAddClick,
+ scope: this,
+ },
+ {
+ text: _('Edit'),
+ iconCls: 'icon-edit-trackers',
+ handler: this.onEditClick,
+ scope: this,
+ },
+ {
+ text: _('Remove'),
+ iconCls: 'icon-remove',
+ handler: this.onRemoveClick,
+ scope: this,
+ },
+ ],
+ }),
+ });
+ },
+
+ onAddClick: function () {
+ this.addWindow.show();
+ },
+
+ onAddTrackers: function (trackers) {
+ var store = this.list.getStore();
+ Ext.each(
+ trackers,
+ function (tracker) {
+ var duplicate = false,
+ heightestTier = -1;
+ store.each(function (record) {
+ if (record.get('tier') > heightestTier) {
+ heightestTier = record.get('tier');
+ }
+ if (tracker == record.get('tracker')) {
+ duplicate = true;
+ return false;
+ }
+ }, this);
+ if (duplicate) return;
+ store.add(
+ new store.recordType({
+ tier: heightestTier + 1,
+ url: tracker,
+ })
+ );
+ },
+ this
+ );
+ },
+
+ onCancelClick: function () {
+ this.hide();
+ },
+
+ onEditClick: function () {
+ var selected = this.list.getSelectedRecords()[0];
+ if (!selected) return;
+ this.editWindow.show(selected);
+ },
+
+ onHide: function () {
+ this.list.getStore().removeAll();
+ },
+
+ onListNodeDblClicked: function (list, index, node, e) {
+ this.editWindow.show(this.list.getRecord(node));
+ },
+
+ onOkClick: function () {
+ var trackers = [];
+ this.list.getStore().each(function (record) {
+ trackers.push({
+ tier: record.get('tier'),
+ url: record.get('url'),
+ });
+ }, this);
+
+ deluge.client.core.set_torrent_trackers(this.torrentId, trackers, {
+ failure: this.onSaveFail,
+ scope: this,
+ });
+
+ this.hide();
+ },
+
+ onRemoveClick: function () {
+ // Remove from the grid
+ var selected = this.list.getSelectedRecords()[0];
+ if (!selected) return;
+ this.list.getStore().remove(selected);
+ },
+
+ onRequestComplete: function (status) {
+ this.list.getStore().loadData(status);
+ this.list.getStore().sort('tier', 'ASC');
+ },
+
+ onSaveFail: function () {},
+
+ onSelect: function (list) {
+ if (list.getSelectionCount()) {
+ this.panel.getBottomToolbar().items.get(4).enable();
+ }
+ },
+
+ onShow: function () {
+ this.panel.getBottomToolbar().items.get(4).disable();
+ var r = deluge.torrents.getSelected();
+ this.torrentId = r.id;
+ deluge.client.core.get_torrent_status(r.id, ['trackers'], {
+ success: this.onRequestComplete,
+ scope: this,
+ });
+ },
+
+ onDownClick: function () {
+ var r = this.list.getSelectedRecords()[0];
+ if (!r) return;
+
+ r.set('tier', r.get('tier') + 1);
+ r.store.sort('tier', 'ASC');
+ r.store.commitChanges();
+
+ this.list.select(r.store.indexOf(r));
+ },
+
+ onUpClick: function () {
+ var r = this.list.getSelectedRecords()[0];
+ if (!r) return;
+
+ if (r.get('tier') == 0) return;
+ r.set('tier', r.get('tier') - 1);
+ r.store.sort('tier', 'ASC');
+ r.store.commitChanges();
+
+ this.list.select(r.store.indexOf(r));
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/EventsManager.js b/deluge/ui/web/js/deluge-all/EventsManager.js
new file mode 100644
index 0000000..89d8980
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/EventsManager.js
@@ -0,0 +1,118 @@
+/**
+ * Deluge.EventsManager.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+/**
+ * @class Deluge.EventsManager
+ * @extends Ext.util.Observable
+ * <p>Deluge.EventsManager is instantated as <tt>deluge.events</tt> and can be used by components of the UI to fire global events</p>
+ * Class for holding global events that occur within the UI.
+ */
+Deluge.EventsManager = Ext.extend(Ext.util.Observable, {
+ constructor: function () {
+ this.toRegister = [];
+ this.on('login', this.onLogin, this);
+ Deluge.EventsManager.superclass.constructor.call(this);
+ },
+
+ /**
+ * Append an event handler to this object.
+ */
+ addListener: function (eventName, fn, scope, o) {
+ this.addEvents(eventName);
+ if (/[A-Z]/.test(eventName.substring(0, 1))) {
+ if (!deluge.client) {
+ this.toRegister.push(eventName);
+ } else {
+ deluge.client.web.register_event_listener(eventName);
+ }
+ }
+ Deluge.EventsManager.superclass.addListener.call(
+ this,
+ eventName,
+ fn,
+ scope,
+ o
+ );
+ },
+
+ getEvents: function () {
+ deluge.client.web.get_events({
+ success: this.onGetEventsSuccess,
+ failure: this.onGetEventsFailure,
+ scope: this,
+ });
+ },
+
+ /**
+ * Starts the EventsManagerManager checking for events.
+ */
+ start: function () {
+ Ext.each(this.toRegister, function (eventName) {
+ deluge.client.web.register_event_listener(eventName);
+ });
+ this.running = true;
+ this.errorCount = 0;
+ this.getEvents();
+ },
+
+ /**
+ * Stops the EventsManagerManager checking for events.
+ */
+ stop: function () {
+ this.running = false;
+ },
+
+ // private
+ onLogin: function () {
+ this.start();
+ },
+
+ onGetEventsSuccess: function (events) {
+ if (!this.running) return;
+ if (events) {
+ Ext.each(
+ events,
+ function (event) {
+ var name = event[0],
+ args = event[1];
+ args.splice(0, 0, name);
+ this.fireEvent.apply(this, args);
+ },
+ this
+ );
+ }
+ this.getEvents();
+ },
+
+ // private
+ onGetEventsFailure: function (result, error) {
+ // the request timed out or we had a communication failure
+ if (!this.running) return;
+ if (!error.isTimeout && this.errorCount++ >= 3) {
+ this.stop();
+ return;
+ }
+ this.getEvents();
+ },
+});
+
+/**
+ * Appends an event handler to this object (shorthand for {@link #addListener})
+ * @method
+ */
+Deluge.EventsManager.prototype.on = Deluge.EventsManager.prototype.addListener;
+
+/**
+ * Fires the specified event with the passed parameters (minus the
+ * event name).
+ * @method
+ */
+Deluge.EventsManager.prototype.fire = Deluge.EventsManager.prototype.fireEvent;
+deluge.events = new Deluge.EventsManager();
diff --git a/deluge/ui/web/js/deluge-all/FileBrowser.js b/deluge/ui/web/js/deluge-all/FileBrowser.js
new file mode 100644
index 0000000..2afe1b1
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/FileBrowser.js
@@ -0,0 +1,43 @@
+/**
+ * Deluge.FileBrowser.js
+ *
+ * Copyright (c) Damien Churchill 2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.namespace('Deluge');
+Deluge.FileBrowser = Ext.extend(Ext.Window, {
+ title: _('File Browser'),
+
+ width: 500,
+ height: 400,
+
+ initComponent: function () {
+ Deluge.FileBrowser.superclass.initComponent.call(this);
+
+ this.add({
+ xtype: 'toolbar',
+ items: [
+ {
+ text: _('Back'),
+ iconCls: 'icon-back',
+ },
+ {
+ text: _('Forward'),
+ iconCls: 'icon-forward',
+ },
+ {
+ text: _('Up'),
+ iconCls: 'icon-up',
+ },
+ {
+ text: _('Home'),
+ iconCls: 'icon-home',
+ },
+ ],
+ });
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/FilterPanel.js b/deluge/ui/web/js/deluge-all/FilterPanel.js
new file mode 100644
index 0000000..f1fade1
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/FilterPanel.js
@@ -0,0 +1,175 @@
+/**
+ * Deluge.FilterPanel.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+/**
+ * @class Deluge.FilterPanel
+ * @extends Ext.list.ListView
+ */
+Deluge.FilterPanel = Ext.extend(Ext.Panel, {
+ autoScroll: true,
+
+ border: false,
+
+ show_zero: null,
+
+ initComponent: function () {
+ Deluge.FilterPanel.superclass.initComponent.call(this);
+ this.filterType = this.initialConfig.filter;
+ var title = '';
+ if (this.filterType == 'state') {
+ title = _('States');
+ } else if (this.filterType == 'tracker_host') {
+ title = _('Trackers');
+ } else if (this.filterType == 'owner') {
+ title = _('Owner');
+ } else if (this.filterType == 'label') {
+ title = _('Labels');
+ } else {
+ (title = this.filterType.replace('_', ' ')),
+ (parts = title.split(' ')),
+ (title = '');
+ Ext.each(parts, function (p) {
+ fl = p.substring(0, 1).toUpperCase();
+ title += fl + p.substring(1) + ' ';
+ });
+ }
+ this.setTitle(_(title));
+
+ if (Deluge.FilterPanel.templates[this.filterType]) {
+ var tpl = Deluge.FilterPanel.templates[this.filterType];
+ } else {
+ var tpl =
+ '<div class="x-deluge-filter x-deluge-{filter:lowercase}">{filter} ({count})</div>';
+ }
+
+ this.list = this.add({
+ xtype: 'listview',
+ singleSelect: true,
+ hideHeaders: true,
+ reserveScrollOffset: true,
+ store: new Ext.data.ArrayStore({
+ idIndex: 0,
+ fields: ['filter', 'count'],
+ }),
+ columns: [
+ {
+ id: 'filter',
+ sortable: false,
+ tpl: tpl,
+ dataIndex: 'filter',
+ },
+ ],
+ });
+ this.relayEvents(this.list, ['selectionchange']);
+ },
+
+ /**
+ * Return the currently selected filter state
+ * @returns {String} the current filter state
+ */
+ getState: function () {
+ if (!this.list.getSelectionCount()) return;
+
+ var state = this.list.getSelectedRecords()[0];
+ if (!state) return;
+ if (state.id == 'All') return;
+ return state.id;
+ },
+
+ /**
+ * Return the current states in the filter
+ */
+ getStates: function () {
+ return this.states;
+ },
+
+ /**
+ * Return the Store for the ListView of the FilterPanel
+ * @returns {Ext.data.Store} the ListView store
+ */
+ getStore: function () {
+ return this.list.getStore();
+ },
+
+ /**
+ * Update the states in the FilterPanel
+ */
+ updateStates: function (states) {
+ this.states = {};
+ Ext.each(
+ states,
+ function (state) {
+ this.states[state[0]] = state[1];
+ },
+ this
+ );
+
+ var show_zero =
+ this.show_zero == null
+ ? deluge.config.sidebar_show_zero
+ : this.show_zero;
+ if (!show_zero) {
+ var newStates = [];
+ Ext.each(states, function (state) {
+ if (state[1] > 0 || state[0] == 'All') {
+ newStates.push(state);
+ }
+ });
+ states = newStates;
+ }
+
+ var store = this.getStore();
+ var filters = {};
+ Ext.each(
+ states,
+ function (s, i) {
+ var record = store.getById(s[0]);
+ if (!record) {
+ record = new store.recordType({
+ filter: s[0],
+ count: s[1],
+ });
+ record.id = s[0];
+ store.insert(i, record);
+ }
+ record.beginEdit();
+ record.set('filter', _(s[0]));
+ record.set('count', s[1]);
+ record.endEdit();
+ filters[s[0]] = true;
+ },
+ this
+ );
+
+ store.each(function (record) {
+ if (filters[record.id]) return;
+ store.remove(record);
+ var selected = this.list.getSelectedRecords()[0];
+ if (!selected) return;
+ if (selected.id == record.id) {
+ this.list.select(0);
+ }
+ }, this);
+
+ store.commitChanges();
+
+ if (!this.list.getSelectionCount()) {
+ this.list.select(0);
+ }
+ },
+});
+
+Deluge.FilterPanel.templates = {
+ tracker_host:
+ '<div class="x-deluge-filter" style="background-image: url(' +
+ deluge.config.base +
+ 'tracker/{filter});">{filter:htmlEncode} ({count})</div>',
+};
diff --git a/deluge/ui/web/js/deluge-all/Formatters.js b/deluge/ui/web/js/deluge-all/Formatters.js
new file mode 100644
index 0000000..6b09abe
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Formatters.js
@@ -0,0 +1,206 @@
+/**
+ * Deluge.Formatters.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+/**
+ * A collection of functions for string formatting values.
+ * @class Deluge.Formatters
+ * @author Damien Churchill <damoxc@gmail.com>
+ * @version 1.3
+ * @singleton
+ */
+Deluge.Formatters = (function () {
+ var charToEntity = {
+ '&': '&amp;',
+ '>': '&gt;',
+ '<': '&lt;',
+ '"': '&quot;',
+ "'": '&#39;',
+ };
+
+ var charToEntityRegex = new RegExp(
+ '(' + Object.keys(charToEntity).join('|') + ')',
+ 'g'
+ );
+ var htmlEncodeReplaceFn = function (match, capture) {
+ return charToEntity[capture];
+ };
+
+ /**
+ * Formats a date string in the date representation of the current locale,
+ * based on the systems timezone.
+ *
+ * @param {Number} timestamp time in seconds since the Epoch.
+ * @return {String} a string in the date representation of the current locale
+ * or "" if seconds < 0.
+ */
+ return (Formatters = {
+ date: function (timestamp) {
+ function zeroPad(num, count) {
+ var numZeropad = num + '';
+ while (numZeropad.length < count) {
+ numZeropad = '0' + numZeropad;
+ }
+ return numZeropad;
+ }
+ timestamp = timestamp * 1000;
+ var date = new Date(timestamp);
+ return String.format(
+ '{0}/{1}/{2} {3}:{4}:{5}',
+ zeroPad(date.getDate(), 2),
+ zeroPad(date.getMonth() + 1, 2),
+ date.getFullYear(),
+ zeroPad(date.getHours(), 2),
+ zeroPad(date.getMinutes(), 2),
+ zeroPad(date.getSeconds(), 2)
+ );
+ },
+
+ /**
+ * Formats the bytes value into a string with KiB, MiB or GiB units.
+ *
+ * @param {Number} bytes the filesize in bytes
+ * @param {Boolean} showZero pass in true to displays 0 values
+ * @return {String} formatted string with KiB, MiB or GiB units.
+ */
+ size: function (bytes, showZero) {
+ if (!bytes && !showZero) return '';
+ bytes = bytes / 1024.0;
+
+ if (bytes < 1024) {
+ return bytes.toFixed(1) + ' KiB';
+ } else {
+ bytes = bytes / 1024;
+ }
+
+ if (bytes < 1024) {
+ return bytes.toFixed(1) + ' MiB';
+ } else {
+ bytes = bytes / 1024;
+ }
+
+ return bytes.toFixed(1) + ' GiB';
+ },
+
+ /**
+ * Formats the bytes value into a string with K, M or G units.
+ *
+ * @param {Number} bytes the filesize in bytes
+ * @param {Boolean} showZero pass in true to displays 0 values
+ * @return {String} formatted string with K, M or G units.
+ */
+ sizeShort: function (bytes, showZero) {
+ if (!bytes && !showZero) return '';
+ bytes = bytes / 1024.0;
+
+ if (bytes < 1024) {
+ return bytes.toFixed(1) + ' K';
+ } else {
+ bytes = bytes / 1024;
+ }
+
+ if (bytes < 1024) {
+ return bytes.toFixed(1) + ' M';
+ } else {
+ bytes = bytes / 1024;
+ }
+
+ return bytes.toFixed(1) + ' G';
+ },
+
+ /**
+ * Formats a string to display a transfer speed utilizing {@link #size}
+ *
+ * @param {Number} bytes the number of bytes per second
+ * @param {Boolean} showZero pass in true to displays 0 values
+ * @return {String} formatted string with KiB, MiB or GiB units.
+ */
+ speed: function (bytes, showZero) {
+ return !bytes && !showZero ? '' : fsize(bytes, showZero) + '/s';
+ },
+
+ /**
+ * Formats a string to show time in a human readable form.
+ *
+ * @param {Number} time the number of seconds
+ * @return {String} a formatted time string. will return '' if seconds == 0
+ */
+ timeRemaining: function (time) {
+ if (time <= 0) {
+ return '&infin;';
+ }
+ time = time.toFixed(0);
+ if (time < 60) {
+ return time + 's';
+ } else {
+ time = time / 60;
+ }
+
+ if (time < 60) {
+ var minutes = Math.floor(time);
+ var seconds = Math.round(60 * (time - minutes));
+ if (seconds > 0) {
+ return minutes + 'm ' + seconds + 's';
+ } else {
+ return minutes + 'm';
+ }
+ } else {
+ time = time / 60;
+ }
+
+ if (time < 24) {
+ var hours = Math.floor(time);
+ var minutes = Math.round(60 * (time - hours));
+ if (minutes > 0) {
+ return hours + 'h ' + minutes + 'm';
+ } else {
+ return hours + 'h';
+ }
+ } else {
+ time = time / 24;
+ }
+
+ var days = Math.floor(time);
+ var hours = Math.round(24 * (time - days));
+ if (hours > 0) {
+ return days + 'd ' + hours + 'h';
+ } else {
+ return days + 'd';
+ }
+ },
+
+ /**
+ * Simply returns the value untouched, for when no formatting is required.
+ *
+ * @param {Mixed} value the value to be displayed
+ * @return the untouched value.
+ */
+ plain: function (value) {
+ return value;
+ },
+
+ cssClassEscape: function (value) {
+ return value.toLowerCase().replace('.', '_');
+ },
+
+ htmlEncode: function (value) {
+ return !value
+ ? value
+ : String(value).replace(charToEntityRegex, htmlEncodeReplaceFn);
+ },
+ });
+})();
+var fsize = Deluge.Formatters.size;
+var fsize_short = Deluge.Formatters.sizeShort;
+var fspeed = Deluge.Formatters.speed;
+var ftime = Deluge.Formatters.timeRemaining;
+var fdate = Deluge.Formatters.date;
+var fplain = Deluge.Formatters.plain;
+Ext.util.Format.cssClassEscape = Deluge.Formatters.cssClassEscape;
+Ext.util.Format.htmlEncode = Deluge.Formatters.htmlEncode;
diff --git a/deluge/ui/web/js/deluge-all/Keys.js b/deluge/ui/web/js/deluge-all/Keys.js
new file mode 100644
index 0000000..7b3e3af
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Keys.js
@@ -0,0 +1,138 @@
+/**
+ * Deluge.Keys.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+/**
+ * @description The torrent status keys that are commonly used around the UI.
+ * @class Deluge.Keys
+ * @singleton
+ */
+Deluge.Keys = {
+ /**
+ * Keys that are used within the torrent grid.
+ * <pre>['queue', 'name', 'total_wanted', 'state', 'progress', 'num_seeds',
+ * 'total_seeds', 'num_peers', 'total_peers', 'download_payload_rate',
+ * 'upload_payload_rate', 'eta', 'ratio', 'distributed_copies',
+ * 'is_auto_managed', 'time_added', 'tracker_host', 'download_location', 'last_seen_complete',
+ * 'total_done', 'total_uploaded', 'max_download_speed', 'max_upload_speed',
+ * 'seeds_peers_ratio', 'total_remaining', 'completed_time', 'time_since_transfer']</pre>
+ */
+ Grid: [
+ 'queue',
+ 'name',
+ 'total_wanted',
+ 'state',
+ 'progress',
+ 'num_seeds',
+ 'total_seeds',
+ 'num_peers',
+ 'total_peers',
+ 'download_payload_rate',
+ 'upload_payload_rate',
+ 'eta',
+ 'ratio',
+ 'distributed_copies',
+ 'is_auto_managed',
+ 'time_added',
+ 'tracker_host',
+ 'download_location',
+ 'last_seen_complete',
+ 'total_done',
+ 'total_uploaded',
+ 'max_download_speed',
+ 'max_upload_speed',
+ 'seeds_peers_ratio',
+ 'total_remaining',
+ 'completed_time',
+ 'time_since_transfer',
+ ],
+
+ /**
+ * Keys used in the status tab of the statistics panel.
+ * These get updated to include the keys in {@link #Grid}.
+ * <pre>['total_done', 'total_payload_download', 'total_uploaded',
+ * 'total_payload_upload', 'next_announce', 'tracker_status', 'num_pieces',
+ * 'piece_length', 'is_auto_managed', 'active_time', 'seeding_time', 'time_since_transfer',
+ * 'seed_rank', 'last_seen_complete', 'completed_time', 'owner', 'public', 'shared']</pre>
+ */
+ Status: [
+ 'total_done',
+ 'total_payload_download',
+ 'total_uploaded',
+ 'total_payload_upload',
+ 'next_announce',
+ 'tracker_status',
+ 'num_pieces',
+ 'piece_length',
+ 'is_auto_managed',
+ 'active_time',
+ 'seeding_time',
+ 'time_since_transfer',
+ 'seed_rank',
+ 'last_seen_complete',
+ 'completed_time',
+ 'owner',
+ 'public',
+ 'shared',
+ ],
+
+ /**
+ * Keys used in the files tab of the statistics panel.
+ * <pre>['files', 'file_progress', 'file_priorities']</pre>
+ */
+ Files: ['files', 'file_progress', 'file_priorities'],
+
+ /**
+ * Keys used in the peers tab of the statistics panel.
+ * <pre>['peers']</pre>
+ */
+ Peers: ['peers'],
+
+ /**
+ * Keys used in the details tab of the statistics panel.
+ */
+ Details: [
+ 'name',
+ 'download_location',
+ 'total_size',
+ 'num_files',
+ 'message',
+ 'tracker_host',
+ 'comment',
+ 'creator',
+ ],
+
+ /**
+ * Keys used in the options tab of the statistics panel.
+ * <pre>['max_download_speed', 'max_upload_speed', 'max_connections', 'max_upload_slots',
+ * 'is_auto_managed', 'stop_at_ratio', 'stop_ratio', 'remove_at_ratio', 'private',
+ * 'prioritize_first_last']</pre>
+ */
+ Options: [
+ 'max_download_speed',
+ 'max_upload_speed',
+ 'max_connections',
+ 'max_upload_slots',
+ 'is_auto_managed',
+ 'stop_at_ratio',
+ 'stop_ratio',
+ 'remove_at_ratio',
+ 'private',
+ 'prioritize_first_last',
+ 'move_completed',
+ 'move_completed_path',
+ 'super_seeding',
+ ],
+};
+
+// Merge the grid and status keys together as the status keys contain all the
+// grid ones.
+Ext.each(Deluge.Keys.Grid, function (key) {
+ Deluge.Keys.Status.push(key);
+});
diff --git a/deluge/ui/web/js/deluge-all/LoginWindow.js b/deluge/ui/web/js/deluge-all/LoginWindow.js
new file mode 100644
index 0000000..a055a69
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/LoginWindow.js
@@ -0,0 +1,134 @@
+/**
+ * Deluge.LoginWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Deluge.LoginWindow = Ext.extend(Ext.Window, {
+ firstShow: true,
+ bodyStyle: 'padding: 10px 5px;',
+ buttonAlign: 'center',
+ closable: false,
+ closeAction: 'hide',
+ iconCls: 'x-deluge-login-window-icon',
+ layout: 'fit',
+ modal: true,
+ plain: true,
+ resizable: false,
+ title: _('Login'),
+ width: 300,
+ height: 120,
+
+ initComponent: function () {
+ Deluge.LoginWindow.superclass.initComponent.call(this);
+ this.on('show', this.onShow, this);
+
+ this.addButton({
+ text: _('Login'),
+ handler: this.onLogin,
+ scope: this,
+ });
+
+ this.form = this.add({
+ xtype: 'form',
+ baseCls: 'x-plain',
+ labelWidth: 120,
+ labelAlign: 'right',
+ defaults: { width: 110 },
+ defaultType: 'textfield',
+ });
+
+ this.passwordField = this.form.add({
+ xtype: 'textfield',
+ fieldLabel: _('Password:'),
+ labelSeparator: '',
+ grow: true,
+ growMin: '110',
+ growMax: '145',
+ id: '_password',
+ name: 'password',
+ inputType: 'password',
+ });
+ this.passwordField.on('specialkey', this.onSpecialKey, this);
+ },
+
+ logout: function () {
+ deluge.events.fire('logout');
+ deluge.client.auth.delete_session({
+ success: function (result) {
+ this.show(true);
+ },
+ scope: this,
+ });
+ },
+
+ show: function (skipCheck) {
+ if (this.firstShow) {
+ deluge.client.on('error', this.onClientError, this);
+ this.firstShow = false;
+ }
+
+ if (skipCheck) {
+ return Deluge.LoginWindow.superclass.show.call(this);
+ }
+
+ deluge.client.auth.check_session({
+ success: function (result) {
+ if (result) {
+ deluge.events.fire('login');
+ } else {
+ this.show(true);
+ }
+ },
+ failure: function (result) {
+ this.show(true);
+ },
+ scope: this,
+ });
+ },
+
+ onSpecialKey: function (field, e) {
+ if (e.getKey() == 13) this.onLogin();
+ },
+
+ onLogin: function () {
+ var passwordField = this.passwordField;
+ deluge.client.auth.login(passwordField.getValue(), {
+ success: function (result) {
+ if (result) {
+ deluge.events.fire('login');
+ this.hide();
+ passwordField.setRawValue('');
+ } else {
+ Ext.MessageBox.show({
+ title: _('Login Failed'),
+ msg: _('You entered an incorrect password'),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ fn: function () {
+ passwordField.focus(true, 10);
+ },
+ icon: Ext.MessageBox.WARNING,
+ iconCls: 'x-deluge-icon-warning',
+ });
+ }
+ },
+ scope: this,
+ });
+ },
+
+ onClientError: function (errorObj, response, requestOptions) {
+ if (errorObj.error.code == 1) {
+ deluge.events.fire('logout');
+ this.show(true);
+ }
+ },
+
+ onShow: function () {
+ this.passwordField.focus(true, 300);
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/Menus.js b/deluge/ui/web/js/deluge-all/Menus.js
new file mode 100644
index 0000000..34550a6
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Menus.js
@@ -0,0 +1,398 @@
+/**
+ * Deluge.Menus.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+deluge.menus = {
+ onTorrentActionSetOpt: function (item, e) {
+ var ids = deluge.torrents.getSelectedIds();
+ var action = item.initialConfig.torrentAction;
+ var opts = {};
+ opts[action[0]] = action[1];
+ deluge.client.core.set_torrent_options(ids, opts);
+ },
+
+ onTorrentActionMethod: function (item, e) {
+ var ids = deluge.torrents.getSelectedIds();
+ var action = item.initialConfig.torrentAction;
+ deluge.client.core[action](ids, {
+ success: function () {
+ deluge.ui.update();
+ },
+ });
+ },
+
+ onTorrentActionShow: function (item, e) {
+ var ids = deluge.torrents.getSelectedIds();
+ var action = item.initialConfig.torrentAction;
+ switch (action) {
+ case 'copy_magnet':
+ deluge.copyMagnetWindow.show();
+ break;
+ case 'edit_trackers':
+ deluge.editTrackers.show();
+ break;
+ case 'remove':
+ deluge.removeWindow.show(ids);
+ break;
+ case 'move':
+ deluge.moveStorage.show(ids);
+ break;
+ }
+ },
+};
+
+deluge.menus.torrent = new Ext.menu.Menu({
+ id: 'torrentMenu',
+ items: [
+ {
+ torrentAction: 'pause_torrent',
+ text: _('Pause'),
+ iconCls: 'icon-pause',
+ handler: deluge.menus.onTorrentActionMethod,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: 'resume_torrent',
+ text: _('Resume'),
+ iconCls: 'icon-resume',
+ handler: deluge.menus.onTorrentActionMethod,
+ scope: deluge.menus,
+ },
+ '-',
+ {
+ text: _('Options'),
+ iconCls: 'icon-options',
+ hideOnClick: false,
+ menu: new Ext.menu.Menu({
+ items: [
+ {
+ text: _('D/L Speed Limit'),
+ iconCls: 'x-deluge-downloading',
+ hideOnClick: false,
+ menu: new Ext.menu.Menu({
+ items: [
+ {
+ torrentAction: ['max_download_speed', 5],
+ text: _('5 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_download_speed', 10],
+ text: _('10 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_download_speed', 30],
+ text: _('30 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_download_speed', 80],
+ text: _('80 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_download_speed', 300],
+ text: _('300 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_download_speed', -1],
+ text: _('Unlimited'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ ],
+ }),
+ },
+ {
+ text: _('U/L Speed Limit'),
+ iconCls: 'x-deluge-seeding',
+ hideOnClick: false,
+ menu: new Ext.menu.Menu({
+ items: [
+ {
+ torrentAction: ['max_upload_speed', 5],
+ text: _('5 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_speed', 10],
+ text: _('10 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_speed', 30],
+ text: _('30 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_speed', 80],
+ text: _('80 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_speed', 300],
+ text: _('300 KiB/s'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_speed', -1],
+ text: _('Unlimited'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ ],
+ }),
+ },
+ {
+ text: _('Connection Limit'),
+ iconCls: 'x-deluge-connections',
+ hideOnClick: false,
+ menu: new Ext.menu.Menu({
+ items: [
+ {
+ torrentAction: ['max_connections', 50],
+ text: '50',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_connections', 100],
+ text: '100',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_connections', 200],
+ text: '200',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_connections', 300],
+ text: '300',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_connections', 500],
+ text: '500',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_connections', -1],
+ text: _('Unlimited'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ ],
+ }),
+ },
+ {
+ text: _('Upload Slot Limit'),
+ iconCls: 'icon-upload-slots',
+ hideOnClick: false,
+ menu: new Ext.menu.Menu({
+ items: [
+ {
+ torrentAction: ['max_upload_slots', 0],
+ text: '0',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_slots', 1],
+ text: '1',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_slots', 2],
+ text: '2',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_slots', 3],
+ text: '3',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_slots', 5],
+ text: '5',
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['max_upload_slots', -1],
+ text: _('Unlimited'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ ],
+ }),
+ },
+ {
+ id: 'auto_managed',
+ text: _('Auto Managed'),
+ hideOnClick: false,
+ menu: new Ext.menu.Menu({
+ items: [
+ {
+ torrentAction: ['auto_managed', true],
+ text: _('On'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: ['auto_managed', false],
+ text: _('Off'),
+ handler: deluge.menus.onTorrentActionSetOpt,
+ scope: deluge.menus,
+ },
+ ],
+ }),
+ },
+ ],
+ }),
+ },
+ '-',
+ {
+ text: _('Queue'),
+ iconCls: 'icon-queue',
+ hideOnClick: false,
+ menu: new Ext.menu.Menu({
+ items: [
+ {
+ torrentAction: 'queue_top',
+ text: _('Top'),
+ iconCls: 'icon-top',
+ handler: deluge.menus.onTorrentActionMethod,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: 'queue_up',
+ text: _('Up'),
+ iconCls: 'icon-up',
+ handler: deluge.menus.onTorrentActionMethod,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: 'queue_down',
+ text: _('Down'),
+ iconCls: 'icon-down',
+ handler: deluge.menus.onTorrentActionMethod,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: 'queue_bottom',
+ text: _('Bottom'),
+ iconCls: 'icon-bottom',
+ handler: deluge.menus.onTorrentActionMethod,
+ scope: deluge.menus,
+ },
+ ],
+ }),
+ },
+ '-',
+ {
+ torrentAction: 'copy_magnet',
+ text: _('Copy Magnet URI'),
+ iconCls: 'icon-magnet-copy',
+ handler: deluge.menus.onTorrentActionShow,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: 'force_reannounce',
+ text: _('Update Tracker'),
+ iconCls: 'icon-update-tracker',
+ handler: deluge.menus.onTorrentActionMethod,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: 'edit_trackers',
+ text: _('Edit Trackers'),
+ iconCls: 'icon-edit-trackers',
+ handler: deluge.menus.onTorrentActionShow,
+ scope: deluge.menus,
+ },
+ '-',
+ {
+ torrentAction: 'remove',
+ text: _('Remove Torrent'),
+ iconCls: 'icon-remove',
+ handler: deluge.menus.onTorrentActionShow,
+ scope: deluge.menus,
+ },
+ '-',
+ {
+ torrentAction: 'force_recheck',
+ text: _('Force Recheck'),
+ iconCls: 'icon-recheck',
+ handler: deluge.menus.onTorrentActionMethod,
+ scope: deluge.menus,
+ },
+ {
+ torrentAction: 'move',
+ text: _('Move Download Folder'),
+ iconCls: 'icon-move',
+ handler: deluge.menus.onTorrentActionShow,
+ scope: deluge.menus,
+ },
+ ],
+});
+
+deluge.menus.filePriorities = new Ext.menu.Menu({
+ id: 'filePrioritiesMenu',
+ items: [
+ {
+ id: 'expandAll',
+ text: _('Expand All'),
+ iconCls: 'icon-expand-all',
+ },
+ '-',
+ {
+ id: 'skip',
+ text: _('Skip'),
+ iconCls: 'icon-do-not-download',
+ filePriority: FILE_PRIORITY['Skip'],
+ },
+ {
+ id: 'low',
+ text: _('Low'),
+ iconCls: 'icon-low',
+ filePriority: FILE_PRIORITY['Low'],
+ },
+ {
+ id: 'normal',
+ text: _('Normal'),
+ iconCls: 'icon-normal',
+ filePriority: FILE_PRIORITY['Normal'],
+ },
+ {
+ id: 'high',
+ text: _('High'),
+ iconCls: 'icon-high',
+ filePriority: FILE_PRIORITY['High'],
+ },
+ ],
+});
diff --git a/deluge/ui/web/js/deluge-all/MoveStorage.js b/deluge/ui/web/js/deluge-all/MoveStorage.js
new file mode 100644
index 0000000..9ba638a
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/MoveStorage.js
@@ -0,0 +1,85 @@
+/**
+ * Deluge.MoveStorage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.namespace('Deluge');
+Deluge.MoveStorage = Ext.extend(Ext.Window, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ title: _('Move Download Folder'),
+ width: 375,
+ height: 110,
+ layout: 'fit',
+ buttonAlign: 'right',
+ closeAction: 'hide',
+ closable: true,
+ iconCls: 'x-deluge-move-storage',
+ plain: true,
+ constrainHeader: true,
+ resizable: false,
+ },
+ config
+ );
+ Deluge.MoveStorage.superclass.constructor.call(this, config);
+ },
+
+ initComponent: function () {
+ Deluge.MoveStorage.superclass.initComponent.call(this);
+
+ this.addButton(_('Cancel'), this.onCancel, this);
+ this.addButton(_('Move'), this.onMove, this);
+
+ this.form = this.add({
+ xtype: 'form',
+ border: false,
+ defaultType: 'textfield',
+ width: 300,
+ bodyStyle: 'padding: 5px',
+ });
+
+ this.moveLocation = this.form.add({
+ fieldLabel: _('Download Folder'),
+ name: 'location',
+ width: 240,
+ });
+ //this.form.add({
+ // xtype: 'button',
+ // text: _('Browse'),
+ // handler: function() {
+ // if (!this.fileBrowser) {
+ // this.fileBrowser = new Deluge.FileBrowser();
+ // }
+ // this.fileBrowser.show();
+ // },
+ // scope: this
+ //});
+ },
+
+ hide: function () {
+ Deluge.MoveStorage.superclass.hide.call(this);
+ this.torrentIds = null;
+ },
+
+ show: function (torrentIds) {
+ Deluge.MoveStorage.superclass.show.call(this);
+ this.torrentIds = torrentIds;
+ },
+
+ onCancel: function () {
+ this.hide();
+ },
+
+ onMove: function () {
+ var dest = this.moveLocation.getValue();
+ deluge.client.core.move_storage(this.torrentIds, dest);
+ this.hide();
+ },
+});
+deluge.moveStorage = new Deluge.MoveStorage();
diff --git a/deluge/ui/web/js/deluge-all/MultiOptionsManager.js b/deluge/ui/web/js/deluge-all/MultiOptionsManager.js
new file mode 100644
index 0000000..82f9838
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/MultiOptionsManager.js
@@ -0,0 +1,218 @@
+/**
+ * Deluge.MultiOptionsManager.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+/**
+ * @description A class that can be used to manage options throughout the ui.
+ * @namespace Deluge
+ * @class Deluge.MultiOptionsManager
+ * @extends Deluge.OptionsManager
+ */
+Deluge.MultiOptionsManager = Ext.extend(Deluge.OptionsManager, {
+ constructor: function (config) {
+ this.currentId = null;
+ this.stored = {};
+ Deluge.MultiOptionsManager.superclass.constructor.call(this, config);
+ },
+
+ /**
+ * Changes bound fields to use the specified id.
+ * @param {String} id
+ */
+ changeId: function (id, dontUpdateBinds) {
+ var oldId = this.currentId;
+ this.currentId = id;
+ if (!dontUpdateBinds) {
+ for (var option in this.options) {
+ if (!this.binds[option]) continue;
+ Ext.each(
+ this.binds[option],
+ function (bind) {
+ bind.setValue(this.get(option));
+ },
+ this
+ );
+ }
+ }
+ return oldId;
+ },
+
+ /**
+ * Changes all the changed values to be the default values
+ * @param {String} id
+ */
+ commit: function () {
+ this.stored[this.currentId] = Ext.apply(
+ this.stored[this.currentId],
+ this.changed[this.currentId]
+ );
+ this.reset();
+ },
+
+ /**
+ * Get the value for an option
+ * @param {String/Array} option A single option or an array of options to return.
+ * @returns {Object} the options value.
+ */
+ get: function () {
+ if (arguments.length == 1) {
+ var option = arguments[0];
+ return this.isDirty(option)
+ ? this.changed[this.currentId][option]
+ : this.getDefault(option);
+ } else if (arguments.length == 0) {
+ var options = {};
+ for (var option in this.options) {
+ options[option] = this.isDirty(option)
+ ? this.changed[this.currentId][option]
+ : this.getDefault(option);
+ }
+ return options;
+ } else {
+ var options = {};
+ Ext.each(
+ arguments,
+ function (option) {
+ options[option] = this.isDirty(option)
+ ? this.changed[this.currentId][option]
+ : this.getDefault(option);
+ },
+ this
+ );
+ return options;
+ }
+ },
+
+ /**
+ * Get the default value for an option.
+ * @param {String} option A single option.
+ * @returns {Object} the value of the option
+ */
+ getDefault: function (option) {
+ return this.has(option)
+ ? this.stored[this.currentId][option]
+ : this.options[option];
+ },
+
+ /**
+ * Returns the dirty (changed) values.
+ * @returns {Object} the changed options
+ */
+ getDirty: function () {
+ return this.changed[this.currentId] ? this.changed[this.currentId] : {};
+ },
+
+ /**
+ * Check to see if the option has been changed.
+ * @param {String} option
+ * @returns {Boolean} true if the option has been changed, else false.
+ */
+ isDirty: function (option) {
+ return (
+ this.changed[this.currentId] &&
+ !Ext.isEmpty(this.changed[this.currentId][option])
+ );
+ },
+
+ /**
+ * Check to see if an id has had an option set to something other than the
+ * default value.
+ * @param {String} option
+ * @returns {Boolean} true if the id has an option, else false.
+ */
+ has: function (option) {
+ return (
+ this.stored[this.currentId] &&
+ !Ext.isEmpty(this.stored[this.currentId][option])
+ );
+ },
+
+ /**
+ * Reset the options back to the default values for the specified id.
+ */
+ reset: function () {
+ if (this.changed[this.currentId]) delete this.changed[this.currentId];
+ if (this.stored[this.currentId]) delete this.stored[this.currentId];
+ },
+
+ /**
+ * Reset the options back to their defaults for all ids.
+ */
+ resetAll: function () {
+ this.changed = {};
+ this.stored = {};
+ this.changeId(null);
+ },
+
+ /**
+ * Sets the value of specified option for the passed in id.
+ * @param {String} id
+ * @param {String} option
+ * @param {Object} value The value for the option
+ */
+ setDefault: function (option, value) {
+ if (option === undefined) {
+ return;
+ } else if (value === undefined) {
+ for (var key in option) {
+ this.setDefault(key, option[key]);
+ }
+ } else {
+ var oldValue = this.getDefault(option);
+ value = this.convertValueType(oldValue, value);
+
+ // If the value is the same as the old value there is
+ // no point in setting it again.
+ if (oldValue == value) return;
+
+ // Store the new default
+ if (!this.stored[this.currentId]) this.stored[this.currentId] = {};
+ this.stored[this.currentId][option] = value;
+
+ if (!this.isDirty(option)) {
+ this.fireEvent('changed', option, value, oldValue);
+ }
+ }
+ },
+
+ /**
+ * Update the value for the specified option and id.
+ * @param {String} id
+ * @param {String/Object} option or options to update
+ * @param {Object} [value];
+ */
+ update: function (option, value) {
+ if (option === undefined) {
+ return;
+ } else if (value === undefined) {
+ for (var key in option) {
+ this.update(key, option[key]);
+ }
+ } else {
+ if (!this.changed[this.currentId])
+ this.changed[this.currentId] = {};
+
+ var defaultValue = this.getDefault(option);
+ value = this.convertValueType(defaultValue, value);
+
+ var oldValue = this.get(option);
+ if (oldValue == value) return;
+
+ if (defaultValue == value) {
+ if (this.isDirty(option))
+ delete this.changed[this.currentId][option];
+ this.fireEvent('changed', option, value, oldValue);
+ return;
+ } else {
+ this.changed[this.currentId][option] = value;
+ this.fireEvent('changed', option, value, oldValue);
+ }
+ }
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/OptionsManager.js b/deluge/ui/web/js/deluge-all/OptionsManager.js
new file mode 100644
index 0000000..529f7af
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/OptionsManager.js
@@ -0,0 +1,279 @@
+/**
+ * Deluge.OptionsManager.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge');
+
+/**
+ * @class Deluge.OptionsManager
+ * @extends Ext.util.Observable
+ * A class that can be used to manage options throughout the ui.
+ * @constructor
+ * Creates a new OptionsManager
+ * @param {Object} config Configuration options
+ */
+Deluge.OptionsManager = Ext.extend(Ext.util.Observable, {
+ constructor: function (config) {
+ config = config || {};
+ this.binds = {};
+ this.changed = {};
+ this.options = (config && config['options']) || {};
+ this.focused = null;
+
+ this.addEvents({
+ /**
+ * @event add
+ * Fires when an option is added
+ */
+ add: true,
+
+ /**
+ * @event changed
+ * Fires when an option is changed
+ * @param {String} option The changed option
+ * @param {Mixed} value The options new value
+ * @param {Mixed} oldValue The options old value
+ */
+ changed: true,
+
+ /**
+ * @event reset
+ * Fires when the options are reset
+ */
+ reset: true,
+ });
+ this.on('changed', this.onChange, this);
+
+ Deluge.OptionsManager.superclass.constructor.call(this);
+ },
+
+ /**
+ * Add a set of default options and values to the options manager
+ * @param {Object} options The default options.
+ */
+ addOptions: function (options) {
+ this.options = Ext.applyIf(this.options, options);
+ },
+
+ /**
+ * Binds a form field to the specified option.
+ * @param {String} option
+ * @param {Ext.form.Field} field
+ */
+ bind: function (option, field) {
+ this.binds[option] = this.binds[option] || [];
+ this.binds[option].push(field);
+ field._doption = option;
+
+ field.on('focus', this.onFieldFocus, this);
+ field.on('blur', this.onFieldBlur, this);
+ field.on('change', this.onFieldChange, this);
+ field.on('check', this.onFieldChange, this);
+ field.on('spin', this.onFieldChange, this);
+ return field;
+ },
+
+ /**
+ * Changes all the changed values to be the default values
+ */
+ commit: function () {
+ this.options = Ext.apply(this.options, this.changed);
+ this.reset();
+ },
+
+ /**
+ * Converts the value so it matches the originals type
+ * @param {Mixed} oldValue The original value
+ * @param {Mixed} value The new value to convert
+ */
+ convertValueType: function (oldValue, value) {
+ if (Ext.type(oldValue) != Ext.type(value)) {
+ switch (Ext.type(oldValue)) {
+ case 'string':
+ value = String(value);
+ break;
+ case 'number':
+ value = Number(value);
+ break;
+ case 'boolean':
+ if (Ext.type(value) == 'string') {
+ value = value.toLowerCase();
+ value =
+ value == 'true' || value == '1' || value == 'on'
+ ? true
+ : false;
+ } else {
+ value = Boolean(value);
+ }
+ break;
+ }
+ }
+ return value;
+ },
+
+ /**
+ * Get the value for an option or options.
+ * @param {String} [option] A single option or an array of options to return.
+ * @returns {Object} the options value.
+ */
+ get: function () {
+ if (arguments.length == 1) {
+ var option = arguments[0];
+ return this.isDirty(option)
+ ? this.changed[option]
+ : this.options[option];
+ } else {
+ var options = {};
+ Ext.each(
+ arguments,
+ function (option) {
+ if (!this.has(option)) return;
+ options[option] = this.isDirty(option)
+ ? this.changed[option]
+ : this.options[option];
+ },
+ this
+ );
+ return options;
+ }
+ },
+
+ /**
+ * Get the default value for an option or options.
+ * @param {String|Array} [option] A single option or an array of options to return.
+ * @returns {Object} the value of the option
+ */
+ getDefault: function (option) {
+ return this.options[option];
+ },
+
+ /**
+ * Returns the dirty (changed) values.
+ * @returns {Object} the changed options
+ */
+ getDirty: function () {
+ return this.changed;
+ },
+
+ /**
+ * @param {String} [option] The option to check
+ * @returns {Boolean} true if the option has been changed from the default.
+ */
+ isDirty: function (option) {
+ return !Ext.isEmpty(this.changed[option]);
+ },
+
+ /**
+ * Check to see if an option exists in the options manager
+ * @param {String} option
+ * @returns {Boolean} true if the option exists, else false.
+ */
+ has: function (option) {
+ return this.options[option];
+ },
+
+ /**
+ * Reset the options back to the default values.
+ */
+ reset: function () {
+ this.changed = {};
+ },
+
+ /**
+ * Sets the value of specified option(s) for the passed in id.
+ * @param {String} option
+ * @param {Object} value The value for the option
+ */
+ set: function (option, value) {
+ if (option === undefined) {
+ return;
+ } else if (typeof option == 'object') {
+ var options = option;
+ this.options = Ext.apply(this.options, options);
+ for (var option in options) {
+ this.onChange(option, options[option]);
+ }
+ } else {
+ this.options[option] = value;
+ this.onChange(option, value);
+ }
+ },
+
+ /**
+ * Update the value for the specified option and id.
+ * @param {String/Object} option or options to update
+ * @param {Object} [value];
+ */
+ update: function (option, value) {
+ if (option === undefined) {
+ return;
+ } else if (value === undefined) {
+ for (var key in option) {
+ this.update(key, option[key]);
+ }
+ } else {
+ var defaultValue = this.getDefault(option);
+ value = this.convertValueType(defaultValue, value);
+
+ var oldValue = this.get(option);
+ if (oldValue == value) return;
+
+ if (defaultValue == value) {
+ if (this.isDirty(option)) delete this.changed[option];
+ this.fireEvent('changed', option, value, oldValue);
+ return;
+ }
+
+ this.changed[option] = value;
+ this.fireEvent('changed', option, value, oldValue);
+ }
+ },
+
+ /**
+ * Lets the option manager know when a field is blurred so if a value
+ * so value changing operations can continue on that field.
+ */
+ onFieldBlur: function (field, event) {
+ if (this.focused == field) {
+ this.focused = null;
+ }
+ },
+
+ /**
+ * Stops a form fields value from being blocked by the change functions
+ * @param {Ext.form.Field} field
+ * @private
+ */
+ onFieldChange: function (field, event) {
+ if (field.field) field = field.field; // fix for spinners
+ this.update(field._doption, field.getValue());
+ },
+
+ /**
+ * Lets the option manager know when a field is focused so if a value changing
+ * operation is performed it will not change the value of the field.
+ */
+ onFieldFocus: function (field, event) {
+ this.focused = field;
+ },
+
+ onChange: function (option, newValue, oldValue) {
+ // If we don't have a bind there's nothing to do.
+ if (Ext.isEmpty(this.binds[option])) return;
+ Ext.each(
+ this.binds[option],
+ function (bind) {
+ // The field is currently focused so we do not want to change it.
+ if (bind == this.focused) return;
+ // Set the form field to the new value.
+ bind.setValue(newValue);
+ },
+ this
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/OtherLimitWindow.js b/deluge/ui/web/js/deluge-all/OtherLimitWindow.js
new file mode 100644
index 0000000..0d53d4a
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/OtherLimitWindow.js
@@ -0,0 +1,79 @@
+/**
+ * Deluge.OtherLimitWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+/**
+ * @class Deluge.OtherLimitWindow
+ * @extends Ext.Window
+ */
+Deluge.OtherLimitWindow = Ext.extend(Ext.Window, {
+ layout: 'fit',
+ width: 210,
+ height: 100,
+ constrainHeader: true,
+ closeAction: 'hide',
+
+ initComponent: function () {
+ Deluge.OtherLimitWindow.superclass.initComponent.call(this);
+ this.form = this.add({
+ xtype: 'form',
+ baseCls: 'x-plain',
+ bodyStyle: 'padding: 5px',
+ layout: 'hbox',
+ layoutConfig: {
+ pack: 'start',
+ },
+ items: [
+ {
+ xtype: 'spinnerfield',
+ name: 'limit',
+ },
+ ],
+ });
+ if (this.initialConfig.unit) {
+ this.form.add({
+ border: false,
+ baseCls: 'x-plain',
+ bodyStyle: 'padding: 5px',
+ html: this.initialConfig.unit,
+ });
+ } else {
+ this.setSize(180, 100);
+ }
+
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+ this.addButton(_('OK'), this.onOkClick, this);
+ this.afterMethod('show', this.doFocusField, this);
+ },
+
+ setValue: function (value) {
+ this.form.getForm().setValues({ limit: value });
+ },
+
+ onCancelClick: function () {
+ this.form.getForm().reset();
+ this.hide();
+ },
+
+ onOkClick: function () {
+ var config = {};
+ config[this.group] = this.form.getForm().getValues().limit;
+ deluge.client.core.set_config(config, {
+ success: function () {
+ deluge.ui.update();
+ },
+ });
+ this.hide();
+ },
+
+ doFocusField: function () {
+ this.form.getForm().findField('limit').focus(true, 10);
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/Plugin.js b/deluge/ui/web/js/deluge-all/Plugin.js
new file mode 100644
index 0000000..26971f7
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Plugin.js
@@ -0,0 +1,106 @@
+/**
+ * Deluge.Plugin.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+/**
+ * @class Deluge.Plugin
+ * @extends Ext.util.Observable
+ */
+Deluge.Plugin = Ext.extend(Ext.util.Observable, {
+ /**
+ * The plugins name
+ * @property name
+ * @type {String}
+ */
+ name: null,
+
+ constructor: function (config) {
+ this.isDelugePlugin = true;
+ this.addEvents({
+ /**
+ * @event enabled
+ * @param {Plugin} plugin the plugin instance
+ */
+ enabled: true,
+
+ /**
+ * @event disabled
+ * @param {Plugin} plugin the plugin instance
+ */
+ disabled: true,
+ });
+ Deluge.Plugin.superclass.constructor.call(this, config);
+ },
+
+ /**
+ * Disables the plugin, firing the "{@link #disabled}" event and
+ * then executing the plugins clean up method onDisabled.
+ */
+ disable: function () {
+ this.fireEvent('disabled', this);
+ if (this.onDisable) this.onDisable();
+ },
+
+ /**
+ * Enables the plugin, firing the "{@link #enabled}" event and
+ * then executes the plugins setup method, onEnabled.
+ */
+ enable: function () {
+ deluge.client.reloadMethods();
+ this.fireEvent('enable', this);
+ if (this.onEnable) this.onEnable();
+ },
+
+ registerTorrentStatus: function (key, header, options) {
+ options = options || {};
+ var cc = options.colCfg || {},
+ sc = options.storeCfg || {};
+ sc = Ext.apply(sc, { name: key });
+ deluge.torrents.meta.fields.push(sc);
+ deluge.torrents.getStore().reader.onMetaChange(deluge.torrents.meta);
+
+ cc = Ext.apply(cc, {
+ header: header,
+ dataIndex: key,
+ });
+ var cols = deluge.torrents.columns.slice(0);
+ cols.push(cc);
+ deluge.torrents.colModel.setConfig(cols);
+ deluge.torrents.columns = cols;
+
+ Deluge.Keys.Grid.push(key);
+ deluge.torrents.getView().refresh(true);
+ },
+
+ deregisterTorrentStatus: function (key) {
+ var fields = [];
+ Ext.each(deluge.torrents.meta.fields, function (field) {
+ if (field.name != key) fields.push(field);
+ });
+ deluge.torrents.meta.fields = fields;
+ deluge.torrents.getStore().reader.onMetaChange(deluge.torrents.meta);
+
+ var cols = [];
+ Ext.each(deluge.torrents.columns, function (col) {
+ if (col.dataIndex != key) cols.push(col);
+ });
+ deluge.torrents.colModel.setConfig(cols);
+ deluge.torrents.columns = cols;
+
+ var keys = [];
+ Ext.each(Deluge.Keys.Grid, function (k) {
+ if (k == key) keys.push(k);
+ });
+ Deluge.Keys.Grid = keys;
+ deluge.torrents.getView().refresh(true);
+ },
+});
+
+Ext.ns('Deluge.plugins');
diff --git a/deluge/ui/web/js/deluge-all/RemoveWindow.js b/deluge/ui/web/js/deluge-all/RemoveWindow.js
new file mode 100644
index 0000000..ccac2ef
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/RemoveWindow.js
@@ -0,0 +1,77 @@
+/**
+ * Deluge.RemoveWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+/**
+ * @class Deluge.RemoveWindow
+ * @extends Ext.Window
+ */
+Deluge.RemoveWindow = Ext.extend(Ext.Window, {
+ title: _('Remove Torrent'),
+ layout: 'fit',
+ width: 350,
+ height: 100,
+ constrainHeader: true,
+ buttonAlign: 'right',
+ closeAction: 'hide',
+ closable: true,
+ iconCls: 'x-deluge-remove-window-icon',
+ plain: true,
+
+ bodyStyle: 'padding: 5px; padding-left: 10px;',
+ html: 'Are you sure you wish to remove the torrent (s)?',
+
+ initComponent: function () {
+ Deluge.RemoveWindow.superclass.initComponent.call(this);
+ this.addButton(_('Cancel'), this.onCancel, this);
+ this.addButton(_('Remove With Data'), this.onRemoveData, this);
+ this.addButton(_('Remove Torrent'), this.onRemove, this);
+ },
+
+ remove: function (removeData) {
+ deluge.client.core.remove_torrents(this.torrentIds, removeData, {
+ success: function (result) {
+ if (result == true) {
+ console.log(
+ 'Error(s) occured when trying to delete torrent(s).'
+ );
+ }
+ this.onRemoved(this.torrentIds);
+ },
+ scope: this,
+ torrentIds: this.torrentIds,
+ });
+ },
+
+ show: function (ids) {
+ Deluge.RemoveWindow.superclass.show.call(this);
+ this.torrentIds = ids;
+ },
+
+ onCancel: function () {
+ this.hide();
+ this.torrentIds = null;
+ },
+
+ onRemove: function () {
+ this.remove(false);
+ },
+
+ onRemoveData: function () {
+ this.remove(true);
+ },
+
+ onRemoved: function (torrentIds) {
+ deluge.events.fire('torrentsRemoved', torrentIds);
+ this.hide();
+ deluge.ui.update();
+ },
+});
+
+deluge.removeWindow = new Deluge.RemoveWindow();
diff --git a/deluge/ui/web/js/deluge-all/Sidebar.js b/deluge/ui/web/js/deluge-all/Sidebar.js
new file mode 100644
index 0000000..a6512b2
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Sidebar.js
@@ -0,0 +1,146 @@
+/**
+ * Deluge.Sidebar.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+// These are just so gen_gettext.py will pick up the strings
+// _('State')
+// _('Tracker Host')
+
+/**
+ * @class Deluge.Sidebar
+ * @author Damien Churchill <damoxc@gmail.com>
+ * @version 1.3
+ */
+Deluge.Sidebar = Ext.extend(Ext.Panel, {
+ // private
+ panels: {},
+
+ // private
+ selected: null,
+
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ id: 'sidebar',
+ region: 'west',
+ cls: 'deluge-sidebar',
+ title: _('Filters'),
+ layout: 'accordion',
+ split: true,
+ width: 200,
+ minSize: 100,
+ collapsible: true,
+ },
+ config
+ );
+ Deluge.Sidebar.superclass.constructor.call(this, config);
+ },
+
+ // private
+ initComponent: function () {
+ Deluge.Sidebar.superclass.initComponent.call(this);
+ deluge.events.on('disconnect', this.onDisconnect, this);
+ },
+
+ createFilter: function (filter, states) {
+ var panel = new Deluge.FilterPanel({
+ filter: filter,
+ });
+ panel.on('selectionchange', function (view, nodes) {
+ deluge.ui.update();
+ });
+ this.add(panel);
+
+ this.doLayout();
+ this.panels[filter] = panel;
+
+ if (panel.header) {
+ panel.header.on('click', function (header) {
+ if (!deluge.config.sidebar_multiple_filters) {
+ deluge.ui.update();
+ }
+ if (!panel.list.getSelectionCount()) {
+ panel.list.select(0);
+ }
+ });
+ }
+ this.fireEvent('filtercreate', this, panel);
+
+ panel.updateStates(states);
+ this.fireEvent('afterfiltercreate', this, panel);
+ },
+
+ getFilter: function (filter) {
+ return this.panels[filter];
+ },
+
+ getFilterStates: function () {
+ var states = {};
+
+ if (deluge.config.sidebar_multiple_filters) {
+ // Grab the filters from each of the filter panels
+ this.items.each(function (panel) {
+ var state = panel.getState();
+ if (state == null) return;
+ states[panel.filterType] = state;
+ }, this);
+ } else {
+ var panel = this.getLayout().activeItem;
+ if (panel) {
+ var state = panel.getState();
+ if (!state == null) return;
+ states[panel.filterType] = state;
+ }
+ }
+
+ return states;
+ },
+
+ hasFilter: function (filter) {
+ return this.panels[filter] ? true : false;
+ },
+
+ // private
+ onDisconnect: function () {
+ for (var filter in this.panels) {
+ this.remove(this.panels[filter]);
+ }
+ this.panels = {};
+ this.selected = null;
+ },
+
+ onFilterSelect: function (selModel, rowIndex, record) {
+ deluge.ui.update();
+ },
+
+ update: function (filters) {
+ for (var filter in filters) {
+ var states = filters[filter];
+ if (Ext.getKeys(this.panels).indexOf(filter) > -1) {
+ this.panels[filter].updateStates(states);
+ } else {
+ this.createFilter(filter, states);
+ }
+ }
+
+ // Perform a cleanup of fitlers that are not enabled any more.
+ Ext.each(
+ Ext.keys(this.panels),
+ function (filter) {
+ if (Ext.keys(filters).indexOf(filter) == -1) {
+ // We need to remove the panel
+ this.remove(this.panels[filter]);
+ this.doLayout();
+ delete this.panels[filter];
+ }
+ },
+ this
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/Statusbar.js b/deluge/ui/web/js/deluge-all/Statusbar.js
new file mode 100644
index 0000000..00ad6b2
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Statusbar.js
@@ -0,0 +1,362 @@
+/**
+ * Deluge.Statusbar.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge');
+
+Deluge.Statusbar = Ext.extend(Ext.ux.StatusBar, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ id: 'deluge-statusbar',
+ defaultIconCls: 'x-deluge-statusbar x-not-connected',
+ defaultText: _('Not Connected'),
+ },
+ config
+ );
+ Deluge.Statusbar.superclass.constructor.call(this, config);
+ },
+
+ initComponent: function () {
+ Deluge.Statusbar.superclass.initComponent.call(this);
+
+ deluge.events.on('connect', this.onConnect, this);
+ deluge.events.on('disconnect', this.onDisconnect, this);
+ },
+
+ createButtons: function () {
+ this.buttons = this.add(
+ {
+ id: 'statusbar-connections',
+ text: ' ',
+ cls: 'x-btn-text-icon',
+ iconCls: 'x-deluge-connections',
+ tooltip: _('Connections'),
+ menu: new Deluge.StatusbarMenu({
+ items: [
+ {
+ text: '50',
+ value: '50',
+ group: 'max_connections_global',
+ checked: false,
+ },
+ {
+ text: '100',
+ value: '100',
+ group: 'max_connections_global',
+ checked: false,
+ },
+ {
+ text: '200',
+ value: '200',
+ group: 'max_connections_global',
+ checked: false,
+ },
+ {
+ text: '300',
+ value: '300',
+ group: 'max_connections_global',
+ checked: false,
+ },
+ {
+ text: '500',
+ value: '500',
+ group: 'max_connections_global',
+ checked: false,
+ },
+ {
+ text: _('Unlimited'),
+ value: '-1',
+ group: 'max_connections_global',
+ checked: false,
+ },
+ '-',
+ {
+ text: _('Other'),
+ value: 'other',
+ group: 'max_connections_global',
+ checked: false,
+ },
+ ],
+ otherWin: {
+ title: _('Set Maximum Connections'),
+ },
+ }),
+ },
+ '-',
+ {
+ id: 'statusbar-downspeed',
+ text: ' ',
+ cls: 'x-btn-text-icon',
+ iconCls: 'x-deluge-downloading',
+ tooltip: _('Download Speed'),
+ menu: new Deluge.StatusbarMenu({
+ items: [
+ {
+ value: '5',
+ text: _('5 KiB/s'),
+ group: 'max_download_speed',
+ checked: false,
+ },
+ {
+ value: '10',
+ text: _('10 KiB/s'),
+ group: 'max_download_speed',
+ checked: false,
+ },
+ {
+ value: '30',
+ text: _('30 KiB/s'),
+ group: 'max_download_speed',
+ checked: false,
+ },
+ {
+ value: '80',
+ text: _('80 KiB/s'),
+ group: 'max_download_speed',
+ checked: false,
+ },
+ {
+ value: '300',
+ text: _('300 KiB/s'),
+ group: 'max_download_speed',
+ checked: false,
+ },
+ {
+ value: '-1',
+ text: _('Unlimited'),
+ group: 'max_download_speed',
+ checked: false,
+ },
+ '-',
+ {
+ value: 'other',
+ text: _('Other'),
+ group: 'max_download_speed',
+ checked: false,
+ },
+ ],
+ otherWin: {
+ title: _('Set Maximum Download Speed'),
+ unit: _('KiB/s'),
+ },
+ }),
+ },
+ '-',
+ {
+ id: 'statusbar-upspeed',
+ text: ' ',
+ cls: 'x-btn-text-icon',
+ iconCls: 'x-deluge-seeding',
+ tooltip: _('Upload Speed'),
+ menu: new Deluge.StatusbarMenu({
+ items: [
+ {
+ value: '5',
+ text: _('5 KiB/s'),
+ group: 'max_upload_speed',
+ checked: false,
+ },
+ {
+ value: '10',
+ text: _('10 KiB/s'),
+ group: 'max_upload_speed',
+ checked: false,
+ },
+ {
+ value: '30',
+ text: _('30 KiB/s'),
+ group: 'max_upload_speed',
+ checked: false,
+ },
+ {
+ value: '80',
+ text: _('80 KiB/s'),
+ group: 'max_upload_speed',
+ checked: false,
+ },
+ {
+ value: '300',
+ text: _('300 KiB/s'),
+ group: 'max_upload_speed',
+ checked: false,
+ },
+ {
+ value: '-1',
+ text: _('Unlimited'),
+ group: 'max_upload_speed',
+ checked: false,
+ },
+ '-',
+ {
+ value: 'other',
+ text: _('Other'),
+ group: 'max_upload_speed',
+ checked: false,
+ },
+ ],
+ otherWin: {
+ title: _('Set Maximum Upload Speed'),
+ unit: _('KiB/s'),
+ },
+ }),
+ },
+ '-',
+ {
+ id: 'statusbar-traffic',
+ text: ' ',
+ cls: 'x-btn-text-icon',
+ iconCls: 'x-deluge-traffic',
+ tooltip: _('Protocol Traffic Download/Upload'),
+ handler: function () {
+ deluge.preferences.show();
+ deluge.preferences.selectPage('Network');
+ },
+ },
+ '-',
+ {
+ id: 'statusbar-externalip',
+ text: ' ',
+ cls: 'x-btn-text',
+ tooltip: _('External IP Address'),
+ },
+ '-',
+ {
+ id: 'statusbar-dht',
+ text: ' ',
+ cls: 'x-btn-text-icon',
+ iconCls: 'x-deluge-dht',
+ tooltip: _('DHT Nodes'),
+ },
+ '-',
+ {
+ id: 'statusbar-freespace',
+ text: ' ',
+ cls: 'x-btn-text-icon',
+ iconCls: 'x-deluge-freespace',
+ tooltip: _('Freespace in download folder'),
+ handler: function () {
+ deluge.preferences.show();
+ deluge.preferences.selectPage('Downloads');
+ },
+ }
+ );
+ this.created = true;
+ },
+
+ onConnect: function () {
+ this.setStatus({
+ iconCls: 'x-connected',
+ text: '',
+ });
+ if (!this.created) {
+ this.createButtons();
+ } else {
+ Ext.each(this.buttons, function (item) {
+ item.show();
+ item.enable();
+ });
+ }
+ this.doLayout();
+ },
+
+ onDisconnect: function () {
+ this.clearStatus({ useDefaults: true });
+ Ext.each(this.buttons, function (item) {
+ item.hide();
+ item.disable();
+ });
+ this.doLayout();
+ },
+
+ update: function (stats) {
+ if (!stats) return;
+
+ function addSpeed(val) {
+ return val + ' KiB/s';
+ }
+
+ var updateStat = function (name, config) {
+ var item = this.items.get('statusbar-' + name);
+ if (config.limit.value > 0) {
+ var value = config.value.formatter
+ ? config.value.formatter(config.value.value, true)
+ : config.value.value;
+ var limit = config.limit.formatter
+ ? config.limit.formatter(config.limit.value, true)
+ : config.limit.value;
+ var str = String.format(config.format, value, limit);
+ } else {
+ var str = config.value.formatter
+ ? config.value.formatter(config.value.value, true)
+ : config.value.value;
+ }
+ item.setText(str);
+
+ if (!item.menu) return;
+ item.menu.setValue(config.limit.value);
+ }.createDelegate(this);
+
+ updateStat('connections', {
+ value: { value: stats.num_connections },
+ limit: { value: stats.max_num_connections },
+ format: '{0} ({1})',
+ });
+
+ updateStat('downspeed', {
+ value: {
+ value: stats.download_rate,
+ formatter: Deluge.Formatters.speed,
+ },
+ limit: {
+ value: stats.max_download,
+ formatter: addSpeed,
+ },
+ format: '{0} ({1})',
+ });
+
+ updateStat('upspeed', {
+ value: {
+ value: stats.upload_rate,
+ formatter: Deluge.Formatters.speed,
+ },
+ limit: {
+ value: stats.max_upload,
+ formatter: addSpeed,
+ },
+ format: '{0} ({1})',
+ });
+
+ updateStat('traffic', {
+ value: {
+ value: stats.download_protocol_rate,
+ formatter: Deluge.Formatters.speed,
+ },
+ limit: {
+ value: stats.upload_protocol_rate,
+ formatter: Deluge.Formatters.speed,
+ },
+ format: '{0}/{1}',
+ });
+
+ this.items.get('statusbar-dht').setText(stats.dht_nodes);
+ this.items
+ .get('statusbar-freespace')
+ .setText(
+ stats.free_space >= 0 ? fsize(stats.free_space) : _('Error')
+ );
+ this.items
+ .get('statusbar-externalip')
+ .setText(
+ String.format(
+ _('<b>IP</b> {0}'),
+ stats.external_ip ? stats.external_ip : _('n/a')
+ )
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/StatusbarMenu.js b/deluge/ui/web/js/deluge-all/StatusbarMenu.js
new file mode 100644
index 0000000..1365c9c
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/StatusbarMenu.js
@@ -0,0 +1,79 @@
+/**
+ * Deluge.StatusbarMenu.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge');
+
+/**
+ * Menu that handles setting the statusbar limits correctly.
+ * @class Deluge.StatusbarMenu
+ * @extends Ext.menu.Menu
+ */
+Deluge.StatusbarMenu = Ext.extend(Ext.menu.Menu, {
+ initComponent: function () {
+ Deluge.StatusbarMenu.superclass.initComponent.call(this);
+ this.otherWin = new Deluge.OtherLimitWindow(
+ this.initialConfig.otherWin || {}
+ );
+
+ this.items.each(function (item) {
+ if (item.getXType() != 'menucheckitem') return;
+ if (item.value == 'other') {
+ item.on('click', this.onOtherClicked, this);
+ } else {
+ item.on('checkchange', this.onLimitChanged, this);
+ }
+ }, this);
+ },
+
+ setValue: function (value) {
+ var beenSet = false;
+ // set the new value
+ this.value = value = value == 0 ? -1 : value;
+
+ var other = null;
+ // uncheck all items
+ this.items.each(function (item) {
+ if (item.setChecked) {
+ item.suspendEvents();
+ if (item.value == value) {
+ item.setChecked(true);
+ beenSet = true;
+ } else {
+ item.setChecked(false);
+ }
+ item.resumeEvents();
+ }
+
+ if (item.value == 'other') other = item;
+ });
+
+ if (beenSet) return;
+
+ other.suspendEvents();
+ other.setChecked(true);
+ other.resumeEvents();
+ },
+
+ onLimitChanged: function (item, checked) {
+ if (!checked || item.value == 'other') return; // We do not care about unchecked or other.
+ var config = {};
+ config[item.group] = item.value;
+ deluge.client.core.set_config(config, {
+ success: function () {
+ deluge.ui.update();
+ },
+ });
+ },
+
+ onOtherClicked: function (item, e) {
+ this.otherWin.group = item.group;
+ this.otherWin.setValue(this.value);
+ this.otherWin.show();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/Toolbar.js b/deluge/ui/web/js/deluge-all/Toolbar.js
new file mode 100644
index 0000000..1ecdd75
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/Toolbar.js
@@ -0,0 +1,206 @@
+/**
+ * Deluge.Toolbar.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+/**
+ * An extension of the <tt>Ext.Toolbar</tt> class that provides an extensible toolbar for Deluge.
+ * @class Deluge.Toolbar
+ * @extends Ext.Toolbar
+ */
+Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ items: [
+ {
+ id: 'tbar-deluge-text',
+ text: _('Deluge'),
+ iconCls: 'x-deluge-main-panel',
+ handler: this.onAboutClick,
+ },
+ new Ext.Toolbar.Separator(),
+ {
+ id: 'create',
+ disabled: true,
+ hidden: true,
+ text: _('Create'),
+ iconCls: 'icon-create',
+ handler: this.onTorrentAction,
+ },
+ {
+ id: 'add',
+ disabled: true,
+ text: _('Add'),
+ iconCls: 'icon-add',
+ handler: this.onTorrentAdd,
+ },
+ {
+ id: 'remove',
+ disabled: true,
+ text: _('Remove'),
+ iconCls: 'icon-remove',
+ handler: this.onTorrentAction,
+ },
+ new Ext.Toolbar.Separator(),
+ {
+ id: 'pause',
+ disabled: true,
+ text: _('Pause'),
+ iconCls: 'icon-pause',
+ handler: this.onTorrentAction,
+ },
+ {
+ id: 'resume',
+ disabled: true,
+ text: _('Resume'),
+ iconCls: 'icon-resume',
+ handler: this.onTorrentAction,
+ },
+ new Ext.Toolbar.Separator(),
+ {
+ id: 'up',
+ cls: 'x-btn-text-icon',
+ disabled: true,
+ text: _('Up'),
+ iconCls: 'icon-up',
+ handler: this.onTorrentAction,
+ },
+ {
+ id: 'down',
+ disabled: true,
+ text: _('Down'),
+ iconCls: 'icon-down',
+ handler: this.onTorrentAction,
+ },
+ new Ext.Toolbar.Separator(),
+ {
+ id: 'preferences',
+ text: _('Preferences'),
+ iconCls: 'x-deluge-preferences',
+ handler: this.onPreferencesClick,
+ scope: this,
+ },
+ {
+ id: 'connectionman',
+ text: _('Connection Manager'),
+ iconCls: 'x-deluge-connection-manager',
+ handler: this.onConnectionManagerClick,
+ scope: this,
+ },
+ '->',
+ {
+ id: 'help',
+ iconCls: 'icon-help',
+ text: _('Help'),
+ handler: this.onHelpClick,
+ scope: this,
+ },
+ {
+ id: 'logout',
+ iconCls: 'icon-logout',
+ disabled: true,
+ text: _('Logout'),
+ handler: this.onLogout,
+ scope: this,
+ },
+ ],
+ },
+ config
+ );
+ Deluge.Toolbar.superclass.constructor.call(this, config);
+ },
+
+ connectedButtons: ['add', 'remove', 'pause', 'resume', 'up', 'down'],
+
+ initComponent: function () {
+ Deluge.Toolbar.superclass.initComponent.call(this);
+ deluge.events.on('connect', this.onConnect, this);
+ deluge.events.on('login', this.onLogin, this);
+ },
+
+ onConnect: function () {
+ Ext.each(
+ this.connectedButtons,
+ function (buttonId) {
+ this.items.get(buttonId).enable();
+ },
+ this
+ );
+ },
+
+ onDisconnect: function () {
+ Ext.each(
+ this.connectedButtons,
+ function (buttonId) {
+ this.items.get(buttonId).disable();
+ },
+ this
+ );
+ },
+
+ onLogin: function () {
+ this.items.get('logout').enable();
+ },
+
+ onLogout: function () {
+ this.items.get('logout').disable();
+ deluge.login.logout();
+ },
+
+ onConnectionManagerClick: function () {
+ deluge.connectionManager.show();
+ },
+
+ onHelpClick: function () {
+ window.open('http://dev.deluge-torrent.org/wiki/UserGuide');
+ },
+
+ onAboutClick: function () {
+ var about = new Deluge.about.AboutWindow();
+ about.show();
+ },
+
+ onPreferencesClick: function () {
+ deluge.preferences.show();
+ },
+
+ onTorrentAction: function (item) {
+ var selection = deluge.torrents.getSelections();
+ var ids = [];
+ Ext.each(selection, function (record) {
+ ids.push(record.id);
+ });
+
+ switch (item.id) {
+ case 'remove':
+ deluge.removeWindow.show(ids);
+ break;
+ case 'pause':
+ case 'resume':
+ deluge.client.core[item.id + '_torrent'](ids, {
+ success: function () {
+ deluge.ui.update();
+ },
+ });
+ break;
+ case 'up':
+ case 'down':
+ deluge.client.core['queue_' + item.id](ids, {
+ success: function () {
+ deluge.ui.update();
+ },
+ });
+ break;
+ }
+ },
+
+ onTorrentAdd: function () {
+ deluge.add.show();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/TorrentGrid.js b/deluge/ui/web/js/deluge-all/TorrentGrid.js
new file mode 100644
index 0000000..5db7e9f
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/TorrentGrid.js
@@ -0,0 +1,516 @@
+/**
+ * Deluge.TorrentGrid.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+(function () {
+ /* Renderers for the Torrent Grid */
+ function queueRenderer(value) {
+ return value == -1 ? '' : value + 1;
+ }
+ function torrentNameRenderer(value, p, r) {
+ return String.format(
+ '<div class="torrent-name x-deluge-{0}">{1}</div>',
+ r.data['state'].toLowerCase(),
+ Ext.util.Format.htmlEncode(value)
+ );
+ }
+ function torrentSpeedRenderer(value) {
+ if (!value) return;
+ return fspeed(value);
+ }
+ function torrentLimitRenderer(value) {
+ if (value == -1) return '';
+ return fspeed(value * 1024.0);
+ }
+ function torrentProgressRenderer(value, p, r) {
+ value = new Number(value);
+ var progress = value;
+ var text = _(r.data['state']) + ' ' + value.toFixed(2) + '%';
+ if (this.style) {
+ var style = this.style;
+ } else {
+ var style = p.style;
+ }
+ var width = new Number(style.match(/\w+:\s*(\d+)\w+/)[1]);
+ return Deluge.progressBar(value, width - 8, text);
+ }
+ function seedsRenderer(value, p, r) {
+ if (r.data['total_seeds'] > -1) {
+ return String.format('{0} ({1})', value, r.data['total_seeds']);
+ } else {
+ return value;
+ }
+ }
+ function peersRenderer(value, p, r) {
+ if (r.data['total_peers'] > -1) {
+ return String.format('{0} ({1})', value, r.data['total_peers']);
+ } else {
+ return value;
+ }
+ }
+ function availRenderer(value, p, r) {
+ return value < 0 ? '&infin;' : parseFloat(new Number(value).toFixed(3));
+ }
+ function trackerRenderer(value, p, r) {
+ return String.format(
+ '<div style="background: url(' +
+ deluge.config.base +
+ 'tracker/{0}) no-repeat; background-size: contain; padding-left: 20px;">{0}</div>',
+ Ext.util.Format.htmlEncode(value)
+ );
+ }
+
+ function etaSorter(eta) {
+ if (eta === 0) return Number.MAX_VALUE;
+ if (eta <= -1) return Number.MAX_SAFE_INTEGER;
+ return eta;
+ }
+
+ function dateOrNever(date) {
+ return date > 0.0 ? fdate(date) : _('Never');
+ }
+
+ function timeOrInf(time) {
+ if (time === 0) return '';
+ if (time <= -1) return '&infin;';
+ return ftime(time);
+ }
+
+ /**
+ * Deluge.TorrentGrid Class
+ *
+ * @author Damien Churchill <damoxc@gmail.com>
+ * @version 1.3
+ *
+ * @class Deluge.TorrentGrid
+ * @extends Ext.grid.GridPanel
+ * @constructor
+ * @param {Object} config Configuration options
+ */
+ Deluge.TorrentGrid = Ext.extend(Ext.grid.GridPanel, {
+ // object to store contained torrent ids
+ torrents: {},
+
+ columns: [
+ {
+ id: 'queue',
+ header: '#',
+ width: 30,
+ sortable: true,
+ renderer: queueRenderer,
+ dataIndex: 'queue',
+ },
+ {
+ id: 'name',
+ header: _('Name'),
+ width: 150,
+ sortable: true,
+ renderer: torrentNameRenderer,
+ dataIndex: 'name',
+ },
+ {
+ header: _('Size'),
+ width: 75,
+ sortable: true,
+ renderer: fsize,
+ dataIndex: 'total_wanted',
+ },
+ {
+ header: _('Progress'),
+ width: 150,
+ sortable: true,
+ renderer: torrentProgressRenderer,
+ dataIndex: 'progress',
+ },
+ {
+ header: _('Seeds'),
+ hidden: true,
+ width: 60,
+ sortable: true,
+ renderer: seedsRenderer,
+ dataIndex: 'num_seeds',
+ },
+ {
+ header: _('Peers'),
+ hidden: true,
+ width: 60,
+ sortable: true,
+ renderer: peersRenderer,
+ dataIndex: 'num_peers',
+ },
+ {
+ header: _('Down Speed'),
+ width: 80,
+ sortable: true,
+ renderer: torrentSpeedRenderer,
+ dataIndex: 'download_payload_rate',
+ },
+ {
+ header: _('Up Speed'),
+ width: 80,
+ sortable: true,
+ renderer: torrentSpeedRenderer,
+ dataIndex: 'upload_payload_rate',
+ },
+ {
+ header: _('ETA'),
+ width: 60,
+ sortable: true,
+ renderer: timeOrInf,
+ dataIndex: 'eta',
+ },
+ {
+ header: _('Ratio'),
+ hidden: true,
+ width: 60,
+ sortable: true,
+ renderer: availRenderer,
+ dataIndex: 'ratio',
+ },
+ {
+ header: _('Avail'),
+ hidden: true,
+ width: 60,
+ sortable: true,
+ renderer: availRenderer,
+ dataIndex: 'distributed_copies',
+ },
+ {
+ header: _('Added'),
+ hidden: true,
+ width: 80,
+ sortable: true,
+ renderer: fdate,
+ dataIndex: 'time_added',
+ },
+ {
+ header: _('Complete Seen'),
+ hidden: true,
+ width: 80,
+ sortable: true,
+ renderer: dateOrNever,
+ dataIndex: 'last_seen_complete',
+ },
+ {
+ header: _('Completed'),
+ hidden: true,
+ width: 80,
+ sortable: true,
+ renderer: dateOrNever,
+ dataIndex: 'completed_time',
+ },
+ {
+ header: _('Tracker'),
+ hidden: true,
+ width: 120,
+ sortable: true,
+ renderer: trackerRenderer,
+ dataIndex: 'tracker_host',
+ },
+ {
+ header: _('Download Folder'),
+ hidden: true,
+ width: 120,
+ sortable: true,
+ renderer: fplain,
+ dataIndex: 'download_location',
+ },
+ {
+ header: _('Owner'),
+ width: 80,
+ sortable: true,
+ renderer: fplain,
+ dataIndex: 'owner',
+ },
+ {
+ header: _('Public'),
+ hidden: true,
+ width: 80,
+ sortable: true,
+ renderer: fplain,
+ dataIndex: 'public',
+ },
+ {
+ header: _('Shared'),
+ hidden: true,
+ width: 80,
+ sortable: true,
+ renderer: fplain,
+ dataIndex: 'shared',
+ },
+ {
+ header: _('Downloaded'),
+ hidden: true,
+ width: 75,
+ sortable: true,
+ renderer: fsize,
+ dataIndex: 'total_done',
+ },
+ {
+ header: _('Uploaded'),
+ hidden: true,
+ width: 75,
+ sortable: true,
+ renderer: fsize,
+ dataIndex: 'total_uploaded',
+ },
+ {
+ header: _('Remaining'),
+ hidden: true,
+ width: 75,
+ sortable: true,
+ renderer: fsize,
+ dataIndex: 'total_remaining',
+ },
+ {
+ header: _('Down Limit'),
+ hidden: true,
+ width: 75,
+ sortable: true,
+ renderer: torrentLimitRenderer,
+ dataIndex: 'max_download_speed',
+ },
+ {
+ header: _('Up Limit'),
+ hidden: true,
+ width: 75,
+ sortable: true,
+ renderer: torrentLimitRenderer,
+ dataIndex: 'max_upload_speed',
+ },
+ {
+ header: _('Seeds:Peers'),
+ hidden: true,
+ width: 75,
+ sortable: true,
+ renderer: availRenderer,
+ dataIndex: 'seeds_peers_ratio',
+ },
+ {
+ header: _('Last Transfer'),
+ hidden: true,
+ width: 75,
+ sortable: true,
+ renderer: ftime,
+ dataIndex: 'time_since_transfer',
+ },
+ ],
+
+ meta: {
+ root: 'torrents',
+ idProperty: 'id',
+ fields: [
+ {
+ name: 'queue',
+ sortType: Deluge.data.SortTypes.asQueuePosition,
+ },
+ { name: 'name', sortType: Deluge.data.SortTypes.asName },
+ { name: 'total_wanted', type: 'int' },
+ { name: 'state' },
+ { name: 'progress', type: 'float' },
+ { name: 'num_seeds', type: 'int' },
+ { name: 'total_seeds', type: 'int' },
+ { name: 'num_peers', type: 'int' },
+ { name: 'total_peers', type: 'int' },
+ { name: 'download_payload_rate', type: 'int' },
+ { name: 'upload_payload_rate', type: 'int' },
+ { name: 'eta', type: 'int', sortType: etaSorter },
+ { name: 'ratio', type: 'float' },
+ { name: 'distributed_copies', type: 'float' },
+ { name: 'time_added', type: 'int' },
+ { name: 'last_seen_complete', type: 'int' },
+ { name: 'completed_time', type: 'int' },
+ { name: 'tracker_host' },
+ { name: 'download_location' },
+ { name: 'total_done', type: 'int' },
+ { name: 'total_uploaded', type: 'int' },
+ { name: 'total_remaining', type: 'int' },
+ { name: 'max_download_speed', type: 'int' },
+ { name: 'max_upload_speed', type: 'int' },
+ { name: 'seeds_peers_ratio', type: 'float' },
+ { name: 'time_since_transfer', type: 'int' },
+ ],
+ },
+
+ keys: [
+ {
+ key: 'a',
+ ctrl: true,
+ stopEvent: true,
+ handler: function () {
+ deluge.torrents.getSelectionModel().selectAll();
+ },
+ },
+ {
+ key: [46],
+ stopEvent: true,
+ handler: function () {
+ ids = deluge.torrents.getSelectedIds();
+ deluge.removeWindow.show(ids);
+ },
+ },
+ ],
+
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ id: 'torrentGrid',
+ store: new Ext.data.JsonStore(this.meta),
+ columns: this.columns,
+ keys: this.keys,
+ region: 'center',
+ cls: 'deluge-torrents',
+ stripeRows: true,
+ autoExpandColumn: 'name',
+ autoExpandMin: 150,
+ deferredRender: false,
+ autoScroll: true,
+ stateful: true,
+ view: new Ext.ux.grid.BufferView({
+ rowHeight: 26,
+ scrollDelay: false,
+ }),
+ },
+ config
+ );
+ Deluge.TorrentGrid.superclass.constructor.call(this, config);
+ },
+
+ initComponent: function () {
+ Deluge.TorrentGrid.superclass.initComponent.call(this);
+ deluge.events.on('torrentsRemoved', this.onTorrentsRemoved, this);
+ deluge.events.on('disconnect', this.onDisconnect, this);
+
+ this.on('rowcontextmenu', function (grid, rowIndex, e) {
+ e.stopEvent();
+ var selection = grid.getSelectionModel();
+ if (!selection.isSelected(rowIndex)) {
+ selection.selectRow(rowIndex);
+ }
+ deluge.menus.torrent.showAt(e.getPoint());
+ });
+ },
+
+ /**
+ * Returns the record representing the torrent at the specified index.
+ *
+ * @param index {int} The row index of the torrent you wish to retrieve.
+ * @return {Ext.data.Record} The record representing the torrent.
+ */
+ getTorrent: function (index) {
+ return this.getStore().getAt(index);
+ },
+
+ /**
+ * Returns the currently selected record.
+ * @ return {Array/Ext.data.Record} The record(s) representing the rows
+ */
+ getSelected: function () {
+ return this.getSelectionModel().getSelected();
+ },
+
+ /**
+ * Returns the currently selected records.
+ */
+ getSelections: function () {
+ return this.getSelectionModel().getSelections();
+ },
+
+ /**
+ * Return the currently selected torrent id.
+ * @return {String} The currently selected id.
+ */
+ getSelectedId: function () {
+ return this.getSelectionModel().getSelected().id;
+ },
+
+ /**
+ * Return the currently selected torrent ids.
+ * @return {Array} The currently selected ids.
+ */
+ getSelectedIds: function () {
+ var ids = [];
+ Ext.each(this.getSelectionModel().getSelections(), function (r) {
+ ids.push(r.id);
+ });
+ return ids;
+ },
+
+ update: function (torrents, wipe) {
+ var store = this.getStore();
+
+ // Need to perform a complete reload of the torrent grid.
+ if (wipe) {
+ store.removeAll();
+ this.torrents = {};
+ }
+
+ var newTorrents = [];
+
+ // Update and add any new torrents.
+ for (var t in torrents) {
+ var torrent = torrents[t];
+
+ if (this.torrents[t]) {
+ var record = store.getById(t);
+ record.beginEdit();
+ for (var k in torrent) {
+ if (record.get(k) != torrent[k]) {
+ record.set(k, torrent[k]);
+ }
+ }
+ record.endEdit();
+ } else {
+ var record = new Deluge.data.Torrent(torrent);
+ record.id = t;
+ this.torrents[t] = 1;
+ newTorrents.push(record);
+ }
+ }
+ store.add(newTorrents);
+
+ // Remove any torrents that should not be in the store.
+ store.each(function (record) {
+ if (!torrents[record.id]) {
+ store.remove(record);
+ delete this.torrents[record.id];
+ }
+ }, this);
+ store.commitChanges();
+
+ var sortState = store.getSortState();
+ if (!sortState) return;
+ store.sort(sortState.field, sortState.direction);
+ },
+
+ // private
+ onDisconnect: function () {
+ this.getStore().removeAll();
+ this.torrents = {};
+ },
+
+ // private
+ onTorrentsRemoved: function (torrentIds) {
+ var selModel = this.getSelectionModel();
+ Ext.each(
+ torrentIds,
+ function (torrentId) {
+ var record = this.getStore().getById(torrentId);
+ if (selModel.isSelected(record)) {
+ selModel.deselectRow(this.getStore().indexOf(record));
+ }
+ this.getStore().remove(record);
+ delete this.torrents[torrentId];
+ },
+ this
+ );
+ },
+ });
+ deluge.torrents = new Deluge.TorrentGrid();
+})();
diff --git a/deluge/ui/web/js/deluge-all/UI.js b/deluge/ui/web/js/deluge-all/UI.js
new file mode 100644
index 0000000..f7edc84
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/UI.js
@@ -0,0 +1,311 @@
+/**
+ * Deluge.UI.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+/** Dummy translation arrays so Torrent states are available for gettext.js and Translators.
+ *
+ * All entries in deluge.common.TORRENT_STATE should be added here.
+ *
+ * No need to import these, just simply use the `_()` function around a status variable.
+ */
+var TORRENT_STATE_TRANSLATION = [
+ _('All'),
+ _('Active'),
+ _('Allocating'),
+ _('Checking'),
+ _('Downloading'),
+ _('Seeding'),
+ _('Paused'),
+ _('Checking'),
+ _('Queued'),
+ _('Error'),
+];
+
+/**
+ * @static
+ * @class Deluge.UI
+ * The controller for the whole interface, that ties all the components
+ * together and handles the 2 second poll.
+ */
+deluge.ui = {
+ errorCount: 0,
+
+ filters: null,
+
+ /**
+ * @description Create all the interface components, the json-rpc client
+ * and set up various events that the UI will utilise.
+ */
+ initialize: function () {
+ deluge.add = new Deluge.add.AddWindow();
+ deluge.details = new Deluge.details.DetailsPanel();
+ deluge.connectionManager = new Deluge.ConnectionManager();
+ deluge.editTrackers = new Deluge.EditTrackersWindow();
+ deluge.login = new Deluge.LoginWindow();
+ deluge.preferences = new Deluge.preferences.PreferencesWindow();
+ deluge.sidebar = new Deluge.Sidebar();
+ deluge.statusbar = new Deluge.Statusbar();
+ deluge.toolbar = new Deluge.Toolbar();
+
+ this.detailsPanel = new Ext.Panel({
+ id: 'detailsPanel',
+ cls: 'detailsPanel',
+ region: 'south',
+ split: true,
+ height: 215,
+ minSize: 100,
+ collapsible: true,
+ layout: 'fit',
+ items: [deluge.details],
+ });
+
+ this.MainPanel = new Ext.Panel({
+ id: 'mainPanel',
+ iconCls: 'x-deluge-main-panel',
+ layout: 'border',
+ border: false,
+ tbar: deluge.toolbar,
+ items: [deluge.sidebar, this.detailsPanel, deluge.torrents],
+ bbar: deluge.statusbar,
+ });
+
+ this.Viewport = new Ext.Viewport({
+ layout: 'fit',
+ items: [this.MainPanel],
+ });
+
+ deluge.events.on('connect', this.onConnect, this);
+ deluge.events.on('disconnect', this.onDisconnect, this);
+ deluge.events.on('PluginDisabledEvent', this.onPluginDisabled, this);
+ deluge.events.on('PluginEnabledEvent', this.onPluginEnabled, this);
+ deluge.client = new Ext.ux.util.RpcClient({
+ url: deluge.config.base + 'json',
+ });
+
+ // enable all the already active plugins
+ for (var plugin in Deluge.pluginStore) {
+ plugin = Deluge.createPlugin(plugin);
+ plugin.enable();
+ deluge.plugins[plugin.name] = plugin;
+ }
+
+ // Initialize quicktips so all the tooltip configs start working.
+ Ext.QuickTips.init();
+
+ deluge.client.on(
+ 'connected',
+ function (e) {
+ deluge.login.show();
+ },
+ this,
+ { single: true }
+ );
+
+ this.update = this.update.createDelegate(this);
+ this.checkConnection = this.checkConnection.createDelegate(this);
+
+ this.originalTitle = document.title;
+ },
+
+ checkConnection: function () {
+ deluge.client.web.connected({
+ success: this.onConnectionSuccess,
+ failure: this.onConnectionError,
+ scope: this,
+ });
+ },
+
+ update: function () {
+ var filters = deluge.sidebar.getFilterStates();
+ this.oldFilters = this.filters;
+ this.filters = filters;
+
+ deluge.client.web.update_ui(Deluge.Keys.Grid, filters, {
+ success: this.onUpdate,
+ failure: this.onUpdateError,
+ scope: this,
+ });
+ deluge.details.update();
+ },
+
+ onConnectionError: function (error) {
+ if (this.checking) {
+ clearTimeout(this.checking);
+ }
+ this.checking = setTimeout(this.checkConnection, 2000);
+ },
+
+ onConnectionSuccess: function (result) {
+ if (this.checking) {
+ clearTimeout(this.checking);
+ this.checking = undefined;
+ }
+ this.running = setTimeout(this.update, 2000);
+ this.update();
+ deluge.statusbar.setStatus({
+ iconCls: 'x-deluge-statusbar icon-ok',
+ text: _('Connection restored'),
+ });
+ if (!result) {
+ deluge.connectionManager.show();
+ }
+ },
+
+ onUpdateError: function (error) {
+ if (this.errorCount == 2) {
+ Ext.MessageBox.show({
+ title: _('Lost Connection'),
+ msg: _('The connection to the webserver has been lost!'),
+ buttons: Ext.MessageBox.OK,
+ icon: Ext.MessageBox.ERROR,
+ });
+ deluge.events.fire('disconnect');
+ deluge.statusbar.setStatus({
+ text: _('Lost connection to webserver'),
+ });
+ this.checking = setTimeout(this.checkConnection, 2000);
+ }
+ this.errorCount++;
+ if (this.running) {
+ clearTimeout(this.running);
+ this.running = undefined;
+ }
+ },
+
+ /**
+ * @static
+ * @private
+ * Updates the various components in the interface.
+ */
+ onUpdate: function (data) {
+ if (this.running) {
+ clearTimeout(this.running);
+ this.running = undefined;
+ }
+ if (!data['connected']) {
+ deluge.connectionManager.disconnect(true);
+ return;
+ }
+ this.running = setTimeout(this.update, 2000);
+
+ if (deluge.config.show_session_speed) {
+ document.title =
+ 'D: ' +
+ fsize_short(data['stats'].download_rate, true) +
+ ' U: ' +
+ fsize_short(data['stats'].upload_rate, true) +
+ ' - ' +
+ this.originalTitle;
+ }
+ if (Ext.areObjectsEqual(this.filters, this.oldFilters)) {
+ deluge.torrents.update(data['torrents']);
+ } else {
+ deluge.torrents.update(data['torrents'], true);
+ }
+ deluge.statusbar.update(data['stats']);
+ deluge.sidebar.update(data['filters']);
+ this.errorCount = 0;
+ },
+
+ /**
+ * @static
+ * @private
+ * Start the Deluge UI polling the server and update the interface.
+ */
+ onConnect: function () {
+ if (!this.running) {
+ this.running = setTimeout(this.update, 2000);
+ this.update();
+ }
+ deluge.client.web.get_plugins({
+ success: this.onGotPlugins,
+ scope: this,
+ });
+ },
+
+ /**
+ * @static
+ * @private
+ */
+ onDisconnect: function () {
+ this.stop();
+ },
+
+ onGotPlugins: function (plugins) {
+ Ext.each(
+ plugins.enabled_plugins,
+ function (plugin) {
+ if (deluge.plugins[plugin]) return;
+ deluge.client.web.get_plugin_resources(plugin, {
+ success: this.onGotPluginResources,
+ scope: this,
+ });
+ },
+ this
+ );
+ },
+
+ onPluginEnabled: function (pluginName) {
+ if (deluge.plugins[pluginName]) {
+ deluge.plugins[pluginName].enable();
+ } else {
+ deluge.client.web.get_plugin_resources(pluginName, {
+ success: this.onGotPluginResources,
+ scope: this,
+ });
+ }
+ },
+
+ onGotPluginResources: function (resources) {
+ var scripts = Deluge.debug
+ ? resources.debug_scripts
+ : resources.scripts;
+ Ext.each(
+ scripts,
+ function (script) {
+ Ext.ux.JSLoader({
+ url: deluge.config.base + script,
+ onLoad: this.onPluginLoaded,
+ pluginName: resources.name,
+ });
+ },
+ this
+ );
+ },
+
+ onPluginDisabled: function (pluginName) {
+ if (deluge.plugins[pluginName]) deluge.plugins[pluginName].disable();
+ },
+
+ onPluginLoaded: function (options) {
+ // This could happen if the plugin has multiple scripts
+ if (!Deluge.hasPlugin(options.pluginName)) return;
+
+ // Enable the plugin
+ plugin = Deluge.createPlugin(options.pluginName);
+ plugin.enable();
+ deluge.plugins[plugin.name] = plugin;
+ },
+
+ /**
+ * @static
+ * Stop the Deluge UI polling the server and clear the interface.
+ */
+ stop: function () {
+ if (this.running) {
+ clearTimeout(this.running);
+ this.running = undefined;
+ deluge.torrents.getStore().removeAll();
+ }
+ },
+};
+
+Ext.onReady(function (e) {
+ deluge.ui.initialize();
+});
diff --git a/deluge/ui/web/js/deluge-all/add/.order b/deluge/ui/web/js/deluge-all/add/.order
new file mode 100644
index 0000000..dbd1ab9
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/add/.order
@@ -0,0 +1 @@
++ Window.js
diff --git a/deluge/ui/web/js/deluge-all/add/AddWindow.js b/deluge/ui/web/js/deluge-all/add/AddWindow.js
new file mode 100644
index 0000000..f5f2fdf
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/add/AddWindow.js
@@ -0,0 +1,332 @@
+/**
+ * Deluge.add.AddWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.namespace('Deluge.add');
+
+// This override allows file upload buttons to contain icons
+Ext.override(Ext.ux.form.FileUploadField, {
+ onRender: function (ct, position) {
+ Ext.ux.form.FileUploadField.superclass.onRender.call(
+ this,
+ ct,
+ position
+ );
+
+ this.wrap = this.el.wrap({ cls: 'x-form-field-wrap x-form-file-wrap' });
+ this.el.addClass('x-form-file-text');
+ this.el.dom.removeAttribute('name');
+ this.createFileInput();
+
+ var btnCfg = Ext.applyIf(this.buttonCfg || {}, {
+ text: this.buttonText,
+ });
+ this.button = new Ext.Button(
+ Ext.apply(btnCfg, {
+ renderTo: this.wrap,
+ cls:
+ 'x-form-file-btn' +
+ (btnCfg.iconCls ? ' x-btn-text-icon' : ''),
+ })
+ );
+
+ if (this.buttonOnly) {
+ this.el.hide();
+ this.wrap.setWidth(this.button.getEl().getWidth());
+ }
+
+ this.bindListeners();
+ this.resizeEl = this.positionEl = this.wrap;
+ },
+});
+
+Deluge.add.AddWindow = Ext.extend(Deluge.add.Window, {
+ title: _('Add Torrents'),
+ layout: 'border',
+ width: 470,
+ height: 450,
+ bodyStyle: 'padding: 10px 5px;',
+ buttonAlign: 'right',
+ closeAction: 'hide',
+ closable: true,
+ plain: true,
+ iconCls: 'x-deluge-add-window-icon',
+
+ initComponent: function () {
+ Deluge.add.AddWindow.superclass.initComponent.call(this);
+
+ this.addButton(_('Cancel'), this.onCancelClick, this);
+ this.addButton(_('Add'), this.onAddClick, this);
+
+ this.list = new Ext.list.ListView({
+ store: new Ext.data.SimpleStore({
+ fields: [
+ { name: 'info_hash', mapping: 1 },
+ { name: 'text', mapping: 2 },
+ ],
+ id: 0,
+ }),
+ columns: [
+ {
+ id: 'torrent',
+ width: 150,
+ sortable: true,
+ dataIndex: 'text',
+ tpl: new Ext.XTemplate(
+ '<div class="x-deluge-add-torrent-name">{text:htmlEncode}</div>'
+ ),
+ },
+ ],
+ stripeRows: true,
+ singleSelect: true,
+ listeners: {
+ selectionchange: {
+ fn: this.onSelect,
+ scope: this,
+ },
+ },
+ hideHeaders: true,
+ autoExpandColumn: 'torrent',
+ height: '100%',
+ autoScroll: true,
+ });
+
+ this.add({
+ region: 'center',
+ items: [this.list],
+ border: false,
+ bbar: new Ext.Toolbar({
+ items: [
+ {
+ id: 'fileUploadForm',
+ xtype: 'form',
+ layout: 'fit',
+ baseCls: 'x-plain',
+ fileUpload: true,
+ items: [
+ {
+ buttonOnly: true,
+ xtype: 'fileuploadfield',
+ id: 'torrentFile',
+ name: 'file',
+ multiple: true,
+ buttonCfg: {
+ iconCls: 'x-deluge-add-file',
+ text: _('File'),
+ },
+ listeners: {
+ scope: this,
+ fileselected: this.onFileSelected,
+ },
+ },
+ ],
+ },
+ {
+ text: _('Url'),
+ iconCls: 'icon-add-url',
+ handler: this.onUrl,
+ scope: this,
+ },
+ {
+ text: _('Infohash'),
+ iconCls: 'icon-magnet-add',
+ hidden: true,
+ disabled: true,
+ },
+ '->',
+ {
+ text: _('Remove'),
+ iconCls: 'icon-remove',
+ handler: this.onRemove,
+ scope: this,
+ },
+ ],
+ }),
+ });
+
+ this.fileUploadForm = Ext.getCmp('fileUploadForm').getForm();
+ this.optionsPanel = this.add(new Deluge.add.OptionsPanel());
+ this.on('hide', this.onHide, this);
+ this.on('show', this.onShow, this);
+ },
+
+ clear: function () {
+ this.list.getStore().removeAll();
+ this.optionsPanel.clear();
+ // Reset upload form so handler fires when a canceled file is reselected
+ this.fileUploadForm.reset();
+ },
+
+ onAddClick: function () {
+ var torrents = [];
+ if (!this.list) return;
+ this.list.getStore().each(function (r) {
+ var id = r.get('info_hash');
+ torrents.push({
+ path: this.optionsPanel.getFilename(id),
+ options: this.optionsPanel.getOptions(id),
+ });
+ }, this);
+
+ deluge.client.web.add_torrents(torrents, {
+ success: function (result) {},
+ });
+ this.clear();
+ this.hide();
+ },
+
+ onCancelClick: function () {
+ this.clear();
+ this.hide();
+ },
+
+ onFile: function () {
+ if (!this.file) this.file = new Deluge.add.FileWindow();
+ this.file.show();
+ },
+
+ onHide: function () {
+ this.optionsPanel.setActiveTab(0);
+ this.optionsPanel.files.setDisabled(true);
+ this.optionsPanel.form.setDisabled(true);
+ },
+
+ onRemove: function () {
+ if (!this.list.getSelectionCount()) return;
+ var torrent = this.list.getSelectedRecords()[0];
+ if (!torrent) return;
+ this.list.getStore().remove(torrent);
+ this.optionsPanel.clear();
+
+ if (this.torrents && this.torrents[torrent.id])
+ delete this.torrents[torrent.id];
+ },
+
+ onSelect: function (list, selections) {
+ if (selections.length) {
+ var record = this.list.getRecord(selections[0]);
+ this.optionsPanel.setTorrent(record.get('info_hash'));
+ } else {
+ this.optionsPanel.files.setDisabled(true);
+ this.optionsPanel.form.setDisabled(true);
+ }
+ },
+
+ onShow: function () {
+ if (!this.url) {
+ this.url = new Deluge.add.UrlWindow();
+ this.url.on('beforeadd', this.onTorrentBeforeAdd, this);
+ this.url.on('add', this.onTorrentAdd, this);
+ this.url.on('addfailed', this.onTorrentAddFailed, this);
+ }
+
+ this.optionsPanel.form.getDefaults();
+ },
+
+ onFileSelected: function () {
+ if (this.fileUploadForm.isValid()) {
+ var torrentIds = [];
+ var files = this.fileUploadForm.findField('torrentFile').value;
+ var randomId = this.createTorrentId();
+ Array.prototype.forEach.call(
+ files,
+ function (file, i) {
+ // Append index for batch of unique torrentIds.
+ var torrentId = randomId + i.toString();
+ torrentIds.push(torrentId);
+ this.onTorrentBeforeAdd(torrentId, file.name);
+ }.bind(this)
+ );
+ this.fileUploadForm.submit({
+ url: deluge.config.base + 'upload',
+ waitMsg: _('Uploading your torrent...'),
+ success: this.onUploadSuccess,
+ failure: this.onUploadFailure,
+ scope: this,
+ torrentIds: torrentIds,
+ });
+ }
+ },
+
+ onUploadSuccess: function (fp, upload) {
+ if (!upload.result.success) {
+ this.clear();
+ return;
+ }
+
+ upload.result.files.forEach(
+ function (filename, i) {
+ deluge.client.web.get_torrent_info(filename, {
+ success: this.onGotInfo,
+ scope: this,
+ filename: filename,
+ torrentId: upload.options.torrentIds[i],
+ });
+ }.bind(this)
+ );
+ this.fileUploadForm.reset();
+ },
+
+ onUploadFailure: function (form, action) {
+ this.hide();
+ Ext.MessageBox.show({
+ title: _('Error'),
+ msg: _('Failed to upload torrent'),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ this.fireEvent('addfailed', this.torrentId);
+ },
+
+ onGotInfo: function (info, obj, response, request) {
+ info.filename = request.options.filename;
+ torrentId = request.options.torrentId;
+ this.onTorrentAdd(torrentId, info);
+ },
+
+ onTorrentBeforeAdd: function (torrentId, text) {
+ var store = this.list.getStore();
+ store.loadData([[torrentId, null, text]], true);
+ },
+
+ onTorrentAdd: function (torrentId, info) {
+ var r = this.list.getStore().getById(torrentId);
+ if (!info) {
+ Ext.MessageBox.show({
+ title: _('Error'),
+ msg: _('Not a valid torrent'),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ this.list.getStore().remove(r);
+ } else {
+ r.set('info_hash', info['info_hash']);
+ r.set('text', info['name']);
+ this.list.getStore().commitChanges();
+ this.optionsPanel.addTorrent(info);
+ this.list.select(r);
+ }
+ },
+
+ onTorrentAddFailed: function (torrentId) {
+ var store = this.list.getStore();
+ var torrentRecord = store.getById(torrentId);
+ if (torrentRecord) {
+ store.remove(torrentRecord);
+ }
+ },
+
+ onUrl: function (button, event) {
+ this.url.show();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/add/FilesTab.js b/deluge/ui/web/js/deluge-all/add/FilesTab.js
new file mode 100644
index 0000000..d712c02
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/add/FilesTab.js
@@ -0,0 +1,100 @@
+/**
+ * Deluge.add.FilesTab.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge.add');
+
+/**
+ * @class Deluge.add.FilesTab
+ * @extends Ext.ux.tree.TreeGrid
+ */
+Deluge.add.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, {
+ layout: 'fit',
+ title: _('Files'),
+
+ autoScroll: false,
+ animate: false,
+ border: false,
+ disabled: true,
+ rootVisible: false,
+
+ columns: [
+ {
+ header: _('Filename'),
+ width: 295,
+ dataIndex: 'filename',
+ tpl: new Ext.XTemplate('{filename:htmlEncode}'),
+ },
+ {
+ header: _('Size'),
+ width: 60,
+ dataIndex: 'size',
+ tpl: new Ext.XTemplate('{size:this.fsize}', {
+ fsize: function (v) {
+ return fsize(v);
+ },
+ }),
+ },
+ {
+ header: _('Download'),
+ width: 65,
+ dataIndex: 'download',
+ tpl: new Ext.XTemplate('{download:this.format}', {
+ format: function (v) {
+ return (
+ '<div rel="chkbox" class="x-grid3-check-col' +
+ (v ? '-on' : '') +
+ '"> </div>'
+ );
+ },
+ }),
+ },
+ ],
+
+ initComponent: function () {
+ Deluge.add.FilesTab.superclass.initComponent.call(this);
+ this.on('click', this.onNodeClick, this);
+ },
+
+ clearFiles: function () {
+ var root = this.getRootNode();
+ if (!root.hasChildNodes()) return;
+ root.cascade(function (node) {
+ if (!node.parentNode || !node.getOwnerTree()) return;
+ node.remove();
+ });
+ },
+
+ setDownload: function (node, value, suppress) {
+ node.attributes.download = value;
+ node.ui.updateColumns();
+
+ if (node.isLeaf()) {
+ if (!suppress) {
+ return this.fireEvent('fileschecked', [node], value, !value);
+ }
+ } else {
+ var nodes = [node];
+ node.cascade(function (n) {
+ n.attributes.download = value;
+ n.ui.updateColumns();
+ nodes.push(n);
+ }, this);
+ if (!suppress) {
+ return this.fireEvent('fileschecked', nodes, value, !value);
+ }
+ }
+ },
+
+ onNodeClick: function (node, e) {
+ var el = new Ext.Element(e.target);
+ if (el.getAttribute('rel') == 'chkbox') {
+ this.setDownload(node, !node.attributes.download);
+ }
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/add/Infohash.js b/deluge/ui/web/js/deluge-all/add/Infohash.js
new file mode 100644
index 0000000..0105e02
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/add/Infohash.js
@@ -0,0 +1,10 @@
+/**
+ * Deluge.add.Infohash.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Ext.deluge.add');
diff --git a/deluge/ui/web/js/deluge-all/add/OptionsPanel.js b/deluge/ui/web/js/deluge-all/add/OptionsPanel.js
new file mode 100644
index 0000000..365b001
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/add/OptionsPanel.js
@@ -0,0 +1,145 @@
+/**
+ * Deluge.add.OptionsPanel.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge.add');
+
+Deluge.add.OptionsPanel = Ext.extend(Ext.TabPanel, {
+ torrents: {},
+
+ // layout options
+ region: 'south',
+ border: false,
+ activeTab: 0,
+ height: 265,
+
+ initComponent: function () {
+ Deluge.add.OptionsPanel.superclass.initComponent.call(this);
+ this.files = this.add(new Deluge.add.FilesTab());
+ this.form = this.add(new Deluge.add.OptionsTab());
+
+ this.files.on('fileschecked', this.onFilesChecked, this);
+ },
+
+ addTorrent: function (torrent) {
+ this.torrents[torrent['info_hash']] = torrent;
+ var fileIndexes = {};
+ this.walkFileTree(
+ torrent['files_tree'],
+ function (filename, type, entry, parent) {
+ if (type != 'file') return;
+ fileIndexes[entry.index] = entry.download;
+ },
+ this
+ );
+
+ var priorities = [];
+ Ext.each(Ext.keys(fileIndexes), function (index) {
+ priorities[index] = fileIndexes[index];
+ });
+
+ var oldId = this.form.optionsManager.changeId(
+ torrent['info_hash'],
+ true
+ );
+ this.form.optionsManager.setDefault('file_priorities', priorities);
+ this.form.optionsManager.changeId(oldId, true);
+ },
+
+ clear: function () {
+ this.files.clearFiles();
+ this.form.optionsManager.resetAll();
+ },
+
+ getFilename: function (torrentId) {
+ return this.torrents[torrentId]['filename'];
+ },
+
+ getOptions: function (torrentId) {
+ var oldId = this.form.optionsManager.changeId(torrentId, true);
+ var options = this.form.optionsManager.get();
+ this.form.optionsManager.changeId(oldId, true);
+ Ext.each(options['file_priorities'], function (priority, index) {
+ options['file_priorities'][index] = priority ? 1 : 0;
+ });
+ return options;
+ },
+
+ setTorrent: function (torrentId) {
+ if (!torrentId) return;
+
+ this.torrentId = torrentId;
+ this.form.optionsManager.changeId(torrentId);
+
+ this.files.clearFiles();
+ var root = this.files.getRootNode();
+ var priorities = this.form.optionsManager.get('file_priorities');
+
+ this.form.setDisabled(false);
+
+ if (this.torrents[torrentId]['files_tree']) {
+ this.walkFileTree(
+ this.torrents[torrentId]['files_tree'],
+ function (filename, type, entry, parentNode) {
+ var node = new Ext.tree.TreeNode({
+ download: entry.index ? priorities[entry.index] : true,
+ filename: filename,
+ fileindex: entry.index,
+ leaf: type != 'dir',
+ size: entry.length,
+ });
+ parentNode.appendChild(node);
+ if (type == 'dir') return node;
+ },
+ this,
+ root
+ );
+ root.firstChild.expand();
+ this.files.setDisabled(false);
+ this.files.show();
+ } else {
+ // Files tab is empty so show options tab
+ this.form.show();
+ this.files.setDisabled(true);
+ }
+ },
+
+ walkFileTree: function (files, callback, scope, parentNode) {
+ for (var filename in files.contents) {
+ var entry = files.contents[filename];
+ var type = entry.type;
+
+ if (scope) {
+ var ret = callback.apply(scope, [
+ filename,
+ type,
+ entry,
+ parentNode,
+ ]);
+ } else {
+ var ret = callback(filename, type, entry, parentNode);
+ }
+
+ if (type == 'dir') this.walkFileTree(entry, callback, scope, ret);
+ }
+ },
+
+ onFilesChecked: function (nodes, newValue, oldValue) {
+ Ext.each(
+ nodes,
+ function (node) {
+ if (node.attributes.fileindex < 0) return;
+ var priorities =
+ this.form.optionsManager.get('file_priorities');
+ priorities[node.attributes.fileindex] = newValue;
+ this.form.optionsManager.update('file_priorities', priorities);
+ },
+ this
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/add/OptionsTab.js b/deluge/ui/web/js/deluge-all/add/OptionsTab.js
new file mode 100644
index 0000000..73a8a5c
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/add/OptionsTab.js
@@ -0,0 +1,217 @@
+/**
+ * Deluge.add.OptionsPanel.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge.add');
+
+/**
+ * @class Deluge.add.OptionsTab
+ * @extends Ext.form.FormPanel
+ */
+Deluge.add.OptionsTab = Ext.extend(Ext.form.FormPanel, {
+ title: _('Options'),
+ height: 170,
+ border: false,
+ bodyStyle: 'padding: 5px',
+ disabled: true,
+ labelWidth: 1,
+
+ initComponent: function () {
+ Deluge.add.OptionsTab.superclass.initComponent.call(this);
+
+ this.optionsManager = new Deluge.MultiOptionsManager();
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ title: _('Download Folder'),
+ border: false,
+ autoHeight: true,
+ defaultType: 'textfield',
+ labelWidth: 1,
+ fieldLabel: '',
+ style: 'padding: 5px 0; margin-bottom: 0;',
+ });
+ this.optionsManager.bind(
+ 'download_location',
+ fieldset.add({
+ fieldLabel: '',
+ name: 'download_location',
+ anchor: '95%',
+ labelSeparator: '',
+ })
+ );
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ title: _('Move Completed Folder'),
+ border: false,
+ autoHeight: true,
+ defaultType: 'togglefield',
+ labelWidth: 1,
+ fieldLabel: '',
+ style: 'padding: 5px 0; margin-bottom: 0;',
+ });
+ var field = fieldset.add({
+ fieldLabel: '',
+ name: 'move_completed_path',
+ anchor: '98%',
+ });
+ this.optionsManager.bind('move_completed', field.toggle);
+ this.optionsManager.bind('move_completed_path', field.input);
+
+ var panel = this.add({
+ border: false,
+ layout: 'column',
+ defaultType: 'fieldset',
+ });
+
+ fieldset = panel.add({
+ title: _('Bandwidth'),
+ border: false,
+ autoHeight: true,
+ bodyStyle: 'padding: 2px 5px',
+ labelWidth: 105,
+ width: 200,
+ defaultType: 'spinnerfield',
+ style: 'padding-right: 10px;',
+ });
+ this.optionsManager.bind(
+ 'max_download_speed',
+ fieldset.add({
+ fieldLabel: _('Max Down Speed'),
+ name: 'max_download_speed',
+ width: 60,
+ })
+ );
+ this.optionsManager.bind(
+ 'max_upload_speed',
+ fieldset.add({
+ fieldLabel: _('Max Up Speed'),
+ name: 'max_upload_speed',
+ width: 60,
+ })
+ );
+ this.optionsManager.bind(
+ 'max_connections',
+ fieldset.add({
+ fieldLabel: _('Max Connections'),
+ name: 'max_connections',
+ width: 60,
+ })
+ );
+ this.optionsManager.bind(
+ 'max_upload_slots',
+ fieldset.add({
+ fieldLabel: _('Max Upload Slots'),
+ name: 'max_upload_slots',
+ width: 60,
+ })
+ );
+
+ fieldset = panel.add({
+ // title: _('General'),
+ border: false,
+ autoHeight: true,
+ defaultType: 'checkbox',
+ });
+ this.optionsManager.bind(
+ 'add_paused',
+ fieldset.add({
+ name: 'add_paused',
+ boxLabel: _('Add In Paused State'),
+ fieldLabel: '',
+ labelSeparator: '',
+ })
+ );
+ this.optionsManager.bind(
+ 'prioritize_first_last_pieces',
+ fieldset.add({
+ name: 'prioritize_first_last_pieces',
+ boxLabel: _('Prioritize First/Last Pieces'),
+ fieldLabel: '',
+ labelSeparator: '',
+ })
+ );
+ this.optionsManager.bind(
+ 'sequential_download',
+ fieldset.add({
+ name: 'sequential_download',
+ boxLabel: _('Sequential Download'),
+ fieldLabel: '',
+ labelSeparator: '',
+ })
+ );
+ this.optionsManager.bind(
+ 'seed_mode',
+ fieldset.add({
+ name: 'seed_mode',
+ boxLabel: _('Skip File Hash Check'),
+ fieldLabel: '',
+ labelSeparator: '',
+ })
+ );
+ this.optionsManager.bind(
+ 'super_seeding',
+ fieldset.add({
+ name: 'super_seeding',
+ boxLabel: _('Super Seed'),
+ fieldLabel: '',
+ labelSeparator: '',
+ })
+ );
+ this.optionsManager.bind(
+ 'pre_allocate_storage',
+ fieldset.add({
+ name: 'pre_allocate_storage',
+ boxLabel: _('Preallocate Disk Space'),
+ fieldLabel: '',
+ labelSeparator: '',
+ })
+ );
+ },
+
+ getDefaults: function () {
+ var keys = [
+ 'add_paused',
+ 'pre_allocate_storage',
+ 'download_location',
+ 'max_connections_per_torrent',
+ 'max_download_speed_per_torrent',
+ 'move_completed',
+ 'move_completed_path',
+ 'max_upload_slots_per_torrent',
+ 'max_upload_speed_per_torrent',
+ 'prioritize_first_last_pieces',
+ 'sequential_download',
+ ];
+
+ deluge.client.core.get_config_values(keys, {
+ success: function (config) {
+ var options = {
+ file_priorities: [],
+ add_paused: config.add_paused,
+ sequential_download: config.sequential_download,
+ pre_allocate_storage: config.pre_allocate_storage,
+ download_location: config.download_location,
+ move_completed: config.move_completed,
+ move_completed_path: config.move_completed_path,
+ max_connections: config.max_connections_per_torrent,
+ max_download_speed: config.max_download_speed_per_torrent,
+ max_upload_slots: config.max_upload_slots_per_torrent,
+ max_upload_speed: config.max_upload_speed_per_torrent,
+ prioritize_first_last_pieces:
+ config.prioritize_first_last_pieces,
+ seed_mode: false,
+ super_seeding: false,
+ };
+ this.optionsManager.options = options;
+ this.optionsManager.resetAll();
+ },
+ scope: this,
+ });
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/add/UrlWindow.js b/deluge/ui/web/js/deluge-all/add/UrlWindow.js
new file mode 100644
index 0000000..caf2250
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/add/UrlWindow.js
@@ -0,0 +1,112 @@
+/**
+ * Deluge.add.UrlWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.namespace('Deluge.add');
+Deluge.add.UrlWindow = Ext.extend(Deluge.add.Window, {
+ title: _('Add from Url'),
+ modal: true,
+ plain: true,
+ layout: 'fit',
+ width: 350,
+ height: 155,
+
+ buttonAlign: 'center',
+ closeAction: 'hide',
+ bodyStyle: 'padding: 10px 5px;',
+ iconCls: 'x-deluge-add-url-window-icon',
+
+ initComponent: function () {
+ Deluge.add.UrlWindow.superclass.initComponent.call(this);
+ this.addButton(_('Add'), this.onAddClick, this);
+
+ var form = this.add({
+ xtype: 'form',
+ defaultType: 'textfield',
+ baseCls: 'x-plain',
+ labelWidth: 55,
+ });
+
+ this.urlField = form.add({
+ fieldLabel: _('Url'),
+ id: 'url',
+ name: 'url',
+ width: '97%',
+ });
+ this.urlField.on('specialkey', this.onAdd, this);
+
+ this.cookieField = form.add({
+ fieldLabel: _('Cookies'),
+ id: 'cookies',
+ name: 'cookies',
+ width: '97%',
+ });
+ this.cookieField.on('specialkey', this.onAdd, this);
+ },
+
+ onAddClick: function (field, e) {
+ if (
+ (field.id == 'url' || field.id == 'cookies') &&
+ e.getKey() != e.ENTER
+ )
+ return;
+
+ var field = this.urlField;
+ var url = field.getValue();
+ var cookies = this.cookieField.getValue();
+ var torrentId = this.createTorrentId();
+
+ if (url.indexOf('magnet:?') == 0 && url.indexOf('xt=urn:btih') > -1) {
+ deluge.client.web.get_magnet_info(url, {
+ success: this.onGotInfo,
+ scope: this,
+ filename: url,
+ torrentId: torrentId,
+ });
+ } else {
+ deluge.client.web.download_torrent_from_url(url, cookies, {
+ success: this.onDownload,
+ failure: this.onDownloadFailed,
+ scope: this,
+ torrentId: torrentId,
+ });
+ }
+
+ this.hide();
+ this.urlField.setValue('');
+ this.fireEvent('beforeadd', torrentId, url);
+ },
+
+ onDownload: function (filename, obj, resp, req) {
+ deluge.client.web.get_torrent_info(filename, {
+ success: this.onGotInfo,
+ failure: this.onDownloadFailed,
+ scope: this,
+ filename: filename,
+ torrentId: req.options.torrentId,
+ });
+ },
+
+ onDownloadFailed: function (obj, resp, req) {
+ Ext.MessageBox.show({
+ title: _('Error'),
+ msg: _('Failed to download torrent'),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ this.fireEvent('addfailed', req.options.torrentId);
+ },
+
+ onGotInfo: function (info, obj, response, request) {
+ info['filename'] = request.options.filename;
+ this.fireEvent('add', request.options.torrentId, info);
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/add/Window.js b/deluge/ui/web/js/deluge-all/add/Window.js
new file mode 100644
index 0000000..20851e7
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/add/Window.js
@@ -0,0 +1,29 @@
+/**
+ * Deluge.add.Window.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge.add');
+
+/**
+ * @class Deluge.add.Window
+ * @extends Ext.Window
+ * Base class for an add Window
+ */
+Deluge.add.Window = Ext.extend(Ext.Window, {
+ initComponent: function () {
+ Deluge.add.Window.superclass.initComponent.call(this);
+ this.addEvents('beforeadd', 'add', 'addfailed');
+ },
+
+ /**
+ * Create an id for the torrent before we have any info about it.
+ */
+ createTorrentId: function () {
+ return new Date().getTime().toString();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/data/.order b/deluge/ui/web/js/deluge-all/data/.order
new file mode 100644
index 0000000..f9befc4
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/data/.order
@@ -0,0 +1 @@
++ SortTypes.js
diff --git a/deluge/ui/web/js/deluge-all/data/PeerRecord.js b/deluge/ui/web/js/deluge-all/data/PeerRecord.js
new file mode 100644
index 0000000..7f33769
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/data/PeerRecord.js
@@ -0,0 +1,53 @@
+/**
+ * Deluge.data.PeerRecord.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.data');
+
+/**
+ * Deluge.data.Peer record
+ *
+ * @author Damien Churchill <damoxc@gmail.com>
+ * @version 1.3
+ *
+ * @class Deluge.data.Peer
+ * @extends Ext.data.Record
+ * @constructor
+ * @param {Object} data The peer data
+ */
+Deluge.data.Peer = Ext.data.Record.create([
+ {
+ name: 'country',
+ type: 'string',
+ },
+ {
+ name: 'ip',
+ type: 'string',
+ sortType: Deluge.data.SortTypes.asIPAddress,
+ },
+ {
+ name: 'client',
+ type: 'string',
+ },
+ {
+ name: 'progress',
+ type: 'float',
+ },
+ {
+ name: 'down_speed',
+ type: 'int',
+ },
+ {
+ name: 'up_speed',
+ type: 'int',
+ },
+ {
+ name: 'seed',
+ type: 'int',
+ },
+]);
diff --git a/deluge/ui/web/js/deluge-all/data/SortTypes.js b/deluge/ui/web/js/deluge-all/data/SortTypes.js
new file mode 100644
index 0000000..ac915d1
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/data/SortTypes.js
@@ -0,0 +1,37 @@
+/**
+ * Deluge.data.SortTypes.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.data');
+
+/**
+ * Common sort functions that can be used for data Stores.
+ *
+ * @author Damien Churchill <damoxc@gmail.com>
+ * @version 1.3
+ *
+ * @class Deluge.data.SortTypes
+ * @singleton
+ */
+Deluge.data.SortTypes = {
+ // prettier-ignore
+ asIPAddress: function(value) {
+ var d = value.match(
+ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\:(\d+)/
+ );
+ return ((+d[1] * 256 + (+d[2])) * 256 + (+d[3])) * 256 + (+d[4]);
+ },
+
+ asQueuePosition: function (value) {
+ return value > -1 ? value : Number.MAX_VALUE;
+ },
+
+ asName: function (value) {
+ return String(value).toLowerCase();
+ },
+};
diff --git a/deluge/ui/web/js/deluge-all/data/TorrentRecord.js b/deluge/ui/web/js/deluge-all/data/TorrentRecord.js
new file mode 100644
index 0000000..e510234
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/data/TorrentRecord.js
@@ -0,0 +1,121 @@
+/**
+ * Deluge.data.TorrentRecord.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.data');
+
+/**
+ * Deluge.data.Torrent record
+ *
+ * @author Damien Churchill <damoxc@gmail.com>
+ * @version 1.3
+ *
+ * @class Deluge.data.Torrent
+ * @extends Ext.data.Record
+ * @constructor
+ * @param {Object} data The torrents data
+ */
+Deluge.data.Torrent = Ext.data.Record.create([
+ {
+ name: 'queue',
+ type: 'int',
+ },
+ {
+ name: 'name',
+ type: 'string',
+ sortType: Deluge.data.SortTypes.asName,
+ },
+ {
+ name: 'total_wanted',
+ type: 'int',
+ },
+ {
+ name: 'state',
+ type: 'string',
+ },
+ {
+ name: 'progress',
+ type: 'int',
+ },
+ {
+ name: 'num_seeds',
+ type: 'int',
+ },
+ {
+ name: 'total_seeds',
+ type: 'int',
+ },
+ {
+ name: 'num_peers',
+ type: 'int',
+ },
+ {
+ name: 'total_peers',
+ type: 'int',
+ },
+ {
+ name: 'download_payload_rate',
+ type: 'int',
+ },
+ {
+ name: 'upload_payload_rate',
+ type: 'int',
+ },
+ {
+ name: 'eta',
+ type: 'int',
+ },
+ {
+ name: 'ratio',
+ type: 'float',
+ },
+ {
+ name: 'distributed_copies',
+ type: 'float',
+ },
+ {
+ name: 'time_added',
+ type: 'int',
+ },
+ {
+ name: 'tracker_host',
+ type: 'string',
+ },
+ {
+ name: 'save_path',
+ type: 'string',
+ },
+ {
+ name: 'total_done',
+ type: 'int',
+ },
+ {
+ name: 'total_uploaded',
+ type: 'int',
+ },
+ {
+ name: 'total_remaining',
+ type: 'int',
+ },
+ {
+ name: 'max_download_speed',
+ type: 'int',
+ },
+ {
+ name: 'max_upload_speed',
+ type: 'int',
+ },
+ {
+ name: 'seeds_peers_ratio',
+ type: 'float',
+ },
+ {
+ name: 'time_since_transfer',
+ type: 'int',
+ },
+]);
diff --git a/deluge/ui/web/js/deluge-all/details/DetailsPanel.js b/deluge/ui/web/js/deluge-all/details/DetailsPanel.js
new file mode 100644
index 0000000..3f28b25
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/details/DetailsPanel.js
@@ -0,0 +1,81 @@
+/**
+ * Deluge.details.DetailsPanel.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.details');
+
+/**
+ * @class Deluge.details.DetailsPanel
+ */
+Deluge.details.DetailsPanel = Ext.extend(Ext.TabPanel, {
+ id: 'torrentDetails',
+ activeTab: 0,
+
+ initComponent: function () {
+ Deluge.details.DetailsPanel.superclass.initComponent.call(this);
+ this.add(new Deluge.details.StatusTab());
+ this.add(new Deluge.details.DetailsTab());
+ this.add(new Deluge.details.FilesTab());
+ this.add(new Deluge.details.PeersTab());
+ this.add(new Deluge.details.OptionsTab());
+ },
+
+ clear: function () {
+ this.items.each(function (panel) {
+ if (panel.clear) {
+ panel.clear.defer(100, panel);
+ panel.disable();
+ }
+ });
+ },
+
+ update: function (tab) {
+ var torrent = deluge.torrents.getSelected();
+ if (!torrent) {
+ this.clear();
+ return;
+ }
+
+ this.items.each(function (tab) {
+ if (tab.disabled) tab.enable();
+ });
+
+ tab = tab || this.getActiveTab();
+ if (tab.update) tab.update(torrent.id);
+ },
+
+ /* Event Handlers */
+
+ // We need to add the events in onRender since Deluge.Torrents has not been created yet.
+ onRender: function (ct, position) {
+ Deluge.details.DetailsPanel.superclass.onRender.call(
+ this,
+ ct,
+ position
+ );
+ deluge.events.on('disconnect', this.clear, this);
+ deluge.torrents.on('rowclick', this.onTorrentsClick, this);
+ this.on('tabchange', this.onTabChange, this);
+
+ deluge.torrents.getSelectionModel().on(
+ 'selectionchange',
+ function (selModel) {
+ if (!selModel.hasSelection()) this.clear();
+ },
+ this
+ );
+ },
+
+ onTabChange: function (panel, tab) {
+ this.update(tab);
+ },
+
+ onTorrentsClick: function (grid, rowIndex, e) {
+ this.update();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/details/DetailsTab.js b/deluge/ui/web/js/deluge-all/details/DetailsTab.js
new file mode 100644
index 0000000..f1da178
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/details/DetailsTab.js
@@ -0,0 +1,100 @@
+/**
+ * Deluge.Details.Details.js
+ * The details tab displayed in the details panel.
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Deluge.details.DetailsTab = Ext.extend(Ext.Panel, {
+ title: _('Details'),
+
+ fields: {},
+ autoScroll: true,
+ queuedItems: {},
+
+ oldData: {},
+
+ initComponent: function () {
+ Deluge.details.DetailsTab.superclass.initComponent.call(this);
+ this.addItem('torrent_name', _('Name:'));
+ this.addItem('hash', _('Hash:'));
+ this.addItem('path', _('Download Folder:'));
+ this.addItem('size', _('Total Size:'));
+ this.addItem('files', _('Total Files:'));
+ this.addItem('comment', _('Comment:'));
+ this.addItem('status', _('Status:'));
+ this.addItem('tracker', _('Tracker:'));
+ this.addItem('creator', _('Created By:'));
+ },
+
+ onRender: function (ct, position) {
+ Deluge.details.DetailsTab.superclass.onRender.call(this, ct, position);
+ this.body.setStyle('padding', '10px');
+ this.dl = Ext.DomHelper.append(this.body, { tag: 'dl' }, true);
+
+ for (var id in this.queuedItems) {
+ this.doAddItem(id, this.queuedItems[id]);
+ }
+ },
+
+ addItem: function (id, label) {
+ if (!this.rendered) {
+ this.queuedItems[id] = label;
+ } else {
+ this.doAddItem(id, label);
+ }
+ },
+
+ // private
+ doAddItem: function (id, label) {
+ Ext.DomHelper.append(this.dl, { tag: 'dt', cls: id, html: label });
+ this.fields[id] = Ext.DomHelper.append(
+ this.dl,
+ { tag: 'dd', cls: id, html: '' },
+ true
+ );
+ },
+
+ clear: function () {
+ if (!this.fields) return;
+ for (var k in this.fields) {
+ this.fields[k].dom.innerHTML = '';
+ }
+ this.oldData = {};
+ },
+
+ update: function (torrentId) {
+ deluge.client.web.get_torrent_status(torrentId, Deluge.Keys.Details, {
+ success: this.onRequestComplete,
+ scope: this,
+ torrentId: torrentId,
+ });
+ },
+
+ onRequestComplete: function (torrent, request, response, options) {
+ var data = {
+ torrent_name: torrent.name,
+ hash: options.options.torrentId,
+ path: torrent.download_location,
+ size: fsize(torrent.total_size),
+ files: torrent.num_files,
+ status: torrent.message,
+ tracker: torrent.tracker_host,
+ comment: torrent.comment,
+ creator: torrent.creator,
+ };
+
+ for (var field in this.fields) {
+ if (!Ext.isDefined(data[field])) continue; // This is a field we are not responsible for.
+ if (data[field] == this.oldData[field]) continue;
+ this.fields[field].dom.innerHTML = Ext.util.Format.htmlEncode(
+ data[field]
+ );
+ }
+ this.oldData = data;
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/details/FilesTab.js b/deluge/ui/web/js/deluge-all/details/FilesTab.js
new file mode 100644
index 0000000..36ef968
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/details/FilesTab.js
@@ -0,0 +1,236 @@
+/**
+ * Deluge.details.FilesTab.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, {
+ title: _('Files'),
+
+ rootVisible: false,
+
+ columns: [
+ {
+ header: _('Filename'),
+ width: 330,
+ dataIndex: 'filename',
+ tpl: new Ext.XTemplate('{filename:htmlEncode}'),
+ },
+ {
+ header: _('Size'),
+ width: 150,
+ dataIndex: 'size',
+ tpl: new Ext.XTemplate('{size:this.fsize}', {
+ fsize: function (v) {
+ return fsize(v);
+ },
+ }),
+ },
+ {
+ xtype: 'tgrendercolumn',
+ header: _('Progress'),
+ width: 150,
+ dataIndex: 'progress',
+ renderer: function (v) {
+ var progress = v * 100;
+ return Deluge.progressBar(
+ progress,
+ this.col.width,
+ progress.toFixed(2) + '%',
+ 0
+ );
+ },
+ },
+ {
+ header: _('Priority'),
+ width: 150,
+ dataIndex: 'priority',
+ tpl: new Ext.XTemplate(
+ '<tpl if="!isNaN(priority)">' +
+ '<div class="{priority:this.getClass}">' +
+ '{priority:this.getName}' +
+ '</div></tpl>',
+ {
+ getClass: function (v) {
+ return FILE_PRIORITY_CSS[v];
+ },
+
+ getName: function (v) {
+ return _(FILE_PRIORITY[v]);
+ },
+ }
+ ),
+ },
+ ],
+
+ selModel: new Ext.tree.MultiSelectionModel(),
+
+ initComponent: function () {
+ Deluge.details.FilesTab.superclass.initComponent.call(this);
+ this.setRootNode(new Ext.tree.TreeNode({ text: _('Files') }));
+ },
+
+ clear: function () {
+ var root = this.getRootNode();
+ if (!root.hasChildNodes()) return;
+ root.cascade(function (node) {
+ var parentNode = node.parentNode;
+ if (!parentNode) return;
+ if (!parentNode.ownerTree) return;
+ parentNode.removeChild(node);
+ });
+ },
+
+ createFileTree: function (files) {
+ function walk(files, parentNode) {
+ for (var file in files.contents) {
+ var item = files.contents[file];
+ if (item.type == 'dir') {
+ walk(
+ item,
+ parentNode.appendChild(
+ new Ext.tree.TreeNode({
+ text: file,
+ filename: file,
+ size: item.size,
+ progress: item.progress,
+ priority: item.priority,
+ })
+ )
+ );
+ } else {
+ parentNode.appendChild(
+ new Ext.tree.TreeNode({
+ text: file,
+ filename: file,
+ fileIndex: item.index,
+ size: item.size,
+ progress: item.progress,
+ priority: item.priority,
+ leaf: true,
+ iconCls: 'x-deluge-file',
+ uiProvider: Ext.ux.tree.TreeGridNodeUI,
+ })
+ );
+ }
+ }
+ }
+ var root = this.getRootNode();
+ walk(files, root);
+ root.firstChild.expand();
+ },
+
+ update: function (torrentId) {
+ if (this.torrentId != torrentId) {
+ this.clear();
+ this.torrentId = torrentId;
+ }
+
+ deluge.client.web.get_torrent_files(torrentId, {
+ success: this.onRequestComplete,
+ scope: this,
+ torrentId: torrentId,
+ });
+ },
+
+ updateFileTree: function (files) {
+ function walk(files, parentNode) {
+ for (var file in files.contents) {
+ var item = files.contents[file];
+ var node = parentNode.findChild('filename', file);
+ node.attributes.size = item.size;
+ node.attributes.progress = item.progress;
+ node.attributes.priority = item.priority;
+ node.ui.updateColumns();
+ if (item.type == 'dir') {
+ walk(item, node);
+ }
+ }
+ }
+ walk(files, this.getRootNode());
+ },
+
+ onRender: function (ct, position) {
+ Deluge.details.FilesTab.superclass.onRender.call(this, ct, position);
+ deluge.menus.filePriorities.on('itemclick', this.onItemClick, this);
+ this.on('contextmenu', this.onContextMenu, this);
+ this.sorter = new Ext.tree.TreeSorter(this, {
+ folderSort: true,
+ });
+ },
+
+ onContextMenu: function (node, e) {
+ e.stopEvent();
+ var selModel = this.getSelectionModel();
+ if (selModel.getSelectedNodes().length < 2) {
+ selModel.clearSelections();
+ node.select();
+ }
+ deluge.menus.filePriorities.showAt(e.getPoint());
+ },
+
+ onItemClick: function (baseItem, e) {
+ switch (baseItem.id) {
+ case 'expandAll':
+ this.expandAll();
+ break;
+ default:
+ var indexes = {};
+ var walk = function (node) {
+ if (Ext.isEmpty(node.attributes.fileIndex)) return;
+ indexes[node.attributes.fileIndex] =
+ node.attributes.priority;
+ };
+ this.getRootNode().cascade(walk);
+
+ var nodes = this.getSelectionModel().getSelectedNodes();
+ Ext.each(nodes, function (node) {
+ if (!node.isLeaf()) {
+ var setPriorities = function (node) {
+ if (Ext.isEmpty(node.attributes.fileIndex)) return;
+ indexes[node.attributes.fileIndex] =
+ baseItem.filePriority;
+ };
+ node.cascade(setPriorities);
+ } else if (!Ext.isEmpty(node.attributes.fileIndex)) {
+ indexes[node.attributes.fileIndex] =
+ baseItem.filePriority;
+ return;
+ }
+ });
+
+ var priorities = new Array(Ext.keys(indexes).length);
+ for (var index in indexes) {
+ priorities[index] = indexes[index];
+ }
+
+ deluge.client.core.set_torrent_options(
+ [this.torrentId],
+ { file_priorities: priorities },
+ {
+ success: function () {
+ Ext.each(nodes, function (node) {
+ node.attributes.priority =
+ baseItem.filePriority;
+ node.ui.updateColumns();
+ });
+ },
+ scope: this,
+ }
+ );
+ break;
+ }
+ },
+
+ onRequestComplete: function (files, options) {
+ if (!this.getRootNode().hasChildNodes()) {
+ this.createFileTree(files);
+ } else {
+ this.updateFileTree(files);
+ }
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/details/OptionsTab.js b/deluge/ui/web/js/deluge-all/details/OptionsTab.js
new file mode 100644
index 0000000..f8a08be
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/details/OptionsTab.js
@@ -0,0 +1,417 @@
+/**
+ * Deluge.details.OptionsTab.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ autoScroll: true,
+ bodyStyle: 'padding: 5px;',
+ border: false,
+ cls: 'x-deluge-options',
+ defaults: {
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ },
+ deferredRender: false,
+ layout: 'column',
+ title: _('Options'),
+ },
+ config
+ );
+ Deluge.details.OptionsTab.superclass.constructor.call(this, config);
+ },
+
+ initComponent: function () {
+ Deluge.details.OptionsTab.superclass.initComponent.call(this);
+
+ (this.fieldsets = {}), (this.fields = {});
+ this.optionsManager = new Deluge.MultiOptionsManager({
+ options: {
+ max_download_speed: -1,
+ max_upload_speed: -1,
+ max_connections: -1,
+ max_upload_slots: -1,
+ auto_managed: false,
+ stop_at_ratio: false,
+ stop_ratio: 2.0,
+ remove_at_ratio: false,
+ move_completed: false,
+ move_completed_path: '',
+ private: false,
+ prioritize_first_last: false,
+ super_seeding: false,
+ },
+ });
+
+ /*
+ * Bandwidth Options
+ */
+ this.fieldsets.bandwidth = this.add({
+ xtype: 'fieldset',
+ defaultType: 'spinnerfield',
+ bodyStyle: 'padding: 5px',
+
+ layout: 'table',
+ layoutConfig: { columns: 3 },
+ labelWidth: 150,
+
+ style: 'margin-left: 10px; margin-right: 5px; padding: 5px',
+ title: _('Bandwidth'),
+ width: 250,
+ });
+
+ /*
+ * Max Download Speed
+ */
+ this.fieldsets.bandwidth.add({
+ xtype: 'label',
+ text: _('Max Download Speed:'),
+ forId: 'max_download_speed',
+ cls: 'x-deluge-options-label',
+ });
+ this.fields.max_download_speed = this.fieldsets.bandwidth.add({
+ id: 'max_download_speed',
+ name: 'max_download_speed',
+ width: 70,
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 1,
+ minValue: -1,
+ maxValue: 9999999,
+ },
+ });
+ this.fieldsets.bandwidth.add({
+ xtype: 'label',
+ text: _('KiB/s'),
+ style: 'margin-left: 10px',
+ });
+
+ /*
+ * Max Upload Speed
+ */
+ this.fieldsets.bandwidth.add({
+ xtype: 'label',
+ text: _('Max Upload Speed:'),
+ forId: 'max_upload_speed',
+ cls: 'x-deluge-options-label',
+ });
+ this.fields.max_upload_speed = this.fieldsets.bandwidth.add({
+ id: 'max_upload_speed',
+ name: 'max_upload_speed',
+ width: 70,
+ value: -1,
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 1,
+ minValue: -1,
+ maxValue: 9999999,
+ },
+ });
+ this.fieldsets.bandwidth.add({
+ xtype: 'label',
+ text: _('KiB/s'),
+ style: 'margin-left: 10px',
+ });
+
+ /*
+ * Max Connections
+ */
+ this.fieldsets.bandwidth.add({
+ xtype: 'label',
+ text: _('Max Connections:'),
+ forId: 'max_connections',
+ cls: 'x-deluge-options-label',
+ });
+ this.fields.max_connections = this.fieldsets.bandwidth.add({
+ id: 'max_connections',
+ name: 'max_connections',
+ width: 70,
+ value: -1,
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 99999,
+ },
+ colspan: 2,
+ });
+
+ /*
+ * Max Upload Slots
+ */
+ this.fieldsets.bandwidth.add({
+ xtype: 'label',
+ text: _('Max Upload Slots:'),
+ forId: 'max_upload_slots',
+ cls: 'x-deluge-options-label',
+ });
+ this.fields.max_upload_slots = this.fieldsets.bandwidth.add({
+ id: 'max_upload_slots',
+ name: 'max_upload_slots',
+ width: 70,
+ value: -1,
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 99999,
+ },
+ colspan: 2,
+ });
+
+ /*
+ * Queue Options
+ */
+ this.fieldsets.queue = this.add({
+ xtype: 'fieldset',
+ title: _('Queue'),
+ style: 'margin-left: 5px; margin-right: 5px; padding: 5px',
+ width: 210,
+
+ layout: 'table',
+ layoutConfig: { columns: 2 },
+ labelWidth: 0,
+
+ defaults: {
+ fieldLabel: '',
+ labelSeparator: '',
+ },
+ });
+
+ this.fields.auto_managed = this.fieldsets.queue.add({
+ xtype: 'checkbox',
+ fieldLabel: '',
+ labelSeparator: '',
+ name: 'is_auto_managed',
+ boxLabel: _('Auto Managed'),
+ width: 200,
+ colspan: 2,
+ });
+
+ this.fields.stop_at_ratio = this.fieldsets.queue.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ id: 'stop_at_ratio',
+ width: 120,
+ boxLabel: _('Stop seed at ratio:'),
+ handler: this.onStopRatioChecked,
+ scope: this,
+ });
+
+ this.fields.stop_ratio = this.fieldsets.queue.add({
+ xtype: 'spinnerfield',
+ id: 'stop_ratio',
+ name: 'stop_ratio',
+ disabled: true,
+ width: 50,
+ value: 2.0,
+ strategy: {
+ xtype: 'number',
+ minValue: -1,
+ maxValue: 99999,
+ incrementValue: 0.1,
+ alternateIncrementValue: 1,
+ decimalPrecision: 1,
+ },
+ });
+
+ this.fields.remove_at_ratio = this.fieldsets.queue.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ id: 'remove_at_ratio',
+ ctCls: 'x-deluge-indent-checkbox',
+ bodyStyle: 'padding-left: 10px',
+ boxLabel: _('Remove at ratio'),
+ disabled: true,
+ colspan: 2,
+ });
+
+ this.fields.move_completed = this.fieldsets.queue.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ id: 'move_completed',
+ boxLabel: _('Move Completed:'),
+ colspan: 2,
+ handler: this.onMoveCompletedChecked,
+ scope: this,
+ });
+
+ this.fields.move_completed_path = this.fieldsets.queue.add({
+ xtype: 'textfield',
+ fieldLabel: '',
+ id: 'move_completed_path',
+ colspan: 3,
+ bodyStyle: 'margin-left: 20px',
+ width: 180,
+ disabled: true,
+ });
+
+ /*
+ * General Options
+ */
+ this.rightColumn = this.add({
+ border: false,
+ autoHeight: true,
+ style: 'margin-left: 5px',
+ width: 210,
+ });
+
+ this.fieldsets.general = this.rightColumn.add({
+ xtype: 'fieldset',
+ autoHeight: true,
+ defaultType: 'checkbox',
+ title: _('General'),
+ layout: 'form',
+ });
+
+ this.fields['private'] = this.fieldsets.general.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('Private'),
+ id: 'private',
+ disabled: true,
+ });
+
+ this.fields.prioritize_first_last = this.fieldsets.general.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('Prioritize First/Last'),
+ id: 'prioritize_first_last',
+ });
+
+ this.fields.super_seeding = this.fieldsets.general.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('Super Seeding'),
+ id: 'super_seeding',
+ });
+
+ // Bind the fields so the options manager can manage them.
+ for (var id in this.fields) {
+ this.optionsManager.bind(id, this.fields[id]);
+ }
+
+ /*
+ * Buttons
+ */
+ this.buttonPanel = this.rightColumn.add({
+ layout: 'hbox',
+ xtype: 'panel',
+ border: false,
+ });
+
+ /*
+ * Edit Trackers button
+ */
+ this.buttonPanel.add({
+ id: 'edit_trackers',
+ xtype: 'button',
+ text: _('Edit Trackers'),
+ cls: 'x-btn-text-icon',
+ iconCls: 'x-deluge-edit-trackers',
+ border: false,
+ width: 100,
+ handler: this.onEditTrackers,
+ scope: this,
+ });
+
+ /*
+ * Apply button
+ */
+ this.buttonPanel.add({
+ id: 'apply',
+ xtype: 'button',
+ text: _('Apply'),
+ style: 'margin-left: 10px;',
+ border: false,
+ width: 100,
+ handler: this.onApply,
+ scope: this,
+ });
+ },
+
+ onRender: function (ct, position) {
+ Deluge.details.OptionsTab.superclass.onRender.call(this, ct, position);
+
+ // This is another hack I think, so keep an eye out here when upgrading.
+ this.layout = new Ext.layout.ColumnLayout();
+ this.layout.setContainer(this);
+ this.doLayout();
+ },
+
+ clear: function () {
+ if (this.torrentId == null) return;
+ this.torrentId = null;
+ this.optionsManager.changeId(null);
+ },
+
+ reset: function () {
+ if (this.torrentId) this.optionsManager.reset();
+ },
+
+ update: function (torrentId) {
+ if (this.torrentId && !torrentId) this.clear(); // we want to clear the pane if we get a null torrent torrentIds
+
+ if (!torrentId) return; // We do not care about null torrentIds.
+
+ if (this.torrentId != torrentId) {
+ this.torrentId = torrentId;
+ this.optionsManager.changeId(torrentId);
+ }
+ deluge.client.web.get_torrent_status(torrentId, Deluge.Keys.Options, {
+ success: this.onRequestComplete,
+ scope: this,
+ });
+ },
+
+ onApply: function () {
+ var changed = this.optionsManager.getDirty();
+ deluge.client.core.set_torrent_options([this.torrentId], changed, {
+ success: function () {
+ this.optionsManager.commit();
+ },
+ scope: this,
+ });
+ },
+
+ onEditTrackers: function () {
+ deluge.editTrackers.show();
+ },
+
+ onMoveCompletedChecked: function (checkbox, checked) {
+ this.fields.move_completed_path.setDisabled(!checked);
+
+ if (!checked) return;
+ this.fields.move_completed_path.focus();
+ },
+
+ onStopRatioChecked: function (checkbox, checked) {
+ this.fields.remove_at_ratio.setDisabled(!checked);
+ this.fields.stop_ratio.setDisabled(!checked);
+ },
+
+ onRequestComplete: function (torrent, options) {
+ this.fields['private'].setValue(torrent['private']);
+ this.fields['private'].setDisabled(true);
+ delete torrent['private'];
+ torrent['auto_managed'] = torrent['is_auto_managed'];
+ torrent['prioritize_first_last_pieces'] =
+ torrent['prioritize_first_last'];
+ this.optionsManager.setDefault(torrent);
+ var stop_at_ratio = this.optionsManager.get('stop_at_ratio');
+ this.fields.remove_at_ratio.setDisabled(!stop_at_ratio);
+ this.fields.stop_ratio.setDisabled(!stop_at_ratio);
+ this.fields.move_completed_path.setDisabled(
+ !this.optionsManager.get('move_completed')
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/details/PeersTab.js b/deluge/ui/web/js/deluge-all/details/PeersTab.js
new file mode 100644
index 0000000..a191963
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/details/PeersTab.js
@@ -0,0 +1,166 @@
+/**
+ * Deluge.details.PeersTab.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+(function () {
+ function flagRenderer(value) {
+ if (!value.replace(' ', '').replace(' ', '')) {
+ return '';
+ }
+ return String.format(
+ '<img alt="{1}" title="{1}" src="{0}flag/{1}" />',
+ deluge.config.base,
+ value
+ );
+ }
+ function peerAddressRenderer(value, p, record) {
+ var seed =
+ record.data['seed'] == 1024 ? 'x-deluge-seed' : 'x-deluge-peer';
+ // Modify display of IPv6 to include brackets
+ var peer_ip = value.split(':');
+ if (peer_ip.length > 2) {
+ var port = peer_ip.pop();
+ var ip = peer_ip.join(':');
+ value = '[' + ip + ']:' + port;
+ }
+ return String.format('<div class="{0}">{1}</div>', seed, value);
+ }
+ function peerProgressRenderer(value) {
+ var progress = (value * 100).toFixed(0);
+ return Deluge.progressBar(progress, this.width - 8, progress + '%');
+ }
+
+ Deluge.details.PeersTab = Ext.extend(Ext.grid.GridPanel, {
+ // fast way to figure out if we have a peer already.
+ peers: {},
+
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ title: _('Peers'),
+ cls: 'x-deluge-peers',
+ store: new Ext.data.Store({
+ reader: new Ext.data.JsonReader(
+ {
+ idProperty: 'ip',
+ root: 'peers',
+ },
+ Deluge.data.Peer
+ ),
+ }),
+ columns: [
+ {
+ header: '&nbsp;',
+ width: 30,
+ sortable: true,
+ renderer: flagRenderer,
+ dataIndex: 'country',
+ },
+ {
+ header: _('Address'),
+ width: 125,
+ sortable: true,
+ renderer: peerAddressRenderer,
+ dataIndex: 'ip',
+ },
+ {
+ header: _('Client'),
+ width: 125,
+ sortable: true,
+ renderer: 'htmlEncode',
+ dataIndex: 'client',
+ },
+ {
+ header: _('Progress'),
+ width: 150,
+ sortable: true,
+ renderer: peerProgressRenderer,
+ dataIndex: 'progress',
+ },
+ {
+ header: _('Down Speed'),
+ width: 100,
+ sortable: true,
+ renderer: fspeed,
+ dataIndex: 'down_speed',
+ },
+ {
+ header: _('Up Speed'),
+ width: 100,
+ sortable: true,
+ renderer: fspeed,
+ dataIndex: 'up_speed',
+ },
+ ],
+ stripeRows: true,
+ deferredRender: false,
+ autoScroll: true,
+ },
+ config
+ );
+ Deluge.details.PeersTab.superclass.constructor.call(this, config);
+ },
+
+ clear: function () {
+ this.getStore().removeAll();
+ this.peers = {};
+ },
+
+ update: function (torrentId) {
+ deluge.client.web.get_torrent_status(torrentId, Deluge.Keys.Peers, {
+ success: this.onRequestComplete,
+ scope: this,
+ });
+ },
+
+ onRequestComplete: function (torrent, options) {
+ if (!torrent) return;
+
+ var store = this.getStore();
+ var newPeers = [];
+ var addresses = {};
+
+ // Go through the peers updating and creating peer records
+ Ext.each(
+ torrent.peers,
+ function (peer) {
+ if (this.peers[peer.ip]) {
+ var record = store.getById(peer.ip);
+ record.beginEdit();
+ for (var k in peer) {
+ if (record.get(k) != peer[k]) {
+ record.set(k, peer[k]);
+ }
+ }
+ record.endEdit();
+ } else {
+ this.peers[peer.ip] = 1;
+ newPeers.push(new Deluge.data.Peer(peer, peer.ip));
+ }
+ addresses[peer.ip] = 1;
+ },
+ this
+ );
+ store.add(newPeers);
+
+ // Remove any peers that should not be left in the store.
+ store.each(function (record) {
+ if (!addresses[record.id]) {
+ store.remove(record);
+ delete this.peers[record.id];
+ }
+ }, this);
+ store.commitChanges();
+
+ var sortState = store.getSortState();
+ if (!sortState) return;
+ store.sort(sortState.field, sortState.direction);
+ },
+ });
+})();
diff --git a/deluge/ui/web/js/deluge-all/details/StatusTab.js b/deluge/ui/web/js/deluge-all/details/StatusTab.js
new file mode 100644
index 0000000..6055161
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/details/StatusTab.js
@@ -0,0 +1,155 @@
+/**
+ * Deluge.details.StatusTab.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge.details');
+
+/**
+ * @class Deluge.details.StatusTab
+ * @extends Ext.Panel
+ */
+Deluge.details.StatusTab = Ext.extend(Ext.Panel, {
+ title: _('Status'),
+ autoScroll: true,
+
+ onRender: function (ct, position) {
+ Deluge.details.StatusTab.superclass.onRender.call(this, ct, position);
+
+ this.progressBar = this.add({
+ xtype: 'progress',
+ cls: 'x-deluge-status-progressbar',
+ });
+
+ this.status = this.add({
+ cls: 'x-deluge-status',
+ id: 'deluge-details-status',
+
+ border: false,
+ width: 1000,
+ listeners: {
+ render: {
+ fn: function (panel) {
+ panel.load({
+ url: deluge.config.base + 'render/tab_status.html',
+ text: _('Loading') + '...',
+ });
+ panel
+ .getUpdater()
+ .on('update', this.onPanelUpdate, this);
+ },
+ scope: this,
+ },
+ },
+ });
+ },
+
+ clear: function () {
+ this.progressBar.updateProgress(0, ' ');
+ for (var k in this.fields) {
+ this.fields[k].innerHTML = '';
+ }
+ },
+
+ update: function (torrentId) {
+ if (!this.fields) this.getFields();
+ deluge.client.web.get_torrent_status(torrentId, Deluge.Keys.Status, {
+ success: this.onRequestComplete,
+ scope: this,
+ });
+ },
+
+ onPanelUpdate: function (el, response) {
+ this.fields = {};
+ Ext.each(
+ Ext.query('dd', this.status.body.dom),
+ function (field) {
+ this.fields[field.className] = field;
+ },
+ this
+ );
+ },
+
+ onRequestComplete: function (status) {
+ seeds =
+ status.total_seeds > -1
+ ? status.num_seeds + ' (' + status.total_seeds + ')'
+ : status.num_seeds;
+ peers =
+ status.total_peers > -1
+ ? status.num_peers + ' (' + status.total_peers + ')'
+ : status.num_peers;
+ last_seen_complete =
+ status.last_seen_complete > 0.0
+ ? fdate(status.last_seen_complete)
+ : 'Never';
+ completed_time =
+ status.completed_time > 0.0 ? fdate(status.completed_time) : '';
+
+ var data = {
+ downloaded: fsize(status.total_done, true),
+ uploaded: fsize(status.total_uploaded, true),
+ share: status.ratio == -1 ? '&infin;' : status.ratio.toFixed(3),
+ announce: ftime(status.next_announce),
+ tracker_status: status.tracker_status,
+ downspeed: status.download_payload_rate
+ ? fspeed(status.download_payload_rate)
+ : '0.0 KiB/s',
+ upspeed: status.upload_payload_rate
+ ? fspeed(status.upload_payload_rate)
+ : '0.0 KiB/s',
+ eta: status.eta < 0 ? '&infin;' : ftime(status.eta),
+ pieces: status.num_pieces + ' (' + fsize(status.piece_length) + ')',
+ seeds: seeds,
+ peers: peers,
+ avail: status.distributed_copies.toFixed(3),
+ active_time: ftime(status.active_time),
+ seeding_time: ftime(status.seeding_time),
+ seed_rank: status.seed_rank,
+ time_added: fdate(status.time_added),
+ last_seen_complete: last_seen_complete,
+ completed_time: completed_time,
+ time_since_transfer: ftime(status.time_since_transfer),
+ };
+ data.auto_managed = _(status.is_auto_managed ? 'True' : 'False');
+
+ var translate_tracker_status = {
+ Error: _('Error'),
+ Warning: _('Warning'),
+ 'Announce OK': _('Announce OK'),
+ 'Announce Sent': _('Announce Sent'),
+ };
+ for (var key in translate_tracker_status) {
+ if (data.tracker_status.indexOf(key) != -1) {
+ data.tracker_status = data.tracker_status.replace(
+ key,
+ translate_tracker_status[key]
+ );
+ break;
+ }
+ }
+
+ data.downloaded +=
+ ' (' +
+ (status.total_payload_download
+ ? fsize(status.total_payload_download)
+ : '0.0 KiB') +
+ ')';
+ data.uploaded +=
+ ' (' +
+ (status.total_payload_upload
+ ? fsize(status.total_payload_upload)
+ : '0.0 KiB') +
+ ')';
+
+ for (var field in this.fields) {
+ this.fields[field].innerHTML = data[field];
+ }
+ var text = status.state + ' ' + status.progress.toFixed(2) + '%';
+ this.progressBar.updateProgress(status.progress / 100.0, text);
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js b/deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js
new file mode 100644
index 0000000..563dedd
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js
@@ -0,0 +1,202 @@
+/**
+ * Deluge.preferences.BandwidthPage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Bandwidth
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Bandwidth = Ext.extend(Ext.form.FormPanel, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ border: false,
+ title: _('Bandwidth'),
+ header: false,
+ layout: 'form',
+ labelWidth: 10,
+ },
+ config
+ );
+ Deluge.preferences.Bandwidth.superclass.constructor.call(this, config);
+ },
+
+ initComponent: function () {
+ Deluge.preferences.Bandwidth.superclass.initComponent.call(this);
+
+ var om = deluge.preferences.getOptionsManager();
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Global Bandwidth Usage'),
+ labelWidth: 200,
+ defaultType: 'spinnerfield',
+ defaults: {
+ minValue: -1,
+ maxValue: 9999999,
+ },
+ style: 'margin-bottom: 0px; padding-bottom: 0px;',
+ autoHeight: true,
+ });
+ om.bind(
+ 'max_connections_global',
+ fieldset.add({
+ name: 'max_connections_global',
+ fieldLabel: _('Maximum Connections:'),
+ labelSeparator: '',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ })
+ );
+ om.bind(
+ 'max_upload_slots_global',
+ fieldset.add({
+ name: 'max_upload_slots_global',
+ fieldLabel: _('Maximum Upload Slots'),
+ labelSeparator: '',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ })
+ );
+ om.bind(
+ 'max_download_speed',
+ fieldset.add({
+ name: 'max_download_speed',
+ fieldLabel: _('Maximum Download Speed (KiB/s):'),
+ labelSeparator: '',
+ width: 80,
+ value: -1.0,
+ decimalPrecision: 1,
+ })
+ );
+ om.bind(
+ 'max_upload_speed',
+ fieldset.add({
+ name: 'max_upload_speed',
+ fieldLabel: _('Maximum Upload Speed (KiB/s):'),
+ labelSeparator: '',
+ width: 80,
+ value: -1.0,
+ decimalPrecision: 1,
+ })
+ );
+ om.bind(
+ 'max_half_open_connections',
+ fieldset.add({
+ name: 'max_half_open_connections',
+ fieldLabel: _('Maximum Half-Open Connections:'),
+ labelSeparator: '',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ })
+ );
+ om.bind(
+ 'max_connections_per_second',
+ fieldset.add({
+ name: 'max_connections_per_second',
+ fieldLabel: _('Maximum Connection Attempts per Second:'),
+ labelSeparator: '',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: '',
+ defaultType: 'checkbox',
+ style: 'padding-top: 0px; padding-bottom: 5px; margin-top: 0px; margin-bottom: 0px;',
+ autoHeight: true,
+ });
+ om.bind(
+ 'ignore_limits_on_local_network',
+ fieldset.add({
+ name: 'ignore_limits_on_local_network',
+ height: 22,
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('Ignore limits on local network'),
+ })
+ );
+ om.bind(
+ 'rate_limit_ip_overhead',
+ fieldset.add({
+ name: 'rate_limit_ip_overhead',
+ height: 22,
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('Rate limit IP overhead'),
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Per Torrent Bandwidth Usage'),
+ style: 'margin-bottom: 0px; padding-bottom: 0px;',
+ defaultType: 'spinnerfield',
+ labelWidth: 200,
+ defaults: {
+ minValue: -1,
+ maxValue: 99999,
+ },
+ autoHeight: true,
+ });
+ om.bind(
+ 'max_connections_per_torrent',
+ fieldset.add({
+ name: 'max_connections_per_torrent',
+ fieldLabel: _('Maximum Connections:'),
+ labelSeparator: '',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ })
+ );
+ om.bind(
+ 'max_upload_slots_per_torrent',
+ fieldset.add({
+ name: 'max_upload_slots_per_torrent',
+ fieldLabel: _('Maximum Upload Slots:'),
+ labelSeparator: '',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ })
+ );
+ om.bind(
+ 'max_download_speed_per_torrent',
+ fieldset.add({
+ name: 'max_download_speed_per_torrent',
+ fieldLabel: _('Maximum Download Speed (KiB/s):'),
+ labelSeparator: '',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ })
+ );
+ om.bind(
+ 'max_upload_speed_per_torrent',
+ fieldset.add({
+ name: 'max_upload_speed_per_torrent',
+ fieldLabel: _('Maximum Upload Speed (KiB/s):'),
+ labelSeparator: '',
+ width: 80,
+ value: -1,
+ decimalPrecision: 0,
+ })
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/CachePage.js b/deluge/ui/web/js/deluge-all/preferences/CachePage.js
new file mode 100644
index 0000000..bd5acd8
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/CachePage.js
@@ -0,0 +1,61 @@
+/**
+ * Deluge.preferences.CachePage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Cache
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Cache = Ext.extend(Ext.form.FormPanel, {
+ border: false,
+ title: _('Cache'),
+ header: false,
+ layout: 'form',
+
+ initComponent: function () {
+ Deluge.preferences.Cache.superclass.initComponent.call(this);
+
+ var om = deluge.preferences.getOptionsManager();
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Settings'),
+ autoHeight: true,
+ labelWidth: 180,
+ defaultType: 'spinnerfield',
+ defaults: {
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 999999,
+ },
+ });
+ om.bind(
+ 'cache_size',
+ fieldset.add({
+ fieldLabel: _('Cache Size (16 KiB Blocks):'),
+ labelSeparator: '',
+ name: 'cache_size',
+ width: 60,
+ value: 512,
+ })
+ );
+ om.bind(
+ 'cache_expiry',
+ fieldset.add({
+ fieldLabel: _('Cache Expiry (seconds):'),
+ labelSeparator: '',
+ name: 'cache_expiry',
+ width: 60,
+ value: 60,
+ })
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/DaemonPage.js b/deluge/ui/web/js/deluge-all/preferences/DaemonPage.js
new file mode 100644
index 0000000..da205c2
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/DaemonPage.js
@@ -0,0 +1,85 @@
+/**
+ * Deluge.preferences.DaemonPage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Daemon
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Daemon = Ext.extend(Ext.form.FormPanel, {
+ border: false,
+ title: _('Daemon'),
+ header: false,
+ layout: 'form',
+
+ initComponent: function () {
+ Deluge.preferences.Daemon.superclass.initComponent.call(this);
+
+ var om = deluge.preferences.getOptionsManager();
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Port'),
+ autoHeight: true,
+ defaultType: 'spinnerfield',
+ });
+ om.bind(
+ 'daemon_port',
+ fieldset.add({
+ fieldLabel: _('Daemon port:'),
+ labelSeparator: '',
+ name: 'daemon_port',
+ value: 58846,
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 65535,
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Connections'),
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ om.bind(
+ 'allow_remote',
+ fieldset.add({
+ fieldLabel: '',
+ height: 22,
+ labelSeparator: '',
+ boxLabel: _('Allow Remote Connections'),
+ name: 'allow_remote',
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Other'),
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ om.bind(
+ 'new_release_check',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ height: 40,
+ boxLabel: _('Periodically check the website for new releases'),
+ id: 'new_release_check',
+ })
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js b/deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js
new file mode 100644
index 0000000..04ffd15
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js
@@ -0,0 +1,124 @@
+/**
+ * Deluge.preferences.DownloadsPage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Downloads
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Downloads = Ext.extend(Ext.FormPanel, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ border: false,
+ title: _('Downloads'),
+ header: false,
+ layout: 'form',
+ autoHeight: true,
+ width: 320,
+ },
+ config
+ );
+ Deluge.preferences.Downloads.superclass.constructor.call(this, config);
+ },
+
+ initComponent: function () {
+ Deluge.preferences.Downloads.superclass.initComponent.call(this);
+
+ var optMan = deluge.preferences.getOptionsManager();
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Folders'),
+ labelWidth: 150,
+ defaultType: 'togglefield',
+ autoHeight: true,
+ labelAlign: 'top',
+ width: 300,
+ style: 'margin-bottom: 5px; padding-bottom: 5px;',
+ });
+
+ optMan.bind(
+ 'download_location',
+ fieldset.add({
+ xtype: 'textfield',
+ name: 'download_location',
+ fieldLabel: _('Download to:'),
+ labelSeparator: '',
+ width: 280,
+ })
+ );
+
+ var field = fieldset.add({
+ name: 'move_completed_path',
+ fieldLabel: _('Move completed to:'),
+ labelSeparator: '',
+ width: 280,
+ });
+ optMan.bind('move_completed', field.toggle);
+ optMan.bind('move_completed_path', field.input);
+
+ field = fieldset.add({
+ name: 'torrentfiles_location',
+ fieldLabel: _('Copy of .torrent files to:'),
+ labelSeparator: '',
+ width: 280,
+ });
+ optMan.bind('copy_torrent_file', field.toggle);
+ optMan.bind('torrentfiles_location', field.input);
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Options'),
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ style: 'margin-bottom: 0; padding-bottom: 0;',
+ width: 280,
+ });
+ optMan.bind(
+ 'prioritize_first_last_pieces',
+ fieldset.add({
+ name: 'prioritize_first_last_pieces',
+ labelSeparator: '',
+ height: 22,
+ boxLabel: _('Prioritize first and last pieces of torrent'),
+ })
+ );
+ optMan.bind(
+ 'sequential_download',
+ fieldset.add({
+ name: 'sequential_download',
+ labelSeparator: '',
+ height: 22,
+ boxLabel: _('Sequential download'),
+ })
+ );
+ optMan.bind(
+ 'add_paused',
+ fieldset.add({
+ name: 'add_paused',
+ labelSeparator: '',
+ height: 22,
+ boxLabel: _('Add torrents in Paused state'),
+ })
+ );
+ optMan.bind(
+ 'pre_allocate_storage',
+ fieldset.add({
+ name: 'pre_allocate_storage',
+ labelSeparator: '',
+ height: 22,
+ boxLabel: _('Pre-allocate disk space'),
+ })
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js b/deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js
new file mode 100644
index 0000000..1bcf95e
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js
@@ -0,0 +1,99 @@
+/**
+ * Deluge.preferences.EncryptionPage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Encryption
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Encryption = Ext.extend(Ext.form.FormPanel, {
+ border: false,
+ title: _('Encryption'),
+ header: false,
+
+ initComponent: function () {
+ Deluge.preferences.Encryption.superclass.initComponent.call(this);
+
+ var optMan = deluge.preferences.getOptionsManager();
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Settings'),
+ header: false,
+ autoHeight: true,
+ defaultType: 'combo',
+ width: 300,
+ });
+ optMan.bind(
+ 'enc_in_policy',
+ fieldset.add({
+ fieldLabel: _('Incoming:'),
+ labelSeparator: '',
+ mode: 'local',
+ width: 150,
+ store: new Ext.data.ArrayStore({
+ fields: ['id', 'text'],
+ data: [
+ [0, _('Forced')],
+ [1, _('Enabled')],
+ [2, _('Disabled')],
+ ],
+ }),
+ editable: false,
+ triggerAction: 'all',
+ valueField: 'id',
+ displayField: 'text',
+ })
+ );
+ optMan.bind(
+ 'enc_out_policy',
+ fieldset.add({
+ fieldLabel: _('Outgoing:'),
+ labelSeparator: '',
+ mode: 'local',
+ width: 150,
+ store: new Ext.data.SimpleStore({
+ fields: ['id', 'text'],
+ data: [
+ [0, _('Forced')],
+ [1, _('Enabled')],
+ [2, _('Disabled')],
+ ],
+ }),
+ editable: false,
+ triggerAction: 'all',
+ valueField: 'id',
+ displayField: 'text',
+ })
+ );
+ optMan.bind(
+ 'enc_level',
+ fieldset.add({
+ fieldLabel: _('Level:'),
+ labelSeparator: '',
+ mode: 'local',
+ width: 150,
+ store: new Ext.data.SimpleStore({
+ fields: ['id', 'text'],
+ data: [
+ [0, _('Handshake')],
+ [1, _('Full Stream')],
+ [2, _('Either')],
+ ],
+ }),
+ editable: false,
+ triggerAction: 'all',
+ valueField: 'id',
+ displayField: 'text',
+ })
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js b/deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js
new file mode 100644
index 0000000..9aefce3
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js
@@ -0,0 +1,83 @@
+/**
+ * Deluge.preferences.InstallPluginWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.InstallPluginWindow
+ * @extends Ext.Window
+ */
+Deluge.preferences.InstallPluginWindow = Ext.extend(Ext.Window, {
+ title: _('Install Plugin'),
+ layout: 'fit',
+ height: 115,
+ width: 350,
+ constrainHeader: true,
+ bodyStyle: 'padding: 10px 5px;',
+ buttonAlign: 'center',
+ closeAction: 'hide',
+ iconCls: 'x-deluge-install-plugin',
+ modal: true,
+ plain: true,
+
+ initComponent: function () {
+ Deluge.preferences.InstallPluginWindow.superclass.initComponent.call(
+ this
+ );
+ this.addButton(_('Install'), this.onInstall, this);
+
+ this.form = this.add({
+ xtype: 'form',
+ baseCls: 'x-plain',
+ labelWidth: 70,
+ autoHeight: true,
+ fileUpload: true,
+ items: [
+ {
+ xtype: 'fileuploadfield',
+ width: 240,
+ emptyText: _('Select an egg'),
+ fieldLabel: _('Plugin Egg'),
+ name: 'file',
+ buttonCfg: {
+ text: _('Browse...'),
+ },
+ },
+ ],
+ });
+ },
+
+ onInstall: function (field, e) {
+ this.form.getForm().submit({
+ url: deluge.config.base + 'upload',
+ waitMsg: _('Uploading your plugin...'),
+ success: this.onUploadSuccess,
+ scope: this,
+ });
+ },
+
+ onUploadPlugin: function (info, obj, response, request) {
+ this.fireEvent('pluginadded');
+ },
+
+ onUploadSuccess: function (fp, upload) {
+ this.hide();
+ if (upload.result.success) {
+ var filename = this.form.getForm().getFieldValues().file;
+ filename = filename.split('\\').slice(-1)[0];
+ var path = upload.result.files[0];
+ this.form.getForm().setValues({ file: '' });
+ deluge.client.web.upload_plugin(filename, path, {
+ success: this.onUploadPlugin,
+ scope: this,
+ filename: filename,
+ });
+ }
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/InterfacePage.js b/deluge/ui/web/js/deluge-all/preferences/InterfacePage.js
new file mode 100644
index 0000000..a5a7909
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/InterfacePage.js
@@ -0,0 +1,358 @@
+/**
+ * Deluge.preferences.InterfacePage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Interface
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
+ border: false,
+ title: _('Interface'),
+ header: false,
+ layout: 'form',
+
+ initComponent: function () {
+ Deluge.preferences.Interface.superclass.initComponent.call(this);
+
+ var om = (this.optionsManager = new Deluge.OptionsManager());
+ this.on('show', this.onPageShow, this);
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Interface'),
+ style: 'margin-bottom: 0px; padding-bottom: 5px; padding-top: 5px',
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ defaults: {
+ height: 17,
+ fieldLabel: '',
+ labelSeparator: '',
+ },
+ });
+ om.bind(
+ 'show_session_speed',
+ fieldset.add({
+ name: 'show_session_speed',
+ boxLabel: _('Show session speed in titlebar'),
+ })
+ );
+ om.bind(
+ 'sidebar_show_zero',
+ fieldset.add({
+ name: 'sidebar_show_zero',
+ boxLabel: _('Show filters with zero torrents'),
+ })
+ );
+ om.bind(
+ 'sidebar_multiple_filters',
+ fieldset.add({
+ name: 'sidebar_multiple_filters',
+ boxLabel: _('Allow the use of multiple filters at once'),
+ })
+ );
+
+ var languagePanel = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Language'),
+ style: 'margin-bottom: 0px; padding-bottom: 5px; padding-top: 5px',
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ this.language = om.bind(
+ 'language',
+ languagePanel.add({
+ xtype: 'combo',
+ labelSeparator: '',
+ name: 'language',
+ mode: 'local',
+ width: 200,
+ store: new Ext.data.ArrayStore({
+ fields: ['id', 'text'],
+ }),
+ editable: false,
+ triggerAction: 'all',
+ valueField: 'id',
+ displayField: 'text',
+ })
+ );
+
+ var themePanel = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Theme'),
+ style: 'margin-bottom: 0px; padding-bottom: 5px; padding-top: 5px',
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ this.theme = om.bind(
+ 'theme',
+ themePanel.add({
+ xtype: 'combo',
+ name: 'theme',
+ labelSeparator: '',
+ mode: 'local',
+ width: 200,
+ store: new Ext.data.ArrayStore({
+ fields: ['id', 'text'],
+ }),
+ editable: false,
+ triggerAction: 'all',
+ valueField: 'id',
+ displayField: 'text',
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('WebUI Password'),
+ style: 'margin-bottom: 0px; padding-bottom: 5px; padding-top: 5px',
+ autoHeight: true,
+ labelWidth: 100,
+ defaultType: 'textfield',
+ defaults: {
+ width: 100,
+ inputType: 'password',
+ labelStyle: 'padding-left: 5px',
+ height: 20,
+ labelSeparator: '',
+ },
+ });
+
+ this.oldPassword = fieldset.add({
+ name: 'old_password',
+ fieldLabel: _('Old:'),
+ });
+ this.newPassword = fieldset.add({
+ name: 'new_password',
+ fieldLabel: _('New:'),
+ });
+ this.confirmPassword = fieldset.add({
+ name: 'confirm_password',
+ fieldLabel: _('Confirm:'),
+ });
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Server'),
+ style: 'padding-top: 5px; margin-bottom: 0px; padding-bottom: 5px',
+ autoHeight: true,
+ labelWidth: 100,
+ defaultType: 'spinnerfield',
+ defaults: {
+ labelSeparator: '',
+ labelStyle: 'padding-left: 5px',
+ height: 20,
+ width: 80,
+ },
+ });
+ om.bind(
+ 'session_timeout',
+ fieldset.add({
+ name: 'session_timeout',
+ fieldLabel: _('Session Timeout:'),
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: Number.MAX_SAFE_INTEGER || Number.MAX_VALUE,
+ })
+ );
+ om.bind(
+ 'port',
+ fieldset.add({
+ name: 'port',
+ fieldLabel: _('Port:'),
+ decimalPrecision: 0,
+ minValue: 1,
+ maxValue: 65535,
+ })
+ );
+ this.httpsField = om.bind(
+ 'https',
+ fieldset.add({
+ xtype: 'checkbox',
+ name: 'https',
+ hideLabel: true,
+ width: 300,
+ style: 'margin-left: 5px',
+ boxLabel: _(
+ 'Enable SSL (paths relative to Deluge config folder)'
+ ),
+ })
+ );
+ this.httpsField.on('check', this.onSSLCheck, this);
+ this.pkeyField = om.bind(
+ 'pkey',
+ fieldset.add({
+ xtype: 'textfield',
+ disabled: true,
+ name: 'pkey',
+ width: 180,
+ fieldLabel: _('Private Key:'),
+ })
+ );
+ this.certField = om.bind(
+ 'cert',
+ fieldset.add({
+ xtype: 'textfield',
+ disabled: true,
+ name: 'cert',
+ width: 180,
+ fieldLabel: _('Certificate:'),
+ })
+ );
+ },
+
+ onApply: function () {
+ var changed = this.optionsManager.getDirty();
+ if (!Ext.isObjectEmpty(changed)) {
+ deluge.client.web.set_config(changed, {
+ success: this.onSetConfig,
+ scope: this,
+ });
+
+ for (var key in deluge.config) {
+ deluge.config[key] = this.optionsManager.get(key);
+ }
+ if ('language' in changed) {
+ Ext.Msg.show({
+ title: _('WebUI Language Changed'),
+ msg: _(
+ 'Do you want to refresh the page now to use the new language?'
+ ),
+ buttons: {
+ yes: _('Refresh'),
+ no: _('Close'),
+ },
+ multiline: false,
+ fn: function (btnText) {
+ if (btnText === 'yes') location.reload();
+ },
+ icon: Ext.MessageBox.QUESTION,
+ });
+ }
+ if ('theme' in changed) {
+ deluge.client.web.set_theme(changed['theme']);
+ Ext.Msg.show({
+ title: _('WebUI Theme Changed'),
+ msg: _(
+ 'Do you want to refresh the page now to use the new theme?'
+ ),
+ buttons: {
+ yes: _('Refresh'),
+ no: _('Close'),
+ },
+ multiline: false,
+ fn: function (btnText) {
+ if (btnText === 'yes') location.reload();
+ },
+ icon: Ext.MessageBox.QUESTION,
+ });
+ }
+ }
+ if (this.oldPassword.getValue() || this.newPassword.getValue()) {
+ this.onPasswordChange();
+ }
+ },
+
+ onOk: function () {
+ this.onApply();
+ },
+
+ onGotConfig: function (config) {
+ this.optionsManager.set(config);
+ },
+
+ onGotLanguages: function (info, obj, response, request) {
+ info.unshift(['', _('System Default')]);
+ this.language.store.loadData(info);
+ this.language.setValue(this.optionsManager.get('language'));
+ },
+
+ onGotThemes: function (info, obj, response, request) {
+ this.theme.store.loadData(info);
+ this.theme.setValue(this.optionsManager.get('theme'));
+ },
+
+ onPasswordChange: function () {
+ var newPassword = this.newPassword.getValue();
+ if (newPassword != this.confirmPassword.getValue()) {
+ Ext.MessageBox.show({
+ title: _('Invalid Password'),
+ msg: _("Your passwords don't match!"),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ return;
+ }
+
+ var oldPassword = this.oldPassword.getValue();
+ deluge.client.auth.change_password(oldPassword, newPassword, {
+ success: function (result) {
+ if (!result) {
+ Ext.MessageBox.show({
+ title: _('Password'),
+ msg: _('Your old password was incorrect!'),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.ERROR,
+ iconCls: 'x-deluge-icon-error',
+ });
+ this.oldPassword.setValue('');
+ } else {
+ Ext.MessageBox.show({
+ title: _('Change Successful'),
+ msg: _('Your password was successfully changed!'),
+ buttons: Ext.MessageBox.OK,
+ modal: false,
+ icon: Ext.MessageBox.INFO,
+ iconCls: 'x-deluge-icon-info',
+ });
+ this.oldPassword.setValue('');
+ this.newPassword.setValue('');
+ this.confirmPassword.setValue('');
+ }
+ },
+ scope: this,
+ });
+ },
+
+ onSetConfig: function () {
+ this.optionsManager.commit();
+ },
+
+ onPageShow: function () {
+ deluge.client.web.get_config({
+ success: this.onGotConfig,
+ scope: this,
+ });
+ deluge.client.webutils.get_languages({
+ success: this.onGotLanguages,
+ scope: this,
+ });
+ deluge.client.webutils.get_themes({
+ success: this.onGotThemes,
+ scope: this,
+ });
+ },
+
+ onSSLCheck: function (e, checked) {
+ this.pkeyField.setDisabled(!checked);
+ this.certField.setDisabled(!checked);
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/NetworkPage.js b/deluge/ui/web/js/deluge-all/preferences/NetworkPage.js
new file mode 100644
index 0000000..5ba98e7
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/NetworkPage.js
@@ -0,0 +1,257 @@
+/**
+ * Deluge.preferences.NetworkPage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+// custom Vtype for vtype:'IPAddress'
+Ext.apply(Ext.form.VTypes, {
+ IPAddress: function (v) {
+ return /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(v);
+ },
+ IPAddressText: 'Must be a numeric IP address',
+ IPAddressMask: /[\d\.]/i,
+});
+
+/**
+ * @class Deluge.preferences.Network
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Network = Ext.extend(Ext.form.FormPanel, {
+ border: false,
+ layout: 'form',
+ title: _('Network'),
+ header: false,
+
+ initComponent: function () {
+ Deluge.preferences.Network.superclass.initComponent.call(this);
+ var optMan = deluge.preferences.getOptionsManager();
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Incoming Address'),
+ style: 'margin-bottom: 5px; padding-bottom: 0px;',
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'textfield',
+ });
+ optMan.bind(
+ 'listen_interface',
+ fieldset.add({
+ name: 'listen_interface',
+ fieldLabel: '',
+ labelSeparator: '',
+ width: 200,
+ vtype: 'IPAddress',
+ })
+ );
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Incoming Port'),
+ style: 'margin-bottom: 5px; padding-bottom: 0px;',
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ optMan.bind(
+ 'random_port',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('Use Random Port'),
+ name: 'random_port',
+ height: 22,
+ listeners: {
+ check: {
+ fn: function (e, checked) {
+ this.listenPort.setDisabled(checked);
+ },
+ scope: this,
+ },
+ },
+ })
+ );
+
+ this.listenPort = fieldset.add({
+ xtype: 'spinnerfield',
+ name: 'listen_port',
+ fieldLabel: '',
+ labelSeparator: '',
+ width: 75,
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 0,
+ minValue: 0,
+ maxValue: 65535,
+ },
+ });
+ optMan.bind('listen_ports', this.listenPort);
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Outgoing Interface'),
+ style: 'margin-bottom: 5px; padding-bottom: 0px;',
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'textfield',
+ });
+ optMan.bind(
+ 'outgoing_interface',
+ fieldset.add({
+ name: 'outgoing_interface',
+ fieldLabel: '',
+ labelSeparator: '',
+ width: 40,
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Outgoing Ports'),
+ style: 'margin-bottom: 5px; padding-bottom: 0px;',
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ optMan.bind(
+ 'random_outgoing_ports',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('Use Random Ports'),
+ name: 'random_outgoing_ports',
+ height: 22,
+ listeners: {
+ check: {
+ fn: function (e, checked) {
+ this.outgoingPorts.setDisabled(checked);
+ },
+ scope: this,
+ },
+ },
+ })
+ );
+ this.outgoingPorts = fieldset.add({
+ xtype: 'spinnergroup',
+ name: 'outgoing_ports',
+ fieldLabel: '',
+ labelSeparator: '',
+ colCfg: {
+ labelWidth: 40,
+ style: 'margin-right: 10px;',
+ },
+ items: [
+ {
+ fieldLabel: _('From:'),
+ labelSeparator: '',
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 0,
+ minValue: 0,
+ maxValue: 65535,
+ },
+ },
+ {
+ fieldLabel: _('To:'),
+ labelSeparator: '',
+ strategy: {
+ xtype: 'number',
+ decimalPrecision: 0,
+ minValue: 0,
+ maxValue: 65535,
+ },
+ },
+ ],
+ });
+ optMan.bind('outgoing_ports', this.outgoingPorts);
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Network Extras'),
+ autoHeight: true,
+ layout: 'table',
+ layoutConfig: {
+ columns: 3,
+ },
+ defaultType: 'checkbox',
+ });
+ optMan.bind(
+ 'upnp',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('UPnP'),
+ name: 'upnp',
+ })
+ );
+ optMan.bind(
+ 'natpmp',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('NAT-PMP'),
+ ctCls: 'x-deluge-indent-checkbox',
+ name: 'natpmp',
+ })
+ );
+ optMan.bind(
+ 'utpex',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('Peer Exchange'),
+ ctCls: 'x-deluge-indent-checkbox',
+ name: 'utpex',
+ })
+ );
+ optMan.bind(
+ 'lsd',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('LSD'),
+ name: 'lsd',
+ })
+ );
+ optMan.bind(
+ 'dht',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ boxLabel: _('DHT'),
+ ctCls: 'x-deluge-indent-checkbox',
+ name: 'dht',
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Type Of Service'),
+ style: 'margin-bottom: 5px; padding-bottom: 0px;',
+ bodyStyle: 'margin: 0px; padding: 0px',
+ autoHeight: true,
+ defaultType: 'textfield',
+ });
+ optMan.bind(
+ 'peer_tos',
+ fieldset.add({
+ name: 'peer_tos',
+ fieldLabel: _('Peer TOS Byte:'),
+ labelSeparator: '',
+ width: 40,
+ })
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/OtherPage.js b/deluge/ui/web/js/deluge-all/preferences/OtherPage.js
new file mode 100644
index 0000000..607da22
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/OtherPage.js
@@ -0,0 +1,100 @@
+/**
+ * Deluge.preferences.OtherPage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Other
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Other = Ext.extend(Ext.form.FormPanel, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ border: false,
+ title: _('Other'),
+ header: false,
+ layout: 'form',
+ },
+ config
+ );
+ Deluge.preferences.Other.superclass.constructor.call(this, config);
+ },
+
+ initComponent: function () {
+ Deluge.preferences.Other.superclass.initComponent.call(this);
+
+ var optMan = deluge.preferences.getOptionsManager();
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Updates'),
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ optMan.bind(
+ 'new_release_check',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ height: 22,
+ name: 'new_release_check',
+ boxLabel: _('Be alerted about new releases'),
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('System Information'),
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ fieldset.add({
+ xtype: 'panel',
+ border: false,
+ bodyCfg: {
+ html: _(
+ 'Help us improve Deluge by sending us your Python version, PyGTK version, OS and processor types. Absolutely no other information is sent.'
+ ),
+ },
+ });
+ optMan.bind(
+ 'send_info',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ height: 22,
+ boxLabel: _('Yes, please send anonymous statistics'),
+ name: 'send_info',
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('GeoIP Database'),
+ autoHeight: true,
+ labelWidth: 80,
+ defaultType: 'textfield',
+ });
+ optMan.bind(
+ 'geoip_db_location',
+ fieldset.add({
+ name: 'geoip_db_location',
+ fieldLabel: _('Path:'),
+ labelSeparator: '',
+ width: 200,
+ })
+ );
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/PluginsPage.js b/deluge/ui/web/js/deluge-all/preferences/PluginsPage.js
new file mode 100644
index 0000000..f771d96
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/PluginsPage.js
@@ -0,0 +1,277 @@
+/**
+ * Deluge.preferences.PluginsPage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Plugins
+ * @extends Ext.Panel
+ */
+Deluge.preferences.Plugins = Ext.extend(Ext.Panel, {
+ layout: 'border',
+ title: _('Plugins'),
+ header: false,
+ border: false,
+ cls: 'x-deluge-plugins',
+
+ pluginTemplate: new Ext.Template(
+ '<dl class="singleline">' +
+ '<dt>' +
+ _('Author:') +
+ '</dt><dd>{author}</dd>' +
+ '<dt>' +
+ _('Version:') +
+ '</dt><dd>{version}</dd>' +
+ '<dt>' +
+ _('Author Email:') +
+ '</dt><dd>{email}</dd>' +
+ '<dt>' +
+ _('Homepage:') +
+ '</dt><dd>{homepage}</dd>' +
+ '<dt>' +
+ _('Details:') +
+ '</dt><dd style="white-space:normal">{details}</dd>' +
+ '</dl>'
+ ),
+
+ initComponent: function () {
+ Deluge.preferences.Plugins.superclass.initComponent.call(this);
+ this.defaultValues = {
+ version: '',
+ email: '',
+ homepage: '',
+ details: '',
+ };
+ this.pluginTemplate.compile();
+
+ var checkboxRenderer = function (v, p, record) {
+ p.css += ' x-grid3-check-col-td';
+ return (
+ '<div class="x-grid3-check-col' + (v ? '-on' : '') + '"> </div>'
+ );
+ };
+
+ this.list = this.add({
+ xtype: 'listview',
+ store: new Ext.data.ArrayStore({
+ fields: [
+ { name: 'enabled', mapping: 0 },
+ { name: 'plugin', mapping: 1, sortType: 'asUCString' },
+ ],
+ }),
+ columns: [
+ {
+ id: 'enabled',
+ header: _('Enabled'),
+ width: 0.2,
+ sortable: true,
+ tpl: new Ext.XTemplate('{enabled:this.getCheckbox}', {
+ getCheckbox: function (v) {
+ return (
+ '<div class="x-grid3-check-col' +
+ (v ? '-on' : '') +
+ '" rel="chkbox"> </div>'
+ );
+ },
+ }),
+ dataIndex: 'enabled',
+ },
+ {
+ id: 'plugin',
+ header: _('Plugin'),
+ width: 0.8,
+ sortable: true,
+ dataIndex: 'plugin',
+ },
+ ],
+ singleSelect: true,
+ autoExpandColumn: 'plugin',
+ listeners: {
+ selectionchange: { fn: this.onPluginSelect, scope: this },
+ },
+ });
+
+ this.panel = this.add({
+ region: 'center',
+ autoScroll: true,
+ items: [this.list],
+ bbar: new Ext.Toolbar({
+ items: [
+ {
+ cls: 'x-btn-text-icon',
+ iconCls: 'x-deluge-install-plugin',
+ text: _('Install'),
+ handler: this.onInstallPluginWindow,
+ scope: this,
+ },
+ '->',
+ {
+ cls: 'x-btn-text-icon',
+ text: _('Find More'),
+ iconCls: 'x-deluge-find-more',
+ handler: this.onFindMorePlugins,
+ scope: this,
+ },
+ ],
+ }),
+ });
+
+ var pp = (this.pluginInfo = this.add({
+ xtype: 'panel',
+ border: false,
+ height: 100,
+ region: 'south',
+ padding: '5',
+ autoScroll: true,
+ bodyCfg: {
+ style: 'white-space: nowrap',
+ },
+ }));
+
+ this.pluginInfo.on('render', this.onPluginInfoRender, this);
+ this.list.on('click', this.onNodeClick, this);
+ deluge.preferences.on('show', this.onPreferencesShow, this);
+ deluge.events.on('PluginDisabledEvent', this.onPluginDisabled, this);
+ deluge.events.on('PluginEnabledEvent', this.onPluginEnabled, this);
+ },
+
+ disablePlugin: function (plugin) {
+ deluge.client.core.disable_plugin(plugin);
+ },
+
+ enablePlugin: function (plugin) {
+ deluge.client.core.enable_plugin(plugin);
+ },
+
+ setInfo: function (plugin) {
+ if (!this.pluginInfo.rendered) return;
+ var values = plugin || this.defaultValues;
+ this.pluginInfo.body.dom.innerHTML = this.pluginTemplate.apply(values);
+ },
+
+ updatePlugins: function () {
+ var onGotAvailablePlugins = function (plugins) {
+ this.availablePlugins = plugins.sort(function (a, b) {
+ return a.toLowerCase().localeCompare(b.toLowerCase());
+ });
+
+ deluge.client.core.get_enabled_plugins({
+ success: onGotEnabledPlugins,
+ scope: this,
+ });
+ };
+
+ var onGotEnabledPlugins = function (plugins) {
+ this.enabledPlugins = plugins;
+ this.onGotPlugins();
+ };
+
+ deluge.client.core.get_available_plugins({
+ success: onGotAvailablePlugins,
+ scope: this,
+ });
+ },
+
+ updatePluginsGrid: function () {
+ var plugins = [];
+ Ext.each(
+ this.availablePlugins,
+ function (plugin) {
+ if (this.enabledPlugins.indexOf(plugin) > -1) {
+ plugins.push([true, plugin]);
+ } else {
+ plugins.push([false, plugin]);
+ }
+ },
+ this
+ );
+ this.list.getStore().loadData(plugins);
+ },
+
+ onNodeClick: function (dv, index, node, e) {
+ var el = new Ext.Element(e.target);
+ if (el.getAttribute('rel') != 'chkbox') return;
+
+ var r = dv.getStore().getAt(index);
+ if (r.get('plugin') == 'WebUi') return;
+ r.set('enabled', !r.get('enabled'));
+ r.commit();
+ if (r.get('enabled')) {
+ this.enablePlugin(r.get('plugin'));
+ } else {
+ this.disablePlugin(r.get('plugin'));
+ }
+ },
+
+ onFindMorePlugins: function () {
+ window.open('http://dev.deluge-torrent.org/wiki/Plugins');
+ },
+
+ onGotPlugins: function () {
+ this.setInfo();
+ this.updatePluginsGrid();
+ },
+
+ onGotPluginInfo: function (info) {
+ var values = {
+ author: info['Author'],
+ version: info['Version'],
+ email: info['Author-email'],
+ homepage: info['Home-page'],
+ details: info['Description'],
+ };
+ this.setInfo(values);
+ delete info;
+ },
+
+ onInstallPluginWindow: function () {
+ if (!this.installWindow) {
+ this.installWindow = new Deluge.preferences.InstallPluginWindow();
+ this.installWindow.on('pluginadded', this.onPluginInstall, this);
+ }
+ this.installWindow.show();
+ },
+
+ onPluginEnabled: function (pluginName) {
+ var index = this.list.getStore().find('plugin', pluginName);
+ if (index == -1) return;
+ var plugin = this.list.getStore().getAt(index);
+ plugin.set('enabled', true);
+ plugin.commit();
+ },
+
+ onPluginDisabled: function (pluginName) {
+ var index = this.list.getStore().find('plugin', pluginName);
+ if (index == -1) return;
+ var plugin = this.list.getStore().getAt(index);
+ plugin.set('enabled', false);
+ plugin.commit();
+ },
+
+ onPluginInstall: function () {
+ this.updatePlugins();
+ },
+
+ onPluginSelect: function (dv, selections) {
+ if (selections.length == 0) return;
+ var r = dv.getRecords(selections)[0];
+ deluge.client.web.get_plugin_info(r.get('plugin'), {
+ success: this.onGotPluginInfo,
+ scope: this,
+ });
+ },
+
+ onPreferencesShow: function () {
+ this.updatePlugins();
+ },
+
+ onPluginInfoRender: function (ct, position) {
+ this.setInfo();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js b/deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js
new file mode 100644
index 0000000..4cfed01
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js
@@ -0,0 +1,245 @@
+/**
+ * Deluge.preferences.PreferencesWindow.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+PreferencesRecord = Ext.data.Record.create([{ name: 'name', type: 'string' }]);
+
+/**
+ * @class Deluge.preferences.PreferencesWindow
+ * @extends Ext.Window
+ */
+Deluge.preferences.PreferencesWindow = Ext.extend(Ext.Window, {
+ /**
+ * @property {String} currentPage The currently selected page.
+ */
+ currentPage: null,
+
+ title: _('Preferences'),
+ layout: 'border',
+ width: 485,
+ height: 500,
+ border: false,
+ constrainHeader: true,
+ buttonAlign: 'right',
+ closeAction: 'hide',
+ closable: true,
+ iconCls: 'x-deluge-preferences',
+ plain: true,
+ resizable: false,
+
+ pages: {},
+
+ initComponent: function () {
+ Deluge.preferences.PreferencesWindow.superclass.initComponent.call(
+ this
+ );
+
+ this.list = new Ext.list.ListView({
+ store: new Ext.data.Store(),
+ columns: [
+ {
+ id: 'name',
+ dataIndex: 'name',
+ },
+ ],
+ singleSelect: true,
+ listeners: {
+ selectionchange: {
+ fn: this.onPageSelect,
+ scope: this,
+ },
+ },
+ hideHeaders: true,
+ autoExpandColumn: 'name',
+ deferredRender: false,
+ autoScroll: true,
+ collapsible: true,
+ });
+ this.add({
+ region: 'west',
+ items: [this.list],
+ width: 120,
+ margins: '0 5 0 0',
+ cmargins: '0 5 0 0',
+ });
+
+ this.configPanel = this.add({
+ type: 'container',
+ autoDestroy: false,
+ region: 'center',
+ layout: 'card',
+ layoutConfig: {
+ deferredRender: true,
+ },
+ autoScroll: true,
+ width: 300,
+ });
+
+ this.addButton(_('Close'), this.onClose, this);
+ this.addButton(_('Apply'), this.onApply, this);
+ this.addButton(_('OK'), this.onOk, this);
+
+ this.optionsManager = new Deluge.OptionsManager();
+ this.on('afterrender', this.onAfterRender, this);
+ this.on('show', this.onShow, this);
+
+ this.initPages();
+ },
+
+ initPages: function () {
+ deluge.preferences = this;
+ this.addPage(new Deluge.preferences.Downloads());
+ this.addPage(new Deluge.preferences.Network());
+ this.addPage(new Deluge.preferences.Encryption());
+ this.addPage(new Deluge.preferences.Bandwidth());
+ this.addPage(new Deluge.preferences.Interface());
+ this.addPage(new Deluge.preferences.Other());
+ this.addPage(new Deluge.preferences.Daemon());
+ this.addPage(new Deluge.preferences.Queue());
+ this.addPage(new Deluge.preferences.Proxy());
+ this.addPage(new Deluge.preferences.Cache());
+ this.addPage(new Deluge.preferences.Plugins());
+ },
+
+ onApply: function (e) {
+ var changed = this.optionsManager.getDirty();
+ if (!Ext.isObjectEmpty(changed)) {
+ // Workaround for only displaying single listen port but still pass array to core.
+ if ('listen_ports' in changed) {
+ changed.listen_ports = [
+ changed.listen_ports,
+ changed.listen_ports,
+ ];
+ }
+ deluge.client.core.set_config(changed, {
+ success: this.onSetConfig,
+ scope: this,
+ });
+ }
+
+ for (var page in this.pages) {
+ if (this.pages[page].onApply) this.pages[page].onApply();
+ }
+ },
+
+ /**
+ * Return the options manager for the preferences window.
+ * @returns {Deluge.OptionsManager} the options manager
+ */
+ getOptionsManager: function () {
+ return this.optionsManager;
+ },
+
+ /**
+ * Adds a page to the preferences window.
+ * @param {Mixed} page
+ */
+ addPage: function (page) {
+ var store = this.list.getStore();
+ var name = page.title;
+ store.add([new PreferencesRecord({ name: name })]);
+ page['bodyStyle'] = 'padding: 5px';
+ page.preferences = this;
+ this.pages[name] = this.configPanel.add(page);
+ this.pages[name].index = -1;
+ return this.pages[name];
+ },
+
+ /**
+ * Removes a preferences page from the window.
+ * @param {mixed} name
+ */
+ removePage: function (page) {
+ var name = page.title;
+ var store = this.list.getStore();
+ store.removeAt(store.find('name', name));
+ this.configPanel.remove(page);
+ delete this.pages[page.title];
+ },
+
+ /**
+ * Select which preferences page is displayed.
+ * @param {String} page The page name to change to
+ */
+ selectPage: function (page) {
+ if (this.pages[page].index < 0) {
+ this.pages[page].index = this.configPanel.items.indexOf(
+ this.pages[page]
+ );
+ }
+ this.list.select(this.pages[page].index);
+ },
+
+ // private
+ doSelectPage: function (page) {
+ if (this.pages[page].index < 0) {
+ this.pages[page].index = this.configPanel.items.indexOf(
+ this.pages[page]
+ );
+ }
+ this.configPanel.getLayout().setActiveItem(this.pages[page].index);
+ this.currentPage = page;
+ },
+
+ // private
+ onGotConfig: function (config) {
+ this.getOptionsManager().set(config);
+ },
+
+ // private
+ onPageSelect: function (list, selections) {
+ var r = list.getRecord(selections[0]);
+ this.doSelectPage(r.get('name'));
+ },
+
+ // private
+ onSetConfig: function () {
+ this.getOptionsManager().commit();
+ },
+
+ // private
+ onAfterRender: function () {
+ if (!this.list.getSelectionCount()) {
+ this.list.select(0);
+ }
+ this.configPanel.getLayout().setActiveItem(0);
+ },
+
+ // private
+ onShow: function () {
+ if (!deluge.client.core) return;
+ deluge.client.core.get_config({
+ success: this.onGotConfig,
+ scope: this,
+ });
+ },
+
+ // private
+ onClose: function () {
+ this.hide();
+ },
+
+ // private
+ onOk: function () {
+ var changed = this.optionsManager.getDirty();
+ if (!Ext.isObjectEmpty(changed)) {
+ deluge.client.core.set_config(changed, {
+ success: this.onSetConfig,
+ scope: this,
+ });
+ }
+
+ for (var page in this.pages) {
+ if (this.pages[page].onOk) this.pages[page].onOk();
+ }
+
+ this.hide();
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/ProxyField.js b/deluge/ui/web/js/deluge-all/preferences/ProxyField.js
new file mode 100644
index 0000000..d3bb0bf
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/ProxyField.js
@@ -0,0 +1,225 @@
+/**
+ * Deluge.preferences.ProxyField.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.ProxyField
+ * @extends Ext.form.FieldSet
+ */
+Deluge.preferences.ProxyField = Ext.extend(Ext.form.FieldSet, {
+ border: false,
+ autoHeight: true,
+ labelWidth: 70,
+
+ initComponent: function () {
+ Deluge.preferences.ProxyField.superclass.initComponent.call(this);
+ this.proxyType = this.add({
+ xtype: 'combo',
+ fieldLabel: _('Type:'),
+ labelSeparator: '',
+ name: 'proxytype',
+ mode: 'local',
+ width: 150,
+ store: new Ext.data.ArrayStore({
+ fields: ['id', 'text'],
+ data: [
+ [0, _('None')],
+ [1, _('Socks4')],
+ [2, _('Socks5')],
+ [3, _('Socks5 Auth')],
+ [4, _('HTTP')],
+ [5, _('HTTP Auth')],
+ [6, _('I2P')],
+ ],
+ }),
+ editable: false,
+ triggerAction: 'all',
+ valueField: 'id',
+ displayField: 'text',
+ });
+ this.proxyType.on('change', this.onFieldChange, this);
+ this.proxyType.on('select', this.onTypeSelect, this);
+
+ this.hostname = this.add({
+ xtype: 'textfield',
+ name: 'hostname',
+ fieldLabel: _('Host:'),
+ labelSeparator: '',
+ width: 220,
+ });
+ this.hostname.on('change', this.onFieldChange, this);
+
+ this.port = this.add({
+ xtype: 'spinnerfield',
+ name: 'port',
+ fieldLabel: _('Port:'),
+ labelSeparator: '',
+ width: 80,
+ decimalPrecision: 0,
+ minValue: 0,
+ maxValue: 65535,
+ });
+ this.port.on('change', this.onFieldChange, this);
+
+ this.username = this.add({
+ xtype: 'textfield',
+ name: 'username',
+ fieldLabel: _('Username:'),
+ labelSeparator: '',
+ width: 220,
+ });
+ this.username.on('change', this.onFieldChange, this);
+
+ this.password = this.add({
+ xtype: 'textfield',
+ name: 'password',
+ fieldLabel: _('Password:'),
+ labelSeparator: '',
+ inputType: 'password',
+ width: 220,
+ });
+ this.password.on('change', this.onFieldChange, this);
+
+ this.proxy_host_resolve = this.add({
+ xtype: 'checkbox',
+ name: 'proxy_host_resolve',
+ fieldLabel: '',
+ boxLabel: _('Proxy Hostnames'),
+ width: 220,
+ });
+ this.proxy_host_resolve.on('change', this.onFieldChange, this);
+
+ this.proxy_peer_conn = this.add({
+ xtype: 'checkbox',
+ name: 'proxy_peer_conn',
+ fieldLabel: '',
+ boxLabel: _('Proxy Peers'),
+ width: 220,
+ });
+ this.proxy_peer_conn.on('change', this.onFieldChange, this);
+
+ this.proxy_tracker_conn = this.add({
+ xtype: 'checkbox',
+ name: 'proxy_tracker_conn',
+ fieldLabel: '',
+ boxLabel: _('Proxy Trackers'),
+ width: 220,
+ });
+ this.proxy_tracker_conn.on('change', this.onFieldChange, this);
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Force Proxy'),
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ style: 'padding-left: 0px; margin-top: 10px',
+ });
+
+ this.force_proxy = fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ height: 20,
+ name: 'force_proxy',
+ boxLabel: _('Force Use of Proxy'),
+ });
+ this.force_proxy.on('change', this.onFieldChange, this);
+
+ this.anonymous_mode = fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ height: 20,
+ name: 'anonymous_mode',
+ boxLabel: _('Hide Client Identity'),
+ });
+ this.anonymous_mode.on('change', this.onFieldChange, this);
+
+ this.setting = false;
+ },
+
+ getName: function () {
+ return this.initialConfig.name;
+ },
+
+ getValue: function () {
+ return {
+ type: this.proxyType.getValue(),
+ hostname: this.hostname.getValue(),
+ port: Number(this.port.getValue()),
+ username: this.username.getValue(),
+ password: this.password.getValue(),
+ proxy_hostnames: this.proxy_host_resolve.getValue(),
+ proxy_peer_connections: this.proxy_peer_conn.getValue(),
+ proxy_tracker_connections: this.proxy_tracker_conn.getValue(),
+ force_proxy: this.force_proxy.getValue(),
+ anonymous_mode: this.anonymous_mode.getValue(),
+ };
+ },
+
+ // Set the values of the proxies
+ setValue: function (value) {
+ this.setting = true;
+ this.proxyType.setValue(value['type']);
+ var index = this.proxyType.getStore().find('id', value['type']);
+ var record = this.proxyType.getStore().getAt(index);
+
+ this.hostname.setValue(value['hostname']);
+ this.port.setValue(value['port']);
+ this.username.setValue(value['username']);
+ this.password.setValue(value['password']);
+ this.proxy_host_resolve.setValue(value['proxy_hostnames']);
+ this.proxy_peer_conn.setValue(value['proxy_peer_connections']);
+ this.proxy_tracker_conn.setValue(value['proxy_tracker_connections']);
+ this.force_proxy.setValue(value['force_proxy']);
+ this.anonymous_mode.setValue(value['anonymous_mode']);
+
+ this.onTypeSelect(this.type, record, index);
+ this.setting = false;
+ },
+
+ onFieldChange: function (field, newValue, oldValue) {
+ if (this.setting) return;
+ var newValues = this.getValue();
+ var oldValues = Ext.apply({}, newValues);
+ oldValues[field.getName()] = oldValue;
+
+ this.fireEvent('change', this, newValues, oldValues);
+ },
+
+ onTypeSelect: function (combo, record, index) {
+ var typeId = record.get('id');
+ if (typeId > 0) {
+ this.hostname.show();
+ this.port.show();
+ this.proxy_peer_conn.show();
+ this.proxy_tracker_conn.show();
+ if (typeId > 1 && typeId < 6) {
+ this.proxy_host_resolve.show();
+ } else {
+ this.proxy_host_resolve.hide();
+ }
+ } else {
+ this.hostname.hide();
+ this.port.hide();
+ this.proxy_host_resolve.hide();
+ this.proxy_peer_conn.hide();
+ this.proxy_tracker_conn.hide();
+ }
+
+ if (typeId == 3 || typeId == 5) {
+ this.username.show();
+ this.password.show();
+ } else {
+ this.username.hide();
+ this.password.hide();
+ }
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/ProxyPage.js b/deluge/ui/web/js/deluge-all/preferences/ProxyPage.js
new file mode 100644
index 0000000..2dc4cae
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/ProxyPage.js
@@ -0,0 +1,62 @@
+/**
+ * Deluge.preferences.ProxyPage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Proxy
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Proxy = Ext.extend(Ext.form.FormPanel, {
+ constructor: function (config) {
+ config = Ext.apply(
+ {
+ border: false,
+ title: _('Proxy'),
+ header: false,
+ layout: 'form',
+ autoScroll: true,
+ },
+ config
+ );
+ Deluge.preferences.Proxy.superclass.constructor.call(this, config);
+ },
+
+ initComponent: function () {
+ Deluge.preferences.Proxy.superclass.initComponent.call(this);
+ this.proxy = this.add(
+ new Deluge.preferences.ProxyField({
+ title: _('Proxy'),
+ name: 'proxy',
+ })
+ );
+ this.proxy.on('change', this.onProxyChange, this);
+ deluge.preferences.getOptionsManager().bind('proxy', this.proxy);
+ },
+
+ getValue: function () {
+ return {
+ proxy: this.proxy.getValue(),
+ };
+ },
+
+ setValue: function (value) {
+ for (var proxy in value) {
+ this[proxy].setValue(value[proxy]);
+ }
+ },
+
+ onProxyChange: function (field, newValue, oldValue) {
+ var newValues = this.getValue();
+ var oldValues = Ext.apply({}, newValues);
+ oldValues[field.getName()] = oldValue;
+
+ this.fireEvent('change', this, newValues, oldValues);
+ },
+});
diff --git a/deluge/ui/web/js/deluge-all/preferences/QueuePage.js b/deluge/ui/web/js/deluge-all/preferences/QueuePage.js
new file mode 100644
index 0000000..c7b47c5
--- /dev/null
+++ b/deluge/ui/web/js/deluge-all/preferences/QueuePage.js
@@ -0,0 +1,234 @@
+/**
+ * Deluge.preferences.QueuePage.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Deluge.preferences');
+
+/**
+ * @class Deluge.preferences.Queue
+ * @extends Ext.form.FormPanel
+ */
+Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
+ border: false,
+ title: _('Queue'),
+ header: false,
+ layout: 'form',
+
+ initComponent: function () {
+ Deluge.preferences.Queue.superclass.initComponent.call(this);
+
+ var om = deluge.preferences.getOptionsManager();
+
+ var fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('New Torrents'),
+ style: 'padding-top: 5px; margin-bottom: 0px;',
+ autoHeight: true,
+ labelWidth: 1,
+ defaultType: 'checkbox',
+ });
+ om.bind(
+ 'queue_new_to_top',
+ fieldset.add({
+ fieldLabel: '',
+ labelSeparator: '',
+ height: 22,
+ boxLabel: _('Queue to top'),
+ name: 'queue_new_to_top',
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Active Torrents'),
+ autoHeight: true,
+ labelWidth: 150,
+ defaultType: 'spinnerfield',
+ style: 'padding-top: 5px; margin-bottom: 0px',
+ });
+ om.bind(
+ 'max_active_limit',
+ fieldset.add({
+ fieldLabel: _('Total:'),
+ labelSeparator: '',
+ name: 'max_active_limit',
+ value: 8,
+ width: 80,
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 99999,
+ })
+ );
+ om.bind(
+ 'max_active_downloading',
+ fieldset.add({
+ fieldLabel: _('Downloading:'),
+ labelSeparator: '',
+ name: 'max_active_downloading',
+ value: 3,
+ width: 80,
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 99999,
+ })
+ );
+ om.bind(
+ 'max_active_seeding',
+ fieldset.add({
+ fieldLabel: _('Seeding:'),
+ labelSeparator: '',
+ name: 'max_active_seeding',
+ value: 5,
+ width: 80,
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 99999,
+ })
+ );
+ om.bind(
+ 'dont_count_slow_torrents',
+ fieldset.add({
+ xtype: 'checkbox',
+ name: 'dont_count_slow_torrents',
+ height: 22,
+ hideLabel: true,
+ boxLabel: _('Ignore slow torrents'),
+ })
+ );
+ om.bind(
+ 'auto_manage_prefer_seeds',
+ fieldset.add({
+ xtype: 'checkbox',
+ name: 'auto_manage_prefer_seeds',
+ hideLabel: true,
+ boxLabel: _('Prefer seeding torrents'),
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ title: _('Seeding Rotation'),
+ autoHeight: true,
+ labelWidth: 150,
+ defaultType: 'spinnerfield',
+ style: 'padding-top: 5px; margin-bottom: 0px',
+ });
+ om.bind(
+ 'share_ratio_limit',
+ fieldset.add({
+ fieldLabel: _('Share Ratio:'),
+ labelSeparator: '',
+ name: 'share_ratio_limit',
+ value: 8,
+ width: 80,
+ incrementValue: 0.1,
+ minValue: -1,
+ maxValue: 99999,
+ alternateIncrementValue: 1,
+ decimalPrecision: 2,
+ })
+ );
+ om.bind(
+ 'seed_time_ratio_limit',
+ fieldset.add({
+ fieldLabel: _('Time Ratio:'),
+ labelSeparator: '',
+ name: 'seed_time_ratio_limit',
+ value: 3,
+ width: 80,
+ incrementValue: 0.1,
+ minValue: -1,
+ maxValue: 99999,
+ alternateIncrementValue: 1,
+ decimalPrecision: 2,
+ })
+ );
+ om.bind(
+ 'seed_time_limit',
+ fieldset.add({
+ fieldLabel: _('Time (m):'),
+ labelSeparator: '',
+ name: 'seed_time_limit',
+ value: 5,
+ width: 80,
+ decimalPrecision: 0,
+ minValue: -1,
+ maxValue: 99999,
+ })
+ );
+
+ fieldset = this.add({
+ xtype: 'fieldset',
+ border: false,
+ autoHeight: true,
+ style: 'padding-top: 5px; margin-bottom: 0px',
+ title: _('Share Ratio Reached'),
+
+ layout: 'table',
+ layoutConfig: { columns: 2 },
+ labelWidth: 0,
+ defaultType: 'checkbox',
+
+ defaults: {
+ fieldLabel: '',
+ labelSeparator: '',
+ },
+ });
+ this.stopAtRatio = fieldset.add({
+ name: 'stop_seed_at_ratio',
+ boxLabel: _('Share Ratio:'),
+ });
+ this.stopAtRatio.on('check', this.onStopRatioCheck, this);
+ om.bind('stop_seed_at_ratio', this.stopAtRatio);
+
+ this.stopRatio = fieldset.add({
+ xtype: 'spinnerfield',
+ name: 'stop_seed_ratio',
+ ctCls: 'x-deluge-indent-checkbox',
+ disabled: true,
+ value: '2.0',
+ width: 60,
+ incrementValue: 0.1,
+ minValue: -1,
+ maxValue: 99999,
+ alternateIncrementValue: 1,
+ decimalPrecision: 2,
+ });
+ om.bind('stop_seed_ratio', this.stopRatio);
+
+ this.removeAtRatio = fieldset.add({
+ xtype: 'radiogroup',
+ columns: 1,
+ colspan: 2,
+ disabled: true,
+ style: 'margin-left: 10px',
+ items: [
+ {
+ boxLabel: _('Pause torrent'),
+ name: 'at_ratio',
+ inputValue: false,
+ checked: true,
+ },
+ {
+ boxLabel: _('Remove torrent'),
+ name: 'at_ratio',
+ inputValue: true,
+ },
+ ],
+ });
+ om.bind('remove_seed_at_ratio', this.removeAtRatio);
+ },
+
+ onStopRatioCheck: function (e, checked) {
+ this.stopRatio.setDisabled(!checked);
+ this.removeAtRatio.setDisabled(!checked);
+ },
+});
diff --git a/deluge/ui/web/js/extjs/ext-all-debug.js b/deluge/ui/web/js/extjs/ext-all-debug.js
new file mode 100644
index 0000000..0b15e6e
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-all-debug.js
@@ -0,0 +1,52270 @@
+/*
+This file is part of Ext JS 3.4
+
+Copyright (c) 2011-2013 Sencha Inc
+
+Contact: http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2013-04-03 15:07:25
+*/
+(function(){
+
+var EXTUTIL = Ext.util,
+ EACH = Ext.each,
+ TRUE = true,
+ FALSE = false;
+
+EXTUTIL.Observable = function(){
+
+ var me = this, e = me.events;
+ if(me.listeners){
+ me.on(me.listeners);
+ delete me.listeners;
+ }
+ me.events = e || {};
+};
+
+EXTUTIL.Observable.prototype = {
+
+ filterOptRe : /^(?:scope|delay|buffer|single)$/,
+
+
+ fireEvent : function(){
+ var a = Array.prototype.slice.call(arguments, 0),
+ ename = a[0].toLowerCase(),
+ me = this,
+ ret = TRUE,
+ ce = me.events[ename],
+ cc,
+ q,
+ c;
+ if (me.eventsSuspended === TRUE) {
+ if (q = me.eventQueue) {
+ q.push(a);
+ }
+ }
+ else if(typeof ce == 'object') {
+ if (ce.bubble){
+ if(ce.fire.apply(ce, a.slice(1)) === FALSE) {
+ return FALSE;
+ }
+ c = me.getBubbleTarget && me.getBubbleTarget();
+ if(c && c.enableBubble) {
+ cc = c.events[ename];
+ if(!cc || typeof cc != 'object' || !cc.bubble) {
+ c.enableBubble(ename);
+ }
+ return c.fireEvent.apply(c, a);
+ }
+ }
+ else {
+ a.shift();
+ ret = ce.fire.apply(ce, a);
+ }
+ }
+ return ret;
+ },
+
+
+ addListener : function(eventName, fn, scope, o){
+ var me = this,
+ e,
+ oe,
+ ce;
+
+ if (typeof eventName == 'object') {
+ o = eventName;
+ for (e in o) {
+ oe = o[e];
+ if (!me.filterOptRe.test(e)) {
+ me.addListener(e, oe.fn || oe, oe.scope || o.scope, oe.fn ? oe : o);
+ }
+ }
+ } else {
+ eventName = eventName.toLowerCase();
+ ce = me.events[eventName] || TRUE;
+ if (typeof ce == 'boolean') {
+ me.events[eventName] = ce = new EXTUTIL.Event(me, eventName);
+ }
+ ce.addListener(fn, scope, typeof o == 'object' ? o : {});
+ }
+ },
+
+
+ removeListener : function(eventName, fn, scope){
+ var ce = this.events[eventName.toLowerCase()];
+ if (typeof ce == 'object') {
+ ce.removeListener(fn, scope);
+ }
+ },
+
+
+ purgeListeners : function(){
+ var events = this.events,
+ evt,
+ key;
+ for(key in events){
+ evt = events[key];
+ if(typeof evt == 'object'){
+ evt.clearListeners();
+ }
+ }
+ },
+
+
+ addEvents : function(o){
+ var me = this;
+ me.events = me.events || {};
+ if (typeof o == 'string') {
+ var a = arguments,
+ i = a.length;
+ while(i--) {
+ me.events[a[i]] = me.events[a[i]] || TRUE;
+ }
+ } else {
+ Ext.applyIf(me.events, o);
+ }
+ },
+
+
+ hasListener : function(eventName){
+ var e = this.events[eventName.toLowerCase()];
+ return typeof e == 'object' && e.listeners.length > 0;
+ },
+
+
+ suspendEvents : function(queueSuspended){
+ this.eventsSuspended = TRUE;
+ if(queueSuspended && !this.eventQueue){
+ this.eventQueue = [];
+ }
+ },
+
+
+ resumeEvents : function(){
+ var me = this,
+ queued = me.eventQueue || [];
+ me.eventsSuspended = FALSE;
+ delete me.eventQueue;
+ EACH(queued, function(e) {
+ me.fireEvent.apply(me, e);
+ });
+ }
+};
+
+var OBSERVABLE = EXTUTIL.Observable.prototype;
+
+OBSERVABLE.on = OBSERVABLE.addListener;
+
+OBSERVABLE.un = OBSERVABLE.removeListener;
+
+
+EXTUTIL.Observable.releaseCapture = function(o){
+ o.fireEvent = OBSERVABLE.fireEvent;
+};
+
+function createTargeted(h, o, scope){
+ return function(){
+ if(o.target == arguments[0]){
+ h.apply(scope, Array.prototype.slice.call(arguments, 0));
+ }
+ };
+};
+
+function createBuffered(h, o, l, scope){
+ l.task = new EXTUTIL.DelayedTask();
+ return function(){
+ l.task.delay(o.buffer, h, scope, Array.prototype.slice.call(arguments, 0));
+ };
+};
+
+function createSingle(h, e, fn, scope){
+ return function(){
+ e.removeListener(fn, scope);
+ return h.apply(scope, arguments);
+ };
+};
+
+function createDelayed(h, o, l, scope){
+ return function(){
+ var task = new EXTUTIL.DelayedTask(),
+ args = Array.prototype.slice.call(arguments, 0);
+ if(!l.tasks) {
+ l.tasks = [];
+ }
+ l.tasks.push(task);
+ task.delay(o.delay || 10, function(){
+ l.tasks.remove(task);
+ h.apply(scope, args);
+ }, scope);
+ };
+};
+
+EXTUTIL.Event = function(obj, name){
+ this.name = name;
+ this.obj = obj;
+ this.listeners = [];
+};
+
+EXTUTIL.Event.prototype = {
+ addListener : function(fn, scope, options){
+ var me = this,
+ l;
+ scope = scope || me.obj;
+ if(!me.isListening(fn, scope)){
+ l = me.createListener(fn, scope, options);
+ if(me.firing){
+ me.listeners = me.listeners.slice(0);
+ }
+ me.listeners.push(l);
+ }
+ },
+
+ createListener: function(fn, scope, o){
+ o = o || {};
+ scope = scope || this.obj;
+ var l = {
+ fn: fn,
+ scope: scope,
+ options: o
+ }, h = fn;
+ if(o.target){
+ h = createTargeted(h, o, scope);
+ }
+ if(o.delay){
+ h = createDelayed(h, o, l, scope);
+ }
+ if(o.single){
+ h = createSingle(h, this, fn, scope);
+ }
+ if(o.buffer){
+ h = createBuffered(h, o, l, scope);
+ }
+ l.fireFn = h;
+ return l;
+ },
+
+ findListener : function(fn, scope){
+ var list = this.listeners,
+ i = list.length,
+ l;
+
+ scope = scope || this.obj;
+ while(i--){
+ l = list[i];
+ if(l){
+ if(l.fn == fn && l.scope == scope){
+ return i;
+ }
+ }
+ }
+ return -1;
+ },
+
+ isListening : function(fn, scope){
+ return this.findListener(fn, scope) != -1;
+ },
+
+ removeListener : function(fn, scope){
+ var index,
+ l,
+ k,
+ me = this,
+ ret = FALSE;
+ if((index = me.findListener(fn, scope)) != -1){
+ if (me.firing) {
+ me.listeners = me.listeners.slice(0);
+ }
+ l = me.listeners[index];
+ if(l.task) {
+ l.task.cancel();
+ delete l.task;
+ }
+ k = l.tasks && l.tasks.length;
+ if(k) {
+ while(k--) {
+ l.tasks[k].cancel();
+ }
+ delete l.tasks;
+ }
+ me.listeners.splice(index, 1);
+ ret = TRUE;
+ }
+ return ret;
+ },
+
+
+ clearListeners : function(){
+ var me = this,
+ l = me.listeners,
+ i = l.length;
+ while(i--) {
+ me.removeListener(l[i].fn, l[i].scope);
+ }
+ },
+
+ fire : function(){
+ var me = this,
+ listeners = me.listeners,
+ len = listeners.length,
+ i = 0,
+ l;
+
+ if(len > 0){
+ me.firing = TRUE;
+ var args = Array.prototype.slice.call(arguments, 0);
+ for (; i < len; i++) {
+ l = listeners[i];
+ if(l && l.fireFn.apply(l.scope || me.obj || window, args) === FALSE) {
+ return (me.firing = FALSE);
+ }
+ }
+ }
+ me.firing = FALSE;
+ return TRUE;
+ }
+
+};
+})();
+
+Ext.DomHelper = function(){
+ var tempTableEl = null,
+ emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,
+ tableRe = /^table|tbody|tr|td$/i,
+ confRe = /tag|children|cn|html$/i,
+ tableElRe = /td|tr|tbody/i,
+ cssRe = /([a-z0-9-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,
+ endRe = /end/i,
+ pub,
+
+ afterbegin = 'afterbegin',
+ afterend = 'afterend',
+ beforebegin = 'beforebegin',
+ beforeend = 'beforeend',
+ ts = '<table>',
+ te = '</table>',
+ tbs = ts+'<tbody>',
+ tbe = '</tbody>'+te,
+ trs = tbs + '<tr>',
+ tre = '</tr>'+tbe;
+
+
+ function doInsert(el, o, returnElement, pos, sibling, append){
+ var newNode = pub.insertHtml(pos, Ext.getDom(el), createHtml(o));
+ return returnElement ? Ext.get(newNode, true) : newNode;
+ }
+
+
+ function createHtml(o){
+ var b = '',
+ attr,
+ val,
+ key,
+ cn;
+
+ if(typeof o == "string"){
+ b = o;
+ } else if (Ext.isArray(o)) {
+ for (var i=0; i < o.length; i++) {
+ if(o[i]) {
+ b += createHtml(o[i]);
+ }
+ };
+ } else {
+ b += '<' + (o.tag = o.tag || 'div');
+ for (attr in o) {
+ val = o[attr];
+ if(!confRe.test(attr)){
+ if (typeof val == "object") {
+ b += ' ' + attr + '="';
+ for (key in val) {
+ b += key + ':' + val[key] + ';';
+ };
+ b += '"';
+ }else{
+ b += ' ' + ({cls : 'class', htmlFor : 'for'}[attr] || attr) + '="' + val + '"';
+ }
+ }
+ };
+
+ if (emptyTags.test(o.tag)) {
+ b += '/>';
+ } else {
+ b += '>';
+ if ((cn = o.children || o.cn)) {
+ b += createHtml(cn);
+ } else if(o.html){
+ b += o.html;
+ }
+ b += '</' + o.tag + '>';
+ }
+ }
+ return b;
+ }
+
+ function ieTable(depth, s, h, e){
+ tempTableEl.innerHTML = [s, h, e].join('');
+ var i = -1,
+ el = tempTableEl,
+ ns;
+ while(++i < depth){
+ el = el.firstChild;
+ }
+
+ if(ns = el.nextSibling){
+ var df = document.createDocumentFragment();
+ while(el){
+ ns = el.nextSibling;
+ df.appendChild(el);
+ el = ns;
+ }
+ el = df;
+ }
+ return el;
+ }
+
+
+ function insertIntoTable(tag, where, el, html) {
+ var node,
+ before;
+
+ tempTableEl = tempTableEl || document.createElement('div');
+
+ if(tag == 'td' && (where == afterbegin || where == beforeend) ||
+ !tableElRe.test(tag) && (where == beforebegin || where == afterend)) {
+ return;
+ }
+ before = where == beforebegin ? el :
+ where == afterend ? el.nextSibling :
+ where == afterbegin ? el.firstChild : null;
+
+ if (where == beforebegin || where == afterend) {
+ el = el.parentNode;
+ }
+
+ if (tag == 'td' || (tag == 'tr' && (where == beforeend || where == afterbegin))) {
+ node = ieTable(4, trs, html, tre);
+ } else if ((tag == 'tbody' && (where == beforeend || where == afterbegin)) ||
+ (tag == 'tr' && (where == beforebegin || where == afterend))) {
+ node = ieTable(3, tbs, html, tbe);
+ } else {
+ node = ieTable(2, ts, html, te);
+ }
+ el.insertBefore(node, before);
+ return node;
+ }
+
+
+ function createContextualFragment(html){
+ var div = document.createElement("div"),
+ fragment = document.createDocumentFragment(),
+ i = 0,
+ length, childNodes;
+
+ div.innerHTML = html;
+ childNodes = div.childNodes;
+ length = childNodes.length;
+
+ for (; i < length; i++) {
+ fragment.appendChild(childNodes[i].cloneNode(true));
+ }
+
+ return fragment;
+ }
+
+ pub = {
+
+ markup : function(o){
+ return createHtml(o);
+ },
+
+
+ applyStyles : function(el, styles){
+ if (styles) {
+ var matches;
+
+ el = Ext.fly(el);
+ if (typeof styles == "function") {
+ styles = styles.call();
+ }
+ if (typeof styles == "string") {
+
+ cssRe.lastIndex = 0;
+ while ((matches = cssRe.exec(styles))) {
+ el.setStyle(matches[1], matches[2]);
+ }
+ } else if (typeof styles == "object") {
+ el.setStyle(styles);
+ }
+ }
+ },
+
+ insertHtml : function(where, el, html){
+ var hash = {},
+ hashVal,
+ range,
+ rangeEl,
+ setStart,
+ frag,
+ rs;
+
+ where = where.toLowerCase();
+
+ hash[beforebegin] = ['BeforeBegin', 'previousSibling'];
+ hash[afterend] = ['AfterEnd', 'nextSibling'];
+
+ if (el.insertAdjacentHTML) {
+ if(tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))){
+ return rs;
+ }
+
+ hash[afterbegin] = ['AfterBegin', 'firstChild'];
+ hash[beforeend] = ['BeforeEnd', 'lastChild'];
+ if ((hashVal = hash[where])) {
+ el.insertAdjacentHTML(hashVal[0], html);
+ return el[hashVal[1]];
+ }
+ } else {
+ range = el.ownerDocument.createRange();
+ setStart = 'setStart' + (endRe.test(where) ? 'After' : 'Before');
+ if (hash[where]) {
+ range[setStart](el);
+ if (!range.createContextualFragment) {
+ frag = createContextualFragment(html);
+ }
+ else {
+ frag = range.createContextualFragment(html);
+ }
+ el.parentNode.insertBefore(frag, where == beforebegin ? el : el.nextSibling);
+ return el[(where == beforebegin ? 'previous' : 'next') + 'Sibling'];
+ } else {
+ rangeEl = (where == afterbegin ? 'first' : 'last') + 'Child';
+ if (el.firstChild) {
+ range[setStart](el[rangeEl]);
+ if (!range.createContextualFragment) {
+ frag = createContextualFragment(html);
+ }
+ else {
+ frag = range.createContextualFragment(html);
+ }
+ if(where == afterbegin){
+ el.insertBefore(frag, el.firstChild);
+ }else{
+ el.appendChild(frag);
+ }
+ } else {
+ el.innerHTML = html;
+ }
+ return el[rangeEl];
+ }
+ }
+ throw 'Illegal insertion point -> "' + where + '"';
+ },
+
+
+ insertBefore : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, beforebegin);
+ },
+
+
+ insertAfter : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, afterend, 'nextSibling');
+ },
+
+
+ insertFirst : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, afterbegin, 'firstChild');
+ },
+
+
+ append : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, beforeend, '', true);
+ },
+
+
+ overwrite : function(el, o, returnElement){
+ el = Ext.getDom(el);
+ el.innerHTML = createHtml(o);
+ return returnElement ? Ext.get(el.firstChild) : el.firstChild;
+ },
+
+ createHtml : createHtml
+ };
+ return pub;
+}();
+
+Ext.Template = function(html){
+ var me = this,
+ a = arguments,
+ buf = [],
+ v;
+
+ if (Ext.isArray(html)) {
+ html = html.join("");
+ } else if (a.length > 1) {
+ for(var i = 0, len = a.length; i < len; i++){
+ v = a[i];
+ if(typeof v == 'object'){
+ Ext.apply(me, v);
+ } else {
+ buf.push(v);
+ }
+ };
+ html = buf.join('');
+ }
+
+
+ me.html = html;
+
+ if (me.compiled) {
+ me.compile();
+ }
+};
+Ext.Template.prototype = {
+
+ re : /\{([\w\-]+)\}/g,
+
+
+
+ applyTemplate : function(values){
+ var me = this;
+
+ return me.compiled ?
+ me.compiled(values) :
+ me.html.replace(me.re, function(m, name){
+ return values[name] !== undefined ? values[name] : "";
+ });
+ },
+
+
+ set : function(html, compile){
+ var me = this;
+ me.html = html;
+ me.compiled = null;
+ return compile ? me.compile() : me;
+ },
+
+
+ compile : function(){
+ var me = this,
+ sep = Ext.isGecko ? "+" : ",";
+
+ function fn(m, name){
+ name = "values['" + name + "']";
+ return "'"+ sep + '(' + name + " == undefined ? '' : " + name + ')' + sep + "'";
+ }
+
+ eval("this.compiled = function(values){ return " + (Ext.isGecko ? "'" : "['") +
+ me.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn) +
+ (Ext.isGecko ? "';};" : "'].join('');};"));
+ return me;
+ },
+
+
+ insertFirst: function(el, values, returnElement){
+ return this.doInsert('afterBegin', el, values, returnElement);
+ },
+
+
+ insertBefore: function(el, values, returnElement){
+ return this.doInsert('beforeBegin', el, values, returnElement);
+ },
+
+
+ insertAfter : function(el, values, returnElement){
+ return this.doInsert('afterEnd', el, values, returnElement);
+ },
+
+
+ append : function(el, values, returnElement){
+ return this.doInsert('beforeEnd', el, values, returnElement);
+ },
+
+ doInsert : function(where, el, values, returnEl){
+ el = Ext.getDom(el);
+ var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values));
+ return returnEl ? Ext.get(newNode, true) : newNode;
+ },
+
+
+ overwrite : function(el, values, returnElement){
+ el = Ext.getDom(el);
+ el.innerHTML = this.applyTemplate(values);
+ return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
+ }
+};
+
+Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
+
+
+Ext.Template.from = function(el, config){
+ el = Ext.getDom(el);
+ return new Ext.Template(el.value || el.innerHTML, config || '');
+};
+
+
+Ext.DomQuery = function(){
+ var cache = {},
+ simpleCache = {},
+ valueCache = {},
+ nonSpace = /\S/,
+ trimRe = /^\s+|\s+$/g,
+ tplRe = /\{(\d+)\}/g,
+ modeRe = /^(\s?[\/>+~]\s?|\s|$)/,
+ tagTokenRe = /^(#)?([\w\-\*]+)/,
+ nthRe = /(\d*)n\+?(\d*)/,
+ nthRe2 = /\D/,
+
+
+
+ isIE = window.ActiveXObject ? true : false,
+ key = 30803;
+
+
+
+ eval("var batch = 30803;");
+
+
+
+ function child(parent, index){
+ var i = 0,
+ n = parent.firstChild;
+ while(n){
+ if(n.nodeType == 1){
+ if(++i == index){
+ return n;
+ }
+ }
+ n = n.nextSibling;
+ }
+ return null;
+ }
+
+
+ function next(n){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ return n;
+ }
+
+
+ function prev(n){
+ while((n = n.previousSibling) && n.nodeType != 1);
+ return n;
+ }
+
+
+
+ function children(parent){
+ var n = parent.firstChild,
+ nodeIndex = -1,
+ nextNode;
+ while(n){
+ nextNode = n.nextSibling;
+
+ if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){
+ parent.removeChild(n);
+ }else{
+
+ n.nodeIndex = ++nodeIndex;
+ }
+ n = nextNode;
+ }
+ return this;
+ }
+
+
+
+
+ function byClassName(nodeSet, cls){
+ if(!cls){
+ return nodeSet;
+ }
+ var result = [], ri = -1;
+ for(var i = 0, ci; ci = nodeSet[i]; i++){
+ if((' '+ci.className+' ').indexOf(cls) != -1){
+ result[++ri] = ci;
+ }
+ }
+ return result;
+ };
+
+ function attrValue(n, attr){
+
+ if(!n.tagName && typeof n.length != "undefined"){
+ n = n[0];
+ }
+ if(!n){
+ return null;
+ }
+
+ if(attr == "for"){
+ return n.htmlFor;
+ }
+ if(attr == "class" || attr == "className"){
+ return n.className;
+ }
+ return n.getAttribute(attr) || n[attr];
+
+ };
+
+
+
+
+
+ function getNodes(ns, mode, tagName){
+ var result = [], ri = -1, cs;
+ if(!ns){
+ return result;
+ }
+ tagName = tagName || "*";
+
+ if(typeof ns.getElementsByTagName != "undefined"){
+ ns = [ns];
+ }
+
+
+
+ if(!mode){
+ for(var i = 0, ni; ni = ns[i]; i++){
+ cs = ni.getElementsByTagName(tagName);
+ for(var j = 0, ci; ci = cs[j]; j++){
+ result[++ri] = ci;
+ }
+ }
+
+
+ } else if(mode == "/" || mode == ">"){
+ var utag = tagName.toUpperCase();
+ for(var i = 0, ni, cn; ni = ns[i]; i++){
+ cn = ni.childNodes;
+ for(var j = 0, cj; cj = cn[j]; j++){
+ if(cj.nodeName == utag || cj.nodeName == tagName || tagName == '*'){
+ result[++ri] = cj;
+ }
+ }
+ }
+
+
+ }else if(mode == "+"){
+ var utag = tagName.toUpperCase();
+ for(var i = 0, n; n = ns[i]; i++){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ if(n && (n.nodeName == utag || n.nodeName == tagName || tagName == '*')){
+ result[++ri] = n;
+ }
+ }
+
+
+ }else if(mode == "~"){
+ var utag = tagName.toUpperCase();
+ for(var i = 0, n; n = ns[i]; i++){
+ while((n = n.nextSibling)){
+ if (n.nodeName == utag || n.nodeName == tagName || tagName == '*'){
+ result[++ri] = n;
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ function concat(a, b){
+ if(b.slice){
+ return a.concat(b);
+ }
+ for(var i = 0, l = b.length; i < l; i++){
+ a[a.length] = b[i];
+ }
+ return a;
+ }
+
+ function byTag(cs, tagName){
+ if(cs.tagName || cs == document){
+ cs = [cs];
+ }
+ if(!tagName){
+ return cs;
+ }
+ var result = [], ri = -1;
+ tagName = tagName.toLowerCase();
+ for(var i = 0, ci; ci = cs[i]; i++){
+ if(ci.nodeType == 1 && ci.tagName.toLowerCase() == tagName){
+ result[++ri] = ci;
+ }
+ }
+ return result;
+ }
+
+ function byId(cs, id){
+ if(cs.tagName || cs == document){
+ cs = [cs];
+ }
+ if(!id){
+ return cs;
+ }
+ var result = [], ri = -1;
+ for(var i = 0, ci; ci = cs[i]; i++){
+ if(ci && ci.id == id){
+ result[++ri] = ci;
+ return result;
+ }
+ }
+ return result;
+ }
+
+
+
+ function byAttribute(cs, attr, value, op, custom){
+ var result = [],
+ ri = -1,
+ useGetStyle = custom == "{",
+ fn = Ext.DomQuery.operators[op],
+ a,
+ xml,
+ hasXml;
+
+ for(var i = 0, ci; ci = cs[i]; i++){
+
+ if(ci.nodeType != 1){
+ continue;
+ }
+
+ if(!hasXml){
+ xml = Ext.DomQuery.isXml(ci);
+ hasXml = true;
+ }
+
+
+ if(!xml){
+ if(useGetStyle){
+ a = Ext.DomQuery.getStyle(ci, attr);
+ } else if (attr == "class" || attr == "className"){
+ a = ci.className;
+ } else if (attr == "for"){
+ a = ci.htmlFor;
+ } else if (attr == "href"){
+
+
+ a = ci.getAttribute("href", 2);
+ } else{
+ a = ci.getAttribute(attr);
+ }
+ }else{
+ a = ci.getAttribute(attr);
+ }
+ if((fn && fn(a, value)) || (!fn && a)){
+ result[++ri] = ci;
+ }
+ }
+ return result;
+ }
+
+ function byPseudo(cs, name, value){
+ return Ext.DomQuery.pseudos[name](cs, value);
+ }
+
+ function nodupIEXml(cs){
+ var d = ++key,
+ r;
+ cs[0].setAttribute("_nodup", d);
+ r = [cs[0]];
+ for(var i = 1, len = cs.length; i < len; i++){
+ var c = cs[i];
+ if(!c.getAttribute("_nodup") != d){
+ c.setAttribute("_nodup", d);
+ r[r.length] = c;
+ }
+ }
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].removeAttribute("_nodup");
+ }
+ return r;
+ }
+
+ function nodup(cs){
+ if(!cs){
+ return [];
+ }
+ var len = cs.length, c, i, r = cs, cj, ri = -1;
+ if(!len || typeof cs.nodeType != "undefined" || len == 1){
+ return cs;
+ }
+ if(isIE && typeof cs[0].selectSingleNode != "undefined"){
+ return nodupIEXml(cs);
+ }
+ var d = ++key;
+ cs[0]._nodup = d;
+ for(i = 1; c = cs[i]; i++){
+ if(c._nodup != d){
+ c._nodup = d;
+ }else{
+ r = [];
+ for(var j = 0; j < i; j++){
+ r[++ri] = cs[j];
+ }
+ for(j = i+1; cj = cs[j]; j++){
+ if(cj._nodup != d){
+ cj._nodup = d;
+ r[++ri] = cj;
+ }
+ }
+ return r;
+ }
+ }
+ return r;
+ }
+
+ function quickDiffIEXml(c1, c2){
+ var d = ++key,
+ r = [];
+ for(var i = 0, len = c1.length; i < len; i++){
+ c1[i].setAttribute("_qdiff", d);
+ }
+ for(var i = 0, len = c2.length; i < len; i++){
+ if(c2[i].getAttribute("_qdiff") != d){
+ r[r.length] = c2[i];
+ }
+ }
+ for(var i = 0, len = c1.length; i < len; i++){
+ c1[i].removeAttribute("_qdiff");
+ }
+ return r;
+ }
+
+ function quickDiff(c1, c2){
+ var len1 = c1.length,
+ d = ++key,
+ r = [];
+ if(!len1){
+ return c2;
+ }
+ if(isIE && typeof c1[0].selectSingleNode != "undefined"){
+ return quickDiffIEXml(c1, c2);
+ }
+ for(var i = 0; i < len1; i++){
+ c1[i]._qdiff = d;
+ }
+ for(var i = 0, len = c2.length; i < len; i++){
+ if(c2[i]._qdiff != d){
+ r[r.length] = c2[i];
+ }
+ }
+ return r;
+ }
+
+ function quickId(ns, mode, root, id){
+ if(ns == root){
+ var d = root.ownerDocument || root;
+ return d.getElementById(id);
+ }
+ ns = getNodes(ns, mode, "*");
+ return byId(ns, id);
+ }
+
+ return {
+ getStyle : function(el, name){
+ return Ext.fly(el).getStyle(name);
+ },
+
+ compile : function(path, type){
+ type = type || "select";
+
+
+ var fn = ["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],
+ mode,
+ lastPath,
+ matchers = Ext.DomQuery.matchers,
+ matchersLn = matchers.length,
+ modeMatch,
+
+ lmode = path.match(modeRe);
+
+ if(lmode && lmode[1]){
+ fn[fn.length] = 'mode="'+lmode[1].replace(trimRe, "")+'";';
+ path = path.replace(lmode[1], "");
+ }
+
+
+ while(path.substr(0, 1)=="/"){
+ path = path.substr(1);
+ }
+
+ while(path && lastPath != path){
+ lastPath = path;
+ var tokenMatch = path.match(tagTokenRe);
+ if(type == "select"){
+ if(tokenMatch){
+
+ if(tokenMatch[1] == "#"){
+ fn[fn.length] = 'n = quickId(n, mode, root, "'+tokenMatch[2]+'");';
+ }else{
+ fn[fn.length] = 'n = getNodes(n, mode, "'+tokenMatch[2]+'");';
+ }
+ path = path.replace(tokenMatch[0], "");
+ }else if(path.substr(0, 1) != '@'){
+ fn[fn.length] = 'n = getNodes(n, mode, "*");';
+ }
+
+ }else{
+ if(tokenMatch){
+ if(tokenMatch[1] == "#"){
+ fn[fn.length] = 'n = byId(n, "'+tokenMatch[2]+'");';
+ }else{
+ fn[fn.length] = 'n = byTag(n, "'+tokenMatch[2]+'");';
+ }
+ path = path.replace(tokenMatch[0], "");
+ }
+ }
+ while(!(modeMatch = path.match(modeRe))){
+ var matched = false;
+ for(var j = 0; j < matchersLn; j++){
+ var t = matchers[j];
+ var m = path.match(t.re);
+ if(m){
+ fn[fn.length] = t.select.replace(tplRe, function(x, i){
+ return m[i];
+ });
+ path = path.replace(m[0], "");
+ matched = true;
+ break;
+ }
+ }
+
+ if(!matched){
+ throw 'Error parsing selector, parsing failed at "' + path + '"';
+ }
+ }
+ if(modeMatch[1]){
+ fn[fn.length] = 'mode="'+modeMatch[1].replace(trimRe, "")+'";';
+ path = path.replace(modeMatch[1], "");
+ }
+ }
+
+ fn[fn.length] = "return nodup(n);\n}";
+
+
+ eval(fn.join(""));
+ return f;
+ },
+
+
+ jsSelect: function(path, root, type){
+
+ root = root || document;
+
+ if(typeof root == "string"){
+ root = document.getElementById(root);
+ }
+ var paths = path.split(","),
+ results = [];
+
+
+ for(var i = 0, len = paths.length; i < len; i++){
+ var subPath = paths[i].replace(trimRe, "");
+
+ if(!cache[subPath]){
+ cache[subPath] = Ext.DomQuery.compile(subPath);
+ if(!cache[subPath]){
+ throw subPath + " is not a valid selector";
+ }
+ }
+ var result = cache[subPath](root);
+ if(result && result != document){
+ results = results.concat(result);
+ }
+ }
+
+
+
+ if(paths.length > 1){
+ return nodup(results);
+ }
+ return results;
+ },
+ isXml: function(el) {
+ var docEl = (el ? el.ownerDocument || el : 0).documentElement;
+ return docEl ? docEl.nodeName !== "HTML" : false;
+ },
+ select : document.querySelectorAll ? function(path, root, type) {
+ root = root || document;
+ if (!Ext.DomQuery.isXml(root)) {
+ try {
+ var cs = root.querySelectorAll(path);
+ return Ext.toArray(cs);
+ }
+ catch (ex) {}
+ }
+ return Ext.DomQuery.jsSelect.call(this, path, root, type);
+ } : function(path, root, type) {
+ return Ext.DomQuery.jsSelect.call(this, path, root, type);
+ },
+
+
+ selectNode : function(path, root){
+ return Ext.DomQuery.select(path, root)[0];
+ },
+
+
+ selectValue : function(path, root, defaultValue){
+ path = path.replace(trimRe, "");
+ if(!valueCache[path]){
+ valueCache[path] = Ext.DomQuery.compile(path, "select");
+ }
+ var n = valueCache[path](root), v;
+ n = n[0] ? n[0] : n;
+
+
+
+
+
+ if (typeof n.normalize == 'function') n.normalize();
+
+ v = (n && n.firstChild ? n.firstChild.nodeValue : null);
+ return ((v === null||v === undefined||v==='') ? defaultValue : v);
+ },
+
+
+ selectNumber : function(path, root, defaultValue){
+ var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0);
+ return parseFloat(v);
+ },
+
+
+ is : function(el, ss){
+ if(typeof el == "string"){
+ el = document.getElementById(el);
+ }
+ var isArray = Ext.isArray(el),
+ result = Ext.DomQuery.filter(isArray ? el : [el], ss);
+ return isArray ? (result.length == el.length) : (result.length > 0);
+ },
+
+
+ filter : function(els, ss, nonMatches){
+ ss = ss.replace(trimRe, "");
+ if(!simpleCache[ss]){
+ simpleCache[ss] = Ext.DomQuery.compile(ss, "simple");
+ }
+ var result = simpleCache[ss](els);
+ return nonMatches ? quickDiff(result, els) : result;
+ },
+
+
+ matchers : [{
+ re: /^\.([\w\-]+)/,
+ select: 'n = byClassName(n, " {1} ");'
+ }, {
+ re: /^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,
+ select: 'n = byPseudo(n, "{1}", "{2}");'
+ },{
+ re: /^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?(["']?)(.*?)\4)?[\]\}])/,
+ select: 'n = byAttribute(n, "{2}", "{5}", "{3}", "{1}");'
+ }, {
+ re: /^#([\w\-]+)/,
+ select: 'n = byId(n, "{1}");'
+ },{
+ re: /^@([\w\-]+)/,
+ select: 'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'
+ }
+ ],
+
+ /**
+ * Collection of operator comparison functions. The default operators are =, !=, ^=, $=, *=, %=, |= and ~=.
+ * New operators can be added as long as the match the format <i>c</i>= where <i>c</i> is any character other than space, &gt; &lt;.
+ */
+ operators : {
+ "=" : function(a, v){
+ return a == v;
+ },
+ "!=" : function(a, v){
+ return a != v;
+ },
+ "^=" : function(a, v){
+ return a && a.substr(0, v.length) == v;
+ },
+ "$=" : function(a, v){
+ return a && a.substr(a.length-v.length) == v;
+ },
+ "*=" : function(a, v){
+ return a && a.indexOf(v) !== -1;
+ },
+ "%=" : function(a, v){
+ return (a % v) == 0;
+ },
+ "|=" : function(a, v){
+ return a && (a == v || a.substr(0, v.length+1) == v+'-');
+ },
+ "~=" : function(a, v){
+ return a && (' '+a+' ').indexOf(' '+v+' ') != -1;
+ }
+ },
+
+ /**
+ * <p>Object hash of "pseudo class" filter functions which are used when filtering selections. Each function is passed
+ * two parameters:</p><div class="mdetail-params"><ul>
+ * <li><b>c</b> : Array<div class="sub-desc">An Array of DOM elements to filter.</div></li>
+ * <li><b>v</b> : String<div class="sub-desc">The argument (if any) supplied in the selector.</div></li>
+ * </ul></div>
+ * <p>A filter function returns an Array of DOM elements which conform to the pseudo class.</p>
+ * <p>In addition to the provided pseudo classes listed above such as <code>first-child</code> and <code>nth-child</code>,
+ * developers may add additional, custom psuedo class filters to select elements according to application-specific requirements.</p>
+ * <p>For example, to filter <code>&lt;a></code> elements to only return links to <i>external</i> resources:</p>
+ * <code><pre>
+Ext.DomQuery.pseudos.external = function(c, v){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+// Include in result set only if it's a link to an external resource
+ if(ci.hostname != location.hostname){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+};</pre></code>
+ * Then external links could be gathered with the following statement:<code><pre>
+var externalLinks = Ext.select("a:external");
+</code></pre>
+ */
+ pseudos : {
+ "first-child" : function(c){
+ var r = [], ri = -1, n;
+ for(var i = 0, ci; ci = n = c[i]; i++){
+ while((n = n.previousSibling) && n.nodeType != 1);
+ if(!n){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "last-child" : function(c){
+ var r = [], ri = -1, n;
+ for(var i = 0, ci; ci = n = c[i]; i++){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ if(!n){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "nth-child" : function(c, a) {
+ var r = [], ri = -1,
+ m = nthRe.exec(a == "even" && "2n" || a == "odd" && "2n+1" || !nthRe2.test(a) && "n+" + a || a),
+ f = (m[1] || 1) - 0, l = m[2] - 0;
+ for(var i = 0, n; n = c[i]; i++){
+ var pn = n.parentNode;
+ if (batch != pn._batch) {
+ var j = 0;
+ for(var cn = pn.firstChild; cn; cn = cn.nextSibling){
+ if(cn.nodeType == 1){
+ cn.nodeIndex = ++j;
+ }
+ }
+ pn._batch = batch;
+ }
+ if (f == 1) {
+ if (l == 0 || n.nodeIndex == l){
+ r[++ri] = n;
+ }
+ } else if ((n.nodeIndex + l) % f == 0){
+ r[++ri] = n;
+ }
+ }
+
+ return r;
+ },
+
+ "only-child" : function(c){
+ var r = [], ri = -1;;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(!prev(ci) && !next(ci)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "empty" : function(c){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var cns = ci.childNodes, j = 0, cn, empty = true;
+ while(cn = cns[j]){
+ ++j;
+ if(cn.nodeType == 1 || cn.nodeType == 3){
+ empty = false;
+ break;
+ }
+ }
+ if(empty){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "contains" : function(c, v){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if((ci.textContent||ci.innerText||'').indexOf(v) != -1){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "nodeValue" : function(c, v){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(ci.firstChild && ci.firstChild.nodeValue == v){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "checked" : function(c){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(ci.checked == true){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "not" : function(c, ss){
+ return Ext.DomQuery.filter(c, ss, true);
+ },
+
+ "any" : function(c, selectors){
+ var ss = selectors.split('|'),
+ r = [], ri = -1, s;
+ for(var i = 0, ci; ci = c[i]; i++){
+ for(var j = 0; s = ss[j]; j++){
+ if(Ext.DomQuery.is(ci, s)){
+ r[++ri] = ci;
+ break;
+ }
+ }
+ }
+ return r;
+ },
+
+ "odd" : function(c){
+ return this["nth-child"](c, "odd");
+ },
+
+ "even" : function(c){
+ return this["nth-child"](c, "even");
+ },
+
+ "nth" : function(c, a){
+ return c[a-1] || [];
+ },
+
+ "first" : function(c){
+ return c[0] || [];
+ },
+
+ "last" : function(c){
+ return c[c.length-1] || [];
+ },
+
+ "has" : function(c, ss){
+ var s = Ext.DomQuery.select,
+ r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(s(ss, ci).length > 0){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "next" : function(c, ss){
+ var is = Ext.DomQuery.is,
+ r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var n = next(ci);
+ if(n && is(n, ss)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "prev" : function(c, ss){
+ var is = Ext.DomQuery.is,
+ r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var n = prev(ci);
+ if(n && is(n, ss)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ }
+ }
+ };
+}();
+
+/**
+ * Selects an array of DOM nodes by CSS/XPath selector. Shorthand of {@link Ext.DomQuery#select}
+ * @param {String} path The selector/xpath query
+ * @param {Node} root (optional) The start of the query (defaults to document).
+ * @return {Array}
+ * @member Ext
+ * @method query
+ */
+Ext.query = Ext.DomQuery.select;
+/**
+ * @class Ext.util.DelayedTask
+ * <p> The DelayedTask class provides a convenient way to "buffer" the execution of a method,
+ * performing setTimeout where a new timeout cancels the old timeout. When called, the
+ * task will wait the specified time period before executing. If durng that time period,
+ * the task is called again, the original call will be cancelled. This continues so that
+ * the function is only called a single time for each iteration.</p>
+ * <p>This method is especially useful for things like detecting whether a user has finished
+ * typing in a text field. An example would be performing validation on a keypress. You can
+ * use this class to buffer the keypress events for a certain number of milliseconds, and
+ * perform only if they stop for that amount of time. Usage:</p><pre><code>
+var task = new Ext.util.DelayedTask(function(){
+ alert(Ext.getDom('myInputField').value.length);
+});
+// Wait 500ms before calling our function. If the user presses another key
+// during that 500ms, it will be cancelled and we'll wait another 500ms.
+Ext.get('myInputField').on('keypress', function(){
+ task.{@link #delay}(500);
+});
+ * </code></pre>
+ * <p>Note that we are using a DelayedTask here to illustrate a point. The configuration
+ * option <tt>buffer</tt> for {@link Ext.util.Observable#addListener addListener/on} will
+ * also setup a delayed task for you to buffer events.</p>
+ * @constructor The parameters to this constructor serve as defaults and are not required.
+ * @param {Function} fn (optional) The default function to call.
+ * @param {Object} scope (optional) The default scope (The <code><b>this</b></code> reference) in which the
+ * function is called. If not specified, <code>this</code> will refer to the browser window.
+ * @param {Array} args (optional) The default Array of arguments.
+ */
+Ext.util.DelayedTask = function(fn, scope, args){
+ var me = this,
+ id,
+ call = function(){
+ clearInterval(id);
+ id = null;
+ fn.apply(scope, args || []);
+ };
+
+ /**
+ * Cancels any pending timeout and queues a new one
+ * @param {Number} delay The milliseconds to delay
+ * @param {Function} newFn (optional) Overrides function passed to constructor
+ * @param {Object} newScope (optional) Overrides scope passed to constructor. Remember that if no scope
+ * is specified, <code>this</code> will refer to the browser window.
+ * @param {Array} newArgs (optional) Overrides args passed to constructor
+ */
+ me.delay = function(delay, newFn, newScope, newArgs){
+ me.cancel();
+ fn = newFn || fn;
+ scope = newScope || scope;
+ args = newArgs || args;
+ id = setInterval(call, delay);
+ };
+
+ /**
+ * Cancel the last queued timeout
+ */
+ me.cancel = function(){
+ if(id){
+ clearInterval(id);
+ id = null;
+ }
+ };
+};/**
+ * @class Ext.Element
+ * <p>Encapsulates a DOM element, adding simple DOM manipulation facilities, normalizing for browser differences.</p>
+ * <p>All instances of this class inherit the methods of {@link Ext.Fx} making visual effects easily available to all DOM elements.</p>
+ * <p>Note that the events documented in this class are not Ext events, they encapsulate browser events. To
+ * access the underlying browser event, see {@link Ext.EventObject#browserEvent}. Some older
+ * browsers may not support the full range of events. Which events are supported is beyond the control of ExtJs.</p>
+ * Usage:<br>
+<pre><code>
+// by id
+var el = Ext.get("my-div");
+
+// by DOM element reference
+var el = Ext.get(myDivElement);
+</code></pre>
+ * <b>Animations</b><br />
+ * <p>When an element is manipulated, by default there is no animation.</p>
+ * <pre><code>
+var el = Ext.get("my-div");
+
+// no animation
+el.setWidth(100);
+ * </code></pre>
+ * <p>Many of the functions for manipulating an element have an optional "animate" parameter. This
+ * parameter can be specified as boolean (<tt>true</tt>) for default animation effects.</p>
+ * <pre><code>
+// default animation
+el.setWidth(100, true);
+ * </code></pre>
+ *
+ * <p>To configure the effects, an object literal with animation options to use as the Element animation
+ * configuration object can also be specified. Note that the supported Element animation configuration
+ * options are a subset of the {@link Ext.Fx} animation options specific to Fx effects. The supported
+ * Element animation configuration options are:</p>
+<pre>
+Option Default Description
+--------- -------- ---------------------------------------------
+{@link Ext.Fx#duration duration} .35 The duration of the animation in seconds
+{@link Ext.Fx#easing easing} easeOut The easing method
+{@link Ext.Fx#callback callback} none A function to execute when the anim completes
+{@link Ext.Fx#scope scope} this The scope (this) of the callback function
+</pre>
+ *
+ * <pre><code>
+// Element animation options object
+var opt = {
+ {@link Ext.Fx#duration duration}: 1,
+ {@link Ext.Fx#easing easing}: 'elasticIn',
+ {@link Ext.Fx#callback callback}: this.foo,
+ {@link Ext.Fx#scope scope}: this
+};
+// animation with some options set
+el.setWidth(100, opt);
+ * </code></pre>
+ * <p>The Element animation object being used for the animation will be set on the options
+ * object as "anim", which allows you to stop or manipulate the animation. Here is an example:</p>
+ * <pre><code>
+// using the "anim" property to get the Anim object
+if(opt.anim.isAnimated()){
+ opt.anim.stop();
+}
+ * </code></pre>
+ * <p>Also see the <tt>{@link #animate}</tt> method for another animation technique.</p>
+ * <p><b> Composite (Collections of) Elements</b></p>
+ * <p>For working with collections of Elements, see {@link Ext.CompositeElement}</p>
+ * @constructor Create a new Element directly.
+ * @param {String/HTMLElement} element
+ * @param {Boolean} forceNew (optional) By default the constructor checks to see if there is already an instance of this element in the cache and if there is it returns the same instance. This will skip that check (useful for extending this class).
+ */
+(function(){
+var DOC = document;
+
+Ext.Element = function(element, forceNew){
+ var dom = typeof element == "string" ?
+ DOC.getElementById(element) : element,
+ id;
+
+ if(!dom) return null;
+
+ id = dom.id;
+
+ if(!forceNew && id && Ext.elCache[id]){ // element object already exists
+ return Ext.elCache[id].el;
+ }
+
+ /**
+ * The DOM element
+ * @type HTMLElement
+ */
+ this.dom = dom;
+
+ /**
+ * The DOM element ID
+ * @type String
+ */
+ this.id = id || Ext.id(dom);
+};
+
+var DH = Ext.DomHelper,
+ El = Ext.Element,
+ EC = Ext.elCache;
+
+El.prototype = {
+ /**
+ * Sets the passed attributes as attributes of this element (a style attribute can be a string, object or function)
+ * @param {Object} o The object with the attributes
+ * @param {Boolean} useSet (optional) false to override the default setAttribute to use expandos.
+ * @return {Ext.Element} this
+ */
+ set : function(o, useSet){
+ var el = this.dom,
+ attr,
+ val,
+ useSet = (useSet !== false) && !!el.setAttribute;
+
+ for (attr in o) {
+ if (o.hasOwnProperty(attr)) {
+ val = o[attr];
+ if (attr == 'style') {
+ DH.applyStyles(el, val);
+ } else if (attr == 'cls') {
+ el.className = val;
+ } else if (useSet) {
+ el.setAttribute(attr, val);
+ } else {
+ el[attr] = val;
+ }
+ }
+ }
+ return this;
+ },
+
+// Mouse events
+ /**
+ * @event click
+ * Fires when a mouse click is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event contextmenu
+ * Fires when a right click is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event dblclick
+ * Fires when a mouse double click is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event mousedown
+ * Fires when a mousedown is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event mouseup
+ * Fires when a mouseup is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event mouseover
+ * Fires when a mouseover is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event mousemove
+ * Fires when a mousemove is detected with the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event mouseout
+ * Fires when a mouseout is detected with the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event mouseenter
+ * Fires when the mouse enters the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event mouseleave
+ * Fires when the mouse leaves the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+
+// Keyboard events
+ /**
+ * @event keypress
+ * Fires when a keypress is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event keydown
+ * Fires when a keydown is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event keyup
+ * Fires when a keyup is detected within the element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+
+
+// HTML frame/object events
+ /**
+ * @event load
+ * Fires when the user agent finishes loading all content within the element. Only supported by window, frames, objects and images.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event unload
+ * Fires when the user agent removes all content from a window or frame. For elements, it fires when the target element or any of its content has been removed.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event abort
+ * Fires when an object/image is stopped from loading before completely loaded.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event error
+ * Fires when an object/image/frame cannot be loaded properly.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event resize
+ * Fires when a document view is resized.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event scroll
+ * Fires when a document view is scrolled.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+
+// Form events
+ /**
+ * @event select
+ * Fires when a user selects some text in a text field, including input and textarea.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event change
+ * Fires when a control loses the input focus and its value has been modified since gaining focus.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event submit
+ * Fires when a form is submitted.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event reset
+ * Fires when a form is reset.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event focus
+ * Fires when an element receives focus either via the pointing device or by tab navigation.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event blur
+ * Fires when an element loses focus either via the pointing device or by tabbing navigation.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+
+// User Interface events
+ /**
+ * @event DOMFocusIn
+ * Where supported. Similar to HTML focus event, but can be applied to any focusable element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event DOMFocusOut
+ * Where supported. Similar to HTML blur event, but can be applied to any focusable element.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event DOMActivate
+ * Where supported. Fires when an element is activated, for instance, through a mouse click or a keypress.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+
+// DOM Mutation events
+ /**
+ * @event DOMSubtreeModified
+ * Where supported. Fires when the subtree is modified.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event DOMNodeInserted
+ * Where supported. Fires when a node has been added as a child of another node.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event DOMNodeRemoved
+ * Where supported. Fires when a descendant node of the element is removed.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event DOMNodeRemovedFromDocument
+ * Where supported. Fires when a node is being removed from a document.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event DOMNodeInsertedIntoDocument
+ * Where supported. Fires when a node is being inserted into a document.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event DOMAttrModified
+ * Where supported. Fires when an attribute has been modified.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+ /**
+ * @event DOMCharacterDataModified
+ * Where supported. Fires when the character data has been modified.
+ * @param {Ext.EventObject} e The {@link Ext.EventObject} encapsulating the DOM event.
+ * @param {HtmlElement} t The target of the event.
+ * @param {Object} o The options configuration passed to the {@link #addListener} call.
+ */
+
+ /**
+ * The default unit to append to CSS values where a unit isn't provided (defaults to px).
+ * @type String
+ */
+ defaultUnit : "px",
+
+ /**
+ * Returns true if this element matches the passed simple selector (e.g. div.some-class or span:first-child)
+ * @param {String} selector The simple selector to test
+ * @return {Boolean} True if this element matches the selector, else false
+ */
+ is : function(simpleSelector){
+ return Ext.DomQuery.is(this.dom, simpleSelector);
+ },
+
+ /**
+ * Tries to focus the element. Any exceptions are caught and ignored.
+ * @param {Number} defer (optional) Milliseconds to defer the focus
+ * @return {Ext.Element} this
+ */
+ focus : function(defer, /* private */ dom) {
+ var me = this,
+ dom = dom || me.dom;
+ try{
+ if(Number(defer)){
+ me.focus.defer(defer, null, [null, dom]);
+ }else{
+ dom.focus();
+ }
+ }catch(e){}
+ return me;
+ },
+
+ /**
+ * Tries to blur the element. Any exceptions are caught and ignored.
+ * @return {Ext.Element} this
+ */
+ blur : function() {
+ try{
+ this.dom.blur();
+ }catch(e){}
+ return this;
+ },
+
+ /**
+ * Returns the value of the "value" attribute
+ * @param {Boolean} asNumber true to parse the value as a number
+ * @return {String/Number}
+ */
+ getValue : function(asNumber){
+ var val = this.dom.value;
+ return asNumber ? parseInt(val, 10) : val;
+ },
+
+ /**
+ * Appends an event handler to this element. The shorthand version {@link #on} is equivalent.
+ * @param {String} eventName The name of event to handle.
+ * @param {Function} fn The handler function the event invokes. This function is passed
+ * the following parameters:<ul>
+ * <li><b>evt</b> : EventObject<div class="sub-desc">The {@link Ext.EventObject EventObject} describing the event.</div></li>
+ * <li><b>el</b> : HtmlElement<div class="sub-desc">The DOM element which was the target of the event.
+ * Note that this may be filtered by using the <tt>delegate</tt> option.</div></li>
+ * <li><b>o</b> : Object<div class="sub-desc">The options object from the addListener call.</div></li>
+ * </ul>
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
+ * <b>If omitted, defaults to this Element.</b>.
+ * @param {Object} options (optional) An object containing handler configuration properties.
+ * This may contain any of the following properties:<ul>
+ * <li><b>scope</b> Object : <div class="sub-desc">The scope (<code><b>this</b></code> reference) in which the handler function is executed.
+ * <b>If omitted, defaults to this Element.</b></div></li>
+ * <li><b>delegate</b> String: <div class="sub-desc">A simple selector to filter the target or look for a descendant of the target. See below for additional details.</div></li>
+ * <li><b>stopEvent</b> Boolean: <div class="sub-desc">True to stop the event. That is stop propagation, and prevent the default action.</div></li>
+ * <li><b>preventDefault</b> Boolean: <div class="sub-desc">True to prevent the default action</div></li>
+ * <li><b>stopPropagation</b> Boolean: <div class="sub-desc">True to prevent event propagation</div></li>
+ * <li><b>normalized</b> Boolean: <div class="sub-desc">False to pass a browser event to the handler function instead of an Ext.EventObject</div></li>
+ * <li><b>target</b> Ext.Element: <div class="sub-desc">Only call the handler if the event was fired on the target Element, <i>not</i> if the event was bubbled up from a child node.</div></li>
+ * <li><b>delay</b> Number: <div class="sub-desc">The number of milliseconds to delay the invocation of the handler after the event fires.</div></li>
+ * <li><b>single</b> Boolean: <div class="sub-desc">True to add a handler to handle just the next firing of the event, and then remove itself.</div></li>
+ * <li><b>buffer</b> Number: <div class="sub-desc">Causes the handler to be scheduled to run in an {@link Ext.util.DelayedTask} delayed
+ * by the specified number of milliseconds. If the event fires again within that time, the original
+ * handler is <em>not</em> invoked, but the new handler is scheduled in its place.</div></li>
+ * </ul><br>
+ * <p>
+ * <b>Combining Options</b><br>
+ * In the following examples, the shorthand form {@link #on} is used rather than the more verbose
+ * addListener. The two are equivalent. Using the options argument, it is possible to combine different
+ * types of listeners:<br>
+ * <br>
+ * A delayed, one-time listener that auto stops the event and adds a custom argument (forumId) to the
+ * options object. The options object is available as the third parameter in the handler function.<div style="margin: 5px 20px 20px;">
+ * Code:<pre><code>
+el.on('click', this.onClick, this, {
+ single: true,
+ delay: 100,
+ stopEvent : true,
+ forumId: 4
+});</code></pre></p>
+ * <p>
+ * <b>Attaching multiple handlers in 1 call</b><br>
+ * The method also allows for a single argument to be passed which is a config object containing properties
+ * which specify multiple handlers.</p>
+ * <p>
+ * Code:<pre><code>
+el.on({
+ 'click' : {
+ fn: this.onClick,
+ scope: this,
+ delay: 100
+ },
+ 'mouseover' : {
+ fn: this.onMouseOver,
+ scope: this
+ },
+ 'mouseout' : {
+ fn: this.onMouseOut,
+ scope: this
+ }
+});</code></pre>
+ * <p>
+ * Or a shorthand syntax:<br>
+ * Code:<pre><code></p>
+el.on({
+ 'click' : this.onClick,
+ 'mouseover' : this.onMouseOver,
+ 'mouseout' : this.onMouseOut,
+ scope: this
+});
+ * </code></pre></p>
+ * <p><b>delegate</b></p>
+ * <p>This is a configuration option that you can pass along when registering a handler for
+ * an event to assist with event delegation. Event delegation is a technique that is used to
+ * reduce memory consumption and prevent exposure to memory-leaks. By registering an event
+ * for a container element as opposed to each element within a container. By setting this
+ * configuration option to a simple selector, the target element will be filtered to look for
+ * a descendant of the target.
+ * For example:<pre><code>
+// using this markup:
+&lt;div id='elId'>
+ &lt;p id='p1'>paragraph one&lt;/p>
+ &lt;p id='p2' class='clickable'>paragraph two&lt;/p>
+ &lt;p id='p3'>paragraph three&lt;/p>
+&lt;/div>
+// utilize event delegation to registering just one handler on the container element:
+el = Ext.get('elId');
+el.on(
+ 'click',
+ function(e,t) {
+ // handle click
+ console.info(t.id); // 'p2'
+ },
+ this,
+ {
+ // filter the target element to be a descendant with the class 'clickable'
+ delegate: '.clickable'
+ }
+);
+ * </code></pre></p>
+ * @return {Ext.Element} this
+ */
+ addListener : function(eventName, fn, scope, options){
+ Ext.EventManager.on(this.dom, eventName, fn, scope || this, options);
+ return this;
+ },
+
+ /**
+ * Removes an event handler from this element. The shorthand version {@link #un} is equivalent.
+ * <b>Note</b>: if a <i>scope</i> was explicitly specified when {@link #addListener adding} the
+ * listener, the same scope must be specified here.
+ * Example:
+ * <pre><code>
+el.removeListener('click', this.handlerFn);
+// or
+el.un('click', this.handlerFn);
+</code></pre>
+ * @param {String} eventName The name of the event from which to remove the handler.
+ * @param {Function} fn The handler function to remove. <b>This must be a reference to the function passed into the {@link #addListener} call.</b>
+ * @param {Object} scope If a scope (<b><code>this</code></b> reference) was specified when the listener was added,
+ * then this must refer to the same object.
+ * @return {Ext.Element} this
+ */
+ removeListener : function(eventName, fn, scope){
+ Ext.EventManager.removeListener(this.dom, eventName, fn, scope || this);
+ return this;
+ },
+
+ /**
+ * Removes all previous added listeners from this element
+ * @return {Ext.Element} this
+ */
+ removeAllListeners : function(){
+ Ext.EventManager.removeAll(this.dom);
+ return this;
+ },
+
+ /**
+ * Recursively removes all previous added listeners from this element and its children
+ * @return {Ext.Element} this
+ */
+ purgeAllListeners : function() {
+ Ext.EventManager.purgeElement(this, true);
+ return this;
+ },
+ /**
+ * @private Test if size has a unit, otherwise appends the default
+ */
+ addUnits : function(size){
+ if(size === "" || size == "auto" || size === undefined){
+ size = size || '';
+ } else if(!isNaN(size) || !unitPattern.test(size)){
+ size = size + (this.defaultUnit || 'px');
+ }
+ return size;
+ },
+
+ /**
+ * <p>Updates the <a href="http:
+ * from a specified URL. Note that this is subject to the <a href="http://en.wikipedia.org/wiki/Same_origin_policy">Same Origin Policy</a></p>
+ * <p>Updating innerHTML of an element will <b>not</b> execute embedded <tt>&lt;script></tt> elements. This is a browser restriction.</p>
+ * @param {Mixed} options. Either a sring containing the URL from which to load the HTML, or an {@link Ext.Ajax#request} options object specifying
+ * exactly how to request the HTML.
+ * @return {Ext.Element} this
+ */
+ load : function(url, params, cb){
+ Ext.Ajax.request(Ext.apply({
+ params: params,
+ url: url.url || url,
+ callback: cb,
+ el: this.dom,
+ indicatorText: url.indicatorText || ''
+ }, Ext.isObject(url) ? url : {}));
+ return this;
+ },
+
+
+ isBorderBox : function(){
+ return Ext.isBorderBox || Ext.isForcedBorderBox || noBoxAdjust[(this.dom.tagName || "").toLowerCase()];
+ },
+
+
+ remove : function(){
+ var me = this,
+ dom = me.dom;
+
+ if (dom) {
+ delete me.dom;
+ Ext.removeNode(dom);
+ }
+ },
+
+
+ hover : function(overFn, outFn, scope, options){
+ var me = this;
+ me.on('mouseenter', overFn, scope || me.dom, options);
+ me.on('mouseleave', outFn, scope || me.dom, options);
+ return me;
+ },
+
+
+ contains : function(el){
+ return !el ? false : Ext.lib.Dom.isAncestor(this.dom, el.dom ? el.dom : el);
+ },
+
+
+ getAttributeNS : function(ns, name){
+ return this.getAttribute(name, ns);
+ },
+
+
+ getAttribute: (function(){
+ var test = document.createElement('table'),
+ isBrokenOnTable = false,
+ hasGetAttribute = 'getAttribute' in test,
+ unknownRe = /undefined|unknown/;
+
+ if (hasGetAttribute) {
+
+ try {
+ test.getAttribute('ext:qtip');
+ } catch (e) {
+ isBrokenOnTable = true;
+ }
+
+ return function(name, ns) {
+ var el = this.dom,
+ value;
+
+ if (el.getAttributeNS) {
+ value = el.getAttributeNS(ns, name) || null;
+ }
+
+ if (value == null) {
+ if (ns) {
+ if (isBrokenOnTable && el.tagName.toUpperCase() == 'TABLE') {
+ try {
+ value = el.getAttribute(ns + ':' + name);
+ } catch (e) {
+ value = '';
+ }
+ } else {
+ value = el.getAttribute(ns + ':' + name);
+ }
+ } else {
+ value = el.getAttribute(name) || el[name];
+ }
+ }
+ return value || '';
+ };
+ } else {
+ return function(name, ns) {
+ var el = this.om,
+ value,
+ attribute;
+
+ if (ns) {
+ attribute = el[ns + ':' + name];
+ value = unknownRe.test(typeof attribute) ? undefined : attribute;
+ } else {
+ value = el[name];
+ }
+ return value || '';
+ };
+ }
+ test = null;
+ })(),
+
+
+ update : function(html) {
+ if (this.dom) {
+ this.dom.innerHTML = html;
+ }
+ return this;
+ }
+};
+
+var ep = El.prototype;
+
+El.addMethods = function(o){
+ Ext.apply(ep, o);
+};
+
+
+ep.on = ep.addListener;
+
+
+ep.un = ep.removeListener;
+
+
+ep.autoBoxAdjust = true;
+
+
+var unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,
+ docEl;
+
+
+El.get = function(el){
+ var ex,
+ elm,
+ id;
+ if(!el){ return null; }
+ if (typeof el == "string") {
+ if (!(elm = DOC.getElementById(el))) {
+ return null;
+ }
+ if (EC[el] && EC[el].el) {
+ ex = EC[el].el;
+ ex.dom = elm;
+ } else {
+ ex = El.addToCache(new El(elm));
+ }
+ return ex;
+ } else if (el.tagName) {
+ if(!(id = el.id)){
+ id = Ext.id(el);
+ }
+ if (EC[id] && EC[id].el) {
+ ex = EC[id].el;
+ ex.dom = el;
+ } else {
+ ex = El.addToCache(new El(el));
+ }
+ return ex;
+ } else if (el instanceof El) {
+ if(el != docEl){
+
+
+
+
+ if (Ext.isIE && (el.id == undefined || el.id == '')) {
+ el.dom = el.dom;
+ } else {
+ el.dom = DOC.getElementById(el.id) || el.dom;
+ }
+ }
+ return el;
+ } else if(el.isComposite) {
+ return el;
+ } else if(Ext.isArray(el)) {
+ return El.select(el);
+ } else if(el == DOC) {
+
+ if(!docEl){
+ var f = function(){};
+ f.prototype = El.prototype;
+ docEl = new f();
+ docEl.dom = DOC;
+ }
+ return docEl;
+ }
+ return null;
+};
+
+El.addToCache = function(el, id){
+ id = id || el.id;
+ EC[id] = {
+ el: el,
+ data: {},
+ events: {}
+ };
+ return el;
+};
+
+
+El.data = function(el, key, value){
+ el = El.get(el);
+ if (!el) {
+ return null;
+ }
+ var c = EC[el.id].data;
+ if(arguments.length == 2){
+ return c[key];
+ }else{
+ return (c[key] = value);
+ }
+};
+
+
+
+
+function garbageCollect(){
+ if(!Ext.enableGarbageCollector){
+ clearInterval(El.collectorThreadId);
+ } else {
+ var eid,
+ el,
+ d,
+ o;
+
+ for(eid in EC){
+ o = EC[eid];
+ if(o.skipGC){
+ Ext.EventManager.removeFromSpecialCache(o.el);
+ continue;
+ }
+ el = o.el;
+ d = el.dom;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if(!d || !d.parentNode || (!d.offsetParent && !DOC.getElementById(eid))){
+ if(Ext.enableListenerCollection){
+ Ext.EventManager.removeAll(d);
+ }
+ delete EC[eid];
+ }
+ }
+
+ if (Ext.isIE) {
+ var t = {};
+ for (eid in EC) {
+ t[eid] = EC[eid];
+ }
+ EC = Ext.elCache = t;
+ }
+ }
+}
+El.collectorThreadId = setInterval(garbageCollect, 30000);
+
+var flyFn = function(){};
+flyFn.prototype = El.prototype;
+
+
+El.Flyweight = function(dom){
+ this.dom = dom;
+};
+
+El.Flyweight.prototype = new flyFn();
+El.Flyweight.prototype.isFlyweight = true;
+El._flyweights = {};
+
+
+El.fly = function(el, named){
+ var ret = null;
+ named = named || '_global';
+
+ if (el = Ext.getDom(el)) {
+ (El._flyweights[named] = El._flyweights[named] || new El.Flyweight()).dom = el;
+ ret = El._flyweights[named];
+ }
+ return ret;
+};
+
+
+Ext.get = El.get;
+
+
+Ext.fly = El.fly;
+
+
+var noBoxAdjust = Ext.isStrict ? {
+ select:1
+} : {
+ input:1, select:1, textarea:1
+};
+if(Ext.isIE || Ext.isGecko){
+ noBoxAdjust['button'] = 1;
+}
+
+})();
+
+Ext.Element.addMethods(function(){
+ var PARENTNODE = 'parentNode',
+ NEXTSIBLING = 'nextSibling',
+ PREVIOUSSIBLING = 'previousSibling',
+ DQ = Ext.DomQuery,
+ GET = Ext.get;
+
+ return {
+
+ findParent : function(simpleSelector, maxDepth, returnEl){
+ var p = this.dom,
+ b = document.body,
+ depth = 0,
+ stopEl;
+ if(Ext.isGecko && Object.prototype.toString.call(p) == '[object XULElement]') {
+ return null;
+ }
+ maxDepth = maxDepth || 50;
+ if (isNaN(maxDepth)) {
+ stopEl = Ext.getDom(maxDepth);
+ maxDepth = Number.MAX_VALUE;
+ }
+ while(p && p.nodeType == 1 && depth < maxDepth && p != b && p != stopEl){
+ if(DQ.is(p, simpleSelector)){
+ return returnEl ? GET(p) : p;
+ }
+ depth++;
+ p = p.parentNode;
+ }
+ return null;
+ },
+
+
+ findParentNode : function(simpleSelector, maxDepth, returnEl){
+ var p = Ext.fly(this.dom.parentNode, '_internal');
+ return p ? p.findParent(simpleSelector, maxDepth, returnEl) : null;
+ },
+
+
+ up : function(simpleSelector, maxDepth){
+ return this.findParentNode(simpleSelector, maxDepth, true);
+ },
+
+
+ select : function(selector){
+ return Ext.Element.select(selector, this.dom);
+ },
+
+
+ query : function(selector){
+ return DQ.select(selector, this.dom);
+ },
+
+
+ child : function(selector, returnDom){
+ var n = DQ.selectNode(selector, this.dom);
+ return returnDom ? n : GET(n);
+ },
+
+
+ down : function(selector, returnDom){
+ var n = DQ.selectNode(" > " + selector, this.dom);
+ return returnDom ? n : GET(n);
+ },
+
+
+ parent : function(selector, returnDom){
+ return this.matchNode(PARENTNODE, PARENTNODE, selector, returnDom);
+ },
+
+
+ next : function(selector, returnDom){
+ return this.matchNode(NEXTSIBLING, NEXTSIBLING, selector, returnDom);
+ },
+
+
+ prev : function(selector, returnDom){
+ return this.matchNode(PREVIOUSSIBLING, PREVIOUSSIBLING, selector, returnDom);
+ },
+
+
+
+ first : function(selector, returnDom){
+ return this.matchNode(NEXTSIBLING, 'firstChild', selector, returnDom);
+ },
+
+
+ last : function(selector, returnDom){
+ return this.matchNode(PREVIOUSSIBLING, 'lastChild', selector, returnDom);
+ },
+
+ matchNode : function(dir, start, selector, returnDom){
+ var n = this.dom[start];
+ while(n){
+ if(n.nodeType == 1 && (!selector || DQ.is(n, selector))){
+ return !returnDom ? GET(n) : n;
+ }
+ n = n[dir];
+ }
+ return null;
+ }
+ };
+}());
+Ext.Element.addMethods(
+function() {
+ var GETDOM = Ext.getDom,
+ GET = Ext.get,
+ DH = Ext.DomHelper;
+
+ return {
+
+ appendChild: function(el){
+ return GET(el).appendTo(this);
+ },
+
+
+ appendTo: function(el){
+ GETDOM(el).appendChild(this.dom);
+ return this;
+ },
+
+
+ insertBefore: function(el){
+ (el = GETDOM(el)).parentNode.insertBefore(this.dom, el);
+ return this;
+ },
+
+
+ insertAfter: function(el){
+ (el = GETDOM(el)).parentNode.insertBefore(this.dom, el.nextSibling);
+ return this;
+ },
+
+
+ insertFirst: function(el, returnDom){
+ el = el || {};
+ if(el.nodeType || el.dom || typeof el == 'string'){
+ el = GETDOM(el);
+ this.dom.insertBefore(el, this.dom.firstChild);
+ return !returnDom ? GET(el) : el;
+ }else{
+ return this.createChild(el, this.dom.firstChild, returnDom);
+ }
+ },
+
+
+ replace: function(el){
+ el = GET(el);
+ this.insertBefore(el);
+ el.remove();
+ return this;
+ },
+
+
+ replaceWith: function(el){
+ var me = this;
+
+ if(el.nodeType || el.dom || typeof el == 'string'){
+ el = GETDOM(el);
+ me.dom.parentNode.insertBefore(el, me.dom);
+ }else{
+ el = DH.insertBefore(me.dom, el);
+ }
+
+ delete Ext.elCache[me.id];
+ Ext.removeNode(me.dom);
+ me.id = Ext.id(me.dom = el);
+ Ext.Element.addToCache(me.isFlyweight ? new Ext.Element(me.dom) : me);
+ return me;
+ },
+
+
+ createChild: function(config, insertBefore, returnDom){
+ config = config || {tag:'div'};
+ return insertBefore ?
+ DH.insertBefore(insertBefore, config, returnDom !== true) :
+ DH[!this.dom.firstChild ? 'overwrite' : 'append'](this.dom, config, returnDom !== true);
+ },
+
+
+ wrap: function(config, returnDom){
+ var newEl = DH.insertBefore(this.dom, config || {tag: "div"}, !returnDom);
+ newEl.dom ? newEl.dom.appendChild(this.dom) : newEl.appendChild(this.dom);
+ return newEl;
+ },
+
+
+ insertHtml : function(where, html, returnEl){
+ var el = DH.insertHtml(where, this.dom, html);
+ return returnEl ? Ext.get(el) : el;
+ }
+ };
+}());
+Ext.Element.addMethods(function(){
+
+ var supports = Ext.supports,
+ propCache = {},
+ camelRe = /(-[a-z])/gi,
+ view = document.defaultView,
+ opacityRe = /alpha\(opacity=(.*)\)/i,
+ trimRe = /^\s+|\s+$/g,
+ EL = Ext.Element,
+ spacesRe = /\s+/,
+ wordsRe = /\w/g,
+ PADDING = "padding",
+ MARGIN = "margin",
+ BORDER = "border",
+ LEFT = "-left",
+ RIGHT = "-right",
+ TOP = "-top",
+ BOTTOM = "-bottom",
+ WIDTH = "-width",
+ MATH = Math,
+ HIDDEN = 'hidden',
+ ISCLIPPED = 'isClipped',
+ OVERFLOW = 'overflow',
+ OVERFLOWX = 'overflow-x',
+ OVERFLOWY = 'overflow-y',
+ ORIGINALCLIP = 'originalClip',
+
+ borders = {l: BORDER + LEFT + WIDTH, r: BORDER + RIGHT + WIDTH, t: BORDER + TOP + WIDTH, b: BORDER + BOTTOM + WIDTH},
+ paddings = {l: PADDING + LEFT, r: PADDING + RIGHT, t: PADDING + TOP, b: PADDING + BOTTOM},
+ margins = {l: MARGIN + LEFT, r: MARGIN + RIGHT, t: MARGIN + TOP, b: MARGIN + BOTTOM},
+ data = Ext.Element.data;
+
+
+
+ function camelFn(m, a) {
+ return a.charAt(1).toUpperCase();
+ }
+
+ function chkCache(prop) {
+ return propCache[prop] || (propCache[prop] = prop == 'float' ? (supports.cssFloat ? 'cssFloat' : 'styleFloat') : prop.replace(camelRe, camelFn));
+ }
+
+ return {
+
+ adjustWidth : function(width) {
+ var me = this;
+ var isNum = (typeof width == "number");
+ if(isNum && me.autoBoxAdjust && !me.isBorderBox()){
+ width -= (me.getBorderWidth("lr") + me.getPadding("lr"));
+ }
+ return (isNum && width < 0) ? 0 : width;
+ },
+
+
+ adjustHeight : function(height) {
+ var me = this;
+ var isNum = (typeof height == "number");
+ if(isNum && me.autoBoxAdjust && !me.isBorderBox()){
+ height -= (me.getBorderWidth("tb") + me.getPadding("tb"));
+ }
+ return (isNum && height < 0) ? 0 : height;
+ },
+
+
+
+ addClass : function(className){
+ var me = this,
+ i,
+ len,
+ v,
+ cls = [];
+
+ if (!Ext.isArray(className)) {
+ if (typeof className == 'string' && !this.hasClass(className)) {
+ me.dom.className += " " + className;
+ }
+ }
+ else {
+ for (i = 0, len = className.length; i < len; i++) {
+ v = className[i];
+ if (typeof v == 'string' && (' ' + me.dom.className + ' ').indexOf(' ' + v + ' ') == -1) {
+ cls.push(v);
+ }
+ }
+ if (cls.length) {
+ me.dom.className += " " + cls.join(" ");
+ }
+ }
+ return me;
+ },
+
+
+ removeClass : function(className){
+ var me = this,
+ i,
+ idx,
+ len,
+ cls,
+ elClasses;
+ if (!Ext.isArray(className)){
+ className = [className];
+ }
+ if (me.dom && me.dom.className) {
+ elClasses = me.dom.className.replace(trimRe, '').split(spacesRe);
+ for (i = 0, len = className.length; i < len; i++) {
+ cls = className[i];
+ if (typeof cls == 'string') {
+ cls = cls.replace(trimRe, '');
+ idx = elClasses.indexOf(cls);
+ if (idx != -1) {
+ elClasses.splice(idx, 1);
+ }
+ }
+ }
+ me.dom.className = elClasses.join(" ");
+ }
+ return me;
+ },
+
+
+ radioClass : function(className){
+ var cn = this.dom.parentNode.childNodes,
+ v,
+ i,
+ len;
+ className = Ext.isArray(className) ? className : [className];
+ for (i = 0, len = cn.length; i < len; i++) {
+ v = cn[i];
+ if (v && v.nodeType == 1) {
+ Ext.fly(v, '_internal').removeClass(className);
+ }
+ };
+ return this.addClass(className);
+ },
+
+
+ toggleClass : function(className){
+ return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
+ },
+
+
+ hasClass : function(className){
+ return className && (' '+this.dom.className+' ').indexOf(' '+className+' ') != -1;
+ },
+
+
+ replaceClass : function(oldClassName, newClassName){
+ return this.removeClass(oldClassName).addClass(newClassName);
+ },
+
+ isStyle : function(style, val) {
+ return this.getStyle(style) == val;
+ },
+
+
+ getStyle : function(){
+ return view && view.getComputedStyle ?
+ function(prop){
+ var el = this.dom,
+ v,
+ cs,
+ out,
+ display;
+
+ if(el == document){
+ return null;
+ }
+ prop = chkCache(prop);
+ out = (v = el.style[prop]) ? v :
+ (cs = view.getComputedStyle(el, "")) ? cs[prop] : null;
+
+
+
+ if(prop == 'marginRight' && out != '0px' && !supports.correctRightMargin){
+ display = el.style.display;
+ el.style.display = 'inline-block';
+ out = view.getComputedStyle(el, '').marginRight;
+ el.style.display = display;
+ }
+
+ if(prop == 'backgroundColor' && out == 'rgba(0, 0, 0, 0)' && !supports.correctTransparentColor){
+ out = 'transparent';
+ }
+ return out;
+ } :
+ function(prop){
+ var el = this.dom,
+ m,
+ cs;
+
+ if(el == document) return null;
+ if (prop == 'opacity') {
+ if (el.style.filter.match) {
+ if(m = el.style.filter.match(opacityRe)){
+ var fv = parseFloat(m[1]);
+ if(!isNaN(fv)){
+ return fv ? fv / 100 : 0;
+ }
+ }
+ }
+ return 1;
+ }
+ prop = chkCache(prop);
+ return el.style[prop] || ((cs = el.currentStyle) ? cs[prop] : null);
+ };
+ }(),
+
+
+ getColor : function(attr, defaultValue, prefix){
+ var v = this.getStyle(attr),
+ color = (typeof prefix != 'undefined') ? prefix : '#',
+ h;
+
+ if(!v || (/transparent|inherit/.test(v))) {
+ return defaultValue;
+ }
+ if(/^r/.test(v)){
+ Ext.each(v.slice(4, v.length -1).split(','), function(s){
+ h = parseInt(s, 10);
+ color += (h < 16 ? '0' : '') + h.toString(16);
+ });
+ }else{
+ v = v.replace('#', '');
+ color += v.length == 3 ? v.replace(/^(\w)(\w)(\w)$/, '$1$1$2$2$3$3') : v;
+ }
+ return(color.length > 5 ? color.toLowerCase() : defaultValue);
+ },
+
+
+ setStyle : function(prop, value){
+ var tmp, style;
+
+ if (typeof prop != 'object') {
+ tmp = {};
+ tmp[prop] = value;
+ prop = tmp;
+ }
+ for (style in prop) {
+ value = prop[style];
+ style == 'opacity' ?
+ this.setOpacity(value) :
+ this.dom.style[chkCache(style)] = value;
+ }
+ return this;
+ },
+
+
+ setOpacity : function(opacity, animate){
+ var me = this,
+ s = me.dom.style;
+
+ if(!animate || !me.anim){
+ if(Ext.isIE9m){
+ var opac = opacity < 1 ? 'alpha(opacity=' + opacity * 100 + ')' : '',
+ val = s.filter.replace(opacityRe, '').replace(trimRe, '');
+
+ s.zoom = 1;
+ s.filter = val + (val.length > 0 ? ' ' : '') + opac;
+ }else{
+ s.opacity = opacity;
+ }
+ }else{
+ me.anim({opacity: {to: opacity}}, me.preanim(arguments, 1), null, .35, 'easeIn');
+ }
+ return me;
+ },
+
+
+ clearOpacity : function(){
+ var style = this.dom.style;
+ if(Ext.isIE9m){
+ if(!Ext.isEmpty(style.filter)){
+ style.filter = style.filter.replace(opacityRe, '').replace(trimRe, '');
+ }
+ }else{
+ style.opacity = style['-moz-opacity'] = style['-khtml-opacity'] = '';
+ }
+ return this;
+ },
+
+
+ getHeight : function(contentHeight){
+ var me = this,
+ dom = me.dom,
+ hidden = Ext.isIE9m && me.isStyle('display', 'none'),
+ h = MATH.max(dom.offsetHeight, hidden ? 0 : dom.clientHeight) || 0;
+
+ h = !contentHeight ? h : h - me.getBorderWidth("tb") - me.getPadding("tb");
+ return h < 0 ? 0 : h;
+ },
+
+
+ getWidth : function(contentWidth){
+ var me = this,
+ dom = me.dom,
+ hidden = Ext.isIE9m && me.isStyle('display', 'none'),
+ w = MATH.max(dom.offsetWidth, hidden ? 0 : dom.clientWidth) || 0;
+ w = !contentWidth ? w : w - me.getBorderWidth("lr") - me.getPadding("lr");
+ return w < 0 ? 0 : w;
+ },
+
+
+ setWidth : function(width, animate){
+ var me = this;
+ width = me.adjustWidth(width);
+ !animate || !me.anim ?
+ me.dom.style.width = me.addUnits(width) :
+ me.anim({width : {to : width}}, me.preanim(arguments, 1));
+ return me;
+ },
+
+
+ setHeight : function(height, animate){
+ var me = this;
+ height = me.adjustHeight(height);
+ !animate || !me.anim ?
+ me.dom.style.height = me.addUnits(height) :
+ me.anim({height : {to : height}}, me.preanim(arguments, 1));
+ return me;
+ },
+
+
+ getBorderWidth : function(side){
+ return this.addStyles(side, borders);
+ },
+
+
+ getPadding : function(side){
+ return this.addStyles(side, paddings);
+ },
+
+
+ clip : function(){
+ var me = this,
+ dom = me.dom;
+
+ if(!data(dom, ISCLIPPED)){
+ data(dom, ISCLIPPED, true);
+ data(dom, ORIGINALCLIP, {
+ o: me.getStyle(OVERFLOW),
+ x: me.getStyle(OVERFLOWX),
+ y: me.getStyle(OVERFLOWY)
+ });
+ me.setStyle(OVERFLOW, HIDDEN);
+ me.setStyle(OVERFLOWX, HIDDEN);
+ me.setStyle(OVERFLOWY, HIDDEN);
+ }
+ return me;
+ },
+
+
+ unclip : function(){
+ var me = this,
+ dom = me.dom;
+
+ if(data(dom, ISCLIPPED)){
+ data(dom, ISCLIPPED, false);
+ var o = data(dom, ORIGINALCLIP);
+ if(o.o){
+ me.setStyle(OVERFLOW, o.o);
+ }
+ if(o.x){
+ me.setStyle(OVERFLOWX, o.x);
+ }
+ if(o.y){
+ me.setStyle(OVERFLOWY, o.y);
+ }
+ }
+ return me;
+ },
+
+
+ addStyles : function(sides, styles){
+ var ttlSize = 0,
+ sidesArr = sides.match(wordsRe),
+ side,
+ size,
+ i,
+ len = sidesArr.length;
+ for (i = 0; i < len; i++) {
+ side = sidesArr[i];
+ size = side && parseInt(this.getStyle(styles[side]), 10);
+ if (size) {
+ ttlSize += MATH.abs(size);
+ }
+ }
+ return ttlSize;
+ },
+
+ margins : margins
+ };
+}()
+);
+
+(function(){
+var D = Ext.lib.Dom,
+ LEFT = "left",
+ RIGHT = "right",
+ TOP = "top",
+ BOTTOM = "bottom",
+ POSITION = "position",
+ STATIC = "static",
+ RELATIVE = "relative",
+ AUTO = "auto",
+ ZINDEX = "z-index";
+
+Ext.Element.addMethods({
+
+ getX : function(){
+ return D.getX(this.dom);
+ },
+
+
+ getY : function(){
+ return D.getY(this.dom);
+ },
+
+
+ getXY : function(){
+ return D.getXY(this.dom);
+ },
+
+
+ getOffsetsTo : function(el){
+ var o = this.getXY(),
+ e = Ext.fly(el, '_internal').getXY();
+ return [o[0]-e[0],o[1]-e[1]];
+ },
+
+
+ setX : function(x, animate){
+ return this.setXY([x, this.getY()], this.animTest(arguments, animate, 1));
+ },
+
+
+ setY : function(y, animate){
+ return this.setXY([this.getX(), y], this.animTest(arguments, animate, 1));
+ },
+
+
+ setLeft : function(left){
+ this.setStyle(LEFT, this.addUnits(left));
+ return this;
+ },
+
+
+ setTop : function(top){
+ this.setStyle(TOP, this.addUnits(top));
+ return this;
+ },
+
+
+ setRight : function(right){
+ this.setStyle(RIGHT, this.addUnits(right));
+ return this;
+ },
+
+
+ setBottom : function(bottom){
+ this.setStyle(BOTTOM, this.addUnits(bottom));
+ return this;
+ },
+
+
+ setXY : function(pos, animate){
+ var me = this;
+ if(!animate || !me.anim){
+ D.setXY(me.dom, pos);
+ }else{
+ me.anim({points: {to: pos}}, me.preanim(arguments, 1), 'motion');
+ }
+ return me;
+ },
+
+
+ setLocation : function(x, y, animate){
+ return this.setXY([x, y], this.animTest(arguments, animate, 2));
+ },
+
+
+ moveTo : function(x, y, animate){
+ return this.setXY([x, y], this.animTest(arguments, animate, 2));
+ },
+
+
+ getLeft : function(local){
+ return !local ? this.getX() : parseInt(this.getStyle(LEFT), 10) || 0;
+ },
+
+
+ getRight : function(local){
+ var me = this;
+ return !local ? me.getX() + me.getWidth() : (me.getLeft(true) + me.getWidth()) || 0;
+ },
+
+
+ getTop : function(local) {
+ return !local ? this.getY() : parseInt(this.getStyle(TOP), 10) || 0;
+ },
+
+
+ getBottom : function(local){
+ var me = this;
+ return !local ? me.getY() + me.getHeight() : (me.getTop(true) + me.getHeight()) || 0;
+ },
+
+
+ position : function(pos, zIndex, x, y){
+ var me = this;
+
+ if(!pos && me.isStyle(POSITION, STATIC)){
+ me.setStyle(POSITION, RELATIVE);
+ } else if(pos) {
+ me.setStyle(POSITION, pos);
+ }
+ if(zIndex){
+ me.setStyle(ZINDEX, zIndex);
+ }
+ if(x || y) me.setXY([x || false, y || false]);
+ },
+
+
+ clearPositioning : function(value){
+ value = value || '';
+ this.setStyle({
+ left : value,
+ right : value,
+ top : value,
+ bottom : value,
+ "z-index" : "",
+ position : STATIC
+ });
+ return this;
+ },
+
+
+ getPositioning : function(){
+ var l = this.getStyle(LEFT);
+ var t = this.getStyle(TOP);
+ return {
+ "position" : this.getStyle(POSITION),
+ "left" : l,
+ "right" : l ? "" : this.getStyle(RIGHT),
+ "top" : t,
+ "bottom" : t ? "" : this.getStyle(BOTTOM),
+ "z-index" : this.getStyle(ZINDEX)
+ };
+ },
+
+
+ setPositioning : function(pc){
+ var me = this,
+ style = me.dom.style;
+
+ me.setStyle(pc);
+
+ if(pc.right == AUTO){
+ style.right = "";
+ }
+ if(pc.bottom == AUTO){
+ style.bottom = "";
+ }
+
+ return me;
+ },
+
+
+ translatePoints : function(x, y){
+ y = isNaN(x[1]) ? y : x[1];
+ x = isNaN(x[0]) ? x : x[0];
+ var me = this,
+ relative = me.isStyle(POSITION, RELATIVE),
+ o = me.getXY(),
+ l = parseInt(me.getStyle(LEFT), 10),
+ t = parseInt(me.getStyle(TOP), 10);
+
+ l = !isNaN(l) ? l : (relative ? 0 : me.dom.offsetLeft);
+ t = !isNaN(t) ? t : (relative ? 0 : me.dom.offsetTop);
+
+ return {left: (x - o[0] + l), top: (y - o[1] + t)};
+ },
+
+ animTest : function(args, animate, i) {
+ return !!animate && this.preanim ? this.preanim(args, i) : false;
+ }
+});
+})();
+Ext.Element.addMethods({
+
+ isScrollable : function(){
+ var dom = this.dom;
+ return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth;
+ },
+
+
+ scrollTo : function(side, value){
+ this.dom["scroll" + (/top/i.test(side) ? "Top" : "Left")] = value;
+ return this;
+ },
+
+
+ getScroll : function(){
+ var d = this.dom,
+ doc = document,
+ body = doc.body,
+ docElement = doc.documentElement,
+ l,
+ t,
+ ret;
+
+ if(d == doc || d == body){
+ if(Ext.isIE && Ext.isStrict){
+ l = docElement.scrollLeft;
+ t = docElement.scrollTop;
+ }else{
+ l = window.pageXOffset;
+ t = window.pageYOffset;
+ }
+ ret = {left: l || (body ? body.scrollLeft : 0), top: t || (body ? body.scrollTop : 0)};
+ }else{
+ ret = {left: d.scrollLeft, top: d.scrollTop};
+ }
+ return ret;
+ }
+});
+
+Ext.Element.VISIBILITY = 1;
+
+Ext.Element.DISPLAY = 2;
+
+
+Ext.Element.OFFSETS = 3;
+
+
+Ext.Element.ASCLASS = 4;
+
+
+Ext.Element.visibilityCls = 'x-hide-nosize';
+
+Ext.Element.addMethods(function(){
+ var El = Ext.Element,
+ OPACITY = "opacity",
+ VISIBILITY = "visibility",
+ DISPLAY = "display",
+ HIDDEN = "hidden",
+ OFFSETS = "offsets",
+ ASCLASS = "asclass",
+ NONE = "none",
+ NOSIZE = 'nosize',
+ ORIGINALDISPLAY = 'originalDisplay',
+ VISMODE = 'visibilityMode',
+ ISVISIBLE = 'isVisible',
+ data = El.data,
+ getDisplay = function(dom){
+ var d = data(dom, ORIGINALDISPLAY);
+ if(d === undefined){
+ data(dom, ORIGINALDISPLAY, d = '');
+ }
+ return d;
+ },
+ getVisMode = function(dom){
+ var m = data(dom, VISMODE);
+ if(m === undefined){
+ data(dom, VISMODE, m = 1);
+ }
+ return m;
+ };
+
+ return {
+
+ originalDisplay : "",
+ visibilityMode : 1,
+
+
+ setVisibilityMode : function(visMode){
+ data(this.dom, VISMODE, visMode);
+ return this;
+ },
+
+
+ animate : function(args, duration, onComplete, easing, animType){
+ this.anim(args, {duration: duration, callback: onComplete, easing: easing}, animType);
+ return this;
+ },
+
+
+ anim : function(args, opt, animType, defaultDur, defaultEase, cb){
+ animType = animType || 'run';
+ opt = opt || {};
+ var me = this,
+ anim = Ext.lib.Anim[animType](
+ me.dom,
+ args,
+ (opt.duration || defaultDur) || .35,
+ (opt.easing || defaultEase) || 'easeOut',
+ function(){
+ if(cb) cb.call(me);
+ if(opt.callback) opt.callback.call(opt.scope || me, me, opt);
+ },
+ me
+ );
+ opt.anim = anim;
+ return anim;
+ },
+
+
+ preanim : function(a, i){
+ return !a[i] ? false : (typeof a[i] == 'object' ? a[i]: {duration: a[i+1], callback: a[i+2], easing: a[i+3]});
+ },
+
+
+ isVisible : function() {
+ var me = this,
+ dom = me.dom,
+ visible = data(dom, ISVISIBLE);
+
+ if(typeof visible == 'boolean'){
+ return visible;
+ }
+
+ visible = !me.isStyle(VISIBILITY, HIDDEN) &&
+ !me.isStyle(DISPLAY, NONE) &&
+ !((getVisMode(dom) == El.ASCLASS) && me.hasClass(me.visibilityCls || El.visibilityCls));
+
+ data(dom, ISVISIBLE, visible);
+ return visible;
+ },
+
+
+ setVisible : function(visible, animate){
+ var me = this, isDisplay, isVisibility, isOffsets, isNosize,
+ dom = me.dom,
+ visMode = getVisMode(dom);
+
+
+
+ if (typeof animate == 'string'){
+ switch (animate) {
+ case DISPLAY:
+ visMode = El.DISPLAY;
+ break;
+ case VISIBILITY:
+ visMode = El.VISIBILITY;
+ break;
+ case OFFSETS:
+ visMode = El.OFFSETS;
+ break;
+ case NOSIZE:
+ case ASCLASS:
+ visMode = El.ASCLASS;
+ break;
+ }
+ me.setVisibilityMode(visMode);
+ animate = false;
+ }
+
+ if (!animate || !me.anim) {
+ if(visMode == El.ASCLASS ){
+
+ me[visible?'removeClass':'addClass'](me.visibilityCls || El.visibilityCls);
+
+ } else if (visMode == El.DISPLAY){
+
+ return me.setDisplayed(visible);
+
+ } else if (visMode == El.OFFSETS){
+
+ if (!visible){
+ me.hideModeStyles = {
+ position: me.getStyle('position'),
+ top: me.getStyle('top'),
+ left: me.getStyle('left')
+ };
+ me.applyStyles({position: 'absolute', top: '-10000px', left: '-10000px'});
+ } else {
+ me.applyStyles(me.hideModeStyles || {position: '', top: '', left: ''});
+ delete me.hideModeStyles;
+ }
+
+ }else{
+ me.fixDisplay();
+ dom.style.visibility = visible ? "visible" : HIDDEN;
+ }
+ }else{
+
+ if(visible){
+ me.setOpacity(.01);
+ me.setVisible(true);
+ }
+ me.anim({opacity: { to: (visible?1:0) }},
+ me.preanim(arguments, 1),
+ null,
+ .35,
+ 'easeIn',
+ function(){
+ visible || me.setVisible(false).setOpacity(1);
+ });
+ }
+ data(dom, ISVISIBLE, visible);
+ return me;
+ },
+
+
+
+ hasMetrics : function(){
+ var dom = this.dom;
+ return this.isVisible() || (getVisMode(dom) == El.VISIBILITY);
+ },
+
+
+ toggle : function(animate){
+ var me = this;
+ me.setVisible(!me.isVisible(), me.preanim(arguments, 0));
+ return me;
+ },
+
+
+ setDisplayed : function(value) {
+ if(typeof value == "boolean"){
+ value = value ? getDisplay(this.dom) : NONE;
+ }
+ this.setStyle(DISPLAY, value);
+ return this;
+ },
+
+
+ fixDisplay : function(){
+ var me = this;
+ if(me.isStyle(DISPLAY, NONE)){
+ me.setStyle(VISIBILITY, HIDDEN);
+ me.setStyle(DISPLAY, getDisplay(this.dom));
+ if(me.isStyle(DISPLAY, NONE)){
+ me.setStyle(DISPLAY, "block");
+ }
+ }
+ },
+
+
+ hide : function(animate){
+
+ if (typeof animate == 'string'){
+ this.setVisible(false, animate);
+ return this;
+ }
+ this.setVisible(false, this.preanim(arguments, 0));
+ return this;
+ },
+
+
+ show : function(animate){
+
+ if (typeof animate == 'string'){
+ this.setVisible(true, animate);
+ return this;
+ }
+ this.setVisible(true, this.preanim(arguments, 0));
+ return this;
+ }
+ };
+}());(function(){
+
+ var NULL = null,
+ UNDEFINED = undefined,
+ TRUE = true,
+ FALSE = false,
+ SETX = "setX",
+ SETY = "setY",
+ SETXY = "setXY",
+ LEFT = "left",
+ BOTTOM = "bottom",
+ TOP = "top",
+ RIGHT = "right",
+ HEIGHT = "height",
+ WIDTH = "width",
+ POINTS = "points",
+ HIDDEN = "hidden",
+ ABSOLUTE = "absolute",
+ VISIBLE = "visible",
+ MOTION = "motion",
+ POSITION = "position",
+ EASEOUT = "easeOut",
+
+ flyEl = new Ext.Element.Flyweight(),
+ queues = {},
+ getObject = function(o){
+ return o || {};
+ },
+ fly = function(dom){
+ flyEl.dom = dom;
+ flyEl.id = Ext.id(dom);
+ return flyEl;
+ },
+
+ getQueue = function(id){
+ if(!queues[id]){
+ queues[id] = [];
+ }
+ return queues[id];
+ },
+ setQueue = function(id, value){
+ queues[id] = value;
+ };
+
+
+Ext.enableFx = TRUE;
+
+
+Ext.Fx = {
+
+
+
+ switchStatements : function(key, fn, argHash){
+ return fn.apply(this, argHash[key]);
+ },
+
+
+ slideIn : function(anchor, o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ st = dom.style,
+ xy,
+ r,
+ b,
+ wrap,
+ after,
+ st,
+ args,
+ pt,
+ bw,
+ bh;
+
+ anchor = anchor || "t";
+
+ me.queueFx(o, function(){
+ xy = fly(dom).getXY();
+
+ fly(dom).fixDisplay();
+
+
+ r = fly(dom).getFxRestore();
+ b = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: dom.offsetWidth, height: dom.offsetHeight};
+ b.right = b.x + b.width;
+ b.bottom = b.y + b.height;
+
+
+ fly(dom).setWidth(b.width).setHeight(b.height);
+
+
+ wrap = fly(dom).fxWrap(r.pos, o, HIDDEN);
+
+ st.visibility = VISIBLE;
+ st.position = ABSOLUTE;
+
+
+ function after(){
+ fly(dom).fxUnwrap(wrap, r.pos, o);
+ st.width = r.width;
+ st.height = r.height;
+ fly(dom).afterFx(o);
+ }
+
+
+ pt = {to: [b.x, b.y]};
+ bw = {to: b.width};
+ bh = {to: b.height};
+
+ function argCalc(wrap, style, ww, wh, sXY, sXYval, s1, s2, w, h, p){
+ var ret = {};
+ fly(wrap).setWidth(ww).setHeight(wh);
+ if(fly(wrap)[sXY]){
+ fly(wrap)[sXY](sXYval);
+ }
+ style[s1] = style[s2] = "0";
+ if(w){
+ ret.width = w;
+ }
+ if(h){
+ ret.height = h;
+ }
+ if(p){
+ ret.points = p;
+ }
+ return ret;
+ };
+
+ args = fly(dom).switchStatements(anchor.toLowerCase(), argCalc, {
+ t : [wrap, st, b.width, 0, NULL, NULL, LEFT, BOTTOM, NULL, bh, NULL],
+ l : [wrap, st, 0, b.height, NULL, NULL, RIGHT, TOP, bw, NULL, NULL],
+ r : [wrap, st, b.width, b.height, SETX, b.right, LEFT, TOP, NULL, NULL, pt],
+ b : [wrap, st, b.width, b.height, SETY, b.bottom, LEFT, TOP, NULL, bh, pt],
+ tl : [wrap, st, 0, 0, NULL, NULL, RIGHT, BOTTOM, bw, bh, pt],
+ bl : [wrap, st, 0, 0, SETY, b.y + b.height, RIGHT, TOP, bw, bh, pt],
+ br : [wrap, st, 0, 0, SETXY, [b.right, b.bottom], LEFT, TOP, bw, bh, pt],
+ tr : [wrap, st, 0, 0, SETX, b.x + b.width, LEFT, BOTTOM, bw, bh, pt]
+ });
+
+ st.visibility = VISIBLE;
+ fly(wrap).show();
+
+ arguments.callee.anim = fly(wrap).fxanim(args,
+ o,
+ MOTION,
+ .5,
+ EASEOUT,
+ after);
+ });
+ return me;
+ },
+
+
+ slideOut : function(anchor, o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ st = dom.style,
+ xy = me.getXY(),
+ wrap,
+ r,
+ b,
+ a,
+ zero = {to: 0};
+
+ anchor = anchor || "t";
+
+ me.queueFx(o, function(){
+
+
+ r = fly(dom).getFxRestore();
+ b = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: dom.offsetWidth, height: dom.offsetHeight};
+ b.right = b.x + b.width;
+ b.bottom = b.y + b.height;
+
+
+ fly(dom).setWidth(b.width).setHeight(b.height);
+
+
+ wrap = fly(dom).fxWrap(r.pos, o, VISIBLE);
+
+ st.visibility = VISIBLE;
+ st.position = ABSOLUTE;
+ fly(wrap).setWidth(b.width).setHeight(b.height);
+
+ function after(){
+ o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();
+ fly(dom).fxUnwrap(wrap, r.pos, o);
+ st.width = r.width;
+ st.height = r.height;
+ fly(dom).afterFx(o);
+ }
+
+ function argCalc(style, s1, s2, p1, v1, p2, v2, p3, v3){
+ var ret = {};
+
+ style[s1] = style[s2] = "0";
+ ret[p1] = v1;
+ if(p2){
+ ret[p2] = v2;
+ }
+ if(p3){
+ ret[p3] = v3;
+ }
+
+ return ret;
+ };
+
+ a = fly(dom).switchStatements(anchor.toLowerCase(), argCalc, {
+ t : [st, LEFT, BOTTOM, HEIGHT, zero],
+ l : [st, RIGHT, TOP, WIDTH, zero],
+ r : [st, LEFT, TOP, WIDTH, zero, POINTS, {to : [b.right, b.y]}],
+ b : [st, LEFT, TOP, HEIGHT, zero, POINTS, {to : [b.x, b.bottom]}],
+ tl : [st, RIGHT, BOTTOM, WIDTH, zero, HEIGHT, zero],
+ bl : [st, RIGHT, TOP, WIDTH, zero, HEIGHT, zero, POINTS, {to : [b.x, b.bottom]}],
+ br : [st, LEFT, TOP, WIDTH, zero, HEIGHT, zero, POINTS, {to : [b.x + b.width, b.bottom]}],
+ tr : [st, LEFT, BOTTOM, WIDTH, zero, HEIGHT, zero, POINTS, {to : [b.right, b.y]}]
+ });
+
+ arguments.callee.anim = fly(wrap).fxanim(a,
+ o,
+ MOTION,
+ .5,
+ EASEOUT,
+ after);
+ });
+ return me;
+ },
+
+
+ puff : function(o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ st = dom.style,
+ width,
+ height,
+ r;
+
+ me.queueFx(o, function(){
+ width = fly(dom).getWidth();
+ height = fly(dom).getHeight();
+ fly(dom).clearOpacity();
+ fly(dom).show();
+
+
+ r = fly(dom).getFxRestore();
+
+ function after(){
+ o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();
+ fly(dom).clearOpacity();
+ fly(dom).setPositioning(r.pos);
+ st.width = r.width;
+ st.height = r.height;
+ st.fontSize = '';
+ fly(dom).afterFx(o);
+ }
+
+ arguments.callee.anim = fly(dom).fxanim({
+ width : {to : fly(dom).adjustWidth(width * 2)},
+ height : {to : fly(dom).adjustHeight(height * 2)},
+ points : {by : [-width * .5, -height * .5]},
+ opacity : {to : 0},
+ fontSize: {to : 200, unit: "%"}
+ },
+ o,
+ MOTION,
+ .5,
+ EASEOUT,
+ after);
+ });
+ return me;
+ },
+
+
+ switchOff : function(o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ st = dom.style,
+ r;
+
+ me.queueFx(o, function(){
+ fly(dom).clearOpacity();
+ fly(dom).clip();
+
+
+ r = fly(dom).getFxRestore();
+
+ function after(){
+ o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();
+ fly(dom).clearOpacity();
+ fly(dom).setPositioning(r.pos);
+ st.width = r.width;
+ st.height = r.height;
+ fly(dom).afterFx(o);
+ };
+
+ fly(dom).fxanim({opacity : {to : 0.3}},
+ NULL,
+ NULL,
+ .1,
+ NULL,
+ function(){
+ fly(dom).clearOpacity();
+ (function(){
+ fly(dom).fxanim({
+ height : {to : 1},
+ points : {by : [0, fly(dom).getHeight() * .5]}
+ },
+ o,
+ MOTION,
+ 0.3,
+ 'easeIn',
+ after);
+ }).defer(100);
+ });
+ });
+ return me;
+ },
+
+
+ highlight : function(color, o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ attr = o.attr || "backgroundColor",
+ a = {},
+ restore;
+
+ me.queueFx(o, function(){
+ fly(dom).clearOpacity();
+ fly(dom).show();
+
+ function after(){
+ dom.style[attr] = restore;
+ fly(dom).afterFx(o);
+ }
+ restore = dom.style[attr];
+ a[attr] = {from: color || "ffff9c", to: o.endColor || fly(dom).getColor(attr) || "ffffff"};
+ arguments.callee.anim = fly(dom).fxanim(a,
+ o,
+ 'color',
+ 1,
+ 'easeIn',
+ after);
+ });
+ return me;
+ },
+
+
+ frame : function(color, count, o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ proxy,
+ active;
+
+ me.queueFx(o, function(){
+ color = color || '#C3DAF9';
+ if(color.length == 6){
+ color = '#' + color;
+ }
+ count = count || 1;
+ fly(dom).show();
+
+ var xy = fly(dom).getXY(),
+ b = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: dom.offsetWidth, height: dom.offsetHeight},
+ queue = function(){
+ proxy = fly(document.body || document.documentElement).createChild({
+ style:{
+ position : ABSOLUTE,
+ 'z-index': 35000,
+ border : '0px solid ' + color
+ }
+ });
+ return proxy.queueFx({}, animFn);
+ };
+
+
+ arguments.callee.anim = {
+ isAnimated: true,
+ stop: function() {
+ count = 0;
+ proxy.stopFx();
+ }
+ };
+
+ function animFn(){
+ var scale = Ext.isBorderBox ? 2 : 1;
+ active = proxy.anim({
+ top : {from : b.y, to : b.y - 20},
+ left : {from : b.x, to : b.x - 20},
+ borderWidth : {from : 0, to : 10},
+ opacity : {from : 1, to : 0},
+ height : {from : b.height, to : b.height + 20 * scale},
+ width : {from : b.width, to : b.width + 20 * scale}
+ },{
+ duration: o.duration || 1,
+ callback: function() {
+ proxy.remove();
+ --count > 0 ? queue() : fly(dom).afterFx(o);
+ }
+ });
+ arguments.callee.anim = {
+ isAnimated: true,
+ stop: function(){
+ active.stop();
+ }
+ };
+ };
+ queue();
+ });
+ return me;
+ },
+
+
+ pause : function(seconds){
+ var dom = this.dom,
+ t;
+
+ this.queueFx({}, function(){
+ t = setTimeout(function(){
+ fly(dom).afterFx({});
+ }, seconds * 1000);
+ arguments.callee.anim = {
+ isAnimated: true,
+ stop: function(){
+ clearTimeout(t);
+ fly(dom).afterFx({});
+ }
+ };
+ });
+ return this;
+ },
+
+
+ fadeIn : function(o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ to = o.endOpacity || 1;
+
+ me.queueFx(o, function(){
+ fly(dom).setOpacity(0);
+ fly(dom).fixDisplay();
+ dom.style.visibility = VISIBLE;
+ arguments.callee.anim = fly(dom).fxanim({opacity:{to:to}},
+ o, NULL, .5, EASEOUT, function(){
+ if(to == 1){
+ fly(dom).clearOpacity();
+ }
+ fly(dom).afterFx(o);
+ });
+ });
+ return me;
+ },
+
+
+ fadeOut : function(o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ style = dom.style,
+ to = o.endOpacity || 0;
+
+ me.queueFx(o, function(){
+ arguments.callee.anim = fly(dom).fxanim({
+ opacity : {to : to}},
+ o,
+ NULL,
+ .5,
+ EASEOUT,
+ function(){
+ if(to == 0){
+ Ext.Element.data(dom, 'visibilityMode') == Ext.Element.DISPLAY || o.useDisplay ?
+ style.display = "none" :
+ style.visibility = HIDDEN;
+
+ fly(dom).clearOpacity();
+ }
+ fly(dom).afterFx(o);
+ });
+ });
+ return me;
+ },
+
+
+ scale : function(w, h, o){
+ this.shift(Ext.apply({}, o, {
+ width: w,
+ height: h
+ }));
+ return this;
+ },
+
+
+ shift : function(o){
+ o = getObject(o);
+ var dom = this.dom,
+ a = {};
+
+ this.queueFx(o, function(){
+ for (var prop in o) {
+ if (o[prop] != UNDEFINED) {
+ a[prop] = {to : o[prop]};
+ }
+ }
+
+ a.width ? a.width.to = fly(dom).adjustWidth(o.width) : a;
+ a.height ? a.height.to = fly(dom).adjustWidth(o.height) : a;
+
+ if (a.x || a.y || a.xy) {
+ a.points = a.xy ||
+ {to : [ a.x ? a.x.to : fly(dom).getX(),
+ a.y ? a.y.to : fly(dom).getY()]};
+ }
+
+ arguments.callee.anim = fly(dom).fxanim(a,
+ o,
+ MOTION,
+ .35,
+ EASEOUT,
+ function(){
+ fly(dom).afterFx(o);
+ });
+ });
+ return this;
+ },
+
+
+ ghost : function(anchor, o){
+ o = getObject(o);
+ var me = this,
+ dom = me.dom,
+ st = dom.style,
+ a = {opacity: {to: 0}, points: {}},
+ pt = a.points,
+ r,
+ w,
+ h;
+
+ anchor = anchor || "b";
+
+ me.queueFx(o, function(){
+
+ r = fly(dom).getFxRestore();
+ w = fly(dom).getWidth();
+ h = fly(dom).getHeight();
+
+ function after(){
+ o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();
+ fly(dom).clearOpacity();
+ fly(dom).setPositioning(r.pos);
+ st.width = r.width;
+ st.height = r.height;
+ fly(dom).afterFx(o);
+ }
+
+ pt.by = fly(dom).switchStatements(anchor.toLowerCase(), function(v1,v2){ return [v1, v2];}, {
+ t : [0, -h],
+ l : [-w, 0],
+ r : [w, 0],
+ b : [0, h],
+ tl : [-w, -h],
+ bl : [-w, h],
+ br : [w, h],
+ tr : [w, -h]
+ });
+
+ arguments.callee.anim = fly(dom).fxanim(a,
+ o,
+ MOTION,
+ .5,
+ EASEOUT, after);
+ });
+ return me;
+ },
+
+
+ syncFx : function(){
+ var me = this;
+ me.fxDefaults = Ext.apply(me.fxDefaults || {}, {
+ block : FALSE,
+ concurrent : TRUE,
+ stopFx : FALSE
+ });
+ return me;
+ },
+
+
+ sequenceFx : function(){
+ var me = this;
+ me.fxDefaults = Ext.apply(me.fxDefaults || {}, {
+ block : FALSE,
+ concurrent : FALSE,
+ stopFx : FALSE
+ });
+ return me;
+ },
+
+
+ nextFx : function(){
+ var ef = getQueue(this.dom.id)[0];
+ if(ef){
+ ef.call(this);
+ }
+ },
+
+
+ hasActiveFx : function(){
+ return getQueue(this.dom.id)[0];
+ },
+
+
+ stopFx : function(finish){
+ var me = this,
+ id = me.dom.id;
+ if(me.hasActiveFx()){
+ var cur = getQueue(id)[0];
+ if(cur && cur.anim){
+ if(cur.anim.isAnimated){
+ setQueue(id, [cur]);
+ cur.anim.stop(finish !== undefined ? finish : TRUE);
+ }else{
+ setQueue(id, []);
+ }
+ }
+ }
+ return me;
+ },
+
+
+ beforeFx : function(o){
+ if(this.hasActiveFx() && !o.concurrent){
+ if(o.stopFx){
+ this.stopFx();
+ return TRUE;
+ }
+ return FALSE;
+ }
+ return TRUE;
+ },
+
+
+ hasFxBlock : function(){
+ var q = getQueue(this.dom.id);
+ return q && q[0] && q[0].block;
+ },
+
+
+ queueFx : function(o, fn){
+ var me = fly(this.dom);
+ if(!me.hasFxBlock()){
+ Ext.applyIf(o, me.fxDefaults);
+ if(!o.concurrent){
+ var run = me.beforeFx(o);
+ fn.block = o.block;
+ getQueue(me.dom.id).push(fn);
+ if(run){
+ me.nextFx();
+ }
+ }else{
+ fn.call(me);
+ }
+ }
+ return me;
+ },
+
+
+ fxWrap : function(pos, o, vis){
+ var dom = this.dom,
+ wrap,
+ wrapXY;
+ if(!o.wrap || !(wrap = Ext.getDom(o.wrap))){
+ if(o.fixPosition){
+ wrapXY = fly(dom).getXY();
+ }
+ var div = document.createElement("div");
+ div.style.visibility = vis;
+ wrap = dom.parentNode.insertBefore(div, dom);
+ fly(wrap).setPositioning(pos);
+ if(fly(wrap).isStyle(POSITION, "static")){
+ fly(wrap).position("relative");
+ }
+ fly(dom).clearPositioning('auto');
+ fly(wrap).clip();
+ wrap.appendChild(dom);
+ if(wrapXY){
+ fly(wrap).setXY(wrapXY);
+ }
+ }
+ return wrap;
+ },
+
+
+ fxUnwrap : function(wrap, pos, o){
+ var dom = this.dom;
+ fly(dom).clearPositioning();
+ fly(dom).setPositioning(pos);
+ if(!o.wrap){
+ var pn = fly(wrap).dom.parentNode;
+ pn.insertBefore(dom, wrap);
+ fly(wrap).remove();
+ }
+ },
+
+
+ getFxRestore : function(){
+ var st = this.dom.style;
+ return {pos: this.getPositioning(), width: st.width, height : st.height};
+ },
+
+
+ afterFx : function(o){
+ var dom = this.dom,
+ id = dom.id;
+ if(o.afterStyle){
+ fly(dom).setStyle(o.afterStyle);
+ }
+ if(o.afterCls){
+ fly(dom).addClass(o.afterCls);
+ }
+ if(o.remove == TRUE){
+ fly(dom).remove();
+ }
+ if(o.callback){
+ o.callback.call(o.scope, fly(dom));
+ }
+ if(!o.concurrent){
+ getQueue(id).shift();
+ fly(dom).nextFx();
+ }
+ },
+
+
+ fxanim : function(args, opt, animType, defaultDur, defaultEase, cb){
+ animType = animType || 'run';
+ opt = opt || {};
+ var anim = Ext.lib.Anim[animType](
+ this.dom,
+ args,
+ (opt.duration || defaultDur) || .35,
+ (opt.easing || defaultEase) || EASEOUT,
+ cb,
+ this
+ );
+ opt.anim = anim;
+ return anim;
+ }
+};
+
+
+Ext.Fx.resize = Ext.Fx.scale;
+
+
+
+Ext.Element.addMethods(Ext.Fx);
+})();
+
+Ext.CompositeElementLite = function(els, root){
+
+ this.elements = [];
+ this.add(els, root);
+ this.el = new Ext.Element.Flyweight();
+};
+
+Ext.CompositeElementLite.prototype = {
+ isComposite: true,
+
+
+ getElement : function(el){
+
+ var e = this.el;
+ e.dom = el;
+ e.id = el.id;
+ return e;
+ },
+
+
+ transformElement : function(el){
+ return Ext.getDom(el);
+ },
+
+
+ getCount : function(){
+ return this.elements.length;
+ },
+
+ add : function(els, root){
+ var me = this,
+ elements = me.elements;
+ if(!els){
+ return this;
+ }
+ if(typeof els == "string"){
+ els = Ext.Element.selectorFunction(els, root);
+ }else if(els.isComposite){
+ els = els.elements;
+ }else if(!Ext.isIterable(els)){
+ els = [els];
+ }
+
+ for(var i = 0, len = els.length; i < len; ++i){
+ elements.push(me.transformElement(els[i]));
+ }
+ return me;
+ },
+
+ invoke : function(fn, args){
+ var me = this,
+ els = me.elements,
+ len = els.length,
+ e,
+ i;
+
+ for(i = 0; i < len; i++) {
+ e = els[i];
+ if(e){
+ Ext.Element.prototype[fn].apply(me.getElement(e), args);
+ }
+ }
+ return me;
+ },
+
+ item : function(index){
+ var me = this,
+ el = me.elements[index],
+ out = null;
+
+ if(el){
+ out = me.getElement(el);
+ }
+ return out;
+ },
+
+
+ addListener : function(eventName, handler, scope, opt){
+ var els = this.elements,
+ len = els.length,
+ i, e;
+
+ for(i = 0; i<len; i++) {
+ e = els[i];
+ if(e) {
+ Ext.EventManager.on(e, eventName, handler, scope || e, opt);
+ }
+ }
+ return this;
+ },
+
+ each : function(fn, scope){
+ var me = this,
+ els = me.elements,
+ len = els.length,
+ i, e;
+
+ for(i = 0; i<len; i++) {
+ e = els[i];
+ if(e){
+ e = this.getElement(e);
+ if(fn.call(scope || e, e, me, i) === false){
+ break;
+ }
+ }
+ }
+ return me;
+ },
+
+
+ fill : function(els){
+ var me = this;
+ me.elements = [];
+ me.add(els);
+ return me;
+ },
+
+
+ filter : function(selector){
+ var els = [],
+ me = this,
+ fn = Ext.isFunction(selector) ? selector
+ : function(el){
+ return el.is(selector);
+ };
+
+ me.each(function(el, self, i) {
+ if (fn(el, i) !== false) {
+ els[els.length] = me.transformElement(el);
+ }
+ });
+
+ me.elements = els;
+ return me;
+ },
+
+
+ indexOf : function(el){
+ return this.elements.indexOf(this.transformElement(el));
+ },
+
+
+ replaceElement : function(el, replacement, domReplace){
+ var index = !isNaN(el) ? el : this.indexOf(el),
+ d;
+ if(index > -1){
+ replacement = Ext.getDom(replacement);
+ if(domReplace){
+ d = this.elements[index];
+ d.parentNode.insertBefore(replacement, d);
+ Ext.removeNode(d);
+ }
+ this.elements.splice(index, 1, replacement);
+ }
+ return this;
+ },
+
+
+ clear : function(){
+ this.elements = [];
+ }
+};
+
+Ext.CompositeElementLite.prototype.on = Ext.CompositeElementLite.prototype.addListener;
+
+
+Ext.CompositeElementLite.importElementMethods = function() {
+ var fnName,
+ ElProto = Ext.Element.prototype,
+ CelProto = Ext.CompositeElementLite.prototype;
+
+ for (fnName in ElProto) {
+ if (typeof ElProto[fnName] == 'function'){
+ (function(fnName) {
+ CelProto[fnName] = CelProto[fnName] || function() {
+ return this.invoke(fnName, arguments);
+ };
+ }).call(CelProto, fnName);
+
+ }
+ }
+};
+
+Ext.CompositeElementLite.importElementMethods();
+
+if(Ext.DomQuery){
+ Ext.Element.selectorFunction = Ext.DomQuery.select;
+}
+
+
+Ext.Element.select = function(selector, root){
+ var els;
+ if(typeof selector == "string"){
+ els = Ext.Element.selectorFunction(selector, root);
+ }else if(selector.length !== undefined){
+ els = selector;
+ }else{
+ throw "Invalid selector";
+ }
+ return new Ext.CompositeElementLite(els);
+};
+
+Ext.select = Ext.Element.select;
+(function(){
+ var BEFOREREQUEST = "beforerequest",
+ REQUESTCOMPLETE = "requestcomplete",
+ REQUESTEXCEPTION = "requestexception",
+ UNDEFINED = undefined,
+ LOAD = 'load',
+ POST = 'POST',
+ GET = 'GET',
+ WINDOW = window;
+
+
+ Ext.data.Connection = function(config){
+ Ext.apply(this, config);
+ this.addEvents(
+
+ BEFOREREQUEST,
+
+ REQUESTCOMPLETE,
+
+ REQUESTEXCEPTION
+ );
+ Ext.data.Connection.superclass.constructor.call(this);
+ };
+
+ Ext.extend(Ext.data.Connection, Ext.util.Observable, {
+
+
+
+
+
+ timeout : 30000,
+
+ autoAbort:false,
+
+
+ disableCaching: true,
+
+
+ disableCachingParam: '_dc',
+
+
+ request : function(o){
+ var me = this;
+ if(me.fireEvent(BEFOREREQUEST, me, o)){
+ if (o.el) {
+ if(!Ext.isEmpty(o.indicatorText)){
+ me.indicatorText = '<div class="loading-indicator">'+o.indicatorText+"</div>";
+ }
+ if(me.indicatorText) {
+ Ext.getDom(o.el).innerHTML = me.indicatorText;
+ }
+ o.success = (Ext.isFunction(o.success) ? o.success : function(){}).createInterceptor(function(response) {
+ Ext.getDom(o.el).innerHTML = response.responseText;
+ });
+ }
+
+ var p = o.params,
+ url = o.url || me.url,
+ method,
+ cb = {success: me.handleResponse,
+ failure: me.handleFailure,
+ scope: me,
+ argument: {options: o},
+ timeout : Ext.num(o.timeout, me.timeout)
+ },
+ form,
+ serForm;
+
+
+ if (Ext.isFunction(p)) {
+ p = p.call(o.scope||WINDOW, o);
+ }
+
+ p = Ext.urlEncode(me.extraParams, Ext.isObject(p) ? Ext.urlEncode(p) : p);
+
+ if (Ext.isFunction(url)) {
+ url = url.call(o.scope || WINDOW, o);
+ }
+
+ if((form = Ext.getDom(o.form))){
+ url = url || form.action;
+ if(o.isUpload || (/multipart\/form-data/i.test(form.getAttribute("enctype")))) {
+ return me.doFormUpload.call(me, o, p, url);
+ }
+ serForm = Ext.lib.Ajax.serializeForm(form);
+ p = p ? (p + '&' + serForm) : serForm;
+ }
+
+ method = o.method || me.method || ((p || o.xmlData || o.jsonData) ? POST : GET);
+
+ if(method === GET && (me.disableCaching && o.disableCaching !== false) || o.disableCaching === true){
+ var dcp = o.disableCachingParam || me.disableCachingParam;
+ url = Ext.urlAppend(url, dcp + '=' + (new Date().getTime()));
+ }
+
+ o.headers = Ext.applyIf(o.headers || {}, me.defaultHeaders || {});
+
+ if(o.autoAbort === true || me.autoAbort) {
+ me.abort();
+ }
+
+ if((method == GET || o.xmlData || o.jsonData) && p){
+ url = Ext.urlAppend(url, p);
+ p = '';
+ }
+ return (me.transId = Ext.lib.Ajax.request(method, url, cb, p, o));
+ }else{
+ return o.callback ? o.callback.apply(o.scope, [o,UNDEFINED,UNDEFINED]) : null;
+ }
+ },
+
+
+ isLoading : function(transId){
+ return transId ? Ext.lib.Ajax.isCallInProgress(transId) : !! this.transId;
+ },
+
+
+ abort : function(transId){
+ if(transId || this.isLoading()){
+ Ext.lib.Ajax.abort(transId || this.transId);
+ }
+ },
+
+
+ handleResponse : function(response){
+ this.transId = false;
+ var options = response.argument.options;
+ response.argument = options ? options.argument : null;
+ this.fireEvent(REQUESTCOMPLETE, this, response, options);
+ if(options.success){
+ options.success.call(options.scope, response, options);
+ }
+ if(options.callback){
+ options.callback.call(options.scope, options, true, response);
+ }
+ },
+
+
+ handleFailure : function(response, e){
+ this.transId = false;
+ var options = response.argument.options;
+ response.argument = options ? options.argument : null;
+ this.fireEvent(REQUESTEXCEPTION, this, response, options, e);
+ if(options.failure){
+ options.failure.call(options.scope, response, options);
+ }
+ if(options.callback){
+ options.callback.call(options.scope, options, false, response);
+ }
+ },
+
+
+ doFormUpload : function(o, ps, url){
+ var id = Ext.id(),
+ doc = document,
+ frame = doc.createElement('iframe'),
+ form = Ext.getDom(o.form),
+ hiddens = [],
+ hd,
+ encoding = 'multipart/form-data',
+ buf = {
+ target: form.target,
+ method: form.method,
+ encoding: form.encoding,
+ enctype: form.enctype,
+ action: form.action
+ };
+
+
+ Ext.fly(frame).set({
+ id: id,
+ name: id,
+ cls: 'x-hidden',
+ src: Ext.SSL_SECURE_URL
+ });
+
+ doc.body.appendChild(frame);
+
+
+ if(Ext.isIE){
+ document.frames[id].name = id;
+ }
+
+
+ Ext.fly(form).set({
+ target: id,
+ method: POST,
+ enctype: encoding,
+ encoding: encoding,
+ action: url || buf.action
+ });
+
+
+ Ext.iterate(Ext.urlDecode(ps, false), function(k, v){
+ hd = doc.createElement('input');
+ Ext.fly(hd).set({
+ type: 'hidden',
+ value: v,
+ name: k
+ });
+ form.appendChild(hd);
+ hiddens.push(hd);
+ });
+
+ function cb(){
+ var me = this,
+
+ r = {responseText : '',
+ responseXML : null,
+ argument : o.argument},
+ doc,
+ firstChild;
+
+ try{
+ doc = frame.contentWindow.document || frame.contentDocument || WINDOW.frames[id].document;
+ if(doc){
+ if(doc.body){
+ if(/textarea/i.test((firstChild = doc.body.firstChild || {}).tagName)){
+ r.responseText = firstChild.value;
+ }else{
+ r.responseText = doc.body.innerHTML;
+ }
+ }
+
+ r.responseXML = doc.XMLDocument || doc;
+ }
+ }
+ catch(e) {}
+
+ Ext.EventManager.removeListener(frame, LOAD, cb, me);
+
+ me.fireEvent(REQUESTCOMPLETE, me, r, o);
+
+ function runCallback(fn, scope, args){
+ if(Ext.isFunction(fn)){
+ fn.apply(scope, args);
+ }
+ }
+
+ runCallback(o.success, o.scope, [r, o]);
+ runCallback(o.callback, o.scope, [o, true, r]);
+
+ if(!me.debugUploads){
+ setTimeout(function(){Ext.removeNode(frame);}, 100);
+ }
+ }
+
+ Ext.EventManager.on(frame, LOAD, cb, this);
+ form.submit();
+
+ Ext.fly(form).set(buf);
+ Ext.each(hiddens, function(h) {
+ Ext.removeNode(h);
+ });
+ }
+ });
+})();
+
+
+Ext.Ajax = new Ext.data.Connection({
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ autoAbort : false,
+
+
+ serializeForm : function(form){
+ return Ext.lib.Ajax.serializeForm(form);
+ }
+});
+
+Ext.util.JSON = new (function(){
+ var useHasOwn = !!{}.hasOwnProperty,
+ isNative = function() {
+ var useNative = null;
+
+ return function() {
+ if (useNative === null) {
+ useNative = Ext.USE_NATIVE_JSON && window.JSON && JSON.toString() == '[object JSON]';
+ }
+
+ return useNative;
+ };
+ }(),
+ pad = function(n) {
+ return n < 10 ? "0" + n : n;
+ },
+ doDecode = function(json){
+ return json ? eval("(" + json + ")") : "";
+ },
+ doEncode = function(o){
+ if(!Ext.isDefined(o) || o === null){
+ return "null";
+ }else if(Ext.isArray(o)){
+ return encodeArray(o);
+ }else if(Ext.isDate(o)){
+ return Ext.util.JSON.encodeDate(o);
+ }else if(Ext.isString(o)){
+ return encodeString(o);
+ }else if(typeof o == "number"){
+
+ return isFinite(o) ? String(o) : "null";
+ }else if(Ext.isBoolean(o)){
+ return String(o);
+ }else {
+ var a = ["{"], b, i, v;
+ for (i in o) {
+
+ if(!o.getElementsByTagName){
+ if(!useHasOwn || o.hasOwnProperty(i)) {
+ v = o[i];
+ switch (typeof v) {
+ case "undefined":
+ case "function":
+ case "unknown":
+ break;
+ default:
+ if(b){
+ a.push(',');
+ }
+ a.push(doEncode(i), ":",
+ v === null ? "null" : doEncode(v));
+ b = true;
+ }
+ }
+ }
+ }
+ a.push("}");
+ return a.join("");
+ }
+ },
+ m = {
+ "\b": '\\b',
+ "\t": '\\t',
+ "\n": '\\n',
+ "\f": '\\f',
+ "\r": '\\r',
+ '"' : '\\"',
+ "\\": '\\\\'
+ },
+ encodeString = function(s){
+ if (/["\\\x00-\x1f]/.test(s)) {
+ return '"' + s.replace(/([\x00-\x1f\\"])/g, function(a, b) {
+ var c = m[b];
+ if(c){
+ return c;
+ }
+ c = b.charCodeAt();
+ return "\\u00" +
+ Math.floor(c / 16).toString(16) +
+ (c % 16).toString(16);
+ }) + '"';
+ }
+ return '"' + s + '"';
+ },
+ encodeArray = function(o){
+ var a = ["["], b, i, l = o.length, v;
+ for (i = 0; i < l; i += 1) {
+ v = o[i];
+ switch (typeof v) {
+ case "undefined":
+ case "function":
+ case "unknown":
+ break;
+ default:
+ if (b) {
+ a.push(',');
+ }
+ a.push(v === null ? "null" : Ext.util.JSON.encode(v));
+ b = true;
+ }
+ }
+ a.push("]");
+ return a.join("");
+ };
+
+
+ this.encodeDate = function(o){
+ return '"' + o.getFullYear() + "-" +
+ pad(o.getMonth() + 1) + "-" +
+ pad(o.getDate()) + "T" +
+ pad(o.getHours()) + ":" +
+ pad(o.getMinutes()) + ":" +
+ pad(o.getSeconds()) + '"';
+ };
+
+
+ this.encode = function() {
+ var ec;
+ return function(o) {
+ if (!ec) {
+
+ ec = isNative() ? JSON.stringify : doEncode;
+ }
+ return ec(o);
+ };
+ }();
+
+
+
+ this.decode = function() {
+ var dc;
+ return function(json) {
+ if (!dc) {
+
+ dc = isNative() ? JSON.parse : doDecode;
+ }
+ return dc(json);
+ };
+ }();
+
+})();
+
+Ext.encode = Ext.util.JSON.encode;
+
+Ext.decode = Ext.util.JSON.decode;
+
+Ext.EventManager = function(){
+ var docReadyEvent,
+ docReadyProcId,
+ docReadyState = false,
+ DETECT_NATIVE = Ext.isGecko || Ext.isWebKit || Ext.isSafari || Ext.isIE10p,
+ E = Ext.lib.Event,
+ D = Ext.lib.Dom,
+ DOC = document,
+ WINDOW = window,
+ DOMCONTENTLOADED = "DOMContentLoaded",
+ COMPLETE = 'complete',
+ propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,
+
+ specialElCache = [];
+
+ function getId(el){
+ var id = false,
+ i = 0,
+ len = specialElCache.length,
+ skip = false,
+ o;
+
+ if (el) {
+ if (el.getElementById || el.navigator) {
+
+ for(; i < len; ++i){
+ o = specialElCache[i];
+ if(o.el === el){
+ id = o.id;
+ break;
+ }
+ }
+ if(!id){
+
+ id = Ext.id(el);
+ specialElCache.push({
+ id: id,
+ el: el
+ });
+ skip = true;
+ }
+ }else{
+ id = Ext.id(el);
+ }
+ if(!Ext.elCache[id]){
+ Ext.Element.addToCache(new Ext.Element(el), id);
+ if(skip){
+ Ext.elCache[id].skipGC = true;
+ }
+ }
+ }
+ return id;
+ }
+
+
+ function addListener(el, ename, fn, task, wrap, scope){
+ el = Ext.getDom(el);
+ var id = getId(el),
+ es = Ext.elCache[id].events,
+ wfn;
+
+ wfn = E.on(el, ename, wrap);
+ es[ename] = es[ename] || [];
+
+
+ es[ename].push([fn, wrap, scope, wfn, task]);
+
+
+
+
+
+ if(el.addEventListener && ename == "mousewheel"){
+ var args = ["DOMMouseScroll", wrap, false];
+ el.addEventListener.apply(el, args);
+ Ext.EventManager.addListener(WINDOW, 'unload', function(){
+ el.removeEventListener.apply(el, args);
+ });
+ }
+
+
+ if(el == DOC && ename == "mousedown"){
+ Ext.EventManager.stoppedMouseDownEvent.addListener(wrap);
+ }
+ }
+
+ function doScrollChk(){
+
+ if(window != top){
+ return false;
+ }
+
+ try{
+ DOC.documentElement.doScroll('left');
+ }catch(e){
+ return false;
+ }
+
+ fireDocReady();
+ return true;
+ }
+
+ function checkReadyState(e){
+
+ if(Ext.isIE9m && doScrollChk()){
+ return true;
+ }
+ if(DOC.readyState == COMPLETE){
+ fireDocReady();
+ return true;
+ }
+ docReadyState || (docReadyProcId = setTimeout(arguments.callee, 2));
+ return false;
+ }
+
+ var styles;
+ function checkStyleSheets(e){
+ styles || (styles = Ext.query('style, link[rel=stylesheet]'));
+ if(styles.length == DOC.styleSheets.length){
+ fireDocReady();
+ return true;
+ }
+ docReadyState || (docReadyProcId = setTimeout(arguments.callee, 2));
+ return false;
+ }
+
+ function OperaDOMContentLoaded(e){
+ DOC.removeEventListener(DOMCONTENTLOADED, arguments.callee, false);
+ checkStyleSheets();
+ }
+
+ function fireDocReady(e){
+ if(!docReadyState){
+ docReadyState = true;
+
+ if(docReadyProcId){
+ clearTimeout(docReadyProcId);
+ }
+ if(DETECT_NATIVE) {
+ DOC.removeEventListener(DOMCONTENTLOADED, fireDocReady, false);
+ }
+ if(Ext.isIE9m && checkReadyState.bindIE){
+ DOC.detachEvent('onreadystatechange', checkReadyState);
+ }
+ E.un(WINDOW, "load", arguments.callee);
+ }
+ if(docReadyEvent && !Ext.isReady){
+ Ext.isReady = true;
+ docReadyEvent.fire();
+ docReadyEvent.listeners = [];
+ }
+
+ }
+
+ function initDocReady(){
+ docReadyEvent || (docReadyEvent = new Ext.util.Event());
+ if (DETECT_NATIVE) {
+ DOC.addEventListener(DOMCONTENTLOADED, fireDocReady, false);
+ }
+
+ if (Ext.isIE9m){
+
+
+ if(!checkReadyState()){
+ checkReadyState.bindIE = true;
+ DOC.attachEvent('onreadystatechange', checkReadyState);
+ }
+
+ }else if(Ext.isOpera ){
+
+
+
+ (DOC.readyState == COMPLETE && checkStyleSheets()) ||
+ DOC.addEventListener(DOMCONTENTLOADED, OperaDOMContentLoaded, false);
+
+ }else if (Ext.isWebKit){
+
+ checkReadyState();
+ }
+
+ E.on(WINDOW, "load", fireDocReady);
+ }
+
+ function createTargeted(h, o){
+ return function(){
+ var args = Ext.toArray(arguments);
+ if(o.target == Ext.EventObject.setEvent(args[0]).target){
+ h.apply(this, args);
+ }
+ };
+ }
+
+ function createBuffered(h, o, task){
+ return function(e){
+
+ task.delay(o.buffer, h, null, [new Ext.EventObjectImpl(e)]);
+ };
+ }
+
+ function createSingle(h, el, ename, fn, scope){
+ return function(e){
+ Ext.EventManager.removeListener(el, ename, fn, scope);
+ h(e);
+ };
+ }
+
+ function createDelayed(h, o, fn){
+ return function(e){
+ var task = new Ext.util.DelayedTask(h);
+ if(!fn.tasks) {
+ fn.tasks = [];
+ }
+ fn.tasks.push(task);
+ task.delay(o.delay || 10, h, null, [new Ext.EventObjectImpl(e)]);
+ };
+ }
+
+ function listen(element, ename, opt, fn, scope){
+ var o = (!opt || typeof opt == "boolean") ? {} : opt,
+ el = Ext.getDom(element), task;
+
+ fn = fn || o.fn;
+ scope = scope || o.scope;
+
+ if(!el){
+ throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.';
+ }
+ function h(e){
+
+ if(!Ext){
+ return;
+ }
+ e = Ext.EventObject.setEvent(e);
+ var t;
+ if (o.delegate) {
+ if(!(t = e.getTarget(o.delegate, el))){
+ return;
+ }
+ } else {
+ t = e.target;
+ }
+ if (o.stopEvent) {
+ e.stopEvent();
+ }
+ if (o.preventDefault) {
+ e.preventDefault();
+ }
+ if (o.stopPropagation) {
+ e.stopPropagation();
+ }
+ if (o.normalized === false) {
+ e = e.browserEvent;
+ }
+
+ fn.call(scope || el, e, t, o);
+ }
+ if(o.target){
+ h = createTargeted(h, o);
+ }
+ if(o.delay){
+ h = createDelayed(h, o, fn);
+ }
+ if(o.single){
+ h = createSingle(h, el, ename, fn, scope);
+ }
+ if(o.buffer){
+ task = new Ext.util.DelayedTask(h);
+ h = createBuffered(h, o, task);
+ }
+
+ addListener(el, ename, fn, task, h, scope);
+ return h;
+ }
+
+ var pub = {
+
+ addListener : function(element, eventName, fn, scope, options){
+ if(typeof eventName == 'object'){
+ var o = eventName, e, val;
+ for(e in o){
+ val = o[e];
+ if(!propRe.test(e)){
+ if(Ext.isFunction(val)){
+
+ listen(element, e, o, val, o.scope);
+ }else{
+
+ listen(element, e, val);
+ }
+ }
+ }
+ } else {
+ listen(element, eventName, options, fn, scope);
+ }
+ },
+
+
+ removeListener : function(el, eventName, fn, scope){
+ el = Ext.getDom(el);
+ var id = getId(el),
+ f = el && (Ext.elCache[id].events)[eventName] || [],
+ wrap, i, l, k, len, fnc;
+
+ for (i = 0, len = f.length; i < len; i++) {
+
+
+ if (Ext.isArray(fnc = f[i]) && fnc[0] == fn && (!scope || fnc[2] == scope)) {
+ if(fnc[4]) {
+ fnc[4].cancel();
+ }
+ k = fn.tasks && fn.tasks.length;
+ if(k) {
+ while(k--) {
+ fn.tasks[k].cancel();
+ }
+ delete fn.tasks;
+ }
+ wrap = fnc[1];
+ E.un(el, eventName, E.extAdapter ? fnc[3] : wrap);
+
+
+ if(wrap && el.addEventListener && eventName == "mousewheel"){
+ el.removeEventListener("DOMMouseScroll", wrap, false);
+ }
+
+
+ if(wrap && el == DOC && eventName == "mousedown"){
+ Ext.EventManager.stoppedMouseDownEvent.removeListener(wrap);
+ }
+
+ f.splice(i, 1);
+ if (f.length === 0) {
+ delete Ext.elCache[id].events[eventName];
+ }
+ for (k in Ext.elCache[id].events) {
+ return false;
+ }
+ Ext.elCache[id].events = {};
+ return false;
+ }
+ }
+ },
+
+
+ removeAll : function(el){
+ el = Ext.getDom(el);
+ var id = getId(el),
+ ec = Ext.elCache[id] || {},
+ es = ec.events || {},
+ f, i, len, ename, fn, k, wrap;
+
+ for(ename in es){
+ if(es.hasOwnProperty(ename)){
+ f = es[ename];
+
+ for (i = 0, len = f.length; i < len; i++) {
+ fn = f[i];
+ if(fn[4]) {
+ fn[4].cancel();
+ }
+ if(fn[0].tasks && (k = fn[0].tasks.length)) {
+ while(k--) {
+ fn[0].tasks[k].cancel();
+ }
+ delete fn.tasks;
+ }
+ wrap = fn[1];
+ E.un(el, ename, E.extAdapter ? fn[3] : wrap);
+
+
+ if(el.addEventListener && wrap && ename == "mousewheel"){
+ el.removeEventListener("DOMMouseScroll", wrap, false);
+ }
+
+
+ if(wrap && el == DOC && ename == "mousedown"){
+ Ext.EventManager.stoppedMouseDownEvent.removeListener(wrap);
+ }
+ }
+ }
+ }
+ if (Ext.elCache[id]) {
+ Ext.elCache[id].events = {};
+ }
+ },
+
+ getListeners : function(el, eventName) {
+ el = Ext.getDom(el);
+ var id = getId(el),
+ ec = Ext.elCache[id] || {},
+ es = ec.events || {},
+ results = [];
+ if (es && es[eventName]) {
+ return es[eventName];
+ } else {
+ return null;
+ }
+ },
+
+ removeFromSpecialCache: function(o) {
+ var i = 0,
+ len = specialElCache.length;
+
+ for (; i < len; ++i) {
+ if (specialElCache[i].el == o) {
+ specialElCache.splice(i, 1);
+ }
+ }
+ },
+
+ purgeElement : function(el, recurse, eventName) {
+ el = Ext.getDom(el);
+ var id = getId(el),
+ ec = Ext.elCache[id] || {},
+ es = ec.events || {},
+ i, f, len;
+ if (eventName) {
+ if (es && es.hasOwnProperty(eventName)) {
+ f = es[eventName];
+ for (i = 0, len = f.length; i < len; i++) {
+ Ext.EventManager.removeListener(el, eventName, f[i][0]);
+ }
+ }
+ } else {
+ Ext.EventManager.removeAll(el);
+ }
+ if (recurse && el && el.childNodes) {
+ for (i = 0, len = el.childNodes.length; i < len; i++) {
+ Ext.EventManager.purgeElement(el.childNodes[i], recurse, eventName);
+ }
+ }
+ },
+
+ _unload : function() {
+ var el;
+ for (el in Ext.elCache) {
+ Ext.EventManager.removeAll(el);
+ }
+ delete Ext.elCache;
+ delete Ext.Element._flyweights;
+
+
+ var c,
+ conn,
+ tid,
+ ajax = Ext.lib.Ajax;
+ (typeof ajax.conn == 'object') ? conn = ajax.conn : conn = {};
+ for (tid in conn) {
+ c = conn[tid];
+ if (c) {
+ ajax.abort({conn: c, tId: tid});
+ }
+ }
+ },
+
+ onDocumentReady : function(fn, scope, options){
+ if (Ext.isReady) {
+ docReadyEvent || (docReadyEvent = new Ext.util.Event());
+ docReadyEvent.addListener(fn, scope, options);
+ docReadyEvent.fire();
+ docReadyEvent.listeners = [];
+ } else {
+ if (!docReadyEvent) {
+ initDocReady();
+ }
+ options = options || {};
+ options.delay = options.delay || 1;
+ docReadyEvent.addListener(fn, scope, options);
+ }
+ },
+
+
+ fireDocReady : fireDocReady
+ };
+
+ pub.on = pub.addListener;
+
+ pub.un = pub.removeListener;
+
+ pub.stoppedMouseDownEvent = new Ext.util.Event();
+ return pub;
+}();
+
+Ext.onReady = Ext.EventManager.onDocumentReady;
+
+
+
+(function(){
+ var initExtCss = function() {
+
+ var bd = document.body || document.getElementsByTagName('body')[0];
+ if (!bd) {
+ return false;
+ }
+
+ var cls = [];
+
+ if (Ext.isIE) {
+
+ if (!Ext.isIE10p) {
+ cls.push('ext-ie');
+ }
+ if (Ext.isIE6) {
+ cls.push('ext-ie6');
+ } else if (Ext.isIE7) {
+ cls.push('ext-ie7', 'ext-ie7m');
+ } else if (Ext.isIE8) {
+ cls.push('ext-ie8', 'ext-ie8m');
+ } else if (Ext.isIE9) {
+ cls.push('ext-ie9', 'ext-ie9m');
+ } else if (Ext.isIE10) {
+ cls.push('ext-ie10');
+ }
+ }
+
+ if (Ext.isGecko) {
+ if (Ext.isGecko2) {
+ cls.push('ext-gecko2');
+ } else {
+ cls.push('ext-gecko3');
+ }
+ }
+
+ if (Ext.isOpera) {
+ cls.push('ext-opera');
+ }
+
+ if (Ext.isWebKit) {
+ cls.push('ext-webkit');
+ }
+
+ if (Ext.isSafari) {
+ cls.push("ext-safari " + (Ext.isSafari2 ? 'ext-safari2' : (Ext.isSafari3 ? 'ext-safari3' : 'ext-safari4')));
+ } else if(Ext.isChrome) {
+ cls.push("ext-chrome");
+ }
+
+ if (Ext.isMac) {
+ cls.push("ext-mac");
+ }
+ if (Ext.isLinux) {
+ cls.push("ext-linux");
+ }
+
+
+ if (Ext.isStrict || Ext.isBorderBox) {
+ var p = bd.parentNode;
+ if (p) {
+ if (!Ext.isStrict) {
+ Ext.fly(p, '_internal').addClass('x-quirks');
+ if (Ext.isIE9m && !Ext.isStrict) {
+ Ext.isIEQuirks = true;
+ }
+ }
+ Ext.fly(p, '_internal').addClass(((Ext.isStrict && Ext.isIE ) || (!Ext.enableForcedBoxModel && !Ext.isIE)) ? ' ext-strict' : ' ext-border-box');
+ }
+ }
+
+
+ if (Ext.enableForcedBoxModel && !Ext.isIE) {
+ Ext.isForcedBorderBox = true;
+ cls.push("ext-forced-border-box");
+ }
+
+ Ext.fly(bd, '_internal').addClass(cls);
+ return true;
+ };
+
+ if (!initExtCss()) {
+ Ext.onReady(initExtCss);
+ }
+})();
+
+
+(function(){
+
+ var supports = Ext.apply(Ext.supports, {
+
+ correctRightMargin: true,
+
+
+ correctTransparentColor: true,
+
+
+ cssFloat: true
+ });
+
+ var supportTests = function(){
+ var div = document.createElement('div'),
+ doc = document,
+ view,
+ last;
+
+ div.innerHTML = '<div style="height:30px;width:50px;"><div style="height:20px;width:20px;"></div></div><div style="float:left;background-color:transparent;">';
+ doc.body.appendChild(div);
+ last = div.lastChild;
+
+ if((view = doc.defaultView)){
+ if(view.getComputedStyle(div.firstChild.firstChild, null).marginRight != '0px'){
+ supports.correctRightMargin = false;
+ }
+ if(view.getComputedStyle(last, null).backgroundColor != 'transparent'){
+ supports.correctTransparentColor = false;
+ }
+ }
+ supports.cssFloat = !!last.style.cssFloat;
+ doc.body.removeChild(div);
+ };
+
+ if (Ext.isReady) {
+ supportTests();
+ } else {
+ Ext.onReady(supportTests);
+ }
+})();
+
+
+
+Ext.EventObject = function(){
+ var E = Ext.lib.Event,
+ clickRe = /(dbl)?click/,
+
+ safariKeys = {
+ 3 : 13,
+ 63234 : 37,
+ 63235 : 39,
+ 63232 : 38,
+ 63233 : 40,
+ 63276 : 33,
+ 63277 : 34,
+ 63272 : 46,
+ 63273 : 36,
+ 63275 : 35
+ },
+
+ btnMap = Ext.isIE ? {1:0,4:1,2:2} : {0:0,1:1,2:2};
+
+ Ext.EventObjectImpl = function(e){
+ if(e){
+ this.setEvent(e.browserEvent || e);
+ }
+ };
+
+ Ext.EventObjectImpl.prototype = {
+
+ setEvent : function(e){
+ var me = this;
+ if(e == me || (e && e.browserEvent)){
+ return e;
+ }
+ me.browserEvent = e;
+ if(e){
+
+ me.button = e.button ? btnMap[e.button] : (e.which ? e.which - 1 : -1);
+ if(clickRe.test(e.type) && me.button == -1){
+ me.button = 0;
+ }
+ me.type = e.type;
+ me.shiftKey = e.shiftKey;
+
+ me.ctrlKey = e.ctrlKey || e.metaKey || false;
+ me.altKey = e.altKey;
+
+ me.keyCode = e.keyCode;
+ me.charCode = e.charCode;
+
+ me.target = E.getTarget(e);
+
+ me.xy = E.getXY(e);
+ }else{
+ me.button = -1;
+ me.shiftKey = false;
+ me.ctrlKey = false;
+ me.altKey = false;
+ me.keyCode = 0;
+ me.charCode = 0;
+ me.target = null;
+ me.xy = [0, 0];
+ }
+ return me;
+ },
+
+
+ stopEvent : function(){
+ var me = this;
+ if(me.browserEvent){
+ if(me.browserEvent.type == 'mousedown'){
+ Ext.EventManager.stoppedMouseDownEvent.fire(me);
+ }
+ E.stopEvent(me.browserEvent);
+ }
+ },
+
+
+ preventDefault : function(){
+ if(this.browserEvent){
+ E.preventDefault(this.browserEvent);
+ }
+ },
+
+
+ stopPropagation : function(){
+ var me = this;
+ if(me.browserEvent){
+ if(me.browserEvent.type == 'mousedown'){
+ Ext.EventManager.stoppedMouseDownEvent.fire(me);
+ }
+ E.stopPropagation(me.browserEvent);
+ }
+ },
+
+
+ getCharCode : function(){
+ return this.charCode || this.keyCode;
+ },
+
+
+ getKey : function(){
+ return this.normalizeKey(this.keyCode || this.charCode);
+ },
+
+
+ normalizeKey: function(k){
+ return Ext.isSafari ? (safariKeys[k] || k) : k;
+ },
+
+
+ getPageX : function(){
+ return this.xy[0];
+ },
+
+
+ getPageY : function(){
+ return this.xy[1];
+ },
+
+
+ getXY : function(){
+ return this.xy;
+ },
+
+
+ getTarget : function(selector, maxDepth, returnEl){
+ return selector ? Ext.fly(this.target).findParent(selector, maxDepth, returnEl) : (returnEl ? Ext.get(this.target) : this.target);
+ },
+
+
+ getRelatedTarget : function(){
+ return this.browserEvent ? E.getRelatedTarget(this.browserEvent) : null;
+ },
+
+
+ getWheelDelta : function(){
+ var e = this.browserEvent;
+ var delta = 0;
+ if(e.wheelDelta){
+ delta = e.wheelDelta/120;
+ }else if(e.detail){
+ delta = -e.detail/3;
+ }
+ return delta;
+ },
+
+
+ within : function(el, related, allowEl){
+ if(el){
+ var t = this[related ? "getRelatedTarget" : "getTarget"]();
+ return t && ((allowEl ? (t == Ext.getDom(el)) : false) || Ext.fly(el).contains(t));
+ }
+ return false;
+ }
+ };
+
+ return new Ext.EventObjectImpl();
+}();
+Ext.Loader = Ext.apply({}, {
+
+ load: function(fileList, callback, scope, preserveOrder) {
+ var scope = scope || this,
+ head = document.getElementsByTagName("head")[0],
+ fragment = document.createDocumentFragment(),
+ numFiles = fileList.length,
+ loadedFiles = 0,
+ me = this;
+
+
+ var loadFileIndex = function(index) {
+ head.appendChild(
+ me.buildScriptTag(fileList[index], onFileLoaded)
+ );
+ };
+
+
+ var onFileLoaded = function() {
+ loadedFiles ++;
+
+
+ if (numFiles == loadedFiles && typeof callback == 'function') {
+ callback.call(scope);
+ } else {
+ if (preserveOrder === true) {
+ loadFileIndex(loadedFiles);
+ }
+ }
+ };
+
+ if (preserveOrder === true) {
+ loadFileIndex.call(this, 0);
+ } else {
+
+ Ext.each(fileList, function(file, index) {
+ fragment.appendChild(
+ this.buildScriptTag(file, onFileLoaded)
+ );
+ }, this);
+
+ head.appendChild(fragment);
+ }
+ },
+
+
+ buildScriptTag: function(filename, callback) {
+ var script = document.createElement('script');
+ script.type = "text/javascript";
+ script.src = filename;
+
+
+ if (script.readyState) {
+ script.onreadystatechange = function() {
+ if (script.readyState == "loaded" || script.readyState == "complete") {
+ script.onreadystatechange = null;
+ callback();
+ }
+ };
+ } else {
+ script.onload = callback;
+ }
+
+ return script;
+ }
+});
+
+
+Ext.ns("Ext.grid", "Ext.list", "Ext.dd", "Ext.tree", "Ext.form", "Ext.menu",
+ "Ext.state", "Ext.layout.boxOverflow", "Ext.app", "Ext.ux", "Ext.chart", "Ext.direct", "Ext.slider");
+
+
+Ext.apply(Ext, function(){
+ var E = Ext,
+ idSeed = 0,
+ scrollWidth = null;
+
+ return {
+
+ emptyFn : function(){},
+
+
+ BLANK_IMAGE_URL : Ext.isIE6 || Ext.isIE7 || Ext.isAir ?
+ 'http:/' + '/www.extjs.com/s.gif' :
+ 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',
+
+ extendX : function(supr, fn){
+ return Ext.extend(supr, fn(supr.prototype));
+ },
+
+
+ getDoc : function(){
+ return Ext.get(document);
+ },
+
+
+ num : function(v, defaultValue){
+ v = Number(Ext.isEmpty(v) || Ext.isArray(v) || typeof v == 'boolean' || (typeof v == 'string' && v.trim().length == 0) ? NaN : v);
+ return isNaN(v) ? defaultValue : v;
+ },
+
+
+ value : function(v, defaultValue, allowBlank){
+ return Ext.isEmpty(v, allowBlank) ? defaultValue : v;
+ },
+
+
+ escapeRe : function(s) {
+ return s.replace(/([-.*+?^${}()|[\]\/\\])/g, "\\$1");
+ },
+
+ sequence : function(o, name, fn, scope){
+ o[name] = o[name].createSequence(fn, scope);
+ },
+
+
+ addBehaviors : function(o){
+ if(!Ext.isReady){
+ Ext.onReady(function(){
+ Ext.addBehaviors(o);
+ });
+ } else {
+ var cache = {},
+ parts,
+ b,
+ s;
+ for (b in o) {
+ if ((parts = b.split('@'))[1]) {
+ s = parts[0];
+ if(!cache[s]){
+ cache[s] = Ext.select(s);
+ }
+ cache[s].on(parts[1], o[b]);
+ }
+ }
+ cache = null;
+ }
+ },
+
+
+ getScrollBarWidth: function(force){
+ if(!Ext.isReady){
+ return 0;
+ }
+
+ if(force === true || scrollWidth === null){
+
+ var div = Ext.getBody().createChild('<div class="x-hide-offsets" style="width:100px;height:50px;overflow:hidden;"><div style="height:200px;"></div></div>'),
+ child = div.child('div', true);
+ var w1 = child.offsetWidth;
+ div.setStyle('overflow', (Ext.isWebKit || Ext.isGecko) ? 'auto' : 'scroll');
+ var w2 = child.offsetWidth;
+ div.remove();
+
+ scrollWidth = w1 - w2 + 2;
+ }
+ return scrollWidth;
+ },
+
+
+
+ combine : function(){
+ var as = arguments, l = as.length, r = [];
+ for(var i = 0; i < l; i++){
+ var a = as[i];
+ if(Ext.isArray(a)){
+ r = r.concat(a);
+ }else if(a.length !== undefined && !a.substr){
+ r = r.concat(Array.prototype.slice.call(a, 0));
+ }else{
+ r.push(a);
+ }
+ }
+ return r;
+ },
+
+
+ copyTo : function(dest, source, names){
+ if(typeof names == 'string'){
+ names = names.split(/[,;\s]/);
+ }
+ Ext.each(names, function(name){
+ if(source.hasOwnProperty(name)){
+ dest[name] = source[name];
+ }
+ }, this);
+ return dest;
+ },
+
+
+ destroy : function(){
+ Ext.each(arguments, function(arg){
+ if(arg){
+ if(Ext.isArray(arg)){
+ this.destroy.apply(this, arg);
+ }else if(typeof arg.destroy == 'function'){
+ arg.destroy();
+ }else if(arg.dom){
+ arg.remove();
+ }
+ }
+ }, this);
+ },
+
+
+ destroyMembers : function(o, arg1, arg2, etc){
+ for(var i = 1, a = arguments, len = a.length; i < len; i++) {
+ Ext.destroy(o[a[i]]);
+ delete o[a[i]];
+ }
+ },
+
+
+ clean : function(arr){
+ var ret = [];
+ Ext.each(arr, function(v){
+ if(!!v){
+ ret.push(v);
+ }
+ });
+ return ret;
+ },
+
+
+ unique : function(arr){
+ var ret = [],
+ collect = {};
+
+ Ext.each(arr, function(v) {
+ if(!collect[v]){
+ ret.push(v);
+ }
+ collect[v] = true;
+ });
+ return ret;
+ },
+
+
+ flatten : function(arr){
+ var worker = [];
+ function rFlatten(a) {
+ Ext.each(a, function(v) {
+ if(Ext.isArray(v)){
+ rFlatten(v);
+ }else{
+ worker.push(v);
+ }
+ });
+ return worker;
+ }
+ return rFlatten(arr);
+ },
+
+
+ min : function(arr, comp){
+ var ret = arr[0];
+ comp = comp || function(a,b){ return a < b ? -1 : 1; };
+ Ext.each(arr, function(v) {
+ ret = comp(ret, v) == -1 ? ret : v;
+ });
+ return ret;
+ },
+
+
+ max : function(arr, comp){
+ var ret = arr[0];
+ comp = comp || function(a,b){ return a > b ? 1 : -1; };
+ Ext.each(arr, function(v) {
+ ret = comp(ret, v) == 1 ? ret : v;
+ });
+ return ret;
+ },
+
+
+ mean : function(arr){
+ return arr.length > 0 ? Ext.sum(arr) / arr.length : undefined;
+ },
+
+
+ sum : function(arr){
+ var ret = 0;
+ Ext.each(arr, function(v) {
+ ret += v;
+ });
+ return ret;
+ },
+
+
+ partition : function(arr, truth){
+ var ret = [[],[]];
+ Ext.each(arr, function(v, i, a) {
+ ret[ (truth && truth(v, i, a)) || (!truth && v) ? 0 : 1].push(v);
+ });
+ return ret;
+ },
+
+
+ invoke : function(arr, methodName){
+ var ret = [],
+ args = Array.prototype.slice.call(arguments, 2);
+ Ext.each(arr, function(v,i) {
+ if (v && typeof v[methodName] == 'function') {
+ ret.push(v[methodName].apply(v, args));
+ } else {
+ ret.push(undefined);
+ }
+ });
+ return ret;
+ },
+
+
+ pluck : function(arr, prop){
+ var ret = [];
+ Ext.each(arr, function(v) {
+ ret.push( v[prop] );
+ });
+ return ret;
+ },
+
+
+ zip : function(){
+ var parts = Ext.partition(arguments, function( val ){ return typeof val != 'function'; }),
+ arrs = parts[0],
+ fn = parts[1][0],
+ len = Ext.max(Ext.pluck(arrs, "length")),
+ ret = [];
+
+ for (var i = 0; i < len; i++) {
+ ret[i] = [];
+ if(fn){
+ ret[i] = fn.apply(fn, Ext.pluck(arrs, i));
+ }else{
+ for (var j = 0, aLen = arrs.length; j < aLen; j++){
+ ret[i].push( arrs[j][i] );
+ }
+ }
+ }
+ return ret;
+ },
+
+
+ getCmp : function(id){
+ return Ext.ComponentMgr.get(id);
+ },
+
+
+ useShims: E.isIE6 || (E.isMac && E.isGecko2),
+
+
+
+ type : function(o){
+ if(o === undefined || o === null){
+ return false;
+ }
+ if(o.htmlElement){
+ return 'element';
+ }
+ var t = typeof o;
+ if(t == 'object' && o.nodeName) {
+ switch(o.nodeType) {
+ case 1: return 'element';
+ case 3: return (/\S/).test(o.nodeValue) ? 'textnode' : 'whitespace';
+ }
+ }
+ if(t == 'object' || t == 'function') {
+ switch(o.constructor) {
+ case Array: return 'array';
+ case RegExp: return 'regexp';
+ case Date: return 'date';
+ }
+ if(typeof o.length == 'number' && typeof o.item == 'function') {
+ return 'nodelist';
+ }
+ }
+ return t;
+ },
+
+ intercept : function(o, name, fn, scope){
+ o[name] = o[name].createInterceptor(fn, scope);
+ },
+
+
+ callback : function(cb, scope, args, delay){
+ if(typeof cb == 'function'){
+ if(delay){
+ cb.defer(delay, scope, args || []);
+ }else{
+ cb.apply(scope, args || []);
+ }
+ }
+ }
+ };
+}());
+
+
+Ext.apply(Function.prototype, {
+
+ createSequence : function(fcn, scope){
+ var method = this;
+ return (typeof fcn != 'function') ?
+ this :
+ function(){
+ var retval = method.apply(this || window, arguments);
+ fcn.apply(scope || this || window, arguments);
+ return retval;
+ };
+ }
+});
+
+
+
+Ext.applyIf(String, {
+
+
+ escape : function(string) {
+ return string.replace(/('|\\)/g, "\\$1");
+ },
+
+
+ leftPad : function (val, size, ch) {
+ var result = String(val);
+ if(!ch) {
+ ch = " ";
+ }
+ while (result.length < size) {
+ result = ch + result;
+ }
+ return result;
+ }
+});
+
+
+String.prototype.toggle = function(value, other){
+ return this == value ? other : value;
+};
+
+
+String.prototype.trim = function(){
+ var re = /^\s+|\s+$/g;
+ return function(){ return this.replace(re, ""); };
+}();
+
+
+
+Date.prototype.getElapsed = function(date) {
+ return Math.abs((date || new Date()).getTime()-this.getTime());
+};
+
+
+
+Ext.applyIf(Number.prototype, {
+
+ constrain : function(min, max){
+ return Math.min(Math.max(this, min), max);
+ }
+});
+Ext.lib.Dom.getRegion = function(el) {
+ return Ext.lib.Region.getRegion(el);
+}; Ext.lib.Region = function(t, r, b, l) {
+ var me = this;
+ me.top = t;
+ me[1] = t;
+ me.right = r;
+ me.bottom = b;
+ me.left = l;
+ me[0] = l;
+ };
+
+ Ext.lib.Region.prototype = {
+ contains : function(region) {
+ var me = this;
+ return ( region.left >= me.left &&
+ region.right <= me.right &&
+ region.top >= me.top &&
+ region.bottom <= me.bottom );
+
+ },
+
+ getArea : function() {
+ var me = this;
+ return ( (me.bottom - me.top) * (me.right - me.left) );
+ },
+
+ intersect : function(region) {
+ var me = this,
+ t = Math.max(me.top, region.top),
+ r = Math.min(me.right, region.right),
+ b = Math.min(me.bottom, region.bottom),
+ l = Math.max(me.left, region.left);
+
+ if (b >= t && r >= l) {
+ return new Ext.lib.Region(t, r, b, l);
+ }
+ },
+
+ union : function(region) {
+ var me = this,
+ t = Math.min(me.top, region.top),
+ r = Math.max(me.right, region.right),
+ b = Math.max(me.bottom, region.bottom),
+ l = Math.min(me.left, region.left);
+
+ return new Ext.lib.Region(t, r, b, l);
+ },
+
+ constrainTo : function(r) {
+ var me = this;
+ me.top = me.top.constrain(r.top, r.bottom);
+ me.bottom = me.bottom.constrain(r.top, r.bottom);
+ me.left = me.left.constrain(r.left, r.right);
+ me.right = me.right.constrain(r.left, r.right);
+ return me;
+ },
+
+ adjust : function(t, l, b, r) {
+ var me = this;
+ me.top += t;
+ me.left += l;
+ me.right += r;
+ me.bottom += b;
+ return me;
+ }
+ };
+
+ Ext.lib.Region.getRegion = function(el) {
+ var p = Ext.lib.Dom.getXY(el),
+ t = p[1],
+ r = p[0] + el.offsetWidth,
+ b = p[1] + el.offsetHeight,
+ l = p[0];
+
+ return new Ext.lib.Region(t, r, b, l);
+ }; Ext.lib.Point = function(x, y) {
+ if (Ext.isArray(x)) {
+ y = x[1];
+ x = x[0];
+ }
+ var me = this;
+ me.x = me.right = me.left = me[0] = x;
+ me.y = me.top = me.bottom = me[1] = y;
+ };
+
+ Ext.lib.Point.prototype = new Ext.lib.Region();
+
+Ext.apply(Ext.DomHelper,
+function(){
+ var pub,
+ afterbegin = 'afterbegin',
+ afterend = 'afterend',
+ beforebegin = 'beforebegin',
+ beforeend = 'beforeend',
+ confRe = /tag|children|cn|html$/i;
+
+
+ function doInsert(el, o, returnElement, pos, sibling, append){
+ el = Ext.getDom(el);
+ var newNode;
+ if (pub.useDom) {
+ newNode = createDom(o, null);
+ if (append) {
+ el.appendChild(newNode);
+ } else {
+ (sibling == 'firstChild' ? el : el.parentNode).insertBefore(newNode, el[sibling] || el);
+ }
+ } else {
+ newNode = Ext.DomHelper.insertHtml(pos, el, Ext.DomHelper.createHtml(o));
+ }
+ return returnElement ? Ext.get(newNode, true) : newNode;
+ }
+
+
+
+ function createDom(o, parentNode){
+ var el,
+ doc = document,
+ useSet,
+ attr,
+ val,
+ cn;
+
+ if (Ext.isArray(o)) {
+ el = doc.createDocumentFragment();
+ for (var i = 0, l = o.length; i < l; i++) {
+ createDom(o[i], el);
+ }
+ } else if (typeof o == 'string') {
+ el = doc.createTextNode(o);
+ } else {
+ el = doc.createElement( o.tag || 'div' );
+ useSet = !!el.setAttribute;
+ for (var attr in o) {
+ if(!confRe.test(attr)){
+ val = o[attr];
+ if(attr == 'cls'){
+ el.className = val;
+ }else{
+ if(useSet){
+ el.setAttribute(attr, val);
+ }else{
+ el[attr] = val;
+ }
+ }
+ }
+ }
+ Ext.DomHelper.applyStyles(el, o.style);
+
+ if ((cn = o.children || o.cn)) {
+ createDom(cn, el);
+ } else if (o.html) {
+ el.innerHTML = o.html;
+ }
+ }
+ if(parentNode){
+ parentNode.appendChild(el);
+ }
+ return el;
+ }
+
+ pub = {
+
+ createTemplate : function(o){
+ var html = Ext.DomHelper.createHtml(o);
+ return new Ext.Template(html);
+ },
+
+
+ useDom : false,
+
+
+ insertBefore : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, beforebegin);
+ },
+
+
+ insertAfter : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, afterend, 'nextSibling');
+ },
+
+
+ insertFirst : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, afterbegin, 'firstChild');
+ },
+
+
+ append: function(el, o, returnElement){
+ return doInsert(el, o, returnElement, beforeend, '', true);
+ },
+
+
+ createDom: createDom
+ };
+ return pub;
+}());
+
+Ext.apply(Ext.Template.prototype, {
+
+ disableFormats : false,
+
+
+
+ re : /\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
+ argsRe : /^\s*['"](.*)["']\s*$/,
+ compileARe : /\\/g,
+ compileBRe : /(\r\n|\n)/g,
+ compileCRe : /'/g,
+
+ /**
+ * Returns an HTML fragment of this template with the specified values applied.
+ * @param {Object/Array} values The template values. Can be an array if your params are numeric (i.e. {0}) or an object (i.e. {foo: 'bar'})
+ * @return {String} The HTML fragment
+ * @hide repeat doc
+ */
+ applyTemplate : function(values){
+ var me = this,
+ useF = me.disableFormats !== true,
+ fm = Ext.util.Format,
+ tpl = me;
+
+ if(me.compiled){
+ return me.compiled(values);
+ }
+ function fn(m, name, format, args){
+ if (format && useF) {
+ if (format.substr(0, 5) == "this.") {
+ return tpl.call(format.substr(5), values[name], values);
+ } else {
+ if (args) {
+ // quoted values are required for strings in compiled templates,
+ // but for non compiled we need to strip them
+ // quoted reversed for jsmin
+ var re = me.argsRe;
+ args = args.split(',');
+ for(var i = 0, len = args.length; i < len; i++){
+ args[i] = args[i].replace(re, "$1");
+ }
+ args = [values[name]].concat(args);
+ } else {
+ args = [values[name]];
+ }
+ return fm[format].apply(fm, args);
+ }
+ } else {
+ return values[name] !== undefined ? values[name] : "";
+ }
+ }
+ return me.html.replace(me.re, fn);
+ },
+
+ /**
+ * Compiles the template into an internal function, eliminating the RegEx overhead.
+ * @return {Ext.Template} this
+ * @hide repeat doc
+ */
+ compile : function(){
+ var me = this,
+ fm = Ext.util.Format,
+ useF = me.disableFormats !== true,
+ sep = Ext.isGecko ? "+" : ",",
+ body;
+
+ function fn(m, name, format, args){
+ if(format && useF){
+ args = args ? ',' + args : "";
+ if(format.substr(0, 5) != "this."){
+ format = "fm." + format + '(';
+ }else{
+ format = 'this.call("'+ format.substr(5) + '", ';
+ args = ", values";
+ }
+ }else{
+ args= ''; format = "(values['" + name + "'] == undefined ? '' : ";
+ }
+ return "'"+ sep + format + "values['" + name + "']" + args + ")"+sep+"'";
+ }
+
+ // branched to use + in gecko and [].join() in others
+ if(Ext.isGecko){
+ body = "this.compiled = function(values){ return '" +
+ me.html.replace(me.compileARe, '\\\\').replace(me.compileBRe, '\\n').replace(me.compileCRe, "\\'").replace(me.re, fn) +
+ "';};";
+ }else{
+ body = ["this.compiled = function(values){ return ['"];
+ body.push(me.html.replace(me.compileARe, '\\\\').replace(me.compileBRe, '\\n').replace(me.compileCRe, "\\'").replace(me.re, fn));
+ body.push("'].join('');};");
+ body = body.join('');
+ }
+ eval(body);
+ return me;
+ },
+
+ // private function used to call members
+ call : function(fnName, value, allValues){
+ return this[fnName](value, allValues);
+ }
+});
+Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
+/**
+ * @class Ext.util.Functions
+ * @singleton
+ */
+Ext.util.Functions = {
+ /**
+ * Creates an interceptor function. The passed function is called before the original one. If it returns false,
+ * the original one is not called. The resulting function returns the results of the original function.
+ * The passed function is called with the parameters of the original function. Example usage:
+ * <pre><code>
+var sayHi = function(name){
+ alert('Hi, ' + name);
+}
+
+sayHi('Fred'); // alerts "Hi, Fred"
+
+// create a new function that validates input without
+// directly modifying the original function:
+var sayHiToFriend = Ext.createInterceptor(sayHi, function(name){
+ return name == 'Brian';
+});
+
+sayHiToFriend('Fred'); // no alert
+sayHiToFriend('Brian'); // alerts "Hi, Brian"
+ </code></pre>
+ * @param {Function} origFn The original function.
+ * @param {Function} newFn The function to call before the original
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the passed function is executed.
+ * <b>If omitted, defaults to the scope in which the original function is called or the browser window.</b>
+ * @return {Function} The new function
+ */
+ createInterceptor: function(origFn, newFn, scope) {
+ var method = origFn;
+ if (!Ext.isFunction(newFn)) {
+ return origFn;
+ }
+ else {
+ return function() {
+ var me = this,
+ args = arguments;
+ newFn.target = me;
+ newFn.method = origFn;
+ return (newFn.apply(scope || me || window, args) !== false) ?
+ origFn.apply(me || window, args) :
+ null;
+ };
+ }
+ },
+
+ /**
+ * Creates a delegate (callback) that sets the scope to obj.
+ * Call directly on any function. Example: <code>Ext.createDelegate(this.myFunction, this, [arg1, arg2])</code>
+ * Will create a function that is automatically scoped to obj so that the <tt>this</tt> variable inside the
+ * callback points to obj. Example usage:
+ * <pre><code>
+var sayHi = function(name){
+ // Note this use of "this.text" here. This function expects to
+ // execute within a scope that contains a text property. In this
+ // example, the "this" variable is pointing to the btn object that
+ // was passed in createDelegate below.
+ alert('Hi, ' + name + '. You clicked the "' + this.text + '" button.');
+}
+
+var btn = new Ext.Button({
+ text: 'Say Hi',
+ renderTo: Ext.getBody()
+});
+
+// This callback will execute in the scope of the
+// button instance. Clicking the button alerts
+// "Hi, Fred. You clicked the "Say Hi" button."
+btn.on('click', Ext.createDelegate(sayHi, btn, ['Fred']));
+ </code></pre>
+ * @param {Function} fn The function to delegate.
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the function is executed.
+ * <b>If omitted, defaults to the browser window.</b>
+ * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
+ * if a number the args are inserted at the specified position
+ * @return {Function} The new function
+ */
+ createDelegate: function(fn, obj, args, appendArgs) {
+ if (!Ext.isFunction(fn)) {
+ return fn;
+ }
+ return function() {
+ var callArgs = args || arguments;
+ if (appendArgs === true) {
+ callArgs = Array.prototype.slice.call(arguments, 0);
+ callArgs = callArgs.concat(args);
+ }
+ else if (Ext.isNumber(appendArgs)) {
+ callArgs = Array.prototype.slice.call(arguments, 0);
+ // copy arguments first
+ var applyArgs = [appendArgs, 0].concat(args);
+ // create method call params
+ Array.prototype.splice.apply(callArgs, applyArgs);
+ // splice them in
+ }
+ return fn.apply(obj || window, callArgs);
+ };
+ },
+
+ /**
+ * Calls this function after the number of millseconds specified, optionally in a specific scope. Example usage:
+ * <pre><code>
+var sayHi = function(name){
+ alert('Hi, ' + name);
+}
+
+// executes immediately:
+sayHi('Fred');
+
+// executes after 2 seconds:
+Ext.defer(sayHi, 2000, this, ['Fred']);
+
+// this syntax is sometimes useful for deferring
+// execution of an anonymous function:
+Ext.defer(function(){
+ alert('Anonymous');
+}, 100);
+ </code></pre>
+ * @param {Function} fn The function to defer.
+ * @param {Number} millis The number of milliseconds for the setTimeout call (if less than or equal to 0 the function is executed immediately)
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the function is executed.
+ * <b>If omitted, defaults to the browser window.</b>
+ * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
+ * if a number the args are inserted at the specified position
+ * @return {Number} The timeout id that can be used with clearTimeout
+ */
+ defer: function(fn, millis, obj, args, appendArgs) {
+ fn = Ext.util.Functions.createDelegate(fn, obj, args, appendArgs);
+ if (millis > 0) {
+ return setTimeout(fn, millis);
+ }
+ fn();
+ return 0;
+ },
+
+
+ /**
+ * Create a combined function call sequence of the original function + the passed function.
+ * The resulting function returns the results of the original function.
+ * The passed fcn is called with the parameters of the original function. Example usage:
+ *
+
+var sayHi = function(name){
+ alert('Hi, ' + name);
+}
+
+sayHi('Fred'); // alerts "Hi, Fred"
+
+var sayGoodbye = Ext.createSequence(sayHi, function(name){
+ alert('Bye, ' + name);
+});
+
+sayGoodbye('Fred'); // both alerts show
+
+ * @param {Function} origFn The original function.
+ * @param {Function} newFn The function to sequence
+ * @param {Object} scope (optional) The scope (this reference) in which the passed function is executed.
+ * If omitted, defaults to the scope in which the original function is called or the browser window.
+ * @return {Function} The new function
+ */
+ createSequence: function(origFn, newFn, scope) {
+ if (!Ext.isFunction(newFn)) {
+ return origFn;
+ }
+ else {
+ return function() {
+ var retval = origFn.apply(this || window, arguments);
+ newFn.apply(scope || this || window, arguments);
+ return retval;
+ };
+ }
+ }
+};
+
+/**
+ * Shorthand for {@link Ext.util.Functions#defer}
+ * @param {Function} fn The function to defer.
+ * @param {Number} millis The number of milliseconds for the setTimeout call (if less than or equal to 0 the function is executed immediately)
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the function is executed.
+ * <b>If omitted, defaults to the browser window.</b>
+ * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
+ * if a number the args are inserted at the specified position
+ * @return {Number} The timeout id that can be used with clearTimeout
+ * @member Ext
+ * @method defer
+ */
+
+Ext.defer = Ext.util.Functions.defer;
+
+/**
+ * Shorthand for {@link Ext.util.Functions#createInterceptor}
+ * @param {Function} origFn The original function.
+ * @param {Function} newFn The function to call before the original
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the passed function is executed.
+ * <b>If omitted, defaults to the scope in which the original function is called or the browser window.</b>
+ * @return {Function} The new function
+ * @member Ext
+ * @method createInterceptor
+ */
+
+Ext.createInterceptor = Ext.util.Functions.createInterceptor;
+
+/**
+ * Shorthand for {@link Ext.util.Functions#createSequence}
+ * @param {Function} origFn The original function.
+ * @param {Function} newFn The function to sequence
+ * @param {Object} scope (optional) The scope (this reference) in which the passed function is executed.
+ * If omitted, defaults to the scope in which the original function is called or the browser window.
+ * @return {Function} The new function
+ * @member Ext
+ * @method createSequence
+ */
+
+Ext.createSequence = Ext.util.Functions.createSequence;
+
+/**
+ * Shorthand for {@link Ext.util.Functions#createDelegate}
+ * @param {Function} fn The function to delegate.
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the function is executed.
+ * <b>If omitted, defaults to the browser window.</b>
+ * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
+ * if a number the args are inserted at the specified position
+ * @return {Function} The new function
+ * @member Ext
+ * @method createDelegate
+ */
+Ext.createDelegate = Ext.util.Functions.createDelegate;
+/**
+ * @class Ext.util.Observable
+ */
+Ext.apply(Ext.util.Observable.prototype, function(){
+ // this is considered experimental (along with beforeMethod, afterMethod, removeMethodListener?)
+ // allows for easier interceptor and sequences, including cancelling and overwriting the return value of the call
+ // private
+ function getMethodEvent(method){
+ var e = (this.methodEvents = this.methodEvents ||
+ {})[method], returnValue, v, cancel, obj = this;
+
+ if (!e) {
+ this.methodEvents[method] = e = {};
+ e.originalFn = this[method];
+ e.methodName = method;
+ e.before = [];
+ e.after = [];
+
+ var makeCall = function(fn, scope, args){
+ if((v = fn.apply(scope || obj, args)) !== undefined){
+ if (typeof v == 'object') {
+ if(v.returnValue !== undefined){
+ returnValue = v.returnValue;
+ }else{
+ returnValue = v;
+ }
+ cancel = !!v.cancel;
+ }
+ else
+ if (v === false) {
+ cancel = true;
+ }
+ else {
+ returnValue = v;
+ }
+ }
+ };
+
+ this[method] = function(){
+ var args = Array.prototype.slice.call(arguments, 0),
+ b;
+ returnValue = v = undefined;
+ cancel = false;
+
+ for(var i = 0, len = e.before.length; i < len; i++){
+ b = e.before[i];
+ makeCall(b.fn, b.scope, args);
+ if (cancel) {
+ return returnValue;
+ }
+ }
+
+ if((v = e.originalFn.apply(obj, args)) !== undefined){
+ returnValue = v;
+ }
+
+ for(var i = 0, len = e.after.length; i < len; i++){
+ b = e.after[i];
+ makeCall(b.fn, b.scope, args);
+ if (cancel) {
+ return returnValue;
+ }
+ }
+ return returnValue;
+ };
+ }
+ return e;
+ }
+
+ return {
+ // these are considered experimental
+ // allows for easier interceptor and sequences, including cancelling and overwriting the return value of the call
+ // adds an 'interceptor' called before the original method
+ beforeMethod : function(method, fn, scope){
+ getMethodEvent.call(this, method).before.push({
+ fn: fn,
+ scope: scope
+ });
+ },
+
+ // adds a 'sequence' called after the original method
+ afterMethod : function(method, fn, scope){
+ getMethodEvent.call(this, method).after.push({
+ fn: fn,
+ scope: scope
+ });
+ },
+
+ removeMethodListener: function(method, fn, scope){
+ var e = this.getMethodEvent(method);
+ for(var i = 0, len = e.before.length; i < len; i++){
+ if(e.before[i].fn == fn && e.before[i].scope == scope){
+ e.before.splice(i, 1);
+ return;
+ }
+ }
+ for(var i = 0, len = e.after.length; i < len; i++){
+ if(e.after[i].fn == fn && e.after[i].scope == scope){
+ e.after.splice(i, 1);
+ return;
+ }
+ }
+ },
+
+ /**
+ * Relays selected events from the specified Observable as if the events were fired by <tt><b>this</b></tt>.
+ * @param {Object} o The Observable whose events this object is to relay.
+ * @param {Array} events Array of event names to relay.
+ */
+ relayEvents : function(o, events){
+ var me = this;
+ function createHandler(ename){
+ return function(){
+ return me.fireEvent.apply(me, [ename].concat(Array.prototype.slice.call(arguments, 0)));
+ };
+ }
+ for(var i = 0, len = events.length; i < len; i++){
+ var ename = events[i];
+ me.events[ename] = me.events[ename] || true;
+ o.on(ename, createHandler(ename), me);
+ }
+ },
+
+ /**
+ * <p>Enables events fired by this Observable to bubble up an owner hierarchy by calling
+ * <code>this.getBubbleTarget()</code> if present. There is no implementation in the Observable base class.</p>
+ * <p>This is commonly used by Ext.Components to bubble events to owner Containers. See {@link Ext.Component.getBubbleTarget}. The default
+ * implementation in Ext.Component returns the Component's immediate owner. But if a known target is required, this can be overridden to
+ * access the required target more quickly.</p>
+ * <p>Example:</p><pre><code>
+Ext.override(Ext.form.Field, {
+
+ initComponent : Ext.form.Field.prototype.initComponent.createSequence(function() {
+ this.enableBubble('change');
+ }),
+
+
+ getBubbleTarget : function() {
+ if (!this.formPanel) {
+ this.formPanel = this.findParentByType('form');
+ }
+ return this.formPanel;
+ }
+});
+
+var myForm = new Ext.formPanel({
+ title: 'User Details',
+ items: [{
+ ...
+ }],
+ listeners: {
+ change: function() {
+
+ myForm.header.setStyle('color', 'red');
+ }
+ }
+});
+</code></pre>
+ * @param {String/Array} events The event name to bubble, or an Array of event names.
+ */
+ enableBubble : function(events){
+ var me = this;
+ if(!Ext.isEmpty(events)){
+ events = Ext.isArray(events) ? events : Array.prototype.slice.call(arguments, 0);
+ for(var i = 0, len = events.length; i < len; i++){
+ var ename = events[i];
+ ename = ename.toLowerCase();
+ var ce = me.events[ename] || true;
+ if (typeof ce == 'boolean') {
+ ce = new Ext.util.Event(me, ename);
+ me.events[ename] = ce;
+ }
+ ce.bubble = true;
+ }
+ }
+ }
+ };
+}());
+
+
+
+Ext.util.Observable.capture = function(o, fn, scope){
+ o.fireEvent = o.fireEvent.createInterceptor(fn, scope);
+};
+
+
+
+Ext.util.Observable.observeClass = function(c, listeners){
+ if(c){
+ if(!c.fireEvent){
+ Ext.apply(c, new Ext.util.Observable());
+ Ext.util.Observable.capture(c.prototype, c.fireEvent, c);
+ }
+ if(typeof listeners == 'object'){
+ c.on(listeners);
+ }
+ return c;
+ }
+};
+
+Ext.apply(Ext.EventManager, function(){
+ var resizeEvent,
+ resizeTask,
+ textEvent,
+ textSize,
+ D = Ext.lib.Dom,
+ propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,
+ unload = Ext.EventManager._unload,
+ curWidth = 0,
+ curHeight = 0,
+
+
+
+ useKeydown = Ext.isWebKit ?
+ Ext.num(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1]) >= 525 :
+ !((Ext.isGecko && !Ext.isWindows) || Ext.isOpera);
+
+ return {
+ _unload: function(){
+ Ext.EventManager.un(window, "resize", this.fireWindowResize, this);
+ unload.call(Ext.EventManager);
+ },
+
+
+ doResizeEvent: function(){
+ var h = D.getViewHeight(),
+ w = D.getViewWidth();
+
+
+ if(curHeight != h || curWidth != w){
+ resizeEvent.fire(curWidth = w, curHeight = h);
+ }
+ },
+
+
+ onWindowResize : function(fn, scope, options){
+ if(!resizeEvent){
+ resizeEvent = new Ext.util.Event();
+ resizeTask = new Ext.util.DelayedTask(this.doResizeEvent);
+ Ext.EventManager.on(window, "resize", this.fireWindowResize, this);
+ }
+ resizeEvent.addListener(fn, scope, options);
+ },
+
+
+ fireWindowResize : function(){
+ if(resizeEvent){
+ resizeTask.delay(100);
+ }
+ },
+
+
+ onTextResize : function(fn, scope, options){
+ if(!textEvent){
+ textEvent = new Ext.util.Event();
+ var textEl = new Ext.Element(document.createElement('div'));
+ textEl.dom.className = 'x-text-resize';
+ textEl.dom.innerHTML = 'X';
+ textEl.appendTo(document.body);
+ textSize = textEl.dom.offsetHeight;
+ setInterval(function(){
+ if(textEl.dom.offsetHeight != textSize){
+ textEvent.fire(textSize, textSize = textEl.dom.offsetHeight);
+ }
+ }, this.textResizeInterval);
+ }
+ textEvent.addListener(fn, scope, options);
+ },
+
+
+ removeResizeListener : function(fn, scope){
+ if(resizeEvent){
+ resizeEvent.removeListener(fn, scope);
+ }
+ },
+
+
+ fireResize : function(){
+ if(resizeEvent){
+ resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
+ }
+ },
+
+
+ textResizeInterval : 50,
+
+
+ ieDeferSrc : false,
+
+
+ getKeyEvent : function(){
+ return useKeydown ? 'keydown' : 'keypress';
+ },
+
+
+
+ useKeydown: useKeydown
+ };
+}());
+
+Ext.EventManager.on = Ext.EventManager.addListener;
+
+
+Ext.apply(Ext.EventObjectImpl.prototype, {
+
+ BACKSPACE: 8,
+
+ TAB: 9,
+
+ NUM_CENTER: 12,
+
+ ENTER: 13,
+
+ RETURN: 13,
+
+ SHIFT: 16,
+
+ CTRL: 17,
+ CONTROL : 17,
+
+ ALT: 18,
+
+ PAUSE: 19,
+
+ CAPS_LOCK: 20,
+
+ ESC: 27,
+
+ SPACE: 32,
+
+ PAGE_UP: 33,
+ PAGEUP : 33,
+
+ PAGE_DOWN: 34,
+ PAGEDOWN : 34,
+
+ END: 35,
+
+ HOME: 36,
+
+ LEFT: 37,
+
+ UP: 38,
+
+ RIGHT: 39,
+
+ DOWN: 40,
+
+ PRINT_SCREEN: 44,
+
+ INSERT: 45,
+
+ DELETE: 46,
+
+ ZERO: 48,
+
+ ONE: 49,
+
+ TWO: 50,
+
+ THREE: 51,
+
+ FOUR: 52,
+
+ FIVE: 53,
+
+ SIX: 54,
+
+ SEVEN: 55,
+
+ EIGHT: 56,
+
+ NINE: 57,
+
+ A: 65,
+
+ B: 66,
+
+ C: 67,
+
+ D: 68,
+
+ E: 69,
+
+ F: 70,
+
+ G: 71,
+
+ H: 72,
+
+ I: 73,
+
+ J: 74,
+
+ K: 75,
+
+ L: 76,
+
+ M: 77,
+
+ N: 78,
+
+ O: 79,
+
+ P: 80,
+
+ Q: 81,
+
+ R: 82,
+
+ S: 83,
+
+ T: 84,
+
+ U: 85,
+
+ V: 86,
+
+ W: 87,
+
+ X: 88,
+
+ Y: 89,
+
+ Z: 90,
+
+ CONTEXT_MENU: 93,
+
+ NUM_ZERO: 96,
+
+ NUM_ONE: 97,
+
+ NUM_TWO: 98,
+
+ NUM_THREE: 99,
+
+ NUM_FOUR: 100,
+
+ NUM_FIVE: 101,
+
+ NUM_SIX: 102,
+
+ NUM_SEVEN: 103,
+
+ NUM_EIGHT: 104,
+
+ NUM_NINE: 105,
+
+ NUM_MULTIPLY: 106,
+
+ NUM_PLUS: 107,
+
+ NUM_MINUS: 109,
+
+ NUM_PERIOD: 110,
+
+ NUM_DIVISION: 111,
+
+ F1: 112,
+
+ F2: 113,
+
+ F3: 114,
+
+ F4: 115,
+
+ F5: 116,
+
+ F6: 117,
+
+ F7: 118,
+
+ F8: 119,
+
+ F9: 120,
+
+ F10: 121,
+
+ F11: 122,
+
+ F12: 123,
+
+
+ isNavKeyPress : function(){
+ var me = this,
+ k = this.normalizeKey(me.keyCode);
+ return (k >= 33 && k <= 40) ||
+ k == me.RETURN ||
+ k == me.TAB ||
+ k == me.ESC;
+ },
+
+ isSpecialKey : function(){
+ var k = this.normalizeKey(this.keyCode);
+ return (this.type == 'keypress' && this.ctrlKey) ||
+ this.isNavKeyPress() ||
+ (k == this.BACKSPACE) ||
+ (k >= 16 && k <= 20) ||
+ (k >= 44 && k <= 46);
+ },
+
+ getPoint : function(){
+ return new Ext.lib.Point(this.xy[0], this.xy[1]);
+ },
+
+
+ hasModifier : function(){
+ return ((this.ctrlKey || this.altKey) || this.shiftKey);
+ }
+});
+Ext.Element.addMethods({
+
+ swallowEvent : function(eventName, preventDefault) {
+ var me = this;
+ function fn(e) {
+ e.stopPropagation();
+ if (preventDefault) {
+ e.preventDefault();
+ }
+ }
+
+ if (Ext.isArray(eventName)) {
+ Ext.each(eventName, function(e) {
+ me.on(e, fn);
+ });
+ return me;
+ }
+ me.on(eventName, fn);
+ return me;
+ },
+
+
+ relayEvent : function(eventName, observable) {
+ this.on(eventName, function(e) {
+ observable.fireEvent(eventName, e);
+ });
+ },
+
+
+ clean : function(forceReclean) {
+ var me = this,
+ dom = me.dom,
+ n = dom.firstChild,
+ ni = -1;
+
+ if (Ext.Element.data(dom, 'isCleaned') && forceReclean !== true) {
+ return me;
+ }
+
+ while (n) {
+ var nx = n.nextSibling;
+ if (n.nodeType == 3 && !(/\S/.test(n.nodeValue))) {
+ dom.removeChild(n);
+ } else {
+ n.nodeIndex = ++ni;
+ }
+ n = nx;
+ }
+
+ Ext.Element.data(dom, 'isCleaned', true);
+ return me;
+ },
+
+
+ load : function() {
+ var updateManager = this.getUpdater();
+ updateManager.update.apply(updateManager, arguments);
+
+ return this;
+ },
+
+
+ getUpdater : function() {
+ return this.updateManager || (this.updateManager = new Ext.Updater(this));
+ },
+
+
+ update : function(html, loadScripts, callback) {
+ if (!this.dom) {
+ return this;
+ }
+ html = html || "";
+
+ if (loadScripts !== true) {
+ this.dom.innerHTML = html;
+ if (typeof callback == 'function') {
+ callback();
+ }
+ return this;
+ }
+
+ var id = Ext.id(),
+ dom = this.dom;
+
+ html += '<span id="' + id + '"></span>';
+
+ Ext.lib.Event.onAvailable(id, function() {
+ var DOC = document,
+ hd = DOC.getElementsByTagName("head")[0],
+ re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,
+ srcRe = /\ssrc=([\'\"])(.*?)\1/i,
+ typeRe = /\stype=([\'\"])(.*?)\1/i,
+ match,
+ attrs,
+ srcMatch,
+ typeMatch,
+ el,
+ s;
+
+ while ((match = re.exec(html))) {
+ attrs = match[1];
+ srcMatch = attrs ? attrs.match(srcRe) : false;
+ if (srcMatch && srcMatch[2]) {
+ s = DOC.createElement("script");
+ s.src = srcMatch[2];
+ typeMatch = attrs.match(typeRe);
+ if (typeMatch && typeMatch[2]) {
+ s.type = typeMatch[2];
+ }
+ hd.appendChild(s);
+ } else if (match[2] && match[2].length > 0) {
+ if (window.execScript) {
+ window.execScript(match[2]);
+ } else {
+ window.eval(match[2]);
+ }
+ }
+ }
+
+ el = DOC.getElementById(id);
+ if (el) {
+ Ext.removeNode(el);
+ }
+
+ if (typeof callback == 'function') {
+ callback();
+ }
+ });
+ dom.innerHTML = html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, "");
+ return this;
+ },
+
+
+ removeAllListeners : function() {
+ this.removeAnchor();
+ Ext.EventManager.removeAll(this.dom);
+ return this;
+ },
+
+
+ createProxy : function(config, renderTo, matchBox) {
+ config = (typeof config == 'object') ? config : {tag : "div", cls: config};
+
+ var me = this,
+ proxy = renderTo ? Ext.DomHelper.append(renderTo, config, true) :
+ Ext.DomHelper.insertBefore(me.dom, config, true);
+
+ if (matchBox && me.setBox && me.getBox) {
+ proxy.setBox(me.getBox());
+ }
+ return proxy;
+ }
+});
+
+Ext.Element.prototype.getUpdateManager = Ext.Element.prototype.getUpdater;
+
+Ext.Element.addMethods({
+
+ getAnchorXY : function(anchor, local, s){
+
+
+ anchor = (anchor || "tl").toLowerCase();
+ s = s || {};
+
+ var me = this,
+ vp = me.dom == document.body || me.dom == document,
+ w = s.width || vp ? Ext.lib.Dom.getViewWidth() : me.getWidth(),
+ h = s.height || vp ? Ext.lib.Dom.getViewHeight() : me.getHeight(),
+ xy,
+ r = Math.round,
+ o = me.getXY(),
+ scroll = me.getScroll(),
+ extraX = vp ? scroll.left : !local ? o[0] : 0,
+ extraY = vp ? scroll.top : !local ? o[1] : 0,
+ hash = {
+ c : [r(w * 0.5), r(h * 0.5)],
+ t : [r(w * 0.5), 0],
+ l : [0, r(h * 0.5)],
+ r : [w, r(h * 0.5)],
+ b : [r(w * 0.5), h],
+ tl : [0, 0],
+ bl : [0, h],
+ br : [w, h],
+ tr : [w, 0]
+ };
+
+ xy = hash[anchor];
+ return [xy[0] + extraX, xy[1] + extraY];
+ },
+
+
+ anchorTo : function(el, alignment, offsets, animate, monitorScroll, callback){
+ var me = this,
+ dom = me.dom,
+ scroll = !Ext.isEmpty(monitorScroll),
+ action = function(){
+ Ext.fly(dom).alignTo(el, alignment, offsets, animate);
+ Ext.callback(callback, Ext.fly(dom));
+ },
+ anchor = this.getAnchor();
+
+
+ this.removeAnchor();
+ Ext.apply(anchor, {
+ fn: action,
+ scroll: scroll
+ });
+
+ Ext.EventManager.onWindowResize(action, null);
+
+ if(scroll){
+ Ext.EventManager.on(window, 'scroll', action, null,
+ {buffer: !isNaN(monitorScroll) ? monitorScroll : 50});
+ }
+ action.call(me);
+ return me;
+ },
+
+
+ removeAnchor : function(){
+ var me = this,
+ anchor = this.getAnchor();
+
+ if(anchor && anchor.fn){
+ Ext.EventManager.removeResizeListener(anchor.fn);
+ if(anchor.scroll){
+ Ext.EventManager.un(window, 'scroll', anchor.fn);
+ }
+ delete anchor.fn;
+ }
+ return me;
+ },
+
+
+ getAnchor : function(){
+ var data = Ext.Element.data,
+ dom = this.dom;
+ if (!dom) {
+ return;
+ }
+ var anchor = data(dom, '_anchor');
+
+ if(!anchor){
+ anchor = data(dom, '_anchor', {});
+ }
+ return anchor;
+ },
+
+
+ getAlignToXY : function(el, p, o){
+ el = Ext.get(el);
+
+ if(!el || !el.dom){
+ throw "Element.alignToXY with an element that doesn't exist";
+ }
+
+ o = o || [0,0];
+ p = (!p || p == "?" ? "tl-bl?" : (!(/-/).test(p) && p !== "" ? "tl-" + p : p || "tl-bl")).toLowerCase();
+
+ var me = this,
+ d = me.dom,
+ a1,
+ a2,
+ x,
+ y,
+
+ w,
+ h,
+ r,
+ dw = Ext.lib.Dom.getViewWidth() -10,
+ dh = Ext.lib.Dom.getViewHeight()-10,
+ p1y,
+ p1x,
+ p2y,
+ p2x,
+ swapY,
+ swapX,
+ doc = document,
+ docElement = doc.documentElement,
+ docBody = doc.body,
+ scrollX = (docElement.scrollLeft || docBody.scrollLeft || 0)+5,
+ scrollY = (docElement.scrollTop || docBody.scrollTop || 0)+5,
+ c = false,
+ p1 = "",
+ p2 = "",
+ m = p.match(/^([a-z]+)-([a-z]+)(\?)?$/);
+
+ if(!m){
+ throw "Element.alignTo with an invalid alignment " + p;
+ }
+
+ p1 = m[1];
+ p2 = m[2];
+ c = !!m[3];
+
+
+
+ a1 = me.getAnchorXY(p1, true);
+ a2 = el.getAnchorXY(p2, false);
+
+ x = a2[0] - a1[0] + o[0];
+ y = a2[1] - a1[1] + o[1];
+
+ if(c){
+ w = me.getWidth();
+ h = me.getHeight();
+ r = el.getRegion();
+
+
+
+ p1y = p1.charAt(0);
+ p1x = p1.charAt(p1.length-1);
+ p2y = p2.charAt(0);
+ p2x = p2.charAt(p2.length-1);
+ swapY = ((p1y=="t" && p2y=="b") || (p1y=="b" && p2y=="t"));
+ swapX = ((p1x=="r" && p2x=="l") || (p1x=="l" && p2x=="r"));
+
+
+ if (x + w > dw + scrollX) {
+ x = swapX ? r.left-w : dw+scrollX-w;
+ }
+ if (x < scrollX) {
+ x = swapX ? r.right : scrollX;
+ }
+ if (y + h > dh + scrollY) {
+ y = swapY ? r.top-h : dh+scrollY-h;
+ }
+ if (y < scrollY){
+ y = swapY ? r.bottom : scrollY;
+ }
+ }
+ return [x,y];
+ },
+
+
+ alignTo : function(element, position, offsets, animate){
+ var me = this;
+ return me.setXY(me.getAlignToXY(element, position, offsets),
+ me.preanim && !!animate ? me.preanim(arguments, 3) : false);
+ },
+
+
+ adjustForConstraints : function(xy, parent, offsets){
+ return this.getConstrainToXY(parent || document, false, offsets, xy) || xy;
+ },
+
+
+ getConstrainToXY : function(el, local, offsets, proposedXY){
+ var os = {top:0, left:0, bottom:0, right: 0};
+
+ return function(el, local, offsets, proposedXY){
+ el = Ext.get(el);
+ offsets = offsets ? Ext.applyIf(offsets, os) : os;
+
+ var vw, vh, vx = 0, vy = 0;
+ if(el.dom == document.body || el.dom == document){
+ vw =Ext.lib.Dom.getViewWidth();
+ vh = Ext.lib.Dom.getViewHeight();
+ }else{
+ vw = el.dom.clientWidth;
+ vh = el.dom.clientHeight;
+ if(!local){
+ var vxy = el.getXY();
+ vx = vxy[0];
+ vy = vxy[1];
+ }
+ }
+
+ var s = el.getScroll();
+
+ vx += offsets.left + s.left;
+ vy += offsets.top + s.top;
+
+ vw -= offsets.right;
+ vh -= offsets.bottom;
+
+ var vr = vx + vw,
+ vb = vy + vh,
+ xy = proposedXY || (!local ? this.getXY() : [this.getLeft(true), this.getTop(true)]),
+ x = xy[0], y = xy[1],
+ offset = this.getConstrainOffset(),
+ w = this.dom.offsetWidth + offset,
+ h = this.dom.offsetHeight + offset;
+
+
+ var moved = false;
+
+
+ if((x + w) > vr){
+ x = vr - w;
+ moved = true;
+ }
+ if((y + h) > vb){
+ y = vb - h;
+ moved = true;
+ }
+
+ if(x < vx){
+ x = vx;
+ moved = true;
+ }
+ if(y < vy){
+ y = vy;
+ moved = true;
+ }
+ return moved ? [x, y] : false;
+ };
+ }(),
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getConstrainOffset : function(){
+ return 0;
+ },
+
+
+ getCenterXY : function(){
+ return this.getAlignToXY(document, 'c-c');
+ },
+
+
+ center : function(centerIn){
+ return this.alignTo(centerIn || document, 'c-c');
+ }
+});
+
+Ext.Element.addMethods({
+
+ select : function(selector, unique){
+ return Ext.Element.select(selector, unique, this.dom);
+ }
+});
+Ext.apply(Ext.Element.prototype, function() {
+ var GETDOM = Ext.getDom,
+ GET = Ext.get,
+ DH = Ext.DomHelper;
+
+ return {
+
+ insertSibling: function(el, where, returnDom){
+ var me = this,
+ rt,
+ isAfter = (where || 'before').toLowerCase() == 'after',
+ insertEl;
+
+ if(Ext.isArray(el)){
+ insertEl = me;
+ Ext.each(el, function(e) {
+ rt = Ext.fly(insertEl, '_internal').insertSibling(e, where, returnDom);
+ if(isAfter){
+ insertEl = rt;
+ }
+ });
+ return rt;
+ }
+
+ el = el || {};
+
+ if(el.nodeType || el.dom){
+ rt = me.dom.parentNode.insertBefore(GETDOM(el), isAfter ? me.dom.nextSibling : me.dom);
+ if (!returnDom) {
+ rt = GET(rt);
+ }
+ }else{
+ if (isAfter && !me.dom.nextSibling) {
+ rt = DH.append(me.dom.parentNode, el, !returnDom);
+ } else {
+ rt = DH[isAfter ? 'insertAfter' : 'insertBefore'](me.dom, el, !returnDom);
+ }
+ }
+ return rt;
+ }
+ };
+}());
+
+
+Ext.Element.boxMarkup = '<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';
+
+Ext.Element.addMethods(function(){
+ var INTERNAL = "_internal",
+ pxMatch = /(\d+\.?\d+)px/;
+ return {
+
+ applyStyles : function(style){
+ Ext.DomHelper.applyStyles(this.dom, style);
+ return this;
+ },
+
+
+ getStyles : function(){
+ var ret = {};
+ Ext.each(arguments, function(v) {
+ ret[v] = this.getStyle(v);
+ },
+ this);
+ return ret;
+ },
+
+
+ setOverflow : function(v){
+ var dom = this.dom;
+ if(v=='auto' && Ext.isMac && Ext.isGecko2){
+ dom.style.overflow = 'hidden';
+ (function(){dom.style.overflow = 'auto';}).defer(1);
+ }else{
+ dom.style.overflow = v;
+ }
+ },
+
+
+ boxWrap : function(cls){
+ cls = cls || 'x-box';
+ var el = Ext.get(this.insertHtml("beforeBegin", "<div class='" + cls + "'>" + String.format(Ext.Element.boxMarkup, cls) + "</div>"));
+ Ext.DomQuery.selectNode('.' + cls + '-mc', el.dom).appendChild(this.dom);
+ return el;
+ },
+
+
+ setSize : function(width, height, animate){
+ var me = this;
+ if(typeof width == 'object'){
+ height = width.height;
+ width = width.width;
+ }
+ width = me.adjustWidth(width);
+ height = me.adjustHeight(height);
+ if(!animate || !me.anim){
+ me.dom.style.width = me.addUnits(width);
+ me.dom.style.height = me.addUnits(height);
+ }else{
+ me.anim({width: {to: width}, height: {to: height}}, me.preanim(arguments, 2));
+ }
+ return me;
+ },
+
+
+ getComputedHeight : function(){
+ var me = this,
+ h = Math.max(me.dom.offsetHeight, me.dom.clientHeight);
+ if(!h){
+ h = parseFloat(me.getStyle('height')) || 0;
+ if(!me.isBorderBox()){
+ h += me.getFrameWidth('tb');
+ }
+ }
+ return h;
+ },
+
+
+ getComputedWidth : function(){
+ var w = Math.max(this.dom.offsetWidth, this.dom.clientWidth);
+ if(!w){
+ w = parseFloat(this.getStyle('width')) || 0;
+ if(!this.isBorderBox()){
+ w += this.getFrameWidth('lr');
+ }
+ }
+ return w;
+ },
+
+
+ getFrameWidth : function(sides, onlyContentBox){
+ return onlyContentBox && this.isBorderBox() ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides));
+ },
+
+
+ addClassOnOver : function(className){
+ this.hover(
+ function(){
+ Ext.fly(this, INTERNAL).addClass(className);
+ },
+ function(){
+ Ext.fly(this, INTERNAL).removeClass(className);
+ }
+ );
+ return this;
+ },
+
+
+ addClassOnFocus : function(className){
+ this.on("focus", function(){
+ Ext.fly(this, INTERNAL).addClass(className);
+ }, this.dom);
+ this.on("blur", function(){
+ Ext.fly(this, INTERNAL).removeClass(className);
+ }, this.dom);
+ return this;
+ },
+
+
+ addClassOnClick : function(className){
+ var dom = this.dom;
+ this.on("mousedown", function(){
+ Ext.fly(dom, INTERNAL).addClass(className);
+ var d = Ext.getDoc(),
+ fn = function(){
+ Ext.fly(dom, INTERNAL).removeClass(className);
+ d.removeListener("mouseup", fn);
+ };
+ d.on("mouseup", fn);
+ });
+ return this;
+ },
+
+
+
+ getViewSize : function(){
+ var doc = document,
+ d = this.dom,
+ isDoc = (d == doc || d == doc.body);
+
+
+ if (isDoc) {
+ var extdom = Ext.lib.Dom;
+ return {
+ width : extdom.getViewWidth(),
+ height : extdom.getViewHeight()
+ };
+
+
+ } else {
+ return {
+ width : d.clientWidth,
+ height : d.clientHeight
+ };
+ }
+ },
+
+
+
+ getStyleSize : function(){
+ var me = this,
+ w, h,
+ doc = document,
+ d = this.dom,
+ isDoc = (d == doc || d == doc.body),
+ s = d.style;
+
+
+ if (isDoc) {
+ var extdom = Ext.lib.Dom;
+ return {
+ width : extdom.getViewWidth(),
+ height : extdom.getViewHeight()
+ };
+ }
+
+ if(s.width && s.width != 'auto'){
+ w = parseFloat(s.width);
+ if(me.isBorderBox()){
+ w -= me.getFrameWidth('lr');
+ }
+ }
+
+ if(s.height && s.height != 'auto'){
+ h = parseFloat(s.height);
+ if(me.isBorderBox()){
+ h -= me.getFrameWidth('tb');
+ }
+ }
+
+ return {width: w || me.getWidth(true), height: h || me.getHeight(true)};
+ },
+
+
+ getSize : function(contentSize){
+ return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)};
+ },
+
+
+ repaint : function(){
+ var dom = this.dom;
+ this.addClass("x-repaint");
+ setTimeout(function(){
+ Ext.fly(dom).removeClass("x-repaint");
+ }, 1);
+ return this;
+ },
+
+
+ unselectable : function(){
+ this.dom.unselectable = "on";
+ return this.swallowEvent("selectstart", true).
+ addClass("x-unselectable");
+ },
+
+
+ getMargins : function(side){
+ var me = this,
+ key,
+ hash = {t:"top", l:"left", r:"right", b: "bottom"},
+ o = {};
+
+ if (!side) {
+ for (key in me.margins){
+ o[hash[key]] = parseFloat(me.getStyle(me.margins[key])) || 0;
+ }
+ return o;
+ } else {
+ return me.addStyles.call(me, side, me.margins);
+ }
+ }
+ };
+}());
+
+Ext.Element.addMethods({
+
+ setBox : function(box, adjust, animate){
+ var me = this,
+ w = box.width,
+ h = box.height;
+ if((adjust && !me.autoBoxAdjust) && !me.isBorderBox()){
+ w -= (me.getBorderWidth("lr") + me.getPadding("lr"));
+ h -= (me.getBorderWidth("tb") + me.getPadding("tb"));
+ }
+ me.setBounds(box.x, box.y, w, h, me.animTest.call(me, arguments, animate, 2));
+ return me;
+ },
+
+
+ getBox : function(contentBox, local) {
+ var me = this,
+ xy,
+ left,
+ top,
+ getBorderWidth = me.getBorderWidth,
+ getPadding = me.getPadding,
+ l,
+ r,
+ t,
+ b;
+ if(!local){
+ xy = me.getXY();
+ }else{
+ left = parseInt(me.getStyle("left"), 10) || 0;
+ top = parseInt(me.getStyle("top"), 10) || 0;
+ xy = [left, top];
+ }
+ var el = me.dom, w = el.offsetWidth, h = el.offsetHeight, bx;
+ if(!contentBox){
+ bx = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: w, height: h};
+ }else{
+ l = getBorderWidth.call(me, "l") + getPadding.call(me, "l");
+ r = getBorderWidth.call(me, "r") + getPadding.call(me, "r");
+ t = getBorderWidth.call(me, "t") + getPadding.call(me, "t");
+ b = getBorderWidth.call(me, "b") + getPadding.call(me, "b");
+ bx = {x: xy[0]+l, y: xy[1]+t, 0: xy[0]+l, 1: xy[1]+t, width: w-(l+r), height: h-(t+b)};
+ }
+ bx.right = bx.x + bx.width;
+ bx.bottom = bx.y + bx.height;
+ return bx;
+ },
+
+
+ move : function(direction, distance, animate){
+ var me = this,
+ xy = me.getXY(),
+ x = xy[0],
+ y = xy[1],
+ left = [x - distance, y],
+ right = [x + distance, y],
+ top = [x, y - distance],
+ bottom = [x, y + distance],
+ hash = {
+ l : left,
+ left : left,
+ r : right,
+ right : right,
+ t : top,
+ top : top,
+ up : top,
+ b : bottom,
+ bottom : bottom,
+ down : bottom
+ };
+
+ direction = direction.toLowerCase();
+ me.moveTo(hash[direction][0], hash[direction][1], me.animTest.call(me, arguments, animate, 2));
+ },
+
+
+ setLeftTop : function(left, top){
+ var me = this,
+ style = me.dom.style;
+ style.left = me.addUnits(left);
+ style.top = me.addUnits(top);
+ return me;
+ },
+
+
+ getRegion : function(){
+ return Ext.lib.Dom.getRegion(this.dom);
+ },
+
+
+ setBounds : function(x, y, width, height, animate){
+ var me = this;
+ if (!animate || !me.anim) {
+ me.setSize(width, height);
+ me.setLocation(x, y);
+ } else {
+ me.anim({points: {to: [x, y]},
+ width: {to: me.adjustWidth(width)},
+ height: {to: me.adjustHeight(height)}},
+ me.preanim(arguments, 4),
+ 'motion');
+ }
+ return me;
+ },
+
+
+ setRegion : function(region, animate) {
+ return this.setBounds(region.left, region.top, region.right-region.left, region.bottom-region.top, this.animTest.call(this, arguments, animate, 1));
+ }
+});
+Ext.Element.addMethods({
+
+ scrollTo : function(side, value, animate) {
+
+ var top = /top/i.test(side),
+ me = this,
+ dom = me.dom,
+ prop;
+ if (!animate || !me.anim) {
+
+ prop = 'scroll' + (top ? 'Top' : 'Left');
+ dom[prop] = value;
+ }
+ else {
+
+ prop = 'scroll' + (top ? 'Left' : 'Top');
+ me.anim({scroll: {to: top ? [dom[prop], value] : [value, dom[prop]]}}, me.preanim(arguments, 2), 'scroll');
+ }
+ return me;
+ },
+
+
+ scrollIntoView : function(container, hscroll) {
+ var c = Ext.getDom(container) || Ext.getBody().dom,
+ el = this.dom,
+ o = this.getOffsetsTo(c),
+ l = o[0] + c.scrollLeft,
+ t = o[1] + c.scrollTop,
+ b = t + el.offsetHeight,
+ r = l + el.offsetWidth,
+ ch = c.clientHeight,
+ ct = parseInt(c.scrollTop, 10),
+ cl = parseInt(c.scrollLeft, 10),
+ cb = ct + ch,
+ cr = cl + c.clientWidth;
+
+ if (el.offsetHeight > ch || t < ct) {
+ c.scrollTop = t;
+ }
+ else if (b > cb) {
+ c.scrollTop = b-ch;
+ }
+
+ c.scrollTop = c.scrollTop;
+
+ if (hscroll !== false) {
+ if (el.offsetWidth > c.clientWidth || l < cl) {
+ c.scrollLeft = l;
+ }
+ else if (r > cr) {
+ c.scrollLeft = r - c.clientWidth;
+ }
+ c.scrollLeft = c.scrollLeft;
+ }
+ return this;
+ },
+
+
+ scrollChildIntoView : function(child, hscroll) {
+ Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll);
+ },
+
+
+ scroll : function(direction, distance, animate) {
+ if (!this.isScrollable()) {
+ return false;
+ }
+ var el = this.dom,
+ l = el.scrollLeft, t = el.scrollTop,
+ w = el.scrollWidth, h = el.scrollHeight,
+ cw = el.clientWidth, ch = el.clientHeight,
+ scrolled = false, v,
+ hash = {
+ l: Math.min(l + distance, w-cw),
+ r: v = Math.max(l - distance, 0),
+ t: Math.max(t - distance, 0),
+ b: Math.min(t + distance, h-ch)
+ };
+ hash.d = hash.b;
+ hash.u = hash.t;
+
+ direction = direction.substr(0, 1);
+ if ((v = hash[direction]) > -1) {
+ scrolled = true;
+ this.scrollTo(direction == 'l' || direction == 'r' ? 'left' : 'top', v, this.preanim(arguments, 2));
+ }
+ return scrolled;
+ }
+});
+Ext.Element.addMethods(
+ function() {
+ var VISIBILITY = "visibility",
+ DISPLAY = "display",
+ HIDDEN = "hidden",
+ NONE = "none",
+ XMASKED = "x-masked",
+ XMASKEDRELATIVE = "x-masked-relative",
+ data = Ext.Element.data;
+
+ return {
+
+ isVisible : function(deep) {
+ var vis = !this.isStyle(VISIBILITY, HIDDEN) && !this.isStyle(DISPLAY, NONE),
+ p = this.dom.parentNode;
+
+ if (deep !== true || !vis) {
+ return vis;
+ }
+
+ while (p && !(/^body/i.test(p.tagName))) {
+ if (!Ext.fly(p, '_isVisible').isVisible()) {
+ return false;
+ }
+ p = p.parentNode;
+ }
+ return true;
+ },
+
+
+ isDisplayed : function() {
+ return !this.isStyle(DISPLAY, NONE);
+ },
+
+
+ enableDisplayMode : function(display) {
+ this.setVisibilityMode(Ext.Element.DISPLAY);
+
+ if (!Ext.isEmpty(display)) {
+ data(this.dom, 'originalDisplay', display);
+ }
+
+ return this;
+ },
+
+
+ mask : function(msg, msgCls) {
+ var me = this,
+ dom = me.dom,
+ dh = Ext.DomHelper,
+ EXTELMASKMSG = "ext-el-mask-msg",
+ el,
+ mask;
+
+ if (!/^body/i.test(dom.tagName) && me.getStyle('position') == 'static') {
+ me.addClass(XMASKEDRELATIVE);
+ }
+ if (el = data(dom, 'maskMsg')) {
+ el.remove();
+ }
+ if (el = data(dom, 'mask')) {
+ el.remove();
+ }
+
+ mask = dh.append(dom, {cls : "ext-el-mask"}, true);
+ data(dom, 'mask', mask);
+
+ me.addClass(XMASKED);
+ mask.setDisplayed(true);
+
+ if (typeof msg == 'string') {
+ var mm = dh.append(dom, {cls : EXTELMASKMSG, cn:{tag:'div'}}, true);
+ data(dom, 'maskMsg', mm);
+ mm.dom.className = msgCls ? EXTELMASKMSG + " " + msgCls : EXTELMASKMSG;
+ mm.dom.firstChild.innerHTML = msg;
+ mm.setDisplayed(true);
+ mm.center(me);
+ }
+
+
+ if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && me.getStyle('height') == 'auto') {
+ mask.setSize(undefined, me.getHeight());
+ }
+
+ return mask;
+ },
+
+
+ unmask : function() {
+ var me = this,
+ dom = me.dom,
+ mask = data(dom, 'mask'),
+ maskMsg = data(dom, 'maskMsg');
+
+ if (mask) {
+ if (maskMsg) {
+ maskMsg.remove();
+ data(dom, 'maskMsg', undefined);
+ }
+
+ mask.remove();
+ data(dom, 'mask', undefined);
+ me.removeClass([XMASKED, XMASKEDRELATIVE]);
+ }
+ },
+
+
+ isMasked : function() {
+ var m = data(this.dom, 'mask');
+ return m && m.isVisible();
+ },
+
+
+ createShim : function() {
+ var el = document.createElement('iframe'),
+ shim;
+
+ el.frameBorder = '0';
+ el.className = 'ext-shim';
+ el.src = Ext.SSL_SECURE_URL;
+ shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom));
+ shim.autoBoxAdjust = false;
+ return shim;
+ }
+ };
+ }()
+);
+Ext.Element.addMethods({
+
+ addKeyListener : function(key, fn, scope){
+ var config;
+ if(typeof key != 'object' || Ext.isArray(key)){
+ config = {
+ key: key,
+ fn: fn,
+ scope: scope
+ };
+ }else{
+ config = {
+ key : key.key,
+ shift : key.shift,
+ ctrl : key.ctrl,
+ alt : key.alt,
+ fn: fn,
+ scope: scope
+ };
+ }
+ return new Ext.KeyMap(this, config);
+ },
+
+
+ addKeyMap : function(config){
+ return new Ext.KeyMap(this, config);
+ }
+});
+
+
+
+Ext.CompositeElementLite.importElementMethods();
+Ext.apply(Ext.CompositeElementLite.prototype, {
+ addElements : function(els, root){
+ if(!els){
+ return this;
+ }
+ if(typeof els == "string"){
+ els = Ext.Element.selectorFunction(els, root);
+ }
+ var yels = this.elements;
+ Ext.each(els, function(e) {
+ yels.push(Ext.get(e));
+ });
+ return this;
+ },
+
+
+ first : function(){
+ return this.item(0);
+ },
+
+
+ last : function(){
+ return this.item(this.getCount()-1);
+ },
+
+
+ contains : function(el){
+ return this.indexOf(el) != -1;
+ },
+
+
+ removeElement : function(keys, removeDom){
+ var me = this,
+ els = this.elements,
+ el;
+ Ext.each(keys, function(val){
+ if ((el = (els[val] || els[val = me.indexOf(val)]))) {
+ if(removeDom){
+ if(el.dom){
+ el.remove();
+ }else{
+ Ext.removeNode(el);
+ }
+ }
+ els.splice(val, 1);
+ }
+ });
+ return this;
+ }
+});
+
+Ext.CompositeElement = Ext.extend(Ext.CompositeElementLite, {
+
+ constructor : function(els, root){
+ this.elements = [];
+ this.add(els, root);
+ },
+
+
+ getElement : function(el){
+
+ return el;
+ },
+
+
+ transformElement : function(el){
+ return Ext.get(el);
+ }
+
+
+
+
+
+
+});
+
+
+Ext.Element.select = function(selector, unique, root){
+ var els;
+ if(typeof selector == "string"){
+ els = Ext.Element.selectorFunction(selector, root);
+ }else if(selector.length !== undefined){
+ els = selector;
+ }else{
+ throw "Invalid selector";
+ }
+
+ return (unique === true) ? new Ext.CompositeElement(els) : new Ext.CompositeElementLite(els);
+};
+
+
+Ext.select = Ext.Element.select;
+Ext.UpdateManager = Ext.Updater = Ext.extend(Ext.util.Observable,
+function() {
+ var BEFOREUPDATE = "beforeupdate",
+ UPDATE = "update",
+ FAILURE = "failure";
+
+
+ function processSuccess(response){
+ var me = this;
+ me.transaction = null;
+ if (response.argument.form && response.argument.reset) {
+ try {
+ response.argument.form.reset();
+ } catch(e){}
+ }
+ if (me.loadScripts) {
+ me.renderer.render(me.el, response, me,
+ updateComplete.createDelegate(me, [response]));
+ } else {
+ me.renderer.render(me.el, response, me);
+ updateComplete.call(me, response);
+ }
+ }
+
+
+ function updateComplete(response, type, success){
+ this.fireEvent(type || UPDATE, this.el, response);
+ if(Ext.isFunction(response.argument.callback)){
+ response.argument.callback.call(response.argument.scope, this.el, Ext.isEmpty(success) ? true : false, response, response.argument.options);
+ }
+ }
+
+
+ function processFailure(response){
+ updateComplete.call(this, response, FAILURE, !!(this.transaction = null));
+ }
+
+ return {
+ constructor: function(el, forceNew){
+ var me = this;
+ el = Ext.get(el);
+ if(!forceNew && el.updateManager){
+ return el.updateManager;
+ }
+
+ me.el = el;
+
+ me.defaultUrl = null;
+
+ me.addEvents(
+
+ BEFOREUPDATE,
+
+ UPDATE,
+
+ FAILURE
+ );
+
+ Ext.apply(me, Ext.Updater.defaults);
+
+
+
+
+
+
+
+
+ me.transaction = null;
+
+ me.refreshDelegate = me.refresh.createDelegate(me);
+
+ me.updateDelegate = me.update.createDelegate(me);
+
+ me.formUpdateDelegate = (me.formUpdate || function(){}).createDelegate(me);
+
+
+ me.renderer = me.renderer || me.getDefaultRenderer();
+
+ Ext.Updater.superclass.constructor.call(me);
+ },
+
+
+ setRenderer : function(renderer){
+ this.renderer = renderer;
+ },
+
+
+ getRenderer : function(){
+ return this.renderer;
+ },
+
+
+ getDefaultRenderer: function() {
+ return new Ext.Updater.BasicRenderer();
+ },
+
+
+ setDefaultUrl : function(defaultUrl){
+ this.defaultUrl = defaultUrl;
+ },
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ update : function(url, params, callback, discardUrl){
+ var me = this,
+ cfg,
+ callerScope;
+
+ if(me.fireEvent(BEFOREUPDATE, me.el, url, params) !== false){
+ if(Ext.isObject(url)){
+ cfg = url;
+ url = cfg.url;
+ params = params || cfg.params;
+ callback = callback || cfg.callback;
+ discardUrl = discardUrl || cfg.discardUrl;
+ callerScope = cfg.scope;
+ if(!Ext.isEmpty(cfg.nocache)){me.disableCaching = cfg.nocache;};
+ if(!Ext.isEmpty(cfg.text)){me.indicatorText = '<div class="loading-indicator">'+cfg.text+"</div>";};
+ if(!Ext.isEmpty(cfg.scripts)){me.loadScripts = cfg.scripts;};
+ if(!Ext.isEmpty(cfg.timeout)){me.timeout = cfg.timeout;};
+ }
+ me.showLoading();
+
+ if(!discardUrl){
+ me.defaultUrl = url;
+ }
+ if(Ext.isFunction(url)){
+ url = url.call(me);
+ }
+
+ var o = Ext.apply({}, {
+ url : url,
+ params: (Ext.isFunction(params) && callerScope) ? params.createDelegate(callerScope) : params,
+ success: processSuccess,
+ failure: processFailure,
+ scope: me,
+ callback: undefined,
+ timeout: (me.timeout*1000),
+ disableCaching: me.disableCaching,
+ argument: {
+ "options": cfg,
+ "url": url,
+ "form": null,
+ "callback": callback,
+ "scope": callerScope || window,
+ "params": params
+ }
+ }, cfg);
+
+ me.transaction = Ext.Ajax.request(o);
+ }
+ },
+
+
+ formUpdate : function(form, url, reset, callback){
+ var me = this;
+ if(me.fireEvent(BEFOREUPDATE, me.el, form, url) !== false){
+ if(Ext.isFunction(url)){
+ url = url.call(me);
+ }
+ form = Ext.getDom(form);
+ me.transaction = Ext.Ajax.request({
+ form: form,
+ url:url,
+ success: processSuccess,
+ failure: processFailure,
+ scope: me,
+ timeout: (me.timeout*1000),
+ argument: {
+ "url": url,
+ "form": form,
+ "callback": callback,
+ "reset": reset
+ }
+ });
+ me.showLoading.defer(1, me);
+ }
+ },
+
+
+ startAutoRefresh : function(interval, url, params, callback, refreshNow){
+ var me = this;
+ if(refreshNow){
+ me.update(url || me.defaultUrl, params, callback, true);
+ }
+ if(me.autoRefreshProcId){
+ clearInterval(me.autoRefreshProcId);
+ }
+ me.autoRefreshProcId = setInterval(me.update.createDelegate(me, [url || me.defaultUrl, params, callback, true]), interval * 1000);
+ },
+
+
+ stopAutoRefresh : function(){
+ if(this.autoRefreshProcId){
+ clearInterval(this.autoRefreshProcId);
+ delete this.autoRefreshProcId;
+ }
+ },
+
+
+ isAutoRefreshing : function(){
+ return !!this.autoRefreshProcId;
+ },
+
+
+ showLoading : function(){
+ if(this.showLoadIndicator){
+ this.el.dom.innerHTML = this.indicatorText;
+ }
+ },
+
+
+ abort : function(){
+ if(this.transaction){
+ Ext.Ajax.abort(this.transaction);
+ }
+ },
+
+
+ isUpdating : function(){
+ return this.transaction ? Ext.Ajax.isLoading(this.transaction) : false;
+ },
+
+
+ refresh : function(callback){
+ if(this.defaultUrl){
+ this.update(this.defaultUrl, null, callback, true);
+ }
+ }
+ };
+}());
+
+
+Ext.Updater.defaults = {
+
+ timeout : 30,
+
+ disableCaching : false,
+
+ showLoadIndicator : true,
+
+ indicatorText : '<div class="loading-indicator">Loading...</div>',
+
+ loadScripts : false,
+
+ sslBlankUrl : Ext.SSL_SECURE_URL
+};
+
+
+
+Ext.Updater.updateElement = function(el, url, params, options){
+ var um = Ext.get(el).getUpdater();
+ Ext.apply(um, options);
+ um.update(url, params, options ? options.callback : null);
+};
+
+
+Ext.Updater.BasicRenderer = function(){};
+
+Ext.Updater.BasicRenderer.prototype = {
+
+ render : function(el, response, updateManager, callback){
+ el.update(response.responseText, updateManager.loadScripts, callback);
+ }
+};
+
+
+
+(function() {
+
+
+Date.useStrict = false;
+
+
+
+
+
+function xf(format) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return format.replace(/\{(\d+)\}/g, function(m, i) {
+ return args[i];
+ });
+}
+
+
+
+Date.formatCodeToRegex = function(character, currentGroup) {
+
+ var p = Date.parseCodes[character];
+
+ if (p) {
+ p = typeof p == 'function'? p() : p;
+ Date.parseCodes[character] = p;
+ }
+
+ return p ? Ext.applyIf({
+ c: p.c ? xf(p.c, currentGroup || "{0}") : p.c
+ }, p) : {
+ g:0,
+ c:null,
+ s:Ext.escapeRe(character)
+ };
+};
+
+
+var $f = Date.formatCodeToRegex;
+
+Ext.apply(Date, {
+
+ parseFunctions: {
+ "M$": function(input, strict) {
+
+
+ var re = new RegExp('\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/');
+ var r = (input || '').match(re);
+ return r? new Date(((r[1] || '') + r[2]) * 1) : null;
+ }
+ },
+ parseRegexes: [],
+
+
+ formatFunctions: {
+ "M$": function() {
+
+ return '\\/Date(' + this.getTime() + ')\\/';
+ }
+ },
+
+ y2kYear : 50,
+
+
+ MILLI : "ms",
+
+
+ SECOND : "s",
+
+
+ MINUTE : "mi",
+
+
+ HOUR : "h",
+
+
+ DAY : "d",
+
+
+ MONTH : "mo",
+
+
+ YEAR : "y",
+
+
+ defaults: {},
+
+
+ dayNames : [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+
+
+ monthNames : [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+
+
+ monthNumbers : {
+ Jan:0,
+ Feb:1,
+ Mar:2,
+ Apr:3,
+ May:4,
+ Jun:5,
+ Jul:6,
+ Aug:7,
+ Sep:8,
+ Oct:9,
+ Nov:10,
+ Dec:11
+ },
+
+
+ getShortMonthName : function(month) {
+ return Date.monthNames[month].substring(0, 3);
+ },
+
+
+ getShortDayName : function(day) {
+ return Date.dayNames[day].substring(0, 3);
+ },
+
+
+ getMonthNumber : function(name) {
+
+ return Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+ },
+
+
+ formatContainsHourInfo : (function(){
+ var stripEscapeRe = /(\\.)/g,
+ hourInfoRe = /([gGhHisucUOPZ]|M\$)/;
+ return function(format){
+ return hourInfoRe.test(format.replace(stripEscapeRe, ''));
+ };
+ })(),
+
+
+ formatCodes : {
+ d: "String.leftPad(this.getDate(), 2, '0')",
+ D: "Date.getShortDayName(this.getDay())",
+ j: "this.getDate()",
+ l: "Date.dayNames[this.getDay()]",
+ N: "(this.getDay() ? this.getDay() : 7)",
+ S: "this.getSuffix()",
+ w: "this.getDay()",
+ z: "this.getDayOfYear()",
+ W: "String.leftPad(this.getWeekOfYear(), 2, '0')",
+ F: "Date.monthNames[this.getMonth()]",
+ m: "String.leftPad(this.getMonth() + 1, 2, '0')",
+ M: "Date.getShortMonthName(this.getMonth())",
+ n: "(this.getMonth() + 1)",
+ t: "this.getDaysInMonth()",
+ L: "(this.isLeapYear() ? 1 : 0)",
+ o: "(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",
+ Y: "String.leftPad(this.getFullYear(), 4, '0')",
+ y: "('' + this.getFullYear()).substring(2, 4)",
+ a: "(this.getHours() < 12 ? 'am' : 'pm')",
+ A: "(this.getHours() < 12 ? 'AM' : 'PM')",
+ g: "((this.getHours() % 12) ? this.getHours() % 12 : 12)",
+ G: "this.getHours()",
+ h: "String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",
+ H: "String.leftPad(this.getHours(), 2, '0')",
+ i: "String.leftPad(this.getMinutes(), 2, '0')",
+ s: "String.leftPad(this.getSeconds(), 2, '0')",
+ u: "String.leftPad(this.getMilliseconds(), 3, '0')",
+ O: "this.getGMTOffset()",
+ P: "this.getGMTOffset(true)",
+ T: "this.getTimezone()",
+ Z: "(this.getTimezoneOffset() * -60)",
+
+ c: function() {
+ for (var c = "Y-m-dTH:i:sP", code = [], i = 0, l = c.length; i < l; ++i) {
+ var e = c.charAt(i);
+ code.push(e == "T" ? "'T'" : Date.getFormatCode(e));
+ }
+ return code.join(" + ");
+ },
+
+
+ U: "Math.round(this.getTime() / 1000)"
+ },
+
+
+ isValid : function(y, m, d, h, i, s, ms) {
+
+ h = h || 0;
+ i = i || 0;
+ s = s || 0;
+ ms = ms || 0;
+
+
+ var dt = new Date(y < 100 ? 100 : y, m - 1, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);
+
+ return y == dt.getFullYear() &&
+ m == dt.getMonth() + 1 &&
+ d == dt.getDate() &&
+ h == dt.getHours() &&
+ i == dt.getMinutes() &&
+ s == dt.getSeconds() &&
+ ms == dt.getMilliseconds();
+ },
+
+
+ parseDate : function(input, format, strict) {
+ var p = Date.parseFunctions;
+ if (p[format] == null) {
+ Date.createParser(format);
+ }
+ return p[format](input, Ext.isDefined(strict) ? strict : Date.useStrict);
+ },
+
+
+ getFormatCode : function(character) {
+ var f = Date.formatCodes[character];
+
+ if (f) {
+ f = typeof f == 'function'? f() : f;
+ Date.formatCodes[character] = f;
+ }
+
+
+ return f || ("'" + String.escape(character) + "'");
+ },
+
+
+ createFormat : function(format) {
+ var code = [],
+ special = false,
+ ch = '';
+
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true;
+ } else if (special) {
+ special = false;
+ code.push("'" + String.escape(ch) + "'");
+ } else {
+ code.push(Date.getFormatCode(ch));
+ }
+ }
+ Date.formatFunctions[format] = new Function("return " + code.join('+'));
+ },
+
+
+ createParser : function() {
+ var code = [
+ "var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,",
+ "def = Date.defaults,",
+ "results = String(input).match(Date.parseRegexes[{0}]);",
+
+ "if(results){",
+ "{1}",
+
+ "if(u != null){",
+ "v = new Date(u * 1000);",
+ "}else{",
+
+
+
+ "dt = (new Date()).clearTime();",
+
+
+ "y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));",
+ "m = Ext.num(m, Ext.num(def.m - 1, dt.getMonth()));",
+ "d = Ext.num(d, Ext.num(def.d, dt.getDate()));",
+
+
+ "h = Ext.num(h, Ext.num(def.h, dt.getHours()));",
+ "i = Ext.num(i, Ext.num(def.i, dt.getMinutes()));",
+ "s = Ext.num(s, Ext.num(def.s, dt.getSeconds()));",
+ "ms = Ext.num(ms, Ext.num(def.ms, dt.getMilliseconds()));",
+
+ "if(z >= 0 && y >= 0){",
+
+
+
+
+
+ "v = new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);",
+
+
+ "v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);",
+ "}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){",
+ "v = null;",
+ "}else{",
+
+
+ "v = new Date(y < 100 ? 100 : y, m, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);",
+ "}",
+ "}",
+ "}",
+
+ "if(v){",
+
+ "if(zz != null){",
+
+ "v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);",
+ "}else if(o){",
+
+ "v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));",
+ "}",
+ "}",
+
+ "return v;"
+ ].join('\n');
+
+ return function(format) {
+ var regexNum = Date.parseRegexes.length,
+ currentGroup = 1,
+ calc = [],
+ regex = [],
+ special = false,
+ ch = "",
+ i = 0,
+ obj,
+ last;
+
+ for (; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true;
+ } else if (special) {
+ special = false;
+ regex.push(String.escape(ch));
+ } else {
+ obj = $f(ch, currentGroup);
+ currentGroup += obj.g;
+ regex.push(obj.s);
+ if (obj.g && obj.c) {
+ if (obj.calcLast) {
+ last = obj.c;
+ } else {
+ calc.push(obj.c);
+ }
+ }
+ }
+ }
+
+ if (last) {
+ calc.push(last);
+ }
+
+ Date.parseRegexes[regexNum] = new RegExp("^" + regex.join('') + "$", 'i');
+ Date.parseFunctions[format] = new Function("input", "strict", xf(code, regexNum, calc.join('')));
+ };
+ }(),
+
+
+ parseCodes : {
+
+ d: {
+ g:1,
+ c:"d = parseInt(results[{0}], 10);\n",
+ s:"(\\d{2})"
+ },
+ j: {
+ g:1,
+ c:"d = parseInt(results[{0}], 10);\n",
+ s:"(\\d{1,2})"
+ },
+ D: function() {
+ for (var a = [], i = 0; i < 7; a.push(Date.getShortDayName(i)), ++i);
+ return {
+ g:0,
+ c:null,
+ s:"(?:" + a.join("|") +")"
+ };
+ },
+ l: function() {
+ return {
+ g:0,
+ c:null,
+ s:"(?:" + Date.dayNames.join("|") + ")"
+ };
+ },
+ N: {
+ g:0,
+ c:null,
+ s:"[1-7]"
+ },
+ S: {
+ g:0,
+ c:null,
+ s:"(?:st|nd|rd|th)"
+ },
+ w: {
+ g:0,
+ c:null,
+ s:"[0-6]"
+ },
+ z: {
+ g:1,
+ c:"z = parseInt(results[{0}], 10);\n",
+ s:"(\\d{1,3})"
+ },
+ W: {
+ g:0,
+ c:null,
+ s:"(?:\\d{2})"
+ },
+ F: function() {
+ return {
+ g:1,
+ c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n",
+ s:"(" + Date.monthNames.join("|") + ")"
+ };
+ },
+ M: function() {
+ for (var a = [], i = 0; i < 12; a.push(Date.getShortMonthName(i)), ++i);
+ return Ext.applyIf({
+ s:"(" + a.join("|") + ")"
+ }, $f("F"));
+ },
+ m: {
+ g:1,
+ c:"m = parseInt(results[{0}], 10) - 1;\n",
+ s:"(\\d{2})"
+ },
+ n: {
+ g:1,
+ c:"m = parseInt(results[{0}], 10) - 1;\n",
+ s:"(\\d{1,2})"
+ },
+ t: {
+ g:0,
+ c:null,
+ s:"(?:\\d{2})"
+ },
+ L: {
+ g:0,
+ c:null,
+ s:"(?:1|0)"
+ },
+ o: function() {
+ return $f("Y");
+ },
+ Y: {
+ g:1,
+ c:"y = parseInt(results[{0}], 10);\n",
+ s:"(\\d{4})"
+ },
+ y: {
+ g:1,
+ c:"var ty = parseInt(results[{0}], 10);\n"
+ + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",
+ s:"(\\d{1,2})"
+ },
+
+ a: function(){
+ return $f("A");
+ },
+ A: {
+
+ calcLast: true,
+ g:1,
+ c:"if (/(am)/i.test(results[{0}])) {\n"
+ + "if (!h || h == 12) { h = 0; }\n"
+ + "} else { if (!h || h < 12) { h = (h || 0) + 12; }}",
+ s:"(AM|PM|am|pm)"
+ },
+ g: function() {
+ return $f("G");
+ },
+ G: {
+ g:1,
+ c:"h = parseInt(results[{0}], 10);\n",
+ s:"(\\d{1,2})"
+ },
+ h: function() {
+ return $f("H");
+ },
+ H: {
+ g:1,
+ c:"h = parseInt(results[{0}], 10);\n",
+ s:"(\\d{2})"
+ },
+ i: {
+ g:1,
+ c:"i = parseInt(results[{0}], 10);\n",
+ s:"(\\d{2})"
+ },
+ s: {
+ g:1,
+ c:"s = parseInt(results[{0}], 10);\n",
+ s:"(\\d{2})"
+ },
+ u: {
+ g:1,
+ c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",
+ s:"(\\d+)"
+ },
+ O: {
+ g:1,
+ c:[
+ "o = results[{0}];",
+ "var sn = o.substring(0,1),",
+ "hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),",
+ "mn = o.substring(3,5) % 60;",
+ "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"
+ ].join("\n"),
+ s: "([+\-]\\d{4})"
+ },
+ P: {
+ g:1,
+ c:[
+ "o = results[{0}];",
+ "var sn = o.substring(0,1),",
+ "hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),",
+ "mn = o.substring(4,6) % 60;",
+ "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"
+ ].join("\n"),
+ s: "([+\-]\\d{2}:\\d{2})"
+ },
+ T: {
+ g:0,
+ c:null,
+ s:"[A-Z]{1,4}"
+ },
+ Z: {
+ g:1,
+ c:"zz = results[{0}] * 1;\n"
+ + "zz = (-43200 <= zz && zz <= 50400)? zz : null;\n",
+ s:"([+\-]?\\d{1,5})"
+ },
+ c: function() {
+ var calc = [],
+ arr = [
+ $f("Y", 1),
+ $f("m", 2),
+ $f("d", 3),
+ $f("h", 4),
+ $f("i", 5),
+ $f("s", 6),
+ {c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},
+ {c:[
+ "if(results[8]) {",
+ "if(results[8] == 'Z'){",
+ "zz = 0;",
+ "}else if (results[8].indexOf(':') > -1){",
+ $f("P", 8).c,
+ "}else{",
+ $f("O", 8).c,
+ "}",
+ "}"
+ ].join('\n')}
+ ];
+
+ for (var i = 0, l = arr.length; i < l; ++i) {
+ calc.push(arr[i].c);
+ }
+
+ return {
+ g:1,
+ c:calc.join(""),
+ s:[
+ arr[0].s,
+ "(?:", "-", arr[1].s,
+ "(?:", "-", arr[2].s,
+ "(?:",
+ "(?:T| )?",
+ arr[3].s, ":", arr[4].s,
+ "(?::", arr[5].s, ")?",
+ "(?:(?:\\.|,)(\\d+))?",
+ "(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",
+ ")?",
+ ")?",
+ ")?"
+ ].join("")
+ };
+ },
+ U: {
+ g:1,
+ c:"u = parseInt(results[{0}], 10);\n",
+ s:"(-?\\d+)"
+ }
+ }
+});
+
+}());
+
+Ext.apply(Date.prototype, {
+
+ dateFormat : function(format) {
+ if (Date.formatFunctions[format] == null) {
+ Date.createFormat(format);
+ }
+ return Date.formatFunctions[format].call(this);
+ },
+
+
+ getTimezone : function() {
+
+
+
+
+
+
+
+
+
+
+
+
+ return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/, "$1$2").replace(/[^A-Z]/g, "");
+ },
+
+
+ getGMTOffset : function(colon) {
+ return (this.getTimezoneOffset() > 0 ? "-" : "+")
+ + String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset()) / 60), 2, "0")
+ + (colon ? ":" : "")
+ + String.leftPad(Math.abs(this.getTimezoneOffset() % 60), 2, "0");
+ },
+
+
+ getDayOfYear: function() {
+ var num = 0,
+ d = this.clone(),
+ m = this.getMonth(),
+ i;
+
+ for (i = 0, d.setDate(1), d.setMonth(0); i < m; d.setMonth(++i)) {
+ num += d.getDaysInMonth();
+ }
+ return num + this.getDate() - 1;
+ },
+
+
+ getWeekOfYear : function() {
+
+ var ms1d = 864e5,
+ ms7d = 7 * ms1d;
+
+ return function() {
+ var DC3 = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate() + 3) / ms1d,
+ AWN = Math.floor(DC3 / 7),
+ Wyr = new Date(AWN * ms7d).getUTCFullYear();
+
+ return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
+ };
+ }(),
+
+
+ isLeapYear : function() {
+ var year = this.getFullYear();
+ return !!((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
+ },
+
+
+ getFirstDayOfMonth : function() {
+ var day = (this.getDay() - (this.getDate() - 1)) % 7;
+ return (day < 0) ? (day + 7) : day;
+ },
+
+
+ getLastDayOfMonth : function() {
+ return this.getLastDateOfMonth().getDay();
+ },
+
+
+
+ getFirstDateOfMonth : function() {
+ return new Date(this.getFullYear(), this.getMonth(), 1);
+ },
+
+
+ getLastDateOfMonth : function() {
+ return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth());
+ },
+
+
+ getDaysInMonth: function() {
+ var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+
+ return function() {
+ var m = this.getMonth();
+
+ return m == 1 && this.isLeapYear() ? 29 : daysInMonth[m];
+ };
+ }(),
+
+
+ getSuffix : function() {
+ switch (this.getDate()) {
+ case 1:
+ case 21:
+ case 31:
+ return "st";
+ case 2:
+ case 22:
+ return "nd";
+ case 3:
+ case 23:
+ return "rd";
+ default:
+ return "th";
+ }
+ },
+
+
+ clone : function() {
+ return new Date(this.getTime());
+ },
+
+
+ isDST : function() {
+
+
+ return new Date(this.getFullYear(), 0, 1).getTimezoneOffset() != this.getTimezoneOffset();
+ },
+
+
+ clearTime : function(clone) {
+ if (clone) {
+ return this.clone().clearTime();
+ }
+
+
+ var d = this.getDate();
+
+
+ this.setHours(0);
+ this.setMinutes(0);
+ this.setSeconds(0);
+ this.setMilliseconds(0);
+
+ if (this.getDate() != d) {
+
+
+
+
+ for (var hr = 1, c = this.add(Date.HOUR, hr); c.getDate() != d; hr++, c = this.add(Date.HOUR, hr));
+
+ this.setDate(d);
+ this.setHours(c.getHours());
+ }
+
+ return this;
+ },
+
+
+ add : function(interval, value) {
+ var d = this.clone();
+ if (!interval || value === 0) return d;
+
+ switch(interval.toLowerCase()) {
+ case Date.MILLI:
+ d.setMilliseconds(this.getMilliseconds() + value);
+ break;
+ case Date.SECOND:
+ d.setSeconds(this.getSeconds() + value);
+ break;
+ case Date.MINUTE:
+ d.setMinutes(this.getMinutes() + value);
+ break;
+ case Date.HOUR:
+ d.setHours(this.getHours() + value);
+ break;
+ case Date.DAY:
+ d.setDate(this.getDate() + value);
+ break;
+ case Date.MONTH:
+ var day = this.getDate();
+ if (day > 28) {
+ day = Math.min(day, this.getFirstDateOfMonth().add('mo', value).getLastDateOfMonth().getDate());
+ }
+ d.setDate(day);
+ d.setMonth(this.getMonth() + value);
+ break;
+ case Date.YEAR:
+ d.setFullYear(this.getFullYear() + value);
+ break;
+ }
+ return d;
+ },
+
+
+ between : function(start, end) {
+ var t = this.getTime();
+ return start.getTime() <= t && t <= end.getTime();
+ }
+});
+
+
+
+Date.prototype.format = Date.prototype.dateFormat;
+
+
+
+if (Ext.isSafari && (navigator.userAgent.match(/WebKit\/(\d+)/)[1] || NaN) < 420) {
+ Ext.apply(Date.prototype, {
+ _xMonth : Date.prototype.setMonth,
+ _xDate : Date.prototype.setDate,
+
+
+
+ setMonth : function(num) {
+ if (num <= -1) {
+ var n = Math.ceil(-num),
+ back_year = Math.ceil(n / 12),
+ month = (n % 12) ? 12 - n % 12 : 0;
+
+ this.setFullYear(this.getFullYear() - back_year);
+
+ return this._xMonth(month);
+ } else {
+ return this._xMonth(num);
+ }
+ },
+
+
+
+
+ setDate : function(d) {
+
+
+ return this.setTime(this.getTime() - (this.getDate() - d) * 864e5);
+ }
+ });
+}
+
+
+
+
+
+Ext.util.MixedCollection = function(allowFunctions, keyFn){
+ this.items = [];
+ this.map = {};
+ this.keys = [];
+ this.length = 0;
+ this.addEvents(
+
+ 'clear',
+
+ 'add',
+
+ 'replace',
+
+ 'remove',
+ 'sort'
+ );
+ this.allowFunctions = allowFunctions === true;
+ if(keyFn){
+ this.getKey = keyFn;
+ }
+ Ext.util.MixedCollection.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
+
+
+ allowFunctions : false,
+
+
+ add : function(key, o){
+ if(arguments.length == 1){
+ o = arguments[0];
+ key = this.getKey(o);
+ }
+ if(typeof key != 'undefined' && key !== null){
+ var old = this.map[key];
+ if(typeof old != 'undefined'){
+ return this.replace(key, o);
+ }
+ this.map[key] = o;
+ }
+ this.length++;
+ this.items.push(o);
+ this.keys.push(key);
+ this.fireEvent('add', this.length-1, o, key);
+ return o;
+ },
+
+
+ getKey : function(o){
+ return o.id;
+ },
+
+
+ replace : function(key, o){
+ if(arguments.length == 1){
+ o = arguments[0];
+ key = this.getKey(o);
+ }
+ var old = this.map[key];
+ if(typeof key == 'undefined' || key === null || typeof old == 'undefined'){
+ return this.add(key, o);
+ }
+ var index = this.indexOfKey(key);
+ this.items[index] = o;
+ this.map[key] = o;
+ this.fireEvent('replace', key, old, o);
+ return o;
+ },
+
+
+ addAll : function(objs){
+ if(arguments.length > 1 || Ext.isArray(objs)){
+ var args = arguments.length > 1 ? arguments : objs;
+ for(var i = 0, len = args.length; i < len; i++){
+ this.add(args[i]);
+ }
+ }else{
+ for(var key in objs){
+ if(this.allowFunctions || typeof objs[key] != 'function'){
+ this.add(key, objs[key]);
+ }
+ }
+ }
+ },
+
+
+ each : function(fn, scope){
+ var items = [].concat(this.items);
+ for(var i = 0, len = items.length; i < len; i++){
+ if(fn.call(scope || items[i], items[i], i, len) === false){
+ break;
+ }
+ }
+ },
+
+
+ eachKey : function(fn, scope){
+ for(var i = 0, len = this.keys.length; i < len; i++){
+ fn.call(scope || window, this.keys[i], this.items[i], i, len);
+ }
+ },
+
+
+ find : function(fn, scope){
+ for(var i = 0, len = this.items.length; i < len; i++){
+ if(fn.call(scope || window, this.items[i], this.keys[i])){
+ return this.items[i];
+ }
+ }
+ return null;
+ },
+
+
+ insert : function(index, key, o){
+ if(arguments.length == 2){
+ o = arguments[1];
+ key = this.getKey(o);
+ }
+ if(this.containsKey(key)){
+ this.suspendEvents();
+ this.removeKey(key);
+ this.resumeEvents();
+ }
+ if(index >= this.length){
+ return this.add(key, o);
+ }
+ this.length++;
+ this.items.splice(index, 0, o);
+ if(typeof key != 'undefined' && key !== null){
+ this.map[key] = o;
+ }
+ this.keys.splice(index, 0, key);
+ this.fireEvent('add', index, o, key);
+ return o;
+ },
+
+
+ remove : function(o){
+ return this.removeAt(this.indexOf(o));
+ },
+
+
+ removeAt : function(index){
+ if(index < this.length && index >= 0){
+ this.length--;
+ var o = this.items[index];
+ this.items.splice(index, 1);
+ var key = this.keys[index];
+ if(typeof key != 'undefined'){
+ delete this.map[key];
+ }
+ this.keys.splice(index, 1);
+ this.fireEvent('remove', o, key);
+ return o;
+ }
+ return false;
+ },
+
+
+ removeKey : function(key){
+ return this.removeAt(this.indexOfKey(key));
+ },
+
+
+ getCount : function(){
+ return this.length;
+ },
+
+
+ indexOf : function(o){
+ return this.items.indexOf(o);
+ },
+
+
+ indexOfKey : function(key){
+ return this.keys.indexOf(key);
+ },
+
+
+ item : function(key){
+ var mk = this.map[key],
+ item = mk !== undefined ? mk : (typeof key == 'number') ? this.items[key] : undefined;
+ return typeof item != 'function' || this.allowFunctions ? item : null;
+ },
+
+
+ itemAt : function(index){
+ return this.items[index];
+ },
+
+
+ key : function(key){
+ return this.map[key];
+ },
+
+
+ contains : function(o){
+ return this.indexOf(o) != -1;
+ },
+
+
+ containsKey : function(key){
+ return typeof this.map[key] != 'undefined';
+ },
+
+
+ clear : function(){
+ this.length = 0;
+ this.items = [];
+ this.keys = [];
+ this.map = {};
+ this.fireEvent('clear');
+ },
+
+
+ first : function(){
+ return this.items[0];
+ },
+
+
+ last : function(){
+ return this.items[this.length-1];
+ },
+
+
+ _sort : function(property, dir, fn){
+ var i, len,
+ dsc = String(dir).toUpperCase() == 'DESC' ? -1 : 1,
+
+
+ c = [],
+ keys = this.keys,
+ items = this.items;
+
+
+ fn = fn || function(a, b) {
+ return a - b;
+ };
+
+
+ for(i = 0, len = items.length; i < len; i++){
+ c[c.length] = {
+ key : keys[i],
+ value: items[i],
+ index: i
+ };
+ }
+
+
+ c.sort(function(a, b){
+ var v = fn(a[property], b[property]) * dsc;
+ if(v === 0){
+ v = (a.index < b.index ? -1 : 1);
+ }
+ return v;
+ });
+
+
+ for(i = 0, len = c.length; i < len; i++){
+ items[i] = c[i].value;
+ keys[i] = c[i].key;
+ }
+
+ this.fireEvent('sort', this);
+ },
+
+
+ sort : function(dir, fn){
+ this._sort('value', dir, fn);
+ },
+
+
+ reorder: function(mapping) {
+ this.suspendEvents();
+
+ var items = this.items,
+ index = 0,
+ length = items.length,
+ order = [],
+ remaining = [],
+ oldIndex;
+
+
+ for (oldIndex in mapping) {
+ order[mapping[oldIndex]] = items[oldIndex];
+ }
+
+ for (index = 0; index < length; index++) {
+ if (mapping[index] == undefined) {
+ remaining.push(items[index]);
+ }
+ }
+
+ for (index = 0; index < length; index++) {
+ if (order[index] == undefined) {
+ order[index] = remaining.shift();
+ }
+ }
+
+ this.clear();
+ this.addAll(order);
+
+ this.resumeEvents();
+ this.fireEvent('sort', this);
+ },
+
+
+ keySort : function(dir, fn){
+ this._sort('key', dir, fn || function(a, b){
+ var v1 = String(a).toUpperCase(), v2 = String(b).toUpperCase();
+ return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0);
+ });
+ },
+
+
+ getRange : function(start, end){
+ var items = this.items;
+ if(items.length < 1){
+ return [];
+ }
+ start = start || 0;
+ end = Math.min(typeof end == 'undefined' ? this.length-1 : end, this.length-1);
+ var i, r = [];
+ if(start <= end){
+ for(i = start; i <= end; i++) {
+ r[r.length] = items[i];
+ }
+ }else{
+ for(i = start; i >= end; i--) {
+ r[r.length] = items[i];
+ }
+ }
+ return r;
+ },
+
+
+ filter : function(property, value, anyMatch, caseSensitive){
+ if(Ext.isEmpty(value, false)){
+ return this.clone();
+ }
+ value = this.createValueMatcher(value, anyMatch, caseSensitive);
+ return this.filterBy(function(o){
+ return o && value.test(o[property]);
+ });
+ },
+
+
+ filterBy : function(fn, scope){
+ var r = new Ext.util.MixedCollection();
+ r.getKey = this.getKey;
+ var k = this.keys, it = this.items;
+ for(var i = 0, len = it.length; i < len; i++){
+ if(fn.call(scope||this, it[i], k[i])){
+ r.add(k[i], it[i]);
+ }
+ }
+ return r;
+ },
+
+
+ findIndex : function(property, value, start, anyMatch, caseSensitive){
+ if(Ext.isEmpty(value, false)){
+ return -1;
+ }
+ value = this.createValueMatcher(value, anyMatch, caseSensitive);
+ return this.findIndexBy(function(o){
+ return o && value.test(o[property]);
+ }, null, start);
+ },
+
+
+ findIndexBy : function(fn, scope, start){
+ var k = this.keys, it = this.items;
+ for(var i = (start||0), len = it.length; i < len; i++){
+ if(fn.call(scope||this, it[i], k[i])){
+ return i;
+ }
+ }
+ return -1;
+ },
+
+
+ createValueMatcher : function(value, anyMatch, caseSensitive, exactMatch) {
+ if (!value.exec) {
+ var er = Ext.escapeRe;
+ value = String(value);
+
+ if (anyMatch === true) {
+ value = er(value);
+ } else {
+ value = '^' + er(value);
+ if (exactMatch === true) {
+ value += '$';
+ }
+ }
+ value = new RegExp(value, caseSensitive ? '' : 'i');
+ }
+ return value;
+ },
+
+
+ clone : function(){
+ var r = new Ext.util.MixedCollection();
+ var k = this.keys, it = this.items;
+ for(var i = 0, len = it.length; i < len; i++){
+ r.add(k[i], it[i]);
+ }
+ r.getKey = this.getKey;
+ return r;
+ }
+});
+
+Ext.util.MixedCollection.prototype.get = Ext.util.MixedCollection.prototype.item;
+
+Ext.AbstractManager = Ext.extend(Object, {
+ typeName: 'type',
+
+ constructor: function(config) {
+ Ext.apply(this, config || {});
+
+
+ this.all = new Ext.util.MixedCollection();
+
+ this.types = {};
+ },
+
+
+ get : function(id){
+ return this.all.get(id);
+ },
+
+
+ register: function(item) {
+ this.all.add(item);
+ },
+
+
+ unregister: function(item) {
+ this.all.remove(item);
+ },
+
+
+ registerType : function(type, cls){
+ this.types[type] = cls;
+ cls[this.typeName] = type;
+ },
+
+
+ isRegistered : function(type){
+ return this.types[type] !== undefined;
+ },
+
+
+ create: function(config, defaultType) {
+ var type = config[this.typeName] || config.type || defaultType,
+ Constructor = this.types[type];
+
+ if (Constructor == undefined) {
+ throw new Error(String.format("The '{0}' type has not been registered with this manager", type));
+ }
+
+ return new Constructor(config);
+ },
+
+
+ onAvailable : function(id, fn, scope){
+ var all = this.all;
+
+ all.on("add", function(index, o){
+ if (o.id == id) {
+ fn.call(scope || o, o);
+ all.un("add", fn, scope);
+ }
+ });
+ }
+});
+Ext.util.Format = function() {
+ var trimRe = /^\s+|\s+$/g,
+ stripTagsRE = /<\/?[^>]+>/gi,
+ stripScriptsRe = /(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,
+ nl2brRe = /\r?\n/g;
+
+ return {
+
+ ellipsis : function(value, len, word) {
+ if (value && value.length > len) {
+ if (word) {
+ var vs = value.substr(0, len - 2),
+ index = Math.max(vs.lastIndexOf(' '), vs.lastIndexOf('.'), vs.lastIndexOf('!'), vs.lastIndexOf('?'));
+ if (index == -1 || index < (len - 15)) {
+ return value.substr(0, len - 3) + "...";
+ } else {
+ return vs.substr(0, index) + "...";
+ }
+ } else {
+ return value.substr(0, len - 3) + "...";
+ }
+ }
+ return value;
+ },
+
+
+ undef : function(value) {
+ return value !== undefined ? value : "";
+ },
+
+
+ defaultValue : function(value, defaultValue) {
+ if (!defaultValue && defaultValue !== 0) {
+ defaultValue = '';
+ }
+ return value !== undefined && value !== '' ? value : defaultValue;
+ },
+
+
+ htmlEncode : function(value) {
+ return !value ? value : String(value).replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
+ },
+
+
+ htmlDecode : function(value) {
+ return !value ? value : String(value).replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&quot;/g, '"').replace(/&amp;/g, "&");
+ },
+
+
+ trim : function(value) {
+ return String(value).replace(trimRe, "");
+ },
+
+
+ substr : function(value, start, length) {
+ return String(value).substr(start, length);
+ },
+
+
+ lowercase : function(value) {
+ return String(value).toLowerCase();
+ },
+
+
+ uppercase : function(value) {
+ return String(value).toUpperCase();
+ },
+
+
+ capitalize : function(value) {
+ return !value ? value : value.charAt(0).toUpperCase() + value.substr(1).toLowerCase();
+ },
+
+
+ call : function(value, fn) {
+ if (arguments.length > 2) {
+ var args = Array.prototype.slice.call(arguments, 2);
+ args.unshift(value);
+ return eval(fn).apply(window, args);
+ } else {
+ return eval(fn).call(window, value);
+ }
+ },
+
+
+ usMoney : function(v) {
+ v = (Math.round((v-0)*100))/100;
+ v = (v == Math.floor(v)) ? v + ".00" : ((v*10 == Math.floor(v*10)) ? v + "0" : v);
+ v = String(v);
+ var ps = v.split('.'),
+ whole = ps[0],
+ sub = ps[1] ? '.'+ ps[1] : '.00',
+ r = /(\d+)(\d{3})/;
+ while (r.test(whole)) {
+ whole = whole.replace(r, '$1' + ',' + '$2');
+ }
+ v = whole + sub;
+ if (v.charAt(0) == '-') {
+ return '-$' + v.substr(1);
+ }
+ return "$" + v;
+ },
+
+
+ date : function(v, format) {
+ if (!v) {
+ return "";
+ }
+ if (!Ext.isDate(v)) {
+ v = new Date(Date.parse(v));
+ }
+ return v.dateFormat(format || "m/d/Y");
+ },
+
+
+ dateRenderer : function(format) {
+ return function(v) {
+ return Ext.util.Format.date(v, format);
+ };
+ },
+
+
+ stripTags : function(v) {
+ return !v ? v : String(v).replace(stripTagsRE, "");
+ },
+
+
+ stripScripts : function(v) {
+ return !v ? v : String(v).replace(stripScriptsRe, "");
+ },
+
+
+ fileSize : function(size) {
+ if (size < 1024) {
+ return size + " bytes";
+ } else if (size < 1048576) {
+ return (Math.round(((size*10) / 1024))/10) + " KB";
+ } else {
+ return (Math.round(((size*10) / 1048576))/10) + " MB";
+ }
+ },
+
+
+ math : function(){
+ var fns = {};
+
+ return function(v, a){
+ if (!fns[a]) {
+ fns[a] = new Function('v', 'return v ' + a + ';');
+ }
+ return fns[a](v);
+ };
+ }(),
+
+
+ round : function(value, precision) {
+ var result = Number(value);
+ if (typeof precision == 'number') {
+ precision = Math.pow(10, precision);
+ result = Math.round(value * precision) / precision;
+ }
+ return result;
+ },
+
+
+ number: function(v, format) {
+ if (!format) {
+ return v;
+ }
+ v = Ext.num(v, NaN);
+ if (isNaN(v)) {
+ return '';
+ }
+ var comma = ',',
+ dec = '.',
+ i18n = false,
+ neg = v < 0;
+
+ v = Math.abs(v);
+ if (format.substr(format.length - 2) == '/i') {
+ format = format.substr(0, format.length - 2);
+ i18n = true;
+ comma = '.';
+ dec = ',';
+ }
+
+ var hasComma = format.indexOf(comma) != -1,
+ psplit = (i18n ? format.replace(/[^\d\,]/g, '') : format.replace(/[^\d\.]/g, '')).split(dec);
+
+ if (1 < psplit.length) {
+ v = v.toFixed(psplit[1].length);
+ } else if(2 < psplit.length) {
+ throw ('NumberFormatException: invalid format, formats should have no more than 1 period: ' + format);
+ } else {
+ v = v.toFixed(0);
+ }
+
+ var fnum = v.toString();
+
+ psplit = fnum.split('.');
+
+ if (hasComma) {
+ var cnum = psplit[0],
+ parr = [],
+ j = cnum.length,
+ m = Math.floor(j / 3),
+ n = cnum.length % 3 || 3,
+ i;
+
+ for (i = 0; i < j; i += n) {
+ if (i != 0) {
+ n = 3;
+ }
+
+ parr[parr.length] = cnum.substr(i, n);
+ m -= 1;
+ }
+ fnum = parr.join(comma);
+ if (psplit[1]) {
+ fnum += dec + psplit[1];
+ }
+ } else {
+ if (psplit[1]) {
+ fnum = psplit[0] + dec + psplit[1];
+ }
+ }
+
+ return (neg ? '-' : '') + format.replace(/[\d,?\.?]+/, fnum);
+ },
+
+
+ numberRenderer : function(format) {
+ return function(v) {
+ return Ext.util.Format.number(v, format);
+ };
+ },
+
+
+ plural : function(v, s, p) {
+ return v +' ' + (v == 1 ? s : (p ? p : s+'s'));
+ },
+
+
+ nl2br : function(v) {
+ return Ext.isEmpty(v) ? '' : v.replace(nl2brRe, '<br/>');
+ }
+ };
+}();
+
+Ext.XTemplate = function(){
+ Ext.XTemplate.superclass.constructor.apply(this, arguments);
+
+ var me = this,
+ s = me.html,
+ re = /<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,
+ nameRe = /^<tpl\b[^>]*?for="(.*?)"/,
+ ifRe = /^<tpl\b[^>]*?if="(.*?)"/,
+ execRe = /^<tpl\b[^>]*?exec="(.*?)"/,
+ m,
+ id = 0,
+ tpls = [],
+ VALUES = 'values',
+ PARENT = 'parent',
+ XINDEX = 'xindex',
+ XCOUNT = 'xcount',
+ RETURN = 'return ',
+ WITHVALUES = 'with(values){ ';
+
+ s = ['<tpl>', s, '</tpl>'].join('');
+
+ while((m = s.match(re))){
+ var m2 = m[0].match(nameRe),
+ m3 = m[0].match(ifRe),
+ m4 = m[0].match(execRe),
+ exp = null,
+ fn = null,
+ exec = null,
+ name = m2 && m2[1] ? m2[1] : '';
+
+ if (m3) {
+ exp = m3 && m3[1] ? m3[1] : null;
+ if(exp){
+ fn = new Function(VALUES, PARENT, XINDEX, XCOUNT, WITHVALUES + RETURN +(Ext.util.Format.htmlDecode(exp))+'; }');
+ }
+ }
+ if (m4) {
+ exp = m4 && m4[1] ? m4[1] : null;
+ if(exp){
+ exec = new Function(VALUES, PARENT, XINDEX, XCOUNT, WITHVALUES +(Ext.util.Format.htmlDecode(exp))+'; }');
+ }
+ }
+ if(name){
+ switch(name){
+ case '.': name = new Function(VALUES, PARENT, WITHVALUES + RETURN + VALUES + '; }'); break;
+ case '..': name = new Function(VALUES, PARENT, WITHVALUES + RETURN + PARENT + '; }'); break;
+ default: name = new Function(VALUES, PARENT, WITHVALUES + RETURN + name + '; }');
+ }
+ }
+ tpls.push({
+ id: id,
+ target: name,
+ exec: exec,
+ test: fn,
+ body: m[1]||''
+ });
+ s = s.replace(m[0], '{xtpl'+ id + '}');
+ ++id;
+ }
+ for(var i = tpls.length-1; i >= 0; --i){
+ me.compileTpl(tpls[i]);
+ }
+ me.master = tpls[tpls.length-1];
+ me.tpls = tpls;
+};
+Ext.extend(Ext.XTemplate, Ext.Template, {
+
+ re : /\{([\w\-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,
+
+ codeRe : /\{\[((?:\\\]|.|\n)*?)\]\}/g,
+
+
+ applySubTemplate : function(id, values, parent, xindex, xcount){
+ var me = this,
+ len,
+ t = me.tpls[id],
+ vs,
+ buf = [];
+ if ((t.test && !t.test.call(me, values, parent, xindex, xcount)) ||
+ (t.exec && t.exec.call(me, values, parent, xindex, xcount))) {
+ return '';
+ }
+ vs = t.target ? t.target.call(me, values, parent) : values;
+ len = vs.length;
+ parent = t.target ? values : parent;
+ if(t.target && Ext.isArray(vs)){
+ for(var i = 0, len = vs.length; i < len; i++){
+ buf[buf.length] = t.compiled.call(me, vs[i], parent, i+1, len);
+ }
+ return buf.join('');
+ }
+ return t.compiled.call(me, vs, parent, xindex, xcount);
+ },
+
+
+ compileTpl : function(tpl){
+ var fm = Ext.util.Format,
+ useF = this.disableFormats !== true,
+ sep = Ext.isGecko ? "+" : ",",
+ body;
+
+ function fn(m, name, format, args, math){
+ if(name.substr(0, 4) == 'xtpl'){
+ return "'"+ sep +'this.applySubTemplate('+name.substr(4)+', values, parent, xindex, xcount)'+sep+"'";
+ }
+ var v;
+ if(name === '.'){
+ v = 'values';
+ }else if(name === '#'){
+ v = 'xindex';
+ }else if(name.indexOf('.') != -1){
+ v = name;
+ }else{
+ v = "values['" + name + "']";
+ }
+ if(math){
+ v = '(' + v + math + ')';
+ }
+ if (format && useF) {
+ args = args ? ',' + args : "";
+ if(format.substr(0, 5) != "this."){
+ format = "fm." + format + '(';
+ }else{
+ format = 'this.call("'+ format.substr(5) + '", ';
+ args = ", values";
+ }
+ } else {
+ args= ''; format = "("+v+" === undefined ? '' : ";
+ }
+ return "'"+ sep + format + v + args + ")"+sep+"'";
+ }
+
+ function codeFn(m, code){
+
+ return "'" + sep + '(' + code.replace(/\\'/g, "'") + ')' + sep + "'";
+ }
+
+
+ if(Ext.isGecko){
+ body = "tpl.compiled = function(values, parent, xindex, xcount){ return '" +
+ tpl.body.replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn) +
+ "';};";
+ }else{
+ body = ["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];
+ body.push(tpl.body.replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn));
+ body.push("'].join('');};");
+ body = body.join('');
+ }
+ eval(body);
+ return this;
+ },
+
+
+ applyTemplate : function(values){
+ return this.master.compiled.call(this, values, {}, 1, 1);
+ },
+
+
+ compile : function(){return this;}
+
+
+
+
+
+});
+
+Ext.XTemplate.prototype.apply = Ext.XTemplate.prototype.applyTemplate;
+
+
+Ext.XTemplate.from = function(el){
+ el = Ext.getDom(el);
+ return new Ext.XTemplate(el.value || el.innerHTML);
+};
+
+Ext.util.CSS = function(){
+ var rules = null;
+ var doc = document;
+
+ var camelRe = /(-[a-z])/gi;
+ var camelFn = function(m, a){ return a.charAt(1).toUpperCase(); };
+
+ return {
+
+ createStyleSheet : function(cssText, id){
+ var ss;
+ var head = doc.getElementsByTagName("head")[0];
+ var rules = doc.createElement("style");
+ rules.setAttribute("type", "text/css");
+ if(id){
+ rules.setAttribute("id", id);
+ }
+ if(Ext.isIE){
+ head.appendChild(rules);
+ ss = rules.styleSheet;
+ ss.cssText = cssText;
+ }else{
+ try{
+ rules.appendChild(doc.createTextNode(cssText));
+ }catch(e){
+ rules.cssText = cssText;
+ }
+ head.appendChild(rules);
+ ss = rules.styleSheet ? rules.styleSheet : (rules.sheet || doc.styleSheets[doc.styleSheets.length-1]);
+ }
+ this.cacheStyleSheet(ss);
+ return ss;
+ },
+
+
+ removeStyleSheet : function(id){
+ var existing = doc.getElementById(id);
+ if(existing){
+ existing.parentNode.removeChild(existing);
+ }
+ },
+
+
+ swapStyleSheet : function(id, url){
+ this.removeStyleSheet(id);
+ var ss = doc.createElement("link");
+ ss.setAttribute("rel", "stylesheet");
+ ss.setAttribute("type", "text/css");
+ ss.setAttribute("id", id);
+ ss.setAttribute("href", url);
+ doc.getElementsByTagName("head")[0].appendChild(ss);
+ },
+
+
+ refreshCache : function(){
+ return this.getRules(true);
+ },
+
+
+ cacheStyleSheet : function(ss){
+ if(!rules){
+ rules = {};
+ }
+ try{
+ var ssRules = ss.cssRules || ss.rules;
+ for(var j = ssRules.length-1; j >= 0; --j){
+ rules[ssRules[j].selectorText.toLowerCase()] = ssRules[j];
+ }
+ }catch(e){}
+ },
+
+
+ getRules : function(refreshCache){
+ if(rules === null || refreshCache){
+ rules = {};
+ var ds = doc.styleSheets;
+ for(var i =0, len = ds.length; i < len; i++){
+ try{
+ this.cacheStyleSheet(ds[i]);
+ }catch(e){}
+ }
+ }
+ return rules;
+ },
+
+
+ getRule : function(selector, refreshCache){
+ var rs = this.getRules(refreshCache);
+ if(!Ext.isArray(selector)){
+ return rs[selector.toLowerCase()];
+ }
+ for(var i = 0; i < selector.length; i++){
+ if(rs[selector[i]]){
+ return rs[selector[i].toLowerCase()];
+ }
+ }
+ return null;
+ },
+
+
+
+ updateRule : function(selector, property, value){
+ if(!Ext.isArray(selector)){
+ var rule = this.getRule(selector);
+ if(rule){
+ rule.style[property.replace(camelRe, camelFn)] = value;
+ return true;
+ }
+ }else{
+ for(var i = 0; i < selector.length; i++){
+ if(this.updateRule(selector[i], property, value)){
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ };
+}();
+Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
+
+ constructor : function(el, config){
+ this.el = Ext.get(el);
+ this.el.unselectable();
+
+ Ext.apply(this, config);
+
+ this.addEvents(
+
+ "mousedown",
+
+ "click",
+
+ "mouseup"
+ );
+
+ if(!this.disabled){
+ this.disabled = true;
+ this.enable();
+ }
+
+
+ if(this.handler){
+ this.on("click", this.handler, this.scope || this);
+ }
+
+ Ext.util.ClickRepeater.superclass.constructor.call(this);
+ },
+
+ interval : 20,
+ delay: 250,
+ preventDefault : true,
+ stopDefault : false,
+ timer : 0,
+
+
+ enable: function(){
+ if(this.disabled){
+ this.el.on('mousedown', this.handleMouseDown, this);
+ if (Ext.isIE){
+ this.el.on('dblclick', this.handleDblClick, this);
+ }
+ if(this.preventDefault || this.stopDefault){
+ this.el.on('click', this.eventOptions, this);
+ }
+ }
+ this.disabled = false;
+ },
+
+
+ disable: function( force){
+ if(force || !this.disabled){
+ clearTimeout(this.timer);
+ if(this.pressClass){
+ this.el.removeClass(this.pressClass);
+ }
+ Ext.getDoc().un('mouseup', this.handleMouseUp, this);
+ this.el.removeAllListeners();
+ }
+ this.disabled = true;
+ },
+
+
+ setDisabled: function(disabled){
+ this[disabled ? 'disable' : 'enable']();
+ },
+
+ eventOptions: function(e){
+ if(this.preventDefault){
+ e.preventDefault();
+ }
+ if(this.stopDefault){
+ e.stopEvent();
+ }
+ },
+
+
+ destroy : function() {
+ this.disable(true);
+ Ext.destroy(this.el);
+ this.purgeListeners();
+ },
+
+ handleDblClick : function(e){
+ clearTimeout(this.timer);
+ this.el.blur();
+
+ this.fireEvent("mousedown", this, e);
+ this.fireEvent("click", this, e);
+ },
+
+
+ handleMouseDown : function(e){
+ clearTimeout(this.timer);
+ this.el.blur();
+ if(this.pressClass){
+ this.el.addClass(this.pressClass);
+ }
+ this.mousedownTime = new Date();
+
+ Ext.getDoc().on("mouseup", this.handleMouseUp, this);
+ this.el.on("mouseout", this.handleMouseOut, this);
+
+ this.fireEvent("mousedown", this, e);
+ this.fireEvent("click", this, e);
+
+
+ if (this.accelerate) {
+ this.delay = 400;
+ }
+ this.timer = this.click.defer(this.delay || this.interval, this, [e]);
+ },
+
+
+ click : function(e){
+ this.fireEvent("click", this, e);
+ this.timer = this.click.defer(this.accelerate ?
+ this.easeOutExpo(this.mousedownTime.getElapsed(),
+ 400,
+ -390,
+ 12000) :
+ this.interval, this, [e]);
+ },
+
+ easeOutExpo : function (t, b, c, d) {
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
+ },
+
+
+ handleMouseOut : function(){
+ clearTimeout(this.timer);
+ if(this.pressClass){
+ this.el.removeClass(this.pressClass);
+ }
+ this.el.on("mouseover", this.handleMouseReturn, this);
+ },
+
+
+ handleMouseReturn : function(){
+ this.el.un("mouseover", this.handleMouseReturn, this);
+ if(this.pressClass){
+ this.el.addClass(this.pressClass);
+ }
+ this.click();
+ },
+
+
+ handleMouseUp : function(e){
+ clearTimeout(this.timer);
+ this.el.un("mouseover", this.handleMouseReturn, this);
+ this.el.un("mouseout", this.handleMouseOut, this);
+ Ext.getDoc().un("mouseup", this.handleMouseUp, this);
+ this.el.removeClass(this.pressClass);
+ this.fireEvent("mouseup", this, e);
+ }
+});
+Ext.KeyNav = function(el, config){
+ this.el = Ext.get(el);
+ Ext.apply(this, config);
+ if(!this.disabled){
+ this.disabled = true;
+ this.enable();
+ }
+};
+
+Ext.KeyNav.prototype = {
+
+ disabled : false,
+
+ defaultEventAction: "stopEvent",
+
+ forceKeyDown : false,
+
+
+ relay : function(e){
+ var k = e.getKey(),
+ h = this.keyToHandler[k];
+ if(h && this[h]){
+ if(this.doRelay(e, this[h], h) !== true){
+ e[this.defaultEventAction]();
+ }
+ }
+ },
+
+
+ doRelay : function(e, h, hname){
+ return h.call(this.scope || this, e, hname);
+ },
+
+
+ enter : false,
+ left : false,
+ right : false,
+ up : false,
+ down : false,
+ tab : false,
+ esc : false,
+ pageUp : false,
+ pageDown : false,
+ del : false,
+ home : false,
+ end : false,
+ space : false,
+
+
+ keyToHandler : {
+ 37 : "left",
+ 39 : "right",
+ 38 : "up",
+ 40 : "down",
+ 33 : "pageUp",
+ 34 : "pageDown",
+ 46 : "del",
+ 36 : "home",
+ 35 : "end",
+ 13 : "enter",
+ 27 : "esc",
+ 9 : "tab",
+ 32 : "space"
+ },
+
+ stopKeyUp: function(e) {
+ var k = e.getKey();
+
+ if (k >= 37 && k <= 40) {
+
+
+ e.stopEvent();
+ }
+ },
+
+
+ destroy: function(){
+ this.disable();
+ },
+
+
+ enable: function() {
+ if (this.disabled) {
+ if (Ext.isSafari2) {
+
+ this.el.on('keyup', this.stopKeyUp, this);
+ }
+
+ this.el.on(this.isKeydown()? 'keydown' : 'keypress', this.relay, this);
+ this.disabled = false;
+ }
+ },
+
+
+ disable: function() {
+ if (!this.disabled) {
+ if (Ext.isSafari2) {
+
+ this.el.un('keyup', this.stopKeyUp, this);
+ }
+
+ this.el.un(this.isKeydown()? 'keydown' : 'keypress', this.relay, this);
+ this.disabled = true;
+ }
+ },
+
+
+ setDisabled : function(disabled){
+ this[disabled ? "disable" : "enable"]();
+ },
+
+
+ isKeydown: function(){
+ return this.forceKeyDown || Ext.EventManager.useKeydown;
+ }
+};
+
+Ext.KeyMap = function(el, config, eventName){
+ this.el = Ext.get(el);
+ this.eventName = eventName || "keydown";
+ this.bindings = [];
+ if(config){
+ this.addBinding(config);
+ }
+ this.enable();
+};
+
+Ext.KeyMap.prototype = {
+
+ stopEvent : false,
+
+
+ addBinding : function(config){
+ if(Ext.isArray(config)){
+ Ext.each(config, function(c){
+ this.addBinding(c);
+ }, this);
+ return;
+ }
+ var keyCode = config.key,
+ fn = config.fn || config.handler,
+ scope = config.scope;
+
+ if (config.stopEvent) {
+ this.stopEvent = config.stopEvent;
+ }
+
+ if(typeof keyCode == "string"){
+ var ks = [];
+ var keyString = keyCode.toUpperCase();
+ for(var j = 0, len = keyString.length; j < len; j++){
+ ks.push(keyString.charCodeAt(j));
+ }
+ keyCode = ks;
+ }
+ var keyArray = Ext.isArray(keyCode);
+
+ var handler = function(e){
+ if(this.checkModifiers(config, e)){
+ var k = e.getKey();
+ if(keyArray){
+ for(var i = 0, len = keyCode.length; i < len; i++){
+ if(keyCode[i] == k){
+ if(this.stopEvent){
+ e.stopEvent();
+ }
+ fn.call(scope || window, k, e);
+ return;
+ }
+ }
+ }else{
+ if(k == keyCode){
+ if(this.stopEvent){
+ e.stopEvent();
+ }
+ fn.call(scope || window, k, e);
+ }
+ }
+ }
+ };
+ this.bindings.push(handler);
+ },
+
+
+ checkModifiers: function(config, e){
+ var val, key, keys = ['shift', 'ctrl', 'alt'];
+ for (var i = 0, len = keys.length; i < len; ++i){
+ key = keys[i];
+ val = config[key];
+ if(!(val === undefined || (val === e[key + 'Key']))){
+ return false;
+ }
+ }
+ return true;
+ },
+
+
+ on : function(key, fn, scope){
+ var keyCode, shift, ctrl, alt;
+ if(typeof key == "object" && !Ext.isArray(key)){
+ keyCode = key.key;
+ shift = key.shift;
+ ctrl = key.ctrl;
+ alt = key.alt;
+ }else{
+ keyCode = key;
+ }
+ this.addBinding({
+ key: keyCode,
+ shift: shift,
+ ctrl: ctrl,
+ alt: alt,
+ fn: fn,
+ scope: scope
+ });
+ },
+
+
+ handleKeyDown : function(e){
+ if(this.enabled){
+ var b = this.bindings;
+ for(var i = 0, len = b.length; i < len; i++){
+ b[i].call(this, e);
+ }
+ }
+ },
+
+
+ isEnabled : function(){
+ return this.enabled;
+ },
+
+
+ enable: function(){
+ if(!this.enabled){
+ this.el.on(this.eventName, this.handleKeyDown, this);
+ this.enabled = true;
+ }
+ },
+
+
+ disable: function(){
+ if(this.enabled){
+ this.el.removeListener(this.eventName, this.handleKeyDown, this);
+ this.enabled = false;
+ }
+ },
+
+
+ setDisabled : function(disabled){
+ this[disabled ? "disable" : "enable"]();
+ }
+};
+Ext.util.TextMetrics = function(){
+ var shared;
+ return {
+
+ measure : function(el, text, fixedWidth){
+ if(!shared){
+ shared = Ext.util.TextMetrics.Instance(el, fixedWidth);
+ }
+ shared.bind(el);
+ shared.setFixedWidth(fixedWidth || 'auto');
+ return shared.getSize(text);
+ },
+
+
+ createInstance : function(el, fixedWidth){
+ return Ext.util.TextMetrics.Instance(el, fixedWidth);
+ }
+ };
+}();
+
+Ext.util.TextMetrics.Instance = function(bindTo, fixedWidth){
+ var ml = new Ext.Element(document.createElement('div'));
+ document.body.appendChild(ml.dom);
+ ml.position('absolute');
+ ml.setLeftTop(-1000, -1000);
+ ml.hide();
+
+ if(fixedWidth){
+ ml.setWidth(fixedWidth);
+ }
+
+ var instance = {
+
+ getSize : function(text){
+ ml.update(text);
+ var s = ml.getSize();
+ ml.update('');
+ return s;
+ },
+
+
+ bind : function(el){
+ ml.setStyle(
+ Ext.fly(el).getStyles('font-size','font-style', 'font-weight', 'font-family','line-height', 'text-transform', 'letter-spacing')
+ );
+ },
+
+
+ setFixedWidth : function(width){
+ ml.setWidth(width);
+ },
+
+
+ getWidth : function(text){
+ ml.dom.style.width = 'auto';
+ return this.getSize(text).width;
+ },
+
+
+ getHeight : function(text){
+ return this.getSize(text).height;
+ }
+ };
+
+ instance.bind(bindTo);
+
+ return instance;
+};
+
+Ext.Element.addMethods({
+
+ getTextWidth : function(text, min, max){
+ return (Ext.util.TextMetrics.measure(this.dom, Ext.value(text, this.dom.innerHTML, true)).width).constrain(min || 0, max || 1000000);
+ }
+});
+
+Ext.util.Cookies = {
+
+ set : function(name, value){
+ var argv = arguments;
+ var argc = arguments.length;
+ var expires = (argc > 2) ? argv[2] : null;
+ var path = (argc > 3) ? argv[3] : '/';
+ var domain = (argc > 4) ? argv[4] : null;
+ var secure = (argc > 5) ? argv[5] : false;
+ document.cookie = name + "=" + escape(value) + ((expires === null) ? "" : ("; expires=" + expires.toGMTString())) + ((path === null) ? "" : ("; path=" + path)) + ((domain === null) ? "" : ("; domain=" + domain)) + ((secure === true) ? "; secure" : "");
+ },
+
+
+ get : function(name){
+ var arg = name + "=";
+ var alen = arg.length;
+ var clen = document.cookie.length;
+ var i = 0;
+ var j = 0;
+ while(i < clen){
+ j = i + alen;
+ if(document.cookie.substring(i, j) == arg){
+ return Ext.util.Cookies.getCookieVal(j);
+ }
+ i = document.cookie.indexOf(" ", i) + 1;
+ if(i === 0){
+ break;
+ }
+ }
+ return null;
+ },
+
+
+ clear : function(name){
+ if(Ext.util.Cookies.get(name)){
+ document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
+ }
+ },
+
+ getCookieVal : function(offset){
+ var endstr = document.cookie.indexOf(";", offset);
+ if(endstr == -1){
+ endstr = document.cookie.length;
+ }
+ return unescape(document.cookie.substring(offset, endstr));
+ }
+};
+Ext.handleError = function(e) {
+ throw e;
+};
+
+
+Ext.Error = function(message) {
+
+ this.message = (this.lang[message]) ? this.lang[message] : message;
+};
+
+Ext.Error.prototype = new Error();
+Ext.apply(Ext.Error.prototype, {
+
+ lang: {},
+
+ name: 'Ext.Error',
+
+ getName : function() {
+ return this.name;
+ },
+
+ getMessage : function() {
+ return this.message;
+ },
+
+ toJson : function() {
+ return Ext.encode(this);
+ }
+});
+
+Ext.ComponentMgr = function(){
+ var all = new Ext.util.MixedCollection();
+ var types = {};
+ var ptypes = {};
+
+ return {
+
+ register : function(c){
+ all.add(c);
+ },
+
+
+ unregister : function(c){
+ all.remove(c);
+ },
+
+
+ get : function(id){
+ return all.get(id);
+ },
+
+
+ onAvailable : function(id, fn, scope){
+ all.on("add", function(index, o){
+ if(o.id == id){
+ fn.call(scope || o, o);
+ all.un("add", fn, scope);
+ }
+ });
+ },
+
+
+ all : all,
+
+
+ types : types,
+
+
+ ptypes: ptypes,
+
+
+ isRegistered : function(xtype){
+ return types[xtype] !== undefined;
+ },
+
+
+ isPluginRegistered : function(ptype){
+ return ptypes[ptype] !== undefined;
+ },
+
+
+ registerType : function(xtype, cls){
+ types[xtype] = cls;
+ cls.xtype = xtype;
+ },
+
+
+ create : function(config, defaultType){
+ return config.render ? config : new types[config.xtype || defaultType](config);
+ },
+
+
+ registerPlugin : function(ptype, cls){
+ ptypes[ptype] = cls;
+ cls.ptype = ptype;
+ },
+
+
+ createPlugin : function(config, defaultType){
+ var PluginCls = ptypes[config.ptype || defaultType];
+ if (PluginCls.init) {
+ return PluginCls;
+ } else {
+ return new PluginCls(config);
+ }
+ }
+ };
+}();
+
+
+Ext.reg = Ext.ComponentMgr.registerType;
+
+Ext.preg = Ext.ComponentMgr.registerPlugin;
+
+Ext.create = Ext.ComponentMgr.create;
+Ext.Component = function(config){
+ config = config || {};
+ if(config.initialConfig){
+ if(config.isAction){
+ this.baseAction = config;
+ }
+ config = config.initialConfig;
+ }else if(config.tagName || config.dom || Ext.isString(config)){
+ config = {applyTo: config, id: config.id || config};
+ }
+
+
+ this.initialConfig = config;
+
+ Ext.apply(this, config);
+ this.addEvents(
+
+ 'added',
+
+ 'disable',
+
+ 'enable',
+
+ 'beforeshow',
+
+ 'show',
+
+ 'beforehide',
+
+ 'hide',
+
+ 'removed',
+
+ 'beforerender',
+
+ 'render',
+
+ 'afterrender',
+
+ 'beforedestroy',
+
+ 'destroy',
+
+ 'beforestaterestore',
+
+ 'staterestore',
+
+ 'beforestatesave',
+
+ 'statesave'
+ );
+ this.getId();
+ Ext.ComponentMgr.register(this);
+ Ext.Component.superclass.constructor.call(this);
+
+ if(this.baseAction){
+ this.baseAction.addComponent(this);
+ }
+
+ this.initComponent();
+
+ if(this.plugins){
+ if(Ext.isArray(this.plugins)){
+ for(var i = 0, len = this.plugins.length; i < len; i++){
+ this.plugins[i] = this.initPlugin(this.plugins[i]);
+ }
+ }else{
+ this.plugins = this.initPlugin(this.plugins);
+ }
+ }
+
+ if(this.stateful !== false){
+ this.initState();
+ }
+
+ if(this.applyTo){
+ this.applyToMarkup(this.applyTo);
+ delete this.applyTo;
+ }else if(this.renderTo){
+ this.render(this.renderTo);
+ delete this.renderTo;
+ }
+};
+
+
+Ext.Component.AUTO_ID = 1000;
+
+Ext.extend(Ext.Component, Ext.util.Observable, {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ disabled : false,
+
+ hidden : false,
+
+
+
+
+
+
+
+ autoEl : 'div',
+
+
+ disabledClass : 'x-item-disabled',
+
+ allowDomMove : true,
+
+ autoShow : false,
+
+ hideMode : 'display',
+
+ hideParent : false,
+
+
+
+
+
+ rendered : false,
+
+
+
+
+
+
+
+ tplWriteMode : 'overwrite',
+
+
+
+
+ bubbleEvents: [],
+
+
+
+ ctype : 'Ext.Component',
+
+
+ actionMode : 'el',
+
+
+ getActionEl : function(){
+ return this[this.actionMode];
+ },
+
+ initPlugin : function(p){
+ if(p.ptype && !Ext.isFunction(p.init)){
+ p = Ext.ComponentMgr.createPlugin(p);
+ }else if(Ext.isString(p)){
+ p = Ext.ComponentMgr.createPlugin({
+ ptype: p
+ });
+ }
+ p.init(this);
+ return p;
+ },
+
+
+ initComponent : function(){
+
+ if(this.listeners){
+ this.on(this.listeners);
+ delete this.listeners;
+ }
+ this.enableBubble(this.bubbleEvents);
+ },
+
+
+ render : function(container, position){
+ if(!this.rendered && this.fireEvent('beforerender', this) !== false){
+ if(!container && this.el){
+ this.el = Ext.get(this.el);
+ container = this.el.dom.parentNode;
+ this.allowDomMove = false;
+ }
+ this.container = Ext.get(container);
+ if(this.ctCls){
+ this.container.addClass(this.ctCls);
+ }
+ this.rendered = true;
+ if(position !== undefined){
+ if(Ext.isNumber(position)){
+ position = this.container.dom.childNodes[position];
+ }else{
+ position = Ext.getDom(position);
+ }
+ }
+ this.onRender(this.container, position || null);
+ if(this.autoShow){
+ this.el.removeClass(['x-hidden','x-hide-' + this.hideMode]);
+ }
+ if(this.cls){
+ this.el.addClass(this.cls);
+ delete this.cls;
+ }
+ if(this.style){
+ this.el.applyStyles(this.style);
+ delete this.style;
+ }
+ if(this.overCls){
+ this.el.addClassOnOver(this.overCls);
+ }
+ this.fireEvent('render', this);
+
+
+
+
+ var contentTarget = this.getContentTarget();
+ if (this.html){
+ contentTarget.update(Ext.DomHelper.markup(this.html));
+ delete this.html;
+ }
+ if (this.contentEl){
+ var ce = Ext.getDom(this.contentEl);
+ Ext.fly(ce).removeClass(['x-hidden', 'x-hide-display']);
+ contentTarget.appendChild(ce);
+ }
+ if (this.tpl) {
+ if (!this.tpl.compile) {
+ this.tpl = new Ext.XTemplate(this.tpl);
+ }
+ if (this.data) {
+ this.tpl[this.tplWriteMode](contentTarget, this.data);
+ delete this.data;
+ }
+ }
+ this.afterRender(this.container);
+
+
+ if(this.hidden){
+
+ this.doHide();
+ }
+ if(this.disabled){
+
+ this.disable(true);
+ }
+
+ if(this.stateful !== false){
+ this.initStateEvents();
+ }
+ this.fireEvent('afterrender', this);
+ }
+ return this;
+ },
+
+
+
+ update: function(htmlOrData, loadScripts, cb) {
+ var contentTarget = this.getContentTarget();
+ if (this.tpl && typeof htmlOrData !== "string") {
+ this.tpl[this.tplWriteMode](contentTarget, htmlOrData || {});
+ } else {
+ var html = Ext.isObject(htmlOrData) ? Ext.DomHelper.markup(htmlOrData) : htmlOrData;
+ contentTarget.update(html, loadScripts, cb);
+ }
+ },
+
+
+
+ onAdded : function(container, pos) {
+ this.ownerCt = container;
+ this.initRef();
+ this.fireEvent('added', this, container, pos);
+ },
+
+
+ onRemoved : function() {
+ this.removeRef();
+ this.fireEvent('removed', this, this.ownerCt);
+ delete this.ownerCt;
+ },
+
+
+ initRef : function() {
+
+ if(this.ref && !this.refOwner){
+ var levels = this.ref.split('/'),
+ last = levels.length,
+ i = 0,
+ t = this;
+
+ while(t && i < last){
+ t = t.ownerCt;
+ ++i;
+ }
+ if(t){
+ t[this.refName = levels[--i]] = this;
+
+ this.refOwner = t;
+ }
+ }
+ },
+
+ removeRef : function() {
+ if (this.refOwner && this.refName) {
+ delete this.refOwner[this.refName];
+ delete this.refOwner;
+ }
+ },
+
+
+ initState : function(){
+ if(Ext.state.Manager){
+ var id = this.getStateId();
+ if(id){
+ var state = Ext.state.Manager.get(id);
+ if(state){
+ if(this.fireEvent('beforestaterestore', this, state) !== false){
+ this.applyState(Ext.apply({}, state));
+ this.fireEvent('staterestore', this, state);
+ }
+ }
+ }
+ }
+ },
+
+
+ getStateId : function(){
+ return this.stateId || ((/^(ext-comp-|ext-gen)/).test(String(this.id)) ? null : this.id);
+ },
+
+
+ initStateEvents : function(){
+ if(this.stateEvents){
+ for(var i = 0, e; e = this.stateEvents[i]; i++){
+ this.on(e, this.saveState, this, {delay:100});
+ }
+ }
+ },
+
+
+ applyState : function(state){
+ if(state){
+ Ext.apply(this, state);
+ }
+ },
+
+
+ getState : function(){
+ return null;
+ },
+
+
+ saveState : function(){
+ if(Ext.state.Manager && this.stateful !== false){
+ var id = this.getStateId();
+ if(id){
+ var state = this.getState();
+ if(this.fireEvent('beforestatesave', this, state) !== false){
+ Ext.state.Manager.set(id, state);
+ this.fireEvent('statesave', this, state);
+ }
+ }
+ }
+ },
+
+
+ applyToMarkup : function(el){
+ this.allowDomMove = false;
+ this.el = Ext.get(el);
+ this.render(this.el.dom.parentNode);
+ },
+
+
+ addClass : function(cls){
+ if(this.el){
+ this.el.addClass(cls);
+ }else{
+ this.cls = this.cls ? this.cls + ' ' + cls : cls;
+ }
+ return this;
+ },
+
+
+ removeClass : function(cls){
+ if(this.el){
+ this.el.removeClass(cls);
+ }else if(this.cls){
+ this.cls = this.cls.split(' ').remove(cls).join(' ');
+ }
+ return this;
+ },
+
+
+
+ onRender : function(ct, position){
+ if(!this.el && this.autoEl){
+ if(Ext.isString(this.autoEl)){
+ this.el = document.createElement(this.autoEl);
+ }else{
+ var div = document.createElement('div');
+ Ext.DomHelper.overwrite(div, this.autoEl);
+ this.el = div.firstChild;
+ }
+ if (!this.el.id) {
+ this.el.id = this.getId();
+ }
+ }
+ if(this.el){
+ this.el = Ext.get(this.el);
+ if(this.allowDomMove !== false){
+ ct.dom.insertBefore(this.el.dom, position);
+ if (div) {
+ Ext.removeNode(div);
+ div = null;
+ }
+ }
+ }
+ },
+
+
+ getAutoCreate : function(){
+ var cfg = Ext.isObject(this.autoCreate) ?
+ this.autoCreate : Ext.apply({}, this.defaultAutoCreate);
+ if(this.id && !cfg.id){
+ cfg.id = this.id;
+ }
+ return cfg;
+ },
+
+
+ afterRender : Ext.emptyFn,
+
+
+ destroy : function(){
+ if(!this.isDestroyed){
+ if(this.fireEvent('beforedestroy', this) !== false){
+ this.destroying = true;
+ this.beforeDestroy();
+ if(this.ownerCt && this.ownerCt.remove){
+ this.ownerCt.remove(this, false);
+ }
+ if(this.rendered){
+ this.el.remove();
+ if(this.actionMode == 'container' || this.removeMode == 'container'){
+ this.container.remove();
+ }
+ }
+
+ if(this.focusTask && this.focusTask.cancel){
+ this.focusTask.cancel();
+ }
+ this.onDestroy();
+ Ext.ComponentMgr.unregister(this);
+ this.fireEvent('destroy', this);
+ this.purgeListeners();
+ this.destroying = false;
+ this.isDestroyed = true;
+ }
+ }
+ },
+
+ deleteMembers : function(){
+ var args = arguments;
+ for(var i = 0, len = args.length; i < len; ++i){
+ delete this[args[i]];
+ }
+ },
+
+
+ beforeDestroy : Ext.emptyFn,
+
+
+ onDestroy : Ext.emptyFn,
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ getContentTarget : function(){
+ return this.el;
+ },
+
+
+ getId : function(){
+ return this.id || (this.id = 'ext-comp-' + (++Ext.Component.AUTO_ID));
+ },
+
+
+ getItemId : function(){
+ return this.itemId || this.getId();
+ },
+
+
+ focus : function(selectText, delay){
+ if(delay){
+ this.focusTask = new Ext.util.DelayedTask(this.focus, this, [selectText, false]);
+ this.focusTask.delay(Ext.isNumber(delay) ? delay : 10);
+ return this;
+ }
+ if(this.rendered && !this.isDestroyed){
+ this.el.focus();
+ if(selectText === true){
+ this.el.dom.select();
+ }
+ }
+ return this;
+ },
+
+
+ blur : function(){
+ if(this.rendered){
+ this.el.blur();
+ }
+ return this;
+ },
+
+
+ disable : function( silent){
+ if(this.rendered){
+ this.onDisable();
+ }
+ this.disabled = true;
+ if(silent !== true){
+ this.fireEvent('disable', this);
+ }
+ return this;
+ },
+
+
+ onDisable : function(){
+ this.getActionEl().addClass(this.disabledClass);
+ this.el.dom.disabled = true;
+ },
+
+
+ enable : function(){
+ if(this.rendered){
+ this.onEnable();
+ }
+ this.disabled = false;
+ this.fireEvent('enable', this);
+ return this;
+ },
+
+
+ onEnable : function(){
+ this.getActionEl().removeClass(this.disabledClass);
+ this.el.dom.disabled = false;
+ },
+
+
+ setDisabled : function(disabled){
+ return this[disabled ? 'disable' : 'enable']();
+ },
+
+
+ show : function(){
+ if(this.fireEvent('beforeshow', this) !== false){
+ this.hidden = false;
+ if(this.autoRender){
+ this.render(Ext.isBoolean(this.autoRender) ? Ext.getBody() : this.autoRender);
+ }
+ if(this.rendered){
+ this.onShow();
+ }
+ this.fireEvent('show', this);
+ }
+ return this;
+ },
+
+
+ onShow : function(){
+ this.getVisibilityEl().removeClass('x-hide-' + this.hideMode);
+ },
+
+
+ hide : function(){
+ if(this.fireEvent('beforehide', this) !== false){
+ this.doHide();
+ this.fireEvent('hide', this);
+ }
+ return this;
+ },
+
+
+ doHide: function(){
+ this.hidden = true;
+ if(this.rendered){
+ this.onHide();
+ }
+ },
+
+
+ onHide : function(){
+ this.getVisibilityEl().addClass('x-hide-' + this.hideMode);
+ },
+
+
+ getVisibilityEl : function(){
+ return this.hideParent ? this.container : this.getActionEl();
+ },
+
+
+ setVisible : function(visible){
+ return this[visible ? 'show' : 'hide']();
+ },
+
+
+ isVisible : function(){
+ return this.rendered && this.getVisibilityEl().isVisible();
+ },
+
+
+ cloneConfig : function(overrides){
+ overrides = overrides || {};
+ var id = overrides.id || Ext.id();
+ var cfg = Ext.applyIf(overrides, this.initialConfig);
+ cfg.id = id;
+ return new this.constructor(cfg);
+ },
+
+
+ getXType : function(){
+ return this.constructor.xtype;
+ },
+
+
+ isXType : function(xtype, shallow){
+
+ if (Ext.isFunction(xtype)){
+ xtype = xtype.xtype;
+ }else if (Ext.isObject(xtype)){
+ xtype = xtype.constructor.xtype;
+ }
+
+ return !shallow ? ('/' + this.getXTypes() + '/').indexOf('/' + xtype + '/') != -1 : this.constructor.xtype == xtype;
+ },
+
+
+ getXTypes : function(){
+ var tc = this.constructor;
+ if(!tc.xtypes){
+ var c = [], sc = this;
+ while(sc && sc.constructor.xtype){
+ c.unshift(sc.constructor.xtype);
+ sc = sc.constructor.superclass;
+ }
+ tc.xtypeChain = c;
+ tc.xtypes = c.join('/');
+ }
+ return tc.xtypes;
+ },
+
+
+ findParentBy : function(fn) {
+ for (var p = this.ownerCt; (p != null) && !fn(p, this); p = p.ownerCt);
+ return p || null;
+ },
+
+
+ findParentByType : function(xtype, shallow){
+ return this.findParentBy(function(c){
+ return c.isXType(xtype, shallow);
+ });
+ },
+
+
+ bubble : function(fn, scope, args){
+ var p = this;
+ while(p){
+ if(fn.apply(scope || p, args || [p]) === false){
+ break;
+ }
+ p = p.ownerCt;
+ }
+ return this;
+ },
+
+
+ getPositionEl : function(){
+ return this.positionEl || this.el;
+ },
+
+
+ purgeListeners : function(){
+ Ext.Component.superclass.purgeListeners.call(this);
+ if(this.mons){
+ this.on('beforedestroy', this.clearMons, this, {single: true});
+ }
+ },
+
+
+ clearMons : function(){
+ Ext.each(this.mons, function(m){
+ m.item.un(m.ename, m.fn, m.scope);
+ }, this);
+ this.mons = [];
+ },
+
+
+ createMons: function(){
+ if(!this.mons){
+ this.mons = [];
+ this.on('beforedestroy', this.clearMons, this, {single: true});
+ }
+ },
+
+
+ mon : function(item, ename, fn, scope, opt){
+ this.createMons();
+ if(Ext.isObject(ename)){
+ var propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
+
+ var o = ename;
+ for(var e in o){
+ if(propRe.test(e)){
+ continue;
+ }
+ if(Ext.isFunction(o[e])){
+
+ this.mons.push({
+ item: item, ename: e, fn: o[e], scope: o.scope
+ });
+ item.on(e, o[e], o.scope, o);
+ }else{
+
+ this.mons.push({
+ item: item, ename: e, fn: o[e], scope: o.scope
+ });
+ item.on(e, o[e]);
+ }
+ }
+ return;
+ }
+
+ this.mons.push({
+ item: item, ename: ename, fn: fn, scope: scope
+ });
+ item.on(ename, fn, scope, opt);
+ },
+
+
+ mun : function(item, ename, fn, scope){
+ var found, mon;
+ this.createMons();
+ for(var i = 0, len = this.mons.length; i < len; ++i){
+ mon = this.mons[i];
+ if(item === mon.item && ename == mon.ename && fn === mon.fn && scope === mon.scope){
+ this.mons.splice(i, 1);
+ item.un(ename, fn, scope);
+ found = true;
+ break;
+ }
+ }
+ return found;
+ },
+
+
+ nextSibling : function(){
+ if(this.ownerCt){
+ var index = this.ownerCt.items.indexOf(this);
+ if(index != -1 && index+1 < this.ownerCt.items.getCount()){
+ return this.ownerCt.items.itemAt(index+1);
+ }
+ }
+ return null;
+ },
+
+
+ previousSibling : function(){
+ if(this.ownerCt){
+ var index = this.ownerCt.items.indexOf(this);
+ if(index > 0){
+ return this.ownerCt.items.itemAt(index-1);
+ }
+ }
+ return null;
+ },
+
+
+ getBubbleTarget : function(){
+ return this.ownerCt;
+ }
+});
+
+Ext.reg('component', Ext.Component);
+
+Ext.Action = Ext.extend(Object, {
+
+
+
+
+
+
+
+
+ constructor : function(config){
+ this.initialConfig = config;
+ this.itemId = config.itemId = (config.itemId || config.id || Ext.id());
+ this.items = [];
+ },
+
+
+ isAction : true,
+
+
+ setText : function(text){
+ this.initialConfig.text = text;
+ this.callEach('setText', [text]);
+ },
+
+
+ getText : function(){
+ return this.initialConfig.text;
+ },
+
+
+ setIconClass : function(cls){
+ this.initialConfig.iconCls = cls;
+ this.callEach('setIconClass', [cls]);
+ },
+
+
+ getIconClass : function(){
+ return this.initialConfig.iconCls;
+ },
+
+
+ setDisabled : function(v){
+ this.initialConfig.disabled = v;
+ this.callEach('setDisabled', [v]);
+ },
+
+
+ enable : function(){
+ this.setDisabled(false);
+ },
+
+
+ disable : function(){
+ this.setDisabled(true);
+ },
+
+
+ isDisabled : function(){
+ return this.initialConfig.disabled;
+ },
+
+
+ setHidden : function(v){
+ this.initialConfig.hidden = v;
+ this.callEach('setVisible', [!v]);
+ },
+
+
+ show : function(){
+ this.setHidden(false);
+ },
+
+
+ hide : function(){
+ this.setHidden(true);
+ },
+
+
+ isHidden : function(){
+ return this.initialConfig.hidden;
+ },
+
+
+ setHandler : function(fn, scope){
+ this.initialConfig.handler = fn;
+ this.initialConfig.scope = scope;
+ this.callEach('setHandler', [fn, scope]);
+ },
+
+
+ each : function(fn, scope){
+ Ext.each(this.items, fn, scope);
+ },
+
+
+ callEach : function(fnName, args){
+ var cs = this.items;
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i][fnName].apply(cs[i], args);
+ }
+ },
+
+
+ addComponent : function(comp){
+ this.items.push(comp);
+ comp.on('destroy', this.removeComponent, this);
+ },
+
+
+ removeComponent : function(comp){
+ this.items.remove(comp);
+ },
+
+
+ execute : function(){
+ this.initialConfig.handler.apply(this.initialConfig.scope || window, arguments);
+ }
+});
+
+(function(){
+Ext.Layer = function(config, existingEl){
+ config = config || {};
+ var dh = Ext.DomHelper,
+ cp = config.parentEl, pel = cp ? Ext.getDom(cp) : document.body;
+
+ if (existingEl) {
+ this.dom = Ext.getDom(existingEl);
+ }
+ if(!this.dom){
+ var o = config.dh || {tag: 'div', cls: 'x-layer'};
+ this.dom = dh.append(pel, o);
+ }
+ if(config.cls){
+ this.addClass(config.cls);
+ }
+ this.constrain = config.constrain !== false;
+ this.setVisibilityMode(Ext.Element.VISIBILITY);
+ if(config.id){
+ this.id = this.dom.id = config.id;
+ }else{
+ this.id = Ext.id(this.dom);
+ }
+ this.zindex = config.zindex || this.getZIndex();
+ this.position('absolute', this.zindex);
+ if(config.shadow){
+ this.shadowOffset = config.shadowOffset || 4;
+ this.shadow = new Ext.Shadow({
+ offset : this.shadowOffset,
+ mode : config.shadow
+ });
+ }else{
+ this.shadowOffset = 0;
+ }
+ this.useShim = config.shim !== false && Ext.useShims;
+ this.useDisplay = config.useDisplay;
+ this.hide();
+};
+
+var supr = Ext.Element.prototype;
+
+
+var shims = [];
+
+Ext.extend(Ext.Layer, Ext.Element, {
+
+ getZIndex : function(){
+ return this.zindex || parseInt((this.getShim() || this).getStyle('z-index'), 10) || 11000;
+ },
+
+ getShim : function(){
+ if(!this.useShim){
+ return null;
+ }
+ if(this.shim){
+ return this.shim;
+ }
+ var shim = shims.shift();
+ if(!shim){
+ shim = this.createShim();
+ shim.enableDisplayMode('block');
+ shim.dom.style.display = 'none';
+ shim.dom.style.visibility = 'visible';
+ }
+ var pn = this.dom.parentNode;
+ if(shim.dom.parentNode != pn){
+ pn.insertBefore(shim.dom, this.dom);
+ }
+ shim.setStyle('z-index', this.getZIndex()-2);
+ this.shim = shim;
+ return shim;
+ },
+
+ hideShim : function(){
+ if(this.shim){
+ this.shim.setDisplayed(false);
+ shims.push(this.shim);
+ delete this.shim;
+ }
+ },
+
+ disableShadow : function(){
+ if(this.shadow){
+ this.shadowDisabled = true;
+ this.shadow.hide();
+ this.lastShadowOffset = this.shadowOffset;
+ this.shadowOffset = 0;
+ }
+ },
+
+ enableShadow : function(show){
+ if(this.shadow){
+ this.shadowDisabled = false;
+ if(Ext.isDefined(this.lastShadowOffset)) {
+ this.shadowOffset = this.lastShadowOffset;
+ delete this.lastShadowOffset;
+ }
+ if(show){
+ this.sync(true);
+ }
+ }
+ },
+
+
+
+
+ sync : function(doShow){
+ var shadow = this.shadow;
+ if(!this.updating && this.isVisible() && (shadow || this.useShim)){
+ var shim = this.getShim(),
+ w = this.getWidth(),
+ h = this.getHeight(),
+ l = this.getLeft(true),
+ t = this.getTop(true);
+
+ if(shadow && !this.shadowDisabled){
+ if(doShow && !shadow.isVisible()){
+ shadow.show(this);
+ }else{
+ shadow.realign(l, t, w, h);
+ }
+ if(shim){
+ if(doShow){
+ shim.show();
+ }
+
+ var shadowAdj = shadow.el.getXY(), shimStyle = shim.dom.style,
+ shadowSize = shadow.el.getSize();
+ shimStyle.left = (shadowAdj[0])+'px';
+ shimStyle.top = (shadowAdj[1])+'px';
+ shimStyle.width = (shadowSize.width)+'px';
+ shimStyle.height = (shadowSize.height)+'px';
+ }
+ }else if(shim){
+ if(doShow){
+ shim.show();
+ }
+ shim.setSize(w, h);
+ shim.setLeftTop(l, t);
+ }
+ }
+ },
+
+
+ destroy : function(){
+ this.hideShim();
+ if(this.shadow){
+ this.shadow.hide();
+ }
+ this.removeAllListeners();
+ Ext.removeNode(this.dom);
+ delete this.dom;
+ },
+
+ remove : function(){
+ this.destroy();
+ },
+
+
+ beginUpdate : function(){
+ this.updating = true;
+ },
+
+
+ endUpdate : function(){
+ this.updating = false;
+ this.sync(true);
+ },
+
+
+ hideUnders : function(negOffset){
+ if(this.shadow){
+ this.shadow.hide();
+ }
+ this.hideShim();
+ },
+
+
+ constrainXY : function(){
+ if(this.constrain){
+ var vw = Ext.lib.Dom.getViewWidth(),
+ vh = Ext.lib.Dom.getViewHeight();
+ var s = Ext.getDoc().getScroll();
+
+ var xy = this.getXY();
+ var x = xy[0], y = xy[1];
+ var so = this.shadowOffset;
+ var w = this.dom.offsetWidth+so, h = this.dom.offsetHeight+so;
+
+ var moved = false;
+
+ if((x + w) > vw+s.left){
+ x = vw - w - so;
+ moved = true;
+ }
+ if((y + h) > vh+s.top){
+ y = vh - h - so;
+ moved = true;
+ }
+
+ if(x < s.left){
+ x = s.left;
+ moved = true;
+ }
+ if(y < s.top){
+ y = s.top;
+ moved = true;
+ }
+ if(moved){
+ if(this.avoidY){
+ var ay = this.avoidY;
+ if(y <= ay && (y+h) >= ay){
+ y = ay-h-5;
+ }
+ }
+ xy = [x, y];
+ this.storeXY(xy);
+ supr.setXY.call(this, xy);
+ this.sync();
+ }
+ }
+ return this;
+ },
+
+ getConstrainOffset : function(){
+ return this.shadowOffset;
+ },
+
+ isVisible : function(){
+ return this.visible;
+ },
+
+
+ showAction : function(){
+ this.visible = true;
+ if(this.useDisplay === true){
+ this.setDisplayed('');
+ }else if(this.lastXY){
+ supr.setXY.call(this, this.lastXY);
+ }else if(this.lastLT){
+ supr.setLeftTop.call(this, this.lastLT[0], this.lastLT[1]);
+ }
+ },
+
+
+ hideAction : function(){
+ this.visible = false;
+ if(this.useDisplay === true){
+ this.setDisplayed(false);
+ }else{
+ this.setLeftTop(-10000,-10000);
+ }
+ },
+
+
+ setVisible : function(v, a, d, c, e){
+ if(v){
+ this.showAction();
+ }
+ if(a && v){
+ var cb = function(){
+ this.sync(true);
+ if(c){
+ c();
+ }
+ }.createDelegate(this);
+ supr.setVisible.call(this, true, true, d, cb, e);
+ }else{
+ if(!v){
+ this.hideUnders(true);
+ }
+ var cb = c;
+ if(a){
+ cb = function(){
+ this.hideAction();
+ if(c){
+ c();
+ }
+ }.createDelegate(this);
+ }
+ supr.setVisible.call(this, v, a, d, cb, e);
+ if(v){
+ this.sync(true);
+ }else if(!a){
+ this.hideAction();
+ }
+ }
+ return this;
+ },
+
+ storeXY : function(xy){
+ delete this.lastLT;
+ this.lastXY = xy;
+ },
+
+ storeLeftTop : function(left, top){
+ delete this.lastXY;
+ this.lastLT = [left, top];
+ },
+
+
+ beforeFx : function(){
+ this.beforeAction();
+ return Ext.Layer.superclass.beforeFx.apply(this, arguments);
+ },
+
+
+ afterFx : function(){
+ Ext.Layer.superclass.afterFx.apply(this, arguments);
+ this.sync(this.isVisible());
+ },
+
+
+ beforeAction : function(){
+ if(!this.updating && this.shadow){
+ this.shadow.hide();
+ }
+ },
+
+
+ setLeft : function(left){
+ this.storeLeftTop(left, this.getTop(true));
+ supr.setLeft.apply(this, arguments);
+ this.sync();
+ return this;
+ },
+
+ setTop : function(top){
+ this.storeLeftTop(this.getLeft(true), top);
+ supr.setTop.apply(this, arguments);
+ this.sync();
+ return this;
+ },
+
+ setLeftTop : function(left, top){
+ this.storeLeftTop(left, top);
+ supr.setLeftTop.apply(this, arguments);
+ this.sync();
+ return this;
+ },
+
+ setXY : function(xy, a, d, c, e){
+ this.fixDisplay();
+ this.beforeAction();
+ this.storeXY(xy);
+ var cb = this.createCB(c);
+ supr.setXY.call(this, xy, a, d, cb, e);
+ if(!a){
+ cb();
+ }
+ return this;
+ },
+
+
+ createCB : function(c){
+ var el = this;
+ return function(){
+ el.constrainXY();
+ el.sync(true);
+ if(c){
+ c();
+ }
+ };
+ },
+
+
+ setX : function(x, a, d, c, e){
+ this.setXY([x, this.getY()], a, d, c, e);
+ return this;
+ },
+
+
+ setY : function(y, a, d, c, e){
+ this.setXY([this.getX(), y], a, d, c, e);
+ return this;
+ },
+
+
+ setSize : function(w, h, a, d, c, e){
+ this.beforeAction();
+ var cb = this.createCB(c);
+ supr.setSize.call(this, w, h, a, d, cb, e);
+ if(!a){
+ cb();
+ }
+ return this;
+ },
+
+
+ setWidth : function(w, a, d, c, e){
+ this.beforeAction();
+ var cb = this.createCB(c);
+ supr.setWidth.call(this, w, a, d, cb, e);
+ if(!a){
+ cb();
+ }
+ return this;
+ },
+
+
+ setHeight : function(h, a, d, c, e){
+ this.beforeAction();
+ var cb = this.createCB(c);
+ supr.setHeight.call(this, h, a, d, cb, e);
+ if(!a){
+ cb();
+ }
+ return this;
+ },
+
+
+ setBounds : function(x, y, w, h, a, d, c, e){
+ this.beforeAction();
+ var cb = this.createCB(c);
+ if(!a){
+ this.storeXY([x, y]);
+ supr.setXY.call(this, [x, y]);
+ supr.setSize.call(this, w, h, a, d, cb, e);
+ cb();
+ }else{
+ supr.setBounds.call(this, x, y, w, h, a, d, cb, e);
+ }
+ return this;
+ },
+
+
+ setZIndex : function(zindex){
+ this.zindex = zindex;
+ this.setStyle('z-index', zindex + 2);
+ if(this.shadow){
+ this.shadow.setZIndex(zindex + 1);
+ }
+ if(this.shim){
+ this.shim.setStyle('z-index', zindex);
+ }
+ return this;
+ }
+});
+})();
+
+Ext.Shadow = function(config) {
+ Ext.apply(this, config);
+ if (typeof this.mode != "string") {
+ this.mode = this.defaultMode;
+ }
+ var o = this.offset,
+ a = {
+ h: 0
+ },
+ rad = Math.floor(this.offset / 2);
+ switch (this.mode.toLowerCase()) {
+
+ case "drop":
+ a.w = 0;
+ a.l = a.t = o;
+ a.t -= 1;
+ if (Ext.isIE9m) {
+ a.l -= this.offset + rad;
+ a.t -= this.offset + rad;
+ a.w -= rad;
+ a.h -= rad;
+ a.t += 1;
+ }
+ break;
+ case "sides":
+ a.w = (o * 2);
+ a.l = -o;
+ a.t = o - 1;
+ if (Ext.isIE9m) {
+ a.l -= (this.offset - rad);
+ a.t -= this.offset + rad;
+ a.l += 1;
+ a.w -= (this.offset - rad) * 2;
+ a.w -= rad + 1;
+ a.h -= 1;
+ }
+ break;
+ case "frame":
+ a.w = a.h = (o * 2);
+ a.l = a.t = -o;
+ a.t += 1;
+ a.h -= 2;
+ if (Ext.isIE9m) {
+ a.l -= (this.offset - rad);
+ a.t -= (this.offset - rad);
+ a.l += 1;
+ a.w -= (this.offset + rad + 1);
+ a.h -= (this.offset + rad);
+ a.h += 1;
+ }
+ break;
+ };
+
+ this.adjusts = a;
+};
+
+Ext.Shadow.prototype = {
+
+
+ offset: 4,
+
+
+ defaultMode: "drop",
+
+
+ show: function(target) {
+ target = Ext.get(target);
+ if (!this.el) {
+ this.el = Ext.Shadow.Pool.pull();
+ if (this.el.dom.nextSibling != target.dom) {
+ this.el.insertBefore(target);
+ }
+ }
+ this.el.setStyle("z-index", this.zIndex || parseInt(target.getStyle("z-index"), 10) - 1);
+ if (Ext.isIE9m) {
+ this.el.dom.style.filter = "progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (this.offset) + ")";
+ }
+ this.realign(
+ target.getLeft(true),
+ target.getTop(true),
+ target.getWidth(),
+ target.getHeight()
+ );
+ this.el.dom.style.display = "block";
+ },
+
+
+ isVisible: function() {
+ return this.el ? true: false;
+ },
+
+
+ realign: function(l, t, w, h) {
+ if (!this.el) {
+ return;
+ }
+ var a = this.adjusts,
+ d = this.el.dom,
+ s = d.style,
+ iea = 0,
+ sw = (w + a.w),
+ sh = (h + a.h),
+ sws = sw + "px",
+ shs = sh + "px",
+ cn,
+ sww;
+ s.left = (l + a.l) + "px";
+ s.top = (t + a.t) + "px";
+ if (s.width != sws || s.height != shs) {
+ s.width = sws;
+ s.height = shs;
+ if (!Ext.isIE9m) {
+ cn = d.childNodes;
+ sww = Math.max(0, (sw - 12)) + "px";
+ cn[0].childNodes[1].style.width = sww;
+ cn[1].childNodes[1].style.width = sww;
+ cn[2].childNodes[1].style.width = sww;
+ cn[1].style.height = Math.max(0, (sh - 12)) + "px";
+ }
+ }
+ },
+
+
+ hide: function() {
+ if (this.el) {
+ this.el.dom.style.display = "none";
+ Ext.Shadow.Pool.push(this.el);
+ delete this.el;
+ }
+ },
+
+
+ setZIndex: function(z) {
+ this.zIndex = z;
+ if (this.el) {
+ this.el.setStyle("z-index", z);
+ }
+ }
+};
+
+
+Ext.Shadow.Pool = function() {
+ var p = [],
+ markup = Ext.isIE9m ?
+ '<div class="x-ie-shadow"></div>':
+ '<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';
+ return {
+ pull: function() {
+ var sh = p.shift();
+ if (!sh) {
+ sh = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, markup));
+ sh.autoBoxAdjust = false;
+ }
+ return sh;
+ },
+
+ push: function(sh) {
+ p.push(sh);
+ }
+ };
+}();
+Ext.BoxComponent = Ext.extend(Ext.Component, {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ initComponent : function(){
+ Ext.BoxComponent.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'resize',
+
+ 'move'
+ );
+ },
+
+
+ boxReady : false,
+
+ deferHeight: false,
+
+
+ setSize : function(w, h){
+
+
+ if(typeof w == 'object'){
+ h = w.height;
+ w = w.width;
+ }
+ if (Ext.isDefined(w) && Ext.isDefined(this.boxMinWidth) && (w < this.boxMinWidth)) {
+ w = this.boxMinWidth;
+ }
+ if (Ext.isDefined(h) && Ext.isDefined(this.boxMinHeight) && (h < this.boxMinHeight)) {
+ h = this.boxMinHeight;
+ }
+ if (Ext.isDefined(w) && Ext.isDefined(this.boxMaxWidth) && (w > this.boxMaxWidth)) {
+ w = this.boxMaxWidth;
+ }
+ if (Ext.isDefined(h) && Ext.isDefined(this.boxMaxHeight) && (h > this.boxMaxHeight)) {
+ h = this.boxMaxHeight;
+ }
+
+ if(!this.boxReady){
+ this.width = w;
+ this.height = h;
+ return this;
+ }
+
+
+ if(this.cacheSizes !== false && this.lastSize && this.lastSize.width == w && this.lastSize.height == h){
+ return this;
+ }
+ this.lastSize = {width: w, height: h};
+ var adj = this.adjustSize(w, h),
+ aw = adj.width,
+ ah = adj.height,
+ rz;
+ if(aw !== undefined || ah !== undefined){
+ rz = this.getResizeEl();
+ if(!this.deferHeight && aw !== undefined && ah !== undefined){
+ rz.setSize(aw, ah);
+ }else if(!this.deferHeight && ah !== undefined){
+ rz.setHeight(ah);
+ }else if(aw !== undefined){
+ rz.setWidth(aw);
+ }
+ this.onResize(aw, ah, w, h);
+ this.fireEvent('resize', this, aw, ah, w, h);
+ }
+ return this;
+ },
+
+
+ setWidth : function(width){
+ return this.setSize(width);
+ },
+
+
+ setHeight : function(height){
+ return this.setSize(undefined, height);
+ },
+
+
+ getSize : function(){
+ return this.getResizeEl().getSize();
+ },
+
+
+ getWidth : function(){
+ return this.getResizeEl().getWidth();
+ },
+
+
+ getHeight : function(){
+ return this.getResizeEl().getHeight();
+ },
+
+
+ getOuterSize : function(){
+ var el = this.getResizeEl();
+ return {width: el.getWidth() + el.getMargins('lr'),
+ height: el.getHeight() + el.getMargins('tb')};
+ },
+
+
+ getPosition : function(local){
+ var el = this.getPositionEl();
+ if(local === true){
+ return [el.getLeft(true), el.getTop(true)];
+ }
+ return this.xy || el.getXY();
+ },
+
+
+ getBox : function(local){
+ var pos = this.getPosition(local);
+ var s = this.getSize();
+ s.x = pos[0];
+ s.y = pos[1];
+ return s;
+ },
+
+
+ updateBox : function(box){
+ this.setSize(box.width, box.height);
+ this.setPagePosition(box.x, box.y);
+ return this;
+ },
+
+
+ getResizeEl : function(){
+ return this.resizeEl || this.el;
+ },
+
+
+ setAutoScroll : function(scroll){
+ if(this.rendered){
+ this.getContentTarget().setOverflow(scroll ? 'auto' : '');
+ }
+ this.autoScroll = scroll;
+ return this;
+ },
+
+
+ setPosition : function(x, y){
+ if(x && typeof x[1] == 'number'){
+ y = x[1];
+ x = x[0];
+ }
+ this.x = x;
+ this.y = y;
+ if(!this.boxReady){
+ return this;
+ }
+ var adj = this.adjustPosition(x, y);
+ var ax = adj.x, ay = adj.y;
+
+ var el = this.getPositionEl();
+ if(ax !== undefined || ay !== undefined){
+ if(ax !== undefined && ay !== undefined){
+ el.setLeftTop(ax, ay);
+ }else if(ax !== undefined){
+ el.setLeft(ax);
+ }else if(ay !== undefined){
+ el.setTop(ay);
+ }
+ this.onPosition(ax, ay);
+ this.fireEvent('move', this, ax, ay);
+ }
+ return this;
+ },
+
+
+ setPagePosition : function(x, y){
+ if(x && typeof x[1] == 'number'){
+ y = x[1];
+ x = x[0];
+ }
+ this.pageX = x;
+ this.pageY = y;
+ if(!this.boxReady){
+ return;
+ }
+ if(x === undefined || y === undefined){
+ return;
+ }
+ var p = this.getPositionEl().translatePoints(x, y);
+ this.setPosition(p.left, p.top);
+ return this;
+ },
+
+
+ afterRender : function(){
+ Ext.BoxComponent.superclass.afterRender.call(this);
+ if(this.resizeEl){
+ this.resizeEl = Ext.get(this.resizeEl);
+ }
+ if(this.positionEl){
+ this.positionEl = Ext.get(this.positionEl);
+ }
+ this.boxReady = true;
+ Ext.isDefined(this.autoScroll) && this.setAutoScroll(this.autoScroll);
+ this.setSize(this.width, this.height);
+ if(this.x || this.y){
+ this.setPosition(this.x, this.y);
+ }else if(this.pageX || this.pageY){
+ this.setPagePosition(this.pageX, this.pageY);
+ }
+ },
+
+
+ syncSize : function(){
+ delete this.lastSize;
+ this.setSize(this.autoWidth ? undefined : this.getResizeEl().getWidth(), this.autoHeight ? undefined : this.getResizeEl().getHeight());
+ return this;
+ },
+
+
+ onResize : function(adjWidth, adjHeight, rawWidth, rawHeight){
+ },
+
+
+ onPosition : function(x, y){
+
+ },
+
+
+ adjustSize : function(w, h){
+ if(this.autoWidth){
+ w = 'auto';
+ }
+ if(this.autoHeight){
+ h = 'auto';
+ }
+ return {width : w, height: h};
+ },
+
+
+ adjustPosition : function(x, y){
+ return {x : x, y: y};
+ }
+});
+Ext.reg('box', Ext.BoxComponent);
+
+
+
+Ext.Spacer = Ext.extend(Ext.BoxComponent, {
+ autoEl:'div'
+});
+Ext.reg('spacer', Ext.Spacer);
+Ext.SplitBar = function(dragElement, resizingElement, orientation, placement, existingProxy){
+
+
+ this.el = Ext.get(dragElement, true);
+ this.el.unselectable();
+
+ this.resizingEl = Ext.get(resizingElement, true);
+
+
+ this.orientation = orientation || Ext.SplitBar.HORIZONTAL;
+
+
+
+ this.minSize = 0;
+
+
+ this.maxSize = 2000;
+
+
+ this.animate = false;
+
+
+ this.useShim = false;
+
+
+ this.shim = null;
+
+ if(!existingProxy){
+
+ this.proxy = Ext.SplitBar.createProxy(this.orientation);
+ }else{
+ this.proxy = Ext.get(existingProxy).dom;
+ }
+
+ this.dd = new Ext.dd.DDProxy(this.el.dom.id, "XSplitBars", {dragElId : this.proxy.id});
+
+
+ this.dd.b4StartDrag = this.onStartProxyDrag.createDelegate(this);
+
+
+ this.dd.endDrag = this.onEndProxyDrag.createDelegate(this);
+
+
+ this.dragSpecs = {};
+
+
+ this.adapter = new Ext.SplitBar.BasicLayoutAdapter();
+ this.adapter.init(this);
+
+ if(this.orientation == Ext.SplitBar.HORIZONTAL){
+
+ this.placement = placement || (this.el.getX() > this.resizingEl.getX() ? Ext.SplitBar.LEFT : Ext.SplitBar.RIGHT);
+ this.el.addClass("x-splitbar-h");
+ }else{
+
+ this.placement = placement || (this.el.getY() > this.resizingEl.getY() ? Ext.SplitBar.TOP : Ext.SplitBar.BOTTOM);
+ this.el.addClass("x-splitbar-v");
+ }
+
+ this.addEvents(
+
+ "resize",
+
+ "moved",
+
+ "beforeresize",
+
+ "beforeapply"
+ );
+
+ Ext.SplitBar.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.SplitBar, Ext.util.Observable, {
+ onStartProxyDrag : function(x, y){
+ this.fireEvent("beforeresize", this);
+ this.overlay = Ext.DomHelper.append(document.body, {cls: "x-drag-overlay", html: "&#160;"}, true);
+ this.overlay.unselectable();
+ this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.overlay.show();
+ Ext.get(this.proxy).setDisplayed("block");
+ var size = this.adapter.getElementSize(this);
+ this.activeMinSize = this.getMinimumSize();
+ this.activeMaxSize = this.getMaximumSize();
+ var c1 = size - this.activeMinSize;
+ var c2 = Math.max(this.activeMaxSize - size, 0);
+ if(this.orientation == Ext.SplitBar.HORIZONTAL){
+ this.dd.resetConstraints();
+ this.dd.setXConstraint(
+ this.placement == Ext.SplitBar.LEFT ? c1 : c2,
+ this.placement == Ext.SplitBar.LEFT ? c2 : c1,
+ this.tickSize
+ );
+ this.dd.setYConstraint(0, 0);
+ }else{
+ this.dd.resetConstraints();
+ this.dd.setXConstraint(0, 0);
+ this.dd.setYConstraint(
+ this.placement == Ext.SplitBar.TOP ? c1 : c2,
+ this.placement == Ext.SplitBar.TOP ? c2 : c1,
+ this.tickSize
+ );
+ }
+ this.dragSpecs.startSize = size;
+ this.dragSpecs.startPoint = [x, y];
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd, x, y);
+ },
+
+
+ onEndProxyDrag : function(e){
+ Ext.get(this.proxy).setDisplayed(false);
+ var endPoint = Ext.lib.Event.getXY(e);
+ if(this.overlay){
+ Ext.destroy(this.overlay);
+ delete this.overlay;
+ }
+ var newSize;
+ if(this.orientation == Ext.SplitBar.HORIZONTAL){
+ newSize = this.dragSpecs.startSize +
+ (this.placement == Ext.SplitBar.LEFT ?
+ endPoint[0] - this.dragSpecs.startPoint[0] :
+ this.dragSpecs.startPoint[0] - endPoint[0]
+ );
+ }else{
+ newSize = this.dragSpecs.startSize +
+ (this.placement == Ext.SplitBar.TOP ?
+ endPoint[1] - this.dragSpecs.startPoint[1] :
+ this.dragSpecs.startPoint[1] - endPoint[1]
+ );
+ }
+ newSize = Math.min(Math.max(newSize, this.activeMinSize), this.activeMaxSize);
+ if(newSize != this.dragSpecs.startSize){
+ if(this.fireEvent('beforeapply', this, newSize) !== false){
+ this.adapter.setElementSize(this, newSize);
+ this.fireEvent("moved", this, newSize);
+ this.fireEvent("resize", this, newSize);
+ }
+ }
+ },
+
+
+ getAdapter : function(){
+ return this.adapter;
+ },
+
+
+ setAdapter : function(adapter){
+ this.adapter = adapter;
+ this.adapter.init(this);
+ },
+
+
+ getMinimumSize : function(){
+ return this.minSize;
+ },
+
+
+ setMinimumSize : function(minSize){
+ this.minSize = minSize;
+ },
+
+
+ getMaximumSize : function(){
+ return this.maxSize;
+ },
+
+
+ setMaximumSize : function(maxSize){
+ this.maxSize = maxSize;
+ },
+
+
+ setCurrentSize : function(size){
+ var oldAnimate = this.animate;
+ this.animate = false;
+ this.adapter.setElementSize(this, size);
+ this.animate = oldAnimate;
+ },
+
+
+ destroy : function(removeEl){
+ Ext.destroy(this.shim, Ext.get(this.proxy));
+ this.dd.unreg();
+ if(removeEl){
+ this.el.remove();
+ }
+ this.purgeListeners();
+ }
+});
+
+
+Ext.SplitBar.createProxy = function(dir){
+ var proxy = new Ext.Element(document.createElement("div"));
+ document.body.appendChild(proxy.dom);
+ proxy.unselectable();
+ var cls = 'x-splitbar-proxy';
+ proxy.addClass(cls + ' ' + (dir == Ext.SplitBar.HORIZONTAL ? cls +'-h' : cls + '-v'));
+ return proxy.dom;
+};
+
+
+Ext.SplitBar.BasicLayoutAdapter = function(){
+};
+
+Ext.SplitBar.BasicLayoutAdapter.prototype = {
+
+ init : function(s){
+
+ },
+
+ getElementSize : function(s){
+ if(s.orientation == Ext.SplitBar.HORIZONTAL){
+ return s.resizingEl.getWidth();
+ }else{
+ return s.resizingEl.getHeight();
+ }
+ },
+
+
+ setElementSize : function(s, newSize, onComplete){
+ if(s.orientation == Ext.SplitBar.HORIZONTAL){
+ if(!s.animate){
+ s.resizingEl.setWidth(newSize);
+ if(onComplete){
+ onComplete(s, newSize);
+ }
+ }else{
+ s.resizingEl.setWidth(newSize, true, .1, onComplete, 'easeOut');
+ }
+ }else{
+
+ if(!s.animate){
+ s.resizingEl.setHeight(newSize);
+ if(onComplete){
+ onComplete(s, newSize);
+ }
+ }else{
+ s.resizingEl.setHeight(newSize, true, .1, onComplete, 'easeOut');
+ }
+ }
+ }
+};
+
+
+Ext.SplitBar.AbsoluteLayoutAdapter = function(container){
+ this.basic = new Ext.SplitBar.BasicLayoutAdapter();
+ this.container = Ext.get(container);
+};
+
+Ext.SplitBar.AbsoluteLayoutAdapter.prototype = {
+ init : function(s){
+ this.basic.init(s);
+ },
+
+ getElementSize : function(s){
+ return this.basic.getElementSize(s);
+ },
+
+ setElementSize : function(s, newSize, onComplete){
+ this.basic.setElementSize(s, newSize, this.moveSplitter.createDelegate(this, [s]));
+ },
+
+ moveSplitter : function(s){
+ var yes = Ext.SplitBar;
+ switch(s.placement){
+ case yes.LEFT:
+ s.el.setX(s.resizingEl.getRight());
+ break;
+ case yes.RIGHT:
+ s.el.setStyle("right", (this.container.getWidth() - s.resizingEl.getLeft()) + "px");
+ break;
+ case yes.TOP:
+ s.el.setY(s.resizingEl.getBottom());
+ break;
+ case yes.BOTTOM:
+ s.el.setY(s.resizingEl.getTop() - s.el.getHeight());
+ break;
+ }
+ }
+};
+
+
+Ext.SplitBar.VERTICAL = 1;
+
+
+Ext.SplitBar.HORIZONTAL = 2;
+
+
+Ext.SplitBar.LEFT = 1;
+
+
+Ext.SplitBar.RIGHT = 2;
+
+
+Ext.SplitBar.TOP = 3;
+
+
+Ext.SplitBar.BOTTOM = 4;
+
+Ext.Container = Ext.extend(Ext.BoxComponent, {
+
+
+
+
+ bufferResize: 50,
+
+
+
+
+
+
+
+ autoDestroy : true,
+
+
+ forceLayout: false,
+
+
+
+ defaultType : 'panel',
+
+
+ resizeEvent: 'resize',
+
+
+ bubbleEvents: ['add', 'remove'],
+
+
+ initComponent : function(){
+ Ext.Container.superclass.initComponent.call(this);
+
+ this.addEvents(
+
+ 'afterlayout',
+
+ 'beforeadd',
+
+ 'beforeremove',
+
+ 'add',
+
+ 'remove'
+ );
+
+
+ var items = this.items;
+ if(items){
+ delete this.items;
+ this.add(items);
+ }
+ },
+
+
+ initItems : function(){
+ if(!this.items){
+ this.items = new Ext.util.MixedCollection(false, this.getComponentId);
+ this.getLayout();
+ }
+ },
+
+
+ setLayout : function(layout){
+ if(this.layout && this.layout != layout){
+ this.layout.setContainer(null);
+ }
+ this.layout = layout;
+ this.initItems();
+ layout.setContainer(this);
+ },
+
+ afterRender: function(){
+
+
+ Ext.Container.superclass.afterRender.call(this);
+ if(!this.layout){
+ this.layout = 'auto';
+ }
+ if(Ext.isObject(this.layout) && !this.layout.layout){
+ this.layoutConfig = this.layout;
+ this.layout = this.layoutConfig.type;
+ }
+ if(Ext.isString(this.layout)){
+ this.layout = new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig);
+ }
+ this.setLayout(this.layout);
+
+
+ if(this.activeItem !== undefined && this.layout.setActiveItem){
+ var item = this.activeItem;
+ delete this.activeItem;
+ this.layout.setActiveItem(item);
+ }
+
+
+ if(!this.ownerCt){
+ this.doLayout(false, true);
+ }
+
+
+
+ if(this.monitorResize === true){
+ Ext.EventManager.onWindowResize(this.doLayout, this, [false]);
+ }
+ },
+
+
+ getLayoutTarget : function(){
+ return this.el;
+ },
+
+
+ getComponentId : function(comp){
+ return comp.getItemId();
+ },
+
+
+ add : function(comp){
+ this.initItems();
+ var args = arguments.length > 1;
+ if(args || Ext.isArray(comp)){
+ var result = [];
+ Ext.each(args ? arguments : comp, function(c){
+ result.push(this.add(c));
+ }, this);
+ return result;
+ }
+ var c = this.lookupComponent(this.applyDefaults(comp));
+ var index = this.items.length;
+ if(this.fireEvent('beforeadd', this, c, index) !== false && this.onBeforeAdd(c) !== false){
+ this.items.add(c);
+
+ c.onAdded(this, index);
+ this.onAdd(c);
+ this.fireEvent('add', this, c, index);
+ }
+ return c;
+ },
+
+ onAdd : function(c){
+
+ },
+
+
+ onAdded : function(container, pos) {
+
+ this.ownerCt = container;
+ this.initRef();
+
+ this.cascade(function(c){
+ c.initRef();
+ });
+ this.fireEvent('added', this, container, pos);
+ },
+
+
+ insert : function(index, comp) {
+ var args = arguments,
+ length = args.length,
+ result = [],
+ i, c;
+
+ this.initItems();
+
+ if (length > 2) {
+ for (i = length - 1; i >= 1; --i) {
+ result.push(this.insert(index, args[i]));
+ }
+ return result;
+ }
+
+ c = this.lookupComponent(this.applyDefaults(comp));
+ index = Math.min(index, this.items.length);
+
+ if (this.fireEvent('beforeadd', this, c, index) !== false && this.onBeforeAdd(c) !== false) {
+ if (c.ownerCt == this) {
+ this.items.remove(c);
+ }
+ this.items.insert(index, c);
+ c.onAdded(this, index);
+ this.onAdd(c);
+ this.fireEvent('add', this, c, index);
+ }
+
+ return c;
+ },
+
+
+ applyDefaults : function(c){
+ var d = this.defaults;
+ if(d){
+ if(Ext.isFunction(d)){
+ d = d.call(this, c);
+ }
+ if(Ext.isString(c)){
+ c = Ext.ComponentMgr.get(c);
+ Ext.apply(c, d);
+ }else if(!c.events){
+ Ext.applyIf(c.isAction ? c.initialConfig : c, d);
+ }else{
+ Ext.apply(c, d);
+ }
+ }
+ return c;
+ },
+
+
+ onBeforeAdd : function(item){
+ if(item.ownerCt){
+ item.ownerCt.remove(item, false);
+ }
+ if(this.hideBorders === true){
+ item.border = (item.border === true);
+ }
+ },
+
+
+ remove : function(comp, autoDestroy){
+ this.initItems();
+ var c = this.getComponent(comp);
+ if(c && this.fireEvent('beforeremove', this, c) !== false){
+ this.doRemove(c, autoDestroy);
+ this.fireEvent('remove', this, c);
+ }
+ return c;
+ },
+
+ onRemove: function(c){
+
+ },
+
+
+ doRemove: function(c, autoDestroy){
+ var l = this.layout,
+ hasLayout = l && this.rendered;
+
+ if(hasLayout){
+ l.onRemove(c);
+ }
+ this.items.remove(c);
+ c.onRemoved();
+ this.onRemove(c);
+ if(autoDestroy === true || (autoDestroy !== false && this.autoDestroy)){
+ c.destroy();
+ }
+ if(hasLayout){
+ l.afterRemove(c);
+ }
+ },
+
+
+ removeAll: function(autoDestroy){
+ this.initItems();
+ var item, rem = [], items = [];
+ this.items.each(function(i){
+ rem.push(i);
+ });
+ for (var i = 0, len = rem.length; i < len; ++i){
+ item = rem[i];
+ this.remove(item, autoDestroy);
+ if(item.ownerCt !== this){
+ items.push(item);
+ }
+ }
+ return items;
+ },
+
+
+ getComponent : function(comp){
+ if(Ext.isObject(comp)){
+ comp = comp.getItemId();
+ }
+ return this.items.get(comp);
+ },
+
+
+ lookupComponent : function(comp){
+ if(Ext.isString(comp)){
+ return Ext.ComponentMgr.get(comp);
+ }else if(!comp.events){
+ return this.createComponent(comp);
+ }
+ return comp;
+ },
+
+
+ createComponent : function(config, defaultType){
+ if (config.render) {
+ return config;
+ }
+
+
+ var c = Ext.create(Ext.apply({
+ ownerCt: this
+ }, config), defaultType || this.defaultType);
+ delete c.initialConfig.ownerCt;
+ delete c.ownerCt;
+ return c;
+ },
+
+
+ canLayout : function() {
+ var el = this.getVisibilityEl();
+ return el && el.dom && !el.isStyle("display", "none");
+ },
+
+
+
+ doLayout : function(shallow, force){
+ var rendered = this.rendered,
+ forceLayout = force || this.forceLayout;
+
+ if(this.collapsed || !this.canLayout()){
+ this.deferLayout = this.deferLayout || !shallow;
+ if(!forceLayout){
+ return;
+ }
+ shallow = shallow && !this.deferLayout;
+ } else {
+ delete this.deferLayout;
+ }
+ if(rendered && this.layout){
+ this.layout.layout();
+ }
+ if(shallow !== true && this.items){
+ var cs = this.items.items;
+ for(var i = 0, len = cs.length; i < len; i++){
+ var c = cs[i];
+ if(c.doLayout){
+ c.doLayout(false, forceLayout);
+ }
+ }
+ }
+ if(rendered){
+ this.onLayout(shallow, forceLayout);
+ }
+
+ this.hasLayout = true;
+ delete this.forceLayout;
+ },
+
+ onLayout : Ext.emptyFn,
+
+
+ shouldBufferLayout: function(){
+
+ var hl = this.hasLayout;
+ if(this.ownerCt){
+
+ return hl ? !this.hasLayoutPending() : false;
+ }
+
+ return hl;
+ },
+
+
+ hasLayoutPending: function(){
+
+ var pending = false;
+ this.ownerCt.bubble(function(c){
+ if(c.layoutPending){
+ pending = true;
+ return false;
+ }
+ });
+ return pending;
+ },
+
+ onShow : function(){
+
+ Ext.Container.superclass.onShow.call(this);
+
+ if(Ext.isDefined(this.deferLayout)){
+ delete this.deferLayout;
+ this.doLayout(true);
+ }
+ },
+
+
+ getLayout : function(){
+ if(!this.layout){
+ var layout = new Ext.layout.AutoLayout(this.layoutConfig);
+ this.setLayout(layout);
+ }
+ return this.layout;
+ },
+
+
+ beforeDestroy : function(){
+ var c;
+ if(this.items){
+ while(c = this.items.first()){
+ this.doRemove(c, true);
+ }
+ }
+ if(this.monitorResize){
+ Ext.EventManager.removeResizeListener(this.doLayout, this);
+ }
+ Ext.destroy(this.layout);
+ Ext.Container.superclass.beforeDestroy.call(this);
+ },
+
+
+ cascade : function(fn, scope, args){
+ if(fn.apply(scope || this, args || [this]) !== false){
+ if(this.items){
+ var cs = this.items.items;
+ for(var i = 0, len = cs.length; i < len; i++){
+ if(cs[i].cascade){
+ cs[i].cascade(fn, scope, args);
+ }else{
+ fn.apply(scope || cs[i], args || [cs[i]]);
+ }
+ }
+ }
+ }
+ return this;
+ },
+
+
+ findById : function(id){
+ var m = null,
+ ct = this;
+ this.cascade(function(c){
+ if(ct != c && c.id === id){
+ m = c;
+ return false;
+ }
+ });
+ return m;
+ },
+
+
+ findByType : function(xtype, shallow){
+ return this.findBy(function(c){
+ return c.isXType(xtype, shallow);
+ });
+ },
+
+
+ find : function(prop, value){
+ return this.findBy(function(c){
+ return c[prop] === value;
+ });
+ },
+
+
+ findBy : function(fn, scope){
+ var m = [], ct = this;
+ this.cascade(function(c){
+ if(ct != c && fn.call(scope || c, c, ct) === true){
+ m.push(c);
+ }
+ });
+ return m;
+ },
+
+
+ get : function(key){
+ return this.getComponent(key);
+ }
+});
+
+Ext.Container.LAYOUTS = {};
+Ext.reg('container', Ext.Container);
+
+Ext.layout.ContainerLayout = Ext.extend(Object, {
+
+
+
+
+
+
+ monitorResize:false,
+
+ activeItem : null,
+
+ constructor : function(config){
+ this.id = Ext.id(null, 'ext-layout-');
+ Ext.apply(this, config);
+ },
+
+ type: 'container',
+
+
+ IEMeasureHack : function(target, viewFlag) {
+ var tChildren = target.dom.childNodes, tLen = tChildren.length, c, d = [], e, i, ret;
+ for (i = 0 ; i < tLen ; i++) {
+ c = tChildren[i];
+ e = Ext.get(c);
+ if (e) {
+ d[i] = e.getStyle('display');
+ e.setStyle({display: 'none'});
+ }
+ }
+ ret = target ? target.getViewSize(viewFlag) : {};
+ for (i = 0 ; i < tLen ; i++) {
+ c = tChildren[i];
+ e = Ext.get(c);
+ if (e) {
+ e.setStyle({display: d[i]});
+ }
+ }
+ return ret;
+ },
+
+
+ getLayoutTargetSize : Ext.EmptyFn,
+
+
+ layout : function(){
+ var ct = this.container, target = ct.getLayoutTarget();
+ if(!(this.hasLayout || Ext.isEmpty(this.targetCls))){
+ target.addClass(this.targetCls);
+ }
+ this.onLayout(ct, target);
+ ct.fireEvent('afterlayout', ct, this);
+ },
+
+
+ onLayout : function(ct, target){
+ this.renderAll(ct, target);
+ },
+
+
+ isValidParent : function(c, target){
+ return target && c.getPositionEl().dom.parentNode == (target.dom || target);
+ },
+
+
+ renderAll : function(ct, target){
+ var items = ct.items.items, i, c, len = items.length;
+ for(i = 0; i < len; i++) {
+ c = items[i];
+ if(c && (!c.rendered || !this.isValidParent(c, target))){
+ this.renderItem(c, i, target);
+ }
+ }
+ },
+
+
+ renderItem : function(c, position, target){
+ if (c) {
+ if (!c.rendered) {
+ c.render(target, position);
+ this.configureItem(c);
+ } else if (!this.isValidParent(c, target)) {
+ if (Ext.isNumber(position)) {
+ position = target.dom.childNodes[position];
+ }
+
+ target.dom.insertBefore(c.getPositionEl().dom, position || null);
+ c.container = target;
+ this.configureItem(c);
+ }
+ }
+ },
+
+
+
+ getRenderedItems: function(ct){
+ var t = ct.getLayoutTarget(), cti = ct.items.items, len = cti.length, i, c, items = [];
+ for (i = 0; i < len; i++) {
+ if((c = cti[i]).rendered && this.isValidParent(c, t) && c.shouldLayout !== false){
+ items.push(c);
+ }
+ };
+ return items;
+ },
+
+
+ configureItem: function(c){
+ if (this.extraCls) {
+ var t = c.getPositionEl ? c.getPositionEl() : c;
+ t.addClass(this.extraCls);
+ }
+
+
+ if (c.doLayout && this.forceLayout) {
+ c.doLayout();
+ }
+ if (this.renderHidden && c != this.activeItem) {
+ c.hide();
+ }
+ },
+
+ onRemove: function(c){
+ if(this.activeItem == c){
+ delete this.activeItem;
+ }
+ if(c.rendered && this.extraCls){
+ var t = c.getPositionEl ? c.getPositionEl() : c;
+ t.removeClass(this.extraCls);
+ }
+ },
+
+ afterRemove: function(c){
+ if(c.removeRestore){
+ c.removeMode = 'container';
+ delete c.removeRestore;
+ }
+ },
+
+
+ onResize: function(){
+ var ct = this.container,
+ b;
+ if(ct.collapsed){
+ return;
+ }
+ if(b = ct.bufferResize && ct.shouldBufferLayout()){
+ if(!this.resizeTask){
+ this.resizeTask = new Ext.util.DelayedTask(this.runLayout, this);
+ this.resizeBuffer = Ext.isNumber(b) ? b : 50;
+ }
+ ct.layoutPending = true;
+ this.resizeTask.delay(this.resizeBuffer);
+ }else{
+ this.runLayout();
+ }
+ },
+
+ runLayout: function(){
+ var ct = this.container;
+ this.layout();
+ ct.onLayout();
+ delete ct.layoutPending;
+ },
+
+
+ setContainer : function(ct){
+
+ if(this.monitorResize && ct != this.container){
+ var old = this.container;
+ if(old){
+ old.un(old.resizeEvent, this.onResize, this);
+ }
+ if(ct){
+ ct.on(ct.resizeEvent, this.onResize, this);
+ }
+ }
+ this.container = ct;
+ },
+
+
+ parseMargins : function(v){
+ if (Ext.isNumber(v)) {
+ v = v.toString();
+ }
+ var ms = v.split(' '),
+ len = ms.length;
+
+ if (len == 1) {
+ ms[1] = ms[2] = ms[3] = ms[0];
+ } else if(len == 2) {
+ ms[2] = ms[0];
+ ms[3] = ms[1];
+ } else if(len == 3) {
+ ms[3] = ms[1];
+ }
+
+ return {
+ top :parseInt(ms[0], 10) || 0,
+ right :parseInt(ms[1], 10) || 0,
+ bottom:parseInt(ms[2], 10) || 0,
+ left :parseInt(ms[3], 10) || 0
+ };
+ },
+
+
+ fieldTpl: (function() {
+ var t = new Ext.Template(
+ '<div class="x-form-item {itemCls}" tabIndex="-1">',
+ '<label for="{id}" style="{labelStyle}" class="x-form-item-label">{label}{labelSeparator}</label>',
+ '<div class="x-form-element" id="x-form-el-{id}" style="{elementStyle}">',
+ '</div><div class="{clearCls}"></div>',
+ '</div>'
+ );
+ t.disableFormats = true;
+ return t.compile();
+ })(),
+
+
+ destroy : function(){
+
+ if(this.resizeTask && this.resizeTask.cancel){
+ this.resizeTask.cancel();
+ }
+ if(this.container) {
+ this.container.un(this.container.resizeEvent, this.onResize, this);
+ }
+ if(!Ext.isEmpty(this.targetCls)){
+ var target = this.container.getLayoutTarget();
+ if(target){
+ target.removeClass(this.targetCls);
+ }
+ }
+ }
+});
+Ext.layout.AutoLayout = Ext.extend(Ext.layout.ContainerLayout, {
+ type: 'auto',
+
+ monitorResize: true,
+
+ onLayout : function(ct, target){
+ Ext.layout.AutoLayout.superclass.onLayout.call(this, ct, target);
+ var cs = this.getRenderedItems(ct), len = cs.length, i, c;
+ for(i = 0; i < len; i++){
+ c = cs[i];
+ if (c.doLayout){
+
+ c.doLayout(true);
+ }
+ }
+ }
+});
+
+Ext.Container.LAYOUTS['auto'] = Ext.layout.AutoLayout;
+
+Ext.layout.FitLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+ monitorResize:true,
+
+ type: 'fit',
+
+ getLayoutTargetSize : function() {
+ var target = this.container.getLayoutTarget();
+ if (!target) {
+ return {};
+ }
+
+ return target.getStyleSize();
+ },
+
+
+ onLayout : function(ct, target){
+ Ext.layout.FitLayout.superclass.onLayout.call(this, ct, target);
+ if(!ct.collapsed){
+ this.setItemSize(this.activeItem || ct.items.itemAt(0), this.getLayoutTargetSize());
+ }
+ },
+
+
+ setItemSize : function(item, size){
+ if(item && size.height > 0){
+ item.setSize(size);
+ }
+ }
+});
+Ext.Container.LAYOUTS['fit'] = Ext.layout.FitLayout;
+Ext.layout.CardLayout = Ext.extend(Ext.layout.FitLayout, {
+
+ deferredRender : false,
+
+
+ layoutOnCardChange : false,
+
+
+
+ renderHidden : true,
+
+ type: 'card',
+
+
+ setActiveItem : function(item){
+ var ai = this.activeItem,
+ ct = this.container;
+ item = ct.getComponent(item);
+
+
+ if(item && ai != item){
+
+
+ if(ai){
+ ai.hide();
+ if (ai.hidden !== true) {
+ return false;
+ }
+ ai.fireEvent('deactivate', ai);
+ }
+
+ var layout = item.doLayout && (this.layoutOnCardChange || !item.rendered);
+
+
+ this.activeItem = item;
+
+
+
+ delete item.deferLayout;
+
+
+ item.show();
+
+ this.layout();
+
+ if(layout){
+ item.doLayout();
+ }
+ item.fireEvent('activate', item);
+ }
+ },
+
+
+ renderAll : function(ct, target){
+ if(this.deferredRender){
+ this.renderItem(this.activeItem, undefined, target);
+ }else{
+ Ext.layout.CardLayout.superclass.renderAll.call(this, ct, target);
+ }
+ }
+});
+Ext.Container.LAYOUTS['card'] = Ext.layout.CardLayout;
+
+Ext.layout.AnchorLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+
+
+ monitorResize : true,
+
+ type : 'anchor',
+
+
+ defaultAnchor : '100%',
+
+ parseAnchorRE : /^(r|right|b|bottom)$/i,
+
+
+ getLayoutTargetSize : function() {
+ var target = this.container.getLayoutTarget(), ret = {};
+ if (target) {
+ ret = target.getViewSize();
+
+
+
+
+ if (Ext.isIE9m && Ext.isStrict && ret.width == 0){
+ ret = target.getStyleSize();
+ }
+ ret.width -= target.getPadding('lr');
+ ret.height -= target.getPadding('tb');
+ }
+ return ret;
+ },
+
+
+ onLayout : function(container, target) {
+ Ext.layout.AnchorLayout.superclass.onLayout.call(this, container, target);
+
+ var size = this.getLayoutTargetSize(),
+ containerWidth = size.width,
+ containerHeight = size.height,
+ overflow = target.getStyle('overflow'),
+ components = this.getRenderedItems(container),
+ len = components.length,
+ boxes = [],
+ box,
+ anchorWidth,
+ anchorHeight,
+ component,
+ anchorSpec,
+ calcWidth,
+ calcHeight,
+ anchorsArray,
+ totalHeight = 0,
+ i,
+ el;
+
+ if(containerWidth < 20 && containerHeight < 20){
+ return;
+ }
+
+
+ if(container.anchorSize) {
+ if(typeof container.anchorSize == 'number') {
+ anchorWidth = container.anchorSize;
+ } else {
+ anchorWidth = container.anchorSize.width;
+ anchorHeight = container.anchorSize.height;
+ }
+ } else {
+ anchorWidth = container.initialConfig.width;
+ anchorHeight = container.initialConfig.height;
+ }
+
+ for(i = 0; i < len; i++) {
+ component = components[i];
+ el = component.getPositionEl();
+
+
+ if (!component.anchor && component.items && !Ext.isNumber(component.width) && !(Ext.isIE6 && Ext.isStrict)){
+ component.anchor = this.defaultAnchor;
+ }
+
+ if(component.anchor) {
+ anchorSpec = component.anchorSpec;
+
+ if(!anchorSpec){
+ anchorsArray = component.anchor.split(' ');
+ component.anchorSpec = anchorSpec = {
+ right: this.parseAnchor(anchorsArray[0], component.initialConfig.width, anchorWidth),
+ bottom: this.parseAnchor(anchorsArray[1], component.initialConfig.height, anchorHeight)
+ };
+ }
+ calcWidth = anchorSpec.right ? this.adjustWidthAnchor(anchorSpec.right(containerWidth) - el.getMargins('lr'), component) : undefined;
+ calcHeight = anchorSpec.bottom ? this.adjustHeightAnchor(anchorSpec.bottom(containerHeight) - el.getMargins('tb'), component) : undefined;
+
+ if(calcWidth || calcHeight) {
+ boxes.push({
+ component: component,
+ width: calcWidth || undefined,
+ height: calcHeight || undefined
+ });
+ }
+ }
+ }
+ for (i = 0, len = boxes.length; i < len; i++) {
+ box = boxes[i];
+ box.component.setSize(box.width, box.height);
+ }
+
+ if (overflow && overflow != 'hidden' && !this.adjustmentPass) {
+ var newTargetSize = this.getLayoutTargetSize();
+ if (newTargetSize.width != size.width || newTargetSize.height != size.height){
+ this.adjustmentPass = true;
+ this.onLayout(container, target);
+ }
+ }
+
+ delete this.adjustmentPass;
+ },
+
+
+ parseAnchor : function(a, start, cstart) {
+ if (a && a != 'none') {
+ var last;
+
+ if (this.parseAnchorRE.test(a)) {
+ var diff = cstart - start;
+ return function(v){
+ if(v !== last){
+ last = v;
+ return v - diff;
+ }
+ };
+
+ } else if(a.indexOf('%') != -1) {
+ var ratio = parseFloat(a.replace('%', ''))*.01;
+ return function(v){
+ if(v !== last){
+ last = v;
+ return Math.floor(v*ratio);
+ }
+ };
+
+ } else {
+ a = parseInt(a, 10);
+ if (!isNaN(a)) {
+ return function(v) {
+ if (v !== last) {
+ last = v;
+ return v + a;
+ }
+ };
+ }
+ }
+ }
+ return false;
+ },
+
+
+ adjustWidthAnchor : function(value, comp){
+ return value;
+ },
+
+
+ adjustHeightAnchor : function(value, comp){
+ return value;
+ }
+
+
+});
+Ext.Container.LAYOUTS['anchor'] = Ext.layout.AnchorLayout;
+
+Ext.layout.ColumnLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+ monitorResize:true,
+
+ type: 'column',
+
+ extraCls: 'x-column',
+
+ scrollOffset : 0,
+
+
+
+ targetCls: 'x-column-layout-ct',
+
+ isValidParent : function(c, target){
+ return this.innerCt && c.getPositionEl().dom.parentNode == this.innerCt.dom;
+ },
+
+ getLayoutTargetSize : function() {
+ var target = this.container.getLayoutTarget(), ret;
+ if (target) {
+ ret = target.getViewSize();
+
+
+
+
+ if (Ext.isIE9m && Ext.isStrict && ret.width == 0){
+ ret = target.getStyleSize();
+ }
+
+ ret.width -= target.getPadding('lr');
+ ret.height -= target.getPadding('tb');
+ }
+ return ret;
+ },
+
+ renderAll : function(ct, target) {
+ if(!this.innerCt){
+
+
+ this.innerCt = target.createChild({cls:'x-column-inner'});
+ this.innerCt.createChild({cls:'x-clear'});
+ }
+ Ext.layout.ColumnLayout.superclass.renderAll.call(this, ct, this.innerCt);
+ },
+
+
+ onLayout : function(ct, target){
+ var cs = ct.items.items,
+ len = cs.length,
+ c,
+ i,
+ m,
+ margins = [];
+
+ this.renderAll(ct, target);
+
+ var size = this.getLayoutTargetSize();
+
+ if (Ext.isIE9m && (size.width < 1 && size.height < 1)) {
+ return;
+ }
+
+ var w = size.width - this.scrollOffset,
+ h = size.height,
+ pw = w;
+
+ this.innerCt.setWidth(w);
+
+
+
+
+ for(i = 0; i < len; i++){
+ c = cs[i];
+ m = c.getPositionEl().getMargins('lr');
+ margins[i] = m;
+ if(!c.columnWidth){
+ pw -= (c.getWidth() + m);
+ }
+ }
+
+ pw = pw < 0 ? 0 : pw;
+
+ for(i = 0; i < len; i++){
+ c = cs[i];
+ m = margins[i];
+ if(c.columnWidth){
+ c.setSize(Math.floor(c.columnWidth * pw) - m);
+ }
+ }
+
+
+
+ if (Ext.isIE9m) {
+ if (i = target.getStyle('overflow') && i != 'hidden' && !this.adjustmentPass) {
+ var ts = this.getLayoutTargetSize();
+ if (ts.width != size.width){
+ this.adjustmentPass = true;
+ this.onLayout(ct, target);
+ }
+ }
+ }
+ delete this.adjustmentPass;
+ }
+
+
+});
+
+Ext.Container.LAYOUTS['column'] = Ext.layout.ColumnLayout;
+
+Ext.layout.BorderLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+ monitorResize:true,
+
+ rendered : false,
+
+ type: 'border',
+
+ targetCls: 'x-border-layout-ct',
+
+ getLayoutTargetSize : function() {
+ var target = this.container.getLayoutTarget();
+ return target ? target.getViewSize() : {};
+ },
+
+
+ onLayout : function(ct, target){
+ var collapsed, i, c, pos, items = ct.items.items, len = items.length;
+ if(!this.rendered){
+ collapsed = [];
+ for(i = 0; i < len; i++) {
+ c = items[i];
+ pos = c.region;
+ if(c.collapsed){
+ collapsed.push(c);
+ }
+ c.collapsed = false;
+ if(!c.rendered){
+ c.render(target, i);
+ c.getPositionEl().addClass('x-border-panel');
+ }
+ this[pos] = pos != 'center' && c.split ?
+ new Ext.layout.BorderLayout.SplitRegion(this, c.initialConfig, pos) :
+ new Ext.layout.BorderLayout.Region(this, c.initialConfig, pos);
+ this[pos].render(target, c);
+ }
+ this.rendered = true;
+ }
+
+ var size = this.getLayoutTargetSize();
+ if(size.width < 20 || size.height < 20){
+ if(collapsed){
+ this.restoreCollapsed = collapsed;
+ }
+ return;
+ }else if(this.restoreCollapsed){
+ collapsed = this.restoreCollapsed;
+ delete this.restoreCollapsed;
+ }
+
+ var w = size.width, h = size.height,
+ centerW = w, centerH = h, centerY = 0, centerX = 0,
+ n = this.north, s = this.south, west = this.west, e = this.east, c = this.center,
+ b, m, totalWidth, totalHeight;
+ if(!c && Ext.layout.BorderLayout.WARN !== false){
+ throw 'No center region defined in BorderLayout ' + ct.id;
+ }
+
+ if(n && n.isVisible()){
+ b = n.getSize();
+ m = n.getMargins();
+ b.width = w - (m.left+m.right);
+ b.x = m.left;
+ b.y = m.top;
+ centerY = b.height + b.y + m.bottom;
+ centerH -= centerY;
+ n.applyLayout(b);
+ }
+ if(s && s.isVisible()){
+ b = s.getSize();
+ m = s.getMargins();
+ b.width = w - (m.left+m.right);
+ b.x = m.left;
+ totalHeight = (b.height + m.top + m.bottom);
+ b.y = h - totalHeight + m.top;
+ centerH -= totalHeight;
+ s.applyLayout(b);
+ }
+ if(west && west.isVisible()){
+ b = west.getSize();
+ m = west.getMargins();
+ b.height = centerH - (m.top+m.bottom);
+ b.x = m.left;
+ b.y = centerY + m.top;
+ totalWidth = (b.width + m.left + m.right);
+ centerX += totalWidth;
+ centerW -= totalWidth;
+ west.applyLayout(b);
+ }
+ if(e && e.isVisible()){
+ b = e.getSize();
+ m = e.getMargins();
+ b.height = centerH - (m.top+m.bottom);
+ totalWidth = (b.width + m.left + m.right);
+ b.x = w - totalWidth + m.left;
+ b.y = centerY + m.top;
+ centerW -= totalWidth;
+ e.applyLayout(b);
+ }
+ if(c){
+ m = c.getMargins();
+ var centerBox = {
+ x: centerX + m.left,
+ y: centerY + m.top,
+ width: centerW - (m.left+m.right),
+ height: centerH - (m.top+m.bottom)
+ };
+ c.applyLayout(centerBox);
+ }
+ if(collapsed){
+ for(i = 0, len = collapsed.length; i < len; i++){
+ collapsed[i].collapse(false);
+ }
+ }
+ if(Ext.isIE9m && Ext.isStrict){
+ target.repaint();
+ }
+
+ if (i = target.getStyle('overflow') && i != 'hidden' && !this.adjustmentPass) {
+ var ts = this.getLayoutTargetSize();
+ if (ts.width != size.width || ts.height != size.height){
+ this.adjustmentPass = true;
+ this.onLayout(ct, target);
+ }
+ }
+ delete this.adjustmentPass;
+ },
+
+ destroy: function() {
+ var r = ['north', 'south', 'east', 'west'], i, region;
+ for (i = 0; i < r.length; i++) {
+ region = this[r[i]];
+ if(region){
+ if(region.destroy){
+ region.destroy();
+ }else if (region.split){
+ region.split.destroy(true);
+ }
+ }
+ }
+ Ext.layout.BorderLayout.superclass.destroy.call(this);
+ }
+
+
+});
+
+
+Ext.layout.BorderLayout.Region = function(layout, config, pos){
+ Ext.apply(this, config);
+ this.layout = layout;
+ this.position = pos;
+ this.state = {};
+ if(typeof this.margins == 'string'){
+ this.margins = this.layout.parseMargins(this.margins);
+ }
+ this.margins = Ext.applyIf(this.margins || {}, this.defaultMargins);
+ if(this.collapsible){
+ if(typeof this.cmargins == 'string'){
+ this.cmargins = this.layout.parseMargins(this.cmargins);
+ }
+ if(this.collapseMode == 'mini' && !this.cmargins){
+ this.cmargins = {left:0,top:0,right:0,bottom:0};
+ }else{
+ this.cmargins = Ext.applyIf(this.cmargins || {},
+ pos == 'north' || pos == 'south' ? this.defaultNSCMargins : this.defaultEWCMargins);
+ }
+ }
+};
+
+Ext.layout.BorderLayout.Region.prototype = {
+
+
+
+
+
+
+ collapsible : false,
+
+ split:false,
+
+ floatable: true,
+
+ minWidth:50,
+
+ minHeight:50,
+
+
+ defaultMargins : {left:0,top:0,right:0,bottom:0},
+
+ defaultNSCMargins : {left:5,top:5,right:5,bottom:5},
+
+ defaultEWCMargins : {left:5,top:0,right:5,bottom:0},
+ floatingZIndex: 100,
+
+
+ isCollapsed : false,
+
+
+
+
+
+
+ render : function(ct, p){
+ this.panel = p;
+ p.el.enableDisplayMode();
+ this.targetEl = ct;
+ this.el = p.el;
+
+ var gs = p.getState, ps = this.position;
+ p.getState = function(){
+ return Ext.apply(gs.call(p) || {}, this.state);
+ }.createDelegate(this);
+
+ if(ps != 'center'){
+ p.allowQueuedExpand = false;
+ p.on({
+ beforecollapse: this.beforeCollapse,
+ collapse: this.onCollapse,
+ beforeexpand: this.beforeExpand,
+ expand: this.onExpand,
+ hide: this.onHide,
+ show: this.onShow,
+ scope: this
+ });
+ if(this.collapsible || this.floatable){
+ p.collapseEl = 'el';
+ p.slideAnchor = this.getSlideAnchor();
+ }
+ if(p.tools && p.tools.toggle){
+ p.tools.toggle.addClass('x-tool-collapse-'+ps);
+ p.tools.toggle.addClassOnOver('x-tool-collapse-'+ps+'-over');
+ }
+ }
+ },
+
+
+ getCollapsedEl : function(){
+ if(!this.collapsedEl){
+ if(!this.toolTemplate){
+ var tt = new Ext.Template(
+ '<div class="x-tool x-tool-{id}">&#160;</div>'
+ );
+ tt.disableFormats = true;
+ tt.compile();
+ Ext.layout.BorderLayout.Region.prototype.toolTemplate = tt;
+ }
+ this.collapsedEl = this.targetEl.createChild({
+ cls: "x-layout-collapsed x-layout-collapsed-"+this.position,
+ id: this.panel.id + '-xcollapsed'
+ });
+ this.collapsedEl.enableDisplayMode('block');
+
+ if(this.collapseMode == 'mini'){
+ this.collapsedEl.addClass('x-layout-cmini-'+this.position);
+ this.miniCollapsedEl = this.collapsedEl.createChild({
+ cls: "x-layout-mini x-layout-mini-"+this.position, html: "&#160;"
+ });
+ this.miniCollapsedEl.addClassOnOver('x-layout-mini-over');
+ this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
+ this.collapsedEl.on('click', this.onExpandClick, this, {stopEvent:true});
+ }else {
+ if(this.collapsible !== false && !this.hideCollapseTool) {
+ var t = this.expandToolEl = this.toolTemplate.append(
+ this.collapsedEl.dom,
+ {id:'expand-'+this.position}, true);
+ t.addClassOnOver('x-tool-expand-'+this.position+'-over');
+ t.on('click', this.onExpandClick, this, {stopEvent:true});
+ }
+ if(this.floatable !== false || this.titleCollapse){
+ this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
+ this.collapsedEl.on("click", this[this.floatable ? 'collapseClick' : 'onExpandClick'], this);
+ }
+ }
+ }
+ return this.collapsedEl;
+ },
+
+
+ onExpandClick : function(e){
+ if(this.isSlid){
+ this.panel.expand(false);
+ }else{
+ this.panel.expand();
+ }
+ },
+
+
+ onCollapseClick : function(e){
+ this.panel.collapse();
+ },
+
+
+ beforeCollapse : function(p, animate){
+ this.lastAnim = animate;
+ if(this.splitEl){
+ this.splitEl.hide();
+ }
+ this.getCollapsedEl().show();
+ var el = this.panel.getEl();
+ this.originalZIndex = el.getStyle('z-index');
+ el.setStyle('z-index', 100);
+ this.isCollapsed = true;
+ this.layout.layout();
+ },
+
+
+ onCollapse : function(animate){
+ this.panel.el.setStyle('z-index', 1);
+ if(this.lastAnim === false || this.panel.animCollapse === false){
+ this.getCollapsedEl().dom.style.visibility = 'visible';
+ }else{
+ this.getCollapsedEl().slideIn(this.panel.slideAnchor, {duration:.2});
+ }
+ this.state.collapsed = true;
+ this.panel.saveState();
+ },
+
+
+ beforeExpand : function(animate){
+ if(this.isSlid){
+ this.afterSlideIn();
+ }
+ var c = this.getCollapsedEl();
+ this.el.show();
+ if(this.position == 'east' || this.position == 'west'){
+ this.panel.setSize(undefined, c.getHeight());
+ }else{
+ this.panel.setSize(c.getWidth(), undefined);
+ }
+ c.hide();
+ c.dom.style.visibility = 'hidden';
+ this.panel.el.setStyle('z-index', this.floatingZIndex);
+ },
+
+
+ onExpand : function(){
+ this.isCollapsed = false;
+ if(this.splitEl){
+ this.splitEl.show();
+ }
+ this.layout.layout();
+ this.panel.el.setStyle('z-index', this.originalZIndex);
+ this.state.collapsed = false;
+ this.panel.saveState();
+ },
+
+
+ collapseClick : function(e){
+ if(this.isSlid){
+ e.stopPropagation();
+ this.slideIn();
+ }else{
+ e.stopPropagation();
+ this.slideOut();
+ }
+ },
+
+
+ onHide : function(){
+ if(this.isCollapsed){
+ this.getCollapsedEl().hide();
+ }else if(this.splitEl){
+ this.splitEl.hide();
+ }
+ },
+
+
+ onShow : function(){
+ if(this.isCollapsed){
+ this.getCollapsedEl().show();
+ }else if(this.splitEl){
+ this.splitEl.show();
+ }
+ },
+
+
+ isVisible : function(){
+ return !this.panel.hidden;
+ },
+
+
+ getMargins : function(){
+ return this.isCollapsed && this.cmargins ? this.cmargins : this.margins;
+ },
+
+
+ getSize : function(){
+ return this.isCollapsed ? this.getCollapsedEl().getSize() : this.panel.getSize();
+ },
+
+
+ setPanel : function(panel){
+ this.panel = panel;
+ },
+
+
+ getMinWidth: function(){
+ return this.minWidth;
+ },
+
+
+ getMinHeight: function(){
+ return this.minHeight;
+ },
+
+
+ applyLayoutCollapsed : function(box){
+ var ce = this.getCollapsedEl();
+ ce.setLeftTop(box.x, box.y);
+ ce.setSize(box.width, box.height);
+ },
+
+
+ applyLayout : function(box){
+ if(this.isCollapsed){
+ this.applyLayoutCollapsed(box);
+ }else{
+ this.panel.setPosition(box.x, box.y);
+ this.panel.setSize(box.width, box.height);
+ }
+ },
+
+
+ beforeSlide: function(){
+ this.panel.beforeEffect();
+ },
+
+
+ afterSlide : function(){
+ this.panel.afterEffect();
+ },
+
+
+ initAutoHide : function(){
+ if(this.autoHide !== false){
+ if(!this.autoHideHd){
+ this.autoHideSlideTask = new Ext.util.DelayedTask(this.slideIn, this);
+ this.autoHideHd = {
+ "mouseout": function(e){
+ if(!e.within(this.el, true)){
+ this.autoHideSlideTask.delay(500);
+ }
+ },
+ "mouseover" : function(e){
+ this.autoHideSlideTask.cancel();
+ },
+ scope : this
+ };
+ }
+ this.el.on(this.autoHideHd);
+ this.collapsedEl.on(this.autoHideHd);
+ }
+ },
+
+
+ clearAutoHide : function(){
+ if(this.autoHide !== false){
+ this.el.un("mouseout", this.autoHideHd.mouseout);
+ this.el.un("mouseover", this.autoHideHd.mouseover);
+ this.collapsedEl.un("mouseout", this.autoHideHd.mouseout);
+ this.collapsedEl.un("mouseover", this.autoHideHd.mouseover);
+ }
+ },
+
+
+ clearMonitor : function(){
+ Ext.getDoc().un("click", this.slideInIf, this);
+ },
+
+
+ slideOut : function(){
+ if(this.isSlid || this.el.hasActiveFx()){
+ return;
+ }
+ this.isSlid = true;
+ var ts = this.panel.tools, dh, pc;
+ if(ts && ts.toggle){
+ ts.toggle.hide();
+ }
+ this.el.show();
+
+
+ pc = this.panel.collapsed;
+ this.panel.collapsed = false;
+
+ if(this.position == 'east' || this.position == 'west'){
+
+ dh = this.panel.deferHeight;
+ this.panel.deferHeight = false;
+
+ this.panel.setSize(undefined, this.collapsedEl.getHeight());
+
+
+ this.panel.deferHeight = dh;
+ }else{
+ this.panel.setSize(this.collapsedEl.getWidth(), undefined);
+ }
+
+
+ this.panel.collapsed = pc;
+
+ this.restoreLT = [this.el.dom.style.left, this.el.dom.style.top];
+ this.el.alignTo(this.collapsedEl, this.getCollapseAnchor());
+ this.el.setStyle("z-index", this.floatingZIndex+2);
+ this.panel.el.replaceClass('x-panel-collapsed', 'x-panel-floating');
+ if(this.animFloat !== false){
+ this.beforeSlide();
+ this.el.slideIn(this.getSlideAnchor(), {
+ callback: function(){
+ this.afterSlide();
+ this.initAutoHide();
+ Ext.getDoc().on("click", this.slideInIf, this);
+ },
+ scope: this,
+ block: true
+ });
+ }else{
+ this.initAutoHide();
+ Ext.getDoc().on("click", this.slideInIf, this);
+ }
+ },
+
+
+ afterSlideIn : function(){
+ this.clearAutoHide();
+ this.isSlid = false;
+ this.clearMonitor();
+ this.el.setStyle("z-index", "");
+ this.panel.el.replaceClass('x-panel-floating', 'x-panel-collapsed');
+ this.el.dom.style.left = this.restoreLT[0];
+ this.el.dom.style.top = this.restoreLT[1];
+
+ var ts = this.panel.tools;
+ if(ts && ts.toggle){
+ ts.toggle.show();
+ }
+ },
+
+
+ slideIn : function(cb){
+ if(!this.isSlid || this.el.hasActiveFx()){
+ Ext.callback(cb);
+ return;
+ }
+ this.isSlid = false;
+ if(this.animFloat !== false){
+ this.beforeSlide();
+ this.el.slideOut(this.getSlideAnchor(), {
+ callback: function(){
+ this.el.hide();
+ this.afterSlide();
+ this.afterSlideIn();
+ Ext.callback(cb);
+ },
+ scope: this,
+ block: true
+ });
+ }else{
+ this.el.hide();
+ this.afterSlideIn();
+ }
+ },
+
+
+ slideInIf : function(e){
+ if(!e.within(this.el)){
+ this.slideIn();
+ }
+ },
+
+
+ anchors : {
+ "west" : "left",
+ "east" : "right",
+ "north" : "top",
+ "south" : "bottom"
+ },
+
+
+ sanchors : {
+ "west" : "l",
+ "east" : "r",
+ "north" : "t",
+ "south" : "b"
+ },
+
+
+ canchors : {
+ "west" : "tl-tr",
+ "east" : "tr-tl",
+ "north" : "tl-bl",
+ "south" : "bl-tl"
+ },
+
+
+ getAnchor : function(){
+ return this.anchors[this.position];
+ },
+
+
+ getCollapseAnchor : function(){
+ return this.canchors[this.position];
+ },
+
+
+ getSlideAnchor : function(){
+ return this.sanchors[this.position];
+ },
+
+
+ getAlignAdj : function(){
+ var cm = this.cmargins;
+ switch(this.position){
+ case "west":
+ return [0, 0];
+ break;
+ case "east":
+ return [0, 0];
+ break;
+ case "north":
+ return [0, 0];
+ break;
+ case "south":
+ return [0, 0];
+ break;
+ }
+ },
+
+
+ getExpandAdj : function(){
+ var c = this.collapsedEl, cm = this.cmargins;
+ switch(this.position){
+ case "west":
+ return [-(cm.right+c.getWidth()+cm.left), 0];
+ break;
+ case "east":
+ return [cm.right+c.getWidth()+cm.left, 0];
+ break;
+ case "north":
+ return [0, -(cm.top+cm.bottom+c.getHeight())];
+ break;
+ case "south":
+ return [0, cm.top+cm.bottom+c.getHeight()];
+ break;
+ }
+ },
+
+ destroy : function(){
+ if (this.autoHideSlideTask && this.autoHideSlideTask.cancel){
+ this.autoHideSlideTask.cancel();
+ }
+ Ext.destroyMembers(this, 'miniCollapsedEl', 'collapsedEl', 'expandToolEl');
+ }
+};
+
+
+Ext.layout.BorderLayout.SplitRegion = function(layout, config, pos){
+ Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this, layout, config, pos);
+
+ this.applyLayout = this.applyFns[pos];
+};
+
+Ext.extend(Ext.layout.BorderLayout.SplitRegion, Ext.layout.BorderLayout.Region, {
+
+
+ splitTip : "Drag to resize.",
+
+ collapsibleSplitTip : "Drag to resize. Double click to hide.",
+
+ useSplitTips : false,
+
+
+ splitSettings : {
+ north : {
+ orientation: Ext.SplitBar.VERTICAL,
+ placement: Ext.SplitBar.TOP,
+ maxFn : 'getVMaxSize',
+ minProp: 'minHeight',
+ maxProp: 'maxHeight'
+ },
+ south : {
+ orientation: Ext.SplitBar.VERTICAL,
+ placement: Ext.SplitBar.BOTTOM,
+ maxFn : 'getVMaxSize',
+ minProp: 'minHeight',
+ maxProp: 'maxHeight'
+ },
+ east : {
+ orientation: Ext.SplitBar.HORIZONTAL,
+ placement: Ext.SplitBar.RIGHT,
+ maxFn : 'getHMaxSize',
+ minProp: 'minWidth',
+ maxProp: 'maxWidth'
+ },
+ west : {
+ orientation: Ext.SplitBar.HORIZONTAL,
+ placement: Ext.SplitBar.LEFT,
+ maxFn : 'getHMaxSize',
+ minProp: 'minWidth',
+ maxProp: 'maxWidth'
+ }
+ },
+
+
+ applyFns : {
+ west : function(box){
+ if(this.isCollapsed){
+ return this.applyLayoutCollapsed(box);
+ }
+ var sd = this.splitEl.dom, s = sd.style;
+ this.panel.setPosition(box.x, box.y);
+ var sw = sd.offsetWidth;
+ s.left = (box.x+box.width-sw)+'px';
+ s.top = (box.y)+'px';
+ s.height = Math.max(0, box.height)+'px';
+ this.panel.setSize(box.width-sw, box.height);
+ },
+ east : function(box){
+ if(this.isCollapsed){
+ return this.applyLayoutCollapsed(box);
+ }
+ var sd = this.splitEl.dom, s = sd.style;
+ var sw = sd.offsetWidth;
+ this.panel.setPosition(box.x+sw, box.y);
+ s.left = (box.x)+'px';
+ s.top = (box.y)+'px';
+ s.height = Math.max(0, box.height)+'px';
+ this.panel.setSize(box.width-sw, box.height);
+ },
+ north : function(box){
+ if(this.isCollapsed){
+ return this.applyLayoutCollapsed(box);
+ }
+ var sd = this.splitEl.dom, s = sd.style;
+ var sh = sd.offsetHeight;
+ this.panel.setPosition(box.x, box.y);
+ s.left = (box.x)+'px';
+ s.top = (box.y+box.height-sh)+'px';
+ s.width = Math.max(0, box.width)+'px';
+ this.panel.setSize(box.width, box.height-sh);
+ },
+ south : function(box){
+ if(this.isCollapsed){
+ return this.applyLayoutCollapsed(box);
+ }
+ var sd = this.splitEl.dom, s = sd.style;
+ var sh = sd.offsetHeight;
+ this.panel.setPosition(box.x, box.y+sh);
+ s.left = (box.x)+'px';
+ s.top = (box.y)+'px';
+ s.width = Math.max(0, box.width)+'px';
+ this.panel.setSize(box.width, box.height-sh);
+ }
+ },
+
+
+ render : function(ct, p){
+ Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this, ct, p);
+
+ var ps = this.position;
+
+ this.splitEl = ct.createChild({
+ cls: "x-layout-split x-layout-split-"+ps, html: "&#160;",
+ id: this.panel.id + '-xsplit'
+ });
+
+ if(this.collapseMode == 'mini'){
+ this.miniSplitEl = this.splitEl.createChild({
+ cls: "x-layout-mini x-layout-mini-"+ps, html: "&#160;"
+ });
+ this.miniSplitEl.addClassOnOver('x-layout-mini-over');
+ this.miniSplitEl.on('click', this.onCollapseClick, this, {stopEvent:true});
+ }
+
+ var s = this.splitSettings[ps];
+
+ this.split = new Ext.SplitBar(this.splitEl.dom, p.el, s.orientation);
+ this.split.tickSize = this.tickSize;
+ this.split.placement = s.placement;
+ this.split.getMaximumSize = this[s.maxFn].createDelegate(this);
+ this.split.minSize = this.minSize || this[s.minProp];
+ this.split.on("beforeapply", this.onSplitMove, this);
+ this.split.useShim = this.useShim === true;
+ this.maxSize = this.maxSize || this[s.maxProp];
+
+ if(p.hidden){
+ this.splitEl.hide();
+ }
+
+ if(this.useSplitTips){
+ this.splitEl.dom.title = this.collapsible ? this.collapsibleSplitTip : this.splitTip;
+ }
+ if(this.collapsible){
+ this.splitEl.on("dblclick", this.onCollapseClick, this);
+ }
+ },
+
+
+ getSize : function(){
+ if(this.isCollapsed){
+ return this.collapsedEl.getSize();
+ }
+ var s = this.panel.getSize();
+ if(this.position == 'north' || this.position == 'south'){
+ s.height += this.splitEl.dom.offsetHeight;
+ }else{
+ s.width += this.splitEl.dom.offsetWidth;
+ }
+ return s;
+ },
+
+
+ getHMaxSize : function(){
+ var cmax = this.maxSize || 10000;
+ var center = this.layout.center;
+ return Math.min(cmax, (this.el.getWidth()+center.el.getWidth())-center.getMinWidth());
+ },
+
+
+ getVMaxSize : function(){
+ var cmax = this.maxSize || 10000;
+ var center = this.layout.center;
+ return Math.min(cmax, (this.el.getHeight()+center.el.getHeight())-center.getMinHeight());
+ },
+
+
+ onSplitMove : function(split, newSize){
+ var s = this.panel.getSize();
+ this.lastSplitSize = newSize;
+ if(this.position == 'north' || this.position == 'south'){
+ this.panel.setSize(s.width, newSize);
+ this.state.height = newSize;
+ }else{
+ this.panel.setSize(newSize, s.height);
+ this.state.width = newSize;
+ }
+ this.layout.layout();
+ this.panel.saveState();
+ return false;
+ },
+
+
+ getSplitBar : function(){
+ return this.split;
+ },
+
+
+ destroy : function() {
+ Ext.destroy(this.miniSplitEl, this.split, this.splitEl);
+ Ext.layout.BorderLayout.SplitRegion.superclass.destroy.call(this);
+ }
+});
+
+Ext.Container.LAYOUTS['border'] = Ext.layout.BorderLayout;
+
+Ext.layout.FormLayout = Ext.extend(Ext.layout.AnchorLayout, {
+
+
+ labelSeparator : ':',
+
+
+
+
+ trackLabels: true,
+
+ type: 'form',
+
+ onRemove: function(c){
+ Ext.layout.FormLayout.superclass.onRemove.call(this, c);
+ if(this.trackLabels){
+ c.un('show', this.onFieldShow, this);
+ c.un('hide', this.onFieldHide, this);
+ }
+
+ var el = c.getPositionEl(),
+ ct = c.getItemCt && c.getItemCt();
+ if (c.rendered && ct) {
+ if (el && el.dom) {
+ el.insertAfter(ct);
+ }
+ Ext.destroy(ct);
+ Ext.destroyMembers(c, 'label', 'itemCt');
+ if (c.customItemCt) {
+ Ext.destroyMembers(c, 'getItemCt', 'customItemCt');
+ }
+ }
+ },
+
+
+ setContainer : function(ct){
+ Ext.layout.FormLayout.superclass.setContainer.call(this, ct);
+ ct.labelAlign = ct.labelAlign || this.labelAlign;
+ if (ct.labelAlign) {
+ ct.addClass('x-form-label-' + ct.labelAlign);
+ }
+
+ if (ct.hideLabels || this.hideLabels) {
+ Ext.apply(this, {
+ labelStyle: 'display:none',
+ elementStyle: 'padding-left:0;',
+ labelAdjust: 0
+ });
+ } else {
+ this.labelSeparator = Ext.isDefined(ct.labelSeparator) ? ct.labelSeparator : this.labelSeparator;
+ ct.labelWidth = ct.labelWidth || this.labelWidth || 100;
+ if(Ext.isNumber(ct.labelWidth)){
+ var pad = ct.labelPad || this.labelPad;
+ pad = Ext.isNumber(pad) ? pad : 5;
+ Ext.apply(this, {
+ labelAdjust: ct.labelWidth + pad,
+ labelStyle: 'width:' + ct.labelWidth + 'px;',
+ elementStyle: 'padding-left:' + (ct.labelWidth + pad) + 'px'
+ });
+ }
+ if(ct.labelAlign == 'top'){
+ Ext.apply(this, {
+ labelStyle: 'width:auto;',
+ labelAdjust: 0,
+ elementStyle: 'padding-left:0;'
+ });
+ }
+ }
+ },
+
+
+ isHide: function(c){
+ return c.hideLabel || this.container.hideLabels;
+ },
+
+ onFieldShow: function(c){
+ c.getItemCt().removeClass('x-hide-' + c.hideMode);
+
+
+ if (c.isComposite) {
+ c.doLayout();
+ }
+ },
+
+ onFieldHide: function(c){
+ c.getItemCt().addClass('x-hide-' + c.hideMode);
+ },
+
+
+ getLabelStyle: function(s){
+ var ls = '', items = [this.labelStyle, s];
+ for (var i = 0, len = items.length; i < len; ++i){
+ if (items[i]){
+ ls += items[i];
+ if (ls.substr(-1, 1) != ';'){
+ ls += ';';
+ }
+ }
+ }
+ return ls;
+ },
+
+
+
+
+ renderItem : function(c, position, target){
+ if(c && (c.isFormField || c.fieldLabel) && c.inputType != 'hidden'){
+ var args = this.getTemplateArgs(c);
+ if(Ext.isNumber(position)){
+ position = target.dom.childNodes[position] || null;
+ }
+ if(position){
+ c.itemCt = this.fieldTpl.insertBefore(position, args, true);
+ }else{
+ c.itemCt = this.fieldTpl.append(target, args, true);
+ }
+ if(!c.getItemCt){
+
+
+ Ext.apply(c, {
+ getItemCt: function(){
+ return c.itemCt;
+ },
+ customItemCt: true
+ });
+ }
+ c.label = c.getItemCt().child('label.x-form-item-label');
+ if(!c.rendered){
+ c.render('x-form-el-' + c.id);
+ }else if(!this.isValidParent(c, target)){
+ Ext.fly('x-form-el-' + c.id).appendChild(c.getPositionEl());
+ }
+ if(this.trackLabels){
+ if(c.hidden){
+ this.onFieldHide(c);
+ }
+ c.on({
+ scope: this,
+ show: this.onFieldShow,
+ hide: this.onFieldHide
+ });
+ }
+ this.configureItem(c);
+ }else {
+ Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments);
+ }
+ },
+
+
+ getTemplateArgs: function(field) {
+ var noLabelSep = !field.fieldLabel || field.hideLabel,
+ itemCls = (field.itemCls || this.container.itemCls || '') + (field.hideLabel ? ' x-hide-label' : '');
+
+
+ if (Ext.isIE9 && Ext.isIEQuirks && field instanceof Ext.form.TextField) {
+ itemCls += ' x-input-wrapper';
+ }
+
+ return {
+ id : field.id,
+ label : field.fieldLabel,
+ itemCls : itemCls,
+ clearCls : field.clearCls || 'x-form-clear-left',
+ labelStyle : this.getLabelStyle(field.labelStyle),
+ elementStyle : this.elementStyle || '',
+ labelSeparator: noLabelSep ? '' : (Ext.isDefined(field.labelSeparator) ? field.labelSeparator : this.labelSeparator)
+ };
+ },
+
+
+ adjustWidthAnchor: function(value, c){
+ if(c.label && !this.isHide(c) && (this.container.labelAlign != 'top')){
+ var adjust = Ext.isIE6 || Ext.isIEQuirks;
+ return value - this.labelAdjust + (adjust ? -3 : 0);
+ }
+ return value;
+ },
+
+ adjustHeightAnchor : function(value, c){
+ if(c.label && !this.isHide(c) && (this.container.labelAlign == 'top')){
+ return value - c.label.getHeight();
+ }
+ return value;
+ },
+
+
+ isValidParent : function(c, target){
+ return target && this.container.getEl().contains(c.getPositionEl());
+ }
+
+
+});
+
+Ext.Container.LAYOUTS['form'] = Ext.layout.FormLayout;
+
+Ext.layout.AccordionLayout = Ext.extend(Ext.layout.FitLayout, {
+
+ fill : true,
+
+ autoWidth : true,
+
+ titleCollapse : true,
+
+ hideCollapseTool : false,
+
+ collapseFirst : false,
+
+ animate : false,
+
+ sequence : false,
+
+ activeOnTop : false,
+
+ type: 'accordion',
+
+ renderItem : function(c){
+ if(this.animate === false){
+ c.animCollapse = false;
+ }
+ c.collapsible = true;
+ if(this.autoWidth){
+ c.autoWidth = true;
+ }
+ if(this.titleCollapse){
+ c.titleCollapse = true;
+ }
+ if(this.hideCollapseTool){
+ c.hideCollapseTool = true;
+ }
+ if(this.collapseFirst !== undefined){
+ c.collapseFirst = this.collapseFirst;
+ }
+ if(!this.activeItem && !c.collapsed){
+ this.setActiveItem(c, true);
+ }else if(this.activeItem && this.activeItem != c){
+ c.collapsed = true;
+ }
+ Ext.layout.AccordionLayout.superclass.renderItem.apply(this, arguments);
+ c.header.addClass('x-accordion-hd');
+ c.on('beforeexpand', this.beforeExpand, this);
+ },
+
+ onRemove: function(c){
+ Ext.layout.AccordionLayout.superclass.onRemove.call(this, c);
+ if(c.rendered){
+ c.header.removeClass('x-accordion-hd');
+ }
+ c.un('beforeexpand', this.beforeExpand, this);
+ },
+
+
+ beforeExpand : function(p, anim){
+ var ai = this.activeItem;
+ if(ai){
+ if(this.sequence){
+ delete this.activeItem;
+ if (!ai.collapsed){
+ ai.collapse({callback:function(){
+ p.expand(anim || true);
+ }, scope: this});
+ return false;
+ }
+ }else{
+ ai.collapse(this.animate);
+ }
+ }
+ this.setActive(p);
+ if(this.activeOnTop){
+ p.el.dom.parentNode.insertBefore(p.el.dom, p.el.dom.parentNode.firstChild);
+ }
+
+ this.layout();
+ },
+
+
+ setItemSize : function(item, size){
+ if(this.fill && item){
+ var hh = 0, i, ct = this.getRenderedItems(this.container), len = ct.length, p;
+
+ for (i = 0; i < len; i++) {
+ if((p = ct[i]) != item && !p.hidden){
+ hh += p.header.getHeight();
+ }
+ };
+
+ size.height -= hh;
+
+
+ item.setSize(size);
+ }
+ },
+
+
+ setActiveItem : function(item){
+ this.setActive(item, true);
+ },
+
+
+ setActive : function(item, expand){
+ var ai = this.activeItem;
+ item = this.container.getComponent(item);
+ if(ai != item){
+ if(item.rendered && item.collapsed && expand){
+ item.expand();
+ }else{
+ if(ai){
+ ai.fireEvent('deactivate', ai);
+ }
+ this.activeItem = item;
+ item.fireEvent('activate', item);
+ }
+ }
+ }
+});
+Ext.Container.LAYOUTS.accordion = Ext.layout.AccordionLayout;
+
+
+Ext.layout.Accordion = Ext.layout.AccordionLayout;
+Ext.layout.TableLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+
+
+ monitorResize:false,
+
+ type: 'table',
+
+ targetCls: 'x-table-layout-ct',
+
+
+ tableAttrs:null,
+
+
+ setContainer : function(ct){
+ Ext.layout.TableLayout.superclass.setContainer.call(this, ct);
+
+ this.currentRow = 0;
+ this.currentColumn = 0;
+ this.cells = [];
+ },
+
+
+ onLayout : function(ct, target){
+ var cs = ct.items.items, len = cs.length, c, i;
+
+ if(!this.table){
+ target.addClass('x-table-layout-ct');
+
+ this.table = target.createChild(
+ Ext.apply({tag:'table', cls:'x-table-layout', cellspacing: 0, cn: {tag: 'tbody'}}, this.tableAttrs), null, true);
+ }
+ this.renderAll(ct, target);
+ },
+
+
+ getRow : function(index){
+ var row = this.table.tBodies[0].childNodes[index];
+ if(!row){
+ row = document.createElement('tr');
+ this.table.tBodies[0].appendChild(row);
+ }
+ return row;
+ },
+
+
+ getNextCell : function(c){
+ var cell = this.getNextNonSpan(this.currentColumn, this.currentRow);
+ var curCol = this.currentColumn = cell[0], curRow = this.currentRow = cell[1];
+ for(var rowIndex = curRow; rowIndex < curRow + (c.rowspan || 1); rowIndex++){
+ if(!this.cells[rowIndex]){
+ this.cells[rowIndex] = [];
+ }
+ for(var colIndex = curCol; colIndex < curCol + (c.colspan || 1); colIndex++){
+ this.cells[rowIndex][colIndex] = true;
+ }
+ }
+ var td = document.createElement('td');
+ if(c.cellId){
+ td.id = c.cellId;
+ }
+ var cls = 'x-table-layout-cell';
+ if(c.cellCls){
+ cls += ' ' + c.cellCls;
+ }
+ td.className = cls;
+ if(c.colspan){
+ td.colSpan = c.colspan;
+ }
+ if(c.rowspan){
+ td.rowSpan = c.rowspan;
+ }
+ this.getRow(curRow).appendChild(td);
+ return td;
+ },
+
+
+ getNextNonSpan: function(colIndex, rowIndex){
+ var cols = this.columns;
+ while((cols && colIndex >= cols) || (this.cells[rowIndex] && this.cells[rowIndex][colIndex])) {
+ if(cols && colIndex >= cols){
+ rowIndex++;
+ colIndex = 0;
+ }else{
+ colIndex++;
+ }
+ }
+ return [colIndex, rowIndex];
+ },
+
+
+ renderItem : function(c, position, target){
+
+ if(!this.table){
+ this.table = target.createChild(
+ Ext.apply({tag:'table', cls:'x-table-layout', cellspacing: 0, cn: {tag: 'tbody'}}, this.tableAttrs), null, true);
+ }
+ if(c && !c.rendered){
+ c.render(this.getNextCell(c));
+ this.configureItem(c);
+ }else if(c && !this.isValidParent(c, target)){
+ var container = this.getNextCell(c);
+ container.insertBefore(c.getPositionEl().dom, null);
+ c.container = Ext.get(container);
+ this.configureItem(c);
+ }
+ },
+
+
+ isValidParent : function(c, target){
+ return c.getPositionEl().up('table', 5).dom.parentNode === (target.dom || target);
+ },
+
+ destroy: function(){
+ delete this.table;
+ Ext.layout.TableLayout.superclass.destroy.call(this);
+ }
+
+
+});
+
+Ext.Container.LAYOUTS['table'] = Ext.layout.TableLayout;
+Ext.layout.AbsoluteLayout = Ext.extend(Ext.layout.AnchorLayout, {
+
+ extraCls: 'x-abs-layout-item',
+
+ type: 'absolute',
+
+ onLayout : function(ct, target){
+ target.position();
+ this.paddingLeft = target.getPadding('l');
+ this.paddingTop = target.getPadding('t');
+ Ext.layout.AbsoluteLayout.superclass.onLayout.call(this, ct, target);
+ },
+
+
+ adjustWidthAnchor : function(value, comp){
+ return value ? value - comp.getPosition(true)[0] + this.paddingLeft : value;
+ },
+
+
+ adjustHeightAnchor : function(value, comp){
+ return value ? value - comp.getPosition(true)[1] + this.paddingTop : value;
+ }
+
+});
+Ext.Container.LAYOUTS['absolute'] = Ext.layout.AbsoluteLayout;
+
+Ext.layout.BoxLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+ defaultMargins : {left:0,top:0,right:0,bottom:0},
+
+ padding : '0',
+
+ pack : 'start',
+
+
+ monitorResize : true,
+ type: 'box',
+ scrollOffset : 0,
+ extraCls : 'x-box-item',
+ targetCls : 'x-box-layout-ct',
+ innerCls : 'x-box-inner',
+
+ constructor : function(config){
+ Ext.layout.BoxLayout.superclass.constructor.call(this, config);
+
+ if (Ext.isString(this.defaultMargins)) {
+ this.defaultMargins = this.parseMargins(this.defaultMargins);
+ }
+
+ var handler = this.overflowHandler;
+
+ if (typeof handler == 'string') {
+ handler = {
+ type: handler
+ };
+ }
+
+ var handlerType = 'none';
+ if (handler && handler.type != undefined) {
+ handlerType = handler.type;
+ }
+
+ var constructor = Ext.layout.boxOverflow[handlerType];
+ if (constructor[this.type]) {
+ constructor = constructor[this.type];
+ }
+
+ this.overflowHandler = new constructor(this, handler);
+ },
+
+
+ onLayout: function(container, target) {
+ Ext.layout.BoxLayout.superclass.onLayout.call(this, container, target);
+
+ var tSize = this.getLayoutTargetSize(),
+ items = this.getVisibleItems(container),
+ calcs = this.calculateChildBoxes(items, tSize),
+ boxes = calcs.boxes,
+ meta = calcs.meta;
+
+
+ if (tSize.width > 0) {
+ var handler = this.overflowHandler,
+ method = meta.tooNarrow ? 'handleOverflow' : 'clearOverflow';
+
+ var results = handler[method](calcs, tSize);
+
+ if (results) {
+ if (results.targetSize) {
+ tSize = results.targetSize;
+ }
+
+ if (results.recalculate) {
+ items = this.getVisibleItems(container);
+ calcs = this.calculateChildBoxes(items, tSize);
+ boxes = calcs.boxes;
+ }
+ }
+ }
+
+
+ this.layoutTargetLastSize = tSize;
+
+
+ this.childBoxCache = calcs;
+
+ this.updateInnerCtSize(tSize, calcs);
+ this.updateChildBoxes(boxes);
+
+
+ this.handleTargetOverflow(tSize, container, target);
+ },
+
+
+ updateChildBoxes: function(boxes) {
+ for (var i = 0, length = boxes.length; i < length; i++) {
+ var box = boxes[i],
+ comp = box.component;
+
+ if (box.dirtySize) {
+ comp.setSize(box.width, box.height);
+ }
+
+ if (isNaN(box.left) || isNaN(box.top)) {
+ continue;
+ }
+
+ comp.setPosition(box.left, box.top);
+ }
+ },
+
+
+ updateInnerCtSize: function(tSize, calcs) {
+ var align = this.align,
+ padding = this.padding,
+ width = tSize.width,
+ height = tSize.height;
+
+ if (this.type == 'hbox') {
+ var innerCtWidth = width,
+ innerCtHeight = calcs.meta.maxHeight + padding.top + padding.bottom;
+
+ if (align == 'stretch') {
+ innerCtHeight = height;
+ } else if (align == 'middle') {
+ innerCtHeight = Math.max(height, innerCtHeight);
+ }
+ } else {
+ var innerCtHeight = height,
+ innerCtWidth = calcs.meta.maxWidth + padding.left + padding.right;
+
+ if (align == 'stretch') {
+ innerCtWidth = width;
+ } else if (align == 'center') {
+ innerCtWidth = Math.max(width, innerCtWidth);
+ }
+ }
+
+ this.innerCt.setSize(innerCtWidth || undefined, innerCtHeight || undefined);
+ },
+
+
+ handleTargetOverflow: function(previousTargetSize, container, target) {
+ var overflow = target.getStyle('overflow');
+
+ if (overflow && overflow != 'hidden' &&!this.adjustmentPass) {
+ var newTargetSize = this.getLayoutTargetSize();
+ if (newTargetSize.width != previousTargetSize.width || newTargetSize.height != previousTargetSize.height){
+ this.adjustmentPass = true;
+ this.onLayout(container, target);
+ }
+ }
+
+ delete this.adjustmentPass;
+ },
+
+
+ isValidParent : function(c, target) {
+ return this.innerCt && c.getPositionEl().dom.parentNode == this.innerCt.dom;
+ },
+
+
+ getVisibleItems: function(ct) {
+ var ct = ct || this.container,
+ t = ct.getLayoutTarget(),
+ cti = ct.items.items,
+ len = cti.length,
+
+ i, c, items = [];
+
+ for (i = 0; i < len; i++) {
+ if((c = cti[i]).rendered && this.isValidParent(c, t) && c.hidden !== true && c.collapsed !== true && c.shouldLayout !== false){
+ items.push(c);
+ }
+ }
+
+ return items;
+ },
+
+
+ renderAll : function(ct, target) {
+ if (!this.innerCt) {
+
+ this.innerCt = target.createChild({cls:this.innerCls});
+ this.padding = this.parseMargins(this.padding);
+ }
+ Ext.layout.BoxLayout.superclass.renderAll.call(this, ct, this.innerCt);
+ },
+
+ getLayoutTargetSize : function() {
+ var target = this.container.getLayoutTarget(), ret;
+
+ if (target) {
+ ret = target.getViewSize();
+
+
+
+
+ if (Ext.isIE9m && Ext.isStrict && ret.width == 0){
+ ret = target.getStyleSize();
+ }
+
+ ret.width -= target.getPadding('lr');
+ ret.height -= target.getPadding('tb');
+ }
+
+ return ret;
+ },
+
+
+ renderItem : function(c) {
+ if(Ext.isString(c.margins)){
+ c.margins = this.parseMargins(c.margins);
+ }else if(!c.margins){
+ c.margins = this.defaultMargins;
+ }
+ Ext.layout.BoxLayout.superclass.renderItem.apply(this, arguments);
+ },
+
+
+ destroy: function() {
+ Ext.destroy(this.overflowHandler);
+
+ Ext.layout.BoxLayout.superclass.destroy.apply(this, arguments);
+ }
+});
+
+
+
+Ext.layout.boxOverflow.None = Ext.extend(Object, {
+ constructor: function(layout, config) {
+ this.layout = layout;
+
+ Ext.apply(this, config || {});
+ },
+
+ handleOverflow: Ext.emptyFn,
+
+ clearOverflow: Ext.emptyFn
+});
+
+
+Ext.layout.boxOverflow.none = Ext.layout.boxOverflow.None;
+
+Ext.layout.boxOverflow.Menu = Ext.extend(Ext.layout.boxOverflow.None, {
+
+ afterCls: 'x-strip-right',
+
+
+ noItemsMenuText : '<div class="x-toolbar-no-items">(None)</div>',
+
+ constructor: function(layout) {
+ Ext.layout.boxOverflow.Menu.superclass.constructor.apply(this, arguments);
+
+
+ this.menuItems = [];
+ },
+
+
+ createInnerElements: function() {
+ if (!this.afterCt) {
+ this.afterCt = this.layout.innerCt.insertSibling({cls: this.afterCls}, 'before');
+ }
+ },
+
+
+ clearOverflow: function(calculations, targetSize) {
+ var newWidth = targetSize.width + (this.afterCt ? this.afterCt.getWidth() : 0),
+ items = this.menuItems;
+
+ this.hideTrigger();
+
+ for (var index = 0, length = items.length; index < length; index++) {
+ items.pop().component.show();
+ }
+
+ return {
+ targetSize: {
+ height: targetSize.height,
+ width : newWidth
+ }
+ };
+ },
+
+
+ showTrigger: function() {
+ this.createMenu();
+ this.menuTrigger.show();
+ },
+
+
+ hideTrigger: function() {
+ if (this.menuTrigger != undefined) {
+ this.menuTrigger.hide();
+ }
+ },
+
+
+ beforeMenuShow: function(menu) {
+ var items = this.menuItems,
+ len = items.length,
+ item,
+ prev;
+
+ var needsSep = function(group, item){
+ return group.isXType('buttongroup') && !(item instanceof Ext.Toolbar.Separator);
+ };
+
+ this.clearMenu();
+ menu.removeAll();
+
+ for (var i = 0; i < len; i++) {
+ item = items[i].component;
+
+ if (prev && (needsSep(item, prev) || needsSep(prev, item))) {
+ menu.add('-');
+ }
+
+ this.addComponentToMenu(menu, item);
+ prev = item;
+ }
+
+
+ if (menu.items.length < 1) {
+ menu.add(this.noItemsMenuText);
+ }
+ },
+
+
+ createMenuConfig : function(component, hideOnClick){
+ var config = Ext.apply({}, component.initialConfig),
+ group = component.toggleGroup;
+
+ Ext.copyTo(config, component, [
+ 'iconCls', 'icon', 'itemId', 'disabled', 'handler', 'scope', 'menu'
+ ]);
+
+ Ext.apply(config, {
+ text : component.overflowText || component.text,
+ hideOnClick: hideOnClick
+ });
+
+ if (group || component.enableToggle) {
+ Ext.apply(config, {
+ group : group,
+ checked: component.pressed,
+ listeners: {
+ checkchange: function(item, checked){
+ component.toggle(checked);
+ }
+ }
+ });
+ }
+
+ delete config.ownerCt;
+ delete config.xtype;
+ delete config.id;
+
+ return config;
+ },
+
+
+ addComponentToMenu : function(menu, component) {
+ if (component instanceof Ext.Toolbar.Separator) {
+ menu.add('-');
+
+ } else if (Ext.isFunction(component.isXType)) {
+ if (component.isXType('splitbutton')) {
+ menu.add(this.createMenuConfig(component, true));
+
+ } else if (component.isXType('button')) {
+ menu.add(this.createMenuConfig(component, !component.menu));
+
+ } else if (component.isXType('buttongroup')) {
+ component.items.each(function(item){
+ this.addComponentToMenu(menu, item);
+ }, this);
+ }
+ }
+ },
+
+
+ clearMenu : function(){
+ var menu = this.moreMenu;
+ if (menu && menu.items) {
+ menu.items.each(function(item){
+ delete item.menu;
+ });
+ }
+ },
+
+
+ createMenu: function() {
+ if (!this.menuTrigger) {
+ this.createInnerElements();
+
+
+ this.menu = new Ext.menu.Menu({
+ ownerCt : this.layout.container,
+ listeners: {
+ scope: this,
+ beforeshow: this.beforeMenuShow
+ }
+ });
+
+
+ this.menuTrigger = new Ext.Button({
+ iconCls : 'x-toolbar-more-icon',
+ cls : 'x-toolbar-more',
+ menu : this.menu,
+ renderTo: this.afterCt
+ });
+ }
+ },
+
+
+ destroy: function() {
+ Ext.destroy(this.menu, this.menuTrigger);
+ }
+});
+
+Ext.layout.boxOverflow.menu = Ext.layout.boxOverflow.Menu;
+
+
+
+Ext.layout.boxOverflow.HorizontalMenu = Ext.extend(Ext.layout.boxOverflow.Menu, {
+
+ constructor: function() {
+ Ext.layout.boxOverflow.HorizontalMenu.superclass.constructor.apply(this, arguments);
+
+ var me = this,
+ layout = me.layout,
+ origFunction = layout.calculateChildBoxes;
+
+ layout.calculateChildBoxes = function(visibleItems, targetSize) {
+ var calcs = origFunction.apply(layout, arguments),
+ meta = calcs.meta,
+ items = me.menuItems;
+
+
+
+ var hiddenWidth = 0;
+ for (var index = 0, length = items.length; index < length; index++) {
+ hiddenWidth += items[index].width;
+ }
+
+ meta.minimumWidth += hiddenWidth;
+ meta.tooNarrow = meta.minimumWidth > targetSize.width;
+
+ return calcs;
+ };
+ },
+
+ handleOverflow: function(calculations, targetSize) {
+ this.showTrigger();
+
+ var newWidth = targetSize.width - this.afterCt.getWidth(),
+ boxes = calculations.boxes,
+ usedWidth = 0,
+ recalculate = false;
+
+
+ for (var index = 0, length = boxes.length; index < length; index++) {
+ usedWidth += boxes[index].width;
+ }
+
+ var spareWidth = newWidth - usedWidth,
+ showCount = 0;
+
+
+ for (var index = 0, length = this.menuItems.length; index < length; index++) {
+ var hidden = this.menuItems[index],
+ comp = hidden.component,
+ width = hidden.width;
+
+ if (width < spareWidth) {
+ comp.show();
+
+ spareWidth -= width;
+ showCount ++;
+ recalculate = true;
+ } else {
+ break;
+ }
+ }
+
+ if (recalculate) {
+ this.menuItems = this.menuItems.slice(showCount);
+ } else {
+ for (var i = boxes.length - 1; i >= 0; i--) {
+ var item = boxes[i].component,
+ right = boxes[i].left + boxes[i].width;
+
+ if (right >= newWidth) {
+ this.menuItems.unshift({
+ component: item,
+ width : boxes[i].width
+ });
+
+ item.hide();
+ } else {
+ break;
+ }
+ }
+ }
+
+ if (this.menuItems.length == 0) {
+ this.hideTrigger();
+ }
+
+ return {
+ targetSize: {
+ height: targetSize.height,
+ width : newWidth
+ },
+ recalculate: recalculate
+ };
+ }
+});
+
+Ext.layout.boxOverflow.menu.hbox = Ext.layout.boxOverflow.HorizontalMenu;
+Ext.layout.boxOverflow.Scroller = Ext.extend(Ext.layout.boxOverflow.None, {
+
+ animateScroll: true,
+
+
+ scrollIncrement: 100,
+
+
+ wheelIncrement: 3,
+
+
+ scrollRepeatInterval: 400,
+
+
+ scrollDuration: 0.4,
+
+
+ beforeCls: 'x-strip-left',
+
+
+ afterCls: 'x-strip-right',
+
+
+ scrollerCls: 'x-strip-scroller',
+
+
+ beforeScrollerCls: 'x-strip-scroller-left',
+
+
+ afterScrollerCls: 'x-strip-scroller-right',
+
+
+ createWheelListener: function() {
+ this.layout.innerCt.on({
+ scope : this,
+ mousewheel: function(e) {
+ e.stopEvent();
+
+ this.scrollBy(e.getWheelDelta() * this.wheelIncrement * -1, false);
+ }
+ });
+ },
+
+
+ handleOverflow: function(calculations, targetSize) {
+ this.createInnerElements();
+ this.showScrollers();
+ },
+
+
+ clearOverflow: function() {
+ this.hideScrollers();
+ },
+
+
+ showScrollers: function() {
+ this.createScrollers();
+
+ this.beforeScroller.show();
+ this.afterScroller.show();
+
+ this.updateScrollButtons();
+ },
+
+
+ hideScrollers: function() {
+ if (this.beforeScroller != undefined) {
+ this.beforeScroller.hide();
+ this.afterScroller.hide();
+ }
+ },
+
+
+ createScrollers: function() {
+ if (!this.beforeScroller && !this.afterScroller) {
+ var before = this.beforeCt.createChild({
+ cls: String.format("{0} {1} ", this.scrollerCls, this.beforeScrollerCls)
+ });
+
+ var after = this.afterCt.createChild({
+ cls: String.format("{0} {1}", this.scrollerCls, this.afterScrollerCls)
+ });
+
+ before.addClassOnOver(this.beforeScrollerCls + '-hover');
+ after.addClassOnOver(this.afterScrollerCls + '-hover');
+
+ before.setVisibilityMode(Ext.Element.DISPLAY);
+ after.setVisibilityMode(Ext.Element.DISPLAY);
+
+ this.beforeRepeater = new Ext.util.ClickRepeater(before, {
+ interval: this.scrollRepeatInterval,
+ handler : this.scrollLeft,
+ scope : this
+ });
+
+ this.afterRepeater = new Ext.util.ClickRepeater(after, {
+ interval: this.scrollRepeatInterval,
+ handler : this.scrollRight,
+ scope : this
+ });
+
+
+ this.beforeScroller = before;
+
+
+ this.afterScroller = after;
+ }
+ },
+
+
+ destroy: function() {
+ Ext.destroy(this.beforeScroller, this.afterScroller, this.beforeRepeater, this.afterRepeater, this.beforeCt, this.afterCt);
+ },
+
+
+ scrollBy: function(delta, animate) {
+ this.scrollTo(this.getScrollPosition() + delta, animate);
+ },
+
+
+ getItem: function(item) {
+ if (Ext.isString(item)) {
+ item = Ext.getCmp(item);
+ } else if (Ext.isNumber(item)) {
+ item = this.items[item];
+ }
+
+ return item;
+ },
+
+
+ getScrollAnim: function() {
+ return {
+ duration: this.scrollDuration,
+ callback: this.updateScrollButtons,
+ scope : this
+ };
+ },
+
+
+ updateScrollButtons: function() {
+ if (this.beforeScroller == undefined || this.afterScroller == undefined) {
+ return;
+ }
+
+ var beforeMeth = this.atExtremeBefore() ? 'addClass' : 'removeClass',
+ afterMeth = this.atExtremeAfter() ? 'addClass' : 'removeClass',
+ beforeCls = this.beforeScrollerCls + '-disabled',
+ afterCls = this.afterScrollerCls + '-disabled';
+
+ this.beforeScroller[beforeMeth](beforeCls);
+ this.afterScroller[afterMeth](afterCls);
+ this.scrolling = false;
+ },
+
+
+ atExtremeBefore: function() {
+ return this.getScrollPosition() === 0;
+ },
+
+
+ scrollLeft: function(animate) {
+ this.scrollBy(-this.scrollIncrement, animate);
+ },
+
+
+ scrollRight: function(animate) {
+ this.scrollBy(this.scrollIncrement, animate);
+ },
+
+
+ scrollToItem: function(item, animate) {
+ item = this.getItem(item);
+
+ if (item != undefined) {
+ var visibility = this.getItemVisibility(item);
+
+ if (!visibility.fullyVisible) {
+ var box = item.getBox(true, true),
+ newX = box.x;
+
+ if (visibility.hiddenRight) {
+ newX -= (this.layout.innerCt.getWidth() - box.width);
+ }
+
+ this.scrollTo(newX, animate);
+ }
+ }
+ },
+
+
+ getItemVisibility: function(item) {
+ var box = this.getItem(item).getBox(true, true),
+ itemLeft = box.x,
+ itemRight = box.x + box.width,
+ scrollLeft = this.getScrollPosition(),
+ scrollRight = this.layout.innerCt.getWidth() + scrollLeft;
+
+ return {
+ hiddenLeft : itemLeft < scrollLeft,
+ hiddenRight : itemRight > scrollRight,
+ fullyVisible: itemLeft > scrollLeft && itemRight < scrollRight
+ };
+ }
+});
+
+Ext.layout.boxOverflow.scroller = Ext.layout.boxOverflow.Scroller;
+
+
+
+Ext.layout.boxOverflow.VerticalScroller = Ext.extend(Ext.layout.boxOverflow.Scroller, {
+ scrollIncrement: 75,
+ wheelIncrement : 2,
+
+ handleOverflow: function(calculations, targetSize) {
+ Ext.layout.boxOverflow.VerticalScroller.superclass.handleOverflow.apply(this, arguments);
+
+ return {
+ targetSize: {
+ height: targetSize.height - (this.beforeCt.getHeight() + this.afterCt.getHeight()),
+ width : targetSize.width
+ }
+ };
+ },
+
+
+ createInnerElements: function() {
+ var target = this.layout.innerCt;
+
+
+
+ if (!this.beforeCt) {
+ this.beforeCt = target.insertSibling({cls: this.beforeCls}, 'before');
+ this.afterCt = target.insertSibling({cls: this.afterCls}, 'after');
+
+ this.createWheelListener();
+ }
+ },
+
+
+ scrollTo: function(position, animate) {
+ var oldPosition = this.getScrollPosition(),
+ newPosition = position.constrain(0, this.getMaxScrollBottom());
+
+ if (newPosition != oldPosition && !this.scrolling) {
+ if (animate == undefined) {
+ animate = this.animateScroll;
+ }
+
+ this.layout.innerCt.scrollTo('top', newPosition, animate ? this.getScrollAnim() : false);
+
+ if (animate) {
+ this.scrolling = true;
+ } else {
+ this.scrolling = false;
+ this.updateScrollButtons();
+ }
+ }
+ },
+
+
+ getScrollPosition: function(){
+ return parseInt(this.layout.innerCt.dom.scrollTop, 10) || 0;
+ },
+
+
+ getMaxScrollBottom: function() {
+ return this.layout.innerCt.dom.scrollHeight - this.layout.innerCt.getHeight();
+ },
+
+
+ atExtremeAfter: function() {
+ return this.getScrollPosition() >= this.getMaxScrollBottom();
+ }
+});
+
+Ext.layout.boxOverflow.scroller.vbox = Ext.layout.boxOverflow.VerticalScroller;
+
+
+
+Ext.layout.boxOverflow.HorizontalScroller = Ext.extend(Ext.layout.boxOverflow.Scroller, {
+ handleOverflow: function(calculations, targetSize) {
+ Ext.layout.boxOverflow.HorizontalScroller.superclass.handleOverflow.apply(this, arguments);
+
+ return {
+ targetSize: {
+ height: targetSize.height,
+ width : targetSize.width - (this.beforeCt.getWidth() + this.afterCt.getWidth())
+ }
+ };
+ },
+
+
+ createInnerElements: function() {
+ var target = this.layout.innerCt;
+
+
+
+ if (!this.beforeCt) {
+ this.afterCt = target.insertSibling({cls: this.afterCls}, 'before');
+ this.beforeCt = target.insertSibling({cls: this.beforeCls}, 'before');
+
+ this.createWheelListener();
+ }
+ },
+
+
+ scrollTo: function(position, animate) {
+ var oldPosition = this.getScrollPosition(),
+ newPosition = position.constrain(0, this.getMaxScrollRight());
+
+ if (newPosition != oldPosition && !this.scrolling) {
+ if (animate == undefined) {
+ animate = this.animateScroll;
+ }
+
+ this.layout.innerCt.scrollTo('left', newPosition, animate ? this.getScrollAnim() : false);
+
+ if (animate) {
+ this.scrolling = true;
+ } else {
+ this.scrolling = false;
+ this.updateScrollButtons();
+ }
+ }
+ },
+
+
+ getScrollPosition: function(){
+ return parseInt(this.layout.innerCt.dom.scrollLeft, 10) || 0;
+ },
+
+
+ getMaxScrollRight: function() {
+ return this.layout.innerCt.dom.scrollWidth - this.layout.innerCt.getWidth();
+ },
+
+
+ atExtremeAfter: function() {
+ return this.getScrollPosition() >= this.getMaxScrollRight();
+ }
+});
+
+Ext.layout.boxOverflow.scroller.hbox = Ext.layout.boxOverflow.HorizontalScroller;
+Ext.layout.HBoxLayout = Ext.extend(Ext.layout.BoxLayout, {
+
+ align: 'top',
+
+ type : 'hbox',
+
+
+
+
+
+ calculateChildBoxes: function(visibleItems, targetSize) {
+ var visibleCount = visibleItems.length,
+
+ padding = this.padding,
+ topOffset = padding.top,
+ leftOffset = padding.left,
+ paddingVert = topOffset + padding.bottom,
+ paddingHoriz = leftOffset + padding.right,
+
+ width = targetSize.width - this.scrollOffset,
+ height = targetSize.height,
+ availHeight = Math.max(0, height - paddingVert),
+
+ isStart = this.pack == 'start',
+ isCenter = this.pack == 'center',
+ isEnd = this.pack == 'end',
+
+ nonFlexWidth = 0,
+ maxHeight = 0,
+ totalFlex = 0,
+ desiredWidth = 0,
+ minimumWidth = 0,
+
+
+ boxes = [],
+
+
+ child, childWidth, childHeight, childSize, childMargins, canLayout, i, calcs, flexedWidth,
+ horizMargins, vertMargins, stretchHeight;
+
+
+ for (i = 0; i < visibleCount; i++) {
+ child = visibleItems[i];
+ childHeight = child.height;
+ childWidth = child.width;
+ canLayout = !child.hasLayout && typeof child.doLayout == 'function';
+
+
+ if (typeof childWidth != 'number') {
+
+
+ if (child.flex && !childWidth) {
+ totalFlex += child.flex;
+
+
+ } else {
+
+
+ if (!childWidth && canLayout) {
+ child.doLayout();
+ }
+
+ childSize = child.getSize();
+ childWidth = childSize.width;
+ childHeight = childSize.height;
+ }
+ }
+
+ childMargins = child.margins;
+ horizMargins = childMargins.left + childMargins.right;
+
+ nonFlexWidth += horizMargins + (childWidth || 0);
+ desiredWidth += horizMargins + (child.flex ? child.minWidth || 0 : childWidth);
+ minimumWidth += horizMargins + (child.minWidth || childWidth || 0);
+
+
+ if (typeof childHeight != 'number') {
+ if (canLayout) {
+ child.doLayout();
+ }
+ childHeight = child.getHeight();
+ }
+
+ maxHeight = Math.max(maxHeight, childHeight + childMargins.top + childMargins.bottom);
+
+
+ boxes.push({
+ component: child,
+ height : childHeight || undefined,
+ width : childWidth || undefined
+ });
+ }
+
+ var shortfall = desiredWidth - width,
+ tooNarrow = minimumWidth > width;
+
+
+ var availableWidth = Math.max(0, width - nonFlexWidth - paddingHoriz);
+
+ if (tooNarrow) {
+ for (i = 0; i < visibleCount; i++) {
+ boxes[i].width = visibleItems[i].minWidth || visibleItems[i].width || boxes[i].width;
+ }
+ } else {
+
+
+ if (shortfall > 0) {
+ var minWidths = [];
+
+
+
+
+ for (var index = 0, length = visibleCount; index < length; index++) {
+ var item = visibleItems[index],
+ minWidth = item.minWidth || 0;
+
+
+
+ if (item.flex) {
+ boxes[index].width = minWidth;
+ } else {
+ minWidths.push({
+ minWidth : minWidth,
+ available: boxes[index].width - minWidth,
+ index : index
+ });
+ }
+ }
+
+
+ minWidths.sort(function(a, b) {
+ return a.available > b.available ? 1 : -1;
+ });
+
+
+ for (var i = 0, length = minWidths.length; i < length; i++) {
+ var itemIndex = minWidths[i].index;
+
+ if (itemIndex == undefined) {
+ continue;
+ }
+
+ var item = visibleItems[itemIndex],
+ box = boxes[itemIndex],
+ oldWidth = box.width,
+ minWidth = item.minWidth,
+ newWidth = Math.max(minWidth, oldWidth - Math.ceil(shortfall / (length - i))),
+ reduction = oldWidth - newWidth;
+
+ boxes[itemIndex].width = newWidth;
+ shortfall -= reduction;
+ }
+ } else {
+
+ var remainingWidth = availableWidth,
+ remainingFlex = totalFlex;
+
+
+ for (i = 0; i < visibleCount; i++) {
+ child = visibleItems[i];
+ calcs = boxes[i];
+
+ childMargins = child.margins;
+ vertMargins = childMargins.top + childMargins.bottom;
+
+ if (isStart && child.flex && !child.width) {
+ flexedWidth = Math.ceil((child.flex / remainingFlex) * remainingWidth);
+ remainingWidth -= flexedWidth;
+ remainingFlex -= child.flex;
+
+ calcs.width = flexedWidth;
+ calcs.dirtySize = true;
+ }
+ }
+ }
+ }
+
+ if (isCenter) {
+ leftOffset += availableWidth / 2;
+ } else if (isEnd) {
+ leftOffset += availableWidth;
+ }
+
+
+ for (i = 0; i < visibleCount; i++) {
+ child = visibleItems[i];
+ calcs = boxes[i];
+
+ childMargins = child.margins;
+ leftOffset += childMargins.left;
+ vertMargins = childMargins.top + childMargins.bottom;
+
+ calcs.left = leftOffset;
+ calcs.top = topOffset + childMargins.top;
+
+ switch (this.align) {
+ case 'stretch':
+ stretchHeight = availHeight - vertMargins;
+ calcs.height = stretchHeight.constrain(child.minHeight || 0, child.maxHeight || 1000000);
+ calcs.dirtySize = true;
+ break;
+ case 'stretchmax':
+ stretchHeight = maxHeight - vertMargins;
+ calcs.height = stretchHeight.constrain(child.minHeight || 0, child.maxHeight || 1000000);
+ calcs.dirtySize = true;
+ break;
+ case 'middle':
+ var diff = availHeight - calcs.height - vertMargins;
+ if (diff > 0) {
+ calcs.top = topOffset + vertMargins + (diff / 2);
+ }
+ }
+
+ leftOffset += calcs.width + childMargins.right;
+ }
+
+ return {
+ boxes: boxes,
+ meta : {
+ maxHeight : maxHeight,
+ nonFlexWidth: nonFlexWidth,
+ desiredWidth: desiredWidth,
+ minimumWidth: minimumWidth,
+ shortfall : desiredWidth - width,
+ tooNarrow : tooNarrow
+ }
+ };
+ }
+});
+
+Ext.Container.LAYOUTS.hbox = Ext.layout.HBoxLayout;
+Ext.layout.VBoxLayout = Ext.extend(Ext.layout.BoxLayout, {
+
+ align : 'left',
+ type: 'vbox',
+
+
+
+
+
+
+ calculateChildBoxes: function(visibleItems, targetSize) {
+ var visibleCount = visibleItems.length,
+
+ padding = this.padding,
+ topOffset = padding.top,
+ leftOffset = padding.left,
+ paddingVert = topOffset + padding.bottom,
+ paddingHoriz = leftOffset + padding.right,
+
+ width = targetSize.width - this.scrollOffset,
+ height = targetSize.height,
+ availWidth = Math.max(0, width - paddingHoriz),
+
+ isStart = this.pack == 'start',
+ isCenter = this.pack == 'center',
+ isEnd = this.pack == 'end',
+
+ nonFlexHeight= 0,
+ maxWidth = 0,
+ totalFlex = 0,
+ desiredHeight= 0,
+ minimumHeight= 0,
+
+
+ boxes = [],
+
+
+ child, childWidth, childHeight, childSize, childMargins, canLayout, i, calcs, flexedHeight,
+ horizMargins, vertMargins, stretchWidth, length;
+
+
+ for (i = 0; i < visibleCount; i++) {
+ child = visibleItems[i];
+ childHeight = child.height;
+ childWidth = child.width;
+ canLayout = !child.hasLayout && typeof child.doLayout == 'function';
+
+
+ if (typeof childHeight != 'number') {
+
+
+ if (child.flex && !childHeight) {
+ totalFlex += child.flex;
+
+
+ } else {
+
+
+ if (!childHeight && canLayout) {
+ child.doLayout();
+ }
+
+ childSize = child.getSize();
+ childWidth = childSize.width;
+ childHeight = childSize.height;
+ }
+ }
+
+ childMargins = child.margins;
+ vertMargins = childMargins.top + childMargins.bottom;
+
+ nonFlexHeight += vertMargins + (childHeight || 0);
+ desiredHeight += vertMargins + (child.flex ? child.minHeight || 0 : childHeight);
+ minimumHeight += vertMargins + (child.minHeight || childHeight || 0);
+
+
+ if (typeof childWidth != 'number') {
+ if (canLayout) {
+ child.doLayout();
+ }
+ childWidth = child.getWidth();
+ }
+
+ maxWidth = Math.max(maxWidth, childWidth + childMargins.left + childMargins.right);
+
+
+ boxes.push({
+ component: child,
+ height : childHeight || undefined,
+ width : childWidth || undefined
+ });
+ }
+
+ var shortfall = desiredHeight - height,
+ tooNarrow = minimumHeight > height;
+
+
+ var availableHeight = Math.max(0, (height - nonFlexHeight - paddingVert));
+
+ if (tooNarrow) {
+ for (i = 0, length = visibleCount; i < length; i++) {
+ boxes[i].height = visibleItems[i].minHeight || visibleItems[i].height || boxes[i].height;
+ }
+ } else {
+
+
+ if (shortfall > 0) {
+ var minHeights = [];
+
+
+
+
+ for (var index = 0, length = visibleCount; index < length; index++) {
+ var item = visibleItems[index],
+ minHeight = item.minHeight || 0;
+
+
+
+ if (item.flex) {
+ boxes[index].height = minHeight;
+ } else {
+ minHeights.push({
+ minHeight: minHeight,
+ available: boxes[index].height - minHeight,
+ index : index
+ });
+ }
+ }
+
+
+ minHeights.sort(function(a, b) {
+ return a.available > b.available ? 1 : -1;
+ });
+
+
+ for (var i = 0, length = minHeights.length; i < length; i++) {
+ var itemIndex = minHeights[i].index;
+
+ if (itemIndex == undefined) {
+ continue;
+ }
+
+ var item = visibleItems[itemIndex],
+ box = boxes[itemIndex],
+ oldHeight = box.height,
+ minHeight = item.minHeight,
+ newHeight = Math.max(minHeight, oldHeight - Math.ceil(shortfall / (length - i))),
+ reduction = oldHeight - newHeight;
+
+ boxes[itemIndex].height = newHeight;
+ shortfall -= reduction;
+ }
+ } else {
+
+ var remainingHeight = availableHeight,
+ remainingFlex = totalFlex;
+
+
+ for (i = 0; i < visibleCount; i++) {
+ child = visibleItems[i];
+ calcs = boxes[i];
+
+ childMargins = child.margins;
+ horizMargins = childMargins.left + childMargins.right;
+
+ if (isStart && child.flex && !child.height) {
+ flexedHeight = Math.ceil((child.flex / remainingFlex) * remainingHeight);
+ remainingHeight -= flexedHeight;
+ remainingFlex -= child.flex;
+
+ calcs.height = flexedHeight;
+ calcs.dirtySize = true;
+ }
+ }
+ }
+ }
+
+ if (isCenter) {
+ topOffset += availableHeight / 2;
+ } else if (isEnd) {
+ topOffset += availableHeight;
+ }
+
+
+ for (i = 0; i < visibleCount; i++) {
+ child = visibleItems[i];
+ calcs = boxes[i];
+
+ childMargins = child.margins;
+ topOffset += childMargins.top;
+ horizMargins = childMargins.left + childMargins.right;
+
+
+ calcs.left = leftOffset + childMargins.left;
+ calcs.top = topOffset;
+
+ switch (this.align) {
+ case 'stretch':
+ stretchWidth = availWidth - horizMargins;
+ calcs.width = stretchWidth.constrain(child.minWidth || 0, child.maxWidth || 1000000);
+ calcs.dirtySize = true;
+ break;
+ case 'stretchmax':
+ stretchWidth = maxWidth - horizMargins;
+ calcs.width = stretchWidth.constrain(child.minWidth || 0, child.maxWidth || 1000000);
+ calcs.dirtySize = true;
+ break;
+ case 'center':
+ var diff = availWidth - calcs.width - horizMargins;
+ if (diff > 0) {
+ calcs.left = leftOffset + horizMargins + (diff / 2);
+ }
+ }
+
+ topOffset += calcs.height + childMargins.bottom;
+ }
+
+ return {
+ boxes: boxes,
+ meta : {
+ maxWidth : maxWidth,
+ nonFlexHeight: nonFlexHeight,
+ desiredHeight: desiredHeight,
+ minimumHeight: minimumHeight,
+ shortfall : desiredHeight - height,
+ tooNarrow : tooNarrow
+ }
+ };
+ }
+});
+
+Ext.Container.LAYOUTS.vbox = Ext.layout.VBoxLayout;
+
+Ext.layout.ToolbarLayout = Ext.extend(Ext.layout.ContainerLayout, {
+ monitorResize : true,
+
+ type: 'toolbar',
+
+
+ triggerWidth: 18,
+
+
+ noItemsMenuText : '<div class="x-toolbar-no-items">(None)</div>',
+
+
+ lastOverflow: false,
+
+
+ tableHTML: [
+ '<table cellspacing="0" class="x-toolbar-ct">',
+ '<tbody>',
+ '<tr>',
+ '<td class="x-toolbar-left" align="{0}">',
+ '<table cellspacing="0">',
+ '<tbody>',
+ '<tr class="x-toolbar-left-row"></tr>',
+ '</tbody>',
+ '</table>',
+ '</td>',
+ '<td class="x-toolbar-right" align="right">',
+ '<table cellspacing="0" class="x-toolbar-right-ct">',
+ '<tbody>',
+ '<tr>',
+ '<td>',
+ '<table cellspacing="0">',
+ '<tbody>',
+ '<tr class="x-toolbar-right-row"></tr>',
+ '</tbody>',
+ '</table>',
+ '</td>',
+ '<td>',
+ '<table cellspacing="0">',
+ '<tbody>',
+ '<tr class="x-toolbar-extras-row"></tr>',
+ '</tbody>',
+ '</table>',
+ '</td>',
+ '</tr>',
+ '</tbody>',
+ '</table>',
+ '</td>',
+ '</tr>',
+ '</tbody>',
+ '</table>'
+ ].join(""),
+
+
+ onLayout : function(ct, target) {
+
+ if (!this.leftTr) {
+ var align = ct.buttonAlign == 'center' ? 'center' : 'left';
+
+ target.addClass('x-toolbar-layout-ct');
+ target.insertHtml('beforeEnd', String.format(this.tableHTML, align));
+
+ this.leftTr = target.child('tr.x-toolbar-left-row', true);
+ this.rightTr = target.child('tr.x-toolbar-right-row', true);
+ this.extrasTr = target.child('tr.x-toolbar-extras-row', true);
+
+ if (this.hiddenItem == undefined) {
+
+ this.hiddenItems = [];
+ }
+ }
+
+ var side = ct.buttonAlign == 'right' ? this.rightTr : this.leftTr,
+ items = ct.items.items,
+ position = 0;
+
+
+ for (var i = 0, len = items.length, c; i < len; i++, position++) {
+ c = items[i];
+
+ if (c.isFill) {
+ side = this.rightTr;
+ position = -1;
+ } else if (!c.rendered) {
+ c.render(this.insertCell(c, side, position));
+ this.configureItem(c);
+ } else {
+ if (!c.xtbHidden && !this.isValidParent(c, side.childNodes[position])) {
+ var td = this.insertCell(c, side, position);
+ td.appendChild(c.getPositionEl().dom);
+ c.container = Ext.get(td);
+ }
+ }
+ }
+
+
+ this.cleanup(this.leftTr);
+ this.cleanup(this.rightTr);
+ this.cleanup(this.extrasTr);
+ this.fitToSize(target);
+ },
+
+
+ cleanup : function(el) {
+ var cn = el.childNodes, i, c;
+
+ for (i = cn.length-1; i >= 0 && (c = cn[i]); i--) {
+ if (!c.firstChild) {
+ el.removeChild(c);
+ }
+ }
+ },
+
+
+ insertCell : function(c, target, position) {
+ var td = document.createElement('td');
+ td.className = 'x-toolbar-cell';
+
+ target.insertBefore(td, target.childNodes[position] || null);
+
+ return td;
+ },
+
+
+ hideItem : function(item) {
+ this.hiddenItems.push(item);
+
+ item.xtbHidden = true;
+ item.xtbWidth = item.getPositionEl().dom.parentNode.offsetWidth;
+ item.hide();
+ },
+
+
+ unhideItem : function(item) {
+ item.show();
+ item.xtbHidden = false;
+ this.hiddenItems.remove(item);
+ },
+
+
+ getItemWidth : function(c) {
+ return c.hidden ? (c.xtbWidth || 0) : c.getPositionEl().dom.parentNode.offsetWidth;
+ },
+
+
+ fitToSize : function(target) {
+ if (this.container.enableOverflow === false) {
+ return;
+ }
+
+ var width = target.dom.clientWidth,
+ tableWidth = target.dom.firstChild.offsetWidth,
+ clipWidth = width - this.triggerWidth,
+ lastWidth = this.lastWidth || 0,
+
+ hiddenItems = this.hiddenItems,
+ hasHiddens = hiddenItems.length != 0,
+ isLarger = width >= lastWidth;
+
+ this.lastWidth = width;
+
+ if (tableWidth > width || (hasHiddens && isLarger)) {
+ var items = this.container.items.items,
+ len = items.length,
+ loopWidth = 0,
+ item;
+
+ for (var i = 0; i < len; i++) {
+ item = items[i];
+
+ if (!item.isFill) {
+ loopWidth += this.getItemWidth(item);
+ if (loopWidth > clipWidth) {
+ if (!(item.hidden || item.xtbHidden)) {
+ this.hideItem(item);
+ }
+ } else if (item.xtbHidden) {
+ this.unhideItem(item);
+ }
+ }
+ }
+ }
+
+
+ hasHiddens = hiddenItems.length != 0;
+
+ if (hasHiddens) {
+ this.initMore();
+
+ if (!this.lastOverflow) {
+ this.container.fireEvent('overflowchange', this.container, true);
+ this.lastOverflow = true;
+ }
+ } else if (this.more) {
+ this.clearMenu();
+ this.more.destroy();
+ delete this.more;
+
+ if (this.lastOverflow) {
+ this.container.fireEvent('overflowchange', this.container, false);
+ this.lastOverflow = false;
+ }
+ }
+ },
+
+
+ createMenuConfig : function(component, hideOnClick){
+ var config = Ext.apply({}, component.initialConfig),
+ group = component.toggleGroup;
+
+ Ext.copyTo(config, component, [
+ 'iconCls', 'icon', 'itemId', 'disabled', 'handler', 'scope', 'menu'
+ ]);
+
+ Ext.apply(config, {
+ text : component.overflowText || component.text,
+ hideOnClick: hideOnClick
+ });
+
+ if (group || component.enableToggle) {
+ Ext.apply(config, {
+ group : group,
+ checked: component.pressed,
+ listeners: {
+ checkchange: function(item, checked){
+ component.toggle(checked);
+ }
+ }
+ });
+ }
+
+ delete config.ownerCt;
+ delete config.xtype;
+ delete config.id;
+
+ return config;
+ },
+
+
+ addComponentToMenu : function(menu, component) {
+ if (component instanceof Ext.Toolbar.Separator) {
+ menu.add('-');
+
+ } else if (Ext.isFunction(component.isXType)) {
+ if (component.isXType('splitbutton')) {
+ menu.add(this.createMenuConfig(component, true));
+
+ } else if (component.isXType('button')) {
+ menu.add(this.createMenuConfig(component, !component.menu));
+
+ } else if (component.isXType('buttongroup')) {
+ component.items.each(function(item){
+ this.addComponentToMenu(menu, item);
+ }, this);
+ }
+ }
+ },
+
+
+ clearMenu : function(){
+ var menu = this.moreMenu;
+ if (menu && menu.items) {
+ menu.items.each(function(item){
+ delete item.menu;
+ });
+ }
+ },
+
+
+ beforeMoreShow : function(menu) {
+ var items = this.container.items.items,
+ len = items.length,
+ item,
+ prev;
+
+ var needsSep = function(group, item){
+ return group.isXType('buttongroup') && !(item instanceof Ext.Toolbar.Separator);
+ };
+
+ this.clearMenu();
+ menu.removeAll();
+ for (var i = 0; i < len; i++) {
+ item = items[i];
+ if (item.xtbHidden) {
+ if (prev && (needsSep(item, prev) || needsSep(prev, item))) {
+ menu.add('-');
+ }
+ this.addComponentToMenu(menu, item);
+ prev = item;
+ }
+ }
+
+
+ if (menu.items.length < 1) {
+ menu.add(this.noItemsMenuText);
+ }
+ },
+
+
+ initMore : function(){
+ if (!this.more) {
+
+ this.moreMenu = new Ext.menu.Menu({
+ ownerCt : this.container,
+ listeners: {
+ beforeshow: this.beforeMoreShow,
+ scope: this
+ }
+ });
+
+
+ this.more = new Ext.Button({
+ iconCls: 'x-toolbar-more-icon',
+ cls : 'x-toolbar-more',
+ menu : this.moreMenu,
+ ownerCt: this.container
+ });
+
+ var td = this.insertCell(this.more, this.extrasTr, 100);
+ this.more.render(td);
+ }
+ },
+
+ destroy : function(){
+ Ext.destroy(this.more, this.moreMenu);
+ delete this.leftTr;
+ delete this.rightTr;
+ delete this.extrasTr;
+ Ext.layout.ToolbarLayout.superclass.destroy.call(this);
+ }
+});
+
+Ext.Container.LAYOUTS.toolbar = Ext.layout.ToolbarLayout;
+
+ Ext.layout.MenuLayout = Ext.extend(Ext.layout.ContainerLayout, {
+ monitorResize : true,
+
+ type: 'menu',
+
+ setContainer : function(ct){
+ this.monitorResize = !ct.floating;
+
+
+ ct.on('autosize', this.doAutoSize, this);
+ Ext.layout.MenuLayout.superclass.setContainer.call(this, ct);
+ },
+
+ renderItem : function(c, position, target){
+ if (!this.itemTpl) {
+ this.itemTpl = Ext.layout.MenuLayout.prototype.itemTpl = new Ext.XTemplate(
+ '<li id="{itemId}" class="{itemCls}">',
+ '<tpl if="needsIcon">',
+ '<img alt="{altText}" src="{icon}" class="{iconCls}"/>',
+ '</tpl>',
+ '</li>'
+ );
+ }
+
+ if(c && !c.rendered){
+ if(Ext.isNumber(position)){
+ position = target.dom.childNodes[position];
+ }
+ var a = this.getItemArgs(c);
+
+
+ c.render(c.positionEl = position ?
+ this.itemTpl.insertBefore(position, a, true) :
+ this.itemTpl.append(target, a, true));
+
+
+ c.positionEl.menuItemId = c.getItemId();
+
+
+
+ if (!a.isMenuItem && a.needsIcon) {
+ c.positionEl.addClass('x-menu-list-item-indent');
+ }
+ this.configureItem(c);
+ }else if(c && !this.isValidParent(c, target)){
+ if(Ext.isNumber(position)){
+ position = target.dom.childNodes[position];
+ }
+ target.dom.insertBefore(c.getActionEl().dom, position || null);
+ }
+ },
+
+ getItemArgs : function(c) {
+ var isMenuItem = c instanceof Ext.menu.Item,
+ canHaveIcon = !(isMenuItem || c instanceof Ext.menu.Separator);
+
+ return {
+ isMenuItem: isMenuItem,
+ needsIcon: canHaveIcon && (c.icon || c.iconCls),
+ icon: c.icon || Ext.BLANK_IMAGE_URL,
+ iconCls: 'x-menu-item-icon ' + (c.iconCls || ''),
+ itemId: 'x-menu-el-' + c.id,
+ itemCls: 'x-menu-list-item ',
+ altText: c.altText || ''
+ };
+ },
+
+
+ isValidParent : function(c, target) {
+ return c.el.up('li.x-menu-list-item', 5).dom.parentNode === (target.dom || target);
+ },
+
+ onLayout : function(ct, target){
+ Ext.layout.MenuLayout.superclass.onLayout.call(this, ct, target);
+ this.doAutoSize();
+ },
+
+ doAutoSize : function(){
+ var ct = this.container, w = ct.width;
+ if(ct.floating){
+ if(w){
+ ct.setWidth(w);
+ }else if(Ext.isIE9m){
+ ct.setWidth(Ext.isStrict && (Ext.isIE7 || Ext.isIE8 || Ext.isIE9) ? 'auto' : ct.minWidth);
+ var el = ct.getEl(), t = el.dom.offsetWidth;
+ ct.setWidth(ct.getLayoutTarget().getWidth() + el.getFrameWidth('lr'));
+ }
+ }
+ }
+});
+Ext.Container.LAYOUTS['menu'] = Ext.layout.MenuLayout;
+
+Ext.Viewport = Ext.extend(Ext.Container, {
+
+
+
+
+
+
+
+
+
+
+
+
+ initComponent : function() {
+ Ext.Viewport.superclass.initComponent.call(this);
+ document.getElementsByTagName('html')[0].className += ' x-viewport';
+ this.el = Ext.getBody();
+ this.el.setHeight = Ext.emptyFn;
+ this.el.setWidth = Ext.emptyFn;
+ this.el.setSize = Ext.emptyFn;
+ this.el.dom.scroll = 'no';
+ this.allowDomMove = false;
+ this.autoWidth = true;
+ this.autoHeight = true;
+ Ext.EventManager.onWindowResize(this.fireResize, this);
+ this.renderTo = this.el;
+ },
+
+ fireResize : function(w, h){
+ this.fireEvent('resize', this, w, h, w, h);
+ }
+});
+Ext.reg('viewport', Ext.Viewport);
+
+Ext.Panel = Ext.extend(Ext.Container, {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ baseCls : 'x-panel',
+
+ collapsedCls : 'x-panel-collapsed',
+
+ maskDisabled : true,
+
+ animCollapse : Ext.enableFx,
+
+ headerAsText : true,
+
+ buttonAlign : 'right',
+
+ collapsed : false,
+
+ collapseFirst : true,
+
+ minButtonWidth : 75,
+
+
+ elements : 'body',
+
+ preventBodyReset : false,
+
+
+ padding: undefined,
+
+
+ resizeEvent: 'bodyresize',
+
+
+
+
+ toolTarget : 'header',
+ collapseEl : 'bwrap',
+ slideAnchor : 't',
+ disabledClass : '',
+
+
+ deferHeight : true,
+
+ expandDefaults: {
+ duration : 0.25
+ },
+
+ collapseDefaults : {
+ duration : 0.25
+ },
+
+
+ initComponent : function(){
+ Ext.Panel.superclass.initComponent.call(this);
+
+ this.addEvents(
+
+ 'bodyresize',
+
+ 'titlechange',
+
+ 'iconchange',
+
+ 'collapse',
+
+ 'expand',
+
+ 'beforecollapse',
+
+ 'beforeexpand',
+
+ 'beforeclose',
+
+ 'close',
+
+ 'activate',
+
+ 'deactivate'
+ );
+
+ if(this.unstyled){
+ this.baseCls = 'x-plain';
+ }
+
+
+ this.toolbars = [];
+
+ if(this.tbar){
+ this.elements += ',tbar';
+ this.topToolbar = this.createToolbar(this.tbar);
+ this.tbar = null;
+
+ }
+ if(this.bbar){
+ this.elements += ',bbar';
+ this.bottomToolbar = this.createToolbar(this.bbar);
+ this.bbar = null;
+ }
+
+ if(this.header === true){
+ this.elements += ',header';
+ this.header = null;
+ }else if(this.headerCfg || (this.title && this.header !== false)){
+ this.elements += ',header';
+ }
+
+ if(this.footerCfg || this.footer === true){
+ this.elements += ',footer';
+ this.footer = null;
+ }
+
+ if(this.buttons){
+ this.fbar = this.buttons;
+ this.buttons = null;
+ }
+ if(this.fbar){
+ this.createFbar(this.fbar);
+ }
+ if(this.autoLoad){
+ this.on('render', this.doAutoLoad, this, {delay:10});
+ }
+ },
+
+
+ createFbar : function(fbar){
+ var min = this.minButtonWidth;
+ this.elements += ',footer';
+ this.fbar = this.createToolbar(fbar, {
+ buttonAlign: this.buttonAlign,
+ toolbarCls: 'x-panel-fbar',
+ enableOverflow: false,
+ defaults: function(c){
+ return {
+ minWidth: c.minWidth || min
+ };
+ }
+ });
+
+
+
+ this.fbar.items.each(function(c){
+ c.minWidth = c.minWidth || this.minButtonWidth;
+ }, this);
+ this.buttons = this.fbar.items.items;
+ },
+
+
+ createToolbar: function(tb, options){
+ var result;
+
+ if(Ext.isArray(tb)){
+ tb = {
+ items: tb
+ };
+ }
+ result = tb.events ? Ext.apply(tb, options) : this.createComponent(Ext.apply({}, tb, options), 'toolbar');
+ this.toolbars.push(result);
+ return result;
+ },
+
+
+ createElement : function(name, pnode){
+ if(this[name]){
+ pnode.appendChild(this[name].dom);
+ return;
+ }
+
+ if(name === 'bwrap' || this.elements.indexOf(name) != -1){
+ if(this[name+'Cfg']){
+ this[name] = Ext.fly(pnode).createChild(this[name+'Cfg']);
+ }else{
+ var el = document.createElement('div');
+ el.className = this[name+'Cls'];
+ this[name] = Ext.get(pnode.appendChild(el));
+ }
+ if(this[name+'CssClass']){
+ this[name].addClass(this[name+'CssClass']);
+ }
+ if(this[name+'Style']){
+ this[name].applyStyles(this[name+'Style']);
+ }
+ }
+ },
+
+
+ onRender : function(ct, position){
+ Ext.Panel.superclass.onRender.call(this, ct, position);
+ this.createClasses();
+
+ var el = this.el,
+ d = el.dom,
+ bw,
+ ts;
+
+
+ if(this.collapsible && !this.hideCollapseTool){
+ this.tools = this.tools ? this.tools.slice(0) : [];
+ this.tools[this.collapseFirst?'unshift':'push']({
+ id: 'toggle',
+ handler : this.toggleCollapse,
+ scope: this
+ });
+ }
+
+ if(this.tools){
+ ts = this.tools;
+ this.elements += (this.header !== false) ? ',header' : '';
+ }
+ this.tools = {};
+
+ el.addClass(this.baseCls);
+ if(d.firstChild){
+ this.header = el.down('.'+this.headerCls);
+ this.bwrap = el.down('.'+this.bwrapCls);
+ var cp = this.bwrap ? this.bwrap : el;
+ this.tbar = cp.down('.'+this.tbarCls);
+ this.body = cp.down('.'+this.bodyCls);
+ this.bbar = cp.down('.'+this.bbarCls);
+ this.footer = cp.down('.'+this.footerCls);
+ this.fromMarkup = true;
+ }
+ if (this.preventBodyReset === true) {
+ el.addClass('x-panel-reset');
+ }
+ if(this.cls){
+ el.addClass(this.cls);
+ }
+
+ if(this.buttons){
+ this.elements += ',footer';
+ }
+
+
+
+
+ if(this.frame){
+ el.insertHtml('afterBegin', String.format(Ext.Element.boxMarkup, this.baseCls));
+
+ this.createElement('header', d.firstChild.firstChild.firstChild);
+ this.createElement('bwrap', d);
+
+
+ bw = this.bwrap.dom;
+ var ml = d.childNodes[1], bl = d.childNodes[2];
+ bw.appendChild(ml);
+ bw.appendChild(bl);
+
+ var mc = bw.firstChild.firstChild.firstChild;
+ this.createElement('tbar', mc);
+ this.createElement('body', mc);
+ this.createElement('bbar', mc);
+ this.createElement('footer', bw.lastChild.firstChild.firstChild);
+
+ if(!this.footer){
+ this.bwrap.dom.lastChild.className += ' x-panel-nofooter';
+ }
+
+ this.ft = Ext.get(this.bwrap.dom.lastChild);
+ this.mc = Ext.get(mc);
+ }else{
+ this.createElement('header', d);
+ this.createElement('bwrap', d);
+
+
+ bw = this.bwrap.dom;
+ this.createElement('tbar', bw);
+ this.createElement('body', bw);
+ this.createElement('bbar', bw);
+ this.createElement('footer', bw);
+
+ if(!this.header){
+ this.body.addClass(this.bodyCls + '-noheader');
+ if(this.tbar){
+ this.tbar.addClass(this.tbarCls + '-noheader');
+ }
+ }
+ }
+
+ if(Ext.isDefined(this.padding)){
+ this.body.setStyle('padding', this.body.addUnits(this.padding));
+ }
+
+ if(this.border === false){
+ this.el.addClass(this.baseCls + '-noborder');
+ this.body.addClass(this.bodyCls + '-noborder');
+ if(this.header){
+ this.header.addClass(this.headerCls + '-noborder');
+ }
+ if(this.footer){
+ this.footer.addClass(this.footerCls + '-noborder');
+ }
+ if(this.tbar){
+ this.tbar.addClass(this.tbarCls + '-noborder');
+ }
+ if(this.bbar){
+ this.bbar.addClass(this.bbarCls + '-noborder');
+ }
+ }
+
+ if(this.bodyBorder === false){
+ this.body.addClass(this.bodyCls + '-noborder');
+ }
+
+ this.bwrap.enableDisplayMode('block');
+
+ if(this.header){
+ this.header.unselectable();
+
+
+ if(this.headerAsText){
+ this.header.dom.innerHTML =
+ '<span class="' + this.headerTextCls + '">'+this.header.dom.innerHTML+'</span>';
+
+ if(this.iconCls){
+ this.setIconClass(this.iconCls);
+ }
+ }
+ }
+
+ if(this.floating){
+ this.makeFloating(this.floating);
+ }
+
+ if(this.collapsible && this.titleCollapse && this.header){
+ this.mon(this.header, 'click', this.toggleCollapse, this);
+ this.header.setStyle('cursor', 'pointer');
+ }
+ if(ts){
+ this.addTool.apply(this, ts);
+ }
+
+
+ if(this.fbar){
+ this.footer.addClass('x-panel-btns');
+ this.fbar.ownerCt = this;
+ this.fbar.render(this.footer);
+ this.footer.createChild({cls:'x-clear'});
+ }
+ if(this.tbar && this.topToolbar){
+ this.topToolbar.ownerCt = this;
+ this.topToolbar.render(this.tbar);
+ }
+ if(this.bbar && this.bottomToolbar){
+ this.bottomToolbar.ownerCt = this;
+ this.bottomToolbar.render(this.bbar);
+ }
+ },
+
+
+ setIconClass : function(cls){
+ var old = this.iconCls;
+ this.iconCls = cls;
+ if(this.rendered && this.header){
+ if(this.frame){
+ this.header.addClass('x-panel-icon');
+ this.header.replaceClass(old, this.iconCls);
+ }else{
+ var hd = this.header,
+ img = hd.child('img.x-panel-inline-icon');
+ if(img){
+ Ext.fly(img).replaceClass(old, this.iconCls);
+ }else{
+ var hdspan = hd.child('span.' + this.headerTextCls);
+ if (hdspan) {
+ Ext.DomHelper.insertBefore(hdspan.dom, {
+ tag:'img', alt: '', src: Ext.BLANK_IMAGE_URL, cls:'x-panel-inline-icon '+this.iconCls
+ });
+ }
+ }
+ }
+ }
+ this.fireEvent('iconchange', this, cls, old);
+ },
+
+
+ makeFloating : function(cfg){
+ this.floating = true;
+ this.el = new Ext.Layer(Ext.apply({}, cfg, {
+ shadow: Ext.isDefined(this.shadow) ? this.shadow : 'sides',
+ shadowOffset: this.shadowOffset,
+ constrain:false,
+ shim: this.shim === false ? false : undefined
+ }), this.el);
+ },
+
+
+ getTopToolbar : function(){
+ return this.topToolbar;
+ },
+
+
+ getBottomToolbar : function(){
+ return this.bottomToolbar;
+ },
+
+
+ getFooterToolbar : function() {
+ return this.fbar;
+ },
+
+
+ addButton : function(config, handler, scope){
+ if(!this.fbar){
+ this.createFbar([]);
+ }
+ if(handler){
+ if(Ext.isString(config)){
+ config = {text: config};
+ }
+ config = Ext.apply({
+ handler: handler,
+ scope: scope
+ }, config);
+ }
+ return this.fbar.add(config);
+ },
+
+
+ addTool : function(){
+ if(!this.rendered){
+ if(!this.tools){
+ this.tools = [];
+ }
+ Ext.each(arguments, function(arg){
+ this.tools.push(arg);
+ }, this);
+ return;
+ }
+
+ if(!this[this.toolTarget]){
+ return;
+ }
+ if(!this.toolTemplate){
+
+ var tt = new Ext.Template(
+ '<div class="x-tool x-tool-{id}">&#160;</div>'
+ );
+ tt.disableFormats = true;
+ tt.compile();
+ Ext.Panel.prototype.toolTemplate = tt;
+ }
+ for(var i = 0, a = arguments, len = a.length; i < len; i++) {
+ var tc = a[i];
+ if(!this.tools[tc.id]){
+ var overCls = 'x-tool-'+tc.id+'-over';
+ var t = this.toolTemplate.insertFirst(this[this.toolTarget], tc, true);
+ this.tools[tc.id] = t;
+ t.enableDisplayMode('block');
+ this.mon(t, 'click', this.createToolHandler(t, tc, overCls, this));
+ if(tc.on){
+ this.mon(t, tc.on);
+ }
+ if(tc.hidden){
+ t.hide();
+ }
+ if(tc.qtip){
+ if(Ext.isObject(tc.qtip)){
+ Ext.QuickTips.register(Ext.apply({
+ target: t.id
+ }, tc.qtip));
+ } else {
+ t.dom.qtip = tc.qtip;
+ }
+ }
+ t.addClassOnOver(overCls);
+ }
+ }
+ },
+
+ onLayout : function(shallow, force){
+ Ext.Panel.superclass.onLayout.apply(this, arguments);
+ if(this.hasLayout && this.toolbars.length > 0){
+ Ext.each(this.toolbars, function(tb){
+ tb.doLayout(undefined, force);
+ });
+ this.syncHeight();
+ }
+ },
+
+ syncHeight : function(){
+ var h = this.toolbarHeight,
+ bd = this.body,
+ lsh = this.lastSize.height,
+ sz;
+
+ if(this.autoHeight || !Ext.isDefined(lsh) || lsh == 'auto'){
+ return;
+ }
+
+
+ if(h != this.getToolbarHeight()){
+ h = Math.max(0, lsh - this.getFrameHeight());
+ bd.setHeight(h);
+ sz = bd.getSize();
+ this.toolbarHeight = this.getToolbarHeight();
+ this.onBodyResize(sz.width, sz.height);
+ }
+ },
+
+
+ onShow : function(){
+ if(this.floating){
+ return this.el.show();
+ }
+ Ext.Panel.superclass.onShow.call(this);
+ },
+
+
+ onHide : function(){
+ if(this.floating){
+ return this.el.hide();
+ }
+ Ext.Panel.superclass.onHide.call(this);
+ },
+
+
+ createToolHandler : function(t, tc, overCls, panel){
+ return function(e){
+ t.removeClass(overCls);
+ if(tc.stopEvent !== false){
+ e.stopEvent();
+ }
+ if(tc.handler){
+ tc.handler.call(tc.scope || t, e, t, panel, tc);
+ }
+ };
+ },
+
+
+ afterRender : function(){
+ if(this.floating && !this.hidden){
+ this.el.show();
+ }
+ if(this.title){
+ this.setTitle(this.title);
+ }
+ Ext.Panel.superclass.afterRender.call(this);
+ if (this.collapsed) {
+ this.collapsed = false;
+ this.collapse(false);
+ }
+ this.initEvents();
+ },
+
+
+ getKeyMap : function(){
+ if(!this.keyMap){
+ this.keyMap = new Ext.KeyMap(this.el, this.keys);
+ }
+ return this.keyMap;
+ },
+
+
+ initEvents : function(){
+ if(this.keys){
+ this.getKeyMap();
+ }
+ if(this.draggable){
+ this.initDraggable();
+ }
+ if(this.toolbars.length > 0){
+ Ext.each(this.toolbars, function(tb){
+ tb.doLayout();
+ tb.on({
+ scope: this,
+ afterlayout: this.syncHeight,
+ remove: this.syncHeight
+ });
+ }, this);
+ this.syncHeight();
+ }
+
+ },
+
+
+ initDraggable : function(){
+
+ this.dd = new Ext.Panel.DD(this, Ext.isBoolean(this.draggable) ? null : this.draggable);
+ },
+
+
+ beforeEffect : function(anim){
+ if(this.floating){
+ this.el.beforeAction();
+ }
+ if(anim !== false){
+ this.el.addClass('x-panel-animated');
+ }
+ },
+
+
+ afterEffect : function(anim){
+ this.syncShadow();
+ this.el.removeClass('x-panel-animated');
+ },
+
+
+ createEffect : function(a, cb, scope){
+ var o = {
+ scope:scope,
+ block:true
+ };
+ if(a === true){
+ o.callback = cb;
+ return o;
+ }else if(!a.callback){
+ o.callback = cb;
+ }else {
+ o.callback = function(){
+ cb.call(scope);
+ Ext.callback(a.callback, a.scope);
+ };
+ }
+ return Ext.applyIf(o, a);
+ },
+
+
+ collapse : function(animate){
+ if(this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforecollapse', this, animate) === false){
+ return;
+ }
+ var doAnim = animate === true || (animate !== false && this.animCollapse);
+ this.beforeEffect(doAnim);
+ this.onCollapse(doAnim, animate);
+ return this;
+ },
+
+
+ onCollapse : function(doAnim, animArg){
+ if(doAnim){
+ this[this.collapseEl].slideOut(this.slideAnchor,
+ Ext.apply(this.createEffect(animArg||true, this.afterCollapse, this),
+ this.collapseDefaults));
+ }else{
+ this[this.collapseEl].hide(this.hideMode);
+ this.afterCollapse(false);
+ }
+ },
+
+
+ afterCollapse : function(anim){
+ this.collapsed = true;
+ this.el.addClass(this.collapsedCls);
+ if(anim !== false){
+ this[this.collapseEl].hide(this.hideMode);
+ }
+ this.afterEffect(anim);
+
+
+ this.cascade(function(c) {
+ if (c.lastSize) {
+ c.lastSize = { width: undefined, height: undefined };
+ }
+ });
+ this.fireEvent('collapse', this);
+ },
+
+
+ expand : function(animate){
+ if(!this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforeexpand', this, animate) === false){
+ return;
+ }
+ var doAnim = animate === true || (animate !== false && this.animCollapse);
+ this.el.removeClass(this.collapsedCls);
+ this.beforeEffect(doAnim);
+ this.onExpand(doAnim, animate);
+ return this;
+ },
+
+
+ onExpand : function(doAnim, animArg){
+ if(doAnim){
+ this[this.collapseEl].slideIn(this.slideAnchor,
+ Ext.apply(this.createEffect(animArg||true, this.afterExpand, this),
+ this.expandDefaults));
+ }else{
+ this[this.collapseEl].show(this.hideMode);
+ this.afterExpand(false);
+ }
+ },
+
+
+ afterExpand : function(anim){
+ this.collapsed = false;
+ if(anim !== false){
+ this[this.collapseEl].show(this.hideMode);
+ }
+ this.afterEffect(anim);
+ if (this.deferLayout) {
+ delete this.deferLayout;
+ this.doLayout(true);
+ }
+ this.fireEvent('expand', this);
+ },
+
+
+ toggleCollapse : function(animate){
+ this[this.collapsed ? 'expand' : 'collapse'](animate);
+ return this;
+ },
+
+
+ onDisable : function(){
+ if(this.rendered && this.maskDisabled){
+ this.el.mask();
+ }
+ Ext.Panel.superclass.onDisable.call(this);
+ },
+
+
+ onEnable : function(){
+ if(this.rendered && this.maskDisabled){
+ this.el.unmask();
+ }
+ Ext.Panel.superclass.onEnable.call(this);
+ },
+
+
+ onResize : function(adjWidth, adjHeight, rawWidth, rawHeight){
+ var w = adjWidth,
+ h = adjHeight;
+
+ if(Ext.isDefined(w) || Ext.isDefined(h)){
+ if(!this.collapsed){
+
+
+
+
+ if(Ext.isNumber(w)){
+ this.body.setWidth(w = this.adjustBodyWidth(w - this.getFrameWidth()));
+ } else if (w == 'auto') {
+ w = this.body.setWidth('auto').dom.offsetWidth;
+ } else {
+ w = this.body.dom.offsetWidth;
+ }
+
+ if(this.tbar){
+ this.tbar.setWidth(w);
+ if(this.topToolbar){
+ this.topToolbar.setSize(w);
+ }
+ }
+ if(this.bbar){
+ this.bbar.setWidth(w);
+ if(this.bottomToolbar){
+ this.bottomToolbar.setSize(w);
+
+ if (Ext.isIE9m) {
+ this.bbar.setStyle('position', 'static');
+ this.bbar.setStyle('position', '');
+ }
+ }
+ }
+ if(this.footer){
+ this.footer.setWidth(w);
+ if(this.fbar){
+ this.fbar.setSize(Ext.isIE9m ? (w - this.footer.getFrameWidth('lr')) : 'auto');
+ }
+ }
+
+
+ if(Ext.isNumber(h)){
+ h = Math.max(0, h - this.getFrameHeight());
+
+ this.body.setHeight(h);
+ }else if(h == 'auto'){
+ this.body.setHeight(h);
+ }
+
+ if(this.disabled && this.el._mask){
+ this.el._mask.setSize(this.el.dom.clientWidth, this.el.getHeight());
+ }
+ }else{
+
+ this.queuedBodySize = {width: w, height: h};
+ if(!this.queuedExpand && this.allowQueuedExpand !== false){
+ this.queuedExpand = true;
+ this.on('expand', function(){
+ delete this.queuedExpand;
+ this.onResize(this.queuedBodySize.width, this.queuedBodySize.height);
+ }, this, {single:true});
+ }
+ }
+ this.onBodyResize(w, h);
+ }
+ this.syncShadow();
+ Ext.Panel.superclass.onResize.call(this, adjWidth, adjHeight, rawWidth, rawHeight);
+
+ },
+
+
+ onBodyResize: function(w, h){
+ this.fireEvent('bodyresize', this, w, h);
+ },
+
+
+ getToolbarHeight: function(){
+ var h = 0;
+ if(this.rendered){
+ Ext.each(this.toolbars, function(tb){
+ h += tb.getHeight();
+ }, this);
+ }
+ return h;
+ },
+
+
+ adjustBodyHeight : function(h){
+ return h;
+ },
+
+
+ adjustBodyWidth : function(w){
+ return w;
+ },
+
+
+ onPosition : function(){
+ this.syncShadow();
+ },
+
+
+ getFrameWidth : function(){
+ var w = this.el.getFrameWidth('lr') + this.bwrap.getFrameWidth('lr');
+
+ if(this.frame){
+ var l = this.bwrap.dom.firstChild;
+ w += (Ext.fly(l).getFrameWidth('l') + Ext.fly(l.firstChild).getFrameWidth('r'));
+ w += this.mc.getFrameWidth('lr');
+ }
+ return w;
+ },
+
+
+ getFrameHeight : function() {
+ var h = this.el.getFrameWidth('tb') + this.bwrap.getFrameWidth('tb');
+ h += (this.tbar ? this.tbar.getHeight() : 0) +
+ (this.bbar ? this.bbar.getHeight() : 0);
+
+ if(this.frame){
+ h += this.el.dom.firstChild.offsetHeight + this.ft.dom.offsetHeight + this.mc.getFrameWidth('tb');
+ }else{
+ h += (this.header ? this.header.getHeight() : 0) +
+ (this.footer ? this.footer.getHeight() : 0);
+ }
+ return h;
+ },
+
+
+ getInnerWidth : function(){
+ return this.getSize().width - this.getFrameWidth();
+ },
+
+
+ getInnerHeight : function(){
+ return this.body.getHeight();
+
+ },
+
+
+ syncShadow : function(){
+ if(this.floating){
+ this.el.sync(true);
+ }
+ },
+
+
+ getLayoutTarget : function(){
+ return this.body;
+ },
+
+
+ getContentTarget : function(){
+ return this.body;
+ },
+
+
+ setTitle : function(title, iconCls){
+ this.title = title;
+ if(this.header && this.headerAsText){
+ this.header.child('span').update(title);
+ }
+ if(iconCls){
+ this.setIconClass(iconCls);
+ }
+ this.fireEvent('titlechange', this, title);
+ return this;
+ },
+
+
+ getUpdater : function(){
+ return this.body.getUpdater();
+ },
+
+
+ load : function(){
+ var um = this.body.getUpdater();
+ um.update.apply(um, arguments);
+ return this;
+ },
+
+
+ beforeDestroy : function(){
+ Ext.Panel.superclass.beforeDestroy.call(this);
+ if(this.header){
+ this.header.removeAllListeners();
+ }
+ if(this.tools){
+ for(var k in this.tools){
+ Ext.destroy(this.tools[k]);
+ }
+ }
+ if(this.toolbars.length > 0){
+ Ext.each(this.toolbars, function(tb){
+ tb.un('afterlayout', this.syncHeight, this);
+ tb.un('remove', this.syncHeight, this);
+ }, this);
+ }
+ if(Ext.isArray(this.buttons)){
+ while(this.buttons.length) {
+ Ext.destroy(this.buttons[0]);
+ }
+ }
+ if(this.rendered){
+ Ext.destroy(
+ this.ft,
+ this.header,
+ this.footer,
+ this.tbar,
+ this.bbar,
+ this.body,
+ this.mc,
+ this.bwrap,
+ this.dd
+ );
+ if (this.fbar) {
+ Ext.destroy(
+ this.fbar,
+ this.fbar.el
+ );
+ }
+ }
+ Ext.destroy(this.toolbars);
+ },
+
+
+ createClasses : function(){
+ this.headerCls = this.baseCls + '-header';
+ this.headerTextCls = this.baseCls + '-header-text';
+ this.bwrapCls = this.baseCls + '-bwrap';
+ this.tbarCls = this.baseCls + '-tbar';
+ this.bodyCls = this.baseCls + '-body';
+ this.bbarCls = this.baseCls + '-bbar';
+ this.footerCls = this.baseCls + '-footer';
+ },
+
+
+ createGhost : function(cls, useShim, appendTo){
+ var el = document.createElement('div');
+ el.className = 'x-panel-ghost ' + (cls ? cls : '');
+ if(this.header){
+ el.appendChild(this.el.dom.firstChild.cloneNode(true));
+ }
+ Ext.fly(el.appendChild(document.createElement('ul'))).setHeight(this.bwrap.getHeight());
+ el.style.width = this.el.dom.offsetWidth + 'px';;
+ if(!appendTo){
+ this.container.dom.appendChild(el);
+ }else{
+ Ext.getDom(appendTo).appendChild(el);
+ }
+ if(useShim !== false && this.el.useShim !== false){
+ var layer = new Ext.Layer({shadow:false, useDisplay:true, constrain:false}, el);
+ layer.show();
+ return layer;
+ }else{
+ return new Ext.Element(el);
+ }
+ },
+
+
+ doAutoLoad : function(){
+ var u = this.body.getUpdater();
+ if(this.renderer){
+ u.setRenderer(this.renderer);
+ }
+ u.update(Ext.isObject(this.autoLoad) ? this.autoLoad : {url: this.autoLoad});
+ },
+
+
+ getTool : function(id) {
+ return this.tools[id];
+ }
+
+
+});
+Ext.reg('panel', Ext.Panel);
+
+Ext.Editor = function(field, config){
+ if(field.field){
+ this.field = Ext.create(field.field, 'textfield');
+ config = Ext.apply({}, field);
+ delete config.field;
+ }else{
+ this.field = field;
+ }
+ Ext.Editor.superclass.constructor.call(this, config);
+};
+
+Ext.extend(Ext.Editor, Ext.Component, {
+
+
+ allowBlur: true,
+
+
+
+
+
+ value : "",
+
+ alignment: "c-c?",
+
+ offsets: [0, 0],
+
+ shadow : "frame",
+
+ constrain : false,
+
+ swallowKeys : true,
+
+ completeOnEnter : true,
+
+ cancelOnEsc : true,
+
+ updateEl : false,
+
+ initComponent : function(){
+ Ext.Editor.superclass.initComponent.call(this);
+ this.addEvents(
+
+ "beforestartedit",
+
+ "startedit",
+
+ "beforecomplete",
+
+ "complete",
+
+ "canceledit",
+
+ "specialkey"
+ );
+ },
+
+
+ onRender : function(ct, position){
+ this.el = new Ext.Layer({
+ shadow: this.shadow,
+ cls: "x-editor",
+ parentEl : ct,
+ shim : this.shim,
+ shadowOffset: this.shadowOffset || 4,
+ id: this.id,
+ constrain: this.constrain
+ });
+ if(this.zIndex){
+ this.el.setZIndex(this.zIndex);
+ }
+ this.el.setStyle("overflow", Ext.isGecko ? "auto" : "hidden");
+ if(this.field.msgTarget != 'title'){
+ this.field.msgTarget = 'qtip';
+ }
+ this.field.inEditor = true;
+ this.mon(this.field, {
+ scope: this,
+ blur: this.onBlur,
+ specialkey: this.onSpecialKey
+ });
+ if(this.field.grow){
+ this.mon(this.field, "autosize", this.el.sync, this.el, {delay:1});
+ }
+ this.field.render(this.el).show();
+ this.field.getEl().dom.name = '';
+ if(this.swallowKeys){
+ this.field.el.swallowEvent([
+ 'keypress',
+ 'keydown'
+ ]);
+ }
+ },
+
+
+ onSpecialKey : function(field, e){
+ var key = e.getKey(),
+ complete = this.completeOnEnter && key == e.ENTER,
+ cancel = this.cancelOnEsc && key == e.ESC;
+ if(complete || cancel){
+ e.stopEvent();
+ if(complete){
+ this.completeEdit();
+ }else{
+ this.cancelEdit();
+ }
+ if(field.triggerBlur){
+ field.triggerBlur();
+ }
+ }
+ this.fireEvent('specialkey', field, e);
+ },
+
+
+ startEdit : function(el, value){
+ if(this.editing){
+ this.completeEdit();
+ }
+ this.boundEl = Ext.get(el);
+ var v = value !== undefined ? value : this.boundEl.dom.innerHTML;
+ if(!this.rendered){
+ this.render(this.parentEl || document.body);
+ }
+ if(this.fireEvent("beforestartedit", this, this.boundEl, v) !== false){
+ this.startValue = v;
+ this.field.reset();
+ this.field.setValue(v);
+ this.realign(true);
+ this.editing = true;
+ this.show();
+ }
+ },
+
+
+ doAutoSize : function(){
+ if(this.autoSize){
+ var sz = this.boundEl.getSize(),
+ fs = this.field.getSize();
+
+ switch(this.autoSize){
+ case "width":
+ this.setSize(sz.width, fs.height);
+ break;
+ case "height":
+ this.setSize(fs.width, sz.height);
+ break;
+ case "none":
+ this.setSize(fs.width, fs.height);
+ break;
+ default:
+ this.setSize(sz.width, sz.height);
+ }
+ }
+ },
+
+
+ setSize : function(w, h){
+ delete this.field.lastSize;
+ this.field.setSize(w, h);
+ if(this.el){
+
+ if(Ext.isGecko2 || Ext.isOpera || (Ext.isIE7 && Ext.isStrict)){
+
+ this.el.setSize(w, h);
+ }
+ this.el.sync();
+ }
+ },
+
+
+ realign : function(autoSize){
+ if(autoSize === true){
+ this.doAutoSize();
+ }
+ this.el.alignTo(this.boundEl, this.alignment, this.offsets);
+ },
+
+
+ completeEdit : function(remainVisible){
+ if(!this.editing){
+ return;
+ }
+
+ if (this.field.assertValue) {
+ this.field.assertValue();
+ }
+ var v = this.getValue();
+ if(!this.field.isValid()){
+ if(this.revertInvalid !== false){
+ this.cancelEdit(remainVisible);
+ }
+ return;
+ }
+ if(String(v) === String(this.startValue) && this.ignoreNoChange){
+ this.hideEdit(remainVisible);
+ return;
+ }
+ if(this.fireEvent("beforecomplete", this, v, this.startValue) !== false){
+ v = this.getValue();
+ if(this.updateEl && this.boundEl){
+ this.boundEl.update(v);
+ }
+ this.hideEdit(remainVisible);
+ this.fireEvent("complete", this, v, this.startValue);
+ }
+ },
+
+
+ onShow : function(){
+ this.el.show();
+ if(this.hideEl !== false){
+ this.boundEl.hide();
+ }
+ this.field.show().focus(false, true);
+ this.fireEvent("startedit", this.boundEl, this.startValue);
+ },
+
+
+ cancelEdit : function(remainVisible){
+ if(this.editing){
+ var v = this.getValue();
+ this.setValue(this.startValue);
+ this.hideEdit(remainVisible);
+ this.fireEvent("canceledit", this, v, this.startValue);
+ }
+ },
+
+
+ hideEdit: function(remainVisible){
+ if(remainVisible !== true){
+ this.editing = false;
+ this.hide();
+ }
+ },
+
+
+ onBlur : function(){
+
+ if(this.allowBlur === true && this.editing && this.selectSameEditor !== true){
+ this.completeEdit();
+ }
+ },
+
+
+ onHide : function(){
+ if(this.editing){
+ this.completeEdit();
+ return;
+ }
+ this.field.blur();
+ if(this.field.collapse){
+ this.field.collapse();
+ }
+ this.el.hide();
+ if(this.hideEl !== false){
+ this.boundEl.show();
+ }
+ },
+
+
+ setValue : function(v){
+ this.field.setValue(v);
+ },
+
+
+ getValue : function(){
+ return this.field.getValue();
+ },
+
+ beforeDestroy : function(){
+ Ext.destroyMembers(this, 'field');
+
+ delete this.parentEl;
+ delete this.boundEl;
+ }
+});
+Ext.reg('editor', Ext.Editor);
+
+Ext.ColorPalette = Ext.extend(Ext.Component, {
+
+
+ itemCls : 'x-color-palette',
+
+ value : null,
+
+ clickEvent :'click',
+
+ ctype : 'Ext.ColorPalette',
+
+
+ allowReselect : false,
+
+
+ colors : [
+ '000000', '993300', '333300', '003300', '003366', '000080', '333399', '333333',
+ '800000', 'FF6600', '808000', '008000', '008080', '0000FF', '666699', '808080',
+ 'FF0000', 'FF9900', '99CC00', '339966', '33CCCC', '3366FF', '800080', '969696',
+ 'FF00FF', 'FFCC00', 'FFFF00', '00FF00', '00FFFF', '00CCFF', '993366', 'C0C0C0',
+ 'FF99CC', 'FFCC99', 'FFFF99', 'CCFFCC', 'CCFFFF', '99CCFF', 'CC99FF', 'FFFFFF'
+ ],
+
+
+
+
+
+ initComponent : function(){
+ Ext.ColorPalette.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'select'
+ );
+
+ if(this.handler){
+ this.on('select', this.handler, this.scope, true);
+ }
+ },
+
+
+ onRender : function(container, position){
+ this.autoEl = {
+ tag: 'div',
+ cls: this.itemCls
+ };
+ Ext.ColorPalette.superclass.onRender.call(this, container, position);
+ var t = this.tpl || new Ext.XTemplate(
+ '<tpl for="."><a href="#" class="color-{.}" hidefocus="on"><em><span style="background:#{.}" class="x-unselectable" unselectable="on">&#160;</span></em></a></tpl>'
+ );
+ t.overwrite(this.el, this.colors);
+ this.mon(this.el, this.clickEvent, this.handleClick, this, {delegate: 'a'});
+ if(this.clickEvent != 'click'){
+ this.mon(this.el, 'click', Ext.emptyFn, this, {delegate: 'a', preventDefault: true});
+ }
+ },
+
+
+ afterRender : function(){
+ Ext.ColorPalette.superclass.afterRender.call(this);
+ if(this.value){
+ var s = this.value;
+ this.value = null;
+ this.select(s, true);
+ }
+ },
+
+
+ handleClick : function(e, t){
+ e.preventDefault();
+ if(!this.disabled){
+ var c = t.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];
+ this.select(c.toUpperCase());
+ }
+ },
+
+
+ select : function(color, suppressEvent){
+ color = color.replace('#', '');
+ if(color != this.value || this.allowReselect){
+ var el = this.el;
+ if(this.value){
+ el.child('a.color-'+this.value).removeClass('x-color-palette-sel');
+ }
+ el.child('a.color-'+color).addClass('x-color-palette-sel');
+ this.value = color;
+ if(suppressEvent !== true){
+ this.fireEvent('select', this, color);
+ }
+ }
+ }
+
+
+});
+Ext.reg('colorpalette', Ext.ColorPalette);
+Ext.DatePicker = Ext.extend(Ext.BoxComponent, {
+
+ todayText : 'Today',
+
+ okText : '&#160;OK&#160;',
+
+ cancelText : 'Cancel',
+
+
+
+ todayTip : '{0} (Spacebar)',
+
+ minText : 'This date is before the minimum date',
+
+ maxText : 'This date is after the maximum date',
+
+ format : 'm/d/y',
+
+ disabledDaysText : 'Disabled',
+
+ disabledDatesText : 'Disabled',
+
+ monthNames : Date.monthNames,
+
+ dayNames : Date.dayNames,
+
+ nextText : 'Next Month (Control+Right)',
+
+ prevText : 'Previous Month (Control+Left)',
+
+ monthYearText : 'Choose a month (Control+Up/Down to move years)',
+
+ startDay : 0,
+
+ showToday : true,
+
+
+
+
+
+
+
+
+ focusOnSelect: true,
+
+
+
+ initHour: 12,
+
+
+ initComponent : function(){
+ Ext.DatePicker.superclass.initComponent.call(this);
+
+ this.value = this.value ?
+ this.value.clearTime(true) : new Date().clearTime();
+
+ this.addEvents(
+
+ 'select'
+ );
+
+ if(this.handler){
+ this.on('select', this.handler, this.scope || this);
+ }
+
+ this.initDisabledDays();
+ },
+
+
+ initDisabledDays : function(){
+ if(!this.disabledDatesRE && this.disabledDates){
+ var dd = this.disabledDates,
+ len = dd.length - 1,
+ re = '(?:';
+
+ Ext.each(dd, function(d, i){
+ re += Ext.isDate(d) ? '^' + Ext.escapeRe(d.dateFormat(this.format)) + '$' : dd[i];
+ if(i != len){
+ re += '|';
+ }
+ }, this);
+ this.disabledDatesRE = new RegExp(re + ')');
+ }
+ },
+
+
+ setDisabledDates : function(dd){
+ if(Ext.isArray(dd)){
+ this.disabledDates = dd;
+ this.disabledDatesRE = null;
+ }else{
+ this.disabledDatesRE = dd;
+ }
+ this.initDisabledDays();
+ this.update(this.value, true);
+ },
+
+
+ setDisabledDays : function(dd){
+ this.disabledDays = dd;
+ this.update(this.value, true);
+ },
+
+
+ setMinDate : function(dt){
+ this.minDate = dt;
+ this.update(this.value, true);
+ },
+
+
+ setMaxDate : function(dt){
+ this.maxDate = dt;
+ this.update(this.value, true);
+ },
+
+
+ setValue : function(value){
+ this.value = value.clearTime(true);
+ this.update(this.value);
+ },
+
+
+ getValue : function(){
+ return this.value;
+ },
+
+
+ focus : function(){
+ this.update(this.activeDate);
+ },
+
+
+ onEnable: function(initial){
+ Ext.DatePicker.superclass.onEnable.call(this);
+ this.doDisabled(false);
+ this.update(initial ? this.value : this.activeDate);
+ if(Ext.isIE9m){
+ this.el.repaint();
+ }
+
+ },
+
+
+ onDisable : function(){
+ Ext.DatePicker.superclass.onDisable.call(this);
+ this.doDisabled(true);
+ if(Ext.isIE9m && !Ext.isIE8){
+
+ Ext.each([].concat(this.textNodes, this.el.query('th span')), function(el){
+ Ext.fly(el).repaint();
+ });
+ }
+ },
+
+
+ doDisabled : function(disabled){
+ this.keyNav.setDisabled(disabled);
+ this.prevRepeater.setDisabled(disabled);
+ this.nextRepeater.setDisabled(disabled);
+ if(this.showToday){
+ this.todayKeyListener.setDisabled(disabled);
+ this.todayBtn.setDisabled(disabled);
+ }
+ },
+
+
+ onRender : function(container, position){
+ var m = [
+ '<table cellspacing="0">',
+ '<tr><td class="x-date-left"><a href="#" title="', this.prevText ,'">&#160;</a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="', this.nextText ,'">&#160;</a></td></tr>',
+ '<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'],
+ dn = this.dayNames,
+ i;
+ for(i = 0; i < 7; i++){
+ var d = this.startDay+i;
+ if(d > 6){
+ d = d-7;
+ }
+ m.push('<th><span>', dn[d].substr(0,1), '</span></th>');
+ }
+ m[m.length] = '</tr></thead><tbody><tr>';
+ for(i = 0; i < 42; i++) {
+ if(i % 7 === 0 && i !== 0){
+ m[m.length] = '</tr><tr>';
+ }
+ m[m.length] = '<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>';
+ }
+ m.push('</tr></tbody></table></td></tr>',
+ this.showToday ? '<tr><td colspan="3" class="x-date-bottom" align="center"></td></tr>' : '',
+ '</table><div class="x-date-mp"></div>');
+
+ var el = document.createElement('div');
+ el.className = 'x-date-picker';
+ el.innerHTML = m.join('');
+
+ container.dom.insertBefore(el, position);
+
+ this.el = Ext.get(el);
+ this.eventEl = Ext.get(el.firstChild);
+
+ this.prevRepeater = new Ext.util.ClickRepeater(this.el.child('td.x-date-left a'), {
+ handler: this.showPrevMonth,
+ scope: this,
+ preventDefault:true,
+ stopDefault:true
+ });
+
+ this.nextRepeater = new Ext.util.ClickRepeater(this.el.child('td.x-date-right a'), {
+ handler: this.showNextMonth,
+ scope: this,
+ preventDefault:true,
+ stopDefault:true
+ });
+
+ this.monthPicker = this.el.down('div.x-date-mp');
+ this.monthPicker.enableDisplayMode('block');
+
+ this.keyNav = new Ext.KeyNav(this.eventEl, {
+ 'left' : function(e){
+ if(e.ctrlKey){
+ this.showPrevMonth();
+ }else{
+ this.update(this.activeDate.add('d', -1));
+ }
+ },
+
+ 'right' : function(e){
+ if(e.ctrlKey){
+ this.showNextMonth();
+ }else{
+ this.update(this.activeDate.add('d', 1));
+ }
+ },
+
+ 'up' : function(e){
+ if(e.ctrlKey){
+ this.showNextYear();
+ }else{
+ this.update(this.activeDate.add('d', -7));
+ }
+ },
+
+ 'down' : function(e){
+ if(e.ctrlKey){
+ this.showPrevYear();
+ }else{
+ this.update(this.activeDate.add('d', 7));
+ }
+ },
+
+ 'pageUp' : function(e){
+ this.showNextMonth();
+ },
+
+ 'pageDown' : function(e){
+ this.showPrevMonth();
+ },
+
+ 'enter' : function(e){
+ e.stopPropagation();
+ return true;
+ },
+
+ scope : this
+ });
+
+ this.el.unselectable();
+
+ this.cells = this.el.select('table.x-date-inner tbody td');
+ this.textNodes = this.el.query('table.x-date-inner tbody span');
+
+ this.mbtn = new Ext.Button({
+ text: '&#160;',
+ tooltip: this.monthYearText,
+ renderTo: this.el.child('td.x-date-middle', true)
+ });
+ this.mbtn.el.child('em').addClass('x-btn-arrow');
+
+ if(this.showToday){
+ this.todayKeyListener = this.eventEl.addKeyListener(Ext.EventObject.SPACE, this.selectToday, this);
+ var today = (new Date()).dateFormat(this.format);
+ this.todayBtn = new Ext.Button({
+ renderTo: this.el.child('td.x-date-bottom', true),
+ text: String.format(this.todayText, today),
+ tooltip: String.format(this.todayTip, today),
+ handler: this.selectToday,
+ scope: this
+ });
+ }
+ this.mon(this.eventEl, 'mousewheel', this.handleMouseWheel, this);
+ this.mon(this.eventEl, 'click', this.handleDateClick, this, {delegate: 'a.x-date-date'});
+ this.mon(this.mbtn, 'click', this.showMonthPicker, this);
+ this.onEnable(true);
+ },
+
+
+ createMonthPicker : function(){
+ if(!this.monthPicker.dom.firstChild){
+ var buf = ['<table border="0" cellspacing="0">'];
+ for(var i = 0; i < 6; i++){
+ buf.push(
+ '<tr><td class="x-date-mp-month"><a href="#">', Date.getShortMonthName(i), '</a></td>',
+ '<td class="x-date-mp-month x-date-mp-sep"><a href="#">', Date.getShortMonthName(i + 6), '</a></td>',
+ i === 0 ?
+ '<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td></tr>' :
+ '<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>'
+ );
+ }
+ buf.push(
+ '<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">',
+ this.okText,
+ '</button><button type="button" class="x-date-mp-cancel">',
+ this.cancelText,
+ '</button></td></tr>',
+ '</table>'
+ );
+ this.monthPicker.update(buf.join(''));
+
+ this.mon(this.monthPicker, 'click', this.onMonthClick, this);
+ this.mon(this.monthPicker, 'dblclick', this.onMonthDblClick, this);
+
+ this.mpMonths = this.monthPicker.select('td.x-date-mp-month');
+ this.mpYears = this.monthPicker.select('td.x-date-mp-year');
+
+ this.mpMonths.each(function(m, a, i){
+ i += 1;
+ if((i%2) === 0){
+ m.dom.xmonth = 5 + Math.round(i * 0.5);
+ }else{
+ m.dom.xmonth = Math.round((i-1) * 0.5);
+ }
+ });
+ }
+ },
+
+
+ showMonthPicker : function(){
+ if(!this.disabled){
+ this.createMonthPicker();
+ var size = this.el.getSize();
+ this.monthPicker.setSize(size);
+ this.monthPicker.child('table').setSize(size);
+
+ this.mpSelMonth = (this.activeDate || this.value).getMonth();
+ this.updateMPMonth(this.mpSelMonth);
+ this.mpSelYear = (this.activeDate || this.value).getFullYear();
+ this.updateMPYear(this.mpSelYear);
+
+ this.monthPicker.slideIn('t', {duration:0.2});
+ }
+ },
+
+
+ updateMPYear : function(y){
+ this.mpyear = y;
+ var ys = this.mpYears.elements;
+ for(var i = 1; i <= 10; i++){
+ var td = ys[i-1], y2;
+ if((i%2) === 0){
+ y2 = y + Math.round(i * 0.5);
+ td.firstChild.innerHTML = y2;
+ td.xyear = y2;
+ }else{
+ y2 = y - (5-Math.round(i * 0.5));
+ td.firstChild.innerHTML = y2;
+ td.xyear = y2;
+ }
+ this.mpYears.item(i-1)[y2 == this.mpSelYear ? 'addClass' : 'removeClass']('x-date-mp-sel');
+ }
+ },
+
+
+ updateMPMonth : function(sm){
+ this.mpMonths.each(function(m, a, i){
+ m[m.dom.xmonth == sm ? 'addClass' : 'removeClass']('x-date-mp-sel');
+ });
+ },
+
+
+ selectMPMonth : function(m){
+
+ },
+
+
+ onMonthClick : function(e, t){
+ e.stopEvent();
+ var el = new Ext.Element(t), pn;
+ if(el.is('button.x-date-mp-cancel')){
+ this.hideMonthPicker();
+ }
+ else if(el.is('button.x-date-mp-ok')){
+ var d = new Date(this.mpSelYear, this.mpSelMonth, (this.activeDate || this.value).getDate());
+ if(d.getMonth() != this.mpSelMonth){
+
+ d = new Date(this.mpSelYear, this.mpSelMonth, 1).getLastDateOfMonth();
+ }
+ this.update(d);
+ this.hideMonthPicker();
+ }
+ else if((pn = el.up('td.x-date-mp-month', 2))){
+ this.mpMonths.removeClass('x-date-mp-sel');
+ pn.addClass('x-date-mp-sel');
+ this.mpSelMonth = pn.dom.xmonth;
+ }
+ else if((pn = el.up('td.x-date-mp-year', 2))){
+ this.mpYears.removeClass('x-date-mp-sel');
+ pn.addClass('x-date-mp-sel');
+ this.mpSelYear = pn.dom.xyear;
+ }
+ else if(el.is('a.x-date-mp-prev')){
+ this.updateMPYear(this.mpyear-10);
+ }
+ else if(el.is('a.x-date-mp-next')){
+ this.updateMPYear(this.mpyear+10);
+ }
+ },
+
+
+ onMonthDblClick : function(e, t){
+ e.stopEvent();
+ var el = new Ext.Element(t), pn;
+ if((pn = el.up('td.x-date-mp-month', 2))){
+ this.update(new Date(this.mpSelYear, pn.dom.xmonth, (this.activeDate || this.value).getDate()));
+ this.hideMonthPicker();
+ }
+ else if((pn = el.up('td.x-date-mp-year', 2))){
+ this.update(new Date(pn.dom.xyear, this.mpSelMonth, (this.activeDate || this.value).getDate()));
+ this.hideMonthPicker();
+ }
+ },
+
+
+ hideMonthPicker : function(disableAnim){
+ if(this.monthPicker){
+ if(disableAnim === true){
+ this.monthPicker.hide();
+ }else{
+ this.monthPicker.slideOut('t', {duration:0.2});
+ }
+ }
+ },
+
+
+ showPrevMonth : function(e){
+ this.update(this.activeDate.add('mo', -1));
+ },
+
+
+ showNextMonth : function(e){
+ this.update(this.activeDate.add('mo', 1));
+ },
+
+
+ showPrevYear : function(){
+ this.update(this.activeDate.add('y', -1));
+ },
+
+
+ showNextYear : function(){
+ this.update(this.activeDate.add('y', 1));
+ },
+
+
+ handleMouseWheel : function(e){
+ e.stopEvent();
+ if(!this.disabled){
+ var delta = e.getWheelDelta();
+ if(delta > 0){
+ this.showPrevMonth();
+ } else if(delta < 0){
+ this.showNextMonth();
+ }
+ }
+ },
+
+
+ handleDateClick : function(e, t){
+ e.stopEvent();
+ if(!this.disabled && t.dateValue && !Ext.fly(t.parentNode).hasClass('x-date-disabled')){
+ this.cancelFocus = this.focusOnSelect === false;
+ this.setValue(new Date(t.dateValue));
+ delete this.cancelFocus;
+ this.fireEvent('select', this, this.value);
+ }
+ },
+
+
+ selectToday : function(){
+ if(this.todayBtn && !this.todayBtn.disabled){
+ this.setValue(new Date().clearTime());
+ this.fireEvent('select', this, this.value);
+ }
+ },
+
+
+ update : function(date, forceRefresh){
+ if(this.rendered){
+ var vd = this.activeDate, vis = this.isVisible();
+ this.activeDate = date;
+ if(!forceRefresh && vd && this.el){
+ var t = date.getTime();
+ if(vd.getMonth() == date.getMonth() && vd.getFullYear() == date.getFullYear()){
+ this.cells.removeClass('x-date-selected');
+ this.cells.each(function(c){
+ if(c.dom.firstChild.dateValue == t){
+ c.addClass('x-date-selected');
+ if(vis && !this.cancelFocus){
+ Ext.fly(c.dom.firstChild).focus(50);
+ }
+ return false;
+ }
+ }, this);
+ return;
+ }
+ }
+ var days = date.getDaysInMonth(),
+ firstOfMonth = date.getFirstDateOfMonth(),
+ startingPos = firstOfMonth.getDay()-this.startDay;
+
+ if(startingPos < 0){
+ startingPos += 7;
+ }
+ days += startingPos;
+
+ var pm = date.add('mo', -1),
+ prevStart = pm.getDaysInMonth()-startingPos,
+ cells = this.cells.elements,
+ textEls = this.textNodes,
+
+ d = (new Date(pm.getFullYear(), pm.getMonth(), prevStart, this.initHour)),
+ today = new Date().clearTime().getTime(),
+ sel = date.clearTime(true).getTime(),
+ min = this.minDate ? this.minDate.clearTime(true) : Number.NEGATIVE_INFINITY,
+ max = this.maxDate ? this.maxDate.clearTime(true) : Number.POSITIVE_INFINITY,
+ ddMatch = this.disabledDatesRE,
+ ddText = this.disabledDatesText,
+ ddays = this.disabledDays ? this.disabledDays.join('') : false,
+ ddaysText = this.disabledDaysText,
+ format = this.format;
+
+ if(this.showToday){
+ var td = new Date().clearTime(),
+ disable = (td < min || td > max ||
+ (ddMatch && format && ddMatch.test(td.dateFormat(format))) ||
+ (ddays && ddays.indexOf(td.getDay()) != -1));
+
+ if(!this.disabled){
+ this.todayBtn.setDisabled(disable);
+ this.todayKeyListener[disable ? 'disable' : 'enable']();
+ }
+ }
+
+ var setCellClass = function(cal, cell){
+ cell.title = '';
+ var t = d.clearTime(true).getTime();
+ cell.firstChild.dateValue = t;
+ if(t == today){
+ cell.className += ' x-date-today';
+ cell.title = cal.todayText;
+ }
+ if(t == sel){
+ cell.className += ' x-date-selected';
+ if(vis){
+ Ext.fly(cell.firstChild).focus(50);
+ }
+ }
+
+ if(t < min) {
+ cell.className = ' x-date-disabled';
+ cell.title = cal.minText;
+ return;
+ }
+ if(t > max) {
+ cell.className = ' x-date-disabled';
+ cell.title = cal.maxText;
+ return;
+ }
+ if(ddays){
+ if(ddays.indexOf(d.getDay()) != -1){
+ cell.title = ddaysText;
+ cell.className = ' x-date-disabled';
+ }
+ }
+ if(ddMatch && format){
+ var fvalue = d.dateFormat(format);
+ if(ddMatch.test(fvalue)){
+ cell.title = ddText.replace('%0', fvalue);
+ cell.className = ' x-date-disabled';
+ }
+ }
+ };
+
+ var i = 0;
+ for(; i < startingPos; i++) {
+ textEls[i].innerHTML = (++prevStart);
+ d.setDate(d.getDate()+1);
+ cells[i].className = 'x-date-prevday';
+ setCellClass(this, cells[i]);
+ }
+ for(; i < days; i++){
+ var intDay = i - startingPos + 1;
+ textEls[i].innerHTML = (intDay);
+ d.setDate(d.getDate()+1);
+ cells[i].className = 'x-date-active';
+ setCellClass(this, cells[i]);
+ }
+ var extraDays = 0;
+ for(; i < 42; i++) {
+ textEls[i].innerHTML = (++extraDays);
+ d.setDate(d.getDate()+1);
+ cells[i].className = 'x-date-nextday';
+ setCellClass(this, cells[i]);
+ }
+
+ this.mbtn.setText(this.monthNames[date.getMonth()] + ' ' + date.getFullYear());
+
+ if(!this.internalRender){
+ var main = this.el.dom.firstChild,
+ w = main.offsetWidth;
+ this.el.setWidth(w + this.el.getBorderWidth('lr'));
+ Ext.fly(main).setWidth(w);
+ this.internalRender = true;
+
+
+
+ if(Ext.isOpera && !this.secondPass){
+ main.rows[0].cells[1].style.width = (w - (main.rows[0].cells[0].offsetWidth+main.rows[0].cells[2].offsetWidth)) + 'px';
+ this.secondPass = true;
+ this.update.defer(10, this, [date]);
+ }
+ }
+ }
+ },
+
+
+ beforeDestroy : function() {
+ if(this.rendered){
+ Ext.destroy(
+ this.keyNav,
+ this.monthPicker,
+ this.eventEl,
+ this.mbtn,
+ this.nextRepeater,
+ this.prevRepeater,
+ this.cells.el,
+ this.todayBtn
+ );
+ delete this.textNodes;
+ delete this.cells.elements;
+ }
+ }
+
+
+});
+
+Ext.reg('datepicker', Ext.DatePicker);
+
+Ext.LoadMask = function(el, config){
+ this.el = Ext.get(el);
+ Ext.apply(this, config);
+ if(this.store){
+ this.store.on({
+ scope: this,
+ beforeload: this.onBeforeLoad,
+ load: this.onLoad,
+ exception: this.onLoad
+ });
+ this.removeMask = Ext.value(this.removeMask, false);
+ }else{
+ var um = this.el.getUpdater();
+ um.showLoadIndicator = false;
+ um.on({
+ scope: this,
+ beforeupdate: this.onBeforeLoad,
+ update: this.onLoad,
+ failure: this.onLoad
+ });
+ this.removeMask = Ext.value(this.removeMask, true);
+ }
+};
+
+Ext.LoadMask.prototype = {
+
+
+
+ msg : 'Loading...',
+
+ msgCls : 'x-mask-loading',
+
+
+ disabled: false,
+
+
+ disable : function(){
+ this.disabled = true;
+ },
+
+
+ enable : function(){
+ this.disabled = false;
+ },
+
+
+ onLoad : function(){
+ this.el.unmask(this.removeMask);
+ },
+
+
+ onBeforeLoad : function(){
+ if(!this.disabled){
+ this.el.mask(this.msg, this.msgCls);
+ }
+ },
+
+
+ show: function(){
+ this.onBeforeLoad();
+ },
+
+
+ hide: function(){
+ this.onLoad();
+ },
+
+
+ destroy : function(){
+ if(this.store){
+ this.store.un('beforeload', this.onBeforeLoad, this);
+ this.store.un('load', this.onLoad, this);
+ this.store.un('exception', this.onLoad, this);
+ }else{
+ var um = this.el.getUpdater();
+ um.un('beforeupdate', this.onBeforeLoad, this);
+ um.un('update', this.onLoad, this);
+ um.un('failure', this.onLoad, this);
+ }
+ }
+};
+Ext.slider.Thumb = Ext.extend(Object, {
+
+
+ dragging: false,
+
+
+ constructor: function(config) {
+
+ Ext.apply(this, config || {}, {
+ cls: 'x-slider-thumb',
+
+
+ constrain: false
+ });
+
+ Ext.slider.Thumb.superclass.constructor.call(this, config);
+
+ if (this.slider.vertical) {
+ Ext.apply(this, Ext.slider.Thumb.Vertical);
+ }
+ },
+
+
+ render: function() {
+ this.el = this.slider.innerEl.insertFirst({cls: this.cls});
+
+ this.initEvents();
+ },
+
+
+ enable: function() {
+ this.disabled = false;
+ this.el.removeClass(this.slider.disabledClass);
+ },
+
+
+ disable: function() {
+ this.disabled = true;
+ this.el.addClass(this.slider.disabledClass);
+ },
+
+
+ initEvents: function() {
+ var el = this.el;
+
+ el.addClassOnOver('x-slider-thumb-over');
+
+ this.tracker = new Ext.dd.DragTracker({
+ onBeforeStart: this.onBeforeDragStart.createDelegate(this),
+ onStart : this.onDragStart.createDelegate(this),
+ onDrag : this.onDrag.createDelegate(this),
+ onEnd : this.onDragEnd.createDelegate(this),
+ tolerance : 3,
+ autoStart : 300
+ });
+
+ this.tracker.initEl(el);
+ },
+
+
+ onBeforeDragStart : function(e) {
+ if (this.disabled) {
+ return false;
+ } else {
+ this.slider.promoteThumb(this);
+ return true;
+ }
+ },
+
+
+ onDragStart: function(e){
+ this.el.addClass('x-slider-thumb-drag');
+ this.dragging = true;
+ this.dragStartValue = this.value;
+
+ this.slider.fireEvent('dragstart', this.slider, e, this);
+ },
+
+
+ onDrag: function(e) {
+ var slider = this.slider,
+ index = this.index,
+ newValue = this.getNewValue();
+
+ if (this.constrain) {
+ var above = slider.thumbs[index + 1],
+ below = slider.thumbs[index - 1];
+
+ if (below != undefined && newValue <= below.value) newValue = below.value;
+ if (above != undefined && newValue >= above.value) newValue = above.value;
+ }
+
+ slider.setValue(index, newValue, false);
+ slider.fireEvent('drag', slider, e, this);
+ },
+
+ getNewValue: function() {
+ var slider = this.slider,
+ pos = slider.innerEl.translatePoints(this.tracker.getXY());
+
+ return Ext.util.Format.round(slider.reverseValue(pos.left), slider.decimalPrecision);
+ },
+
+
+ onDragEnd: function(e) {
+ var slider = this.slider,
+ value = this.value;
+
+ this.el.removeClass('x-slider-thumb-drag');
+
+ this.dragging = false;
+ slider.fireEvent('dragend', slider, e);
+
+ if (this.dragStartValue != value) {
+ slider.fireEvent('changecomplete', slider, value, this);
+ }
+ },
+
+
+ destroy: function(){
+ Ext.destroyMembers(this, 'tracker', 'el');
+ }
+});
+
+
+Ext.slider.MultiSlider = Ext.extend(Ext.BoxComponent, {
+
+
+ vertical: false,
+
+ minValue: 0,
+
+ maxValue: 100,
+
+ decimalPrecision: 0,
+
+ keyIncrement: 1,
+
+ increment: 0,
+
+
+ clickRange: [5,15],
+
+
+ clickToChange : true,
+
+ animate: true,
+
+ constrainThumbs: true,
+
+
+ topThumbZIndex: 10000,
+
+
+ initComponent : function(){
+ if(!Ext.isDefined(this.value)){
+ this.value = this.minValue;
+ }
+
+
+ this.thumbs = [];
+
+ Ext.slider.MultiSlider.superclass.initComponent.call(this);
+
+ this.keyIncrement = Math.max(this.increment, this.keyIncrement);
+ this.addEvents(
+
+ 'beforechange',
+
+
+ 'change',
+
+
+ 'changecomplete',
+
+
+ 'dragstart',
+
+
+ 'drag',
+
+
+ 'dragend'
+ );
+
+
+ if (this.values == undefined || Ext.isEmpty(this.values)) this.values = [0];
+
+ var values = this.values;
+
+ for (var i=0; i < values.length; i++) {
+ this.addThumb(values[i]);
+ }
+
+ if(this.vertical){
+ Ext.apply(this, Ext.slider.Vertical);
+ }
+ },
+
+
+ addThumb: function(value) {
+ var thumb = new Ext.slider.Thumb({
+ value : value,
+ slider : this,
+ index : this.thumbs.length,
+ constrain: this.constrainThumbs
+ });
+ this.thumbs.push(thumb);
+
+
+ if (this.rendered) thumb.render();
+ },
+
+
+ promoteThumb: function(topThumb) {
+ var thumbs = this.thumbs,
+ zIndex, thumb;
+
+ for (var i = 0, j = thumbs.length; i < j; i++) {
+ thumb = thumbs[i];
+
+ if (thumb == topThumb) {
+ zIndex = this.topThumbZIndex;
+ } else {
+ zIndex = '';
+ }
+
+ thumb.el.setStyle('zIndex', zIndex);
+ }
+ },
+
+
+ onRender : function() {
+ this.autoEl = {
+ cls: 'x-slider ' + (this.vertical ? 'x-slider-vert' : 'x-slider-horz'),
+ cn : {
+ cls: 'x-slider-end',
+ cn : {
+ cls:'x-slider-inner',
+ cn : [{tag:'a', cls:'x-slider-focus', href:"#", tabIndex: '-1', hidefocus:'on'}]
+ }
+ }
+ };
+
+ Ext.slider.MultiSlider.superclass.onRender.apply(this, arguments);
+
+ this.endEl = this.el.first();
+ this.innerEl = this.endEl.first();
+ this.focusEl = this.innerEl.child('.x-slider-focus');
+
+
+ for (var i=0; i < this.thumbs.length; i++) {
+ this.thumbs[i].render();
+ }
+
+
+ var thumb = this.innerEl.child('.x-slider-thumb');
+ this.halfThumb = (this.vertical ? thumb.getHeight() : thumb.getWidth()) / 2;
+
+ this.initEvents();
+ },
+
+
+ initEvents : function(){
+ this.mon(this.el, {
+ scope : this,
+ mousedown: this.onMouseDown,
+ keydown : this.onKeyDown
+ });
+
+ this.focusEl.swallowEvent("click", true);
+ },
+
+
+ onMouseDown : function(e){
+ if(this.disabled){
+ return;
+ }
+
+
+ var thumbClicked = false;
+ for (var i=0; i < this.thumbs.length; i++) {
+ thumbClicked = thumbClicked || e.target == this.thumbs[i].el.dom;
+ }
+
+ if (this.clickToChange && !thumbClicked) {
+ var local = this.innerEl.translatePoints(e.getXY());
+ this.onClickChange(local);
+ }
+ this.focus();
+ },
+
+
+ onClickChange : function(local) {
+ if (local.top > this.clickRange[0] && local.top < this.clickRange[1]) {
+
+ var thumb = this.getNearest(local, 'left'),
+ index = thumb.index;
+
+ this.setValue(index, Ext.util.Format.round(this.reverseValue(local.left), this.decimalPrecision), undefined, true);
+ }
+ },
+
+
+ getNearest: function(local, prop) {
+ var localValue = prop == 'top' ? this.innerEl.getHeight() - local[prop] : local[prop],
+ clickValue = this.reverseValue(localValue),
+ nearestDistance = (this.maxValue - this.minValue) + 5,
+ index = 0,
+ nearest = null;
+
+ for (var i=0; i < this.thumbs.length; i++) {
+ var thumb = this.thumbs[i],
+ value = thumb.value,
+ dist = Math.abs(value - clickValue);
+
+ if (Math.abs(dist <= nearestDistance)) {
+ nearest = thumb;
+ index = i;
+ nearestDistance = dist;
+ }
+ }
+ return nearest;
+ },
+
+
+ onKeyDown : function(e){
+
+ if(this.disabled || this.thumbs.length !== 1){
+ e.preventDefault();
+ return;
+ }
+ var k = e.getKey(),
+ val;
+ switch(k){
+ case e.UP:
+ case e.RIGHT:
+ e.stopEvent();
+ val = e.ctrlKey ? this.maxValue : this.getValue(0) + this.keyIncrement;
+ this.setValue(0, val, undefined, true);
+ break;
+ case e.DOWN:
+ case e.LEFT:
+ e.stopEvent();
+ val = e.ctrlKey ? this.minValue : this.getValue(0) - this.keyIncrement;
+ this.setValue(0, val, undefined, true);
+ break;
+ default:
+ e.preventDefault();
+ }
+ },
+
+
+ doSnap : function(value){
+ if (!(this.increment && value)) {
+ return value;
+ }
+ var newValue = value,
+ inc = this.increment,
+ m = value % inc;
+ if (m != 0) {
+ newValue -= m;
+ if (m * 2 >= inc) {
+ newValue += inc;
+ } else if (m * 2 < -inc) {
+ newValue -= inc;
+ }
+ }
+ return newValue.constrain(this.minValue, this.maxValue);
+ },
+
+
+ afterRender : function(){
+ Ext.slider.MultiSlider.superclass.afterRender.apply(this, arguments);
+
+ for (var i=0; i < this.thumbs.length; i++) {
+ var thumb = this.thumbs[i];
+
+ if (thumb.value !== undefined) {
+ var v = this.normalizeValue(thumb.value);
+
+ if (v !== thumb.value) {
+
+ this.setValue(i, v, false);
+ } else {
+ this.moveThumb(i, this.translateValue(v), false);
+ }
+ }
+ };
+ },
+
+
+ getRatio : function(){
+ var w = this.innerEl.getWidth(),
+ v = this.maxValue - this.minValue;
+ return v == 0 ? w : (w/v);
+ },
+
+
+ normalizeValue : function(v){
+ v = this.doSnap(v);
+ v = Ext.util.Format.round(v, this.decimalPrecision);
+ v = v.constrain(this.minValue, this.maxValue);
+ return v;
+ },
+
+
+ setMinValue : function(val){
+ this.minValue = val;
+ var i = 0,
+ thumbs = this.thumbs,
+ len = thumbs.length,
+ t;
+
+ for(; i < len; ++i){
+ t = thumbs[i];
+ t.value = t.value < val ? val : t.value;
+ }
+ this.syncThumb();
+ },
+
+
+ setMaxValue : function(val){
+ this.maxValue = val;
+ var i = 0,
+ thumbs = this.thumbs,
+ len = thumbs.length,
+ t;
+
+ for(; i < len; ++i){
+ t = thumbs[i];
+ t.value = t.value > val ? val : t.value;
+ }
+ this.syncThumb();
+ },
+
+
+ setValue : function(index, v, animate, changeComplete) {
+ var thumb = this.thumbs[index],
+ el = thumb.el;
+
+ v = this.normalizeValue(v);
+
+ if (v !== thumb.value && this.fireEvent('beforechange', this, v, thumb.value, thumb) !== false) {
+ thumb.value = v;
+ if(this.rendered){
+ this.moveThumb(index, this.translateValue(v), animate !== false);
+ this.fireEvent('change', this, v, thumb);
+ if(changeComplete){
+ this.fireEvent('changecomplete', this, v, thumb);
+ }
+ }
+ }
+ },
+
+
+ translateValue : function(v) {
+ var ratio = this.getRatio();
+ return (v * ratio) - (this.minValue * ratio) - this.halfThumb;
+ },
+
+
+ reverseValue : function(pos){
+ var ratio = this.getRatio();
+ return (pos + (this.minValue * ratio)) / ratio;
+ },
+
+
+ moveThumb: function(index, v, animate){
+ var thumb = this.thumbs[index].el;
+
+ if(!animate || this.animate === false){
+ thumb.setLeft(v);
+ }else{
+ thumb.shift({left: v, stopFx: true, duration:.35});
+ }
+ },
+
+
+ focus : function(){
+ this.focusEl.focus(10);
+ },
+
+
+ onResize : function(w, h){
+ var thumbs = this.thumbs,
+ len = thumbs.length,
+ i = 0;
+
+
+ for(; i < len; ++i){
+ thumbs[i].el.stopFx();
+ }
+
+ if(Ext.isNumber(w)){
+ this.innerEl.setWidth(w - (this.el.getPadding('l') + this.endEl.getPadding('r')));
+ }
+ this.syncThumb();
+ Ext.slider.MultiSlider.superclass.onResize.apply(this, arguments);
+ },
+
+
+ onDisable: function(){
+ Ext.slider.MultiSlider.superclass.onDisable.call(this);
+
+ for (var i=0; i < this.thumbs.length; i++) {
+ var thumb = this.thumbs[i],
+ el = thumb.el;
+
+ thumb.disable();
+
+ if(Ext.isIE){
+
+
+ var xy = el.getXY();
+ el.hide();
+
+ this.innerEl.addClass(this.disabledClass).dom.disabled = true;
+
+ if (!this.thumbHolder) {
+ this.thumbHolder = this.endEl.createChild({cls: 'x-slider-thumb ' + this.disabledClass});
+ }
+
+ this.thumbHolder.show().setXY(xy);
+ }
+ }
+ },
+
+
+ onEnable: function(){
+ Ext.slider.MultiSlider.superclass.onEnable.call(this);
+
+ for (var i=0; i < this.thumbs.length; i++) {
+ var thumb = this.thumbs[i],
+ el = thumb.el;
+
+ thumb.enable();
+
+ if (Ext.isIE) {
+ this.innerEl.removeClass(this.disabledClass).dom.disabled = false;
+
+ if (this.thumbHolder) this.thumbHolder.hide();
+
+ el.show();
+ this.syncThumb();
+ }
+ }
+ },
+
+
+ syncThumb : function() {
+ if (this.rendered) {
+ for (var i=0; i < this.thumbs.length; i++) {
+ this.moveThumb(i, this.translateValue(this.thumbs[i].value));
+ }
+ }
+ },
+
+
+ getValue : function(index) {
+ return this.thumbs[index].value;
+ },
+
+
+ getValues: function() {
+ var values = [];
+
+ for (var i=0; i < this.thumbs.length; i++) {
+ values.push(this.thumbs[i].value);
+ }
+
+ return values;
+ },
+
+
+ beforeDestroy : function(){
+ var thumbs = this.thumbs;
+ for(var i = 0, len = thumbs.length; i < len; ++i){
+ thumbs[i].destroy();
+ thumbs[i] = null;
+ }
+ Ext.destroyMembers(this, 'endEl', 'innerEl', 'focusEl', 'thumbHolder');
+ Ext.slider.MultiSlider.superclass.beforeDestroy.call(this);
+ }
+});
+
+Ext.reg('multislider', Ext.slider.MultiSlider);
+
+
+Ext.slider.SingleSlider = Ext.extend(Ext.slider.MultiSlider, {
+ constructor: function(config) {
+ config = config || {};
+
+ Ext.applyIf(config, {
+ values: [config.value || 0]
+ });
+
+ Ext.slider.SingleSlider.superclass.constructor.call(this, config);
+ },
+
+
+ getValue: function() {
+
+ return Ext.slider.SingleSlider.superclass.getValue.call(this, 0);
+ },
+
+
+ setValue: function(value, animate) {
+ var args = Ext.toArray(arguments),
+ len = args.length;
+
+
+
+
+ if (len == 1 || (len <= 3 && typeof arguments[1] != 'number')) {
+ args.unshift(0);
+ }
+
+ return Ext.slider.SingleSlider.superclass.setValue.apply(this, args);
+ },
+
+
+ syncThumb : function() {
+ return Ext.slider.SingleSlider.superclass.syncThumb.apply(this, [0].concat(arguments));
+ },
+
+
+ getNearest : function(){
+
+ return this.thumbs[0];
+ }
+});
+
+
+Ext.Slider = Ext.slider.SingleSlider;
+
+Ext.reg('slider', Ext.slider.SingleSlider);
+
+
+Ext.slider.Vertical = {
+ onResize : function(w, h){
+ this.innerEl.setHeight(h - (this.el.getPadding('t') + this.endEl.getPadding('b')));
+ this.syncThumb();
+ },
+
+ getRatio : function(){
+ var h = this.innerEl.getHeight(),
+ v = this.maxValue - this.minValue;
+ return h/v;
+ },
+
+ moveThumb: function(index, v, animate) {
+ var thumb = this.thumbs[index],
+ el = thumb.el;
+
+ if (!animate || this.animate === false) {
+ el.setBottom(v);
+ } else {
+ el.shift({bottom: v, stopFx: true, duration:.35});
+ }
+ },
+
+ onClickChange : function(local) {
+ if (local.left > this.clickRange[0] && local.left < this.clickRange[1]) {
+ var thumb = this.getNearest(local, 'top'),
+ index = thumb.index,
+ value = this.minValue + this.reverseValue(this.innerEl.getHeight() - local.top);
+
+ this.setValue(index, Ext.util.Format.round(value, this.decimalPrecision), undefined, true);
+ }
+ }
+};
+
+
+Ext.slider.Thumb.Vertical = {
+ getNewValue: function() {
+ var slider = this.slider,
+ innerEl = slider.innerEl,
+ pos = innerEl.translatePoints(this.tracker.getXY()),
+ bottom = innerEl.getHeight() - pos.top;
+
+ return slider.minValue + Ext.util.Format.round(bottom / slider.getRatio(), slider.decimalPrecision);
+ }
+};
+
+Ext.ProgressBar = Ext.extend(Ext.BoxComponent, {
+
+ baseCls : 'x-progress',
+
+
+ animate : false,
+
+
+ waitTimer : null,
+
+
+ initComponent : function(){
+ Ext.ProgressBar.superclass.initComponent.call(this);
+ this.addEvents(
+
+ "update"
+ );
+ },
+
+
+ onRender : function(ct, position){
+ var tpl = new Ext.Template(
+ '<div class="{cls}-wrap">',
+ '<div class="{cls}-inner">',
+ '<div class="{cls}-bar">',
+ '<div class="{cls}-text">',
+ '<div>&#160;</div>',
+ '</div>',
+ '</div>',
+ '<div class="{cls}-text {cls}-text-back">',
+ '<div>&#160;</div>',
+ '</div>',
+ '</div>',
+ '</div>'
+ );
+
+ this.el = position ? tpl.insertBefore(position, {cls: this.baseCls}, true)
+ : tpl.append(ct, {cls: this.baseCls}, true);
+
+ if(this.id){
+ this.el.dom.id = this.id;
+ }
+ var inner = this.el.dom.firstChild;
+ this.progressBar = Ext.get(inner.firstChild);
+
+ if(this.textEl){
+
+ this.textEl = Ext.get(this.textEl);
+ delete this.textTopEl;
+ }else{
+
+ this.textTopEl = Ext.get(this.progressBar.dom.firstChild);
+ var textBackEl = Ext.get(inner.childNodes[1]);
+ this.textTopEl.setStyle("z-index", 99).addClass('x-hidden');
+ this.textEl = new Ext.CompositeElement([this.textTopEl.dom.firstChild, textBackEl.dom.firstChild]);
+ this.textEl.setWidth(inner.offsetWidth);
+ }
+ this.progressBar.setHeight(inner.offsetHeight);
+ },
+
+
+ afterRender : function(){
+ Ext.ProgressBar.superclass.afterRender.call(this);
+ if(this.value){
+ this.updateProgress(this.value, this.text);
+ }else{
+ this.updateText(this.text);
+ }
+ },
+
+
+ updateProgress : function(value, text, animate){
+ this.value = value || 0;
+ if(text){
+ this.updateText(text);
+ }
+ if(this.rendered && !this.isDestroyed){
+ var w = Math.floor(value*this.el.dom.firstChild.offsetWidth);
+ this.progressBar.setWidth(w, animate === true || (animate !== false && this.animate));
+ if(this.textTopEl){
+
+ this.textTopEl.removeClass('x-hidden').setWidth(w);
+ }
+ }
+ this.fireEvent('update', this, value, text);
+ return this;
+ },
+
+
+ wait : function(o){
+ if(!this.waitTimer){
+ var scope = this;
+ o = o || {};
+ this.updateText(o.text);
+ this.waitTimer = Ext.TaskMgr.start({
+ run: function(i){
+ var inc = o.increment || 10;
+ i -= 1;
+ this.updateProgress(((((i+inc)%inc)+1)*(100/inc))*0.01, null, o.animate);
+ },
+ interval: o.interval || 1000,
+ duration: o.duration,
+ onStop: function(){
+ if(o.fn){
+ o.fn.apply(o.scope || this);
+ }
+ this.reset();
+ },
+ scope: scope
+ });
+ }
+ return this;
+ },
+
+
+ isWaiting : function(){
+ return this.waitTimer !== null;
+ },
+
+
+ updateText : function(text){
+ this.text = text || '&#160;';
+ if(this.rendered){
+ this.textEl.update(this.text);
+ }
+ return this;
+ },
+
+
+ syncProgressBar : function(){
+ if(this.value){
+ this.updateProgress(this.value, this.text);
+ }
+ return this;
+ },
+
+
+ setSize : function(w, h){
+ Ext.ProgressBar.superclass.setSize.call(this, w, h);
+ if(this.textTopEl){
+ var inner = this.el.dom.firstChild;
+ this.textEl.setSize(inner.offsetWidth, inner.offsetHeight);
+ }
+ this.syncProgressBar();
+ return this;
+ },
+
+
+ reset : function(hide){
+ this.updateProgress(0);
+ if(this.textTopEl){
+ this.textTopEl.addClass('x-hidden');
+ }
+ this.clearTimer();
+ if(hide === true){
+ this.hide();
+ }
+ return this;
+ },
+
+
+ clearTimer : function(){
+ if(this.waitTimer){
+ this.waitTimer.onStop = null;
+ Ext.TaskMgr.stop(this.waitTimer);
+ this.waitTimer = null;
+ }
+ },
+
+ onDestroy: function(){
+ this.clearTimer();
+ if(this.rendered){
+ if(this.textEl.isComposite){
+ this.textEl.clear();
+ }
+ Ext.destroyMembers(this, 'textEl', 'progressBar', 'textTopEl');
+ }
+ Ext.ProgressBar.superclass.onDestroy.call(this);
+ }
+});
+Ext.reg('progress', Ext.ProgressBar);
+
+(function() {
+
+var Event=Ext.EventManager;
+var Dom=Ext.lib.Dom;
+
+
+Ext.dd.DragDrop = function(id, sGroup, config) {
+ if(id) {
+ this.init(id, sGroup, config);
+ }
+};
+
+Ext.dd.DragDrop.prototype = {
+
+
+
+
+ id: null,
+
+
+ config: null,
+
+
+ dragElId: null,
+
+
+ handleElId: null,
+
+
+ invalidHandleTypes: null,
+
+
+ invalidHandleIds: null,
+
+
+ invalidHandleClasses: null,
+
+
+ startPageX: 0,
+
+
+ startPageY: 0,
+
+
+ groups: null,
+
+
+ locked: false,
+
+
+ lock: function() {
+ this.locked = true;
+ },
+
+
+ moveOnly: false,
+
+
+ unlock: function() {
+ this.locked = false;
+ },
+
+
+ isTarget: true,
+
+
+ padding: null,
+
+
+ _domRef: null,
+
+
+ __ygDragDrop: true,
+
+
+ constrainX: false,
+
+
+ constrainY: false,
+
+
+ minX: 0,
+
+
+ maxX: 0,
+
+
+ minY: 0,
+
+
+ maxY: 0,
+
+
+ maintainOffset: false,
+
+
+ xTicks: null,
+
+
+ yTicks: null,
+
+
+ primaryButtonOnly: true,
+
+
+ available: false,
+
+
+ hasOuterHandles: false,
+
+
+ b4StartDrag: function(x, y) { },
+
+
+ startDrag: function(x, y) { },
+
+
+ b4Drag: function(e) { },
+
+
+ onDrag: function(e) { },
+
+
+ onDragEnter: function(e, id) { },
+
+
+ b4DragOver: function(e) { },
+
+
+ onDragOver: function(e, id) { },
+
+
+ b4DragOut: function(e) { },
+
+
+ onDragOut: function(e, id) { },
+
+
+ b4DragDrop: function(e) { },
+
+
+ onDragDrop: function(e, id) { },
+
+
+ onInvalidDrop: function(e) { },
+
+
+ b4EndDrag: function(e) { },
+
+
+ endDrag: function(e) { },
+
+
+ b4MouseDown: function(e) { },
+
+
+ onMouseDown: function(e) { },
+
+
+ onMouseUp: function(e) { },
+
+
+ onAvailable: function () {
+ },
+
+
+ defaultPadding : {left:0, right:0, top:0, bottom:0},
+
+
+ constrainTo : function(constrainTo, pad, inContent){
+ if(Ext.isNumber(pad)){
+ pad = {left: pad, right:pad, top:pad, bottom:pad};
+ }
+ pad = pad || this.defaultPadding;
+ var b = Ext.get(this.getEl()).getBox(),
+ ce = Ext.get(constrainTo),
+ s = ce.getScroll(),
+ c,
+ cd = ce.dom;
+ if(cd == document.body){
+ c = { x: s.left, y: s.top, width: Ext.lib.Dom.getViewWidth(), height: Ext.lib.Dom.getViewHeight()};
+ }else{
+ var xy = ce.getXY();
+ c = {x : xy[0], y: xy[1], width: cd.clientWidth, height: cd.clientHeight};
+ }
+
+
+ var topSpace = b.y - c.y,
+ leftSpace = b.x - c.x;
+
+ this.resetConstraints();
+ this.setXConstraint(leftSpace - (pad.left||0),
+ c.width - leftSpace - b.width - (pad.right||0),
+ this.xTickSize
+ );
+ this.setYConstraint(topSpace - (pad.top||0),
+ c.height - topSpace - b.height - (pad.bottom||0),
+ this.yTickSize
+ );
+ },
+
+
+ getEl: function() {
+ if (!this._domRef) {
+ this._domRef = Ext.getDom(this.id);
+ }
+
+ return this._domRef;
+ },
+
+
+ getDragEl: function() {
+ return Ext.getDom(this.dragElId);
+ },
+
+
+ init: function(id, sGroup, config) {
+ this.initTarget(id, sGroup, config);
+ Event.on(this.id, "mousedown", this.handleMouseDown, this);
+
+ },
+
+
+ initTarget: function(id, sGroup, config) {
+
+
+ this.config = config || {};
+
+
+ this.DDM = Ext.dd.DDM;
+
+ this.groups = {};
+
+
+
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+
+
+ this.id = id;
+
+
+ this.addToGroup((sGroup) ? sGroup : "default");
+
+
+
+ this.handleElId = id;
+
+
+ this.setDragElId(id);
+
+
+ this.invalidHandleTypes = { A: "A" };
+ this.invalidHandleIds = {};
+ this.invalidHandleClasses = [];
+
+ this.applyConfig();
+
+ this.handleOnAvailable();
+ },
+
+
+ applyConfig: function() {
+
+
+
+ this.padding = this.config.padding || [0, 0, 0, 0];
+ this.isTarget = (this.config.isTarget !== false);
+ this.maintainOffset = (this.config.maintainOffset);
+ this.primaryButtonOnly = (this.config.primaryButtonOnly !== false);
+
+ },
+
+
+ handleOnAvailable: function() {
+ this.available = true;
+ this.resetConstraints();
+ this.onAvailable();
+ },
+
+
+ setPadding: function(iTop, iRight, iBot, iLeft) {
+
+ if (!iRight && 0 !== iRight) {
+ this.padding = [iTop, iTop, iTop, iTop];
+ } else if (!iBot && 0 !== iBot) {
+ this.padding = [iTop, iRight, iTop, iRight];
+ } else {
+ this.padding = [iTop, iRight, iBot, iLeft];
+ }
+ },
+
+
+ setInitPosition: function(diffX, diffY) {
+ var el = this.getEl();
+
+ if (!this.DDM.verifyEl(el)) {
+ return;
+ }
+
+ var dx = diffX || 0;
+ var dy = diffY || 0;
+
+ var p = Dom.getXY( el );
+
+ this.initPageX = p[0] - dx;
+ this.initPageY = p[1] - dy;
+
+ this.lastPageX = p[0];
+ this.lastPageY = p[1];
+
+ this.setStartPosition(p);
+ },
+
+
+ setStartPosition: function(pos) {
+ var p = pos || Dom.getXY( this.getEl() );
+ this.deltaSetXY = null;
+
+ this.startPageX = p[0];
+ this.startPageY = p[1];
+ },
+
+
+ addToGroup: function(sGroup) {
+ this.groups[sGroup] = true;
+ this.DDM.regDragDrop(this, sGroup);
+ },
+
+
+ removeFromGroup: function(sGroup) {
+ if (this.groups[sGroup]) {
+ delete this.groups[sGroup];
+ }
+
+ this.DDM.removeDDFromGroup(this, sGroup);
+ },
+
+
+ setDragElId: function(id) {
+ this.dragElId = id;
+ },
+
+
+ setHandleElId: function(id) {
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+ this.handleElId = id;
+ this.DDM.regHandle(this.id, id);
+ },
+
+
+ setOuterHandleElId: function(id) {
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+ Event.on(id, "mousedown",
+ this.handleMouseDown, this);
+ this.setHandleElId(id);
+
+ this.hasOuterHandles = true;
+ },
+
+
+ unreg: function() {
+ Event.un(this.id, "mousedown",
+ this.handleMouseDown);
+ this._domRef = null;
+ this.DDM._remove(this);
+ },
+
+ destroy : function(){
+ this.unreg();
+ },
+
+
+ isLocked: function() {
+ return (this.DDM.isLocked() || this.locked);
+ },
+
+
+ handleMouseDown: function(e, oDD){
+ if (this.primaryButtonOnly && e.button != 0) {
+ return;
+ }
+
+ if (this.isLocked()) {
+ return;
+ }
+
+ this.DDM.refreshCache(this.groups);
+
+ var pt = new Ext.lib.Point(Ext.lib.Event.getPageX(e), Ext.lib.Event.getPageY(e));
+ if (!this.hasOuterHandles && !this.DDM.isOverTarget(pt, this) ) {
+ } else {
+ if (this.clickValidator(e)) {
+
+
+ this.setStartPosition();
+
+ this.b4MouseDown(e);
+ this.onMouseDown(e);
+
+ this.DDM.handleMouseDown(e, this);
+
+ if (this.preventDefault || this.stopPropagation) {
+ if (this.preventDefault) {
+ e.preventDefault();
+ }
+ if (this.stopPropagation) {
+ e.stopPropagation();
+ }
+ } else {
+ this.DDM.stopEvent(e);
+ }
+ } else {
+
+
+ }
+ }
+ },
+
+ clickValidator: function(e) {
+ var target = e.getTarget();
+ return ( this.isValidHandleChild(target) &&
+ (this.id == this.handleElId ||
+ this.DDM.handleWasClicked(target, this.id)) );
+ },
+
+
+ addInvalidHandleType: function(tagName) {
+ var type = tagName.toUpperCase();
+ this.invalidHandleTypes[type] = type;
+ },
+
+
+ addInvalidHandleId: function(id) {
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+ this.invalidHandleIds[id] = id;
+ },
+
+
+ addInvalidHandleClass: function(cssClass) {
+ this.invalidHandleClasses.push(cssClass);
+ },
+
+
+ removeInvalidHandleType: function(tagName) {
+ var type = tagName.toUpperCase();
+
+ delete this.invalidHandleTypes[type];
+ },
+
+
+ removeInvalidHandleId: function(id) {
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+ delete this.invalidHandleIds[id];
+ },
+
+
+ removeInvalidHandleClass: function(cssClass) {
+ for (var i=0, len=this.invalidHandleClasses.length; i<len; ++i) {
+ if (this.invalidHandleClasses[i] == cssClass) {
+ delete this.invalidHandleClasses[i];
+ }
+ }
+ },
+
+
+ isValidHandleChild: function(node) {
+
+ var valid = true;
+
+ var nodeName;
+ try {
+ nodeName = node.nodeName.toUpperCase();
+ } catch(e) {
+ nodeName = node.nodeName;
+ }
+ valid = valid && !this.invalidHandleTypes[nodeName];
+ valid = valid && !this.invalidHandleIds[node.id];
+
+ for (var i=0, len=this.invalidHandleClasses.length; valid && i<len; ++i) {
+ valid = !Ext.fly(node).hasClass(this.invalidHandleClasses[i]);
+ }
+
+
+ return valid;
+
+ },
+
+
+ setXTicks: function(iStartX, iTickSize) {
+ this.xTicks = [];
+ this.xTickSize = iTickSize;
+
+ var tickMap = {};
+
+ for (var i = this.initPageX; i >= this.minX; i = i - iTickSize) {
+ if (!tickMap[i]) {
+ this.xTicks[this.xTicks.length] = i;
+ tickMap[i] = true;
+ }
+ }
+
+ for (i = this.initPageX; i <= this.maxX; i = i + iTickSize) {
+ if (!tickMap[i]) {
+ this.xTicks[this.xTicks.length] = i;
+ tickMap[i] = true;
+ }
+ }
+
+ this.xTicks.sort(this.DDM.numericSort) ;
+ },
+
+
+ setYTicks: function(iStartY, iTickSize) {
+ this.yTicks = [];
+ this.yTickSize = iTickSize;
+
+ var tickMap = {};
+
+ for (var i = this.initPageY; i >= this.minY; i = i - iTickSize) {
+ if (!tickMap[i]) {
+ this.yTicks[this.yTicks.length] = i;
+ tickMap[i] = true;
+ }
+ }
+
+ for (i = this.initPageY; i <= this.maxY; i = i + iTickSize) {
+ if (!tickMap[i]) {
+ this.yTicks[this.yTicks.length] = i;
+ tickMap[i] = true;
+ }
+ }
+
+ this.yTicks.sort(this.DDM.numericSort) ;
+ },
+
+
+ setXConstraint: function(iLeft, iRight, iTickSize) {
+ this.leftConstraint = iLeft;
+ this.rightConstraint = iRight;
+
+ this.minX = this.initPageX - iLeft;
+ this.maxX = this.initPageX + iRight;
+ if (iTickSize) { this.setXTicks(this.initPageX, iTickSize); }
+
+ this.constrainX = true;
+ },
+
+
+ clearConstraints: function() {
+ this.constrainX = false;
+ this.constrainY = false;
+ this.clearTicks();
+ },
+
+
+ clearTicks: function() {
+ this.xTicks = null;
+ this.yTicks = null;
+ this.xTickSize = 0;
+ this.yTickSize = 0;
+ },
+
+
+ setYConstraint: function(iUp, iDown, iTickSize) {
+ this.topConstraint = iUp;
+ this.bottomConstraint = iDown;
+
+ this.minY = this.initPageY - iUp;
+ this.maxY = this.initPageY + iDown;
+ if (iTickSize) { this.setYTicks(this.initPageY, iTickSize); }
+
+ this.constrainY = true;
+
+ },
+
+
+ resetConstraints: function() {
+
+ if (this.initPageX || this.initPageX === 0) {
+
+ var dx = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0;
+ var dy = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0;
+
+ this.setInitPosition(dx, dy);
+
+
+ } else {
+ this.setInitPosition();
+ }
+
+ if (this.constrainX) {
+ this.setXConstraint( this.leftConstraint,
+ this.rightConstraint,
+ this.xTickSize );
+ }
+
+ if (this.constrainY) {
+ this.setYConstraint( this.topConstraint,
+ this.bottomConstraint,
+ this.yTickSize );
+ }
+ },
+
+
+ getTick: function(val, tickArray) {
+ if (!tickArray) {
+
+
+ return val;
+ } else if (tickArray[0] >= val) {
+
+
+ return tickArray[0];
+ } else {
+ for (var i=0, len=tickArray.length; i<len; ++i) {
+ var next = i + 1;
+ if (tickArray[next] && tickArray[next] >= val) {
+ var diff1 = val - tickArray[i];
+ var diff2 = tickArray[next] - val;
+ return (diff2 > diff1) ? tickArray[i] : tickArray[next];
+ }
+ }
+
+
+
+ return tickArray[tickArray.length - 1];
+ }
+ },
+
+
+ toString: function() {
+ return ("DragDrop " + this.id);
+ }
+
+};
+
+})();
+
+
+
+
+if (!Ext.dd.DragDropMgr) {
+
+
+Ext.dd.DragDropMgr = function() {
+
+ var Event = Ext.EventManager;
+
+ return {
+
+
+ ids: {},
+
+
+ handleIds: {},
+
+
+ dragCurrent: null,
+
+
+ dragOvers: {},
+
+
+ deltaX: 0,
+
+
+ deltaY: 0,
+
+
+ preventDefault: true,
+
+
+ stopPropagation: true,
+
+
+ initialized: false,
+
+
+ locked: false,
+
+
+ init: function() {
+ this.initialized = true;
+ },
+
+
+ POINT: 0,
+
+
+ INTERSECT: 1,
+
+
+ mode: 0,
+
+
+ notifyOccluded: false,
+
+
+ _execOnAll: function(sMethod, args) {
+ for (var i in this.ids) {
+ for (var j in this.ids[i]) {
+ var oDD = this.ids[i][j];
+ if (! this.isTypeOfDD(oDD)) {
+ continue;
+ }
+ oDD[sMethod].apply(oDD, args);
+ }
+ }
+ },
+
+
+ _onLoad: function() {
+
+ this.init();
+
+
+ Event.on(document, "mouseup", this.handleMouseUp, this, true);
+ Event.on(document, "mousemove", this.handleMouseMove, this, true);
+ Event.on(window, "unload", this._onUnload, this, true);
+ Event.on(window, "resize", this._onResize, this, true);
+
+
+ },
+
+
+ _onResize: function(e) {
+ this._execOnAll("resetConstraints", []);
+ },
+
+
+ lock: function() { this.locked = true; },
+
+
+ unlock: function() { this.locked = false; },
+
+
+ isLocked: function() { return this.locked; },
+
+
+ locationCache: {},
+
+
+ useCache: true,
+
+
+ clickPixelThresh: 3,
+
+
+ clickTimeThresh: 350,
+
+
+ dragThreshMet: false,
+
+
+ clickTimeout: null,
+
+
+ startX: 0,
+
+
+ startY: 0,
+
+
+ regDragDrop: function(oDD, sGroup) {
+ if (!this.initialized) { this.init(); }
+
+ if (!this.ids[sGroup]) {
+ this.ids[sGroup] = {};
+ }
+ this.ids[sGroup][oDD.id] = oDD;
+ },
+
+
+ removeDDFromGroup: function(oDD, sGroup) {
+ if (!this.ids[sGroup]) {
+ this.ids[sGroup] = {};
+ }
+
+ var obj = this.ids[sGroup];
+ if (obj && obj[oDD.id]) {
+ delete obj[oDD.id];
+ }
+ },
+
+
+ _remove: function(oDD) {
+ for (var g in oDD.groups) {
+ if (g && this.ids[g] && this.ids[g][oDD.id]) {
+ delete this.ids[g][oDD.id];
+ }
+ }
+ delete this.handleIds[oDD.id];
+ },
+
+
+ regHandle: function(sDDId, sHandleId) {
+ if (!this.handleIds[sDDId]) {
+ this.handleIds[sDDId] = {};
+ }
+ this.handleIds[sDDId][sHandleId] = sHandleId;
+ },
+
+
+ isDragDrop: function(id) {
+ return ( this.getDDById(id) ) ? true : false;
+ },
+
+
+ getRelated: function(p_oDD, bTargetsOnly) {
+ var oDDs = [];
+ for (var i in p_oDD.groups) {
+ for (var j in this.ids[i]) {
+ var dd = this.ids[i][j];
+ if (! this.isTypeOfDD(dd)) {
+ continue;
+ }
+ if (!bTargetsOnly || dd.isTarget) {
+ oDDs[oDDs.length] = dd;
+ }
+ }
+ }
+
+ return oDDs;
+ },
+
+
+ isLegalTarget: function (oDD, oTargetDD) {
+ var targets = this.getRelated(oDD, true);
+ for (var i=0, len=targets.length;i<len;++i) {
+ if (targets[i].id == oTargetDD.id) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+
+ isTypeOfDD: function (oDD) {
+ return (oDD && oDD.__ygDragDrop);
+ },
+
+
+ isHandle: function(sDDId, sHandleId) {
+ return ( this.handleIds[sDDId] &&
+ this.handleIds[sDDId][sHandleId] );
+ },
+
+
+ getDDById: function(id) {
+ for (var i in this.ids) {
+ if (this.ids[i][id]) {
+ return this.ids[i][id];
+ }
+ }
+ return null;
+ },
+
+
+ handleMouseDown: function(e, oDD) {
+ if(Ext.QuickTips){
+ Ext.QuickTips.ddDisable();
+ }
+ if(this.dragCurrent){
+
+
+ this.handleMouseUp(e);
+ }
+
+ this.currentTarget = e.getTarget();
+ this.dragCurrent = oDD;
+
+ var el = oDD.getEl();
+
+
+ this.startX = e.getPageX();
+ this.startY = e.getPageY();
+
+ this.deltaX = this.startX - el.offsetLeft;
+ this.deltaY = this.startY - el.offsetTop;
+
+ this.dragThreshMet = false;
+
+ this.clickTimeout = setTimeout(
+ function() {
+ var DDM = Ext.dd.DDM;
+ DDM.startDrag(DDM.startX, DDM.startY);
+ },
+ this.clickTimeThresh );
+ },
+
+
+ startDrag: function(x, y) {
+ clearTimeout(this.clickTimeout);
+ if (this.dragCurrent) {
+ this.dragCurrent.b4StartDrag(x, y);
+ this.dragCurrent.startDrag(x, y);
+ }
+ this.dragThreshMet = true;
+ },
+
+
+ handleMouseUp: function(e) {
+
+ if(Ext.QuickTips){
+ Ext.QuickTips.ddEnable();
+ }
+ if (! this.dragCurrent) {
+ return;
+ }
+
+ clearTimeout(this.clickTimeout);
+
+ if (this.dragThreshMet) {
+ this.fireEvents(e, true);
+ } else {
+ }
+
+ this.stopDrag(e);
+
+ this.stopEvent(e);
+ },
+
+
+ stopEvent: function(e){
+ if(this.stopPropagation) {
+ e.stopPropagation();
+ }
+
+ if (this.preventDefault) {
+ e.preventDefault();
+ }
+ },
+
+
+ stopDrag: function(e) {
+
+ if (this.dragCurrent) {
+ if (this.dragThreshMet) {
+ this.dragCurrent.b4EndDrag(e);
+ this.dragCurrent.endDrag(e);
+ }
+
+ this.dragCurrent.onMouseUp(e);
+ }
+
+ this.dragCurrent = null;
+ this.dragOvers = {};
+ },
+
+
+ handleMouseMove: function(e) {
+ if (! this.dragCurrent) {
+ return true;
+ }
+
+
+
+ if (Ext.isIE && (e.button !== 0 && e.button !== 1 && e.button !== 2)) {
+ this.stopEvent(e);
+ return this.handleMouseUp(e);
+ }
+
+ if (!this.dragThreshMet) {
+ var diffX = Math.abs(this.startX - e.getPageX());
+ var diffY = Math.abs(this.startY - e.getPageY());
+ if (diffX > this.clickPixelThresh ||
+ diffY > this.clickPixelThresh) {
+ this.startDrag(this.startX, this.startY);
+ }
+ }
+
+ if (this.dragThreshMet) {
+ this.dragCurrent.b4Drag(e);
+ this.dragCurrent.onDrag(e);
+ if(!this.dragCurrent.moveOnly){
+ this.fireEvents(e, false);
+ }
+ }
+
+ this.stopEvent(e);
+
+ return true;
+ },
+
+
+ fireEvents: function(e, isDrop) {
+ var me = this,
+ dragCurrent = me.dragCurrent,
+ mousePoint = e.getPoint(),
+ overTarget,
+ overTargetEl,
+ allTargets = [],
+ oldOvers = [],
+ outEvts = [],
+ overEvts = [],
+ dropEvts = [],
+ enterEvts = [],
+ needsSort,
+ i,
+ len,
+ sGroup;
+
+
+
+ if (!dragCurrent || dragCurrent.isLocked()) {
+ return;
+ }
+
+
+
+ for (i in me.dragOvers) {
+ overTarget = me.dragOvers[i];
+
+ if (! me.isTypeOfDD(overTarget)) {
+ continue;
+ }
+
+ if (! this.isOverTarget(mousePoint, overTarget, me.mode)) {
+ outEvts.push( overTarget );
+ }
+
+ oldOvers[i] = true;
+ delete me.dragOvers[i];
+ }
+
+
+
+
+ for (sGroup in dragCurrent.groups) {
+
+ if ("string" != typeof sGroup) {
+ continue;
+ }
+
+
+ for (i in me.ids[sGroup]) {
+ overTarget = me.ids[sGroup][i];
+
+
+
+
+
+
+ if (me.isTypeOfDD(overTarget) &&
+ (overTargetEl = overTarget.getEl()) &&
+ (overTarget.isTarget) &&
+ (!overTarget.isLocked()) &&
+ ((overTarget != dragCurrent) || (dragCurrent.ignoreSelf === false))) {
+
+
+ if ((overTarget.zIndex = me.getZIndex(overTargetEl)) !== -1) {
+ needsSort = true;
+ }
+ allTargets.push(overTarget);
+ }
+ }
+ }
+
+
+ if (needsSort) {
+ allTargets.sort(me.byZIndex);
+ }
+
+
+
+ for (i = 0, len = allTargets.length; i < len; i++) {
+ overTarget = allTargets[i];
+
+
+ if (me.isOverTarget(mousePoint, overTarget, me.mode)) {
+
+ if (isDrop) {
+ dropEvts.push( overTarget );
+
+ } else {
+
+ if (!oldOvers[overTarget.id]) {
+ enterEvts.push( overTarget );
+
+ } else {
+ overEvts.push( overTarget );
+ }
+ me.dragOvers[overTarget.id] = overTarget;
+ }
+
+
+ if (!me.notifyOccluded) {
+ break;
+ }
+ }
+ }
+
+ if (me.mode) {
+ if (outEvts.length) {
+ dragCurrent.b4DragOut(e, outEvts);
+ dragCurrent.onDragOut(e, outEvts);
+ }
+
+ if (enterEvts.length) {
+ dragCurrent.onDragEnter(e, enterEvts);
+ }
+
+ if (overEvts.length) {
+ dragCurrent.b4DragOver(e, overEvts);
+ dragCurrent.onDragOver(e, overEvts);
+ }
+
+ if (dropEvts.length) {
+ dragCurrent.b4DragDrop(e, dropEvts);
+ dragCurrent.onDragDrop(e, dropEvts);
+ }
+
+ } else {
+
+ for (i=0, len=outEvts.length; i<len; ++i) {
+ dragCurrent.b4DragOut(e, outEvts[i].id);
+ dragCurrent.onDragOut(e, outEvts[i].id);
+ }
+
+
+ for (i=0,len=enterEvts.length; i<len; ++i) {
+
+ dragCurrent.onDragEnter(e, enterEvts[i].id);
+ }
+
+
+ for (i=0,len=overEvts.length; i<len; ++i) {
+ dragCurrent.b4DragOver(e, overEvts[i].id);
+ dragCurrent.onDragOver(e, overEvts[i].id);
+ }
+
+
+ for (i=0, len=dropEvts.length; i<len; ++i) {
+ dragCurrent.b4DragDrop(e, dropEvts[i].id);
+ dragCurrent.onDragDrop(e, dropEvts[i].id);
+ }
+
+ }
+
+
+ if (isDrop && !dropEvts.length) {
+ dragCurrent.onInvalidDrop(e);
+ }
+ },
+
+
+ getZIndex: function(element) {
+ var body = document.body,
+ z,
+ zIndex = -1;
+
+ element = Ext.getDom(element);
+ while (element !== body) {
+ if (!isNaN(z = Number(Ext.fly(element).getStyle('zIndex')))) {
+ zIndex = z;
+ }
+ element = element.parentNode;
+ }
+ return zIndex;
+ },
+
+
+ byZIndex: function(d1, d2) {
+ return d1.zIndex < d2.zIndex;
+ },
+
+
+ getBestMatch: function(dds) {
+ var winner = null;
+
+
+
+
+
+
+ var len = dds.length;
+
+ if (len == 1) {
+ winner = dds[0];
+ } else {
+
+ for (var i=0; i<len; ++i) {
+ var dd = dds[i];
+
+
+
+ if (dd.cursorIsOver) {
+ winner = dd;
+ break;
+
+ } else {
+ if (!winner ||
+ winner.overlap.getArea() < dd.overlap.getArea()) {
+ winner = dd;
+ }
+ }
+ }
+ }
+
+ return winner;
+ },
+
+
+ refreshCache: function(groups) {
+ for (var sGroup in groups) {
+ if ("string" != typeof sGroup) {
+ continue;
+ }
+ for (var i in this.ids[sGroup]) {
+ var oDD = this.ids[sGroup][i];
+
+ if (this.isTypeOfDD(oDD)) {
+
+ var loc = this.getLocation(oDD);
+ if (loc) {
+ this.locationCache[oDD.id] = loc;
+ } else {
+ delete this.locationCache[oDD.id];
+
+
+
+ }
+ }
+ }
+ }
+ },
+
+
+ verifyEl: function(el) {
+ if (el) {
+ var parent;
+ if(Ext.isIE){
+ try{
+ parent = el.offsetParent;
+ }catch(e){}
+ }else{
+ parent = el.offsetParent;
+ }
+ if (parent) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+
+ getLocation: function(oDD) {
+ if (! this.isTypeOfDD(oDD)) {
+ return null;
+ }
+
+ var el = oDD.getEl(), pos, x1, x2, y1, y2, t, r, b, l, region;
+
+ try {
+ pos= Ext.lib.Dom.getXY(el);
+ } catch (e) { }
+
+ if (!pos) {
+ return null;
+ }
+
+ x1 = pos[0];
+ x2 = x1 + el.offsetWidth;
+ y1 = pos[1];
+ y2 = y1 + el.offsetHeight;
+
+ t = y1 - oDD.padding[0];
+ r = x2 + oDD.padding[1];
+ b = y2 + oDD.padding[2];
+ l = x1 - oDD.padding[3];
+
+ return new Ext.lib.Region( t, r, b, l );
+ },
+
+
+ isOverTarget: function(pt, oTarget, intersect) {
+
+ var loc = this.locationCache[oTarget.id];
+ if (!loc || !this.useCache) {
+ loc = this.getLocation(oTarget);
+ this.locationCache[oTarget.id] = loc;
+
+ }
+
+ if (!loc) {
+ return false;
+ }
+
+ oTarget.cursorIsOver = loc.contains( pt );
+
+
+
+
+
+
+ var dc = this.dragCurrent;
+ if (!dc || !dc.getTargetCoord ||
+ (!intersect && !dc.constrainX && !dc.constrainY)) {
+ return oTarget.cursorIsOver;
+ }
+
+ oTarget.overlap = null;
+
+
+
+
+
+ var pos = dc.getTargetCoord(pt.x, pt.y);
+
+ var el = dc.getDragEl();
+ var curRegion = new Ext.lib.Region( pos.y,
+ pos.x + el.offsetWidth,
+ pos.y + el.offsetHeight,
+ pos.x );
+
+ var overlap = curRegion.intersect(loc);
+
+ if (overlap) {
+ oTarget.overlap = overlap;
+ return (intersect) ? true : oTarget.cursorIsOver;
+ } else {
+ return false;
+ }
+ },
+
+
+ _onUnload: function(e, me) {
+ Event.removeListener(document, "mouseup", this.handleMouseUp, this);
+ Event.removeListener(document, "mousemove", this.handleMouseMove, this);
+ Event.removeListener(window, "resize", this._onResize, this);
+ Ext.dd.DragDropMgr.unregAll();
+ },
+
+
+ unregAll: function() {
+
+ if (this.dragCurrent) {
+ this.stopDrag();
+ this.dragCurrent = null;
+ }
+
+ this._execOnAll("unreg", []);
+
+ for (var i in this.elementCache) {
+ delete this.elementCache[i];
+ }
+
+ this.elementCache = {};
+ this.ids = {};
+ },
+
+
+ elementCache: {},
+
+
+ getElWrapper: function(id) {
+ var oWrapper = this.elementCache[id];
+ if (!oWrapper || !oWrapper.el) {
+ oWrapper = this.elementCache[id] =
+ new this.ElementWrapper(Ext.getDom(id));
+ }
+ return oWrapper;
+ },
+
+
+ getElement: function(id) {
+ return Ext.getDom(id);
+ },
+
+
+ getCss: function(id) {
+ var el = Ext.getDom(id);
+ return (el) ? el.style : null;
+ },
+
+
+ ElementWrapper: function(el) {
+
+ this.el = el || null;
+
+ this.id = this.el && el.id;
+
+ this.css = this.el && el.style;
+ },
+
+
+ getPosX: function(el) {
+ return Ext.lib.Dom.getX(el);
+ },
+
+
+ getPosY: function(el) {
+ return Ext.lib.Dom.getY(el);
+ },
+
+
+ swapNode: function(n1, n2) {
+ if (n1.swapNode) {
+ n1.swapNode(n2);
+ } else {
+ var p = n2.parentNode;
+ var s = n2.nextSibling;
+
+ if (s == n1) {
+ p.insertBefore(n1, n2);
+ } else if (n2 == n1.nextSibling) {
+ p.insertBefore(n2, n1);
+ } else {
+ n1.parentNode.replaceChild(n2, n1);
+ p.insertBefore(n1, s);
+ }
+ }
+ },
+
+
+ getScroll: function () {
+ var t, l, dde=document.documentElement, db=document.body;
+ if (dde && (dde.scrollTop || dde.scrollLeft)) {
+ t = dde.scrollTop;
+ l = dde.scrollLeft;
+ } else if (db) {
+ t = db.scrollTop;
+ l = db.scrollLeft;
+ } else {
+
+ }
+ return { top: t, left: l };
+ },
+
+
+ getStyle: function(el, styleProp) {
+ return Ext.fly(el).getStyle(styleProp);
+ },
+
+
+ getScrollTop: function () {
+ return this.getScroll().top;
+ },
+
+
+ getScrollLeft: function () {
+ return this.getScroll().left;
+ },
+
+
+ moveToEl: function (moveEl, targetEl) {
+ var aCoord = Ext.lib.Dom.getXY(targetEl);
+ Ext.lib.Dom.setXY(moveEl, aCoord);
+ },
+
+
+ numericSort: function(a, b) {
+ return (a - b);
+ },
+
+
+ _timeoutCount: 0,
+
+
+ _addListeners: function() {
+ var DDM = Ext.dd.DDM;
+ if ( Ext.lib.Event && document ) {
+ DDM._onLoad();
+ } else {
+ if (DDM._timeoutCount > 2000) {
+ } else {
+ setTimeout(DDM._addListeners, 10);
+ if (document && document.body) {
+ DDM._timeoutCount += 1;
+ }
+ }
+ }
+ },
+
+
+ handleWasClicked: function(node, id) {
+ if (this.isHandle(id, node.id)) {
+ return true;
+ } else {
+
+ var p = node.parentNode;
+
+ while (p) {
+ if (this.isHandle(id, p.id)) {
+ return true;
+ } else {
+ p = p.parentNode;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ };
+
+}();
+
+
+Ext.dd.DDM = Ext.dd.DragDropMgr;
+Ext.dd.DDM._addListeners();
+
+}
+
+
+Ext.dd.DD = function(id, sGroup, config) {
+ if (id) {
+ this.init(id, sGroup, config);
+ }
+};
+
+Ext.extend(Ext.dd.DD, Ext.dd.DragDrop, {
+
+
+ scroll: true,
+
+
+ autoOffset: function(iPageX, iPageY) {
+ var x = iPageX - this.startPageX;
+ var y = iPageY - this.startPageY;
+ this.setDelta(x, y);
+ },
+
+
+ setDelta: function(iDeltaX, iDeltaY) {
+ this.deltaX = iDeltaX;
+ this.deltaY = iDeltaY;
+ },
+
+
+ setDragElPos: function(iPageX, iPageY) {
+
+
+
+ var el = this.getDragEl();
+ this.alignElWithMouse(el, iPageX, iPageY);
+ },
+
+
+ alignElWithMouse: function(el, iPageX, iPageY) {
+ var oCoord = this.getTargetCoord(iPageX, iPageY);
+ var fly = el.dom ? el : Ext.fly(el, '_dd');
+ if (!this.deltaSetXY) {
+ var aCoord = [oCoord.x, oCoord.y];
+ fly.setXY(aCoord);
+ var newLeft = fly.getLeft(true);
+ var newTop = fly.getTop(true);
+ this.deltaSetXY = [ newLeft - oCoord.x, newTop - oCoord.y ];
+ } else {
+ fly.setLeftTop(oCoord.x + this.deltaSetXY[0], oCoord.y + this.deltaSetXY[1]);
+ }
+
+ this.cachePosition(oCoord.x, oCoord.y);
+ this.autoScroll(oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth);
+ return oCoord;
+ },
+
+
+ cachePosition: function(iPageX, iPageY) {
+ if (iPageX) {
+ this.lastPageX = iPageX;
+ this.lastPageY = iPageY;
+ } else {
+ var aCoord = Ext.lib.Dom.getXY(this.getEl());
+ this.lastPageX = aCoord[0];
+ this.lastPageY = aCoord[1];
+ }
+ },
+
+
+ autoScroll: function(x, y, h, w) {
+
+ if (this.scroll) {
+
+ var clientH = Ext.lib.Dom.getViewHeight();
+
+
+ var clientW = Ext.lib.Dom.getViewWidth();
+
+
+ var st = this.DDM.getScrollTop();
+
+
+ var sl = this.DDM.getScrollLeft();
+
+
+ var bot = h + y;
+
+
+ var right = w + x;
+
+
+
+
+ var toBot = (clientH + st - y - this.deltaY);
+
+
+ var toRight = (clientW + sl - x - this.deltaX);
+
+
+
+
+ var thresh = 40;
+
+
+
+
+ var scrAmt = (document.all) ? 80 : 30;
+
+
+
+ if ( bot > clientH && toBot < thresh ) {
+ window.scrollTo(sl, st + scrAmt);
+ }
+
+
+
+ if ( y < st && st > 0 && y - st < thresh ) {
+ window.scrollTo(sl, st - scrAmt);
+ }
+
+
+
+ if ( right > clientW && toRight < thresh ) {
+ window.scrollTo(sl + scrAmt, st);
+ }
+
+
+
+ if ( x < sl && sl > 0 && x - sl < thresh ) {
+ window.scrollTo(sl - scrAmt, st);
+ }
+ }
+ },
+
+
+ getTargetCoord: function(iPageX, iPageY) {
+ var x = iPageX - this.deltaX;
+ var y = iPageY - this.deltaY;
+
+ if (this.constrainX) {
+ if (x < this.minX) { x = this.minX; }
+ if (x > this.maxX) { x = this.maxX; }
+ }
+
+ if (this.constrainY) {
+ if (y < this.minY) { y = this.minY; }
+ if (y > this.maxY) { y = this.maxY; }
+ }
+
+ x = this.getTick(x, this.xTicks);
+ y = this.getTick(y, this.yTicks);
+
+
+ return {x:x, y:y};
+ },
+
+
+ applyConfig: function() {
+ Ext.dd.DD.superclass.applyConfig.call(this);
+ this.scroll = (this.config.scroll !== false);
+ },
+
+
+ b4MouseDown: function(e) {
+
+ this.autoOffset(e.getPageX(),
+ e.getPageY());
+ },
+
+
+ b4Drag: function(e) {
+ this.setDragElPos(e.getPageX(),
+ e.getPageY());
+ },
+
+ toString: function() {
+ return ("DD " + this.id);
+ }
+
+
+
+
+
+
+});
+
+Ext.dd.DDProxy = function(id, sGroup, config) {
+ if (id) {
+ this.init(id, sGroup, config);
+ this.initFrame();
+ }
+};
+
+
+Ext.dd.DDProxy.dragElId = "ygddfdiv";
+
+Ext.extend(Ext.dd.DDProxy, Ext.dd.DD, {
+
+
+ resizeFrame: true,
+
+
+ centerFrame: false,
+
+
+ createFrame: function() {
+ var self = this;
+ var body = document.body;
+
+ if (!body || !body.firstChild) {
+ setTimeout( function() { self.createFrame(); }, 50 );
+ return;
+ }
+
+ var div = this.getDragEl();
+
+ if (!div) {
+ div = document.createElement("div");
+ div.id = this.dragElId;
+ var s = div.style;
+
+ s.position = "absolute";
+ s.visibility = "hidden";
+ s.cursor = "move";
+ s.border = "2px solid #aaa";
+ s.zIndex = 999;
+
+
+
+
+ body.insertBefore(div, body.firstChild);
+ }
+ },
+
+
+ initFrame: function() {
+ this.createFrame();
+ },
+
+ applyConfig: function() {
+ Ext.dd.DDProxy.superclass.applyConfig.call(this);
+
+ this.resizeFrame = (this.config.resizeFrame !== false);
+ this.centerFrame = (this.config.centerFrame);
+ this.setDragElId(this.config.dragElId || Ext.dd.DDProxy.dragElId);
+ },
+
+
+ showFrame: function(iPageX, iPageY) {
+ var el = this.getEl();
+ var dragEl = this.getDragEl();
+ var s = dragEl.style;
+
+ this._resizeProxy();
+
+ if (this.centerFrame) {
+ this.setDelta( Math.round(parseInt(s.width, 10)/2),
+ Math.round(parseInt(s.height, 10)/2) );
+ }
+
+ this.setDragElPos(iPageX, iPageY);
+
+ Ext.fly(dragEl).show();
+ },
+
+
+ _resizeProxy: function() {
+ if (this.resizeFrame) {
+ var el = this.getEl();
+ Ext.fly(this.getDragEl()).setSize(el.offsetWidth, el.offsetHeight);
+ }
+ },
+
+
+ b4MouseDown: function(e) {
+ var x = e.getPageX();
+ var y = e.getPageY();
+ this.autoOffset(x, y);
+ this.setDragElPos(x, y);
+ },
+
+
+ b4StartDrag: function(x, y) {
+
+ this.showFrame(x, y);
+ },
+
+
+ b4EndDrag: function(e) {
+ Ext.fly(this.getDragEl()).hide();
+ },
+
+
+
+
+ endDrag: function(e) {
+
+ var lel = this.getEl();
+ var del = this.getDragEl();
+
+
+ del.style.visibility = "";
+
+ this.beforeMove();
+
+
+ lel.style.visibility = "hidden";
+ Ext.dd.DDM.moveToEl(lel, del);
+ del.style.visibility = "hidden";
+ lel.style.visibility = "";
+
+ this.afterDrag();
+ },
+
+ beforeMove : function(){
+
+ },
+
+ afterDrag : function(){
+
+ },
+
+ toString: function() {
+ return ("DDProxy " + this.id);
+ }
+
+});
+
+Ext.dd.DDTarget = function(id, sGroup, config) {
+ if (id) {
+ this.initTarget(id, sGroup, config);
+ }
+};
+
+
+Ext.extend(Ext.dd.DDTarget, Ext.dd.DragDrop, {
+
+ getDragEl: Ext.emptyFn,
+
+ isValidHandleChild: Ext.emptyFn,
+
+ startDrag: Ext.emptyFn,
+
+ endDrag: Ext.emptyFn,
+
+ onDrag: Ext.emptyFn,
+
+ onDragDrop: Ext.emptyFn,
+
+ onDragEnter: Ext.emptyFn,
+
+ onDragOut: Ext.emptyFn,
+
+ onDragOver: Ext.emptyFn,
+
+ onInvalidDrop: Ext.emptyFn,
+
+ onMouseDown: Ext.emptyFn,
+
+ onMouseUp: Ext.emptyFn,
+
+ setXConstraint: Ext.emptyFn,
+
+ setYConstraint: Ext.emptyFn,
+
+ resetConstraints: Ext.emptyFn,
+
+ clearConstraints: Ext.emptyFn,
+
+ clearTicks: Ext.emptyFn,
+
+ setInitPosition: Ext.emptyFn,
+
+ setDragElId: Ext.emptyFn,
+
+ setHandleElId: Ext.emptyFn,
+
+ setOuterHandleElId: Ext.emptyFn,
+
+ addInvalidHandleClass: Ext.emptyFn,
+
+ addInvalidHandleId: Ext.emptyFn,
+
+ addInvalidHandleType: Ext.emptyFn,
+
+ removeInvalidHandleClass: Ext.emptyFn,
+
+ removeInvalidHandleId: Ext.emptyFn,
+
+ removeInvalidHandleType: Ext.emptyFn,
+
+ toString: function() {
+ return ("DDTarget " + this.id);
+ }
+});
+Ext.dd.DragTracker = Ext.extend(Ext.util.Observable, {
+
+ active: false,
+
+ tolerance: 5,
+
+ autoStart: false,
+
+ constructor : function(config){
+ Ext.apply(this, config);
+ this.addEvents(
+
+ 'mousedown',
+
+ 'mouseup',
+
+ 'mousemove',
+
+ 'dragstart',
+
+ 'dragend',
+
+ 'drag'
+ );
+
+ this.dragRegion = new Ext.lib.Region(0,0,0,0);
+
+ if(this.el){
+ this.initEl(this.el);
+ }
+ Ext.dd.DragTracker.superclass.constructor.call(this, config);
+ },
+
+ initEl: function(el){
+ this.el = Ext.get(el);
+ el.on('mousedown', this.onMouseDown, this,
+ this.delegate ? {delegate: this.delegate} : undefined);
+ },
+
+ destroy : function(){
+ this.el.un('mousedown', this.onMouseDown, this);
+ delete this.el;
+ },
+
+ onMouseDown: function(e, target){
+ if(this.fireEvent('mousedown', this, e) !== false && this.onBeforeStart(e) !== false){
+ this.startXY = this.lastXY = e.getXY();
+ this.dragTarget = this.delegate ? target : this.el.dom;
+ if(this.preventDefault !== false){
+ e.preventDefault();
+ }
+ Ext.getDoc().on({
+ scope: this,
+ mouseup: this.onMouseUp,
+ mousemove: this.onMouseMove,
+ selectstart: this.stopSelect
+ });
+ if(this.autoStart){
+ this.timer = this.triggerStart.defer(this.autoStart === true ? 1000 : this.autoStart, this, [e]);
+ }
+ }
+ },
+
+ onMouseMove: function(e, target){
+
+ var ieCheck = Ext.isIE6 || Ext.isIE7 || Ext.isIE8;
+ if(this.active && ieCheck && !e.browserEvent.button){
+ e.preventDefault();
+ this.onMouseUp(e);
+ return;
+ }
+
+ e.preventDefault();
+ var xy = e.getXY(), s = this.startXY;
+ this.lastXY = xy;
+ if(!this.active){
+ if(Math.abs(s[0]-xy[0]) > this.tolerance || Math.abs(s[1]-xy[1]) > this.tolerance){
+ this.triggerStart(e);
+ }else{
+ return;
+ }
+ }
+ this.fireEvent('mousemove', this, e);
+ this.onDrag(e);
+ this.fireEvent('drag', this, e);
+ },
+
+ onMouseUp: function(e) {
+ var doc = Ext.getDoc(),
+ wasActive = this.active;
+
+ doc.un('mousemove', this.onMouseMove, this);
+ doc.un('mouseup', this.onMouseUp, this);
+ doc.un('selectstart', this.stopSelect, this);
+ e.preventDefault();
+ this.clearStart();
+ this.active = false;
+ delete this.elRegion;
+ this.fireEvent('mouseup', this, e);
+ if(wasActive){
+ this.onEnd(e);
+ this.fireEvent('dragend', this, e);
+ }
+ },
+
+ triggerStart: function(e) {
+ this.clearStart();
+ this.active = true;
+ this.onStart(e);
+ this.fireEvent('dragstart', this, e);
+ },
+
+ clearStart : function() {
+ if(this.timer){
+ clearTimeout(this.timer);
+ delete this.timer;
+ }
+ },
+
+ stopSelect : function(e) {
+ e.stopEvent();
+ return false;
+ },
+
+
+ onBeforeStart : function(e) {
+
+ },
+
+
+ onStart : function(xy) {
+
+ },
+
+
+ onDrag : function(e) {
+
+ },
+
+
+ onEnd : function(e) {
+
+ },
+
+
+ getDragTarget : function(){
+ return this.dragTarget;
+ },
+
+ getDragCt : function(){
+ return this.el;
+ },
+
+ getXY : function(constrain){
+ return constrain ?
+ this.constrainModes[constrain].call(this, this.lastXY) : this.lastXY;
+ },
+
+ getOffset : function(constrain){
+ var xy = this.getXY(constrain),
+ s = this.startXY;
+ return [s[0]-xy[0], s[1]-xy[1]];
+ },
+
+ constrainModes: {
+ 'point' : function(xy){
+
+ if(!this.elRegion){
+ this.elRegion = this.getDragCt().getRegion();
+ }
+
+ var dr = this.dragRegion;
+
+ dr.left = xy[0];
+ dr.top = xy[1];
+ dr.right = xy[0];
+ dr.bottom = xy[1];
+
+ dr.constrainTo(this.elRegion);
+
+ return [dr.left, dr.top];
+ }
+ }
+});
+Ext.dd.ScrollManager = function(){
+ var ddm = Ext.dd.DragDropMgr;
+ var els = {};
+ var dragEl = null;
+ var proc = {};
+
+ var onStop = function(e){
+ dragEl = null;
+ clearProc();
+ };
+
+ var triggerRefresh = function(){
+ if(ddm.dragCurrent){
+ ddm.refreshCache(ddm.dragCurrent.groups);
+ }
+ };
+
+ var doScroll = function(){
+ if(ddm.dragCurrent){
+ var dds = Ext.dd.ScrollManager;
+ var inc = proc.el.ddScrollConfig ?
+ proc.el.ddScrollConfig.increment : dds.increment;
+ if(!dds.animate){
+ if(proc.el.scroll(proc.dir, inc)){
+ triggerRefresh();
+ }
+ }else{
+ proc.el.scroll(proc.dir, inc, true, dds.animDuration, triggerRefresh);
+ }
+ }
+ };
+
+ var clearProc = function(){
+ if(proc.id){
+ clearInterval(proc.id);
+ }
+ proc.id = 0;
+ proc.el = null;
+ proc.dir = "";
+ };
+
+ var startProc = function(el, dir){
+ clearProc();
+ proc.el = el;
+ proc.dir = dir;
+ var group = el.ddScrollConfig ? el.ddScrollConfig.ddGroup : undefined,
+ freq = (el.ddScrollConfig && el.ddScrollConfig.frequency)
+ ? el.ddScrollConfig.frequency
+ : Ext.dd.ScrollManager.frequency;
+
+ if (group === undefined || ddm.dragCurrent.ddGroup == group) {
+ proc.id = setInterval(doScroll, freq);
+ }
+ };
+
+ var onFire = function(e, isDrop){
+ if(isDrop || !ddm.dragCurrent){ return; }
+ var dds = Ext.dd.ScrollManager;
+ if(!dragEl || dragEl != ddm.dragCurrent){
+ dragEl = ddm.dragCurrent;
+
+ dds.refreshCache();
+ }
+
+ var xy = Ext.lib.Event.getXY(e);
+ var pt = new Ext.lib.Point(xy[0], xy[1]);
+ for(var id in els){
+ var el = els[id], r = el._region;
+ var c = el.ddScrollConfig ? el.ddScrollConfig : dds;
+ if(r && r.contains(pt) && el.isScrollable()){
+ if(r.bottom - pt.y <= c.vthresh){
+ if(proc.el != el){
+ startProc(el, "down");
+ }
+ return;
+ }else if(r.right - pt.x <= c.hthresh){
+ if(proc.el != el){
+ startProc(el, "left");
+ }
+ return;
+ }else if(pt.y - r.top <= c.vthresh){
+ if(proc.el != el){
+ startProc(el, "up");
+ }
+ return;
+ }else if(pt.x - r.left <= c.hthresh){
+ if(proc.el != el){
+ startProc(el, "right");
+ }
+ return;
+ }
+ }
+ }
+ clearProc();
+ };
+
+ ddm.fireEvents = ddm.fireEvents.createSequence(onFire, ddm);
+ ddm.stopDrag = ddm.stopDrag.createSequence(onStop, ddm);
+
+ return {
+
+ register : function(el){
+ if(Ext.isArray(el)){
+ for(var i = 0, len = el.length; i < len; i++) {
+ this.register(el[i]);
+ }
+ }else{
+ el = Ext.get(el);
+ els[el.id] = el;
+ }
+ },
+
+
+ unregister : function(el){
+ if(Ext.isArray(el)){
+ for(var i = 0, len = el.length; i < len; i++) {
+ this.unregister(el[i]);
+ }
+ }else{
+ el = Ext.get(el);
+ delete els[el.id];
+ }
+ },
+
+
+ vthresh : 25,
+
+ hthresh : 25,
+
+
+ increment : 100,
+
+
+ frequency : 500,
+
+
+ animate: true,
+
+
+ animDuration: .4,
+
+
+ ddGroup: undefined,
+
+
+ refreshCache : function(){
+ for(var id in els){
+ if(typeof els[id] == 'object'){
+ els[id]._region = els[id].getRegion();
+ }
+ }
+ }
+ };
+}();
+Ext.dd.Registry = function(){
+ var elements = {};
+ var handles = {};
+ var autoIdSeed = 0;
+
+ var getId = function(el, autogen){
+ if(typeof el == "string"){
+ return el;
+ }
+ var id = el.id;
+ if(!id && autogen !== false){
+ id = "extdd-" + (++autoIdSeed);
+ el.id = id;
+ }
+ return id;
+ };
+
+ return {
+
+ register : function(el, data){
+ data = data || {};
+ if(typeof el == "string"){
+ el = document.getElementById(el);
+ }
+ data.ddel = el;
+ elements[getId(el)] = data;
+ if(data.isHandle !== false){
+ handles[data.ddel.id] = data;
+ }
+ if(data.handles){
+ var hs = data.handles;
+ for(var i = 0, len = hs.length; i < len; i++){
+ handles[getId(hs[i])] = data;
+ }
+ }
+ },
+
+
+ unregister : function(el){
+ var id = getId(el, false);
+ var data = elements[id];
+ if(data){
+ delete elements[id];
+ if(data.handles){
+ var hs = data.handles;
+ for(var i = 0, len = hs.length; i < len; i++){
+ delete handles[getId(hs[i], false)];
+ }
+ }
+ }
+ },
+
+
+ getHandle : function(id){
+ if(typeof id != "string"){
+ id = id.id;
+ }
+ return handles[id];
+ },
+
+
+ getHandleFromEvent : function(e){
+ var t = Ext.lib.Event.getTarget(e);
+ return t ? handles[t.id] : null;
+ },
+
+
+ getTarget : function(id){
+ if(typeof id != "string"){
+ id = id.id;
+ }
+ return elements[id];
+ },
+
+
+ getTargetFromEvent : function(e){
+ var t = Ext.lib.Event.getTarget(e);
+ return t ? elements[t.id] || handles[t.id] : null;
+ }
+ };
+}();
+Ext.dd.StatusProxy = function(config){
+ Ext.apply(this, config);
+ this.id = this.id || Ext.id();
+ this.el = new Ext.Layer({
+ dh: {
+ id: this.id, tag: "div", cls: "x-dd-drag-proxy "+this.dropNotAllowed, children: [
+ {tag: "div", cls: "x-dd-drop-icon"},
+ {tag: "div", cls: "x-dd-drag-ghost"}
+ ]
+ },
+ shadow: !config || config.shadow !== false
+ });
+ this.ghost = Ext.get(this.el.dom.childNodes[1]);
+ this.dropStatus = this.dropNotAllowed;
+};
+
+Ext.dd.StatusProxy.prototype = {
+
+ dropAllowed : "x-dd-drop-ok",
+
+ dropNotAllowed : "x-dd-drop-nodrop",
+
+
+ setStatus : function(cssClass){
+ cssClass = cssClass || this.dropNotAllowed;
+ if(this.dropStatus != cssClass){
+ this.el.replaceClass(this.dropStatus, cssClass);
+ this.dropStatus = cssClass;
+ }
+ },
+
+
+ reset : function(clearGhost){
+ this.el.dom.className = "x-dd-drag-proxy " + this.dropNotAllowed;
+ this.dropStatus = this.dropNotAllowed;
+ if(clearGhost){
+ this.ghost.update("");
+ }
+ },
+
+
+ update : function(html){
+ if(typeof html == "string"){
+ this.ghost.update(html);
+ }else{
+ this.ghost.update("");
+ html.style.margin = "0";
+ this.ghost.dom.appendChild(html);
+ }
+ var el = this.ghost.dom.firstChild;
+ if(el){
+ Ext.fly(el).setStyle('float', 'none');
+ }
+ },
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ getGhost : function(){
+ return this.ghost;
+ },
+
+
+ hide : function(clear){
+ this.el.hide();
+ if(clear){
+ this.reset(true);
+ }
+ },
+
+
+ stop : function(){
+ if(this.anim && this.anim.isAnimated && this.anim.isAnimated()){
+ this.anim.stop();
+ }
+ },
+
+
+ show : function(){
+ this.el.show();
+ },
+
+
+ sync : function(){
+ this.el.sync();
+ },
+
+
+ repair : function(xy, callback, scope){
+ this.callback = callback;
+ this.scope = scope;
+ if(xy && this.animRepair !== false){
+ this.el.addClass("x-dd-drag-repair");
+ this.el.hideUnders(true);
+ this.anim = this.el.shift({
+ duration: this.repairDuration || .5,
+ easing: 'easeOut',
+ xy: xy,
+ stopFx: true,
+ callback: this.afterRepair,
+ scope: this
+ });
+ }else{
+ this.afterRepair();
+ }
+ },
+
+
+ afterRepair : function(){
+ this.hide(true);
+ if(typeof this.callback == "function"){
+ this.callback.call(this.scope || this);
+ }
+ this.callback = null;
+ this.scope = null;
+ },
+
+ destroy: function(){
+ Ext.destroy(this.ghost, this.el);
+ }
+};
+Ext.dd.DragSource = function(el, config){
+ this.el = Ext.get(el);
+ if(!this.dragData){
+ this.dragData = {};
+ }
+
+ Ext.apply(this, config);
+
+ if(!this.proxy){
+ this.proxy = new Ext.dd.StatusProxy();
+ }
+ Ext.dd.DragSource.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group,
+ {dragElId : this.proxy.id, resizeFrame: false, isTarget: false, scroll: this.scroll === true});
+
+ this.dragging = false;
+};
+
+Ext.extend(Ext.dd.DragSource, Ext.dd.DDProxy, {
+
+
+ dropAllowed : "x-dd-drop-ok",
+
+ dropNotAllowed : "x-dd-drop-nodrop",
+
+
+ getDragData : function(e){
+ return this.dragData;
+ },
+
+
+ onDragEnter : function(e, id){
+ var target = Ext.dd.DragDropMgr.getDDById(id);
+ this.cachedTarget = target;
+ if(this.beforeDragEnter(target, e, id) !== false){
+ if(target.isNotifyTarget){
+ var status = target.notifyEnter(this, e, this.dragData);
+ this.proxy.setStatus(status);
+ }else{
+ this.proxy.setStatus(this.dropAllowed);
+ }
+
+ if(this.afterDragEnter){
+
+ this.afterDragEnter(target, e, id);
+ }
+ }
+ },
+
+
+ beforeDragEnter : function(target, e, id){
+ return true;
+ },
+
+
+ alignElWithMouse: function() {
+ Ext.dd.DragSource.superclass.alignElWithMouse.apply(this, arguments);
+ this.proxy.sync();
+ },
+
+
+ onDragOver : function(e, id){
+ var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id);
+ if(this.beforeDragOver(target, e, id) !== false){
+ if(target.isNotifyTarget){
+ var status = target.notifyOver(this, e, this.dragData);
+ this.proxy.setStatus(status);
+ }
+
+ if(this.afterDragOver){
+
+ this.afterDragOver(target, e, id);
+ }
+ }
+ },
+
+
+ beforeDragOver : function(target, e, id){
+ return true;
+ },
+
+
+ onDragOut : function(e, id){
+ var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id);
+ if(this.beforeDragOut(target, e, id) !== false){
+ if(target.isNotifyTarget){
+ target.notifyOut(this, e, this.dragData);
+ }
+ this.proxy.reset();
+ if(this.afterDragOut){
+
+ this.afterDragOut(target, e, id);
+ }
+ }
+ this.cachedTarget = null;
+ },
+
+
+ beforeDragOut : function(target, e, id){
+ return true;
+ },
+
+
+ onDragDrop : function(e, id){
+ var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id);
+ if(this.beforeDragDrop(target, e, id) !== false){
+ if(target.isNotifyTarget){
+ if(target.notifyDrop(this, e, this.dragData)){
+ this.onValidDrop(target, e, id);
+ }else{
+ this.onInvalidDrop(target, e, id);
+ }
+ }else{
+ this.onValidDrop(target, e, id);
+ }
+
+ if(this.afterDragDrop){
+
+ this.afterDragDrop(target, e, id);
+ }
+ }
+ delete this.cachedTarget;
+ },
+
+
+ beforeDragDrop : function(target, e, id){
+ return true;
+ },
+
+
+ onValidDrop : function(target, e, id){
+ this.hideProxy();
+ if(this.afterValidDrop){
+
+ this.afterValidDrop(target, e, id);
+ }
+ },
+
+
+ getRepairXY : function(e, data){
+ return this.el.getXY();
+ },
+
+
+ onInvalidDrop : function(target, e, id){
+ this.beforeInvalidDrop(target, e, id);
+ if(this.cachedTarget){
+ if(this.cachedTarget.isNotifyTarget){
+ this.cachedTarget.notifyOut(this, e, this.dragData);
+ }
+ this.cacheTarget = null;
+ }
+ this.proxy.repair(this.getRepairXY(e, this.dragData), this.afterRepair, this);
+
+ if(this.afterInvalidDrop){
+
+ this.afterInvalidDrop(e, id);
+ }
+ },
+
+
+ afterRepair : function(){
+ if(Ext.enableFx){
+ this.el.highlight(this.hlColor || "c3daf9");
+ }
+ this.dragging = false;
+ },
+
+
+ beforeInvalidDrop : function(target, e, id){
+ return true;
+ },
+
+
+ handleMouseDown : function(e){
+ if(this.dragging) {
+ return;
+ }
+ var data = this.getDragData(e);
+ if(data && this.onBeforeDrag(data, e) !== false){
+ this.dragData = data;
+ this.proxy.stop();
+ Ext.dd.DragSource.superclass.handleMouseDown.apply(this, arguments);
+ }
+ },
+
+
+ onBeforeDrag : function(data, e){
+ return true;
+ },
+
+
+ onStartDrag : Ext.emptyFn,
+
+
+ startDrag : function(x, y){
+ this.proxy.reset();
+ this.dragging = true;
+ this.proxy.update("");
+ this.onInitDrag(x, y);
+ this.proxy.show();
+ },
+
+
+ onInitDrag : function(x, y){
+ var clone = this.el.dom.cloneNode(true);
+ clone.id = Ext.id();
+ this.proxy.update(clone);
+ this.onStartDrag(x, y);
+ return true;
+ },
+
+
+ getProxy : function(){
+ return this.proxy;
+ },
+
+
+ hideProxy : function(){
+ this.proxy.hide();
+ this.proxy.reset(true);
+ this.dragging = false;
+ },
+
+
+ triggerCacheRefresh : function(){
+ Ext.dd.DDM.refreshCache(this.groups);
+ },
+
+
+ b4EndDrag: function(e) {
+ },
+
+
+ endDrag : function(e){
+ this.onEndDrag(this.dragData, e);
+ },
+
+
+ onEndDrag : function(data, e){
+ },
+
+
+ autoOffset : function(x, y) {
+ this.setDelta(-12, -20);
+ },
+
+ destroy: function(){
+ Ext.dd.DragSource.superclass.destroy.call(this);
+ Ext.destroy(this.proxy);
+ }
+});
+Ext.dd.DropTarget = Ext.extend(Ext.dd.DDTarget, {
+
+ constructor : function(el, config){
+ this.el = Ext.get(el);
+
+ Ext.apply(this, config);
+
+ if(this.containerScroll){
+ Ext.dd.ScrollManager.register(this.el);
+ }
+
+ Ext.dd.DropTarget.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group,
+ {isTarget: true});
+ },
+
+
+
+
+ dropAllowed : "x-dd-drop-ok",
+
+ dropNotAllowed : "x-dd-drop-nodrop",
+
+
+ isTarget : true,
+
+
+ isNotifyTarget : true,
+
+
+ notifyEnter : function(dd, e, data){
+ if(this.overClass){
+ this.el.addClass(this.overClass);
+ }
+ return this.dropAllowed;
+ },
+
+
+ notifyOver : function(dd, e, data){
+ return this.dropAllowed;
+ },
+
+
+ notifyOut : function(dd, e, data){
+ if(this.overClass){
+ this.el.removeClass(this.overClass);
+ }
+ },
+
+
+ notifyDrop : function(dd, e, data){
+ return false;
+ },
+
+ destroy : function(){
+ Ext.dd.DropTarget.superclass.destroy.call(this);
+ if(this.containerScroll){
+ Ext.dd.ScrollManager.unregister(this.el);
+ }
+ }
+});
+Ext.dd.DragZone = Ext.extend(Ext.dd.DragSource, {
+
+ constructor : function(el, config){
+ Ext.dd.DragZone.superclass.constructor.call(this, el, config);
+ if(this.containerScroll){
+ Ext.dd.ScrollManager.register(this.el);
+ }
+ },
+
+
+
+
+
+
+ getDragData : function(e){
+ return Ext.dd.Registry.getHandleFromEvent(e);
+ },
+
+
+ onInitDrag : function(x, y){
+ this.proxy.update(this.dragData.ddel.cloneNode(true));
+ this.onStartDrag(x, y);
+ return true;
+ },
+
+
+ afterRepair : function(){
+ if(Ext.enableFx){
+ Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor || "c3daf9");
+ }
+ this.dragging = false;
+ },
+
+
+ getRepairXY : function(e){
+ return Ext.Element.fly(this.dragData.ddel).getXY();
+ },
+
+ destroy : function(){
+ Ext.dd.DragZone.superclass.destroy.call(this);
+ if(this.containerScroll){
+ Ext.dd.ScrollManager.unregister(this.el);
+ }
+ }
+});
+Ext.dd.DropZone = function(el, config){
+ Ext.dd.DropZone.superclass.constructor.call(this, el, config);
+};
+
+Ext.extend(Ext.dd.DropZone, Ext.dd.DropTarget, {
+
+ getTargetFromEvent : function(e){
+ return Ext.dd.Registry.getTargetFromEvent(e);
+ },
+
+
+ onNodeEnter : function(n, dd, e, data){
+
+ },
+
+
+ onNodeOver : function(n, dd, e, data){
+ return this.dropAllowed;
+ },
+
+
+ onNodeOut : function(n, dd, e, data){
+
+ },
+
+
+ onNodeDrop : function(n, dd, e, data){
+ return false;
+ },
+
+
+ onContainerOver : function(dd, e, data){
+ return this.dropNotAllowed;
+ },
+
+
+ onContainerDrop : function(dd, e, data){
+ return false;
+ },
+
+
+ notifyEnter : function(dd, e, data){
+ return this.dropNotAllowed;
+ },
+
+
+ notifyOver : function(dd, e, data){
+ var n = this.getTargetFromEvent(e);
+ if(!n){
+ if(this.lastOverNode){
+ this.onNodeOut(this.lastOverNode, dd, e, data);
+ this.lastOverNode = null;
+ }
+ return this.onContainerOver(dd, e, data);
+ }
+ if(this.lastOverNode != n){
+ if(this.lastOverNode){
+ this.onNodeOut(this.lastOverNode, dd, e, data);
+ }
+ this.onNodeEnter(n, dd, e, data);
+ this.lastOverNode = n;
+ }
+ return this.onNodeOver(n, dd, e, data);
+ },
+
+
+ notifyOut : function(dd, e, data){
+ if(this.lastOverNode){
+ this.onNodeOut(this.lastOverNode, dd, e, data);
+ this.lastOverNode = null;
+ }
+ },
+
+
+ notifyDrop : function(dd, e, data){
+ if(this.lastOverNode){
+ this.onNodeOut(this.lastOverNode, dd, e, data);
+ this.lastOverNode = null;
+ }
+ var n = this.getTargetFromEvent(e);
+ return n ?
+ this.onNodeDrop(n, dd, e, data) :
+ this.onContainerDrop(dd, e, data);
+ },
+
+
+ triggerCacheRefresh : function(){
+ Ext.dd.DDM.refreshCache(this.groups);
+ }
+});
+Ext.Element.addMethods({
+
+ initDD : function(group, config, overrides){
+ var dd = new Ext.dd.DD(Ext.id(this.dom), group, config);
+ return Ext.apply(dd, overrides);
+ },
+
+
+ initDDProxy : function(group, config, overrides){
+ var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config);
+ return Ext.apply(dd, overrides);
+ },
+
+
+ initDDTarget : function(group, config, overrides){
+ var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config);
+ return Ext.apply(dd, overrides);
+ }
+});
+
+Ext.data.Api = (function() {
+
+
+
+
+
+ var validActions = {};
+
+ return {
+
+ actions : {
+ create : 'create',
+ read : 'read',
+ update : 'update',
+ destroy : 'destroy'
+ },
+
+
+ restActions : {
+ create : 'POST',
+ read : 'GET',
+ update : 'PUT',
+ destroy : 'DELETE'
+ },
+
+
+ isAction : function(action) {
+ return (Ext.data.Api.actions[action]) ? true : false;
+ },
+
+
+ getVerb : function(name) {
+ if (validActions[name]) {
+ return validActions[name];
+ }
+ for (var verb in this.actions) {
+ if (this.actions[verb] === name) {
+ validActions[name] = verb;
+ break;
+ }
+ }
+ return (validActions[name] !== undefined) ? validActions[name] : null;
+ },
+
+
+ isValid : function(api){
+ var invalid = [];
+ var crud = this.actions;
+ for (var action in api) {
+ if (!(action in crud)) {
+ invalid.push(action);
+ }
+ }
+ return (!invalid.length) ? true : invalid;
+ },
+
+
+ hasUniqueUrl : function(proxy, verb) {
+ var url = (proxy.api[verb]) ? proxy.api[verb].url : null;
+ var unique = true;
+ for (var action in proxy.api) {
+ if ((unique = (action === verb) ? true : (proxy.api[action].url != url) ? true : false) === false) {
+ break;
+ }
+ }
+ return unique;
+ },
+
+
+ prepare : function(proxy) {
+ if (!proxy.api) {
+ proxy.api = {};
+ }
+ for (var verb in this.actions) {
+ var action = this.actions[verb];
+ proxy.api[action] = proxy.api[action] || proxy.url || proxy.directFn;
+ if (typeof(proxy.api[action]) == 'string') {
+ proxy.api[action] = {
+ url: proxy.api[action],
+ method: (proxy.restful === true) ? Ext.data.Api.restActions[action] : undefined
+ };
+ }
+ }
+ },
+
+
+ restify : function(proxy) {
+ proxy.restful = true;
+ for (var verb in this.restActions) {
+ proxy.api[this.actions[verb]].method ||
+ (proxy.api[this.actions[verb]].method = this.restActions[verb]);
+ }
+
+
+ proxy.onWrite = proxy.onWrite.createInterceptor(function(action, o, response, rs) {
+ var reader = o.reader;
+ var res = new Ext.data.Response({
+ action: action,
+ raw: response
+ });
+
+ switch (response.status) {
+ case 200:
+ return true;
+ break;
+ case 201:
+ if (Ext.isEmpty(res.raw.responseText)) {
+ res.success = true;
+ } else {
+
+ return true;
+ }
+ break;
+ case 204:
+ res.success = true;
+ res.data = null;
+ break;
+ default:
+ return true;
+ break;
+ }
+ if (res.success === true) {
+ this.fireEvent("write", this, action, res.data, res, rs, o.request.arg);
+ } else {
+ this.fireEvent('exception', this, 'remote', action, o, res, rs);
+ }
+ o.request.callback.call(o.request.scope, res.data, res, res.success);
+
+ return false;
+ }, proxy);
+ }
+ };
+})();
+
+
+Ext.data.Response = function(params, response) {
+ Ext.apply(this, params, {
+ raw: response
+ });
+};
+Ext.data.Response.prototype = {
+ message : null,
+ success : false,
+ status : null,
+ root : null,
+ raw : null,
+
+ getMessage : function() {
+ return this.message;
+ },
+ getSuccess : function() {
+ return this.success;
+ },
+ getStatus : function() {
+ return this.status;
+ },
+ getRoot : function() {
+ return this.root;
+ },
+ getRawResponse : function() {
+ return this.raw;
+ }
+};
+
+
+Ext.data.Api.Error = Ext.extend(Ext.Error, {
+ constructor : function(message, arg) {
+ this.arg = arg;
+ Ext.Error.call(this, message);
+ },
+ name: 'Ext.data.Api'
+});
+Ext.apply(Ext.data.Api.Error.prototype, {
+ lang: {
+ 'action-url-undefined': 'No fallback url defined for this action. When defining a DataProxy api, please be sure to define an url for each CRUD action in Ext.data.Api.actions or define a default url in addition to your api-configuration.',
+ 'invalid': 'received an invalid API-configuration. Please ensure your proxy API-configuration contains only the actions defined in Ext.data.Api.actions',
+ 'invalid-url': 'Invalid url. Please review your proxy configuration.',
+ 'execute': 'Attempted to execute an unknown action. Valid API actions are defined in Ext.data.Api.actions"'
+ }
+});
+
+
+
+
+Ext.data.SortTypes = {
+
+ none : function(s){
+ return s;
+ },
+
+
+ stripTagsRE : /<\/?[^>]+>/gi,
+
+
+ asText : function(s){
+ return String(s).replace(this.stripTagsRE, "");
+ },
+
+
+ asUCText : function(s){
+ return String(s).toUpperCase().replace(this.stripTagsRE, "");
+ },
+
+
+ asUCString : function(s) {
+ return String(s).toUpperCase();
+ },
+
+
+ asDate : function(s) {
+ if(!s){
+ return 0;
+ }
+ if(Ext.isDate(s)){
+ return s.getTime();
+ }
+ return Date.parse(String(s));
+ },
+
+
+ asFloat : function(s) {
+ var val = parseFloat(String(s).replace(/,/g, ""));
+ return isNaN(val) ? 0 : val;
+ },
+
+
+ asInt : function(s) {
+ var val = parseInt(String(s).replace(/,/g, ""), 10);
+ return isNaN(val) ? 0 : val;
+ }
+};
+Ext.data.Record = function(data, id){
+
+ this.id = (id || id === 0) ? id : Ext.data.Record.id(this);
+ this.data = data || {};
+};
+
+
+Ext.data.Record.create = function(o){
+ var f = Ext.extend(Ext.data.Record, {});
+ var p = f.prototype;
+ p.fields = new Ext.util.MixedCollection(false, function(field){
+ return field.name;
+ });
+ for(var i = 0, len = o.length; i < len; i++){
+ p.fields.add(new Ext.data.Field(o[i]));
+ }
+ f.getField = function(name){
+ return p.fields.get(name);
+ };
+ return f;
+};
+
+Ext.data.Record.PREFIX = 'ext-record';
+Ext.data.Record.AUTO_ID = 1;
+Ext.data.Record.EDIT = 'edit';
+Ext.data.Record.REJECT = 'reject';
+Ext.data.Record.COMMIT = 'commit';
+
+
+
+Ext.data.Record.id = function(rec) {
+ rec.phantom = true;
+ return [Ext.data.Record.PREFIX, '-', Ext.data.Record.AUTO_ID++].join('');
+};
+
+Ext.data.Record.prototype = {
+
+
+
+
+
+
+ dirty : false,
+ editing : false,
+ error : null,
+
+ modified : null,
+
+ phantom : false,
+
+
+ join : function(store){
+
+ this.store = store;
+ },
+
+
+ set : function(name, value){
+ var encode = Ext.isPrimitive(value) ? String : Ext.encode;
+ if(encode(this.data[name]) == encode(value)) {
+ return;
+ }
+ this.dirty = true;
+ if(!this.modified){
+ this.modified = {};
+ }
+ if(this.modified[name] === undefined){
+ this.modified[name] = this.data[name];
+ }
+ this.data[name] = value;
+ if(!this.editing){
+ this.afterEdit();
+ }
+ },
+
+
+ afterEdit : function(){
+ if (this.store != undefined && typeof this.store.afterEdit == "function") {
+ this.store.afterEdit(this);
+ }
+ },
+
+
+ afterReject : function(){
+ if(this.store){
+ this.store.afterReject(this);
+ }
+ },
+
+
+ afterCommit : function(){
+ if(this.store){
+ this.store.afterCommit(this);
+ }
+ },
+
+
+ get : function(name){
+ return this.data[name];
+ },
+
+
+ beginEdit : function(){
+ this.editing = true;
+ this.modified = this.modified || {};
+ },
+
+
+ cancelEdit : function(){
+ this.editing = false;
+ delete this.modified;
+ },
+
+
+ endEdit : function(){
+ this.editing = false;
+ if(this.dirty){
+ this.afterEdit();
+ }
+ },
+
+
+ reject : function(silent){
+ var m = this.modified;
+ for(var n in m){
+ if(typeof m[n] != "function"){
+ this.data[n] = m[n];
+ }
+ }
+ this.dirty = false;
+ delete this.modified;
+ this.editing = false;
+ if(silent !== true){
+ this.afterReject();
+ }
+ },
+
+
+ commit : function(silent){
+ this.dirty = false;
+ delete this.modified;
+ this.editing = false;
+ if(silent !== true){
+ this.afterCommit();
+ }
+ },
+
+
+ getChanges : function(){
+ var m = this.modified, cs = {};
+ for(var n in m){
+ if(m.hasOwnProperty(n)){
+ cs[n] = this.data[n];
+ }
+ }
+ return cs;
+ },
+
+
+ hasError : function(){
+ return this.error !== null;
+ },
+
+
+ clearError : function(){
+ this.error = null;
+ },
+
+
+ copy : function(newId) {
+ return new this.constructor(Ext.apply({}, this.data), newId || this.id);
+ },
+
+
+ isModified : function(fieldName){
+ return !!(this.modified && this.modified.hasOwnProperty(fieldName));
+ },
+
+
+ isValid : function() {
+ return this.fields.find(function(f) {
+ return (f.allowBlank === false && Ext.isEmpty(this.data[f.name])) ? true : false;
+ },this) ? false : true;
+ },
+
+
+ markDirty : function(){
+ this.dirty = true;
+ if(!this.modified){
+ this.modified = {};
+ }
+ this.fields.each(function(f) {
+ this.modified[f.name] = this.data[f.name];
+ },this);
+ }
+};
+
+Ext.StoreMgr = Ext.apply(new Ext.util.MixedCollection(), {
+
+
+
+ register : function(){
+ for(var i = 0, s; (s = arguments[i]); i++){
+ this.add(s);
+ }
+ },
+
+
+ unregister : function(){
+ for(var i = 0, s; (s = arguments[i]); i++){
+ this.remove(this.lookup(s));
+ }
+ },
+
+
+ lookup : function(id){
+ if(Ext.isArray(id)){
+ var fields = ['field1'], expand = !Ext.isArray(id[0]);
+ if(!expand){
+ for(var i = 2, len = id[0].length; i <= len; ++i){
+ fields.push('field' + i);
+ }
+ }
+ return new Ext.data.ArrayStore({
+ fields: fields,
+ data: id,
+ expandData: expand,
+ autoDestroy: true,
+ autoCreated: true
+
+ });
+ }
+ return Ext.isObject(id) ? (id.events ? id : Ext.create(id, 'store')) : this.get(id);
+ },
+
+
+ getKey : function(o){
+ return o.storeId;
+ }
+});
+Ext.data.Store = Ext.extend(Ext.util.Observable, {
+
+
+
+
+
+
+
+ writer : undefined,
+
+
+
+ remoteSort : false,
+
+
+ autoDestroy : false,
+
+
+ pruneModifiedRecords : false,
+
+
+ lastOptions : null,
+
+
+ autoSave : true,
+
+
+ batch : true,
+
+
+ restful: false,
+
+
+ paramNames : undefined,
+
+
+ defaultParamNames : {
+ start : 'start',
+ limit : 'limit',
+ sort : 'sort',
+ dir : 'dir'
+ },
+
+ isDestroyed: false,
+ hasMultiSort: false,
+
+
+ batchKey : '_ext_batch_',
+
+ constructor : function(config){
+
+
+
+
+ this.data = new Ext.util.MixedCollection(false);
+ this.data.getKey = function(o){
+ return o.id;
+ };
+
+
+
+ this.removed = [];
+
+ if(config && config.data){
+ this.inlineData = config.data;
+ delete config.data;
+ }
+
+ Ext.apply(this, config);
+
+
+ this.baseParams = Ext.isObject(this.baseParams) ? this.baseParams : {};
+
+ this.paramNames = Ext.applyIf(this.paramNames || {}, this.defaultParamNames);
+
+ if((this.url || this.api) && !this.proxy){
+ this.proxy = new Ext.data.HttpProxy({url: this.url, api: this.api});
+ }
+
+ if (this.restful === true && this.proxy) {
+
+
+ this.batch = false;
+ Ext.data.Api.restify(this.proxy);
+ }
+
+ if(this.reader){
+ if(!this.recordType){
+ this.recordType = this.reader.recordType;
+ }
+ if(this.reader.onMetaChange){
+ this.reader.onMetaChange = this.reader.onMetaChange.createSequence(this.onMetaChange, this);
+ }
+ if (this.writer) {
+ if (this.writer instanceof(Ext.data.DataWriter) === false) {
+ this.writer = this.buildWriter(this.writer);
+ }
+ this.writer.meta = this.reader.meta;
+ this.pruneModifiedRecords = true;
+ }
+ }
+
+
+
+ if(this.recordType){
+
+ this.fields = this.recordType.prototype.fields;
+ }
+ this.modified = [];
+
+ this.addEvents(
+
+ 'datachanged',
+
+ 'metachange',
+
+ 'add',
+
+ 'remove',
+
+ 'update',
+
+ 'clear',
+
+ 'exception',
+
+ 'beforeload',
+
+ 'load',
+
+ 'loadexception',
+
+ 'beforewrite',
+
+ 'write',
+
+ 'beforesave',
+
+ 'save'
+
+ );
+
+ if(this.proxy){
+
+ this.relayEvents(this.proxy, ['loadexception', 'exception']);
+ }
+
+ if (this.writer) {
+ this.on({
+ scope: this,
+ add: this.createRecords,
+ remove: this.destroyRecord,
+ update: this.updateRecord,
+ clear: this.onClear
+ });
+ }
+
+ this.sortToggle = {};
+ if(this.sortField){
+ this.setDefaultSort(this.sortField, this.sortDir);
+ }else if(this.sortInfo){
+ this.setDefaultSort(this.sortInfo.field, this.sortInfo.direction);
+ }
+
+ Ext.data.Store.superclass.constructor.call(this);
+
+ if(this.id){
+ this.storeId = this.id;
+ delete this.id;
+ }
+ if(this.storeId){
+ Ext.StoreMgr.register(this);
+ }
+ if(this.inlineData){
+ this.loadData(this.inlineData);
+ delete this.inlineData;
+ }else if(this.autoLoad){
+ this.load.defer(10, this, [
+ typeof this.autoLoad == 'object' ?
+ this.autoLoad : undefined]);
+ }
+
+ this.batchCounter = 0;
+ this.batches = {};
+ },
+
+
+ buildWriter : function(config) {
+ var klass = undefined,
+ type = (config.format || 'json').toLowerCase();
+ switch (type) {
+ case 'json':
+ klass = Ext.data.JsonWriter;
+ break;
+ case 'xml':
+ klass = Ext.data.XmlWriter;
+ break;
+ default:
+ klass = Ext.data.JsonWriter;
+ }
+ return new klass(config);
+ },
+
+
+ destroy : function(){
+ if(!this.isDestroyed){
+ if(this.storeId){
+ Ext.StoreMgr.unregister(this);
+ }
+ this.clearData();
+ this.data = null;
+ Ext.destroy(this.proxy);
+ this.reader = this.writer = null;
+ this.purgeListeners();
+ this.isDestroyed = true;
+ }
+ },
+
+
+ add : function(records) {
+ var i, len, record, index;
+
+ records = [].concat(records);
+ if (records.length < 1) {
+ return;
+ }
+
+ for (i = 0, len = records.length; i < len; i++) {
+ record = records[i];
+
+ record.join(this);
+
+ if (record.dirty || record.phantom) {
+ this.modified.push(record);
+ }
+ }
+
+ index = this.data.length;
+ this.data.addAll(records);
+
+ if (this.snapshot) {
+ this.snapshot.addAll(records);
+ }
+
+ this.fireEvent('add', this, records, index);
+ },
+
+
+ addSorted : function(record){
+ var index = this.findInsertIndex(record);
+ this.insert(index, record);
+ },
+
+
+ doUpdate: function(rec){
+ var id = rec.id;
+
+ this.getById(id).join(null);
+
+ this.data.replace(id, rec);
+ if (this.snapshot) {
+ this.snapshot.replace(id, rec);
+ }
+ rec.join(this);
+ this.fireEvent('update', this, rec, Ext.data.Record.COMMIT);
+ },
+
+
+ remove : function(record){
+ if(Ext.isArray(record)){
+ Ext.each(record, function(r){
+ this.remove(r);
+ }, this);
+ return;
+ }
+ var index = this.data.indexOf(record);
+ if(index > -1){
+ record.join(null);
+ this.data.removeAt(index);
+ }
+ if(this.pruneModifiedRecords){
+ this.modified.remove(record);
+ }
+ if(this.snapshot){
+ this.snapshot.remove(record);
+ }
+ if(index > -1){
+ this.fireEvent('remove', this, record, index);
+ }
+ },
+
+
+ removeAt : function(index){
+ this.remove(this.getAt(index));
+ },
+
+
+ removeAll : function(silent){
+ var items = [];
+ this.each(function(rec){
+ items.push(rec);
+ });
+ this.clearData();
+ if(this.snapshot){
+ this.snapshot.clear();
+ }
+ if(this.pruneModifiedRecords){
+ this.modified = [];
+ }
+ if (silent !== true) {
+ this.fireEvent('clear', this, items);
+ }
+ },
+
+
+ onClear: function(store, records){
+ Ext.each(records, function(rec, index){
+ this.destroyRecord(this, rec, index);
+ }, this);
+ },
+
+
+ insert : function(index, records) {
+ var i, len, record;
+
+ records = [].concat(records);
+ for (i = 0, len = records.length; i < len; i++) {
+ record = records[i];
+
+ this.data.insert(index + i, record);
+ record.join(this);
+
+ if (record.dirty || record.phantom) {
+ this.modified.push(record);
+ }
+ }
+
+ if (this.snapshot) {
+ this.snapshot.addAll(records);
+ }
+
+ this.fireEvent('add', this, records, index);
+ },
+
+
+ indexOf : function(record){
+ return this.data.indexOf(record);
+ },
+
+
+ indexOfId : function(id){
+ return this.data.indexOfKey(id);
+ },
+
+
+ getById : function(id){
+ return (this.snapshot || this.data).key(id);
+ },
+
+
+ getAt : function(index){
+ return this.data.itemAt(index);
+ },
+
+
+ getRange : function(start, end){
+ return this.data.getRange(start, end);
+ },
+
+
+ storeOptions : function(o){
+ o = Ext.apply({}, o);
+ delete o.callback;
+ delete o.scope;
+ this.lastOptions = o;
+ },
+
+
+ clearData: function(){
+ this.data.each(function(rec) {
+ rec.join(null);
+ });
+ this.data.clear();
+ },
+
+
+ load : function(options) {
+ options = Ext.apply({}, options);
+ this.storeOptions(options);
+ if(this.sortInfo && this.remoteSort){
+ var pn = this.paramNames;
+ options.params = Ext.apply({}, options.params);
+ options.params[pn.sort] = this.sortInfo.field;
+ options.params[pn.dir] = this.sortInfo.direction;
+ }
+ try {
+ return this.execute('read', null, options);
+ } catch(e) {
+ this.handleException(e);
+ return false;
+ }
+ },
+
+
+ updateRecord : function(store, record, action) {
+ if (action == Ext.data.Record.EDIT && this.autoSave === true && (!record.phantom || (record.phantom && record.isValid()))) {
+ this.save();
+ }
+ },
+
+
+ createRecords : function(store, records, index) {
+ var modified = this.modified,
+ length = records.length,
+ record, i;
+
+ for (i = 0; i < length; i++) {
+ record = records[i];
+
+ if (record.phantom && record.isValid()) {
+ record.markDirty();
+
+ if (modified.indexOf(record) == -1) {
+ modified.push(record);
+ }
+ }
+ }
+ if (this.autoSave === true) {
+ this.save();
+ }
+ },
+
+
+ destroyRecord : function(store, record, index) {
+ if (this.modified.indexOf(record) != -1) {
+ this.modified.remove(record);
+ }
+ if (!record.phantom) {
+ this.removed.push(record);
+
+
+
+
+ record.lastIndex = index;
+
+ if (this.autoSave === true) {
+ this.save();
+ }
+ }
+ },
+
+
+ execute : function(action, rs, options, batch) {
+
+ if (!Ext.data.Api.isAction(action)) {
+ throw new Ext.data.Api.Error('execute', action);
+ }
+
+ options = Ext.applyIf(options||{}, {
+ params: {}
+ });
+ if(batch !== undefined){
+ this.addToBatch(batch);
+ }
+
+
+ var doRequest = true;
+
+ if (action === 'read') {
+ doRequest = this.fireEvent('beforeload', this, options);
+ Ext.applyIf(options.params, this.baseParams);
+ }
+ else {
+
+
+ if (this.writer.listful === true && this.restful !== true) {
+ rs = (Ext.isArray(rs)) ? rs : [rs];
+ }
+
+ else if (Ext.isArray(rs) && rs.length == 1) {
+ rs = rs.shift();
+ }
+
+ if ((doRequest = this.fireEvent('beforewrite', this, action, rs, options)) !== false) {
+ this.writer.apply(options.params, this.baseParams, action, rs);
+ }
+ }
+ if (doRequest !== false) {
+
+ if (this.writer && this.proxy.url && !this.proxy.restful && !Ext.data.Api.hasUniqueUrl(this.proxy, action)) {
+ options.params.xaction = action;
+ }
+
+
+
+
+
+ this.proxy.request(Ext.data.Api.actions[action], rs, options.params, this.reader, this.createCallback(action, rs, batch), this, options);
+ }
+ return doRequest;
+ },
+
+
+ save : function() {
+ if (!this.writer) {
+ throw new Ext.data.Store.Error('writer-undefined');
+ }
+
+ var queue = [],
+ len,
+ trans,
+ batch,
+ data = {},
+ i;
+
+ if(this.removed.length){
+ queue.push(['destroy', this.removed]);
+ }
+
+
+ var rs = [].concat(this.getModifiedRecords());
+ if(rs.length){
+
+ var phantoms = [];
+ for(i = rs.length-1; i >= 0; i--){
+ if(rs[i].phantom === true){
+ var rec = rs.splice(i, 1).shift();
+ if(rec.isValid()){
+ phantoms.push(rec);
+ }
+ }else if(!rs[i].isValid()){
+ rs.splice(i,1);
+ }
+ }
+
+ if(phantoms.length){
+ queue.push(['create', phantoms]);
+ }
+
+
+ if(rs.length){
+ queue.push(['update', rs]);
+ }
+ }
+ len = queue.length;
+ if(len){
+ batch = ++this.batchCounter;
+ for(i = 0; i < len; ++i){
+ trans = queue[i];
+ data[trans[0]] = trans[1];
+ }
+ if(this.fireEvent('beforesave', this, data) !== false){
+ for(i = 0; i < len; ++i){
+ trans = queue[i];
+ this.doTransaction(trans[0], trans[1], batch);
+ }
+ return batch;
+ }
+ }
+ return -1;
+ },
+
+
+ doTransaction : function(action, rs, batch) {
+ function transaction(records) {
+ try{
+ this.execute(action, records, undefined, batch);
+ }catch (e){
+ this.handleException(e);
+ }
+ }
+ if(this.batch === false){
+ for(var i = 0, len = rs.length; i < len; i++){
+ transaction.call(this, rs[i]);
+ }
+ }else{
+ transaction.call(this, rs);
+ }
+ },
+
+
+ addToBatch : function(batch){
+ var b = this.batches,
+ key = this.batchKey + batch,
+ o = b[key];
+
+ if(!o){
+ b[key] = o = {
+ id: batch,
+ count: 0,
+ data: {}
+ };
+ }
+ ++o.count;
+ },
+
+ removeFromBatch : function(batch, action, data){
+ var b = this.batches,
+ key = this.batchKey + batch,
+ o = b[key],
+ arr;
+
+
+ if(o){
+ arr = o.data[action] || [];
+ o.data[action] = arr.concat(data);
+ if(o.count === 1){
+ data = o.data;
+ delete b[key];
+ this.fireEvent('save', this, batch, data);
+ }else{
+ --o.count;
+ }
+ }
+ },
+
+
+
+ createCallback : function(action, rs, batch) {
+ var actions = Ext.data.Api.actions;
+ return (action == 'read') ? this.loadRecords : function(data, response, success) {
+
+ this['on' + Ext.util.Format.capitalize(action) + 'Records'](success, rs, [].concat(data));
+
+ if (success === true) {
+ this.fireEvent('write', this, action, data, response, rs);
+ }
+ this.removeFromBatch(batch, action, data);
+ };
+ },
+
+
+
+
+ clearModified : function(rs) {
+ if (Ext.isArray(rs)) {
+ for (var n=rs.length-1;n>=0;n--) {
+ this.modified.splice(this.modified.indexOf(rs[n]), 1);
+ }
+ } else {
+ this.modified.splice(this.modified.indexOf(rs), 1);
+ }
+ },
+
+
+ reMap : function(record) {
+ if (Ext.isArray(record)) {
+ for (var i = 0, len = record.length; i < len; i++) {
+ this.reMap(record[i]);
+ }
+ } else {
+ delete this.data.map[record._phid];
+ this.data.map[record.id] = record;
+ var index = this.data.keys.indexOf(record._phid);
+ this.data.keys.splice(index, 1, record.id);
+ delete record._phid;
+ }
+ },
+
+
+ onCreateRecords : function(success, rs, data) {
+ if (success === true) {
+ try {
+ this.reader.realize(rs, data);
+ }
+ catch (e) {
+ this.handleException(e);
+ if (Ext.isArray(rs)) {
+
+ this.onCreateRecords(success, rs, data);
+ }
+ }
+ }
+ },
+
+
+ onUpdateRecords : function(success, rs, data) {
+ if (success === true) {
+ try {
+ this.reader.update(rs, data);
+ } catch (e) {
+ this.handleException(e);
+ if (Ext.isArray(rs)) {
+
+ this.onUpdateRecords(success, rs, data);
+ }
+ }
+ }
+ },
+
+
+ onDestroyRecords : function(success, rs, data) {
+
+ rs = (rs instanceof Ext.data.Record) ? [rs] : [].concat(rs);
+ for (var i=0,len=rs.length;i<len;i++) {
+ this.removed.splice(this.removed.indexOf(rs[i]), 1);
+ }
+ if (success === false) {
+
+
+ for (i=rs.length-1;i>=0;i--) {
+ this.insert(rs[i].lastIndex, rs[i]);
+ }
+ }
+ },
+
+
+ handleException : function(e) {
+
+ Ext.handleError(e);
+ },
+
+
+ reload : function(options){
+ this.load(Ext.applyIf(options||{}, this.lastOptions));
+ },
+
+
+
+ loadRecords : function(o, options, success){
+ var i, len;
+
+ if (this.isDestroyed === true) {
+ return;
+ }
+ if(!o || success === false){
+ if(success !== false){
+ this.fireEvent('load', this, [], options);
+ }
+ if(options.callback){
+ options.callback.call(options.scope || this, [], options, false, o);
+ }
+ return;
+ }
+ var r = o.records, t = o.totalRecords || r.length;
+ if(!options || options.add !== true){
+ if(this.pruneModifiedRecords){
+ this.modified = [];
+ }
+ for(i = 0, len = r.length; i < len; i++){
+ r[i].join(this);
+ }
+ if(this.snapshot){
+ this.data = this.snapshot;
+ delete this.snapshot;
+ }
+ this.clearData();
+ this.data.addAll(r);
+ this.totalLength = t;
+ this.applySort();
+ this.fireEvent('datachanged', this);
+ }else{
+ var toAdd = [],
+ rec,
+ cnt = 0;
+ for(i = 0, len = r.length; i < len; ++i){
+ rec = r[i];
+ if(this.indexOfId(rec.id) > -1){
+ this.doUpdate(rec);
+ }else{
+ toAdd.push(rec);
+ ++cnt;
+ }
+ }
+ this.totalLength = Math.max(t, this.data.length + cnt);
+ this.add(toAdd);
+ }
+ this.fireEvent('load', this, r, options);
+ if(options.callback){
+ options.callback.call(options.scope || this, r, options, true);
+ }
+ },
+
+
+ loadData : function(o, append){
+ var r = this.reader.readRecords(o);
+ this.loadRecords(r, {add: append}, true);
+ },
+
+
+ getCount : function(){
+ return this.data.length || 0;
+ },
+
+
+ getTotalCount : function(){
+ return this.totalLength || 0;
+ },
+
+
+ getSortState : function(){
+ return this.sortInfo;
+ },
+
+
+ applySort : function(){
+ if ((this.sortInfo || this.multiSortInfo) && !this.remoteSort) {
+ this.sortData();
+ }
+ },
+
+
+ sortData : function() {
+ var sortInfo = this.hasMultiSort ? this.multiSortInfo : this.sortInfo,
+ direction = sortInfo.direction || "ASC",
+ sorters = sortInfo.sorters,
+ sortFns = [];
+
+
+ if (!this.hasMultiSort) {
+ sorters = [{direction: direction, field: sortInfo.field}];
+ }
+
+
+ for (var i=0, j = sorters.length; i < j; i++) {
+ sortFns.push(this.createSortFunction(sorters[i].field, sorters[i].direction));
+ }
+
+ if (sortFns.length == 0) {
+ return;
+ }
+
+
+
+ var directionModifier = direction.toUpperCase() == "DESC" ? -1 : 1;
+
+
+ var fn = function(r1, r2) {
+ var result = sortFns[0].call(this, r1, r2);
+
+
+ if (sortFns.length > 1) {
+ for (var i=1, j = sortFns.length; i < j; i++) {
+ result = result || sortFns[i].call(this, r1, r2);
+ }
+ }
+
+ return directionModifier * result;
+ };
+
+
+ this.data.sort(direction, fn);
+ if (this.snapshot && this.snapshot != this.data) {
+ this.snapshot.sort(direction, fn);
+ }
+ },
+
+
+ createSortFunction: function(field, direction) {
+ direction = direction || "ASC";
+ var directionModifier = direction.toUpperCase() == "DESC" ? -1 : 1;
+
+ var sortType = this.fields.get(field).sortType;
+
+
+
+ return function(r1, r2) {
+ var v1 = sortType(r1.data[field]),
+ v2 = sortType(r2.data[field]);
+
+ return directionModifier * (v1 > v2 ? 1 : (v1 < v2 ? -1 : 0));
+ };
+ },
+
+
+ setDefaultSort : function(field, dir) {
+ dir = dir ? dir.toUpperCase() : 'ASC';
+ this.sortInfo = {field: field, direction: dir};
+ this.sortToggle[field] = dir;
+ },
+
+
+ sort : function(fieldName, dir) {
+ if (Ext.isArray(arguments[0])) {
+ return this.multiSort.call(this, fieldName, dir);
+ } else {
+ return this.singleSort(fieldName, dir);
+ }
+ },
+
+
+ singleSort: function(fieldName, dir) {
+ var field = this.fields.get(fieldName);
+ if (!field) {
+ return false;
+ }
+
+ var name = field.name,
+ sortInfo = this.sortInfo || null,
+ sortToggle = this.sortToggle ? this.sortToggle[name] : null;
+
+ if (!dir) {
+ if (sortInfo && sortInfo.field == name) {
+ dir = (this.sortToggle[name] || 'ASC').toggle('ASC', 'DESC');
+ } else {
+ dir = field.sortDir;
+ }
+ }
+
+ this.sortToggle[name] = dir;
+ this.sortInfo = {field: name, direction: dir};
+ this.hasMultiSort = false;
+
+ if (this.remoteSort) {
+ if (!this.load(this.lastOptions)) {
+ if (sortToggle) {
+ this.sortToggle[name] = sortToggle;
+ }
+ if (sortInfo) {
+ this.sortInfo = sortInfo;
+ }
+ }
+ } else {
+ this.applySort();
+ this.fireEvent('datachanged', this);
+ }
+ return true;
+ },
+
+
+ multiSort: function(sorters, direction) {
+ this.hasMultiSort = true;
+ direction = direction || "ASC";
+
+
+ if (this.multiSortInfo && direction == this.multiSortInfo.direction) {
+ direction = direction.toggle("ASC", "DESC");
+ }
+
+
+ this.multiSortInfo = {
+ sorters : sorters,
+ direction: direction
+ };
+
+ if (this.remoteSort) {
+ this.singleSort(sorters[0].field, sorters[0].direction);
+
+ } else {
+ this.applySort();
+ this.fireEvent('datachanged', this);
+ }
+ },
+
+
+ each : function(fn, scope){
+ this.data.each(fn, scope);
+ },
+
+
+ getModifiedRecords : function(){
+ return this.modified;
+ },
+
+
+ sum : function(property, start, end){
+ var rs = this.data.items, v = 0;
+ start = start || 0;
+ end = (end || end === 0) ? end : rs.length-1;
+
+ for(var i = start; i <= end; i++){
+ v += (rs[i].data[property] || 0);
+ }
+ return v;
+ },
+
+
+ createFilterFn : function(property, value, anyMatch, caseSensitive, exactMatch){
+ if(Ext.isEmpty(value, false)){
+ return false;
+ }
+ value = this.data.createValueMatcher(value, anyMatch, caseSensitive, exactMatch);
+ return function(r) {
+ return value.test(r.data[property]);
+ };
+ },
+
+
+ createMultipleFilterFn: function(filters) {
+ return function(record) {
+ var isMatch = true;
+
+ for (var i=0, j = filters.length; i < j; i++) {
+ var filter = filters[i],
+ fn = filter.fn,
+ scope = filter.scope;
+
+ isMatch = isMatch && fn.call(scope, record);
+ }
+
+ return isMatch;
+ };
+ },
+
+
+ filter : function(property, value, anyMatch, caseSensitive, exactMatch){
+ var fn;
+
+ if (Ext.isObject(property)) {
+ property = [property];
+ }
+
+ if (Ext.isArray(property)) {
+ var filters = [];
+
+
+ for (var i=0, j = property.length; i < j; i++) {
+ var filter = property[i],
+ func = filter.fn,
+ scope = filter.scope || this;
+
+
+ if (!Ext.isFunction(func)) {
+ func = this.createFilterFn(filter.property, filter.value, filter.anyMatch, filter.caseSensitive, filter.exactMatch);
+ }
+
+ filters.push({fn: func, scope: scope});
+ }
+
+ fn = this.createMultipleFilterFn(filters);
+ } else {
+
+ fn = this.createFilterFn(property, value, anyMatch, caseSensitive, exactMatch);
+ }
+
+ return fn ? this.filterBy(fn) : this.clearFilter();
+ },
+
+
+ filterBy : function(fn, scope){
+ this.snapshot = this.snapshot || this.data;
+ this.data = this.queryBy(fn, scope || this);
+ this.fireEvent('datachanged', this);
+ },
+
+
+ clearFilter : function(suppressEvent){
+ if(this.isFiltered()){
+ this.data = this.snapshot;
+ delete this.snapshot;
+ if(suppressEvent !== true){
+ this.fireEvent('datachanged', this);
+ }
+ }
+ },
+
+
+ isFiltered : function(){
+ return !!this.snapshot && this.snapshot != this.data;
+ },
+
+
+ query : function(property, value, anyMatch, caseSensitive){
+ var fn = this.createFilterFn(property, value, anyMatch, caseSensitive);
+ return fn ? this.queryBy(fn) : this.data.clone();
+ },
+
+
+ queryBy : function(fn, scope){
+ var data = this.snapshot || this.data;
+ return data.filterBy(fn, scope||this);
+ },
+
+
+ find : function(property, value, start, anyMatch, caseSensitive){
+ var fn = this.createFilterFn(property, value, anyMatch, caseSensitive);
+ return fn ? this.data.findIndexBy(fn, null, start) : -1;
+ },
+
+
+ findExact: function(property, value, start){
+ return this.data.findIndexBy(function(rec){
+ return rec.get(property) === value;
+ }, this, start);
+ },
+
+
+ findBy : function(fn, scope, start){
+ return this.data.findIndexBy(fn, scope, start);
+ },
+
+
+ collect : function(dataIndex, allowNull, bypassFilter){
+ var d = (bypassFilter === true && this.snapshot) ?
+ this.snapshot.items : this.data.items;
+ var v, sv, r = [], l = {};
+ for(var i = 0, len = d.length; i < len; i++){
+ v = d[i].data[dataIndex];
+ sv = String(v);
+ if((allowNull || !Ext.isEmpty(v)) && !l[sv]){
+ l[sv] = true;
+ r[r.length] = v;
+ }
+ }
+ return r;
+ },
+
+
+ afterEdit : function(record){
+ if(this.modified.indexOf(record) == -1){
+ this.modified.push(record);
+ }
+ this.fireEvent('update', this, record, Ext.data.Record.EDIT);
+ },
+
+
+ afterReject : function(record){
+ this.modified.remove(record);
+ this.fireEvent('update', this, record, Ext.data.Record.REJECT);
+ },
+
+
+ afterCommit : function(record){
+ this.modified.remove(record);
+ this.fireEvent('update', this, record, Ext.data.Record.COMMIT);
+ },
+
+
+ commitChanges : function(){
+ var modified = this.modified.slice(0),
+ length = modified.length,
+ i;
+
+ for (i = 0; i < length; i++){
+ modified[i].commit();
+ }
+
+ this.modified = [];
+ this.removed = [];
+ },
+
+
+ rejectChanges : function() {
+ var modified = this.modified.slice(0),
+ removed = this.removed.slice(0).reverse(),
+ mLength = modified.length,
+ rLength = removed.length,
+ i;
+
+ for (i = 0; i < mLength; i++) {
+ modified[i].reject();
+ }
+
+ for (i = 0; i < rLength; i++) {
+ this.insert(removed[i].lastIndex || 0, removed[i]);
+ removed[i].reject();
+ }
+
+ this.modified = [];
+ this.removed = [];
+ },
+
+
+ onMetaChange : function(meta){
+ this.recordType = this.reader.recordType;
+ this.fields = this.recordType.prototype.fields;
+ delete this.snapshot;
+ if(this.reader.meta.sortInfo){
+ this.sortInfo = this.reader.meta.sortInfo;
+ }else if(this.sortInfo && !this.fields.get(this.sortInfo.field)){
+ delete this.sortInfo;
+ }
+ if(this.writer){
+ this.writer.meta = this.reader.meta;
+ }
+ this.modified = [];
+ this.fireEvent('metachange', this, this.reader.meta);
+ },
+
+
+ findInsertIndex : function(record){
+ this.suspendEvents();
+ var data = this.data.clone();
+ this.data.add(record);
+ this.applySort();
+ var index = this.data.indexOf(record);
+ this.data = data;
+ this.resumeEvents();
+ return index;
+ },
+
+
+ setBaseParam : function (name, value){
+ this.baseParams = this.baseParams || {};
+ this.baseParams[name] = value;
+ }
+});
+
+Ext.reg('store', Ext.data.Store);
+
+
+Ext.data.Store.Error = Ext.extend(Ext.Error, {
+ name: 'Ext.data.Store'
+});
+Ext.apply(Ext.data.Store.Error.prototype, {
+ lang: {
+ 'writer-undefined' : 'Attempted to execute a write-action without a DataWriter installed.'
+ }
+});
+
+Ext.data.Field = Ext.extend(Object, {
+
+ constructor : function(config){
+ if(Ext.isString(config)){
+ config = {name: config};
+ }
+ Ext.apply(this, config);
+
+ var types = Ext.data.Types,
+ st = this.sortType,
+ t;
+
+ if(this.type){
+ if(Ext.isString(this.type)){
+ this.type = Ext.data.Types[this.type.toUpperCase()] || types.AUTO;
+ }
+ }else{
+ this.type = types.AUTO;
+ }
+
+
+ if(Ext.isString(st)){
+ this.sortType = Ext.data.SortTypes[st];
+ }else if(Ext.isEmpty(st)){
+ this.sortType = this.type.sortType;
+ }
+
+ if(!this.convert){
+ this.convert = this.type.convert;
+ }
+ },
+
+
+
+
+
+ dateFormat: null,
+
+
+ useNull: false,
+
+
+ defaultValue: "",
+
+ mapping: null,
+
+ sortType : null,
+
+ sortDir : "ASC",
+
+ allowBlank : true
+});
+
+Ext.data.DataReader = function(meta, recordType){
+
+ this.meta = meta;
+
+ this.recordType = Ext.isArray(recordType) ?
+ Ext.data.Record.create(recordType) : recordType;
+
+
+ if (this.recordType){
+ this.buildExtractors();
+ }
+};
+
+Ext.data.DataReader.prototype = {
+
+
+ getTotal: Ext.emptyFn,
+
+ getRoot: Ext.emptyFn,
+
+ getMessage: Ext.emptyFn,
+
+ getSuccess: Ext.emptyFn,
+
+ getId: Ext.emptyFn,
+
+ buildExtractors : Ext.emptyFn,
+
+ extractValues : Ext.emptyFn,
+
+
+ realize: function(rs, data){
+ if (Ext.isArray(rs)) {
+ for (var i = rs.length - 1; i >= 0; i--) {
+
+ if (Ext.isArray(data)) {
+ this.realize(rs.splice(i,1).shift(), data.splice(i,1).shift());
+ }
+ else {
+
+
+ this.realize(rs.splice(i,1).shift(), data);
+ }
+ }
+ }
+ else {
+
+ if (Ext.isArray(data) && data.length == 1) {
+ data = data.shift();
+ }
+ if (!this.isData(data)) {
+
+
+ throw new Ext.data.DataReader.Error('realize', rs);
+ }
+ rs.phantom = false;
+ rs._phid = rs.id;
+ rs.id = this.getId(data);
+ rs.data = data;
+
+ rs.commit();
+ rs.store.reMap(rs);
+ }
+ },
+
+
+ update : function(rs, data) {
+ if (Ext.isArray(rs)) {
+ for (var i=rs.length-1; i >= 0; i--) {
+ if (Ext.isArray(data)) {
+ this.update(rs.splice(i,1).shift(), data.splice(i,1).shift());
+ }
+ else {
+
+
+ this.update(rs.splice(i,1).shift(), data);
+ }
+ }
+ }
+ else {
+
+ if (Ext.isArray(data) && data.length == 1) {
+ data = data.shift();
+ }
+ if (this.isData(data)) {
+ rs.data = Ext.apply(rs.data, data);
+ }
+ rs.commit();
+ }
+ },
+
+
+ extractData : function(root, returnRecords) {
+
+ var rawName = (this instanceof Ext.data.JsonReader) ? 'json' : 'node';
+
+ var rs = [];
+
+
+
+ if (this.isData(root) && !(this instanceof Ext.data.XmlReader)) {
+ root = [root];
+ }
+ var f = this.recordType.prototype.fields,
+ fi = f.items,
+ fl = f.length,
+ rs = [];
+ if (returnRecords === true) {
+ var Record = this.recordType;
+ for (var i = 0; i < root.length; i++) {
+ var n = root[i];
+ var record = new Record(this.extractValues(n, fi, fl), this.getId(n));
+ record[rawName] = n;
+ rs.push(record);
+ }
+ }
+ else {
+ for (var i = 0; i < root.length; i++) {
+ var data = this.extractValues(root[i], fi, fl);
+ data[this.meta.idProperty] = this.getId(root[i]);
+ rs.push(data);
+ }
+ }
+ return rs;
+ },
+
+
+ isData : function(data) {
+ return (data && Ext.isObject(data) && !Ext.isEmpty(this.getId(data))) ? true : false;
+ },
+
+
+ onMetaChange : function(meta){
+ delete this.ef;
+ this.meta = meta;
+ this.recordType = Ext.data.Record.create(meta.fields);
+ this.buildExtractors();
+ }
+};
+
+
+Ext.data.DataReader.Error = Ext.extend(Ext.Error, {
+ constructor : function(message, arg) {
+ this.arg = arg;
+ Ext.Error.call(this, message);
+ },
+ name: 'Ext.data.DataReader'
+});
+Ext.apply(Ext.data.DataReader.Error.prototype, {
+ lang : {
+ 'update': "#update received invalid data from server. Please see docs for DataReader#update and review your DataReader configuration.",
+ 'realize': "#realize was called with invalid remote-data. Please see the docs for DataReader#realize and review your DataReader configuration.",
+ 'invalid-response': "#readResponse received an invalid response from the server."
+ }
+});
+
+Ext.data.DataWriter = function(config){
+ Ext.apply(this, config);
+};
+Ext.data.DataWriter.prototype = {
+
+
+ writeAllFields : false,
+
+ listful : false,
+
+
+ apply : function(params, baseParams, action, rs) {
+ var data = [],
+ renderer = action + 'Record';
+
+ if (Ext.isArray(rs)) {
+ Ext.each(rs, function(rec){
+ data.push(this[renderer](rec));
+ }, this);
+ }
+ else if (rs instanceof Ext.data.Record) {
+ data = this[renderer](rs);
+ }
+ this.render(params, baseParams, data);
+ },
+
+
+ render : Ext.emptyFn,
+
+
+ updateRecord : Ext.emptyFn,
+
+
+ createRecord : Ext.emptyFn,
+
+
+ destroyRecord : Ext.emptyFn,
+
+
+ toHash : function(rec, config) {
+ var map = rec.fields.map,
+ data = {},
+ raw = (this.writeAllFields === false && rec.phantom === false) ? rec.getChanges() : rec.data,
+ m;
+ Ext.iterate(raw, function(prop, value){
+ if((m = map[prop])){
+ data[m.mapping ? m.mapping : m.name] = value;
+ }
+ });
+
+
+
+ if (rec.phantom) {
+ if (rec.fields.containsKey(this.meta.idProperty) && Ext.isEmpty(rec.data[this.meta.idProperty])) {
+ delete data[this.meta.idProperty];
+ }
+ } else {
+ data[this.meta.idProperty] = rec.id;
+ }
+ return data;
+ },
+
+
+ toArray : function(data) {
+ var fields = [];
+ Ext.iterate(data, function(k, v) {fields.push({name: k, value: v});},this);
+ return fields;
+ }
+};
+Ext.data.DataProxy = function(conn){
+
+
+ conn = conn || {};
+
+
+
+
+
+ this.api = conn.api;
+ this.url = conn.url;
+ this.restful = conn.restful;
+ this.listeners = conn.listeners;
+
+
+ this.prettyUrls = conn.prettyUrls;
+
+
+
+ this.addEvents(
+
+ 'exception',
+
+ 'beforeload',
+
+ 'load',
+
+ 'loadexception',
+
+ 'beforewrite',
+
+ 'write'
+ );
+ Ext.data.DataProxy.superclass.constructor.call(this);
+
+
+ try {
+ Ext.data.Api.prepare(this);
+ } catch (e) {
+ if (e instanceof Ext.data.Api.Error) {
+ e.toConsole();
+ }
+ }
+
+ Ext.data.DataProxy.relayEvents(this, ['beforewrite', 'write', 'exception']);
+};
+
+Ext.extend(Ext.data.DataProxy, Ext.util.Observable, {
+
+ restful: false,
+
+
+ setApi : function() {
+ if (arguments.length == 1) {
+ var valid = Ext.data.Api.isValid(arguments[0]);
+ if (valid === true) {
+ this.api = arguments[0];
+ }
+ else {
+ throw new Ext.data.Api.Error('invalid', valid);
+ }
+ }
+ else if (arguments.length == 2) {
+ if (!Ext.data.Api.isAction(arguments[0])) {
+ throw new Ext.data.Api.Error('invalid', arguments[0]);
+ }
+ this.api[arguments[0]] = arguments[1];
+ }
+ Ext.data.Api.prepare(this);
+ },
+
+
+ isApiAction : function(action) {
+ return (this.api[action]) ? true : false;
+ },
+
+
+ request : function(action, rs, params, reader, callback, scope, options) {
+ if (!this.api[action] && !this.load) {
+ throw new Ext.data.DataProxy.Error('action-undefined', action);
+ }
+ params = params || {};
+ if ((action === Ext.data.Api.actions.read) ? this.fireEvent("beforeload", this, params) : this.fireEvent("beforewrite", this, action, rs, params) !== false) {
+ this.doRequest.apply(this, arguments);
+ }
+ else {
+ callback.call(scope || this, null, options, false);
+ }
+ },
+
+
+
+ load : null,
+
+
+ doRequest : function(action, rs, params, reader, callback, scope, options) {
+
+
+
+ this.load(params, reader, callback, scope, options);
+ },
+
+
+ onRead : Ext.emptyFn,
+
+ onWrite : Ext.emptyFn,
+
+ buildUrl : function(action, record) {
+ record = record || null;
+
+
+
+
+ var url = (this.conn && this.conn.url) ? this.conn.url : (this.api[action]) ? this.api[action].url : this.url;
+ if (!url) {
+ throw new Ext.data.Api.Error('invalid-url', action);
+ }
+
+
+
+
+
+
+
+ var provides = null;
+ var m = url.match(/(.*)(\.json|\.xml|\.html)$/);
+ if (m) {
+ provides = m[2];
+ url = m[1];
+ }
+
+ if ((this.restful === true || this.prettyUrls === true) && record instanceof Ext.data.Record && !record.phantom) {
+ url += '/' + record.id;
+ }
+ return (provides === null) ? url : url + provides;
+ },
+
+
+ destroy: function(){
+ this.purgeListeners();
+ }
+});
+
+
+
+Ext.apply(Ext.data.DataProxy, Ext.util.Observable.prototype);
+Ext.util.Observable.call(Ext.data.DataProxy);
+
+
+Ext.data.DataProxy.Error = Ext.extend(Ext.Error, {
+ constructor : function(message, arg) {
+ this.arg = arg;
+ Ext.Error.call(this, message);
+ },
+ name: 'Ext.data.DataProxy'
+});
+Ext.apply(Ext.data.DataProxy.Error.prototype, {
+ lang: {
+ 'action-undefined': "DataProxy attempted to execute an API-action but found an undefined url / function. Please review your Proxy url/api-configuration.",
+ 'api-invalid': 'Recieved an invalid API-configuration. Please ensure your proxy API-configuration contains only the actions from Ext.data.Api.actions.'
+ }
+});
+
+
+
+Ext.data.Request = function(params) {
+ Ext.apply(this, params);
+};
+Ext.data.Request.prototype = {
+
+ action : undefined,
+
+ rs : undefined,
+
+ params: undefined,
+
+ callback : Ext.emptyFn,
+
+ scope : undefined,
+
+ reader : undefined
+};
+
+Ext.data.Response = function(params) {
+ Ext.apply(this, params);
+};
+Ext.data.Response.prototype = {
+
+ action: undefined,
+
+ success : undefined,
+
+ message : undefined,
+
+ data: undefined,
+
+ raw: undefined,
+
+ records: undefined
+};
+
+Ext.data.ScriptTagProxy = function(config){
+ Ext.apply(this, config);
+
+ Ext.data.ScriptTagProxy.superclass.constructor.call(this, config);
+
+ this.head = document.getElementsByTagName("head")[0];
+
+
+};
+
+Ext.data.ScriptTagProxy.TRANS_ID = 1000;
+
+Ext.extend(Ext.data.ScriptTagProxy, Ext.data.DataProxy, {
+
+
+ timeout : 30000,
+
+ callbackParam : "callback",
+
+ nocache : true,
+
+
+ doRequest : function(action, rs, params, reader, callback, scope, arg) {
+ var p = Ext.urlEncode(Ext.apply(params, this.extraParams));
+
+ var url = this.buildUrl(action, rs);
+ if (!url) {
+ throw new Ext.data.Api.Error('invalid-url', url);
+ }
+ url = Ext.urlAppend(url, p);
+
+ if(this.nocache){
+ url = Ext.urlAppend(url, '_dc=' + (new Date().getTime()));
+ }
+ var transId = ++Ext.data.ScriptTagProxy.TRANS_ID;
+ var trans = {
+ id : transId,
+ action: action,
+ cb : "stcCallback"+transId,
+ scriptId : "stcScript"+transId,
+ params : params,
+ arg : arg,
+ url : url,
+ callback : callback,
+ scope : scope,
+ reader : reader
+ };
+ window[trans.cb] = this.createCallback(action, rs, trans);
+ url += String.format("&{0}={1}", this.callbackParam, trans.cb);
+ if(this.autoAbort !== false){
+ this.abort();
+ }
+
+ trans.timeoutId = this.handleFailure.defer(this.timeout, this, [trans]);
+
+ var script = document.createElement("script");
+ script.setAttribute("src", url);
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("id", trans.scriptId);
+ this.head.appendChild(script);
+
+ this.trans = trans;
+ },
+
+
+ createCallback : function(action, rs, trans) {
+ var self = this;
+ return function(res) {
+ self.trans = false;
+ self.destroyTrans(trans, true);
+ if (action === Ext.data.Api.actions.read) {
+ self.onRead.call(self, action, trans, res);
+ } else {
+ self.onWrite.call(self, action, trans, res, rs);
+ }
+ };
+ },
+
+ onRead : function(action, trans, res) {
+ var result;
+ try {
+ result = trans.reader.readRecords(res);
+ }catch(e){
+
+ this.fireEvent("loadexception", this, trans, res, e);
+
+ this.fireEvent('exception', this, 'response', action, trans, res, e);
+ trans.callback.call(trans.scope||window, null, trans.arg, false);
+ return;
+ }
+ if (result.success === false) {
+
+ this.fireEvent('loadexception', this, trans, res);
+
+ this.fireEvent('exception', this, 'remote', action, trans, res, null);
+ } else {
+ this.fireEvent("load", this, res, trans.arg);
+ }
+ trans.callback.call(trans.scope||window, result, trans.arg, result.success);
+ },
+
+ onWrite : function(action, trans, response, rs) {
+ var reader = trans.reader;
+ try {
+
+ var res = reader.readResponse(action, response);
+ } catch (e) {
+ this.fireEvent('exception', this, 'response', action, trans, res, e);
+ trans.callback.call(trans.scope||window, null, res, false);
+ return;
+ }
+ if(!res.success === true){
+ this.fireEvent('exception', this, 'remote', action, trans, res, rs);
+ trans.callback.call(trans.scope||window, null, res, false);
+ return;
+ }
+ this.fireEvent("write", this, action, res.data, res, rs, trans.arg );
+ trans.callback.call(trans.scope||window, res.data, res, true);
+ },
+
+
+ isLoading : function(){
+ return this.trans ? true : false;
+ },
+
+
+ abort : function(){
+ if(this.isLoading()){
+ this.destroyTrans(this.trans);
+ }
+ },
+
+
+ destroyTrans : function(trans, isLoaded){
+ this.head.removeChild(document.getElementById(trans.scriptId));
+ clearTimeout(trans.timeoutId);
+ if(isLoaded){
+ window[trans.cb] = undefined;
+ try{
+ delete window[trans.cb];
+ }catch(e){}
+ }else{
+
+ window[trans.cb] = function(){
+ window[trans.cb] = undefined;
+ try{
+ delete window[trans.cb];
+ }catch(e){}
+ };
+ }
+ },
+
+
+ handleFailure : function(trans){
+ this.trans = false;
+ this.destroyTrans(trans, false);
+ if (trans.action === Ext.data.Api.actions.read) {
+
+ this.fireEvent("loadexception", this, null, trans.arg);
+ }
+
+ this.fireEvent('exception', this, 'response', trans.action, {
+ response: null,
+ options: trans.arg
+ });
+ trans.callback.call(trans.scope||window, null, trans.arg, false);
+ },
+
+
+ destroy: function(){
+ this.abort();
+ Ext.data.ScriptTagProxy.superclass.destroy.call(this);
+ }
+});
+Ext.data.HttpProxy = function(conn){
+ Ext.data.HttpProxy.superclass.constructor.call(this, conn);
+
+
+ this.conn = conn;
+
+
+
+
+
+ this.conn.url = null;
+
+ this.useAjax = !conn || !conn.events;
+
+
+ var actions = Ext.data.Api.actions;
+ this.activeRequest = {};
+ for (var verb in actions) {
+ this.activeRequest[actions[verb]] = undefined;
+ }
+};
+
+Ext.extend(Ext.data.HttpProxy, Ext.data.DataProxy, {
+
+ getConnection : function() {
+ return this.useAjax ? Ext.Ajax : this.conn;
+ },
+
+
+ setUrl : function(url, makePermanent) {
+ this.conn.url = url;
+ if (makePermanent === true) {
+ this.url = url;
+ this.api = null;
+ Ext.data.Api.prepare(this);
+ }
+ },
+
+
+ doRequest : function(action, rs, params, reader, cb, scope, arg) {
+ var o = {
+ method: (this.api[action]) ? this.api[action]['method'] : undefined,
+ request: {
+ callback : cb,
+ scope : scope,
+ arg : arg
+ },
+ reader: reader,
+ callback : this.createCallback(action, rs),
+ scope: this
+ };
+
+
+
+ if (params.jsonData) {
+ o.jsonData = params.jsonData;
+ } else if (params.xmlData) {
+ o.xmlData = params.xmlData;
+ } else {
+ o.params = params || {};
+ }
+
+
+
+ this.conn.url = this.buildUrl(action, rs);
+
+ if(this.useAjax){
+
+ Ext.applyIf(o, this.conn);
+
+
+ if (action == Ext.data.Api.actions.read && this.activeRequest[action]) {
+ Ext.Ajax.abort(this.activeRequest[action]);
+ }
+ this.activeRequest[action] = Ext.Ajax.request(o);
+ }else{
+ this.conn.request(o);
+ }
+
+ this.conn.url = null;
+ },
+
+
+ createCallback : function(action, rs) {
+ return function(o, success, response) {
+ this.activeRequest[action] = undefined;
+ if (!success) {
+ if (action === Ext.data.Api.actions.read) {
+
+
+ this.fireEvent('loadexception', this, o, response);
+ }
+ this.fireEvent('exception', this, 'response', action, o, response);
+ o.request.callback.call(o.request.scope, null, o.request.arg, false);
+ return;
+ }
+ if (action === Ext.data.Api.actions.read) {
+ this.onRead(action, o, response);
+ } else {
+ this.onWrite(action, o, response, rs);
+ }
+ };
+ },
+
+
+ onRead : function(action, o, response) {
+ var result;
+ try {
+ result = o.reader.read(response);
+ }catch(e){
+
+
+ this.fireEvent('loadexception', this, o, response, e);
+
+ this.fireEvent('exception', this, 'response', action, o, response, e);
+ o.request.callback.call(o.request.scope, null, o.request.arg, false);
+ return;
+ }
+ if (result.success === false) {
+
+
+ this.fireEvent('loadexception', this, o, response);
+
+
+ var res = o.reader.readResponse(action, response);
+ this.fireEvent('exception', this, 'remote', action, o, res, null);
+ }
+ else {
+ this.fireEvent('load', this, o, o.request.arg);
+ }
+
+
+
+ o.request.callback.call(o.request.scope, result, o.request.arg, result.success);
+ },
+
+ onWrite : function(action, o, response, rs) {
+ var reader = o.reader;
+ var res;
+ try {
+ res = reader.readResponse(action, response);
+ } catch (e) {
+ this.fireEvent('exception', this, 'response', action, o, response, e);
+ o.request.callback.call(o.request.scope, null, o.request.arg, false);
+ return;
+ }
+ if (res.success === true) {
+ this.fireEvent('write', this, action, res.data, res, rs, o.request.arg);
+ } else {
+ this.fireEvent('exception', this, 'remote', action, o, res, rs);
+ }
+
+
+
+ o.request.callback.call(o.request.scope, res.data, res, res.success);
+ },
+
+
+ destroy: function(){
+ if(!this.useAjax){
+ this.conn.abort();
+ }else if(this.activeRequest){
+ var actions = Ext.data.Api.actions;
+ for (var verb in actions) {
+ if(this.activeRequest[actions[verb]]){
+ Ext.Ajax.abort(this.activeRequest[actions[verb]]);
+ }
+ }
+ }
+ Ext.data.HttpProxy.superclass.destroy.call(this);
+ }
+});
+Ext.data.MemoryProxy = function(data){
+
+ var api = {};
+ api[Ext.data.Api.actions.read] = true;
+ Ext.data.MemoryProxy.superclass.constructor.call(this, {
+ api: api
+ });
+ this.data = data;
+};
+
+Ext.extend(Ext.data.MemoryProxy, Ext.data.DataProxy, {
+
+
+
+ doRequest : function(action, rs, params, reader, callback, scope, arg) {
+
+ params = params || {};
+ var result;
+ try {
+ result = reader.readRecords(this.data);
+ }catch(e){
+
+ this.fireEvent("loadexception", this, null, arg, e);
+
+ this.fireEvent('exception', this, 'response', action, arg, null, e);
+ callback.call(scope, null, arg, false);
+ return;
+ }
+ callback.call(scope, result, arg, true);
+ }
+});
+Ext.data.Types = new function(){
+ var st = Ext.data.SortTypes;
+ Ext.apply(this, {
+
+ stripRe: /[\$,%]/g,
+
+
+ AUTO: {
+ convert: function(v){ return v; },
+ sortType: st.none,
+ type: 'auto'
+ },
+
+
+ STRING: {
+ convert: function(v){ return (v === undefined || v === null) ? '' : String(v); },
+ sortType: st.asUCString,
+ type: 'string'
+ },
+
+
+ INT: {
+ convert: function(v){
+ return v !== undefined && v !== null && v !== '' ?
+ parseInt(String(v).replace(Ext.data.Types.stripRe, ''), 10) : (this.useNull ? null : 0);
+ },
+ sortType: st.none,
+ type: 'int'
+ },
+
+
+ FLOAT: {
+ convert: function(v){
+ return v !== undefined && v !== null && v !== '' ?
+ parseFloat(String(v).replace(Ext.data.Types.stripRe, ''), 10) : (this.useNull ? null : 0);
+ },
+ sortType: st.none,
+ type: 'float'
+ },
+
+
+ BOOL: {
+ convert: function(v){ return v === true || v === 'true' || v == 1; },
+ sortType: st.none,
+ type: 'bool'
+ },
+
+
+ DATE: {
+ convert: function(v){
+ var df = this.dateFormat;
+ if(!v){
+ return null;
+ }
+ if(Ext.isDate(v)){
+ return v;
+ }
+ if(df){
+ if(df == 'timestamp'){
+ return new Date(v*1000);
+ }
+ if(df == 'time'){
+ return new Date(parseInt(v, 10));
+ }
+ return Date.parseDate(v, df);
+ }
+ var parsed = Date.parse(v);
+ return parsed ? new Date(parsed) : null;
+ },
+ sortType: st.asDate,
+ type: 'date'
+ }
+ });
+
+ Ext.apply(this, {
+
+ BOOLEAN: this.BOOL,
+
+ INTEGER: this.INT,
+
+ NUMBER: this.FLOAT
+ });
+};
+Ext.data.JsonWriter = Ext.extend(Ext.data.DataWriter, {
+
+ encode : true,
+
+ encodeDelete: false,
+
+ constructor : function(config){
+ Ext.data.JsonWriter.superclass.constructor.call(this, config);
+ },
+
+
+ render : function(params, baseParams, data) {
+ if (this.encode === true) {
+
+ Ext.apply(params, baseParams);
+ params[this.meta.root] = Ext.encode(data);
+ } else {
+
+ var jdata = Ext.apply({}, baseParams);
+ jdata[this.meta.root] = data;
+ params.jsonData = jdata;
+ }
+ },
+
+ createRecord : function(rec) {
+ return this.toHash(rec);
+ },
+
+ updateRecord : function(rec) {
+ return this.toHash(rec);
+
+ },
+
+ destroyRecord : function(rec){
+ if(this.encodeDelete){
+ var data = {};
+ data[this.meta.idProperty] = rec.id;
+ return data;
+ }else{
+ return rec.id;
+ }
+ }
+});
+Ext.data.JsonReader = function(meta, recordType){
+ meta = meta || {};
+
+
+
+
+ Ext.applyIf(meta, {
+ idProperty: 'id',
+ successProperty: 'success',
+ totalProperty: 'total'
+ });
+
+ Ext.data.JsonReader.superclass.constructor.call(this, meta, recordType || meta.fields);
+};
+Ext.extend(Ext.data.JsonReader, Ext.data.DataReader, {
+
+
+ read : function(response){
+ var json = response.responseText;
+ var o = Ext.decode(json);
+ if(!o) {
+ throw {message: 'JsonReader.read: Json object not found'};
+ }
+ return this.readRecords(o);
+ },
+
+
+
+ readResponse : function(action, response) {
+ var o = (response.responseText !== undefined) ? Ext.decode(response.responseText) : response;
+ if(!o) {
+ throw new Ext.data.JsonReader.Error('response');
+ }
+
+ var root = this.getRoot(o),
+ success = this.getSuccess(o);
+ if (success && action === Ext.data.Api.actions.create) {
+ var def = Ext.isDefined(root);
+ if (def && Ext.isEmpty(root)) {
+ throw new Ext.data.JsonReader.Error('root-empty', this.meta.root);
+ }
+ else if (!def) {
+ throw new Ext.data.JsonReader.Error('root-undefined-response', this.meta.root);
+ }
+ }
+
+
+ var res = new Ext.data.Response({
+ action: action,
+ success: success,
+ data: (root) ? this.extractData(root, false) : [],
+ message: this.getMessage(o),
+ raw: o
+ });
+
+
+ if (Ext.isEmpty(res.success)) {
+ throw new Ext.data.JsonReader.Error('successProperty-response', this.meta.successProperty);
+ }
+ return res;
+ },
+
+
+ readRecords : function(o){
+
+ this.jsonData = o;
+ if(o.metaData){
+ this.onMetaChange(o.metaData);
+ }
+ var s = this.meta, Record = this.recordType,
+ f = Record.prototype.fields, fi = f.items, fl = f.length, v;
+
+ var root = this.getRoot(o), c = root.length, totalRecords = c, success = true;
+ if(s.totalProperty){
+ v = parseInt(this.getTotal(o), 10);
+ if(!isNaN(v)){
+ totalRecords = v;
+ }
+ }
+ if(s.successProperty){
+ v = this.getSuccess(o);
+ if(v === false || v === 'false'){
+ success = false;
+ }
+ }
+
+
+ return {
+ success : success,
+ records : this.extractData(root, true),
+ totalRecords : totalRecords
+ };
+ },
+
+
+ buildExtractors : function() {
+ if(this.ef){
+ return;
+ }
+ var s = this.meta, Record = this.recordType,
+ f = Record.prototype.fields, fi = f.items, fl = f.length;
+
+ if(s.totalProperty) {
+ this.getTotal = this.createAccessor(s.totalProperty);
+ }
+ if(s.successProperty) {
+ this.getSuccess = this.createAccessor(s.successProperty);
+ }
+ if (s.messageProperty) {
+ this.getMessage = this.createAccessor(s.messageProperty);
+ }
+ this.getRoot = s.root ? this.createAccessor(s.root) : function(p){return p;};
+ if (s.id || s.idProperty) {
+ var g = this.createAccessor(s.id || s.idProperty);
+ this.getId = function(rec) {
+ var r = g(rec);
+ return (r === undefined || r === '') ? null : r;
+ };
+ } else {
+ this.getId = function(){return null;};
+ }
+ var ef = [];
+ for(var i = 0; i < fl; i++){
+ f = fi[i];
+ var map = (f.mapping !== undefined && f.mapping !== null) ? f.mapping : f.name;
+ ef.push(this.createAccessor(map));
+ }
+ this.ef = ef;
+ },
+
+
+ simpleAccess : function(obj, subsc) {
+ return obj[subsc];
+ },
+
+
+ createAccessor : function(){
+ var re = /[\[\.]/;
+ return function(expr) {
+ if(Ext.isEmpty(expr)){
+ return Ext.emptyFn;
+ }
+ if(Ext.isFunction(expr)){
+ return expr;
+ }
+ var i = String(expr).search(re);
+ if(i >= 0){
+ return new Function('obj', 'return obj' + (i > 0 ? '.' : '') + expr);
+ }
+ return function(obj){
+ return obj[expr];
+ };
+
+ };
+ }(),
+
+
+ extractValues : function(data, items, len) {
+ var f, values = {};
+ for(var j = 0; j < len; j++){
+ f = items[j];
+ var v = this.ef[j](data);
+ values[f.name] = f.convert((v !== undefined) ? v : f.defaultValue, data);
+ }
+ return values;
+ }
+});
+
+
+Ext.data.JsonReader.Error = Ext.extend(Ext.Error, {
+ constructor : function(message, arg) {
+ this.arg = arg;
+ Ext.Error.call(this, message);
+ },
+ name : 'Ext.data.JsonReader'
+});
+Ext.apply(Ext.data.JsonReader.Error.prototype, {
+ lang: {
+ 'response': 'An error occurred while json-decoding your server response',
+ 'successProperty-response': 'Could not locate your "successProperty" in your server response. Please review your JsonReader config to ensure the config-property "successProperty" matches the property in your server-response. See the JsonReader docs.',
+ 'root-undefined-config': 'Your JsonReader was configured without a "root" property. Please review your JsonReader config and make sure to define the root property. See the JsonReader docs.',
+ 'idProperty-undefined' : 'Your JsonReader was configured without an "idProperty" Please review your JsonReader configuration and ensure the "idProperty" is set (e.g.: "id"). See the JsonReader docs.',
+ 'root-empty': 'Data was expected to be returned by the server in the "root" property of the response. Please review your JsonReader configuration to ensure the "root" property matches that returned in the server-response. See JsonReader docs.'
+ }
+});
+
+Ext.data.ArrayReader = Ext.extend(Ext.data.JsonReader, {
+
+
+
+
+ readRecords : function(o){
+ this.arrayData = o;
+ var s = this.meta,
+ sid = s ? Ext.num(s.idIndex, s.id) : null,
+ recordType = this.recordType,
+ fields = recordType.prototype.fields,
+ records = [],
+ success = true,
+ v;
+
+ var root = this.getRoot(o);
+
+ for(var i = 0, len = root.length; i < len; i++) {
+ var n = root[i],
+ values = {},
+ id = ((sid || sid === 0) && n[sid] !== undefined && n[sid] !== "" ? n[sid] : null);
+ for(var j = 0, jlen = fields.length; j < jlen; j++) {
+ var f = fields.items[j],
+ k = f.mapping !== undefined && f.mapping !== null ? f.mapping : j;
+ v = n[k] !== undefined ? n[k] : f.defaultValue;
+ v = f.convert(v, n);
+ values[f.name] = v;
+ }
+ var record = new recordType(values, id);
+ record.json = n;
+ records[records.length] = record;
+ }
+
+ var totalRecords = records.length;
+
+ if(s.totalProperty) {
+ v = parseInt(this.getTotal(o), 10);
+ if(!isNaN(v)) {
+ totalRecords = v;
+ }
+ }
+ if(s.successProperty){
+ v = this.getSuccess(o);
+ if(v === false || v === 'false'){
+ success = false;
+ }
+ }
+
+ return {
+ success : success,
+ records : records,
+ totalRecords : totalRecords
+ };
+ }
+});
+Ext.data.ArrayStore = Ext.extend(Ext.data.Store, {
+
+ constructor: function(config){
+ Ext.data.ArrayStore.superclass.constructor.call(this, Ext.apply(config, {
+ reader: new Ext.data.ArrayReader(config)
+ }));
+ },
+
+ loadData : function(data, append){
+ if(this.expandData === true){
+ var r = [];
+ for(var i = 0, len = data.length; i < len; i++){
+ r[r.length] = [data[i]];
+ }
+ data = r;
+ }
+ Ext.data.ArrayStore.superclass.loadData.call(this, data, append);
+ }
+});
+Ext.reg('arraystore', Ext.data.ArrayStore);
+
+
+Ext.data.SimpleStore = Ext.data.ArrayStore;
+Ext.reg('simplestore', Ext.data.SimpleStore);
+Ext.data.JsonStore = Ext.extend(Ext.data.Store, {
+
+ constructor: function(config){
+ Ext.data.JsonStore.superclass.constructor.call(this, Ext.apply(config, {
+ reader: new Ext.data.JsonReader(config)
+ }));
+ }
+});
+Ext.reg('jsonstore', Ext.data.JsonStore);
+Ext.data.XmlWriter = function(params) {
+ Ext.data.XmlWriter.superclass.constructor.apply(this, arguments);
+
+ this.tpl = (typeof(this.tpl) === 'string') ? new Ext.XTemplate(this.tpl).compile() : this.tpl.compile();
+};
+Ext.extend(Ext.data.XmlWriter, Ext.data.DataWriter, {
+
+ documentRoot: 'xrequest',
+
+ forceDocumentRoot: false,
+
+ root: 'records',
+
+ xmlVersion : '1.0',
+
+ xmlEncoding: 'ISO-8859-15',
+
+
+ tpl: '<tpl for="."><\u003fxml version="{version}" encoding="{encoding}"\u003f><tpl if="documentRoot"><{documentRoot}><tpl for="baseParams"><tpl for="."><{name}>{value}</{name}></tpl></tpl></tpl><tpl if="records.length&gt;1"><{root}></tpl><tpl for="records"><{parent.record}><tpl for="."><{name}>{value}</{name}></tpl></{parent.record}></tpl><tpl if="records.length&gt;1"></{root}></tpl><tpl if="documentRoot"></{documentRoot}></tpl></tpl>',
+
+
+
+ render : function(params, baseParams, data) {
+ baseParams = this.toArray(baseParams);
+ params.xmlData = this.tpl.applyTemplate({
+ version: this.xmlVersion,
+ encoding: this.xmlEncoding,
+ documentRoot: (baseParams.length > 0 || this.forceDocumentRoot === true) ? this.documentRoot : false,
+ record: this.meta.record,
+ root: this.root,
+ baseParams: baseParams,
+ records: (Ext.isArray(data[0])) ? data : [data]
+ });
+ },
+
+
+ createRecord : function(rec) {
+ return this.toArray(this.toHash(rec));
+ },
+
+
+ updateRecord : function(rec) {
+ return this.toArray(this.toHash(rec));
+
+ },
+
+ destroyRecord : function(rec) {
+ var data = {};
+ data[this.meta.idProperty] = rec.id;
+ return this.toArray(data);
+ }
+});
+
+Ext.data.XmlReader = function(meta, recordType){
+ meta = meta || {};
+
+
+ Ext.applyIf(meta, {
+ idProperty: meta.idProperty || meta.idPath || meta.id,
+ successProperty: meta.successProperty || meta.success
+ });
+
+ Ext.data.XmlReader.superclass.constructor.call(this, meta, recordType || meta.fields);
+};
+Ext.extend(Ext.data.XmlReader, Ext.data.DataReader, {
+
+ read : function(response){
+ var doc = response.responseXML;
+ if(!doc) {
+ throw {message: "XmlReader.read: XML Document not available"};
+ }
+ return this.readRecords(doc);
+ },
+
+
+ readRecords : function(doc){
+
+ this.xmlData = doc;
+
+ var root = doc.documentElement || doc,
+ q = Ext.DomQuery,
+ totalRecords = 0,
+ success = true;
+
+ if(this.meta.totalProperty){
+ totalRecords = this.getTotal(root, 0);
+ }
+ if(this.meta.successProperty){
+ success = this.getSuccess(root);
+ }
+
+ var records = this.extractData(q.select(this.meta.record, root), true);
+
+
+ return {
+ success : success,
+ records : records,
+ totalRecords : totalRecords || records.length
+ };
+ },
+
+
+ readResponse : function(action, response) {
+ var q = Ext.DomQuery,
+ doc = response.responseXML,
+ root = doc.documentElement || doc;
+
+
+ var res = new Ext.data.Response({
+ action: action,
+ success : this.getSuccess(root),
+ message: this.getMessage(root),
+ data: this.extractData(q.select(this.meta.record, root) || q.select(this.meta.root, root), false),
+ raw: doc
+ });
+
+ if (Ext.isEmpty(res.success)) {
+ throw new Ext.data.DataReader.Error('successProperty-response', this.meta.successProperty);
+ }
+
+
+ if (action === Ext.data.Api.actions.create) {
+ var def = Ext.isDefined(res.data);
+ if (def && Ext.isEmpty(res.data)) {
+ throw new Ext.data.JsonReader.Error('root-empty', this.meta.root);
+ }
+ else if (!def) {
+ throw new Ext.data.JsonReader.Error('root-undefined-response', this.meta.root);
+ }
+ }
+ return res;
+ },
+
+ getSuccess : function() {
+ return true;
+ },
+
+
+ buildExtractors : function() {
+ if(this.ef){
+ return;
+ }
+ var s = this.meta,
+ Record = this.recordType,
+ f = Record.prototype.fields,
+ fi = f.items,
+ fl = f.length;
+
+ if(s.totalProperty) {
+ this.getTotal = this.createAccessor(s.totalProperty);
+ }
+ if(s.successProperty) {
+ this.getSuccess = this.createAccessor(s.successProperty);
+ }
+ if (s.messageProperty) {
+ this.getMessage = this.createAccessor(s.messageProperty);
+ }
+ this.getRoot = function(res) {
+ return (!Ext.isEmpty(res[this.meta.record])) ? res[this.meta.record] : res[this.meta.root];
+ };
+ if (s.idPath || s.idProperty) {
+ var g = this.createAccessor(s.idPath || s.idProperty);
+ this.getId = function(rec) {
+ var id = g(rec) || rec.id;
+ return (id === undefined || id === '') ? null : id;
+ };
+ } else {
+ this.getId = function(){return null;};
+ }
+ var ef = [];
+ for(var i = 0; i < fl; i++){
+ f = fi[i];
+ var map = (f.mapping !== undefined && f.mapping !== null) ? f.mapping : f.name;
+ ef.push(this.createAccessor(map));
+ }
+ this.ef = ef;
+ },
+
+
+ createAccessor : function(){
+ var q = Ext.DomQuery;
+ return function(key) {
+ if (Ext.isFunction(key)) {
+ return key;
+ }
+ switch(key) {
+ case this.meta.totalProperty:
+ return function(root, def){
+ return q.selectNumber(key, root, def);
+ };
+ break;
+ case this.meta.successProperty:
+ return function(root, def) {
+ var sv = q.selectValue(key, root, true);
+ var success = sv !== false && sv !== 'false';
+ return success;
+ };
+ break;
+ default:
+ return function(root, def) {
+ return q.selectValue(key, root, def);
+ };
+ break;
+ }
+ };
+ }(),
+
+
+ extractValues : function(data, items, len) {
+ var f, values = {};
+ for(var j = 0; j < len; j++){
+ f = items[j];
+ var v = this.ef[j](data);
+ values[f.name] = f.convert((v !== undefined) ? v : f.defaultValue, data);
+ }
+ return values;
+ }
+});
+Ext.data.XmlStore = Ext.extend(Ext.data.Store, {
+
+ constructor: function(config){
+ Ext.data.XmlStore.superclass.constructor.call(this, Ext.apply(config, {
+ reader: new Ext.data.XmlReader(config)
+ }));
+ }
+});
+Ext.reg('xmlstore', Ext.data.XmlStore);
+Ext.data.GroupingStore = Ext.extend(Ext.data.Store, {
+
+
+ constructor: function(config) {
+ config = config || {};
+
+
+
+
+
+ this.hasMultiSort = true;
+ this.multiSortInfo = this.multiSortInfo || {sorters: []};
+
+ var sorters = this.multiSortInfo.sorters,
+ groupField = config.groupField || this.groupField,
+ sortInfo = config.sortInfo || this.sortInfo,
+ groupDir = config.groupDir || this.groupDir;
+
+
+ if(groupField){
+ sorters.push({
+ field : groupField,
+ direction: groupDir
+ });
+ }
+
+
+ if (sortInfo) {
+ sorters.push(sortInfo);
+ }
+
+ Ext.data.GroupingStore.superclass.constructor.call(this, config);
+
+ this.addEvents(
+
+ 'groupchange'
+ );
+
+ this.applyGroupField();
+ },
+
+
+
+ remoteGroup : false,
+
+ groupOnSort:false,
+
+
+ groupDir : 'ASC',
+
+
+ clearGrouping : function(){
+ this.groupField = false;
+
+ if(this.remoteGroup){
+ if(this.baseParams){
+ delete this.baseParams.groupBy;
+ delete this.baseParams.groupDir;
+ }
+ var lo = this.lastOptions;
+ if(lo && lo.params){
+ delete lo.params.groupBy;
+ delete lo.params.groupDir;
+ }
+
+ this.reload();
+ }else{
+ this.sort();
+ this.fireEvent('datachanged', this);
+ }
+ },
+
+
+ groupBy : function(field, forceRegroup, direction) {
+ direction = direction ? (String(direction).toUpperCase() == 'DESC' ? 'DESC' : 'ASC') : this.groupDir;
+
+ if (this.groupField == field && this.groupDir == direction && !forceRegroup) {
+ return;
+ }
+
+
+
+ var sorters = this.multiSortInfo.sorters;
+ if (sorters.length > 0 && sorters[0].field == this.groupField) {
+ sorters.shift();
+ }
+
+ this.groupField = field;
+ this.groupDir = direction;
+ this.applyGroupField();
+
+ var fireGroupEvent = function() {
+ this.fireEvent('groupchange', this, this.getGroupState());
+ };
+
+ if (this.groupOnSort) {
+ this.sort(field, direction);
+ fireGroupEvent.call(this);
+ return;
+ }
+
+ if (this.remoteGroup) {
+ this.on('load', fireGroupEvent, this, {single: true});
+ this.reload();
+ } else {
+ this.sort(sorters);
+ fireGroupEvent.call(this);
+ }
+ },
+
+
+
+ sort : function(fieldName, dir) {
+ if (this.remoteSort) {
+ return Ext.data.GroupingStore.superclass.sort.call(this, fieldName, dir);
+ }
+
+ var sorters = [];
+
+
+ if (Ext.isArray(arguments[0])) {
+ sorters = arguments[0];
+ } else if (fieldName == undefined) {
+
+
+ sorters = this.sortInfo ? [this.sortInfo] : [];
+ } else {
+
+
+ var field = this.fields.get(fieldName);
+ if (!field) return false;
+
+ var name = field.name,
+ sortInfo = this.sortInfo || null,
+ sortToggle = this.sortToggle ? this.sortToggle[name] : null;
+
+ if (!dir) {
+ if (sortInfo && sortInfo.field == name) {
+ dir = (this.sortToggle[name] || 'ASC').toggle('ASC', 'DESC');
+ } else {
+ dir = field.sortDir;
+ }
+ }
+
+ this.sortToggle[name] = dir;
+ this.sortInfo = {field: name, direction: dir};
+
+ sorters = [this.sortInfo];
+ }
+
+
+ if (this.groupField) {
+ sorters.unshift({direction: this.groupDir, field: this.groupField});
+ }
+
+ return this.multiSort.call(this, sorters, dir);
+ },
+
+
+ applyGroupField: function(){
+ if (this.remoteGroup) {
+ if(!this.baseParams){
+ this.baseParams = {};
+ }
+
+ Ext.apply(this.baseParams, {
+ groupBy : this.groupField,
+ groupDir: this.groupDir
+ });
+
+ var lo = this.lastOptions;
+ if (lo && lo.params) {
+ lo.params.groupDir = this.groupDir;
+
+
+ delete lo.params.groupBy;
+ }
+ }
+ },
+
+
+ applyGrouping : function(alwaysFireChange){
+ if(this.groupField !== false){
+ this.groupBy(this.groupField, true, this.groupDir);
+ return true;
+ }else{
+ if(alwaysFireChange === true){
+ this.fireEvent('datachanged', this);
+ }
+ return false;
+ }
+ },
+
+
+ getGroupState : function(){
+ return this.groupOnSort && this.groupField !== false ?
+ (this.sortInfo ? this.sortInfo.field : undefined) : this.groupField;
+ }
+});
+Ext.reg('groupingstore', Ext.data.GroupingStore);
+
+Ext.data.DirectProxy = function(config){
+ Ext.apply(this, config);
+ if(typeof this.paramOrder == 'string'){
+ this.paramOrder = this.paramOrder.split(/[\s,|]/);
+ }
+ Ext.data.DirectProxy.superclass.constructor.call(this, config);
+};
+
+Ext.extend(Ext.data.DirectProxy, Ext.data.DataProxy, {
+
+ paramOrder: undefined,
+
+
+ paramsAsHash: true,
+
+
+ directFn : undefined,
+
+
+ doRequest : function(action, rs, params, reader, callback, scope, options) {
+ var args = [],
+ directFn = this.api[action] || this.directFn;
+
+ switch (action) {
+ case Ext.data.Api.actions.create:
+ args.push(params.jsonData);
+ break;
+ case Ext.data.Api.actions.read:
+
+ if(directFn.directCfg.method.len > 0){
+ if(this.paramOrder){
+ for(var i = 0, len = this.paramOrder.length; i < len; i++){
+ args.push(params[this.paramOrder[i]]);
+ }
+ }else if(this.paramsAsHash){
+ args.push(params);
+ }
+ }
+ break;
+ case Ext.data.Api.actions.update:
+ args.push(params.jsonData);
+ break;
+ case Ext.data.Api.actions.destroy:
+ args.push(params.jsonData);
+ break;
+ }
+
+ var trans = {
+ params : params || {},
+ request: {
+ callback : callback,
+ scope : scope,
+ arg : options
+ },
+ reader: reader
+ };
+
+ args.push(this.createCallback(action, rs, trans), this);
+ directFn.apply(window, args);
+ },
+
+
+ createCallback : function(action, rs, trans) {
+ var me = this;
+ return function(result, res) {
+ if (!res.status) {
+
+ if (action === Ext.data.Api.actions.read) {
+ me.fireEvent("loadexception", me, trans, res, null);
+ }
+ me.fireEvent('exception', me, 'remote', action, trans, res, null);
+ trans.request.callback.call(trans.request.scope, null, trans.request.arg, false);
+ return;
+ }
+ if (action === Ext.data.Api.actions.read) {
+ me.onRead(action, trans, result, res);
+ } else {
+ me.onWrite(action, trans, result, res, rs);
+ }
+ };
+ },
+
+
+ onRead : function(action, trans, result, res) {
+ var records;
+ try {
+ records = trans.reader.readRecords(result);
+ }
+ catch (ex) {
+
+ this.fireEvent("loadexception", this, trans, res, ex);
+
+ this.fireEvent('exception', this, 'response', action, trans, res, ex);
+ trans.request.callback.call(trans.request.scope, null, trans.request.arg, false);
+ return;
+ }
+ this.fireEvent("load", this, res, trans.request.arg);
+ trans.request.callback.call(trans.request.scope, records, trans.request.arg, true);
+ },
+
+ onWrite : function(action, trans, result, res, rs) {
+ var data = trans.reader.extractData(trans.reader.getRoot(result), false);
+ var success = trans.reader.getSuccess(result);
+ success = (success !== false);
+ if (success){
+ this.fireEvent("write", this, action, data, res, rs, trans.request.arg);
+ }else{
+ this.fireEvent('exception', this, 'remote', action, trans, result, rs);
+ }
+ trans.request.callback.call(trans.request.scope, data, res, success);
+ }
+});
+
+Ext.data.DirectStore = Ext.extend(Ext.data.Store, {
+ constructor : function(config){
+
+ var c = Ext.apply({}, {
+ batchTransactions: false
+ }, config);
+ Ext.data.DirectStore.superclass.constructor.call(this, Ext.apply(c, {
+ proxy: Ext.isDefined(c.proxy) ? c.proxy : new Ext.data.DirectProxy(Ext.copyTo({}, c, 'paramOrder,paramsAsHash,directFn,api')),
+ reader: (!Ext.isDefined(c.reader) && c.fields) ? new Ext.data.JsonReader(Ext.copyTo({}, c, 'totalProperty,root,idProperty'), c.fields) : c.reader
+ }));
+ }
+});
+Ext.reg('directstore', Ext.data.DirectStore);
+
+Ext.Direct = Ext.extend(Ext.util.Observable, {
+
+
+
+ exceptions: {
+ TRANSPORT: 'xhr',
+ PARSE: 'parse',
+ LOGIN: 'login',
+ SERVER: 'exception'
+ },
+
+
+ constructor: function(){
+ this.addEvents(
+
+ 'event',
+
+ 'exception'
+ );
+ this.transactions = {};
+ this.providers = {};
+ },
+
+
+ addProvider : function(provider){
+ var a = arguments;
+ if(a.length > 1){
+ for(var i = 0, len = a.length; i < len; i++){
+ this.addProvider(a[i]);
+ }
+ return;
+ }
+
+
+ if(!provider.events){
+ provider = new Ext.Direct.PROVIDERS[provider.type](provider);
+ }
+ provider.id = provider.id || Ext.id();
+ this.providers[provider.id] = provider;
+
+ provider.on('data', this.onProviderData, this);
+ provider.on('exception', this.onProviderException, this);
+
+
+ if(!provider.isConnected()){
+ provider.connect();
+ }
+
+ return provider;
+ },
+
+
+ getProvider : function(id){
+ return this.providers[id];
+ },
+
+ removeProvider : function(id){
+ var provider = id.id ? id : this.providers[id];
+ provider.un('data', this.onProviderData, this);
+ provider.un('exception', this.onProviderException, this);
+ delete this.providers[provider.id];
+ return provider;
+ },
+
+ addTransaction: function(t){
+ this.transactions[t.tid] = t;
+ return t;
+ },
+
+ removeTransaction: function(t){
+ delete this.transactions[t.tid || t];
+ return t;
+ },
+
+ getTransaction: function(tid){
+ return this.transactions[tid.tid || tid];
+ },
+
+ onProviderData : function(provider, e){
+ if(Ext.isArray(e)){
+ for(var i = 0, len = e.length; i < len; i++){
+ this.onProviderData(provider, e[i]);
+ }
+ return;
+ }
+ if(e.name && e.name != 'event' && e.name != 'exception'){
+ this.fireEvent(e.name, e);
+ }else if(e.type == 'exception'){
+ this.fireEvent('exception', e);
+ }
+ this.fireEvent('event', e, provider);
+ },
+
+ createEvent : function(response, extraProps){
+ return new Ext.Direct.eventTypes[response.type](Ext.apply(response, extraProps));
+ }
+});
+
+Ext.Direct = new Ext.Direct();
+
+Ext.Direct.TID = 1;
+Ext.Direct.PROVIDERS = {};
+Ext.Direct.Transaction = function(config){
+ Ext.apply(this, config);
+ this.tid = ++Ext.Direct.TID;
+ this.retryCount = 0;
+};
+Ext.Direct.Transaction.prototype = {
+ send: function(){
+ this.provider.queueTransaction(this);
+ },
+
+ retry: function(){
+ this.retryCount++;
+ this.send();
+ },
+
+ getProvider: function(){
+ return this.provider;
+ }
+};Ext.Direct.Event = function(config){
+ Ext.apply(this, config);
+};
+
+Ext.Direct.Event.prototype = {
+ status: true,
+ getData: function(){
+ return this.data;
+ }
+};
+
+Ext.Direct.RemotingEvent = Ext.extend(Ext.Direct.Event, {
+ type: 'rpc',
+ getTransaction: function(){
+ return this.transaction || Ext.Direct.getTransaction(this.tid);
+ }
+});
+
+Ext.Direct.ExceptionEvent = Ext.extend(Ext.Direct.RemotingEvent, {
+ status: false,
+ type: 'exception'
+});
+
+Ext.Direct.eventTypes = {
+ 'rpc': Ext.Direct.RemotingEvent,
+ 'event': Ext.Direct.Event,
+ 'exception': Ext.Direct.ExceptionEvent
+};
+
+Ext.direct.Provider = Ext.extend(Ext.util.Observable, {
+
+
+
+ priority: 1,
+
+
+
+
+ constructor : function(config){
+ Ext.apply(this, config);
+ this.addEvents(
+
+ 'connect',
+
+ 'disconnect',
+
+ 'data',
+
+ 'exception'
+ );
+ Ext.direct.Provider.superclass.constructor.call(this, config);
+ },
+
+
+ isConnected: function(){
+ return false;
+ },
+
+
+ connect: Ext.emptyFn,
+
+
+ disconnect: Ext.emptyFn
+});
+
+Ext.direct.JsonProvider = Ext.extend(Ext.direct.Provider, {
+ parseResponse: function(xhr){
+ if(!Ext.isEmpty(xhr.responseText)){
+ if(typeof xhr.responseText == 'object'){
+ return xhr.responseText;
+ }
+ return Ext.decode(xhr.responseText);
+ }
+ return null;
+ },
+
+ getEvents: function(xhr){
+ var data = null;
+ try{
+ data = this.parseResponse(xhr);
+ }catch(e){
+ var event = new Ext.Direct.ExceptionEvent({
+ data: e,
+ xhr: xhr,
+ code: Ext.Direct.exceptions.PARSE,
+ message: 'Error parsing json response: \n\n ' + data
+ });
+ return [event];
+ }
+ var events = [];
+ if(Ext.isArray(data)){
+ for(var i = 0, len = data.length; i < len; i++){
+ events.push(Ext.Direct.createEvent(data[i]));
+ }
+ }else{
+ events.push(Ext.Direct.createEvent(data));
+ }
+ return events;
+ }
+});
+Ext.direct.PollingProvider = Ext.extend(Ext.direct.JsonProvider, {
+
+
+ priority: 3,
+
+
+ interval: 3000,
+
+
+
+
+
+
+ constructor : function(config){
+ Ext.direct.PollingProvider.superclass.constructor.call(this, config);
+ this.addEvents(
+
+ 'beforepoll',
+
+ 'poll'
+ );
+ },
+
+
+ isConnected: function(){
+ return !!this.pollTask;
+ },
+
+
+ connect: function(){
+ if(this.url && !this.pollTask){
+ this.pollTask = Ext.TaskMgr.start({
+ run: function(){
+ if(this.fireEvent('beforepoll', this) !== false){
+ if(typeof this.url == 'function'){
+ this.url(this.baseParams);
+ }else{
+ Ext.Ajax.request({
+ url: this.url,
+ callback: this.onData,
+ scope: this,
+ params: this.baseParams
+ });
+ }
+ }
+ },
+ interval: this.interval,
+ scope: this
+ });
+ this.fireEvent('connect', this);
+ }else if(!this.url){
+ throw 'Error initializing PollingProvider, no url configured.';
+ }
+ },
+
+
+ disconnect: function(){
+ if(this.pollTask){
+ Ext.TaskMgr.stop(this.pollTask);
+ delete this.pollTask;
+ this.fireEvent('disconnect', this);
+ }
+ },
+
+
+ onData: function(opt, success, xhr){
+ if(success){
+ var events = this.getEvents(xhr);
+ for(var i = 0, len = events.length; i < len; i++){
+ var e = events[i];
+ this.fireEvent('data', this, e);
+ }
+ }else{
+ var e = new Ext.Direct.ExceptionEvent({
+ data: e,
+ code: Ext.Direct.exceptions.TRANSPORT,
+ message: 'Unable to connect to the server.',
+ xhr: xhr
+ });
+ this.fireEvent('data', this, e);
+ }
+ }
+});
+
+Ext.Direct.PROVIDERS['polling'] = Ext.direct.PollingProvider;
+Ext.direct.RemotingProvider = Ext.extend(Ext.direct.JsonProvider, {
+
+
+
+
+
+
+
+
+
+ enableBuffer: 10,
+
+
+ maxRetries: 1,
+
+
+ timeout: undefined,
+
+ constructor : function(config){
+ Ext.direct.RemotingProvider.superclass.constructor.call(this, config);
+ this.addEvents(
+
+ 'beforecall',
+
+ 'call'
+ );
+ this.namespace = (Ext.isString(this.namespace)) ? Ext.ns(this.namespace) : this.namespace || window;
+ this.transactions = {};
+ this.callBuffer = [];
+ },
+
+
+ initAPI : function(){
+ var o = this.actions;
+ for(var c in o){
+ var cls = this.namespace[c] || (this.namespace[c] = {}),
+ ms = o[c];
+ for(var i = 0, len = ms.length; i < len; i++){
+ var m = ms[i];
+ cls[m.name] = this.createMethod(c, m);
+ }
+ }
+ },
+
+
+ isConnected: function(){
+ return !!this.connected;
+ },
+
+ connect: function(){
+ if(this.url){
+ this.initAPI();
+ this.connected = true;
+ this.fireEvent('connect', this);
+ }else if(!this.url){
+ throw 'Error initializing RemotingProvider, no url configured.';
+ }
+ },
+
+ disconnect: function(){
+ if(this.connected){
+ this.connected = false;
+ this.fireEvent('disconnect', this);
+ }
+ },
+
+ onData: function(opt, success, xhr){
+ if(success){
+ var events = this.getEvents(xhr);
+ for(var i = 0, len = events.length; i < len; i++){
+ var e = events[i],
+ t = this.getTransaction(e);
+ this.fireEvent('data', this, e);
+ if(t){
+ this.doCallback(t, e, true);
+ Ext.Direct.removeTransaction(t);
+ }
+ }
+ }else{
+ var ts = [].concat(opt.ts);
+ for(var i = 0, len = ts.length; i < len; i++){
+ var t = this.getTransaction(ts[i]);
+ if(t && t.retryCount < this.maxRetries){
+ t.retry();
+ }else{
+ var e = new Ext.Direct.ExceptionEvent({
+ data: e,
+ transaction: t,
+ code: Ext.Direct.exceptions.TRANSPORT,
+ message: 'Unable to connect to the server.',
+ xhr: xhr
+ });
+ this.fireEvent('data', this, e);
+ if(t){
+ this.doCallback(t, e, false);
+ Ext.Direct.removeTransaction(t);
+ }
+ }
+ }
+ }
+ },
+
+ getCallData: function(t){
+ return {
+ action: t.action,
+ method: t.method,
+ data: t.data,
+ type: 'rpc',
+ tid: t.tid
+ };
+ },
+
+ doSend : function(data){
+ var o = {
+ url: this.url,
+ callback: this.onData,
+ scope: this,
+ ts: data,
+ timeout: this.timeout
+ }, callData;
+
+ if(Ext.isArray(data)){
+ callData = [];
+ for(var i = 0, len = data.length; i < len; i++){
+ callData.push(this.getCallData(data[i]));
+ }
+ }else{
+ callData = this.getCallData(data);
+ }
+
+ if(this.enableUrlEncode){
+ var params = {};
+ params[Ext.isString(this.enableUrlEncode) ? this.enableUrlEncode : 'data'] = Ext.encode(callData);
+ o.params = params;
+ }else{
+ o.jsonData = callData;
+ }
+ Ext.Ajax.request(o);
+ },
+
+ combineAndSend : function(){
+ var len = this.callBuffer.length;
+ if(len > 0){
+ this.doSend(len == 1 ? this.callBuffer[0] : this.callBuffer);
+ this.callBuffer = [];
+ }
+ },
+
+ queueTransaction: function(t){
+ if(t.form){
+ this.processForm(t);
+ return;
+ }
+ this.callBuffer.push(t);
+ if(this.enableBuffer){
+ if(!this.callTask){
+ this.callTask = new Ext.util.DelayedTask(this.combineAndSend, this);
+ }
+ this.callTask.delay(Ext.isNumber(this.enableBuffer) ? this.enableBuffer : 10);
+ }else{
+ this.combineAndSend();
+ }
+ },
+
+ doCall : function(c, m, args){
+ var data = null, hs = args[m.len], scope = args[m.len+1];
+
+ if(m.len !== 0){
+ data = args.slice(0, m.len);
+ }
+
+ var t = new Ext.Direct.Transaction({
+ provider: this,
+ args: args,
+ action: c,
+ method: m.name,
+ data: data,
+ cb: scope && Ext.isFunction(hs) ? hs.createDelegate(scope) : hs
+ });
+
+ if(this.fireEvent('beforecall', this, t, m) !== false){
+ Ext.Direct.addTransaction(t);
+ this.queueTransaction(t);
+ this.fireEvent('call', this, t, m);
+ }
+ },
+
+ doForm : function(c, m, form, callback, scope){
+ var t = new Ext.Direct.Transaction({
+ provider: this,
+ action: c,
+ method: m.name,
+ args:[form, callback, scope],
+ cb: scope && Ext.isFunction(callback) ? callback.createDelegate(scope) : callback,
+ isForm: true
+ });
+
+ if(this.fireEvent('beforecall', this, t, m) !== false){
+ Ext.Direct.addTransaction(t);
+ var isUpload = String(form.getAttribute("enctype")).toLowerCase() == 'multipart/form-data',
+ params = {
+ extTID: t.tid,
+ extAction: c,
+ extMethod: m.name,
+ extType: 'rpc',
+ extUpload: String(isUpload)
+ };
+
+
+
+ Ext.apply(t, {
+ form: Ext.getDom(form),
+ isUpload: isUpload,
+ params: callback && Ext.isObject(callback.params) ? Ext.apply(params, callback.params) : params
+ });
+ this.fireEvent('call', this, t, m);
+ this.processForm(t);
+ }
+ },
+
+ processForm: function(t){
+ Ext.Ajax.request({
+ url: this.url,
+ params: t.params,
+ callback: this.onData,
+ scope: this,
+ form: t.form,
+ isUpload: t.isUpload,
+ ts: t
+ });
+ },
+
+ createMethod : function(c, m){
+ var f;
+ if(!m.formHandler){
+ f = function(){
+ this.doCall(c, m, Array.prototype.slice.call(arguments, 0));
+ }.createDelegate(this);
+ }else{
+ f = function(form, callback, scope){
+ this.doForm(c, m, form, callback, scope);
+ }.createDelegate(this);
+ }
+ f.directCfg = {
+ action: c,
+ method: m
+ };
+ return f;
+ },
+
+ getTransaction: function(opt){
+ return opt && opt.tid ? Ext.Direct.getTransaction(opt.tid) : null;
+ },
+
+ doCallback: function(t, e){
+ var fn = e.status ? 'success' : 'failure';
+ if(t && t.cb){
+ var hs = t.cb,
+ result = Ext.isDefined(e.result) ? e.result : e.data;
+ if(Ext.isFunction(hs)){
+ hs(result, e);
+ } else{
+ Ext.callback(hs[fn], hs.scope, [result, e]);
+ Ext.callback(hs.callback, hs.scope, [result, e]);
+ }
+ }
+ }
+});
+Ext.Direct.PROVIDERS['remoting'] = Ext.direct.RemotingProvider;
+Ext.Resizable = Ext.extend(Ext.util.Observable, {
+
+ constructor: function(el, config){
+ this.el = Ext.get(el);
+ if(config && config.wrap){
+ config.resizeChild = this.el;
+ this.el = this.el.wrap(typeof config.wrap == 'object' ? config.wrap : {cls:'xresizable-wrap'});
+ this.el.id = this.el.dom.id = config.resizeChild.id + '-rzwrap';
+ this.el.setStyle('overflow', 'hidden');
+ this.el.setPositioning(config.resizeChild.getPositioning());
+ config.resizeChild.clearPositioning();
+ if(!config.width || !config.height){
+ var csize = config.resizeChild.getSize();
+ this.el.setSize(csize.width, csize.height);
+ }
+ if(config.pinned && !config.adjustments){
+ config.adjustments = 'auto';
+ }
+ }
+
+
+ this.proxy = this.el.createProxy({tag: 'div', cls: 'x-resizable-proxy', id: this.el.id + '-rzproxy'}, Ext.getBody());
+ this.proxy.unselectable();
+ this.proxy.enableDisplayMode('block');
+
+ Ext.apply(this, config);
+
+ if(this.pinned){
+ this.disableTrackOver = true;
+ this.el.addClass('x-resizable-pinned');
+ }
+
+ var position = this.el.getStyle('position');
+ if(position != 'absolute' && position != 'fixed'){
+ this.el.setStyle('position', 'relative');
+ }
+ if(!this.handles){
+ this.handles = 's,e,se';
+ if(this.multiDirectional){
+ this.handles += ',n,w';
+ }
+ }
+ if(this.handles == 'all'){
+ this.handles = 'n s e w ne nw se sw';
+ }
+ var hs = this.handles.split(/\s*?[,;]\s*?| /);
+ var ps = Ext.Resizable.positions;
+ for(var i = 0, len = hs.length; i < len; i++){
+ if(hs[i] && ps[hs[i]]){
+ var pos = ps[hs[i]];
+ this[pos] = new Ext.Resizable.Handle(this, pos, this.disableTrackOver, this.transparent, this.handleCls);
+ }
+ }
+
+ this.corner = this.southeast;
+
+ if(this.handles.indexOf('n') != -1 || this.handles.indexOf('w') != -1){
+ this.updateBox = true;
+ }
+
+ this.activeHandle = null;
+
+ if(this.resizeChild){
+ if(typeof this.resizeChild == 'boolean'){
+ this.resizeChild = Ext.get(this.el.dom.firstChild, true);
+ }else{
+ this.resizeChild = Ext.get(this.resizeChild, true);
+ }
+ }
+
+ if(this.adjustments == 'auto'){
+ var rc = this.resizeChild;
+ var hw = this.west, he = this.east, hn = this.north, hs = this.south;
+ if(rc && (hw || hn)){
+ rc.position('relative');
+ rc.setLeft(hw ? hw.el.getWidth() : 0);
+ rc.setTop(hn ? hn.el.getHeight() : 0);
+ }
+ this.adjustments = [
+ (he ? -he.el.getWidth() : 0) + (hw ? -hw.el.getWidth() : 0),
+ (hn ? -hn.el.getHeight() : 0) + (hs ? -hs.el.getHeight() : 0) -1
+ ];
+ }
+
+ if(this.draggable){
+ this.dd = this.dynamic ?
+ this.el.initDD(null) : this.el.initDDProxy(null, {dragElId: this.proxy.id});
+ this.dd.setHandleElId(this.resizeChild ? this.resizeChild.id : this.el.id);
+ if(this.constrainTo){
+ this.dd.constrainTo(this.constrainTo);
+ }
+ }
+
+ this.addEvents(
+
+ 'beforeresize',
+
+ 'resize'
+ );
+
+ if(this.width !== null && this.height !== null){
+ this.resizeTo(this.width, this.height);
+ }else{
+ this.updateChildSize();
+ }
+ if(Ext.isIE){
+ this.el.dom.style.zoom = 1;
+ }
+ Ext.Resizable.superclass.constructor.call(this);
+ },
+
+
+ adjustments : [0, 0],
+
+ animate : false,
+
+
+ disableTrackOver : false,
+
+ draggable: false,
+
+ duration : 0.35,
+
+ dynamic : false,
+
+ easing : 'easeOutStrong',
+
+ enabled : true,
+
+
+ handles : false,
+
+ multiDirectional : false,
+
+ height : null,
+
+ width : null,
+
+ heightIncrement : 0,
+
+ widthIncrement : 0,
+
+ minHeight : 5,
+
+ minWidth : 5,
+
+ maxHeight : 10000,
+
+ maxWidth : 10000,
+
+ minX: 0,
+
+ minY: 0,
+
+ pinned : false,
+
+ preserveRatio : false,
+
+ resizeChild : false,
+
+ transparent: false,
+
+
+
+
+
+
+ resizeTo : function(width, height){
+ this.el.setSize(width, height);
+ this.updateChildSize();
+ this.fireEvent('resize', this, width, height, null);
+ },
+
+
+ startSizing : function(e, handle){
+ this.fireEvent('beforeresize', this, e);
+ if(this.enabled){
+
+ if(!this.overlay){
+ this.overlay = this.el.createProxy({tag: 'div', cls: 'x-resizable-overlay', html: '&#160;'}, Ext.getBody());
+ this.overlay.unselectable();
+ this.overlay.enableDisplayMode('block');
+ this.overlay.on({
+ scope: this,
+ mousemove: this.onMouseMove,
+ mouseup: this.onMouseUp
+ });
+ }
+ this.overlay.setStyle('cursor', handle.el.getStyle('cursor'));
+
+ this.resizing = true;
+ this.startBox = this.el.getBox();
+ this.startPoint = e.getXY();
+ this.offsets = [(this.startBox.x + this.startBox.width) - this.startPoint[0],
+ (this.startBox.y + this.startBox.height) - this.startPoint[1]];
+
+ this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.overlay.show();
+
+ if(this.constrainTo) {
+ var ct = Ext.get(this.constrainTo);
+ this.resizeRegion = ct.getRegion().adjust(
+ ct.getFrameWidth('t'),
+ ct.getFrameWidth('l'),
+ -ct.getFrameWidth('b'),
+ -ct.getFrameWidth('r')
+ );
+ }
+
+ this.proxy.setStyle('visibility', 'hidden');
+ this.proxy.show();
+ this.proxy.setBox(this.startBox);
+ if(!this.dynamic){
+ this.proxy.setStyle('visibility', 'visible');
+ }
+ }
+ },
+
+
+ onMouseDown : function(handle, e){
+ if(this.enabled){
+ e.stopEvent();
+ this.activeHandle = handle;
+ this.startSizing(e, handle);
+ }
+ },
+
+
+ onMouseUp : function(e){
+ this.activeHandle = null;
+ var size = this.resizeElement();
+ this.resizing = false;
+ this.handleOut();
+ this.overlay.hide();
+ this.proxy.hide();
+ this.fireEvent('resize', this, size.width, size.height, e);
+ },
+
+
+ updateChildSize : function(){
+ if(this.resizeChild){
+ var el = this.el;
+ var child = this.resizeChild;
+ var adj = this.adjustments;
+ if(el.dom.offsetWidth){
+ var b = el.getSize(true);
+ child.setSize(b.width+adj[0], b.height+adj[1]);
+ }
+
+
+
+
+ if(Ext.isIE9m){
+ setTimeout(function(){
+ if(el.dom.offsetWidth){
+ var b = el.getSize(true);
+ child.setSize(b.width+adj[0], b.height+adj[1]);
+ }
+ }, 10);
+ }
+ }
+ },
+
+
+ snap : function(value, inc, min){
+ if(!inc || !value){
+ return value;
+ }
+ var newValue = value;
+ var m = value % inc;
+ if(m > 0){
+ if(m > (inc/2)){
+ newValue = value + (inc-m);
+ }else{
+ newValue = value - m;
+ }
+ }
+ return Math.max(min, newValue);
+ },
+
+
+ resizeElement : function(){
+ var box = this.proxy.getBox();
+ if(this.updateBox){
+ this.el.setBox(box, false, this.animate, this.duration, null, this.easing);
+ }else{
+ this.el.setSize(box.width, box.height, this.animate, this.duration, null, this.easing);
+ }
+ this.updateChildSize();
+ if(!this.dynamic){
+ this.proxy.hide();
+ }
+ if(this.draggable && this.constrainTo){
+ this.dd.resetConstraints();
+ this.dd.constrainTo(this.constrainTo);
+ }
+ return box;
+ },
+
+
+ constrain : function(v, diff, m, mx){
+ if(v - diff < m){
+ diff = v - m;
+ }else if(v - diff > mx){
+ diff = v - mx;
+ }
+ return diff;
+ },
+
+
+ onMouseMove : function(e){
+ if(this.enabled && this.activeHandle){
+ try{
+
+ if(this.resizeRegion && !this.resizeRegion.contains(e.getPoint())) {
+ return;
+ }
+
+
+ var curSize = this.curSize || this.startBox,
+ x = this.startBox.x, y = this.startBox.y,
+ ox = x,
+ oy = y,
+ w = curSize.width,
+ h = curSize.height,
+ ow = w,
+ oh = h,
+ mw = this.minWidth,
+ mh = this.minHeight,
+ mxw = this.maxWidth,
+ mxh = this.maxHeight,
+ wi = this.widthIncrement,
+ hi = this.heightIncrement,
+ eventXY = e.getXY(),
+ diffX = -(this.startPoint[0] - Math.max(this.minX, eventXY[0])),
+ diffY = -(this.startPoint[1] - Math.max(this.minY, eventXY[1])),
+ pos = this.activeHandle.position,
+ tw,
+ th;
+
+ switch(pos){
+ case 'east':
+ w += diffX;
+ w = Math.min(Math.max(mw, w), mxw);
+ break;
+ case 'south':
+ h += diffY;
+ h = Math.min(Math.max(mh, h), mxh);
+ break;
+ case 'southeast':
+ w += diffX;
+ h += diffY;
+ w = Math.min(Math.max(mw, w), mxw);
+ h = Math.min(Math.max(mh, h), mxh);
+ break;
+ case 'north':
+ diffY = this.constrain(h, diffY, mh, mxh);
+ y += diffY;
+ h -= diffY;
+ break;
+ case 'west':
+ diffX = this.constrain(w, diffX, mw, mxw);
+ x += diffX;
+ w -= diffX;
+ break;
+ case 'northeast':
+ w += diffX;
+ w = Math.min(Math.max(mw, w), mxw);
+ diffY = this.constrain(h, diffY, mh, mxh);
+ y += diffY;
+ h -= diffY;
+ break;
+ case 'northwest':
+ diffX = this.constrain(w, diffX, mw, mxw);
+ diffY = this.constrain(h, diffY, mh, mxh);
+ y += diffY;
+ h -= diffY;
+ x += diffX;
+ w -= diffX;
+ break;
+ case 'southwest':
+ diffX = this.constrain(w, diffX, mw, mxw);
+ h += diffY;
+ h = Math.min(Math.max(mh, h), mxh);
+ x += diffX;
+ w -= diffX;
+ break;
+ }
+
+ var sw = this.snap(w, wi, mw);
+ var sh = this.snap(h, hi, mh);
+ if(sw != w || sh != h){
+ switch(pos){
+ case 'northeast':
+ y -= sh - h;
+ break;
+ case 'north':
+ y -= sh - h;
+ break;
+ case 'southwest':
+ x -= sw - w;
+ break;
+ case 'west':
+ x -= sw - w;
+ break;
+ case 'northwest':
+ x -= sw - w;
+ y -= sh - h;
+ break;
+ }
+ w = sw;
+ h = sh;
+ }
+
+ if(this.preserveRatio){
+ switch(pos){
+ case 'southeast':
+ case 'east':
+ h = oh * (w/ow);
+ h = Math.min(Math.max(mh, h), mxh);
+ w = ow * (h/oh);
+ break;
+ case 'south':
+ w = ow * (h/oh);
+ w = Math.min(Math.max(mw, w), mxw);
+ h = oh * (w/ow);
+ break;
+ case 'northeast':
+ w = ow * (h/oh);
+ w = Math.min(Math.max(mw, w), mxw);
+ h = oh * (w/ow);
+ break;
+ case 'north':
+ tw = w;
+ w = ow * (h/oh);
+ w = Math.min(Math.max(mw, w), mxw);
+ h = oh * (w/ow);
+ x += (tw - w) / 2;
+ break;
+ case 'southwest':
+ h = oh * (w/ow);
+ h = Math.min(Math.max(mh, h), mxh);
+ tw = w;
+ w = ow * (h/oh);
+ x += tw - w;
+ break;
+ case 'west':
+ th = h;
+ h = oh * (w/ow);
+ h = Math.min(Math.max(mh, h), mxh);
+ y += (th - h) / 2;
+ tw = w;
+ w = ow * (h/oh);
+ x += tw - w;
+ break;
+ case 'northwest':
+ tw = w;
+ th = h;
+ h = oh * (w/ow);
+ h = Math.min(Math.max(mh, h), mxh);
+ w = ow * (h/oh);
+ y += th - h;
+ x += tw - w;
+ break;
+
+ }
+ }
+ this.proxy.setBounds(x, y, w, h);
+ if(this.dynamic){
+ this.resizeElement();
+ }
+ }catch(ex){}
+ }
+ },
+
+
+ handleOver : function(){
+ if(this.enabled){
+ this.el.addClass('x-resizable-over');
+ }
+ },
+
+
+ handleOut : function(){
+ if(!this.resizing){
+ this.el.removeClass('x-resizable-over');
+ }
+ },
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ getResizeChild : function(){
+ return this.resizeChild;
+ },
+
+
+ destroy : function(removeEl){
+ Ext.destroy(this.dd, this.overlay, this.proxy);
+ this.overlay = null;
+ this.proxy = null;
+
+ var ps = Ext.Resizable.positions;
+ for(var k in ps){
+ if(typeof ps[k] != 'function' && this[ps[k]]){
+ this[ps[k]].destroy();
+ }
+ }
+ if(removeEl){
+ this.el.update('');
+ Ext.destroy(this.el);
+ this.el = null;
+ }
+ this.purgeListeners();
+ },
+
+ syncHandleHeight : function(){
+ var h = this.el.getHeight(true);
+ if(this.west){
+ this.west.el.setHeight(h);
+ }
+ if(this.east){
+ this.east.el.setHeight(h);
+ }
+ }
+});
+
+
+
+Ext.Resizable.positions = {
+ n: 'north', s: 'south', e: 'east', w: 'west', se: 'southeast', sw: 'southwest', nw: 'northwest', ne: 'northeast'
+};
+
+Ext.Resizable.Handle = Ext.extend(Object, {
+ constructor : function(rz, pos, disableTrackOver, transparent, cls){
+ if(!this.tpl){
+
+ var tpl = Ext.DomHelper.createTemplate(
+ {tag: 'div', cls: 'x-resizable-handle x-resizable-handle-{0}'}
+ );
+ tpl.compile();
+ Ext.Resizable.Handle.prototype.tpl = tpl;
+ }
+ this.position = pos;
+ this.rz = rz;
+ this.el = this.tpl.append(rz.el.dom, [this.position], true);
+ this.el.unselectable();
+ if(transparent){
+ this.el.setOpacity(0);
+ }
+ if(!Ext.isEmpty(cls)){
+ this.el.addClass(cls);
+ }
+ this.el.on('mousedown', this.onMouseDown, this);
+ if(!disableTrackOver){
+ this.el.on({
+ scope: this,
+ mouseover: this.onMouseOver,
+ mouseout: this.onMouseOut
+ });
+ }
+ },
+
+
+ afterResize : function(rz){
+
+ },
+
+ onMouseDown : function(e){
+ this.rz.onMouseDown(this, e);
+ },
+
+ onMouseOver : function(e){
+ this.rz.handleOver(this, e);
+ },
+
+ onMouseOut : function(e){
+ this.rz.handleOut(this, e);
+ },
+
+ destroy : function(){
+ Ext.destroy(this.el);
+ this.el = null;
+ }
+});
+
+Ext.Window = Ext.extend(Ext.Panel, {
+
+
+
+
+
+
+
+
+
+
+
+
+ baseCls : 'x-window',
+
+ resizable : true,
+
+ draggable : true,
+
+ closable : true,
+
+ closeAction : 'close',
+
+ constrain : false,
+
+ constrainHeader : false,
+
+ plain : false,
+
+ minimizable : false,
+
+ maximizable : false,
+
+ minHeight : 100,
+
+ minWidth : 200,
+
+ expandOnShow : true,
+
+
+ showAnimDuration: 0.25,
+
+
+ hideAnimDuration: 0.25,
+
+
+ collapsible : false,
+
+
+ initHidden : undefined,
+
+
+ hidden : true,
+
+
+
+
+
+
+ elements : 'header,body',
+
+ frame : true,
+
+ floating : true,
+
+
+ initComponent : function(){
+ this.initTools();
+ Ext.Window.superclass.initComponent.call(this);
+ this.addEvents(
+
+
+
+ 'resize',
+
+ 'maximize',
+
+ 'minimize',
+
+ 'restore'
+ );
+
+ if(Ext.isDefined(this.initHidden)){
+ this.hidden = this.initHidden;
+ }
+ if(this.hidden === false){
+ this.hidden = true;
+ this.show();
+ }
+ },
+
+
+ getState : function(){
+ return Ext.apply(Ext.Window.superclass.getState.call(this) || {}, this.getBox(true));
+ },
+
+
+ onRender : function(ct, position){
+ Ext.Window.superclass.onRender.call(this, ct, position);
+
+ if(this.plain){
+ this.el.addClass('x-window-plain');
+ }
+
+
+ this.focusEl = this.el.createChild({
+ tag: 'a', href:'#', cls:'x-dlg-focus',
+ tabIndex:'-1', html: '&#160;'});
+ this.focusEl.swallowEvent('click', true);
+
+ this.proxy = this.el.createProxy('x-window-proxy');
+ this.proxy.enableDisplayMode('block');
+
+ if(this.modal){
+ this.mask = this.container.createChild({cls:'ext-el-mask'}, this.el.dom);
+ this.mask.enableDisplayMode('block');
+ this.mask.hide();
+ this.mon(this.mask, 'click', this.focus, this);
+ }
+ if(this.maximizable){
+ this.mon(this.header, 'dblclick', this.toggleMaximize, this);
+ }
+ },
+
+
+ initEvents : function(){
+ Ext.Window.superclass.initEvents.call(this);
+ if(this.animateTarget){
+ this.setAnimateTarget(this.animateTarget);
+ }
+
+ if(this.resizable){
+ this.resizer = new Ext.Resizable(this.el, {
+ minWidth: this.minWidth,
+ minHeight:this.minHeight,
+ handles: this.resizeHandles || 'all',
+ pinned: true,
+ resizeElement : this.resizerAction,
+ handleCls: 'x-window-handle'
+ });
+ this.resizer.window = this;
+ this.mon(this.resizer, 'beforeresize', this.beforeResize, this);
+ }
+
+ if(this.draggable){
+ this.header.addClass('x-window-draggable');
+ }
+ this.mon(this.el, 'mousedown', this.toFront, this);
+ this.manager = this.manager || Ext.WindowMgr;
+ this.manager.register(this);
+ if(this.maximized){
+ this.maximized = false;
+ this.maximize();
+ }
+ if(this.closable){
+ var km = this.getKeyMap();
+ km.on(27, this.onEsc, this);
+ km.disable();
+ }
+ },
+
+ initDraggable : function(){
+
+ this.dd = new Ext.Window.DD(this);
+ },
+
+
+ onEsc : function(k, e){
+ if (this.activeGhost) {
+ this.unghost();
+ }
+ e.stopEvent();
+ this[this.closeAction]();
+ },
+
+
+ beforeDestroy : function(){
+ if(this.rendered){
+ this.hide();
+ this.clearAnchor();
+ Ext.destroy(
+ this.focusEl,
+ this.resizer,
+ this.dd,
+ this.proxy,
+ this.mask
+ );
+ }
+ Ext.Window.superclass.beforeDestroy.call(this);
+ },
+
+
+ onDestroy : function(){
+ if(this.manager){
+ this.manager.unregister(this);
+ }
+ Ext.Window.superclass.onDestroy.call(this);
+ },
+
+
+ initTools : function(){
+ if(this.minimizable){
+ this.addTool({
+ id: 'minimize',
+ handler: this.minimize.createDelegate(this, [])
+ });
+ }
+ if(this.maximizable){
+ this.addTool({
+ id: 'maximize',
+ handler: this.maximize.createDelegate(this, [])
+ });
+ this.addTool({
+ id: 'restore',
+ handler: this.restore.createDelegate(this, []),
+ hidden:true
+ });
+ }
+ if(this.closable){
+ this.addTool({
+ id: 'close',
+ handler: this[this.closeAction].createDelegate(this, [])
+ });
+ }
+ },
+
+
+ resizerAction : function(){
+ var box = this.proxy.getBox();
+ this.proxy.hide();
+ this.window.handleResize(box);
+ return box;
+ },
+
+
+ beforeResize : function(){
+ this.resizer.minHeight = Math.max(this.minHeight, this.getFrameHeight() + 40);
+ this.resizer.minWidth = Math.max(this.minWidth, this.getFrameWidth() + 40);
+ this.resizeBox = this.el.getBox();
+ },
+
+
+ updateHandles : function(){
+ if(Ext.isIE9m && this.resizer){
+ this.resizer.syncHandleHeight();
+ this.el.repaint();
+ }
+ },
+
+
+ handleResize : function(box){
+ var rz = this.resizeBox;
+ if(rz.x != box.x || rz.y != box.y){
+ this.updateBox(box);
+ }else{
+ this.setSize(box);
+ if (Ext.isIE6 && Ext.isStrict) {
+ this.doLayout();
+ }
+ }
+ this.focus();
+ this.updateHandles();
+ this.saveState();
+ },
+
+
+ focus : function(){
+ var f = this.focusEl,
+ db = this.defaultButton,
+ t = typeof db,
+ el,
+ ct;
+ if(Ext.isDefined(db)){
+ if(Ext.isNumber(db) && this.fbar){
+ f = this.fbar.items.get(db);
+ }else if(Ext.isString(db)){
+ f = Ext.getCmp(db);
+ }else{
+ f = db;
+ }
+ el = f.getEl();
+ ct = Ext.getDom(this.container);
+ if (el && ct) {
+ if (ct != document.body && !Ext.lib.Region.getRegion(ct).contains(Ext.lib.Region.getRegion(el.dom))){
+ return;
+ }
+ }
+ }
+ f = f || this.focusEl;
+ f.focus.defer(10, f);
+ },
+
+
+ setAnimateTarget : function(el){
+ el = Ext.get(el);
+ this.animateTarget = el;
+ },
+
+
+ beforeShow : function(){
+ delete this.el.lastXY;
+ delete this.el.lastLT;
+ if(this.x === undefined || this.y === undefined){
+ var xy = this.el.getAlignToXY(this.container, 'c-c');
+ var pos = this.el.translatePoints(xy[0], xy[1]);
+ this.x = this.x === undefined? pos.left : this.x;
+ this.y = this.y === undefined? pos.top : this.y;
+ }
+ this.el.setLeftTop(this.x, this.y);
+
+ if(this.expandOnShow){
+ this.expand(false);
+ }
+
+ if(this.modal){
+ Ext.getBody().addClass('x-body-masked');
+ this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.mask.show();
+ }
+ },
+
+
+ show : function(animateTarget, cb, scope){
+ if(!this.rendered){
+ this.render(Ext.getBody());
+ }
+ if(this.hidden === false){
+ this.toFront();
+ return this;
+ }
+ if(this.fireEvent('beforeshow', this) === false){
+ return this;
+ }
+ if(cb){
+ this.on('show', cb, scope, {single:true});
+ }
+ this.hidden = false;
+ if(Ext.isDefined(animateTarget)){
+ this.setAnimateTarget(animateTarget);
+ }
+ this.beforeShow();
+ if(this.animateTarget){
+ this.animShow();
+ }else{
+ this.afterShow();
+ }
+ return this;
+ },
+
+
+ afterShow : function(isAnim){
+ if (this.isDestroyed){
+ return false;
+ }
+ this.proxy.hide();
+ this.el.setStyle('display', 'block');
+ this.el.show();
+ if(this.maximized){
+ this.fitContainer();
+ }
+ if(Ext.isMac && Ext.isGecko2){
+ this.cascade(this.setAutoScroll);
+ }
+
+ if(this.monitorResize || this.modal || this.constrain || this.constrainHeader){
+ Ext.EventManager.onWindowResize(this.onWindowResize, this);
+ }
+ this.doConstrain();
+ this.doLayout();
+ if(this.keyMap){
+ this.keyMap.enable();
+ }
+ this.toFront();
+ this.updateHandles();
+ if(isAnim && (Ext.isIE || Ext.isWebKit)){
+ var sz = this.getSize();
+ this.onResize(sz.width, sz.height);
+ }
+ this.onShow();
+ this.fireEvent('show', this);
+ },
+
+
+ animShow : function(){
+ this.proxy.show();
+ this.proxy.setBox(this.animateTarget.getBox());
+ this.proxy.setOpacity(0);
+ var b = this.getBox();
+ this.el.setStyle('display', 'none');
+ this.proxy.shift(Ext.apply(b, {
+ callback: this.afterShow.createDelegate(this, [true], false),
+ scope: this,
+ easing: 'easeNone',
+ duration: this.showAnimDuration,
+ opacity: 0.5
+ }));
+ },
+
+
+ hide : function(animateTarget, cb, scope){
+ if(this.hidden || this.fireEvent('beforehide', this) === false){
+ return this;
+ }
+ if(cb){
+ this.on('hide', cb, scope, {single:true});
+ }
+ this.hidden = true;
+ if(animateTarget !== undefined){
+ this.setAnimateTarget(animateTarget);
+ }
+ if(this.modal){
+ this.mask.hide();
+ Ext.getBody().removeClass('x-body-masked');
+ }
+ if(this.animateTarget){
+ this.animHide();
+ }else{
+ this.el.hide();
+ this.afterHide();
+ }
+ return this;
+ },
+
+
+ afterHide : function(){
+ this.proxy.hide();
+ if(this.monitorResize || this.modal || this.constrain || this.constrainHeader){
+ Ext.EventManager.removeResizeListener(this.onWindowResize, this);
+ }
+ if(this.keyMap){
+ this.keyMap.disable();
+ }
+ this.onHide();
+ this.fireEvent('hide', this);
+ },
+
+
+ animHide : function(){
+ this.proxy.setOpacity(0.5);
+ this.proxy.show();
+ var tb = this.getBox(false);
+ this.proxy.setBox(tb);
+ this.el.hide();
+ this.proxy.shift(Ext.apply(this.animateTarget.getBox(), {
+ callback: this.afterHide,
+ scope: this,
+ duration: this.hideAnimDuration,
+ easing: 'easeNone',
+ opacity: 0
+ }));
+ },
+
+
+ onShow : Ext.emptyFn,
+
+
+ onHide : Ext.emptyFn,
+
+
+ onWindowResize : function(){
+ if(this.maximized){
+ this.fitContainer();
+ }
+ if(this.modal){
+ this.mask.setSize('100%', '100%');
+ var force = this.mask.dom.offsetHeight;
+ this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ }
+ this.doConstrain();
+ },
+
+
+ doConstrain : function(){
+ if(this.constrain || this.constrainHeader){
+ var offsets;
+ if(this.constrain){
+ offsets = {
+ right:this.el.shadowOffset,
+ left:this.el.shadowOffset,
+ bottom:this.el.shadowOffset
+ };
+ }else {
+ var s = this.getSize();
+ offsets = {
+ right:-(s.width - 100),
+ bottom:-(s.height - 25 + this.el.getConstrainOffset())
+ };
+ }
+
+ var xy = this.el.getConstrainToXY(this.container, true, offsets);
+ if(xy){
+ this.setPosition(xy[0], xy[1]);
+ }
+ }
+ },
+
+
+ ghost : function(cls){
+ var ghost = this.createGhost(cls);
+ var box = this.getBox(true);
+ ghost.setLeftTop(box.x, box.y);
+ ghost.setWidth(box.width);
+ this.el.hide();
+ this.activeGhost = ghost;
+ return ghost;
+ },
+
+
+ unghost : function(show, matchPosition){
+ if(!this.activeGhost) {
+ return;
+ }
+ if(show !== false){
+ this.el.show();
+ this.focus.defer(10, this);
+ if(Ext.isMac && Ext.isGecko2){
+ this.cascade(this.setAutoScroll);
+ }
+ }
+ if(matchPosition !== false){
+ this.setPosition(this.activeGhost.getLeft(true), this.activeGhost.getTop(true));
+ }
+ this.activeGhost.hide();
+ this.activeGhost.remove();
+ delete this.activeGhost;
+ },
+
+
+ minimize : function(){
+ this.fireEvent('minimize', this);
+ return this;
+ },
+
+
+ close : function(){
+ if(this.fireEvent('beforeclose', this) !== false){
+ if(this.hidden){
+ this.doClose();
+ }else{
+ this.hide(null, this.doClose, this);
+ }
+ }
+ },
+
+
+ doClose : function(){
+ this.fireEvent('close', this);
+ this.destroy();
+ },
+
+
+ maximize : function(){
+ if(!this.maximized){
+ this.expand(false);
+ this.restoreSize = this.getSize();
+ this.restorePos = this.getPosition(true);
+ if (this.maximizable){
+ this.tools.maximize.hide();
+ this.tools.restore.show();
+ }
+ this.maximized = true;
+ this.el.disableShadow();
+
+ if(this.dd){
+ this.dd.lock();
+ }
+ if(this.collapsible){
+ this.tools.toggle.hide();
+ }
+ this.el.addClass('x-window-maximized');
+ this.container.addClass('x-window-maximized-ct');
+
+ this.setPosition(0, 0);
+ this.fitContainer();
+ this.fireEvent('maximize', this);
+ }
+ return this;
+ },
+
+
+ restore : function(){
+ if(this.maximized){
+ var t = this.tools;
+ this.el.removeClass('x-window-maximized');
+ if(t.restore){
+ t.restore.hide();
+ }
+ if(t.maximize){
+ t.maximize.show();
+ }
+ this.setPosition(this.restorePos[0], this.restorePos[1]);
+ this.setSize(this.restoreSize.width, this.restoreSize.height);
+ delete this.restorePos;
+ delete this.restoreSize;
+ this.maximized = false;
+ this.el.enableShadow(true);
+
+ if(this.dd){
+ this.dd.unlock();
+ }
+ if(this.collapsible && t.toggle){
+ t.toggle.show();
+ }
+ this.container.removeClass('x-window-maximized-ct');
+
+ this.doConstrain();
+ this.fireEvent('restore', this);
+ }
+ return this;
+ },
+
+
+ toggleMaximize : function(){
+ return this[this.maximized ? 'restore' : 'maximize']();
+ },
+
+
+ fitContainer : function(){
+ var vs = this.container.getViewSize(false);
+ this.setSize(vs.width, vs.height);
+ },
+
+
+
+ setZIndex : function(index){
+ if(this.modal){
+ this.mask.setStyle('z-index', index);
+ }
+ this.el.setZIndex(++index);
+ index += 5;
+
+ if(this.resizer){
+ this.resizer.proxy.setStyle('z-index', ++index);
+ }
+
+ this.lastZIndex = index;
+ },
+
+
+ alignTo : function(element, position, offsets){
+ var xy = this.el.getAlignToXY(element, position, offsets);
+ this.setPagePosition(xy[0], xy[1]);
+ return this;
+ },
+
+
+ anchorTo : function(el, alignment, offsets, monitorScroll){
+ this.clearAnchor();
+ this.anchorTarget = {
+ el: el,
+ alignment: alignment,
+ offsets: offsets
+ };
+
+ Ext.EventManager.onWindowResize(this.doAnchor, this);
+ var tm = typeof monitorScroll;
+ if(tm != 'undefined'){
+ Ext.EventManager.on(window, 'scroll', this.doAnchor, this,
+ {buffer: tm == 'number' ? monitorScroll : 50});
+ }
+ return this.doAnchor();
+ },
+
+
+ doAnchor : function(){
+ var o = this.anchorTarget;
+ this.alignTo(o.el, o.alignment, o.offsets);
+ return this;
+ },
+
+
+ clearAnchor : function(){
+ if(this.anchorTarget){
+ Ext.EventManager.removeResizeListener(this.doAnchor, this);
+ Ext.EventManager.un(window, 'scroll', this.doAnchor, this);
+ delete this.anchorTarget;
+ }
+ return this;
+ },
+
+
+ toFront : function(e){
+ if(this.manager.bringToFront(this)){
+ if(!e || !e.getTarget().focus){
+ this.focus();
+ }
+ }
+ return this;
+ },
+
+
+ setActive : function(active){
+ if(active){
+ if(!this.maximized){
+ this.el.enableShadow(true);
+ }
+ this.fireEvent('activate', this);
+ }else{
+ this.el.disableShadow();
+ this.fireEvent('deactivate', this);
+ }
+ },
+
+
+ toBack : function(){
+ this.manager.sendToBack(this);
+ return this;
+ },
+
+
+ center : function(){
+ var xy = this.el.getAlignToXY(this.container, 'c-c');
+ this.setPagePosition(xy[0], xy[1]);
+ return this;
+ }
+
+
+});
+Ext.reg('window', Ext.Window);
+
+
+Ext.Window.DD = Ext.extend(Ext.dd.DD, {
+
+ constructor : function(win){
+ this.win = win;
+ Ext.Window.DD.superclass.constructor.call(this, win.el.id, 'WindowDD-'+win.id);
+ this.setHandleElId(win.header.id);
+ this.scroll = false;
+ },
+
+ moveOnly:true,
+ headerOffsets:[100, 25],
+ startDrag : function(){
+ var w = this.win;
+ this.proxy = w.ghost(w.initialConfig.cls);
+ if(w.constrain !== false){
+ var so = w.el.shadowOffset;
+ this.constrainTo(w.container, {right: so, left: so, bottom: so});
+ }else if(w.constrainHeader !== false){
+ var s = this.proxy.getSize();
+ this.constrainTo(w.container, {right: -(s.width-this.headerOffsets[0]), bottom: -(s.height-this.headerOffsets[1])});
+ }
+ },
+ b4Drag : Ext.emptyFn,
+
+ onDrag : function(e){
+ this.alignElWithMouse(this.proxy, e.getPageX(), e.getPageY());
+ },
+
+ endDrag : function(e){
+ this.win.unghost();
+ this.win.saveState();
+ }
+});
+
+Ext.WindowGroup = function(){
+ var list = {};
+ var accessList = [];
+ var front = null;
+
+
+ var sortWindows = function(d1, d2){
+ return (!d1._lastAccess || d1._lastAccess < d2._lastAccess) ? -1 : 1;
+ };
+
+
+ var orderWindows = function(){
+ var a = accessList, len = a.length;
+ if(len > 0){
+ a.sort(sortWindows);
+ var seed = a[0].manager.zseed;
+ for(var i = 0; i < len; i++){
+ var win = a[i];
+ if(win && !win.hidden){
+ win.setZIndex(seed + (i*10));
+ }
+ }
+ }
+ activateLast();
+ };
+
+
+ var setActiveWin = function(win){
+ if(win != front){
+ if(front){
+ front.setActive(false);
+ }
+ front = win;
+ if(win){
+ win.setActive(true);
+ }
+ }
+ };
+
+
+ var activateLast = function(){
+ for(var i = accessList.length-1; i >=0; --i) {
+ if(!accessList[i].hidden){
+ setActiveWin(accessList[i]);
+ return;
+ }
+ }
+
+ setActiveWin(null);
+ };
+
+ return {
+
+ zseed : 9000,
+
+
+ register : function(win){
+ if(win.manager){
+ win.manager.unregister(win);
+ }
+ win.manager = this;
+
+ list[win.id] = win;
+ accessList.push(win);
+ win.on('hide', activateLast);
+ },
+
+
+ unregister : function(win){
+ delete win.manager;
+ delete list[win.id];
+ win.un('hide', activateLast);
+ accessList.remove(win);
+ },
+
+
+ get : function(id){
+ return typeof id == "object" ? id : list[id];
+ },
+
+
+ bringToFront : function(win){
+ win = this.get(win);
+ if(win != front){
+ win._lastAccess = new Date().getTime();
+ orderWindows();
+ return true;
+ }
+ return false;
+ },
+
+
+ sendToBack : function(win){
+ win = this.get(win);
+ win._lastAccess = -(new Date().getTime());
+ orderWindows();
+ return win;
+ },
+
+
+ hideAll : function(){
+ for(var id in list){
+ if(list[id] && typeof list[id] != "function" && list[id].isVisible()){
+ list[id].hide();
+ }
+ }
+ },
+
+
+ getActive : function(){
+ return front;
+ },
+
+
+ getBy : function(fn, scope){
+ var r = [];
+ for(var i = accessList.length-1; i >=0; --i) {
+ var win = accessList[i];
+ if(fn.call(scope||win, win) !== false){
+ r.push(win);
+ }
+ }
+ return r;
+ },
+
+
+ each : function(fn, scope){
+ for(var id in list){
+ if(list[id] && typeof list[id] != "function"){
+ if(fn.call(scope || list[id], list[id]) === false){
+ return;
+ }
+ }
+ }
+ }
+ };
+};
+
+
+
+Ext.WindowMgr = new Ext.WindowGroup();
+Ext.MessageBox = function(){
+ var dlg, opt, mask, waitTimer,
+ bodyEl, msgEl, textboxEl, textareaEl, progressBar, pp, iconEl, spacerEl,
+ buttons, activeTextEl, bwidth, bufferIcon = '', iconCls = '',
+ buttonNames = ['ok', 'yes', 'no', 'cancel'];
+
+
+ var handleButton = function(button){
+ buttons[button].blur();
+ if(dlg.isVisible()){
+ dlg.hide();
+ handleHide();
+ Ext.callback(opt.fn, opt.scope||window, [button, activeTextEl.dom.value, opt], 1);
+ }
+ };
+
+
+ var handleHide = function(){
+ if(opt && opt.cls){
+ dlg.el.removeClass(opt.cls);
+ }
+ progressBar.reset();
+ };
+
+
+ var handleEsc = function(d, k, e){
+ if(opt && opt.closable !== false){
+ dlg.hide();
+ handleHide();
+ }
+ if(e){
+ e.stopEvent();
+ }
+ };
+
+
+ var updateButtons = function(b){
+ var width = 0,
+ cfg;
+ if(!b){
+ Ext.each(buttonNames, function(name){
+ buttons[name].hide();
+ });
+ return width;
+ }
+ dlg.footer.dom.style.display = '';
+ Ext.iterate(buttons, function(name, btn){
+ cfg = b[name];
+ if(cfg){
+ btn.show();
+ btn.setText(Ext.isString(cfg) ? cfg : Ext.MessageBox.buttonText[name]);
+ width += btn.getEl().getWidth() + 15;
+ }else{
+ btn.hide();
+ }
+ });
+ return width;
+ };
+
+ return {
+
+ getDialog : function(titleText){
+ if(!dlg){
+ var btns = [];
+
+ buttons = {};
+ Ext.each(buttonNames, function(name){
+ btns.push(buttons[name] = new Ext.Button({
+ text: this.buttonText[name],
+ handler: handleButton.createCallback(name),
+ hideMode: 'offsets'
+ }));
+ }, this);
+ dlg = new Ext.Window({
+ autoCreate : true,
+ title:titleText,
+ resizable:false,
+ constrain:true,
+ constrainHeader:true,
+ minimizable : false,
+ maximizable : false,
+ stateful: false,
+ modal: true,
+ shim:true,
+ buttonAlign:"center",
+ width:400,
+ height:100,
+ minHeight: 80,
+ plain:true,
+ footer:true,
+ closable:true,
+ close : function(){
+ if(opt && opt.buttons && opt.buttons.no && !opt.buttons.cancel){
+ handleButton("no");
+ }else{
+ handleButton("cancel");
+ }
+ },
+ fbar: new Ext.Toolbar({
+ items: btns,
+ enableOverflow: false
+ })
+ });
+ dlg.render(document.body);
+ dlg.getEl().addClass('x-window-dlg');
+ mask = dlg.mask;
+ bodyEl = dlg.body.createChild({
+ html:'<div class="ext-mb-icon"></div><div class="ext-mb-content"><span class="ext-mb-text"></span><br /><div class="ext-mb-fix-cursor"><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea></div></div>'
+ });
+ iconEl = Ext.get(bodyEl.dom.firstChild);
+ var contentEl = bodyEl.dom.childNodes[1];
+ msgEl = Ext.get(contentEl.firstChild);
+ textboxEl = Ext.get(contentEl.childNodes[2].firstChild);
+ textboxEl.enableDisplayMode();
+ textboxEl.addKeyListener([10,13], function(){
+ if(dlg.isVisible() && opt && opt.buttons){
+ if(opt.buttons.ok){
+ handleButton("ok");
+ }else if(opt.buttons.yes){
+ handleButton("yes");
+ }
+ }
+ });
+ textareaEl = Ext.get(contentEl.childNodes[2].childNodes[1]);
+ textareaEl.enableDisplayMode();
+ progressBar = new Ext.ProgressBar({
+ renderTo:bodyEl
+ });
+ bodyEl.createChild({cls:'x-clear'});
+ }
+ return dlg;
+ },
+
+
+ updateText : function(text){
+ if(!dlg.isVisible() && !opt.width){
+ dlg.setSize(this.maxWidth, 100);
+ }
+
+ msgEl.update(text ? text + ' ' : '&#160;');
+
+ var iw = iconCls != '' ? (iconEl.getWidth() + iconEl.getMargins('lr')) : 0,
+ mw = msgEl.getWidth() + msgEl.getMargins('lr'),
+ fw = dlg.getFrameWidth('lr'),
+ bw = dlg.body.getFrameWidth('lr'),
+ w;
+
+ w = Math.max(Math.min(opt.width || iw+mw+fw+bw, opt.maxWidth || this.maxWidth),
+ Math.max(opt.minWidth || this.minWidth, bwidth || 0));
+
+ if(opt.prompt === true){
+ activeTextEl.setWidth(w-iw-fw-bw);
+ }
+ if(opt.progress === true || opt.wait === true){
+ progressBar.setSize(w-iw-fw-bw);
+ }
+ if(Ext.isIE9m && w == bwidth){
+ w += 4;
+ }
+ msgEl.update(text || '&#160;');
+ dlg.setSize(w, 'auto').center();
+ return this;
+ },
+
+
+ updateProgress : function(value, progressText, msg){
+ progressBar.updateProgress(value, progressText);
+ if(msg){
+ this.updateText(msg);
+ }
+ return this;
+ },
+
+
+ isVisible : function(){
+ return dlg && dlg.isVisible();
+ },
+
+
+ hide : function(){
+ var proxy = dlg ? dlg.activeGhost : null;
+ if(this.isVisible() || proxy){
+ dlg.hide();
+ handleHide();
+ if (proxy){
+
+
+ dlg.unghost(false, false);
+ }
+ }
+ return this;
+ },
+
+
+ show : function(options){
+ if(this.isVisible()){
+ this.hide();
+ }
+ opt = options;
+ var d = this.getDialog(opt.title || "&#160;");
+
+ d.setTitle(opt.title || "&#160;");
+ var allowClose = (opt.closable !== false && opt.progress !== true && opt.wait !== true);
+ d.tools.close.setDisplayed(allowClose);
+ activeTextEl = textboxEl;
+ opt.prompt = opt.prompt || (opt.multiline ? true : false);
+ if(opt.prompt){
+ if(opt.multiline){
+ textboxEl.hide();
+ textareaEl.show();
+ textareaEl.setHeight(Ext.isNumber(opt.multiline) ? opt.multiline : this.defaultTextHeight);
+ activeTextEl = textareaEl;
+ }else{
+ textboxEl.show();
+ textareaEl.hide();
+ }
+ }else{
+ textboxEl.hide();
+ textareaEl.hide();
+ }
+ activeTextEl.dom.value = opt.value || "";
+ if(opt.prompt){
+ d.focusEl = activeTextEl;
+ }else{
+ var bs = opt.buttons;
+ var db = null;
+ if(bs && bs.ok){
+ db = buttons["ok"];
+ }else if(bs && bs.yes){
+ db = buttons["yes"];
+ }
+ if (db){
+ d.focusEl = db;
+ }
+ }
+ if(Ext.isDefined(opt.iconCls)){
+ d.setIconClass(opt.iconCls);
+ }
+ this.setIcon(Ext.isDefined(opt.icon) ? opt.icon : bufferIcon);
+ bwidth = updateButtons(opt.buttons);
+ progressBar.setVisible(opt.progress === true || opt.wait === true);
+ this.updateProgress(0, opt.progressText);
+ this.updateText(opt.msg);
+ if(opt.cls){
+ d.el.addClass(opt.cls);
+ }
+ d.proxyDrag = opt.proxyDrag === true;
+ d.modal = opt.modal !== false;
+ d.mask = opt.modal !== false ? mask : false;
+ if(!d.isVisible()){
+
+ document.body.appendChild(dlg.el.dom);
+ d.setAnimateTarget(opt.animEl);
+
+ d.on('show', function(){
+ if(allowClose === true){
+ d.keyMap.enable();
+ }else{
+ d.keyMap.disable();
+ }
+ }, this, {single:true});
+ d.show(opt.animEl);
+ }
+ if(opt.wait === true){
+ progressBar.wait(opt.waitConfig);
+ }
+ return this;
+ },
+
+
+ setIcon : function(icon){
+ if(!dlg){
+ bufferIcon = icon;
+ return;
+ }
+ bufferIcon = undefined;
+ if(icon && icon != ''){
+ iconEl.removeClass('x-hidden');
+ iconEl.replaceClass(iconCls, icon);
+ bodyEl.addClass('x-dlg-icon');
+ iconCls = icon;
+ }else{
+ iconEl.replaceClass(iconCls, 'x-hidden');
+ bodyEl.removeClass('x-dlg-icon');
+ iconCls = '';
+ }
+ return this;
+ },
+
+
+ progress : function(title, msg, progressText){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: false,
+ progress:true,
+ closable:false,
+ minWidth: this.minProgressWidth,
+ progressText: progressText
+ });
+ return this;
+ },
+
+
+ wait : function(msg, title, config){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: false,
+ closable:false,
+ wait:true,
+ modal:true,
+ minWidth: this.minProgressWidth,
+ waitConfig: config
+ });
+ return this;
+ },
+
+
+ alert : function(title, msg, fn, scope){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: this.OK,
+ fn: fn,
+ scope : scope,
+ minWidth: this.minWidth
+ });
+ return this;
+ },
+
+
+ confirm : function(title, msg, fn, scope){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: this.YESNO,
+ fn: fn,
+ scope : scope,
+ icon: this.QUESTION,
+ minWidth: this.minWidth
+ });
+ return this;
+ },
+
+
+ prompt : function(title, msg, fn, scope, multiline, value){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: this.OKCANCEL,
+ fn: fn,
+ minWidth: this.minPromptWidth,
+ scope : scope,
+ prompt:true,
+ multiline: multiline,
+ value: value
+ });
+ return this;
+ },
+
+
+ OK : {ok:true},
+
+ CANCEL : {cancel:true},
+
+ OKCANCEL : {ok:true, cancel:true},
+
+ YESNO : {yes:true, no:true},
+
+ YESNOCANCEL : {yes:true, no:true, cancel:true},
+
+ INFO : 'ext-mb-info',
+
+ WARNING : 'ext-mb-warning',
+
+ QUESTION : 'ext-mb-question',
+
+ ERROR : 'ext-mb-error',
+
+
+ defaultTextHeight : 75,
+
+ maxWidth : 600,
+
+ minWidth : 100,
+
+ minProgressWidth : 250,
+
+ minPromptWidth: 250,
+
+ buttonText : {
+ ok : "OK",
+ cancel : "Cancel",
+ yes : "Yes",
+ no : "No"
+ }
+ };
+}();
+
+
+Ext.Msg = Ext.MessageBox;
+Ext.dd.PanelProxy = Ext.extend(Object, {
+
+ constructor : function(panel, config){
+ this.panel = panel;
+ this.id = this.panel.id +'-ddproxy';
+ Ext.apply(this, config);
+ },
+
+
+ insertProxy : true,
+
+
+ setStatus : Ext.emptyFn,
+ reset : Ext.emptyFn,
+ update : Ext.emptyFn,
+ stop : Ext.emptyFn,
+ sync: Ext.emptyFn,
+
+
+ getEl : function(){
+ return this.ghost;
+ },
+
+
+ getGhost : function(){
+ return this.ghost;
+ },
+
+
+ getProxy : function(){
+ return this.proxy;
+ },
+
+
+ hide : function(){
+ if(this.ghost){
+ if(this.proxy){
+ this.proxy.remove();
+ delete this.proxy;
+ }
+ this.panel.el.dom.style.display = '';
+ this.ghost.remove();
+ delete this.ghost;
+ }
+ },
+
+
+ show : function(){
+ if(!this.ghost){
+ this.ghost = this.panel.createGhost(this.panel.initialConfig.cls, undefined, Ext.getBody());
+ this.ghost.setXY(this.panel.el.getXY());
+ if(this.insertProxy){
+ this.proxy = this.panel.el.insertSibling({cls:'x-panel-dd-spacer'});
+ this.proxy.setSize(this.panel.getSize());
+ }
+ this.panel.el.dom.style.display = 'none';
+ }
+ },
+
+
+ repair : function(xy, callback, scope){
+ this.hide();
+ if(typeof callback == "function"){
+ callback.call(scope || this);
+ }
+ },
+
+
+ moveProxy : function(parentNode, before){
+ if(this.proxy){
+ parentNode.insertBefore(this.proxy.dom, before);
+ }
+ }
+});
+
+
+Ext.Panel.DD = Ext.extend(Ext.dd.DragSource, {
+
+ constructor : function(panel, cfg){
+ this.panel = panel;
+ this.dragData = {panel: panel};
+ this.proxy = new Ext.dd.PanelProxy(panel, cfg);
+ Ext.Panel.DD.superclass.constructor.call(this, panel.el, cfg);
+ var h = panel.header,
+ el = panel.body;
+ if(h){
+ this.setHandleElId(h.id);
+ el = panel.header;
+ }
+ el.setStyle('cursor', 'move');
+ this.scroll = false;
+ },
+
+ showFrame: Ext.emptyFn,
+ startDrag: Ext.emptyFn,
+ b4StartDrag: function(x, y) {
+ this.proxy.show();
+ },
+ b4MouseDown: function(e) {
+ var x = e.getPageX(),
+ y = e.getPageY();
+ this.autoOffset(x, y);
+ },
+ onInitDrag : function(x, y){
+ this.onStartDrag(x, y);
+ return true;
+ },
+ createFrame : Ext.emptyFn,
+ getDragEl : function(e){
+ return this.proxy.ghost.dom;
+ },
+ endDrag : function(e){
+ this.proxy.hide();
+ this.panel.saveState();
+ },
+
+ autoOffset : function(x, y) {
+ x -= this.startPageX;
+ y -= this.startPageY;
+ this.setDelta(x, y);
+ }
+});
+Ext.state.Provider = Ext.extend(Ext.util.Observable, {
+
+ constructor : function(){
+
+ this.addEvents("statechange");
+ this.state = {};
+ Ext.state.Provider.superclass.constructor.call(this);
+ },
+
+
+ get : function(name, defaultValue){
+ return typeof this.state[name] == "undefined" ?
+ defaultValue : this.state[name];
+ },
+
+
+ clear : function(name){
+ delete this.state[name];
+ this.fireEvent("statechange", this, name, null);
+ },
+
+
+ set : function(name, value){
+ this.state[name] = value;
+ this.fireEvent("statechange", this, name, value);
+ },
+
+
+ decodeValue : function(cookie){
+
+ var re = /^(a|n|d|b|s|o|e)\:(.*)$/,
+ matches = re.exec(unescape(cookie)),
+ all,
+ type,
+ v,
+ kv;
+ if(!matches || !matches[1]){
+ return;
+ }
+ type = matches[1];
+ v = matches[2];
+ switch(type){
+ case 'e':
+ return null;
+ case 'n':
+ return parseFloat(v);
+ case 'd':
+ return new Date(Date.parse(v));
+ case 'b':
+ return (v == '1');
+ case 'a':
+ all = [];
+ if(v != ''){
+ Ext.each(v.split('^'), function(val){
+ all.push(this.decodeValue(val));
+ }, this);
+ }
+ return all;
+ case 'o':
+ all = {};
+ if(v != ''){
+ Ext.each(v.split('^'), function(val){
+ kv = val.split('=');
+ all[kv[0]] = this.decodeValue(kv[1]);
+ }, this);
+ }
+ return all;
+ default:
+ return v;
+ }
+ },
+
+
+ encodeValue : function(v){
+ var enc,
+ flat = '',
+ i = 0,
+ len,
+ key;
+ if(v == null){
+ return 'e:1';
+ }else if(typeof v == 'number'){
+ enc = 'n:' + v;
+ }else if(typeof v == 'boolean'){
+ enc = 'b:' + (v ? '1' : '0');
+ }else if(Ext.isDate(v)){
+ enc = 'd:' + v.toGMTString();
+ }else if(Ext.isArray(v)){
+ for(len = v.length; i < len; i++){
+ flat += this.encodeValue(v[i]);
+ if(i != len - 1){
+ flat += '^';
+ }
+ }
+ enc = 'a:' + flat;
+ }else if(typeof v == 'object'){
+ for(key in v){
+ if(typeof v[key] != 'function' && v[key] !== undefined){
+ flat += key + '=' + this.encodeValue(v[key]) + '^';
+ }
+ }
+ enc = 'o:' + flat.substring(0, flat.length-1);
+ }else{
+ enc = 's:' + v;
+ }
+ return escape(enc);
+ }
+});
+
+Ext.state.Manager = function(){
+ var provider = new Ext.state.Provider();
+
+ return {
+
+ setProvider : function(stateProvider){
+ provider = stateProvider;
+ },
+
+
+ get : function(key, defaultValue){
+ return provider.get(key, defaultValue);
+ },
+
+
+ set : function(key, value){
+ provider.set(key, value);
+ },
+
+
+ clear : function(key){
+ provider.clear(key);
+ },
+
+
+ getProvider : function(){
+ return provider;
+ }
+ };
+}();
+
+Ext.state.CookieProvider = Ext.extend(Ext.state.Provider, {
+
+ constructor : function(config){
+ Ext.state.CookieProvider.superclass.constructor.call(this);
+ this.path = "/";
+ this.expires = new Date(new Date().getTime()+(1000*60*60*24*7));
+ this.domain = null;
+ this.secure = false;
+ Ext.apply(this, config);
+ this.state = this.readCookies();
+ },
+
+
+ set : function(name, value){
+ if(typeof value == "undefined" || value === null){
+ this.clear(name);
+ return;
+ }
+ this.setCookie(name, value);
+ Ext.state.CookieProvider.superclass.set.call(this, name, value);
+ },
+
+
+ clear : function(name){
+ this.clearCookie(name);
+ Ext.state.CookieProvider.superclass.clear.call(this, name);
+ },
+
+
+ readCookies : function(){
+ var cookies = {},
+ c = document.cookie + ";",
+ re = /\s?(.*?)=(.*?);/g,
+ matches,
+ name,
+ value;
+ while((matches = re.exec(c)) != null){
+ name = matches[1];
+ value = matches[2];
+ if(name && name.substring(0,3) == "ys-"){
+ cookies[name.substr(3)] = this.decodeValue(value);
+ }
+ }
+ return cookies;
+ },
+
+
+ setCookie : function(name, value){
+ document.cookie = "ys-"+ name + "=" + this.encodeValue(value) +
+ ((this.expires == null) ? "" : ("; expires=" + this.expires.toGMTString())) +
+ ((this.path == null) ? "" : ("; path=" + this.path)) +
+ ((this.domain == null) ? "" : ("; domain=" + this.domain)) +
+ ((this.secure == true) ? "; secure" : "");
+ },
+
+
+ clearCookie : function(name){
+ document.cookie = "ys-" + name + "=null; expires=Thu, 01-Jan-70 00:00:01 GMT" +
+ ((this.path == null) ? "" : ("; path=" + this.path)) +
+ ((this.domain == null) ? "" : ("; domain=" + this.domain)) +
+ ((this.secure == true) ? "; secure" : "");
+ }
+});
+Ext.DataView = Ext.extend(Ext.BoxComponent, {
+
+
+
+
+
+
+
+
+
+ selectedClass : "x-view-selected",
+
+ emptyText : "",
+
+
+ deferEmptyText: true,
+
+ trackOver: false,
+
+
+ blockRefresh: false,
+
+
+ last: false,
+
+
+ initComponent : function(){
+ Ext.DataView.superclass.initComponent.call(this);
+ if(Ext.isString(this.tpl) || Ext.isArray(this.tpl)){
+ this.tpl = new Ext.XTemplate(this.tpl);
+ }
+
+ this.addEvents(
+
+ "beforeclick",
+
+ "click",
+
+ "mouseenter",
+
+ "mouseleave",
+
+ "containerclick",
+
+ "dblclick",
+
+ "contextmenu",
+
+ "containercontextmenu",
+
+ "selectionchange",
+
+
+ "beforeselect"
+ );
+
+ this.store = Ext.StoreMgr.lookup(this.store);
+ this.all = new Ext.CompositeElementLite();
+ this.selected = new Ext.CompositeElementLite();
+ },
+
+
+ afterRender : function(){
+ Ext.DataView.superclass.afterRender.call(this);
+
+ this.mon(this.getTemplateTarget(), {
+ "click": this.onClick,
+ "dblclick": this.onDblClick,
+ "contextmenu": this.onContextMenu,
+ scope:this
+ });
+
+ if(this.overClass || this.trackOver){
+ this.mon(this.getTemplateTarget(), {
+ "mouseover": this.onMouseOver,
+ "mouseout": this.onMouseOut,
+ scope:this
+ });
+ }
+
+ if(this.store){
+ this.bindStore(this.store, true);
+ }
+ },
+
+
+ refresh : function() {
+ this.clearSelections(false, true);
+ var el = this.getTemplateTarget(),
+ records = this.store.getRange();
+
+ el.update('');
+ if(records.length < 1){
+ if(!this.deferEmptyText || this.hasSkippedEmptyText){
+ el.update(this.emptyText);
+ }
+ this.all.clear();
+ }else{
+ this.tpl.overwrite(el, this.collectData(records, 0));
+ this.all.fill(Ext.query(this.itemSelector, el.dom));
+ this.updateIndexes(0);
+ }
+ this.hasSkippedEmptyText = true;
+ },
+
+ getTemplateTarget: function(){
+ return this.el;
+ },
+
+
+ prepareData : function(data){
+ return data;
+ },
+
+
+ collectData : function(records, startIndex){
+ var r = [],
+ i = 0,
+ len = records.length;
+ for(; i < len; i++){
+ r[r.length] = this.prepareData(records[i].data, startIndex + i, records[i]);
+ }
+ return r;
+ },
+
+
+ bufferRender : function(records, index){
+ var div = document.createElement('div');
+ this.tpl.overwrite(div, this.collectData(records, index));
+ return Ext.query(this.itemSelector, div);
+ },
+
+
+ onUpdate : function(ds, record){
+ var index = this.store.indexOf(record);
+ if(index > -1){
+ var sel = this.isSelected(index),
+ original = this.all.elements[index],
+ node = this.bufferRender([record], index)[0];
+
+ this.all.replaceElement(index, node, true);
+ if(sel){
+ this.selected.replaceElement(original, node);
+ this.all.item(index).addClass(this.selectedClass);
+ }
+ this.updateIndexes(index, index);
+ }
+ },
+
+
+ onAdd : function(ds, records, index){
+ if(this.all.getCount() === 0){
+ this.refresh();
+ return;
+ }
+ var nodes = this.bufferRender(records, index), n, a = this.all.elements;
+ if(index < this.all.getCount()){
+ n = this.all.item(index).insertSibling(nodes, 'before', true);
+ a.splice.apply(a, [index, 0].concat(nodes));
+ }else{
+ n = this.all.last().insertSibling(nodes, 'after', true);
+ a.push.apply(a, nodes);
+ }
+ this.updateIndexes(index);
+ },
+
+
+ onRemove : function(ds, record, index){
+ this.deselect(index);
+ this.all.removeElement(index, true);
+ this.updateIndexes(index);
+ if (this.store.getCount() === 0){
+ this.refresh();
+ }
+ },
+
+
+ refreshNode : function(index){
+ this.onUpdate(this.store, this.store.getAt(index));
+ },
+
+
+ updateIndexes : function(startIndex, endIndex){
+ var ns = this.all.elements;
+ startIndex = startIndex || 0;
+ endIndex = endIndex || ((endIndex === 0) ? 0 : (ns.length - 1));
+ for(var i = startIndex; i <= endIndex; i++){
+ ns[i].viewIndex = i;
+ }
+ },
+
+
+ getStore : function(){
+ return this.store;
+ },
+
+
+ bindStore : function(store, initial){
+ if(!initial && this.store){
+ if(store !== this.store && this.store.autoDestroy){
+ this.store.destroy();
+ }else{
+ this.store.un("beforeload", this.onBeforeLoad, this);
+ this.store.un("datachanged", this.onDataChanged, this);
+ this.store.un("add", this.onAdd, this);
+ this.store.un("remove", this.onRemove, this);
+ this.store.un("update", this.onUpdate, this);
+ this.store.un("clear", this.refresh, this);
+ }
+ if(!store){
+ this.store = null;
+ }
+ }
+ if(store){
+ store = Ext.StoreMgr.lookup(store);
+ store.on({
+ scope: this,
+ beforeload: this.onBeforeLoad,
+ datachanged: this.onDataChanged,
+ add: this.onAdd,
+ remove: this.onRemove,
+ update: this.onUpdate,
+ clear: this.refresh
+ });
+ }
+ this.store = store;
+ if(store){
+ this.refresh();
+ }
+ },
+
+
+ onDataChanged: function() {
+ if (this.blockRefresh !== true) {
+ this.refresh.apply(this, arguments);
+ }
+ },
+
+
+ findItemFromChild : function(node){
+ return Ext.fly(node).findParent(this.itemSelector, this.getTemplateTarget());
+ },
+
+
+ onClick : function(e){
+ var item = e.getTarget(this.itemSelector, this.getTemplateTarget()),
+ index;
+ if(item){
+ index = this.indexOf(item);
+ if(this.onItemClick(item, index, e) !== false){
+ this.fireEvent("click", this, index, item, e);
+ }
+ }else{
+ if(this.fireEvent("containerclick", this, e) !== false){
+ this.onContainerClick(e);
+ }
+ }
+ },
+
+ onContainerClick : function(e){
+ this.clearSelections();
+ },
+
+
+ onContextMenu : function(e){
+ var item = e.getTarget(this.itemSelector, this.getTemplateTarget());
+ if(item){
+ this.fireEvent("contextmenu", this, this.indexOf(item), item, e);
+ }else{
+ this.fireEvent("containercontextmenu", this, e);
+ }
+ },
+
+
+ onDblClick : function(e){
+ var item = e.getTarget(this.itemSelector, this.getTemplateTarget());
+ if(item){
+ this.fireEvent("dblclick", this, this.indexOf(item), item, e);
+ }
+ },
+
+
+ onMouseOver : function(e){
+ var item = e.getTarget(this.itemSelector, this.getTemplateTarget());
+ if(item && item !== this.lastItem){
+ this.lastItem = item;
+ Ext.fly(item).addClass(this.overClass);
+ this.fireEvent("mouseenter", this, this.indexOf(item), item, e);
+ }
+ },
+
+
+ onMouseOut : function(e){
+ if(this.lastItem){
+ if(!e.within(this.lastItem, true, true)){
+ Ext.fly(this.lastItem).removeClass(this.overClass);
+ this.fireEvent("mouseleave", this, this.indexOf(this.lastItem), this.lastItem, e);
+ delete this.lastItem;
+ }
+ }
+ },
+
+
+ onItemClick : function(item, index, e){
+ if(this.fireEvent("beforeclick", this, index, item, e) === false){
+ return false;
+ }
+ if(this.multiSelect){
+ this.doMultiSelection(item, index, e);
+ e.preventDefault();
+ }else if(this.singleSelect){
+ this.doSingleSelection(item, index, e);
+ e.preventDefault();
+ }
+ return true;
+ },
+
+
+ doSingleSelection : function(item, index, e){
+ if(e.ctrlKey && this.isSelected(index)){
+ this.deselect(index);
+ }else{
+ this.select(index, false);
+ }
+ },
+
+
+ doMultiSelection : function(item, index, e){
+ if(e.shiftKey && this.last !== false){
+ var last = this.last;
+ this.selectRange(last, index, e.ctrlKey);
+ this.last = last;
+ }else{
+ if((e.ctrlKey||this.simpleSelect) && this.isSelected(index)){
+ this.deselect(index);
+ }else{
+ this.select(index, e.ctrlKey || e.shiftKey || this.simpleSelect);
+ }
+ }
+ },
+
+
+ getSelectionCount : function(){
+ return this.selected.getCount();
+ },
+
+
+ getSelectedNodes : function(){
+ return this.selected.elements;
+ },
+
+
+ getSelectedIndexes : function(){
+ var indexes = [],
+ selected = this.selected.elements,
+ i = 0,
+ len = selected.length;
+
+ for(; i < len; i++){
+ indexes.push(selected[i].viewIndex);
+ }
+ return indexes;
+ },
+
+
+ getSelectedRecords : function(){
+ return this.getRecords(this.selected.elements);
+ },
+
+
+ getRecords : function(nodes){
+ var records = [],
+ i = 0,
+ len = nodes.length;
+
+ for(; i < len; i++){
+ records[records.length] = this.store.getAt(nodes[i].viewIndex);
+ }
+ return records;
+ },
+
+
+ getRecord : function(node){
+ return this.store.getAt(node.viewIndex);
+ },
+
+
+ clearSelections : function(suppressEvent, skipUpdate){
+ if((this.multiSelect || this.singleSelect) && this.selected.getCount() > 0){
+ if(!skipUpdate){
+ this.selected.removeClass(this.selectedClass);
+ }
+ this.selected.clear();
+ this.last = false;
+ if(!suppressEvent){
+ this.fireEvent("selectionchange", this, this.selected.elements);
+ }
+ }
+ },
+
+
+ isSelected : function(node){
+ return this.selected.contains(this.getNode(node));
+ },
+
+
+ deselect : function(node){
+ if(this.isSelected(node)){
+ node = this.getNode(node);
+ this.selected.removeElement(node);
+ if(this.last == node.viewIndex){
+ this.last = false;
+ }
+ Ext.fly(node).removeClass(this.selectedClass);
+ this.fireEvent("selectionchange", this, this.selected.elements);
+ }
+ },
+
+
+ select : function(nodeInfo, keepExisting, suppressEvent){
+ if(Ext.isArray(nodeInfo)){
+ if(!keepExisting){
+ this.clearSelections(true);
+ }
+ for(var i = 0, len = nodeInfo.length; i < len; i++){
+ this.select(nodeInfo[i], true, true);
+ }
+ if(!suppressEvent){
+ this.fireEvent("selectionchange", this, this.selected.elements);
+ }
+ } else{
+ var node = this.getNode(nodeInfo);
+ if(!keepExisting){
+ this.clearSelections(true);
+ }
+ if(node && !this.isSelected(node)){
+ if(this.fireEvent("beforeselect", this, node, this.selected.elements) !== false){
+ Ext.fly(node).addClass(this.selectedClass);
+ this.selected.add(node);
+ this.last = node.viewIndex;
+ if(!suppressEvent){
+ this.fireEvent("selectionchange", this, this.selected.elements);
+ }
+ }
+ }
+ }
+ },
+
+
+ selectRange : function(start, end, keepExisting){
+ if(!keepExisting){
+ this.clearSelections(true);
+ }
+ this.select(this.getNodes(start, end), true);
+ },
+
+
+ getNode : function(nodeInfo){
+ if(Ext.isString(nodeInfo)){
+ return document.getElementById(nodeInfo);
+ }else if(Ext.isNumber(nodeInfo)){
+ return this.all.elements[nodeInfo];
+ }else if(nodeInfo instanceof Ext.data.Record){
+ var idx = this.store.indexOf(nodeInfo);
+ return this.all.elements[idx];
+ }
+ return nodeInfo;
+ },
+
+
+ getNodes : function(start, end){
+ var ns = this.all.elements,
+ nodes = [],
+ i;
+
+ start = start || 0;
+ end = !Ext.isDefined(end) ? Math.max(ns.length - 1, 0) : end;
+ if(start <= end){
+ for(i = start; i <= end && ns[i]; i++){
+ nodes.push(ns[i]);
+ }
+ } else{
+ for(i = start; i >= end && ns[i]; i--){
+ nodes.push(ns[i]);
+ }
+ }
+ return nodes;
+ },
+
+
+ indexOf : function(node){
+ node = this.getNode(node);
+ if(Ext.isNumber(node.viewIndex)){
+ return node.viewIndex;
+ }
+ return this.all.indexOf(node);
+ },
+
+
+ onBeforeLoad : function(){
+ if(this.loadingText){
+ this.clearSelections(false, true);
+ this.getTemplateTarget().update('<div class="loading-indicator">'+this.loadingText+'</div>');
+ this.all.clear();
+ }
+ },
+
+ onDestroy : function(){
+ this.all.clear();
+ this.selected.clear();
+ Ext.DataView.superclass.onDestroy.call(this);
+ this.bindStore(null);
+ }
+});
+
+
+Ext.DataView.prototype.setStore = Ext.DataView.prototype.bindStore;
+
+Ext.reg('dataview', Ext.DataView);
+
+Ext.list.ListView = Ext.extend(Ext.DataView, {
+
+
+
+ itemSelector: 'dl',
+
+ selectedClass:'x-list-selected',
+
+ overClass:'x-list-over',
+
+
+ scrollOffset : undefined,
+
+ columnResize: true,
+
+
+ columnSort: true,
+
+
+
+ maxColumnWidth: Ext.isIE9m ? 99 : 100,
+
+ initComponent : function(){
+ if(this.columnResize){
+ this.colResizer = new Ext.list.ColumnResizer(this.colResizer);
+ this.colResizer.init(this);
+ }
+ if(this.columnSort){
+ this.colSorter = new Ext.list.Sorter(this.columnSort);
+ this.colSorter.init(this);
+ }
+ if(!this.internalTpl){
+ this.internalTpl = new Ext.XTemplate(
+ '<div class="x-list-header"><div class="x-list-header-inner">',
+ '<tpl for="columns">',
+ '<div style="width:{[values.width*100]}%;text-align:{align};"><em class="x-unselectable" unselectable="on" id="',this.id, '-xlhd-{#}">',
+ '{header}',
+ '</em></div>',
+ '</tpl>',
+ '<div class="x-clear"></div>',
+ '</div></div>',
+ '<div class="x-list-body"><div class="x-list-body-inner">',
+ '</div></div>'
+ );
+ }
+ if(!this.tpl){
+ this.tpl = new Ext.XTemplate(
+ '<tpl for="rows">',
+ '<dl>',
+ '<tpl for="parent.columns">',
+ '<dt style="width:{[values.width*100]}%;text-align:{align};">',
+ '<em unselectable="on"<tpl if="cls"> class="{cls}</tpl>">',
+ '{[values.tpl.apply(parent)]}',
+ '</em></dt>',
+ '</tpl>',
+ '<div class="x-clear"></div>',
+ '</dl>',
+ '</tpl>'
+ );
+ };
+
+ var cs = this.columns,
+ allocatedWidth = 0,
+ colsWithWidth = 0,
+ len = cs.length,
+ columns = [];
+
+ for(var i = 0; i < len; i++){
+ var c = cs[i];
+ if(!c.isColumn) {
+ c.xtype = c.xtype ? (/^lv/.test(c.xtype) ? c.xtype : 'lv' + c.xtype) : 'lvcolumn';
+ c = Ext.create(c);
+ }
+ if(c.width) {
+ allocatedWidth += c.width*100;
+ if(allocatedWidth > this.maxColumnWidth){
+ c.width -= (allocatedWidth - this.maxColumnWidth) / 100;
+ }
+ colsWithWidth++;
+ }
+ columns.push(c);
+ }
+
+ cs = this.columns = columns;
+
+
+ if(colsWithWidth < len){
+ var remaining = len - colsWithWidth;
+ if(allocatedWidth < this.maxColumnWidth){
+ var perCol = ((this.maxColumnWidth-allocatedWidth) / remaining)/100;
+ for(var j = 0; j < len; j++){
+ var c = cs[j];
+ if(!c.width){
+ c.width = perCol;
+ }
+ }
+ }
+ }
+ Ext.list.ListView.superclass.initComponent.call(this);
+ },
+
+ onRender : function(){
+ this.autoEl = {
+ cls: 'x-list-wrap'
+ };
+ Ext.list.ListView.superclass.onRender.apply(this, arguments);
+
+ this.internalTpl.overwrite(this.el, {columns: this.columns});
+
+ this.innerBody = Ext.get(this.el.dom.childNodes[1].firstChild);
+ this.innerHd = Ext.get(this.el.dom.firstChild.firstChild);
+
+ if(this.hideHeaders){
+ this.el.dom.firstChild.style.display = 'none';
+ }
+ },
+
+ getTemplateTarget : function(){
+ return this.innerBody;
+ },
+
+
+ collectData : function(){
+ var rs = Ext.list.ListView.superclass.collectData.apply(this, arguments);
+ return {
+ columns: this.columns,
+ rows: rs
+ };
+ },
+
+ verifyInternalSize : function(){
+ if(this.lastSize){
+ this.onResize(this.lastSize.width, this.lastSize.height);
+ }
+ },
+
+
+ onResize : function(w, h){
+ var body = this.innerBody.dom,
+ header = this.innerHd.dom,
+ scrollWidth = w - Ext.num(this.scrollOffset, Ext.getScrollBarWidth()) + 'px',
+ parentNode;
+
+ if(!body){
+ return;
+ }
+ parentNode = body.parentNode;
+ if(Ext.isNumber(w)){
+ if(this.reserveScrollOffset || ((parentNode.offsetWidth - parentNode.clientWidth) > 10)){
+ body.style.width = scrollWidth;
+ header.style.width = scrollWidth;
+ }else{
+ body.style.width = w + 'px';
+ header.style.width = w + 'px';
+ setTimeout(function(){
+ if((parentNode.offsetWidth - parentNode.clientWidth) > 10){
+ body.style.width = scrollWidth;
+ header.style.width = scrollWidth;
+ }
+ }, 10);
+ }
+ }
+ if(Ext.isNumber(h)){
+ parentNode.style.height = Math.max(0, h - header.parentNode.offsetHeight) + 'px';
+ }
+ },
+
+ updateIndexes : function(){
+ Ext.list.ListView.superclass.updateIndexes.apply(this, arguments);
+ this.verifyInternalSize();
+ },
+
+ findHeaderIndex : function(header){
+ header = header.dom || header;
+ var parentNode = header.parentNode,
+ children = parentNode.parentNode.childNodes,
+ i = 0,
+ c;
+ for(; c = children[i]; i++){
+ if(c == parentNode){
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ setHdWidths : function(){
+ var els = this.innerHd.dom.getElementsByTagName('div'),
+ i = 0,
+ columns = this.columns,
+ len = columns.length;
+
+ for(; i < len; i++){
+ els[i].style.width = (columns[i].width*100) + '%';
+ }
+ }
+});
+
+Ext.reg('listview', Ext.list.ListView);
+
+
+Ext.ListView = Ext.list.ListView;
+Ext.list.Column = Ext.extend(Object, {
+
+ isColumn: true,
+
+
+ align: 'left',
+
+ header: '',
+
+
+ width: null,
+
+
+ cls: '',
+
+
+
+
+
+ constructor : function(c){
+ if(!c.tpl){
+ c.tpl = new Ext.XTemplate('{' + c.dataIndex + '}');
+ }
+ else if(Ext.isString(c.tpl)){
+ c.tpl = new Ext.XTemplate(c.tpl);
+ }
+
+ Ext.apply(this, c);
+ }
+});
+
+Ext.reg('lvcolumn', Ext.list.Column);
+
+
+Ext.list.NumberColumn = Ext.extend(Ext.list.Column, {
+
+ format: '0,000.00',
+
+ constructor : function(c) {
+ c.tpl = c.tpl || new Ext.XTemplate('{' + c.dataIndex + ':number("' + (c.format || this.format) + '")}');
+ Ext.list.NumberColumn.superclass.constructor.call(this, c);
+ }
+});
+
+Ext.reg('lvnumbercolumn', Ext.list.NumberColumn);
+
+
+Ext.list.DateColumn = Ext.extend(Ext.list.Column, {
+ format: 'm/d/Y',
+ constructor : function(c) {
+ c.tpl = c.tpl || new Ext.XTemplate('{' + c.dataIndex + ':date("' + (c.format || this.format) + '")}');
+ Ext.list.DateColumn.superclass.constructor.call(this, c);
+ }
+});
+Ext.reg('lvdatecolumn', Ext.list.DateColumn);
+
+
+Ext.list.BooleanColumn = Ext.extend(Ext.list.Column, {
+
+ trueText: 'true',
+
+ falseText: 'false',
+
+ undefinedText: '&#160;',
+
+ constructor : function(c) {
+ c.tpl = c.tpl || new Ext.XTemplate('{' + c.dataIndex + ':this.format}');
+
+ var t = this.trueText, f = this.falseText, u = this.undefinedText;
+ c.tpl.format = function(v){
+ if(v === undefined){
+ return u;
+ }
+ if(!v || v === 'false'){
+ return f;
+ }
+ return t;
+ };
+
+ Ext.list.DateColumn.superclass.constructor.call(this, c);
+ }
+});
+
+Ext.reg('lvbooleancolumn', Ext.list.BooleanColumn);
+Ext.list.ColumnResizer = Ext.extend(Ext.util.Observable, {
+
+ minPct: .05,
+
+ constructor: function(config){
+ Ext.apply(this, config);
+ Ext.list.ColumnResizer.superclass.constructor.call(this);
+ },
+ init : function(listView){
+ this.view = listView;
+ listView.on('render', this.initEvents, this);
+ },
+
+ initEvents : function(view){
+ view.mon(view.innerHd, 'mousemove', this.handleHdMove, this);
+ this.tracker = new Ext.dd.DragTracker({
+ onBeforeStart: this.onBeforeStart.createDelegate(this),
+ onStart: this.onStart.createDelegate(this),
+ onDrag: this.onDrag.createDelegate(this),
+ onEnd: this.onEnd.createDelegate(this),
+ tolerance: 3,
+ autoStart: 300
+ });
+ this.tracker.initEl(view.innerHd);
+ view.on('beforedestroy', this.tracker.destroy, this.tracker);
+ },
+
+ handleHdMove : function(e, t){
+ var handleWidth = 5,
+ x = e.getPageX(),
+ header = e.getTarget('em', 3, true);
+ if(header){
+ var region = header.getRegion(),
+ style = header.dom.style,
+ parentNode = header.dom.parentNode;
+
+ if(x - region.left <= handleWidth && parentNode != parentNode.parentNode.firstChild){
+ this.activeHd = Ext.get(parentNode.previousSibling.firstChild);
+ style.cursor = Ext.isWebKit ? 'e-resize' : 'col-resize';
+ } else if(region.right - x <= handleWidth && parentNode != parentNode.parentNode.lastChild.previousSibling){
+ this.activeHd = header;
+ style.cursor = Ext.isWebKit ? 'w-resize' : 'col-resize';
+ } else{
+ delete this.activeHd;
+ style.cursor = '';
+ }
+ }
+ },
+
+ onBeforeStart : function(e){
+ this.dragHd = this.activeHd;
+ return !!this.dragHd;
+ },
+
+ onStart: function(e){
+
+ var me = this,
+ view = me.view,
+ dragHeader = me.dragHd,
+ x = me.tracker.getXY()[0];
+
+ me.proxy = view.el.createChild({cls:'x-list-resizer'});
+ me.dragX = dragHeader.getX();
+ me.headerIndex = view.findHeaderIndex(dragHeader);
+
+ me.headersDisabled = view.disableHeaders;
+ view.disableHeaders = true;
+
+ me.proxy.setHeight(view.el.getHeight());
+ me.proxy.setX(me.dragX);
+ me.proxy.setWidth(x - me.dragX);
+
+ this.setBoundaries();
+
+ },
+
+
+ setBoundaries: function(relativeX){
+ var view = this.view,
+ headerIndex = this.headerIndex,
+ width = view.innerHd.getWidth(),
+ relativeX = view.innerHd.getX(),
+ minWidth = Math.ceil(width * this.minPct),
+ maxWidth = width - minWidth,
+ numColumns = view.columns.length,
+ headers = view.innerHd.select('em', true),
+ minX = minWidth + relativeX,
+ maxX = maxWidth + relativeX,
+ header;
+
+ if (numColumns == 2) {
+ this.minX = minX;
+ this.maxX = maxX;
+ }else{
+ header = headers.item(headerIndex + 2);
+ this.minX = headers.item(headerIndex).getX() + minWidth;
+ this.maxX = header ? header.getX() - minWidth : maxX;
+ if (headerIndex == 0) {
+
+ this.minX = minX;
+ } else if (headerIndex == numColumns - 2) {
+
+ this.maxX = maxX;
+ }
+ }
+ },
+
+ onDrag: function(e){
+ var me = this,
+ cursorX = me.tracker.getXY()[0].constrain(me.minX, me.maxX);
+
+ me.proxy.setWidth(cursorX - this.dragX);
+ },
+
+ onEnd: function(e){
+
+ var newWidth = this.proxy.getWidth(),
+ index = this.headerIndex,
+ view = this.view,
+ columns = view.columns,
+ width = view.innerHd.getWidth(),
+ newPercent = Math.ceil(newWidth * view.maxColumnWidth / width) / 100,
+ disabled = this.headersDisabled,
+ headerCol = columns[index],
+ otherCol = columns[index + 1],
+ totalPercent = headerCol.width + otherCol.width;
+
+ this.proxy.remove();
+
+ headerCol.width = newPercent;
+ otherCol.width = totalPercent - newPercent;
+
+ delete this.dragHd;
+ view.setHdWidths();
+ view.refresh();
+
+ setTimeout(function(){
+ view.disableHeaders = disabled;
+ }, 100);
+ }
+});
+
+
+Ext.ListView.ColumnResizer = Ext.list.ColumnResizer;
+Ext.list.Sorter = Ext.extend(Ext.util.Observable, {
+
+ sortClasses : ["sort-asc", "sort-desc"],
+
+ constructor: function(config){
+ Ext.apply(this, config);
+ Ext.list.Sorter.superclass.constructor.call(this);
+ },
+
+ init : function(listView){
+ this.view = listView;
+ listView.on('render', this.initEvents, this);
+ },
+
+ initEvents : function(view){
+ view.mon(view.innerHd, 'click', this.onHdClick, this);
+ view.innerHd.setStyle('cursor', 'pointer');
+ view.mon(view.store, 'datachanged', this.updateSortState, this);
+ this.updateSortState.defer(10, this, [view.store]);
+ },
+
+ updateSortState : function(store){
+ var state = store.getSortState();
+ if(!state){
+ return;
+ }
+ this.sortState = state;
+ var cs = this.view.columns, sortColumn = -1;
+ for(var i = 0, len = cs.length; i < len; i++){
+ if(cs[i].dataIndex == state.field){
+ sortColumn = i;
+ break;
+ }
+ }
+ if(sortColumn != -1){
+ var sortDir = state.direction;
+ this.updateSortIcon(sortColumn, sortDir);
+ }
+ },
+
+ updateSortIcon : function(col, dir){
+ var sc = this.sortClasses;
+ var hds = this.view.innerHd.select('em').removeClass(sc);
+ hds.item(col).addClass(sc[dir == "DESC" ? 1 : 0]);
+ },
+
+ onHdClick : function(e){
+ var hd = e.getTarget('em', 3);
+ if(hd && !this.view.disableHeaders){
+ var index = this.view.findHeaderIndex(hd);
+ this.view.store.sort(this.view.columns[index].dataIndex);
+ }
+ }
+});
+
+
+Ext.ListView.Sorter = Ext.list.Sorter;
+Ext.TabPanel = Ext.extend(Ext.Panel, {
+
+
+
+ deferredRender : true,
+
+ tabWidth : 120,
+
+ minTabWidth : 30,
+
+ resizeTabs : false,
+
+ enableTabScroll : false,
+
+ scrollIncrement : 0,
+
+ scrollRepeatInterval : 400,
+
+ scrollDuration : 0.35,
+
+ animScroll : true,
+
+ tabPosition : 'top',
+
+ baseCls : 'x-tab-panel',
+
+ autoTabs : false,
+
+ autoTabSelector : 'div.x-tab',
+
+ activeTab : undefined,
+
+ tabMargin : 2,
+
+ plain : false,
+
+ wheelIncrement : 20,
+
+
+ idDelimiter : '__',
+
+
+ itemCls : 'x-tab-item',
+
+
+ elements : 'body',
+ headerAsText : false,
+ frame : false,
+ hideBorders :true,
+
+
+ initComponent : function(){
+ this.frame = false;
+ Ext.TabPanel.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'beforetabchange',
+
+ 'tabchange',
+
+ 'contextmenu'
+ );
+
+ this.setLayout(new Ext.layout.CardLayout(Ext.apply({
+ layoutOnCardChange: this.layoutOnTabChange,
+ deferredRender: this.deferredRender
+ }, this.layoutConfig)));
+
+ if(this.tabPosition == 'top'){
+ this.elements += ',header';
+ this.stripTarget = 'header';
+ }else {
+ this.elements += ',footer';
+ this.stripTarget = 'footer';
+ }
+ if(!this.stack){
+ this.stack = Ext.TabPanel.AccessStack();
+ }
+ this.initItems();
+ },
+
+
+ onRender : function(ct, position){
+ Ext.TabPanel.superclass.onRender.call(this, ct, position);
+
+ if(this.plain){
+ var pos = this.tabPosition == 'top' ? 'header' : 'footer';
+ this[pos].addClass('x-tab-panel-'+pos+'-plain');
+ }
+
+ var st = this[this.stripTarget];
+
+ this.stripWrap = st.createChild({cls:'x-tab-strip-wrap', cn:{
+ tag:'ul', cls:'x-tab-strip x-tab-strip-'+this.tabPosition}});
+
+ var beforeEl = (this.tabPosition=='bottom' ? this.stripWrap : null);
+ st.createChild({cls:'x-tab-strip-spacer'}, beforeEl);
+ this.strip = new Ext.Element(this.stripWrap.dom.firstChild);
+
+
+ this.edge = this.strip.createChild({tag:'li', cls:'x-tab-edge', cn: [{tag: 'span', cls: 'x-tab-strip-text', cn: '&#160;'}]});
+ this.strip.createChild({cls:'x-clear'});
+
+ this.body.addClass('x-tab-panel-body-'+this.tabPosition);
+
+
+ if(!this.itemTpl){
+ var tt = new Ext.Template(
+ '<li class="{cls}" id="{id}"><a class="x-tab-strip-close"></a>',
+ '<a class="x-tab-right" href="#"><em class="x-tab-left">',
+ '<span class="x-tab-strip-inner"><span class="x-tab-strip-text {iconCls}">{text}</span></span>',
+ '</em></a></li>'
+ );
+ tt.disableFormats = true;
+ tt.compile();
+ Ext.TabPanel.prototype.itemTpl = tt;
+ }
+
+ this.items.each(this.initTab, this);
+ },
+
+
+ afterRender : function(){
+ Ext.TabPanel.superclass.afterRender.call(this);
+ if(this.autoTabs){
+ this.readTabs(false);
+ }
+ if(this.activeTab !== undefined){
+ var item = Ext.isObject(this.activeTab) ? this.activeTab : this.items.get(this.activeTab);
+ delete this.activeTab;
+ this.setActiveTab(item);
+ }
+ },
+
+
+ initEvents : function(){
+ Ext.TabPanel.superclass.initEvents.call(this);
+ this.mon(this.strip, {
+ scope: this,
+ mousedown: this.onStripMouseDown,
+ contextmenu: this.onStripContextMenu
+ });
+ if(this.enableTabScroll){
+ this.mon(this.strip, 'mousewheel', this.onWheel, this);
+ }
+ },
+
+
+ findTargets : function(e){
+ var item = null,
+ itemEl = e.getTarget('li:not(.x-tab-edge)', this.strip);
+
+ if(itemEl){
+ item = this.getComponent(itemEl.id.split(this.idDelimiter)[1]);
+ if(item.disabled){
+ return {
+ close : null,
+ item : null,
+ el : null
+ };
+ }
+ }
+ return {
+ close : e.getTarget('.x-tab-strip-close', this.strip),
+ item : item,
+ el : itemEl
+ };
+ },
+
+
+ onStripMouseDown : function(e){
+ if(e.button !== 0){
+ return;
+ }
+ e.preventDefault();
+ var t = this.findTargets(e);
+ if(t.close){
+ if (t.item.fireEvent('beforeclose', t.item) !== false) {
+ t.item.fireEvent('close', t.item);
+ this.remove(t.item);
+ }
+ return;
+ }
+ if(t.item && t.item != this.activeTab){
+ this.setActiveTab(t.item);
+ }
+ },
+
+
+ onStripContextMenu : function(e){
+ e.preventDefault();
+ var t = this.findTargets(e);
+ if(t.item){
+ this.fireEvent('contextmenu', this, t.item, e);
+ }
+ },
+
+
+ readTabs : function(removeExisting){
+ if(removeExisting === true){
+ this.items.each(function(item){
+ this.remove(item);
+ }, this);
+ }
+ var tabs = this.el.query(this.autoTabSelector);
+ for(var i = 0, len = tabs.length; i < len; i++){
+ var tab = tabs[i],
+ title = tab.getAttribute('title');
+ tab.removeAttribute('title');
+ this.add({
+ title: title,
+ contentEl: tab
+ });
+ }
+ },
+
+
+ initTab : function(item, index){
+ var before = this.strip.dom.childNodes[index],
+ p = this.getTemplateArgs(item),
+ el = before ?
+ this.itemTpl.insertBefore(before, p) :
+ this.itemTpl.append(this.strip, p),
+ cls = 'x-tab-strip-over',
+ tabEl = Ext.get(el);
+
+ tabEl.hover(function(){
+ if(!item.disabled){
+ tabEl.addClass(cls);
+ }
+ }, function(){
+ tabEl.removeClass(cls);
+ });
+
+ if(item.tabTip){
+ tabEl.child('span.x-tab-strip-text', true).qtip = item.tabTip;
+ }
+ item.tabEl = el;
+
+
+ tabEl.select('a').on('click', function(e){
+ if(!e.getPageX()){
+ this.onStripMouseDown(e);
+ }
+ }, this, {preventDefault: true});
+
+ item.on({
+ scope: this,
+ disable: this.onItemDisabled,
+ enable: this.onItemEnabled,
+ titlechange: this.onItemTitleChanged,
+ iconchange: this.onItemIconChanged,
+ beforeshow: this.onBeforeShowItem
+ });
+ },
+
+
+
+
+ getTemplateArgs : function(item) {
+ var cls = item.closable ? 'x-tab-strip-closable' : '';
+ if(item.disabled){
+ cls += ' x-item-disabled';
+ }
+ if(item.iconCls){
+ cls += ' x-tab-with-icon';
+ }
+ if(item.tabCls){
+ cls += ' ' + item.tabCls;
+ }
+
+ return {
+ id: this.id + this.idDelimiter + item.getItemId(),
+ text: item.title,
+ cls: cls,
+ iconCls: item.iconCls || ''
+ };
+ },
+
+
+ onAdd : function(c){
+ Ext.TabPanel.superclass.onAdd.call(this, c);
+ if(this.rendered){
+ var items = this.items;
+ this.initTab(c, items.indexOf(c));
+ this.delegateUpdates();
+ }
+ },
+
+
+ onBeforeAdd : function(item){
+ var existing = item.events ? (this.items.containsKey(item.getItemId()) ? item : null) : this.items.get(item);
+ if(existing){
+ this.setActiveTab(item);
+ return false;
+ }
+ Ext.TabPanel.superclass.onBeforeAdd.apply(this, arguments);
+ var es = item.elements;
+ item.elements = es ? es.replace(',header', '') : es;
+ item.border = (item.border === true);
+ },
+
+
+ onRemove : function(c){
+ var te = Ext.get(c.tabEl);
+
+ if(te){
+ te.select('a').removeAllListeners();
+ Ext.destroy(te);
+ }
+ Ext.TabPanel.superclass.onRemove.call(this, c);
+ this.stack.remove(c);
+ delete c.tabEl;
+ c.un('disable', this.onItemDisabled, this);
+ c.un('enable', this.onItemEnabled, this);
+ c.un('titlechange', this.onItemTitleChanged, this);
+ c.un('iconchange', this.onItemIconChanged, this);
+ c.un('beforeshow', this.onBeforeShowItem, this);
+ if(c == this.activeTab){
+ var next = this.stack.next();
+ if(next){
+ this.setActiveTab(next);
+ }else if(this.items.getCount() > 0){
+ this.setActiveTab(0);
+ }else{
+ this.setActiveTab(null);
+ }
+ }
+ if(!this.destroying){
+ this.delegateUpdates();
+ }
+ },
+
+
+ onBeforeShowItem : function(item){
+ if(item != this.activeTab){
+ this.setActiveTab(item);
+ return false;
+ }
+ },
+
+
+ onItemDisabled : function(item){
+ var el = this.getTabEl(item);
+ if(el){
+ Ext.fly(el).addClass('x-item-disabled');
+ }
+ this.stack.remove(item);
+ },
+
+
+ onItemEnabled : function(item){
+ var el = this.getTabEl(item);
+ if(el){
+ Ext.fly(el).removeClass('x-item-disabled');
+ }
+ },
+
+
+ onItemTitleChanged : function(item){
+ var el = this.getTabEl(item);
+ if(el){
+ Ext.fly(el).child('span.x-tab-strip-text', true).innerHTML = item.title;
+ this.delegateUpdates();
+ }
+ },
+
+
+ onItemIconChanged : function(item, iconCls, oldCls){
+ var el = this.getTabEl(item);
+ if(el){
+ el = Ext.get(el);
+ el.child('span.x-tab-strip-text').replaceClass(oldCls, iconCls);
+ el[Ext.isEmpty(iconCls) ? 'removeClass' : 'addClass']('x-tab-with-icon');
+ this.delegateUpdates();
+ }
+ },
+
+
+ getTabEl : function(item){
+ var c = this.getComponent(item);
+ return c ? c.tabEl : null;
+ },
+
+
+ onResize : function(){
+ Ext.TabPanel.superclass.onResize.apply(this, arguments);
+ this.delegateUpdates();
+ },
+
+
+ beginUpdate : function(){
+ this.suspendUpdates = true;
+ },
+
+
+ endUpdate : function(){
+ this.suspendUpdates = false;
+ this.delegateUpdates();
+ },
+
+
+ hideTabStripItem : function(item){
+ item = this.getComponent(item);
+ var el = this.getTabEl(item);
+ if(el){
+ el.style.display = 'none';
+ this.delegateUpdates();
+ }
+ this.stack.remove(item);
+ },
+
+
+ unhideTabStripItem : function(item){
+ item = this.getComponent(item);
+ var el = this.getTabEl(item);
+ if(el){
+ el.style.display = '';
+ this.delegateUpdates();
+ }
+ },
+
+
+ delegateUpdates : function(){
+ var rendered = this.rendered;
+ if(this.suspendUpdates){
+ return;
+ }
+ if(this.resizeTabs && rendered){
+ this.autoSizeTabs();
+ }
+ if(this.enableTabScroll && rendered){
+ this.autoScrollTabs();
+ }
+ },
+
+
+ autoSizeTabs : function(){
+ var count = this.items.length,
+ ce = this.tabPosition != 'bottom' ? 'header' : 'footer',
+ ow = this[ce].dom.offsetWidth,
+ aw = this[ce].dom.clientWidth;
+
+ if(!this.resizeTabs || count < 1 || !aw){
+ return;
+ }
+
+ var each = Math.max(Math.min(Math.floor((aw-4) / count) - this.tabMargin, this.tabWidth), this.minTabWidth);
+ this.lastTabWidth = each;
+ var lis = this.strip.query('li:not(.x-tab-edge)');
+ for(var i = 0, len = lis.length; i < len; i++) {
+ var li = lis[i],
+ inner = Ext.fly(li).child('.x-tab-strip-inner', true),
+ tw = li.offsetWidth,
+ iw = inner.offsetWidth;
+ inner.style.width = (each - (tw-iw)) + 'px';
+ }
+ },
+
+
+ adjustBodyWidth : function(w){
+ if(this.header){
+ this.header.setWidth(w);
+ }
+ if(this.footer){
+ this.footer.setWidth(w);
+ }
+ return w;
+ },
+
+
+ setActiveTab : function(item){
+ item = this.getComponent(item);
+ if(this.fireEvent('beforetabchange', this, item, this.activeTab) === false){
+ return;
+ }
+ if(!this.rendered){
+ this.activeTab = item;
+ return;
+ }
+ if(this.activeTab != item){
+ if(this.activeTab){
+ var oldEl = this.getTabEl(this.activeTab);
+ if(oldEl){
+ Ext.fly(oldEl).removeClass('x-tab-strip-active');
+ }
+ }
+ this.activeTab = item;
+ if(item){
+ var el = this.getTabEl(item);
+ Ext.fly(el).addClass('x-tab-strip-active');
+ this.stack.add(item);
+
+ this.layout.setActiveItem(item);
+
+ this.delegateUpdates();
+ if(this.scrolling){
+ this.scrollToTab(item, this.animScroll);
+ }
+ }
+ this.fireEvent('tabchange', this, item);
+ }
+ },
+
+
+ getActiveTab : function(){
+ return this.activeTab || null;
+ },
+
+
+ getItem : function(item){
+ return this.getComponent(item);
+ },
+
+
+ autoScrollTabs : function(){
+ this.pos = this.tabPosition=='bottom' ? this.footer : this.header;
+ var count = this.items.length,
+ ow = this.pos.dom.offsetWidth,
+ tw = this.pos.dom.clientWidth,
+ wrap = this.stripWrap,
+ wd = wrap.dom,
+ cw = wd.offsetWidth,
+ pos = this.getScrollPos(),
+ l = this.edge.getOffsetsTo(this.stripWrap)[0] + pos;
+
+ if(!this.enableTabScroll || cw < 20){
+ return;
+ }
+ if(count == 0 || l <= tw){
+
+ wd.scrollLeft = 0;
+ wrap.setWidth(tw);
+ if(this.scrolling){
+ this.scrolling = false;
+ this.pos.removeClass('x-tab-scrolling');
+ this.scrollLeft.hide();
+ this.scrollRight.hide();
+
+ if(Ext.isAir || Ext.isWebKit){
+ wd.style.marginLeft = '';
+ wd.style.marginRight = '';
+ }
+ }
+ }else{
+ if(!this.scrolling){
+ this.pos.addClass('x-tab-scrolling');
+
+ if(Ext.isAir || Ext.isWebKit){
+ wd.style.marginLeft = '18px';
+ wd.style.marginRight = '18px';
+ }
+ }
+ tw -= wrap.getMargins('lr');
+ wrap.setWidth(tw > 20 ? tw : 20);
+ if(!this.scrolling){
+ if(!this.scrollLeft){
+ this.createScrollers();
+ }else{
+ this.scrollLeft.show();
+ this.scrollRight.show();
+ }
+ }
+ this.scrolling = true;
+ if(pos > (l-tw)){
+ wd.scrollLeft = l-tw;
+ }else{
+ this.scrollToTab(this.activeTab, false);
+ }
+ this.updateScrollButtons();
+ }
+ },
+
+
+ createScrollers : function(){
+ this.pos.addClass('x-tab-scrolling-' + this.tabPosition);
+ var h = this.stripWrap.dom.offsetHeight;
+
+
+ var sl = this.pos.insertFirst({
+ cls:'x-tab-scroller-left'
+ });
+ sl.setHeight(h);
+ sl.addClassOnOver('x-tab-scroller-left-over');
+ this.leftRepeater = new Ext.util.ClickRepeater(sl, {
+ interval : this.scrollRepeatInterval,
+ handler: this.onScrollLeft,
+ scope: this
+ });
+ this.scrollLeft = sl;
+
+
+ var sr = this.pos.insertFirst({
+ cls:'x-tab-scroller-right'
+ });
+ sr.setHeight(h);
+ sr.addClassOnOver('x-tab-scroller-right-over');
+ this.rightRepeater = new Ext.util.ClickRepeater(sr, {
+ interval : this.scrollRepeatInterval,
+ handler: this.onScrollRight,
+ scope: this
+ });
+ this.scrollRight = sr;
+ },
+
+
+ getScrollWidth : function(){
+ return this.edge.getOffsetsTo(this.stripWrap)[0] + this.getScrollPos();
+ },
+
+
+ getScrollPos : function(){
+ return parseInt(this.stripWrap.dom.scrollLeft, 10) || 0;
+ },
+
+
+ getScrollArea : function(){
+ return parseInt(this.stripWrap.dom.clientWidth, 10) || 0;
+ },
+
+
+ getScrollAnim : function(){
+ return {duration:this.scrollDuration, callback: this.updateScrollButtons, scope: this};
+ },
+
+
+ getScrollIncrement : function(){
+ return this.scrollIncrement || (this.resizeTabs ? this.lastTabWidth+2 : 100);
+ },
+
+
+
+ scrollToTab : function(item, animate){
+ if(!item){
+ return;
+ }
+ var el = this.getTabEl(item),
+ pos = this.getScrollPos(),
+ area = this.getScrollArea(),
+ left = Ext.fly(el).getOffsetsTo(this.stripWrap)[0] + pos,
+ right = left + el.offsetWidth;
+ if(left < pos){
+ this.scrollTo(left, animate);
+ }else if(right > (pos + area)){
+ this.scrollTo(right - area, animate);
+ }
+ },
+
+
+ scrollTo : function(pos, animate){
+ this.stripWrap.scrollTo('left', pos, animate ? this.getScrollAnim() : false);
+ if(!animate){
+ this.updateScrollButtons();
+ }
+ },
+
+ onWheel : function(e){
+ var d = e.getWheelDelta()*this.wheelIncrement*-1;
+ e.stopEvent();
+
+ var pos = this.getScrollPos(),
+ newpos = pos + d,
+ sw = this.getScrollWidth()-this.getScrollArea();
+
+ var s = Math.max(0, Math.min(sw, newpos));
+ if(s != pos){
+ this.scrollTo(s, false);
+ }
+ },
+
+
+ onScrollRight : function(){
+ var sw = this.getScrollWidth()-this.getScrollArea(),
+ pos = this.getScrollPos(),
+ s = Math.min(sw, pos + this.getScrollIncrement());
+ if(s != pos){
+ this.scrollTo(s, this.animScroll);
+ }
+ },
+
+
+ onScrollLeft : function(){
+ var pos = this.getScrollPos(),
+ s = Math.max(0, pos - this.getScrollIncrement());
+ if(s != pos){
+ this.scrollTo(s, this.animScroll);
+ }
+ },
+
+
+ updateScrollButtons : function(){
+ var pos = this.getScrollPos();
+ this.scrollLeft[pos === 0 ? 'addClass' : 'removeClass']('x-tab-scroller-left-disabled');
+ this.scrollRight[pos >= (this.getScrollWidth()-this.getScrollArea()) ? 'addClass' : 'removeClass']('x-tab-scroller-right-disabled');
+ },
+
+
+ beforeDestroy : function() {
+ Ext.destroy(this.leftRepeater, this.rightRepeater);
+ this.deleteMembers('strip', 'edge', 'scrollLeft', 'scrollRight', 'stripWrap');
+ this.activeTab = null;
+ Ext.TabPanel.superclass.beforeDestroy.apply(this);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+});
+Ext.reg('tabpanel', Ext.TabPanel);
+
+
+Ext.TabPanel.prototype.activate = Ext.TabPanel.prototype.setActiveTab;
+
+
+Ext.TabPanel.AccessStack = function(){
+ var items = [];
+ return {
+ add : function(item){
+ items.push(item);
+ if(items.length > 10){
+ items.shift();
+ }
+ },
+
+ remove : function(item){
+ var s = [];
+ for(var i = 0, len = items.length; i < len; i++) {
+ if(items[i] != item){
+ s.push(items[i]);
+ }
+ }
+ items = s;
+ },
+
+ next : function(){
+ return items.pop();
+ }
+ };
+};
+
+Ext.Button = Ext.extend(Ext.BoxComponent, {
+
+ hidden : false,
+
+ disabled : false,
+
+ pressed : false,
+
+
+
+
+
+
+ enableToggle : false,
+
+
+
+ menuAlign : 'tl-bl?',
+
+
+
+
+ type : 'button',
+
+
+ menuClassTarget : 'tr:nth(2)',
+
+
+ clickEvent : 'click',
+
+
+ handleMouseEvents : true,
+
+
+ tooltipType : 'qtip',
+
+
+ buttonSelector : 'button:first-child',
+
+
+ scale : 'small',
+
+
+
+
+ iconAlign : 'left',
+
+
+ arrowAlign : 'right',
+
+
+
+
+
+
+ initComponent : function(){
+ if(this.menu){
+
+
+ if (Ext.isArray(this.menu)){
+ this.menu = { items: this.menu };
+ }
+
+
+
+ if (Ext.isObject(this.menu)){
+ this.menu.ownerCt = this;
+ }
+
+ this.menu = Ext.menu.MenuMgr.get(this.menu);
+ this.menu.ownerCt = undefined;
+ }
+
+ Ext.Button.superclass.initComponent.call(this);
+
+ this.addEvents(
+
+ 'click',
+
+ 'toggle',
+
+ 'mouseover',
+
+ 'mouseout',
+
+ 'menushow',
+
+ 'menuhide',
+
+ 'menutriggerover',
+
+ 'menutriggerout'
+ );
+
+ if(Ext.isString(this.toggleGroup)){
+ this.enableToggle = true;
+ }
+ },
+
+
+ getTemplateArgs : function(){
+ return [this.type, 'x-btn-' + this.scale + ' x-btn-icon-' + this.scale + '-' + this.iconAlign, this.getMenuClass(), this.cls, this.id];
+ },
+
+
+ setButtonClass : function(){
+ if(this.useSetClass){
+ if(!Ext.isEmpty(this.oldCls)){
+ this.el.removeClass([this.oldCls, 'x-btn-pressed']);
+ }
+ this.oldCls = (this.iconCls || this.icon) ? (this.text ? 'x-btn-text-icon' : 'x-btn-icon') : 'x-btn-noicon';
+ this.el.addClass([this.oldCls, this.pressed ? 'x-btn-pressed' : null]);
+ }
+ },
+
+
+ getMenuClass : function(){
+ return this.menu ? (this.arrowAlign != 'bottom' ? 'x-btn-arrow' : 'x-btn-arrow-bottom') : '';
+ },
+
+
+ onRender : function(ct, position){
+ if(!this.template){
+ if(!Ext.Button.buttonTemplate){
+
+ Ext.Button.buttonTemplate = new Ext.Template(
+ '<table id="{4}" cellspacing="0" class="x-btn {3}"><tbody class="{1}">',
+ '<tr><td class="x-btn-tl"><i>&#160;</i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i>&#160;</i></td></tr>',
+ '<tr><td class="x-btn-ml"><i>&#160;</i></td><td class="x-btn-mc"><em class="{2} x-unselectable" unselectable="on"><button type="{0}"></button></em></td><td class="x-btn-mr"><i>&#160;</i></td></tr>',
+ '<tr><td class="x-btn-bl"><i>&#160;</i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i>&#160;</i></td></tr>',
+ '</tbody></table>');
+ Ext.Button.buttonTemplate.compile();
+ }
+ this.template = Ext.Button.buttonTemplate;
+ }
+
+ var btn, targs = this.getTemplateArgs();
+
+ if(position){
+ btn = this.template.insertBefore(position, targs, true);
+ }else{
+ btn = this.template.append(ct, targs, true);
+ }
+
+ this.btnEl = btn.child(this.buttonSelector);
+ this.mon(this.btnEl, {
+ scope: this,
+ focus: this.onFocus,
+ blur: this.onBlur
+ });
+
+ this.initButtonEl(btn, this.btnEl);
+
+ Ext.ButtonToggleMgr.register(this);
+ },
+
+
+ initButtonEl : function(btn, btnEl){
+ this.el = btn;
+ this.setIcon(this.icon);
+ this.setText(this.text);
+ this.setIconClass(this.iconCls);
+ if(Ext.isDefined(this.tabIndex)){
+ btnEl.dom.tabIndex = this.tabIndex;
+ }
+ if(this.tooltip){
+ this.setTooltip(this.tooltip, true);
+ }
+
+ if(this.handleMouseEvents){
+ this.mon(btn, {
+ scope: this,
+ mouseover: this.onMouseOver,
+ mousedown: this.onMouseDown
+ });
+
+
+
+ }
+
+ if(this.menu){
+ this.mon(this.menu, {
+ scope: this,
+ show: this.onMenuShow,
+ hide: this.onMenuHide
+ });
+ }
+
+ if(this.repeat){
+ var repeater = new Ext.util.ClickRepeater(btn, Ext.isObject(this.repeat) ? this.repeat : {});
+ this.mon(repeater, 'click', this.onRepeatClick, this);
+ }else{
+ this.mon(btn, this.clickEvent, this.onClick, this);
+ }
+ },
+
+
+ afterRender : function(){
+ Ext.Button.superclass.afterRender.call(this);
+ this.useSetClass = true;
+ this.setButtonClass();
+ this.doc = Ext.getDoc();
+ this.doAutoWidth();
+ },
+
+
+ setIconClass : function(cls){
+ this.iconCls = cls;
+ if(this.el){
+ this.btnEl.dom.className = '';
+ this.btnEl.addClass(['x-btn-text', cls || '']);
+ this.setButtonClass();
+ }
+ return this;
+ },
+
+
+ setTooltip : function(tooltip, initial){
+ if(this.rendered){
+ if(!initial){
+ this.clearTip();
+ }
+ if(Ext.isObject(tooltip)){
+ Ext.QuickTips.register(Ext.apply({
+ target: this.btnEl.id
+ }, tooltip));
+ this.tooltip = tooltip;
+ }else{
+ this.btnEl.dom[this.tooltipType] = tooltip;
+ }
+ }else{
+ this.tooltip = tooltip;
+ }
+ return this;
+ },
+
+
+ clearTip : function(){
+ if(Ext.isObject(this.tooltip)){
+ Ext.QuickTips.unregister(this.btnEl);
+ }
+ },
+
+
+ beforeDestroy : function(){
+ if(this.rendered){
+ this.clearTip();
+ }
+ if(this.menu && this.destroyMenu !== false) {
+ Ext.destroy(this.btnEl, this.menu);
+ }
+ Ext.destroy(this.repeater);
+ },
+
+
+ onDestroy : function(){
+ if(this.rendered){
+ this.doc.un('mouseover', this.monitorMouseOver, this);
+ this.doc.un('mouseup', this.onMouseUp, this);
+ delete this.doc;
+ delete this.btnEl;
+ Ext.ButtonToggleMgr.unregister(this);
+ }
+ Ext.Button.superclass.onDestroy.call(this);
+ },
+
+
+ doAutoWidth : function(){
+ if(this.autoWidth !== false && this.el && this.text && this.width === undefined){
+ this.el.setWidth('auto');
+ if(Ext.isIE7 && Ext.isStrict){
+ var ib = this.btnEl;
+ if(ib && ib.getWidth() > 20){
+ ib.clip();
+ ib.setWidth(Ext.util.TextMetrics.measure(ib, this.text).width+ib.getFrameWidth('lr'));
+ }
+ }
+ if(this.minWidth){
+ if(this.el.getWidth() < this.minWidth){
+ this.el.setWidth(this.minWidth);
+ }
+ }
+ }
+ },
+
+
+ setHandler : function(handler, scope){
+ this.handler = handler;
+ this.scope = scope;
+ return this;
+ },
+
+
+ setText : function(text){
+ this.text = text;
+ if(this.el){
+ this.btnEl.update(text || '&#160;');
+ this.setButtonClass();
+ }
+ this.doAutoWidth();
+ return this;
+ },
+
+
+ setIcon : function(icon){
+ this.icon = icon;
+ if(this.el){
+ this.btnEl.setStyle('background-image', icon ? 'url(' + icon + ')' : '');
+ this.setButtonClass();
+ }
+ return this;
+ },
+
+
+ getText : function(){
+ return this.text;
+ },
+
+
+ toggle : function(state, suppressEvent){
+ state = state === undefined ? !this.pressed : !!state;
+ if(state != this.pressed){
+ if(this.rendered){
+ this.el[state ? 'addClass' : 'removeClass']('x-btn-pressed');
+ }
+ this.pressed = state;
+ if(!suppressEvent){
+ this.fireEvent('toggle', this, state);
+ if(this.toggleHandler){
+ this.toggleHandler.call(this.scope || this, this, state);
+ }
+ }
+ }
+ return this;
+ },
+
+
+ onDisable : function(){
+ this.onDisableChange(true);
+ },
+
+
+ onEnable : function(){
+ this.onDisableChange(false);
+ },
+
+ onDisableChange : function(disabled){
+ if(this.el){
+ if(!Ext.isIE6 || !this.text){
+ this.el[disabled ? 'addClass' : 'removeClass'](this.disabledClass);
+ }
+ this.el.dom.disabled = disabled;
+ }
+ this.disabled = disabled;
+ },
+
+
+ showMenu : function(){
+ if(this.rendered && this.menu){
+ if(this.tooltip){
+ Ext.QuickTips.getQuickTip().cancelShow(this.btnEl);
+ }
+ if(this.menu.isVisible()){
+ this.menu.hide();
+ }
+ this.menu.ownerCt = this;
+ this.menu.show(this.el, this.menuAlign);
+ }
+ return this;
+ },
+
+
+ hideMenu : function(){
+ if(this.hasVisibleMenu()){
+ this.menu.hide();
+ }
+ return this;
+ },
+
+
+ hasVisibleMenu : function(){
+ return this.menu && this.menu.ownerCt == this && this.menu.isVisible();
+ },
+
+
+ onRepeatClick : function(repeat, e){
+ this.onClick(e);
+ },
+
+
+ onClick : function(e){
+ if(e){
+ e.preventDefault();
+ }
+ if(e.button !== 0){
+ return;
+ }
+ if(!this.disabled){
+ this.doToggle();
+ if(this.menu && !this.hasVisibleMenu() && !this.ignoreNextClick){
+ this.showMenu();
+ }
+ this.fireEvent('click', this, e);
+ if(this.handler){
+
+ this.handler.call(this.scope || this, this, e);
+ }
+ }
+ },
+
+
+ doToggle: function(){
+ if (this.enableToggle && (this.allowDepress !== false || !this.pressed)) {
+ this.toggle();
+ }
+ },
+
+
+ isMenuTriggerOver : function(e, internal){
+ return this.menu && !internal;
+ },
+
+
+ isMenuTriggerOut : function(e, internal){
+ return this.menu && !internal;
+ },
+
+
+ onMouseOver : function(e){
+ if(!this.disabled){
+ var internal = e.within(this.el, true);
+ if(!internal){
+ this.el.addClass('x-btn-over');
+ if(!this.monitoringMouseOver){
+ this.doc.on('mouseover', this.monitorMouseOver, this);
+ this.monitoringMouseOver = true;
+ }
+ this.fireEvent('mouseover', this, e);
+ }
+ if(this.isMenuTriggerOver(e, internal)){
+ this.fireEvent('menutriggerover', this, this.menu, e);
+ }
+ }
+ },
+
+
+ monitorMouseOver : function(e){
+ if(e.target != this.el.dom && !e.within(this.el)){
+ if(this.monitoringMouseOver){
+ this.doc.un('mouseover', this.monitorMouseOver, this);
+ this.monitoringMouseOver = false;
+ }
+ this.onMouseOut(e);
+ }
+ },
+
+
+ onMouseOut : function(e){
+ var internal = e.within(this.el) && e.target != this.el.dom;
+ this.el.removeClass('x-btn-over');
+ this.fireEvent('mouseout', this, e);
+ if(this.isMenuTriggerOut(e, internal)){
+ this.fireEvent('menutriggerout', this, this.menu, e);
+ }
+ },
+
+ focus : function() {
+ this.btnEl.focus();
+ },
+
+ blur : function() {
+ this.btnEl.blur();
+ },
+
+
+ onFocus : function(e){
+ if(!this.disabled){
+ this.el.addClass('x-btn-focus');
+ }
+ },
+
+ onBlur : function(e){
+ this.el.removeClass('x-btn-focus');
+ },
+
+
+ getClickEl : function(e, isUp){
+ return this.el;
+ },
+
+
+ onMouseDown : function(e){
+ if(!this.disabled && e.button === 0){
+ this.getClickEl(e).addClass('x-btn-click');
+ this.doc.on('mouseup', this.onMouseUp, this);
+ }
+ },
+
+ onMouseUp : function(e){
+ if(e.button === 0){
+ this.getClickEl(e, true).removeClass('x-btn-click');
+ this.doc.un('mouseup', this.onMouseUp, this);
+ }
+ },
+
+ onMenuShow : function(e){
+ if(this.menu.ownerCt == this){
+ this.menu.ownerCt = this;
+ this.ignoreNextClick = 0;
+ this.el.addClass('x-btn-menu-active');
+ this.fireEvent('menushow', this, this.menu);
+ }
+ },
+
+ onMenuHide : function(e){
+ if(this.menu.ownerCt == this){
+ this.el.removeClass('x-btn-menu-active');
+ this.ignoreNextClick = this.restoreClick.defer(250, this);
+ this.fireEvent('menuhide', this, this.menu);
+ delete this.menu.ownerCt;
+ }
+ },
+
+
+ restoreClick : function(){
+ this.ignoreNextClick = 0;
+ }
+
+
+
+
+
+
+
+});
+Ext.reg('button', Ext.Button);
+
+
+Ext.ButtonToggleMgr = function(){
+ var groups = {};
+
+ function toggleGroup(btn, state){
+ if(state){
+ var g = groups[btn.toggleGroup];
+ for(var i = 0, l = g.length; i < l; i++){
+ if(g[i] != btn){
+ g[i].toggle(false);
+ }
+ }
+ }
+ }
+
+ return {
+ register : function(btn){
+ if(!btn.toggleGroup){
+ return;
+ }
+ var g = groups[btn.toggleGroup];
+ if(!g){
+ g = groups[btn.toggleGroup] = [];
+ }
+ g.push(btn);
+ btn.on('toggle', toggleGroup);
+ },
+
+ unregister : function(btn){
+ if(!btn.toggleGroup){
+ return;
+ }
+ var g = groups[btn.toggleGroup];
+ if(g){
+ g.remove(btn);
+ btn.un('toggle', toggleGroup);
+ }
+ },
+
+
+ getPressed : function(group){
+ var g = groups[group];
+ if(g){
+ for(var i = 0, len = g.length; i < len; i++){
+ if(g[i].pressed === true){
+ return g[i];
+ }
+ }
+ }
+ return null;
+ }
+ };
+}();
+
+Ext.SplitButton = Ext.extend(Ext.Button, {
+
+ arrowSelector : 'em',
+ split: true,
+
+
+ initComponent : function(){
+ Ext.SplitButton.superclass.initComponent.call(this);
+
+ this.addEvents("arrowclick");
+ },
+
+
+ onRender : function(){
+ Ext.SplitButton.superclass.onRender.apply(this, arguments);
+ if(this.arrowTooltip){
+ this.el.child(this.arrowSelector).dom[this.tooltipType] = this.arrowTooltip;
+ }
+ },
+
+
+ setArrowHandler : function(handler, scope){
+ this.arrowHandler = handler;
+ this.scope = scope;
+ },
+
+ getMenuClass : function(){
+ return 'x-btn-split' + (this.arrowAlign == 'bottom' ? '-bottom' : '');
+ },
+
+ isClickOnArrow : function(e){
+ if (this.arrowAlign != 'bottom') {
+ var visBtn = this.el.child('em.x-btn-split');
+ var right = visBtn.getRegion().right - visBtn.getPadding('r');
+ return e.getPageX() > right;
+ } else {
+ return e.getPageY() > this.btnEl.getRegion().bottom;
+ }
+ },
+
+
+ onClick : function(e, t){
+ e.preventDefault();
+ if(!this.disabled){
+ if(this.isClickOnArrow(e)){
+ if(this.menu && !this.menu.isVisible() && !this.ignoreNextClick){
+ this.showMenu();
+ }
+ this.fireEvent("arrowclick", this, e);
+ if(this.arrowHandler){
+ this.arrowHandler.call(this.scope || this, this, e);
+ }
+ }else{
+ this.doToggle();
+ this.fireEvent("click", this, e);
+ if(this.handler){
+ this.handler.call(this.scope || this, this, e);
+ }
+ }
+ }
+ },
+
+
+ isMenuTriggerOver : function(e){
+ return this.menu && e.target.tagName == this.arrowSelector;
+ },
+
+
+ isMenuTriggerOut : function(e, internal){
+ return this.menu && e.target.tagName != this.arrowSelector;
+ }
+});
+
+Ext.reg('splitbutton', Ext.SplitButton);
+Ext.CycleButton = Ext.extend(Ext.SplitButton, {
+
+
+
+
+
+
+
+
+ getItemText : function(item){
+ if(item && this.showText === true){
+ var text = '';
+ if(this.prependText){
+ text += this.prependText;
+ }
+ text += item.text;
+ return text;
+ }
+ return undefined;
+ },
+
+
+ setActiveItem : function(item, suppressEvent){
+ if(!Ext.isObject(item)){
+ item = this.menu.getComponent(item);
+ }
+ if(item){
+ if(!this.rendered){
+ this.text = this.getItemText(item);
+ this.iconCls = item.iconCls;
+ }else{
+ var t = this.getItemText(item);
+ if(t){
+ this.setText(t);
+ }
+ this.setIconClass(item.iconCls);
+ }
+ this.activeItem = item;
+ if(!item.checked){
+ item.setChecked(true, suppressEvent);
+ }
+ if(this.forceIcon){
+ this.setIconClass(this.forceIcon);
+ }
+ if(!suppressEvent){
+ this.fireEvent('change', this, item);
+ }
+ }
+ },
+
+
+ getActiveItem : function(){
+ return this.activeItem;
+ },
+
+
+ initComponent : function(){
+ this.addEvents(
+
+ "change"
+ );
+
+ if(this.changeHandler){
+ this.on('change', this.changeHandler, this.scope||this);
+ delete this.changeHandler;
+ }
+
+ this.itemCount = this.items.length;
+
+ this.menu = {cls:'x-cycle-menu', items:[]};
+ var checked = 0;
+ Ext.each(this.items, function(item, i){
+ Ext.apply(item, {
+ group: item.group || this.id,
+ itemIndex: i,
+ checkHandler: this.checkHandler,
+ scope: this,
+ checked: item.checked || false
+ });
+ this.menu.items.push(item);
+ if(item.checked){
+ checked = i;
+ }
+ }, this);
+ Ext.CycleButton.superclass.initComponent.call(this);
+ this.on('click', this.toggleSelected, this);
+ this.setActiveItem(checked, true);
+ },
+
+
+ checkHandler : function(item, pressed){
+ if(pressed){
+ this.setActiveItem(item);
+ }
+ },
+
+
+ toggleSelected : function(){
+ var m = this.menu;
+ m.render();
+
+ if(!m.hasLayout){
+ m.doLayout();
+ }
+
+ var nextIdx, checkItem;
+ for (var i = 1; i < this.itemCount; i++) {
+ nextIdx = (this.activeItem.itemIndex + i) % this.itemCount;
+
+ checkItem = m.items.itemAt(nextIdx);
+
+ if (!checkItem.disabled) {
+ checkItem.setChecked(true);
+ break;
+ }
+ }
+ }
+});
+Ext.reg('cycle', Ext.CycleButton);
+Ext.Toolbar = function(config){
+ if(Ext.isArray(config)){
+ config = {items: config, layout: 'toolbar'};
+ } else {
+ config = Ext.apply({
+ layout: 'toolbar'
+ }, config);
+ if(config.buttons) {
+ config.items = config.buttons;
+ }
+ }
+ Ext.Toolbar.superclass.constructor.call(this, config);
+};
+
+(function(){
+
+var T = Ext.Toolbar;
+
+Ext.extend(T, Ext.Container, {
+
+ defaultType: 'button',
+
+
+
+ enableOverflow : false,
+
+
+
+
+ trackMenus : true,
+ internalDefaults: {removeMode: 'container', hideParent: true},
+ toolbarCls: 'x-toolbar',
+
+ initComponent : function(){
+ T.superclass.initComponent.call(this);
+
+
+ this.addEvents('overflowchange');
+ },
+
+
+ onRender : function(ct, position){
+ if(!this.el){
+ if(!this.autoCreate){
+ this.autoCreate = {
+ cls: this.toolbarCls + ' x-small-editor'
+ };
+ }
+ this.el = ct.createChild(Ext.apply({ id: this.id },this.autoCreate), position);
+ Ext.Toolbar.superclass.onRender.apply(this, arguments);
+ }
+ },
+
+
+
+
+ lookupComponent : function(c){
+ if(Ext.isString(c)){
+ if(c == '-'){
+ c = new T.Separator();
+ }else if(c == ' '){
+ c = new T.Spacer();
+ }else if(c == '->'){
+ c = new T.Fill();
+ }else{
+ c = new T.TextItem(c);
+ }
+ this.applyDefaults(c);
+ }else{
+ if(c.isFormField || c.render){
+ c = this.createComponent(c);
+ }else if(c.tag){
+ c = new T.Item({autoEl: c});
+ }else if(c.tagName){
+ c = new T.Item({el:c});
+ }else if(Ext.isObject(c)){
+ c = c.xtype ? this.createComponent(c) : this.constructButton(c);
+ }
+ }
+ return c;
+ },
+
+
+ applyDefaults : function(c){
+ if(!Ext.isString(c)){
+ c = Ext.Toolbar.superclass.applyDefaults.call(this, c);
+ var d = this.internalDefaults;
+ if(c.events){
+ Ext.applyIf(c.initialConfig, d);
+ Ext.apply(c, d);
+ }else{
+ Ext.applyIf(c, d);
+ }
+ }
+ return c;
+ },
+
+
+ addSeparator : function(){
+ return this.add(new T.Separator());
+ },
+
+
+ addSpacer : function(){
+ return this.add(new T.Spacer());
+ },
+
+
+ addFill : function(){
+ this.add(new T.Fill());
+ },
+
+
+ addElement : function(el){
+ return this.addItem(new T.Item({el:el}));
+ },
+
+
+ addItem : function(item){
+ return this.add.apply(this, arguments);
+ },
+
+
+ addButton : function(config){
+ if(Ext.isArray(config)){
+ var buttons = [];
+ for(var i = 0, len = config.length; i < len; i++) {
+ buttons.push(this.addButton(config[i]));
+ }
+ return buttons;
+ }
+ return this.add(this.constructButton(config));
+ },
+
+
+ addText : function(text){
+ return this.addItem(new T.TextItem(text));
+ },
+
+
+ addDom : function(config){
+ return this.add(new T.Item({autoEl: config}));
+ },
+
+
+ addField : function(field){
+ return this.add(field);
+ },
+
+
+ insertButton : function(index, item){
+ if(Ext.isArray(item)){
+ var buttons = [];
+ for(var i = 0, len = item.length; i < len; i++) {
+ buttons.push(this.insertButton(index + i, item[i]));
+ }
+ return buttons;
+ }
+ return Ext.Toolbar.superclass.insert.call(this, index, item);
+ },
+
+
+ trackMenu : function(item, remove){
+ if(this.trackMenus && item.menu){
+ var method = remove ? 'mun' : 'mon';
+ this[method](item, 'menutriggerover', this.onButtonTriggerOver, this);
+ this[method](item, 'menushow', this.onButtonMenuShow, this);
+ this[method](item, 'menuhide', this.onButtonMenuHide, this);
+ }
+ },
+
+
+ constructButton : function(item){
+ var b = item.events ? item : this.createComponent(item, item.split ? 'splitbutton' : this.defaultType);
+ return b;
+ },
+
+
+ onAdd : function(c){
+ Ext.Toolbar.superclass.onAdd.call(this);
+ this.trackMenu(c);
+ if(this.disabled){
+ c.disable();
+ }
+ },
+
+
+ onRemove : function(c){
+ Ext.Toolbar.superclass.onRemove.call(this);
+ if (c == this.activeMenuBtn) {
+ delete this.activeMenuBtn;
+ }
+ this.trackMenu(c, true);
+ },
+
+
+ onDisable : function(){
+ this.items.each(function(item){
+ if(item.disable){
+ item.disable();
+ }
+ });
+ },
+
+
+ onEnable : function(){
+ this.items.each(function(item){
+ if(item.enable){
+ item.enable();
+ }
+ });
+ },
+
+
+ onButtonTriggerOver : function(btn){
+ if(this.activeMenuBtn && this.activeMenuBtn != btn){
+ this.activeMenuBtn.hideMenu();
+ btn.showMenu();
+ this.activeMenuBtn = btn;
+ }
+ },
+
+
+ onButtonMenuShow : function(btn){
+ this.activeMenuBtn = btn;
+ },
+
+
+ onButtonMenuHide : function(btn){
+ delete this.activeMenuBtn;
+ }
+});
+Ext.reg('toolbar', Ext.Toolbar);
+
+
+T.Item = Ext.extend(Ext.BoxComponent, {
+ hideParent: true,
+ enable:Ext.emptyFn,
+ disable:Ext.emptyFn,
+ focus:Ext.emptyFn
+
+});
+Ext.reg('tbitem', T.Item);
+
+
+T.Separator = Ext.extend(T.Item, {
+ onRender : function(ct, position){
+ this.el = ct.createChild({tag:'span', cls:'xtb-sep'}, position);
+ }
+});
+Ext.reg('tbseparator', T.Separator);
+
+
+T.Spacer = Ext.extend(T.Item, {
+
+
+ onRender : function(ct, position){
+ this.el = ct.createChild({tag:'div', cls:'xtb-spacer', style: this.width?'width:'+this.width+'px':''}, position);
+ }
+});
+Ext.reg('tbspacer', T.Spacer);
+
+
+T.Fill = Ext.extend(T.Item, {
+
+ render : Ext.emptyFn,
+ isFill : true
+});
+Ext.reg('tbfill', T.Fill);
+
+
+T.TextItem = Ext.extend(T.Item, {
+
+
+ constructor: function(config){
+ T.TextItem.superclass.constructor.call(this, Ext.isString(config) ? {text: config} : config);
+ },
+
+
+ onRender : function(ct, position) {
+ this.autoEl = {cls: 'xtb-text', html: this.text || ''};
+ T.TextItem.superclass.onRender.call(this, ct, position);
+ },
+
+
+ setText : function(t) {
+ if(this.rendered){
+ this.el.update(t);
+ }else{
+ this.text = t;
+ }
+ }
+});
+Ext.reg('tbtext', T.TextItem);
+
+
+T.Button = Ext.extend(Ext.Button, {});
+T.SplitButton = Ext.extend(Ext.SplitButton, {});
+Ext.reg('tbbutton', T.Button);
+Ext.reg('tbsplit', T.SplitButton);
+
+})();
+
+Ext.ButtonGroup = Ext.extend(Ext.Panel, {
+
+
+ baseCls: 'x-btn-group',
+
+ layout:'table',
+ defaultType: 'button',
+
+ frame: true,
+ internalDefaults: {removeMode: 'container', hideParent: true},
+
+ initComponent : function(){
+ this.layoutConfig = this.layoutConfig || {};
+ Ext.applyIf(this.layoutConfig, {
+ columns : this.columns
+ });
+ if(!this.title){
+ this.addClass('x-btn-group-notitle');
+ }
+ this.on('afterlayout', this.onAfterLayout, this);
+ Ext.ButtonGroup.superclass.initComponent.call(this);
+ },
+
+ applyDefaults : function(c){
+ c = Ext.ButtonGroup.superclass.applyDefaults.call(this, c);
+ var d = this.internalDefaults;
+ if(c.events){
+ Ext.applyIf(c.initialConfig, d);
+ Ext.apply(c, d);
+ }else{
+ Ext.applyIf(c, d);
+ }
+ return c;
+ },
+
+ onAfterLayout : function(){
+ var bodyWidth = this.body.getFrameWidth('lr') + this.body.dom.firstChild.offsetWidth;
+ this.body.setWidth(bodyWidth);
+ this.el.setWidth(bodyWidth + this.getFrameWidth());
+ }
+
+});
+
+Ext.reg('buttongroup', Ext.ButtonGroup);
+
+(function() {
+
+var T = Ext.Toolbar;
+
+Ext.PagingToolbar = Ext.extend(Ext.Toolbar, {
+
+
+
+ pageSize : 20,
+
+
+ displayMsg : 'Displaying {0} - {1} of {2}',
+
+ emptyMsg : 'No data to display',
+
+ beforePageText : 'Page',
+
+ afterPageText : 'of {0}',
+
+ firstText : 'First Page',
+
+ prevText : 'Previous Page',
+
+ nextText : 'Next Page',
+
+ lastText : 'Last Page',
+
+ refreshText : 'Refresh',
+
+
+
+
+
+
+
+ initComponent : function(){
+ var pagingItems = [this.first = new T.Button({
+ tooltip: this.firstText,
+ overflowText: this.firstText,
+ iconCls: 'x-tbar-page-first',
+ disabled: true,
+ handler: this.moveFirst,
+ scope: this
+ }), this.prev = new T.Button({
+ tooltip: this.prevText,
+ overflowText: this.prevText,
+ iconCls: 'x-tbar-page-prev',
+ disabled: true,
+ handler: this.movePrevious,
+ scope: this
+ }), '-', this.beforePageText,
+ this.inputItem = new Ext.form.NumberField({
+ cls: 'x-tbar-page-number',
+ allowDecimals: false,
+ allowNegative: false,
+ enableKeyEvents: true,
+ selectOnFocus: true,
+ submitValue: false,
+ listeners: {
+ scope: this,
+ keydown: this.onPagingKeyDown,
+ blur: this.onPagingBlur
+ }
+ }), this.afterTextItem = new T.TextItem({
+ text: String.format(this.afterPageText, 1)
+ }), '-', this.next = new T.Button({
+ tooltip: this.nextText,
+ overflowText: this.nextText,
+ iconCls: 'x-tbar-page-next',
+ disabled: true,
+ handler: this.moveNext,
+ scope: this
+ }), this.last = new T.Button({
+ tooltip: this.lastText,
+ overflowText: this.lastText,
+ iconCls: 'x-tbar-page-last',
+ disabled: true,
+ handler: this.moveLast,
+ scope: this
+ }), '-', this.refresh = new T.Button({
+ tooltip: this.refreshText,
+ overflowText: this.refreshText,
+ iconCls: 'x-tbar-loading',
+ handler: this.doRefresh,
+ scope: this
+ })];
+
+
+ var userItems = this.items || this.buttons || [];
+ if (this.prependButtons) {
+ this.items = userItems.concat(pagingItems);
+ }else{
+ this.items = pagingItems.concat(userItems);
+ }
+ delete this.buttons;
+ if(this.displayInfo){
+ this.items.push('->');
+ this.items.push(this.displayItem = new T.TextItem({}));
+ }
+ Ext.PagingToolbar.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'change',
+
+ 'beforechange'
+ );
+ this.on('afterlayout', this.onFirstLayout, this, {single: true});
+ this.cursor = 0;
+ this.bindStore(this.store, true);
+ },
+
+
+ onFirstLayout : function(){
+ if(this.dsLoaded){
+ this.onLoad.apply(this, this.dsLoaded);
+ }
+ },
+
+
+ updateInfo : function(){
+ if(this.displayItem){
+ var count = this.store.getCount();
+ var msg = count == 0 ?
+ this.emptyMsg :
+ String.format(
+ this.displayMsg,
+ this.cursor+1, this.cursor+count, this.store.getTotalCount()
+ );
+ this.displayItem.setText(msg);
+ }
+ },
+
+
+ onLoad : function(store, r, o){
+ if(!this.rendered){
+ this.dsLoaded = [store, r, o];
+ return;
+ }
+ var p = this.getParams();
+ this.cursor = (o.params && o.params[p.start]) ? o.params[p.start] : 0;
+ var d = this.getPageData(), ap = d.activePage, ps = d.pages;
+
+ this.afterTextItem.setText(String.format(this.afterPageText, d.pages));
+ this.inputItem.setValue(ap);
+ this.first.setDisabled(ap == 1);
+ this.prev.setDisabled(ap == 1);
+ this.next.setDisabled(ap == ps);
+ this.last.setDisabled(ap == ps);
+ this.refresh.enable();
+ this.updateInfo();
+ this.fireEvent('change', this, d);
+ },
+
+
+ getPageData : function(){
+ var total = this.store.getTotalCount();
+ return {
+ total : total,
+ activePage : Math.ceil((this.cursor+this.pageSize)/this.pageSize),
+ pages : total < this.pageSize ? 1 : Math.ceil(total/this.pageSize)
+ };
+ },
+
+
+ changePage : function(page){
+ this.doLoad(((page-1) * this.pageSize).constrain(0, this.store.getTotalCount()));
+ },
+
+
+ onLoadError : function(){
+ if(!this.rendered){
+ return;
+ }
+ this.refresh.enable();
+ },
+
+
+ readPage : function(d){
+ var v = this.inputItem.getValue(), pageNum;
+ if (!v || isNaN(pageNum = parseInt(v, 10))) {
+ this.inputItem.setValue(d.activePage);
+ return false;
+ }
+ return pageNum;
+ },
+
+ onPagingFocus : function(){
+ this.inputItem.select();
+ },
+
+
+ onPagingBlur : function(e){
+ this.inputItem.setValue(this.getPageData().activePage);
+ },
+
+
+ onPagingKeyDown : function(field, e){
+ var k = e.getKey(), d = this.getPageData(), pageNum;
+ if (k == e.RETURN) {
+ e.stopEvent();
+ pageNum = this.readPage(d);
+ if(pageNum !== false){
+ pageNum = Math.min(Math.max(1, pageNum), d.pages) - 1;
+ this.doLoad(pageNum * this.pageSize);
+ }
+ }else if (k == e.HOME || k == e.END){
+ e.stopEvent();
+ pageNum = k == e.HOME ? 1 : d.pages;
+ field.setValue(pageNum);
+ }else if (k == e.UP || k == e.PAGEUP || k == e.DOWN || k == e.PAGEDOWN){
+ e.stopEvent();
+ if((pageNum = this.readPage(d))){
+ var increment = e.shiftKey ? 10 : 1;
+ if(k == e.DOWN || k == e.PAGEDOWN){
+ increment *= -1;
+ }
+ pageNum += increment;
+ if(pageNum >= 1 & pageNum <= d.pages){
+ field.setValue(pageNum);
+ }
+ }
+ }
+ },
+
+
+ getParams : function(){
+
+ return this.paramNames || this.store.paramNames;
+ },
+
+
+ beforeLoad : function(){
+ if(this.rendered && this.refresh){
+ this.refresh.disable();
+ }
+ },
+
+
+ doLoad : function(start){
+ var o = {}, pn = this.getParams();
+ o[pn.start] = start;
+ o[pn.limit] = this.pageSize;
+ if(this.fireEvent('beforechange', this, o) !== false){
+ this.store.load({params:o});
+ }
+ },
+
+
+ moveFirst : function(){
+ this.doLoad(0);
+ },
+
+
+ movePrevious : function(){
+ this.doLoad(Math.max(0, this.cursor-this.pageSize));
+ },
+
+
+ moveNext : function(){
+ this.doLoad(this.cursor+this.pageSize);
+ },
+
+
+ moveLast : function(){
+ var total = this.store.getTotalCount(),
+ extra = total % this.pageSize;
+
+ this.doLoad(extra ? (total - extra) : total - this.pageSize);
+ },
+
+
+ doRefresh : function(){
+ this.doLoad(this.cursor);
+ },
+
+
+ bindStore : function(store, initial){
+ var doLoad;
+ if(!initial && this.store){
+ if(store !== this.store && this.store.autoDestroy){
+ this.store.destroy();
+ }else{
+ this.store.un('beforeload', this.beforeLoad, this);
+ this.store.un('load', this.onLoad, this);
+ this.store.un('exception', this.onLoadError, this);
+ }
+ if(!store){
+ this.store = null;
+ }
+ }
+ if(store){
+ store = Ext.StoreMgr.lookup(store);
+ store.on({
+ scope: this,
+ beforeload: this.beforeLoad,
+ load: this.onLoad,
+ exception: this.onLoadError
+ });
+ doLoad = true;
+ }
+ this.store = store;
+ if(doLoad){
+ this.onLoad(store, null, {});
+ }
+ },
+
+
+ unbind : function(store){
+ this.bindStore(null);
+ },
+
+
+ bind : function(store){
+ this.bindStore(store);
+ },
+
+
+ onDestroy : function(){
+ this.bindStore(null);
+ Ext.PagingToolbar.superclass.onDestroy.call(this);
+ }
+});
+
+})();
+Ext.reg('paging', Ext.PagingToolbar);
+Ext.History = (function () {
+ var iframe, hiddenField;
+ var ready = false;
+ var currentToken;
+
+ function getHash() {
+ var href = location.href, i = href.indexOf("#"),
+ hash = i >= 0 ? href.substr(i + 1) : null;
+
+ if (Ext.isGecko) {
+ hash = decodeURIComponent(hash);
+ }
+ return hash;
+ }
+
+ function doSave() {
+ hiddenField.value = currentToken;
+ }
+
+ function handleStateChange(token) {
+ currentToken = token;
+ Ext.History.fireEvent('change', token);
+ }
+
+ function updateIFrame (token) {
+ var html = ['<html><body><div id="state">',Ext.util.Format.htmlEncode(token),'</div></body></html>'].join('');
+ try {
+ var doc = iframe.contentWindow.document;
+ doc.open();
+ doc.write(html);
+ doc.close();
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+
+ function checkIFrame() {
+ if (!iframe.contentWindow || !iframe.contentWindow.document) {
+ setTimeout(checkIFrame, 10);
+ return;
+ }
+
+ var doc = iframe.contentWindow.document;
+ var elem = doc.getElementById("state");
+ var token = elem ? elem.innerText : null;
+
+ var hash = getHash();
+
+ setInterval(function () {
+
+ doc = iframe.contentWindow.document;
+ elem = doc.getElementById("state");
+
+ var newtoken = elem ? elem.innerText : null;
+
+ var newHash = getHash();
+
+ if (newtoken !== token) {
+ token = newtoken;
+ handleStateChange(token);
+ location.hash = token;
+ hash = token;
+ doSave();
+ } else if (newHash !== hash) {
+ hash = newHash;
+ updateIFrame(newHash);
+ }
+
+ }, 50);
+
+ ready = true;
+
+ Ext.History.fireEvent('ready', Ext.History);
+ }
+
+ function startUp() {
+ currentToken = hiddenField.value ? hiddenField.value : getHash();
+
+ if (Ext.isIE) {
+ checkIFrame();
+ } else {
+ var hash = getHash();
+ setInterval(function () {
+ var newHash = getHash();
+ if (newHash !== hash) {
+ hash = newHash;
+ handleStateChange(hash);
+ doSave();
+ }
+ }, 50);
+ ready = true;
+ Ext.History.fireEvent('ready', Ext.History);
+ }
+ }
+
+ return {
+
+ fieldId: 'x-history-field',
+
+ iframeId: 'x-history-frame',
+
+ events:{},
+
+
+ init: function (onReady, scope) {
+ if(ready) {
+ Ext.callback(onReady, scope, [this]);
+ return;
+ }
+ if(!Ext.isReady){
+ Ext.onReady(function(){
+ Ext.History.init(onReady, scope);
+ });
+ return;
+ }
+ hiddenField = Ext.getDom(Ext.History.fieldId);
+ if (Ext.isIE) {
+ iframe = Ext.getDom(Ext.History.iframeId);
+ }
+ this.addEvents(
+
+ 'ready',
+
+ 'change'
+ );
+ if(onReady){
+ this.on('ready', onReady, scope, {single:true});
+ }
+ startUp();
+ },
+
+
+ add: function (token, preventDup) {
+ if(preventDup !== false){
+ if(this.getToken() == token){
+ return true;
+ }
+ }
+ if (Ext.isIE) {
+ return updateIFrame(token);
+ } else {
+ location.hash = token;
+ return true;
+ }
+ },
+
+
+ back: function(){
+ history.go(-1);
+ },
+
+
+ forward: function(){
+ history.go(1);
+ },
+
+
+ getToken: function() {
+ return ready ? currentToken : getHash();
+ }
+ };
+})();
+Ext.apply(Ext.History, new Ext.util.Observable());
+Ext.Tip = Ext.extend(Ext.Panel, {
+
+
+
+ minWidth : 40,
+
+ maxWidth : 300,
+
+ shadow : "sides",
+
+ defaultAlign : "tl-bl?",
+ autoRender: true,
+ quickShowInterval : 250,
+
+
+ frame:true,
+ hidden:true,
+ baseCls: 'x-tip',
+ floating:{shadow:true,shim:true,useDisplay:true,constrain:false},
+ autoHeight:true,
+
+ closeAction: 'hide',
+
+
+ initComponent : function(){
+ Ext.Tip.superclass.initComponent.call(this);
+ if(this.closable && !this.title){
+ this.elements += ',header';
+ }
+ },
+
+
+ afterRender : function(){
+ Ext.Tip.superclass.afterRender.call(this);
+ if(this.closable){
+ this.addTool({
+ id: 'close',
+ handler: this[this.closeAction],
+ scope: this
+ });
+ }
+ },
+
+
+ showAt : function(xy){
+ Ext.Tip.superclass.show.call(this);
+ if(this.measureWidth !== false && (!this.initialConfig || typeof this.initialConfig.width != 'number')){
+ this.doAutoWidth();
+ }
+ if(this.constrainPosition){
+ xy = this.el.adjustForConstraints(xy);
+ }
+ this.setPagePosition(xy[0], xy[1]);
+ },
+
+
+ doAutoWidth : function(adjust){
+ adjust = adjust || 0;
+ var bw = this.body.getTextWidth();
+ if(this.title){
+ bw = Math.max(bw, this.header.child('span').getTextWidth(this.title));
+ }
+ bw += this.getFrameWidth() + (this.closable ? 20 : 0) + this.body.getPadding("lr") + adjust;
+ this.setWidth(bw.constrain(this.minWidth, this.maxWidth));
+
+
+ if(Ext.isIE7 && !this.repainted){
+ this.el.repaint();
+ this.repainted = true;
+ }
+ },
+
+
+ showBy : function(el, pos){
+ if(!this.rendered){
+ this.render(Ext.getBody());
+ }
+ this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign));
+ },
+
+ initDraggable : function(){
+ this.dd = new Ext.Tip.DD(this, typeof this.draggable == 'boolean' ? null : this.draggable);
+ this.header.addClass('x-tip-draggable');
+ }
+});
+
+Ext.reg('tip', Ext.Tip);
+
+
+Ext.Tip.DD = function(tip, config){
+ Ext.apply(this, config);
+ this.tip = tip;
+ Ext.Tip.DD.superclass.constructor.call(this, tip.el.id, 'WindowDD-'+tip.id);
+ this.setHandleElId(tip.header.id);
+ this.scroll = false;
+};
+
+Ext.extend(Ext.Tip.DD, Ext.dd.DD, {
+ moveOnly:true,
+ scroll:false,
+ headerOffsets:[100, 25],
+ startDrag : function(){
+ this.tip.el.disableShadow();
+ },
+ endDrag : function(e){
+ this.tip.el.enableShadow(true);
+ }
+});
+Ext.ToolTip = Ext.extend(Ext.Tip, {
+
+
+
+
+ showDelay : 500,
+
+ hideDelay : 200,
+
+ dismissDelay : 5000,
+
+
+ trackMouse : false,
+
+ anchorToTarget : true,
+
+ anchorOffset : 0,
+
+
+
+ targetCounter : 0,
+
+ constrainPosition : false,
+
+
+ initComponent : function(){
+ Ext.ToolTip.superclass.initComponent.call(this);
+ this.lastActive = new Date();
+ this.initTarget(this.target);
+ this.origAnchor = this.anchor;
+ },
+
+
+ onRender : function(ct, position){
+ Ext.ToolTip.superclass.onRender.call(this, ct, position);
+ this.anchorCls = 'x-tip-anchor-' + this.getAnchorPosition();
+ this.anchorEl = this.el.createChild({
+ cls: 'x-tip-anchor ' + this.anchorCls
+ });
+ },
+
+
+ afterRender : function(){
+ Ext.ToolTip.superclass.afterRender.call(this);
+ this.anchorEl.setStyle('z-index', this.el.getZIndex() + 1).setVisibilityMode(Ext.Element.DISPLAY);
+ },
+
+
+ initTarget : function(target){
+ var t;
+ if((t = Ext.get(target))){
+ if(this.target){
+ var tg = Ext.get(this.target);
+ this.mun(tg, 'mouseover', this.onTargetOver, this);
+ this.mun(tg, 'mouseout', this.onTargetOut, this);
+ this.mun(tg, 'mousemove', this.onMouseMove, this);
+ }
+ this.mon(t, {
+ mouseover: this.onTargetOver,
+ mouseout: this.onTargetOut,
+ mousemove: this.onMouseMove,
+ scope: this
+ });
+ this.target = t;
+ }
+ if(this.anchor){
+ this.anchorTarget = this.target;
+ }
+ },
+
+
+ onMouseMove : function(e){
+ var t = this.delegate ? e.getTarget(this.delegate) : this.triggerElement = true;
+ if (t) {
+ this.targetXY = e.getXY();
+ if (t === this.triggerElement) {
+ if(!this.hidden && this.trackMouse){
+ this.setPagePosition(this.getTargetXY());
+ }
+ } else {
+ this.hide();
+ this.lastActive = new Date(0);
+ this.onTargetOver(e);
+ }
+ } else if (!this.closable && this.isVisible()) {
+ this.hide();
+ }
+ },
+
+
+ getTargetXY : function(){
+ if(this.delegate){
+ this.anchorTarget = this.triggerElement;
+ }
+ if(this.anchor){
+ this.targetCounter++;
+ var offsets = this.getOffsets(),
+ xy = (this.anchorToTarget && !this.trackMouse) ? this.el.getAlignToXY(this.anchorTarget, this.getAnchorAlign()) : this.targetXY,
+ dw = Ext.lib.Dom.getViewWidth() - 5,
+ dh = Ext.lib.Dom.getViewHeight() - 5,
+ de = document.documentElement,
+ bd = document.body,
+ scrollX = (de.scrollLeft || bd.scrollLeft || 0) + 5,
+ scrollY = (de.scrollTop || bd.scrollTop || 0) + 5,
+ axy = [xy[0] + offsets[0], xy[1] + offsets[1]],
+ sz = this.getSize();
+
+ this.anchorEl.removeClass(this.anchorCls);
+
+ if(this.targetCounter < 2){
+ if(axy[0] < scrollX){
+ if(this.anchorToTarget){
+ this.defaultAlign = 'l-r';
+ if(this.mouseOffset){this.mouseOffset[0] *= -1;}
+ }
+ this.anchor = 'left';
+ return this.getTargetXY();
+ }
+ if(axy[0]+sz.width > dw){
+ if(this.anchorToTarget){
+ this.defaultAlign = 'r-l';
+ if(this.mouseOffset){this.mouseOffset[0] *= -1;}
+ }
+ this.anchor = 'right';
+ return this.getTargetXY();
+ }
+ if(axy[1] < scrollY){
+ if(this.anchorToTarget){
+ this.defaultAlign = 't-b';
+ if(this.mouseOffset){this.mouseOffset[1] *= -1;}
+ }
+ this.anchor = 'top';
+ return this.getTargetXY();
+ }
+ if(axy[1]+sz.height > dh){
+ if(this.anchorToTarget){
+ this.defaultAlign = 'b-t';
+ if(this.mouseOffset){this.mouseOffset[1] *= -1;}
+ }
+ this.anchor = 'bottom';
+ return this.getTargetXY();
+ }
+ }
+
+ this.anchorCls = 'x-tip-anchor-'+this.getAnchorPosition();
+ this.anchorEl.addClass(this.anchorCls);
+ this.targetCounter = 0;
+ return axy;
+ }else{
+ var mouseOffset = this.getMouseOffset();
+ return [this.targetXY[0]+mouseOffset[0], this.targetXY[1]+mouseOffset[1]];
+ }
+ },
+
+ getMouseOffset : function(){
+ var offset = this.anchor ? [0,0] : [15,18];
+ if(this.mouseOffset){
+ offset[0] += this.mouseOffset[0];
+ offset[1] += this.mouseOffset[1];
+ }
+ return offset;
+ },
+
+
+ getAnchorPosition : function(){
+ if(this.anchor){
+ this.tipAnchor = this.anchor.charAt(0);
+ }else{
+ var m = this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);
+ if(!m){
+ throw 'AnchorTip.defaultAlign is invalid';
+ }
+ this.tipAnchor = m[1].charAt(0);
+ }
+
+ switch(this.tipAnchor){
+ case 't': return 'top';
+ case 'b': return 'bottom';
+ case 'r': return 'right';
+ }
+ return 'left';
+ },
+
+
+ getAnchorAlign : function(){
+ switch(this.anchor){
+ case 'top' : return 'tl-bl';
+ case 'left' : return 'tl-tr';
+ case 'right': return 'tr-tl';
+ default : return 'bl-tl';
+ }
+ },
+
+
+ getOffsets : function(){
+ var offsets,
+ ap = this.getAnchorPosition().charAt(0);
+ if(this.anchorToTarget && !this.trackMouse){
+ switch(ap){
+ case 't':
+ offsets = [0, 9];
+ break;
+ case 'b':
+ offsets = [0, -13];
+ break;
+ case 'r':
+ offsets = [-13, 0];
+ break;
+ default:
+ offsets = [9, 0];
+ break;
+ }
+ }else{
+ switch(ap){
+ case 't':
+ offsets = [-15-this.anchorOffset, 30];
+ break;
+ case 'b':
+ offsets = [-19-this.anchorOffset, -13-this.el.dom.offsetHeight];
+ break;
+ case 'r':
+ offsets = [-15-this.el.dom.offsetWidth, -13-this.anchorOffset];
+ break;
+ default:
+ offsets = [25, -13-this.anchorOffset];
+ break;
+ }
+ }
+ var mouseOffset = this.getMouseOffset();
+ offsets[0] += mouseOffset[0];
+ offsets[1] += mouseOffset[1];
+
+ return offsets;
+ },
+
+
+ onTargetOver : function(e){
+ if(this.disabled || e.within(this.target.dom, true)){
+ return;
+ }
+ var t = e.getTarget(this.delegate);
+ if (t) {
+ this.triggerElement = t;
+ this.clearTimer('hide');
+ this.targetXY = e.getXY();
+ this.delayShow();
+ }
+ },
+
+
+ delayShow : function(){
+ if(this.hidden && !this.showTimer){
+ if(this.lastActive.getElapsed() < this.quickShowInterval){
+ this.show();
+ }else{
+ this.showTimer = this.show.defer(this.showDelay, this);
+ }
+ }else if(!this.hidden && this.autoHide !== false){
+ this.show();
+ }
+ },
+
+
+ onTargetOut : function(e){
+ if(this.disabled || e.within(this.target.dom, true)){
+ return;
+ }
+ this.clearTimer('show');
+ if(this.autoHide !== false){
+ this.delayHide();
+ }
+ },
+
+
+ delayHide : function(){
+ if(!this.hidden && !this.hideTimer){
+ this.hideTimer = this.hide.defer(this.hideDelay, this);
+ }
+ },
+
+
+ hide: function(){
+ this.clearTimer('dismiss');
+ this.lastActive = new Date();
+ if(this.anchorEl){
+ this.anchorEl.hide();
+ }
+ Ext.ToolTip.superclass.hide.call(this);
+ delete this.triggerElement;
+ },
+
+
+ show : function(){
+ if(this.anchor){
+
+
+ this.showAt([-1000,-1000]);
+ this.origConstrainPosition = this.constrainPosition;
+ this.constrainPosition = false;
+ this.anchor = this.origAnchor;
+ }
+ this.showAt(this.getTargetXY());
+
+ if(this.anchor){
+ this.anchorEl.show();
+ this.syncAnchor();
+ this.constrainPosition = this.origConstrainPosition;
+ }else{
+ this.anchorEl.hide();
+ }
+ },
+
+
+ showAt : function(xy){
+ this.lastActive = new Date();
+ this.clearTimers();
+ Ext.ToolTip.superclass.showAt.call(this, xy);
+ if(this.dismissDelay && this.autoHide !== false){
+ this.dismissTimer = this.hide.defer(this.dismissDelay, this);
+ }
+ if(this.anchor && !this.anchorEl.isVisible()){
+ this.syncAnchor();
+ this.anchorEl.show();
+ }else{
+ this.anchorEl.hide();
+ }
+ },
+
+
+ syncAnchor : function(){
+ var anchorPos, targetPos, offset;
+ switch(this.tipAnchor.charAt(0)){
+ case 't':
+ anchorPos = 'b';
+ targetPos = 'tl';
+ offset = [20+this.anchorOffset, 2];
+ break;
+ case 'r':
+ anchorPos = 'l';
+ targetPos = 'tr';
+ offset = [-2, 11+this.anchorOffset];
+ break;
+ case 'b':
+ anchorPos = 't';
+ targetPos = 'bl';
+ offset = [20+this.anchorOffset, -2];
+ break;
+ default:
+ anchorPos = 'r';
+ targetPos = 'tl';
+ offset = [2, 11+this.anchorOffset];
+ break;
+ }
+ this.anchorEl.alignTo(this.el, anchorPos+'-'+targetPos, offset);
+ },
+
+
+ setPagePosition : function(x, y){
+ Ext.ToolTip.superclass.setPagePosition.call(this, x, y);
+ if(this.anchor){
+ this.syncAnchor();
+ }
+ },
+
+
+ clearTimer : function(name){
+ name = name + 'Timer';
+ clearTimeout(this[name]);
+ delete this[name];
+ },
+
+
+ clearTimers : function(){
+ this.clearTimer('show');
+ this.clearTimer('dismiss');
+ this.clearTimer('hide');
+ },
+
+
+ onShow : function(){
+ Ext.ToolTip.superclass.onShow.call(this);
+ Ext.getDoc().on('mousedown', this.onDocMouseDown, this);
+ },
+
+
+ onHide : function(){
+ Ext.ToolTip.superclass.onHide.call(this);
+ Ext.getDoc().un('mousedown', this.onDocMouseDown, this);
+ },
+
+
+ onDocMouseDown : function(e){
+ if(this.autoHide !== true && !this.closable && !e.within(this.el.dom)){
+ this.disable();
+ this.doEnable.defer(100, this);
+ }
+ },
+
+
+ doEnable : function(){
+ if(!this.isDestroyed){
+ this.enable();
+ }
+ },
+
+
+ onDisable : function(){
+ this.clearTimers();
+ this.hide();
+ },
+
+
+ adjustPosition : function(x, y){
+ if(this.constrainPosition){
+ var ay = this.targetXY[1], h = this.getSize().height;
+ if(y <= ay && (y+h) >= ay){
+ y = ay-h-5;
+ }
+ }
+ return {x : x, y: y};
+ },
+
+ beforeDestroy : function(){
+ this.clearTimers();
+ Ext.destroy(this.anchorEl);
+ delete this.anchorEl;
+ delete this.target;
+ delete this.anchorTarget;
+ delete this.triggerElement;
+ Ext.ToolTip.superclass.beforeDestroy.call(this);
+ },
+
+
+ onDestroy : function(){
+ Ext.getDoc().un('mousedown', this.onDocMouseDown, this);
+ Ext.ToolTip.superclass.onDestroy.call(this);
+ }
+});
+
+Ext.reg('tooltip', Ext.ToolTip);
+Ext.QuickTip = Ext.extend(Ext.ToolTip, {
+
+
+ interceptTitles : false,
+
+
+ tagConfig : {
+ namespace : "ext",
+ attribute : "qtip",
+ width : "qwidth",
+ target : "target",
+ title : "qtitle",
+ hide : "hide",
+ cls : "qclass",
+ align : "qalign",
+ anchor : "anchor"
+ },
+
+
+ initComponent : function(){
+ this.target = this.target || Ext.getDoc();
+ this.targets = this.targets || {};
+ Ext.QuickTip.superclass.initComponent.call(this);
+ },
+
+
+ register : function(config){
+ var cs = Ext.isArray(config) ? config : arguments;
+ for(var i = 0, len = cs.length; i < len; i++){
+ var c = cs[i];
+ var target = c.target;
+ if(target){
+ if(Ext.isArray(target)){
+ for(var j = 0, jlen = target.length; j < jlen; j++){
+ this.targets[Ext.id(target[j])] = c;
+ }
+ } else{
+ this.targets[Ext.id(target)] = c;
+ }
+ }
+ }
+ },
+
+
+ unregister : function(el){
+ delete this.targets[Ext.id(el)];
+ },
+
+
+ cancelShow: function(el){
+ var at = this.activeTarget;
+ el = Ext.get(el).dom;
+ if(this.isVisible()){
+ if(at && at.el == el){
+ this.hide();
+ }
+ }else if(at && at.el == el){
+ this.clearTimer('show');
+ }
+ },
+
+ getTipCfg: function(e) {
+ var t = e.getTarget(),
+ ttp,
+ cfg;
+ if(this.interceptTitles && t.title && Ext.isString(t.title)){
+ ttp = t.title;
+ t.qtip = ttp;
+ t.removeAttribute("title");
+ e.preventDefault();
+ }else{
+ cfg = this.tagConfig;
+ ttp = t.qtip || Ext.fly(t).getAttribute(cfg.attribute, cfg.namespace);
+ }
+ return ttp;
+ },
+
+
+ onTargetOver : function(e){
+ if(this.disabled){
+ return;
+ }
+ this.targetXY = e.getXY();
+ var t = e.getTarget();
+ if(!t || t.nodeType !== 1 || t == document || t == document.body){
+ return;
+ }
+ if(this.activeTarget && ((t == this.activeTarget.el) || Ext.fly(this.activeTarget.el).contains(t))){
+ this.clearTimer('hide');
+ this.show();
+ return;
+ }
+ if(t && this.targets[t.id]){
+ this.activeTarget = this.targets[t.id];
+ this.activeTarget.el = t;
+ this.anchor = this.activeTarget.anchor;
+ if(this.anchor){
+ this.anchorTarget = t;
+ }
+ this.delayShow();
+ return;
+ }
+ var ttp, et = Ext.fly(t), cfg = this.tagConfig, ns = cfg.namespace;
+ if(ttp = this.getTipCfg(e)){
+ var autoHide = et.getAttribute(cfg.hide, ns);
+ this.activeTarget = {
+ el: t,
+ text: ttp,
+ width: et.getAttribute(cfg.width, ns),
+ autoHide: autoHide != "user" && autoHide !== 'false',
+ title: et.getAttribute(cfg.title, ns),
+ cls: et.getAttribute(cfg.cls, ns),
+ align: et.getAttribute(cfg.align, ns)
+
+ };
+ this.anchor = et.getAttribute(cfg.anchor, ns);
+ if(this.anchor){
+ this.anchorTarget = t;
+ }
+ this.delayShow();
+ }
+ },
+
+
+ onTargetOut : function(e){
+
+
+ if (this.activeTarget && e.within(this.activeTarget.el) && !this.getTipCfg(e)) {
+ return;
+ }
+
+ this.clearTimer('show');
+ if(this.autoHide !== false){
+ this.delayHide();
+ }
+ },
+
+
+ showAt : function(xy){
+ var t = this.activeTarget;
+ if(t){
+ if(!this.rendered){
+ this.render(Ext.getBody());
+ this.activeTarget = t;
+ }
+ if(t.width){
+ this.setWidth(t.width);
+ this.body.setWidth(this.adjustBodyWidth(t.width - this.getFrameWidth()));
+ this.measureWidth = false;
+ } else{
+ this.measureWidth = true;
+ }
+ this.setTitle(t.title || '');
+ this.body.update(t.text);
+ this.autoHide = t.autoHide;
+ this.dismissDelay = t.dismissDelay || this.dismissDelay;
+ if(this.lastCls){
+ this.el.removeClass(this.lastCls);
+ delete this.lastCls;
+ }
+ if(t.cls){
+ this.el.addClass(t.cls);
+ this.lastCls = t.cls;
+ }
+ if(this.anchor){
+ this.constrainPosition = false;
+ }else if(t.align){
+ xy = this.el.getAlignToXY(t.el, t.align);
+ this.constrainPosition = false;
+ }else{
+ this.constrainPosition = true;
+ }
+ }
+ Ext.QuickTip.superclass.showAt.call(this, xy);
+ },
+
+
+ hide: function(){
+ delete this.activeTarget;
+ Ext.QuickTip.superclass.hide.call(this);
+ }
+});
+Ext.reg('quicktip', Ext.QuickTip);
+Ext.QuickTips = function(){
+ var tip,
+ disabled = false;
+
+ return {
+
+ init : function(autoRender){
+ if(!tip){
+ if(!Ext.isReady){
+ Ext.onReady(function(){
+ Ext.QuickTips.init(autoRender);
+ });
+ return;
+ }
+ tip = new Ext.QuickTip({
+ elements:'header,body',
+ disabled: disabled
+ });
+ if(autoRender !== false){
+ tip.render(Ext.getBody());
+ }
+ }
+ },
+
+
+ ddDisable : function(){
+
+ if(tip && !disabled){
+ tip.disable();
+ }
+ },
+
+
+ ddEnable : function(){
+
+ if(tip && !disabled){
+ tip.enable();
+ }
+ },
+
+
+ enable : function(){
+ if(tip){
+ tip.enable();
+ }
+ disabled = false;
+ },
+
+
+ disable : function(){
+ if(tip){
+ tip.disable();
+ }
+ disabled = true;
+ },
+
+
+ isEnabled : function(){
+ return tip !== undefined && !tip.disabled;
+ },
+
+
+ getQuickTip : function(){
+ return tip;
+ },
+
+
+ register : function(){
+ tip.register.apply(tip, arguments);
+ },
+
+
+ unregister : function(){
+ tip.unregister.apply(tip, arguments);
+ },
+
+
+ tips : function(){
+ tip.register.apply(tip, arguments);
+ }
+ };
+}();
+Ext.slider.Tip = Ext.extend(Ext.Tip, {
+ minWidth: 10,
+ offsets : [0, -10],
+
+ init: function(slider) {
+ slider.on({
+ scope : this,
+ dragstart: this.onSlide,
+ drag : this.onSlide,
+ dragend : this.hide,
+ destroy : this.destroy
+ });
+ },
+
+
+ onSlide : function(slider, e, thumb) {
+ this.show();
+ this.body.update(this.getText(thumb));
+ this.doAutoWidth();
+ this.el.alignTo(thumb.el, 'b-t?', this.offsets);
+ },
+
+
+ getText : function(thumb) {
+ return String(thumb.value);
+ }
+});
+
+
+Ext.ux.SliderTip = Ext.slider.Tip;
+Ext.tree.TreePanel = Ext.extend(Ext.Panel, {
+ rootVisible : true,
+ animate : Ext.enableFx,
+ lines : true,
+ enableDD : false,
+ hlDrop : Ext.enableFx,
+ pathSeparator : '/',
+
+
+ bubbleEvents : [],
+
+ initComponent : function(){
+ Ext.tree.TreePanel.superclass.initComponent.call(this);
+
+ if(!this.eventModel){
+ this.eventModel = new Ext.tree.TreeEventModel(this);
+ }
+
+
+ var l = this.loader;
+ if(!l){
+ l = new Ext.tree.TreeLoader({
+ dataUrl: this.dataUrl,
+ requestMethod: this.requestMethod
+ });
+ }else if(Ext.isObject(l) && !l.load){
+ l = new Ext.tree.TreeLoader(l);
+ }
+ this.loader = l;
+
+ this.nodeHash = {};
+
+
+ if(this.root){
+ var r = this.root;
+ delete this.root;
+ this.setRootNode(r);
+ }
+
+
+ this.addEvents(
+
+
+ 'append',
+
+ 'remove',
+
+ 'movenode',
+
+ 'insert',
+
+ 'beforeappend',
+
+ 'beforeremove',
+
+ 'beforemovenode',
+
+ 'beforeinsert',
+
+
+ 'beforeload',
+
+ 'load',
+
+ 'textchange',
+
+ 'beforeexpandnode',
+
+ 'beforecollapsenode',
+
+ 'expandnode',
+
+ 'disabledchange',
+
+ 'collapsenode',
+
+ 'beforeclick',
+
+ 'click',
+
+ 'containerclick',
+
+ 'checkchange',
+
+ 'beforedblclick',
+
+ 'dblclick',
+
+ 'containerdblclick',
+
+ 'contextmenu',
+
+ 'containercontextmenu',
+
+ 'beforechildrenrendered',
+
+ 'startdrag',
+
+ 'enddrag',
+
+ 'dragdrop',
+
+ 'beforenodedrop',
+
+ 'nodedrop',
+
+ 'nodedragover'
+ );
+ if(this.singleExpand){
+ this.on('beforeexpandnode', this.restrictExpand, this);
+ }
+ },
+
+
+ proxyNodeEvent : function(ename, a1, a2, a3, a4, a5, a6){
+ if(ename == 'collapse' || ename == 'expand' || ename == 'beforecollapse' || ename == 'beforeexpand' || ename == 'move' || ename == 'beforemove'){
+ ename = ename+'node';
+ }
+
+ return this.fireEvent(ename, a1, a2, a3, a4, a5, a6);
+ },
+
+
+
+ getRootNode : function(){
+ return this.root;
+ },
+
+
+ setRootNode : function(node){
+ this.destroyRoot();
+ if(!node.render){
+ node = this.loader.createNode(node);
+ }
+ this.root = node;
+ node.ownerTree = this;
+ node.isRoot = true;
+ this.registerNode(node);
+ if(!this.rootVisible){
+ var uiP = node.attributes.uiProvider;
+ node.ui = uiP ? new uiP(node) : new Ext.tree.RootTreeNodeUI(node);
+ }
+ if(this.innerCt){
+ this.clearInnerCt();
+ this.renderRoot();
+ }
+ return node;
+ },
+
+ clearInnerCt : function(){
+ this.innerCt.update('');
+ },
+
+
+ renderRoot : function(){
+ this.root.render();
+ if(!this.rootVisible){
+ this.root.renderChildren();
+ }
+ },
+
+
+ getNodeById : function(id){
+ return this.nodeHash[id];
+ },
+
+
+ registerNode : function(node){
+ this.nodeHash[node.id] = node;
+ },
+
+
+ unregisterNode : function(node){
+ delete this.nodeHash[node.id];
+ },
+
+
+ toString : function(){
+ return '[Tree'+(this.id?' '+this.id:'')+']';
+ },
+
+
+ restrictExpand : function(node){
+ var p = node.parentNode;
+ if(p){
+ if(p.expandedChild && p.expandedChild.parentNode == p){
+ p.expandedChild.collapse();
+ }
+ p.expandedChild = node;
+ }
+ },
+
+
+ getChecked : function(a, startNode){
+ startNode = startNode || this.root;
+ var r = [];
+ var f = function(){
+ if(this.attributes.checked){
+ r.push(!a ? this : (a == 'id' ? this.id : this.attributes[a]));
+ }
+ };
+ startNode.cascade(f);
+ return r;
+ },
+
+
+ getLoader : function(){
+ return this.loader;
+ },
+
+
+ expandAll : function(){
+ this.root.expand(true);
+ },
+
+
+ collapseAll : function(){
+ this.root.collapse(true);
+ },
+
+
+ getSelectionModel : function(){
+ if(!this.selModel){
+ this.selModel = new Ext.tree.DefaultSelectionModel();
+ }
+ return this.selModel;
+ },
+
+
+ expandPath : function(path, attr, callback){
+ if(Ext.isEmpty(path)){
+ if(callback){
+ callback(false, undefined);
+ }
+ return;
+ }
+ attr = attr || 'id';
+ var keys = path.split(this.pathSeparator);
+ var curNode = this.root;
+ if(curNode.attributes[attr] != keys[1]){
+ if(callback){
+ callback(false, null);
+ }
+ return;
+ }
+ var index = 1;
+ var f = function(){
+ if(++index == keys.length){
+ if(callback){
+ callback(true, curNode);
+ }
+ return;
+ }
+ var c = curNode.findChild(attr, keys[index]);
+ if(!c){
+ if(callback){
+ callback(false, curNode);
+ }
+ return;
+ }
+ curNode = c;
+ c.expand(false, false, f);
+ };
+ curNode.expand(false, false, f);
+ },
+
+
+ selectPath : function(path, attr, callback){
+ if(Ext.isEmpty(path)){
+ if(callback){
+ callback(false, undefined);
+ }
+ return;
+ }
+ attr = attr || 'id';
+ var keys = path.split(this.pathSeparator),
+ v = keys.pop();
+ if(keys.length > 1){
+ var f = function(success, node){
+ if(success && node){
+ var n = node.findChild(attr, v);
+ if(n){
+ n.select();
+ if(callback){
+ callback(true, n);
+ }
+ }else if(callback){
+ callback(false, n);
+ }
+ }else{
+ if(callback){
+ callback(false, n);
+ }
+ }
+ };
+ this.expandPath(keys.join(this.pathSeparator), attr, f);
+ }else{
+ this.root.select();
+ if(callback){
+ callback(true, this.root);
+ }
+ }
+ },
+
+
+ getTreeEl : function(){
+ return this.body;
+ },
+
+
+ onRender : function(ct, position){
+ Ext.tree.TreePanel.superclass.onRender.call(this, ct, position);
+ this.el.addClass('x-tree');
+ this.innerCt = this.body.createChild({tag:'ul',
+ cls:'x-tree-root-ct ' +
+ (this.useArrows ? 'x-tree-arrows' : this.lines ? 'x-tree-lines' : 'x-tree-no-lines')});
+ },
+
+
+ initEvents : function(){
+ Ext.tree.TreePanel.superclass.initEvents.call(this);
+
+ if(this.containerScroll){
+ Ext.dd.ScrollManager.register(this.body);
+ }
+ if((this.enableDD || this.enableDrop) && !this.dropZone){
+
+ this.dropZone = new Ext.tree.TreeDropZone(this, this.dropConfig || {
+ ddGroup: this.ddGroup || 'TreeDD', appendOnly: this.ddAppendOnly === true
+ });
+ }
+ if((this.enableDD || this.enableDrag) && !this.dragZone){
+
+ this.dragZone = new Ext.tree.TreeDragZone(this, this.dragConfig || {
+ ddGroup: this.ddGroup || 'TreeDD',
+ scroll: this.ddScroll
+ });
+ }
+ this.getSelectionModel().init(this);
+ },
+
+
+ afterRender : function(){
+ Ext.tree.TreePanel.superclass.afterRender.call(this);
+ this.renderRoot();
+ },
+
+ beforeDestroy : function(){
+ if(this.rendered){
+ Ext.dd.ScrollManager.unregister(this.body);
+ Ext.destroy(this.dropZone, this.dragZone);
+ }
+ this.destroyRoot();
+ Ext.destroy(this.loader);
+ this.nodeHash = this.root = this.loader = null;
+ Ext.tree.TreePanel.superclass.beforeDestroy.call(this);
+ },
+
+
+ destroyRoot : function(){
+ if(this.root && this.root.destroy){
+ this.root.destroy(true);
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+});
+
+Ext.tree.TreePanel.nodeTypes = {};
+
+Ext.reg('treepanel', Ext.tree.TreePanel);Ext.tree.TreeEventModel = function(tree){
+ this.tree = tree;
+ this.tree.on('render', this.initEvents, this);
+};
+
+Ext.tree.TreeEventModel.prototype = {
+ initEvents : function(){
+ var t = this.tree;
+
+ if(t.trackMouseOver !== false){
+ t.mon(t.innerCt, {
+ scope: this,
+ mouseover: this.delegateOver,
+ mouseout: this.delegateOut
+ });
+ }
+ t.mon(t.getTreeEl(), {
+ scope: this,
+ click: this.delegateClick,
+ dblclick: this.delegateDblClick,
+ contextmenu: this.delegateContextMenu
+ });
+ },
+
+ getNode : function(e){
+ var t;
+ if(t = e.getTarget('.x-tree-node-el', 10)){
+ var id = Ext.fly(t, '_treeEvents').getAttribute('tree-node-id', 'ext');
+ if(id){
+ return this.tree.getNodeById(id);
+ }
+ }
+ return null;
+ },
+
+ getNodeTarget : function(e){
+ var t = e.getTarget('.x-tree-node-icon', 1);
+ if(!t){
+ t = e.getTarget('.x-tree-node-el', 6);
+ }
+ return t;
+ },
+
+ delegateOut : function(e, t){
+ if(!this.beforeEvent(e)){
+ return;
+ }
+ if(e.getTarget('.x-tree-ec-icon', 1)){
+ var n = this.getNode(e);
+ this.onIconOut(e, n);
+ if(n == this.lastEcOver){
+ delete this.lastEcOver;
+ }
+ }
+ if((t = this.getNodeTarget(e)) && !e.within(t, true)){
+ this.onNodeOut(e, this.getNode(e));
+ }
+ },
+
+ delegateOver : function(e, t){
+ if(!this.beforeEvent(e)){
+ return;
+ }
+ if(Ext.isGecko && !this.trackingDoc){
+ Ext.getBody().on('mouseover', this.trackExit, this);
+ this.trackingDoc = true;
+ }
+ if(this.lastEcOver){
+ this.onIconOut(e, this.lastEcOver);
+ delete this.lastEcOver;
+ }
+ if(e.getTarget('.x-tree-ec-icon', 1)){
+ this.lastEcOver = this.getNode(e);
+ this.onIconOver(e, this.lastEcOver);
+ }
+ if(t = this.getNodeTarget(e)){
+ this.onNodeOver(e, this.getNode(e));
+ }
+ },
+
+ trackExit : function(e){
+ if(this.lastOverNode){
+ if(this.lastOverNode.ui && !e.within(this.lastOverNode.ui.getEl())){
+ this.onNodeOut(e, this.lastOverNode);
+ }
+ delete this.lastOverNode;
+ Ext.getBody().un('mouseover', this.trackExit, this);
+ this.trackingDoc = false;
+ }
+
+ },
+
+ delegateClick : function(e, t){
+ if(this.beforeEvent(e)){
+ if(e.getTarget('input[type=checkbox]', 1)){
+ this.onCheckboxClick(e, this.getNode(e));
+ }else if(e.getTarget('.x-tree-ec-icon', 1)){
+ this.onIconClick(e, this.getNode(e));
+ }else if(this.getNodeTarget(e)){
+ this.onNodeClick(e, this.getNode(e));
+ }
+ }else{
+ this.checkContainerEvent(e, 'click');
+ }
+ },
+
+ delegateDblClick : function(e, t){
+ if(this.beforeEvent(e)){
+ if(this.getNodeTarget(e)){
+ this.onNodeDblClick(e, this.getNode(e));
+ }
+ }else{
+ this.checkContainerEvent(e, 'dblclick');
+ }
+ },
+
+ delegateContextMenu : function(e, t){
+ if(this.beforeEvent(e)){
+ if(this.getNodeTarget(e)){
+ this.onNodeContextMenu(e, this.getNode(e));
+ }
+ }else{
+ this.checkContainerEvent(e, 'contextmenu');
+ }
+ },
+
+ checkContainerEvent: function(e, type){
+ if(this.disabled){
+ e.stopEvent();
+ return false;
+ }
+ this.onContainerEvent(e, type);
+ },
+
+ onContainerEvent: function(e, type){
+ this.tree.fireEvent('container' + type, this.tree, e);
+ },
+
+ onNodeClick : function(e, node){
+ node.ui.onClick(e);
+ },
+
+ onNodeOver : function(e, node){
+ this.lastOverNode = node;
+ node.ui.onOver(e);
+ },
+
+ onNodeOut : function(e, node){
+ node.ui.onOut(e);
+ },
+
+ onIconOver : function(e, node){
+ node.ui.addClass('x-tree-ec-over');
+ },
+
+ onIconOut : function(e, node){
+ node.ui.removeClass('x-tree-ec-over');
+ },
+
+ onIconClick : function(e, node){
+ node.ui.ecClick(e);
+ },
+
+ onCheckboxClick : function(e, node){
+ node.ui.onCheckChange(e);
+ },
+
+ onNodeDblClick : function(e, node){
+ node.ui.onDblClick(e);
+ },
+
+ onNodeContextMenu : function(e, node){
+ node.ui.onContextMenu(e);
+ },
+
+ beforeEvent : function(e){
+ var node = this.getNode(e);
+ if(this.disabled || !node || !node.ui){
+ e.stopEvent();
+ return false;
+ }
+ return true;
+ },
+
+ disable: function(){
+ this.disabled = true;
+ },
+
+ enable: function(){
+ this.disabled = false;
+ }
+};
+Ext.tree.DefaultSelectionModel = Ext.extend(Ext.util.Observable, {
+
+ constructor : function(config){
+ this.selNode = null;
+
+ this.addEvents(
+
+ 'selectionchange',
+
+
+ 'beforeselect'
+ );
+
+ Ext.apply(this, config);
+ Ext.tree.DefaultSelectionModel.superclass.constructor.call(this);
+ },
+
+ init : function(tree){
+ this.tree = tree;
+ tree.mon(tree.getTreeEl(), 'keydown', this.onKeyDown, this);
+ tree.on('click', this.onNodeClick, this);
+ },
+
+ onNodeClick : function(node, e){
+ this.select(node);
+ },
+
+
+ select : function(node, selectNextNode){
+
+ if (!Ext.fly(node.ui.wrap).isVisible() && selectNextNode) {
+ return selectNextNode.call(this, node);
+ }
+ var last = this.selNode;
+ if(node == last){
+ node.ui.onSelectedChange(true);
+ }else if(this.fireEvent('beforeselect', this, node, last) !== false){
+ if(last && last.ui){
+ last.ui.onSelectedChange(false);
+ }
+ this.selNode = node;
+ node.ui.onSelectedChange(true);
+ this.fireEvent('selectionchange', this, node, last);
+ }
+ return node;
+ },
+
+
+ unselect : function(node, silent){
+ if(this.selNode == node){
+ this.clearSelections(silent);
+ }
+ },
+
+
+ clearSelections : function(silent){
+ var n = this.selNode;
+ if(n){
+ n.ui.onSelectedChange(false);
+ this.selNode = null;
+ if(silent !== true){
+ this.fireEvent('selectionchange', this, null);
+ }
+ }
+ return n;
+ },
+
+
+ getSelectedNode : function(){
+ return this.selNode;
+ },
+
+
+ isSelected : function(node){
+ return this.selNode == node;
+ },
+
+
+ selectPrevious : function( s){
+ if(!(s = s || this.selNode || this.lastSelNode)){
+ return null;
+ }
+
+ var ps = s.previousSibling;
+ if(ps){
+ if(!ps.isExpanded() || ps.childNodes.length < 1){
+ return this.select(ps, this.selectPrevious);
+ } else{
+ var lc = ps.lastChild;
+ while(lc && lc.isExpanded() && Ext.fly(lc.ui.wrap).isVisible() && lc.childNodes.length > 0){
+ lc = lc.lastChild;
+ }
+ return this.select(lc, this.selectPrevious);
+ }
+ } else if(s.parentNode && (this.tree.rootVisible || !s.parentNode.isRoot)){
+ return this.select(s.parentNode, this.selectPrevious);
+ }
+ return null;
+ },
+
+
+ selectNext : function( s){
+ if(!(s = s || this.selNode || this.lastSelNode)){
+ return null;
+ }
+
+ if(s.firstChild && s.isExpanded() && Ext.fly(s.ui.wrap).isVisible()){
+ return this.select(s.firstChild, this.selectNext);
+ }else if(s.nextSibling){
+ return this.select(s.nextSibling, this.selectNext);
+ }else if(s.parentNode){
+ var newS = null;
+ s.parentNode.bubble(function(){
+ if(this.nextSibling){
+ newS = this.getOwnerTree().selModel.select(this.nextSibling, this.selectNext);
+ return false;
+ }
+ });
+ return newS;
+ }
+ return null;
+ },
+
+ onKeyDown : function(e){
+ var s = this.selNode || this.lastSelNode;
+
+ var sm = this;
+ if(!s){
+ return;
+ }
+ var k = e.getKey();
+ switch(k){
+ case e.DOWN:
+ e.stopEvent();
+ this.selectNext();
+ break;
+ case e.UP:
+ e.stopEvent();
+ this.selectPrevious();
+ break;
+ case e.RIGHT:
+ e.preventDefault();
+ if(s.hasChildNodes()){
+ if(!s.isExpanded()){
+ s.expand();
+ }else if(s.firstChild){
+ this.select(s.firstChild, e);
+ }
+ }
+ break;
+ case e.LEFT:
+ e.preventDefault();
+ if(s.hasChildNodes() && s.isExpanded()){
+ s.collapse();
+ }else if(s.parentNode && (this.tree.rootVisible || s.parentNode != this.tree.getRootNode())){
+ this.select(s.parentNode, e);
+ }
+ break;
+ };
+ }
+});
+
+
+Ext.tree.MultiSelectionModel = Ext.extend(Ext.util.Observable, {
+
+ constructor : function(config){
+ this.selNodes = [];
+ this.selMap = {};
+ this.addEvents(
+
+ 'selectionchange'
+ );
+ Ext.apply(this, config);
+ Ext.tree.MultiSelectionModel.superclass.constructor.call(this);
+ },
+
+ init : function(tree){
+ this.tree = tree;
+ tree.mon(tree.getTreeEl(), 'keydown', this.onKeyDown, this);
+ tree.on('click', this.onNodeClick, this);
+ },
+
+ onNodeClick : function(node, e){
+ if(e.ctrlKey && this.isSelected(node)){
+ this.unselect(node);
+ }else{
+ this.select(node, e, e.ctrlKey);
+ }
+ },
+
+
+ select : function(node, e, keepExisting){
+ if(keepExisting !== true){
+ this.clearSelections(true);
+ }
+ if(this.isSelected(node)){
+ this.lastSelNode = node;
+ return node;
+ }
+ this.selNodes.push(node);
+ this.selMap[node.id] = node;
+ this.lastSelNode = node;
+ node.ui.onSelectedChange(true);
+ this.fireEvent('selectionchange', this, this.selNodes);
+ return node;
+ },
+
+
+ unselect : function(node){
+ if(this.selMap[node.id]){
+ node.ui.onSelectedChange(false);
+ var sn = this.selNodes;
+ var index = sn.indexOf(node);
+ if(index != -1){
+ this.selNodes.splice(index, 1);
+ }
+ delete this.selMap[node.id];
+ this.fireEvent('selectionchange', this, this.selNodes);
+ }
+ },
+
+
+ clearSelections : function(suppressEvent){
+ var sn = this.selNodes;
+ if(sn.length > 0){
+ for(var i = 0, len = sn.length; i < len; i++){
+ sn[i].ui.onSelectedChange(false);
+ }
+ this.selNodes = [];
+ this.selMap = {};
+ if(suppressEvent !== true){
+ this.fireEvent('selectionchange', this, this.selNodes);
+ }
+ }
+ },
+
+
+ isSelected : function(node){
+ return this.selMap[node.id] ? true : false;
+ },
+
+
+ getSelectedNodes : function(){
+ return this.selNodes.concat([]);
+ },
+
+ onKeyDown : Ext.tree.DefaultSelectionModel.prototype.onKeyDown,
+
+ selectNext : Ext.tree.DefaultSelectionModel.prototype.selectNext,
+
+ selectPrevious : Ext.tree.DefaultSelectionModel.prototype.selectPrevious
+});
+Ext.data.Tree = Ext.extend(Ext.util.Observable, {
+
+ constructor: function(root){
+ this.nodeHash = {};
+
+ this.root = null;
+ if(root){
+ this.setRootNode(root);
+ }
+ this.addEvents(
+
+ "append",
+
+ "remove",
+
+ "move",
+
+ "insert",
+
+ "beforeappend",
+
+ "beforeremove",
+
+ "beforemove",
+
+ "beforeinsert"
+ );
+ Ext.data.Tree.superclass.constructor.call(this);
+ },
+
+
+ pathSeparator: "/",
+
+
+ proxyNodeEvent : function(){
+ return this.fireEvent.apply(this, arguments);
+ },
+
+
+ getRootNode : function(){
+ return this.root;
+ },
+
+
+ setRootNode : function(node){
+ this.root = node;
+ node.ownerTree = this;
+ node.isRoot = true;
+ this.registerNode(node);
+ return node;
+ },
+
+
+ getNodeById : function(id){
+ return this.nodeHash[id];
+ },
+
+
+ registerNode : function(node){
+ this.nodeHash[node.id] = node;
+ },
+
+
+ unregisterNode : function(node){
+ delete this.nodeHash[node.id];
+ },
+
+ toString : function(){
+ return "[Tree"+(this.id?" "+this.id:"")+"]";
+ }
+});
+
+
+Ext.data.Node = Ext.extend(Ext.util.Observable, {
+
+ constructor: function(attributes){
+
+ this.attributes = attributes || {};
+ this.leaf = this.attributes.leaf;
+
+ this.id = this.attributes.id;
+ if(!this.id){
+ this.id = Ext.id(null, "xnode-");
+ this.attributes.id = this.id;
+ }
+
+ this.childNodes = [];
+
+ this.parentNode = null;
+
+ this.firstChild = null;
+
+ this.lastChild = null;
+
+ this.previousSibling = null;
+
+ this.nextSibling = null;
+
+ this.addEvents({
+
+ "append" : true,
+
+ "remove" : true,
+
+ "move" : true,
+
+ "insert" : true,
+
+ "beforeappend" : true,
+
+ "beforeremove" : true,
+
+ "beforemove" : true,
+
+ "beforeinsert" : true
+ });
+ this.listeners = this.attributes.listeners;
+ Ext.data.Node.superclass.constructor.call(this);
+ },
+
+
+ fireEvent : function(evtName){
+
+ if(Ext.data.Node.superclass.fireEvent.apply(this, arguments) === false){
+ return false;
+ }
+
+ var ot = this.getOwnerTree();
+ if(ot){
+ if(ot.proxyNodeEvent.apply(ot, arguments) === false){
+ return false;
+ }
+ }
+ return true;
+ },
+
+
+ isLeaf : function(){
+ return this.leaf === true;
+ },
+
+
+ setFirstChild : function(node){
+ this.firstChild = node;
+ },
+
+
+ setLastChild : function(node){
+ this.lastChild = node;
+ },
+
+
+
+ isLast : function(){
+ return (!this.parentNode ? true : this.parentNode.lastChild == this);
+ },
+
+
+ isFirst : function(){
+ return (!this.parentNode ? true : this.parentNode.firstChild == this);
+ },
+
+
+ hasChildNodes : function(){
+ return !this.isLeaf() && this.childNodes.length > 0;
+ },
+
+
+ isExpandable : function(){
+ return this.attributes.expandable || this.hasChildNodes();
+ },
+
+
+ appendChild : function(node){
+ var multi = false;
+ if(Ext.isArray(node)){
+ multi = node;
+ }else if(arguments.length > 1){
+ multi = arguments;
+ }
+
+ if(multi){
+ for(var i = 0, len = multi.length; i < len; i++) {
+ this.appendChild(multi[i]);
+ }
+ }else{
+ if(this.fireEvent("beforeappend", this.ownerTree, this, node) === false){
+ return false;
+ }
+ var index = this.childNodes.length;
+ var oldParent = node.parentNode;
+
+ if(oldParent){
+ if(node.fireEvent("beforemove", node.getOwnerTree(), node, oldParent, this, index) === false){
+ return false;
+ }
+ oldParent.removeChild(node);
+ }
+ index = this.childNodes.length;
+ if(index === 0){
+ this.setFirstChild(node);
+ }
+ this.childNodes.push(node);
+ node.parentNode = this;
+ var ps = this.childNodes[index-1];
+ if(ps){
+ node.previousSibling = ps;
+ ps.nextSibling = node;
+ }else{
+ node.previousSibling = null;
+ }
+ node.nextSibling = null;
+ this.setLastChild(node);
+ node.setOwnerTree(this.getOwnerTree());
+ this.fireEvent("append", this.ownerTree, this, node, index);
+ if(oldParent){
+ node.fireEvent("move", this.ownerTree, node, oldParent, this, index);
+ }
+ return node;
+ }
+ },
+
+
+ removeChild : function(node, destroy){
+ var index = this.childNodes.indexOf(node);
+ if(index == -1){
+ return false;
+ }
+ if(this.fireEvent("beforeremove", this.ownerTree, this, node) === false){
+ return false;
+ }
+
+
+ this.childNodes.splice(index, 1);
+
+
+ if(node.previousSibling){
+ node.previousSibling.nextSibling = node.nextSibling;
+ }
+ if(node.nextSibling){
+ node.nextSibling.previousSibling = node.previousSibling;
+ }
+
+
+ if(this.firstChild == node){
+ this.setFirstChild(node.nextSibling);
+ }
+ if(this.lastChild == node){
+ this.setLastChild(node.previousSibling);
+ }
+
+ this.fireEvent("remove", this.ownerTree, this, node);
+ if(destroy){
+ node.destroy(true);
+ }else{
+ node.clear();
+ }
+ return node;
+ },
+
+
+ clear : function(destroy){
+
+ this.setOwnerTree(null, destroy);
+ this.parentNode = this.previousSibling = this.nextSibling = null;
+ if(destroy){
+ this.firstChild = this.lastChild = null;
+ }
+ },
+
+
+ destroy : function( silent){
+
+ if(silent === true){
+ this.purgeListeners();
+ this.clear(true);
+ Ext.each(this.childNodes, function(n){
+ n.destroy(true);
+ });
+ this.childNodes = null;
+ }else{
+ this.remove(true);
+ }
+ },
+
+
+ insertBefore : function(node, refNode){
+ if(!refNode){
+ return this.appendChild(node);
+ }
+
+ if(node == refNode){
+ return false;
+ }
+
+ if(this.fireEvent("beforeinsert", this.ownerTree, this, node, refNode) === false){
+ return false;
+ }
+ var index = this.childNodes.indexOf(refNode);
+ var oldParent = node.parentNode;
+ var refIndex = index;
+
+
+ if(oldParent == this && this.childNodes.indexOf(node) < index){
+ refIndex--;
+ }
+
+
+ if(oldParent){
+ if(node.fireEvent("beforemove", node.getOwnerTree(), node, oldParent, this, index, refNode) === false){
+ return false;
+ }
+ oldParent.removeChild(node);
+ }
+ if(refIndex === 0){
+ this.setFirstChild(node);
+ }
+ this.childNodes.splice(refIndex, 0, node);
+ node.parentNode = this;
+ var ps = this.childNodes[refIndex-1];
+ if(ps){
+ node.previousSibling = ps;
+ ps.nextSibling = node;
+ }else{
+ node.previousSibling = null;
+ }
+ node.nextSibling = refNode;
+ refNode.previousSibling = node;
+ node.setOwnerTree(this.getOwnerTree());
+ this.fireEvent("insert", this.ownerTree, this, node, refNode);
+ if(oldParent){
+ node.fireEvent("move", this.ownerTree, node, oldParent, this, refIndex, refNode);
+ }
+ return node;
+ },
+
+
+ remove : function(destroy){
+ if (this.parentNode) {
+ this.parentNode.removeChild(this, destroy);
+ }
+ return this;
+ },
+
+
+ removeAll : function(destroy){
+ var cn = this.childNodes,
+ n;
+ while((n = cn[0])){
+ this.removeChild(n, destroy);
+ }
+ return this;
+ },
+
+
+ item : function(index){
+ return this.childNodes[index];
+ },
+
+
+ replaceChild : function(newChild, oldChild){
+ var s = oldChild ? oldChild.nextSibling : null;
+ this.removeChild(oldChild);
+ this.insertBefore(newChild, s);
+ return oldChild;
+ },
+
+
+ indexOf : function(child){
+ return this.childNodes.indexOf(child);
+ },
+
+
+ getOwnerTree : function(){
+
+ if(!this.ownerTree){
+ var p = this;
+ while(p){
+ if(p.ownerTree){
+ this.ownerTree = p.ownerTree;
+ break;
+ }
+ p = p.parentNode;
+ }
+ }
+ return this.ownerTree;
+ },
+
+
+ getDepth : function(){
+ var depth = 0;
+ var p = this;
+ while(p.parentNode){
+ ++depth;
+ p = p.parentNode;
+ }
+ return depth;
+ },
+
+
+ setOwnerTree : function(tree, destroy){
+
+ if(tree != this.ownerTree){
+ if(this.ownerTree){
+ this.ownerTree.unregisterNode(this);
+ }
+ this.ownerTree = tree;
+
+ if(destroy !== true){
+ Ext.each(this.childNodes, function(n){
+ n.setOwnerTree(tree);
+ });
+ }
+ if(tree){
+ tree.registerNode(this);
+ }
+ }
+ },
+
+
+ setId: function(id){
+ if(id !== this.id){
+ var t = this.ownerTree;
+ if(t){
+ t.unregisterNode(this);
+ }
+ this.id = this.attributes.id = id;
+ if(t){
+ t.registerNode(this);
+ }
+ this.onIdChange(id);
+ }
+ },
+
+
+ onIdChange: Ext.emptyFn,
+
+
+ getPath : function(attr){
+ attr = attr || "id";
+ var p = this.parentNode;
+ var b = [this.attributes[attr]];
+ while(p){
+ b.unshift(p.attributes[attr]);
+ p = p.parentNode;
+ }
+ var sep = this.getOwnerTree().pathSeparator;
+ return sep + b.join(sep);
+ },
+
+
+ bubble : function(fn, scope, args){
+ var p = this;
+ while(p){
+ if(fn.apply(scope || p, args || [p]) === false){
+ break;
+ }
+ p = p.parentNode;
+ }
+ },
+
+
+ cascade : function(fn, scope, args){
+ if(fn.apply(scope || this, args || [this]) !== false){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ cs[i].cascade(fn, scope, args);
+ }
+ }
+ },
+
+
+ eachChild : function(fn, scope, args){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ if(fn.apply(scope || cs[i], args || [cs[i]]) === false){
+ break;
+ }
+ }
+ },
+
+
+ findChild : function(attribute, value, deep){
+ return this.findChildBy(function(){
+ return this.attributes[attribute] == value;
+ }, null, deep);
+ },
+
+
+ findChildBy : function(fn, scope, deep){
+ var cs = this.childNodes,
+ len = cs.length,
+ i = 0,
+ n,
+ res;
+ for(; i < len; i++){
+ n = cs[i];
+ if(fn.call(scope || n, n) === true){
+ return n;
+ }else if (deep){
+ res = n.findChildBy(fn, scope, deep);
+ if(res != null){
+ return res;
+ }
+ }
+
+ }
+ return null;
+ },
+
+
+ sort : function(fn, scope){
+ var cs = this.childNodes;
+ var len = cs.length;
+ if(len > 0){
+ var sortFn = scope ? function(){fn.apply(scope, arguments);} : fn;
+ cs.sort(sortFn);
+ for(var i = 0; i < len; i++){
+ var n = cs[i];
+ n.previousSibling = cs[i-1];
+ n.nextSibling = cs[i+1];
+ if(i === 0){
+ this.setFirstChild(n);
+ }
+ if(i == len-1){
+ this.setLastChild(n);
+ }
+ }
+ }
+ },
+
+
+ contains : function(node){
+ return node.isAncestor(this);
+ },
+
+
+ isAncestor : function(node){
+ var p = this.parentNode;
+ while(p){
+ if(p == node){
+ return true;
+ }
+ p = p.parentNode;
+ }
+ return false;
+ },
+
+ toString : function(){
+ return "[Node"+(this.id?" "+this.id:"")+"]";
+ }
+});
+Ext.tree.TreeNode = Ext.extend(Ext.data.Node, {
+
+ constructor : function(attributes){
+ attributes = attributes || {};
+ if(Ext.isString(attributes)){
+ attributes = {text: attributes};
+ }
+ this.childrenRendered = false;
+ this.rendered = false;
+ Ext.tree.TreeNode.superclass.constructor.call(this, attributes);
+ this.expanded = attributes.expanded === true;
+ this.isTarget = attributes.isTarget !== false;
+ this.draggable = attributes.draggable !== false && attributes.allowDrag !== false;
+ this.allowChildren = attributes.allowChildren !== false && attributes.allowDrop !== false;
+
+
+ this.text = attributes.text;
+
+ this.disabled = attributes.disabled === true;
+
+ this.hidden = attributes.hidden === true;
+
+ this.addEvents(
+
+ 'textchange',
+
+ 'beforeexpand',
+
+ 'beforecollapse',
+
+ 'expand',
+
+ 'disabledchange',
+
+ 'collapse',
+
+ 'beforeclick',
+
+ 'click',
+
+ 'checkchange',
+
+ 'beforedblclick',
+
+ 'dblclick',
+
+ 'contextmenu',
+
+ 'beforechildrenrendered'
+ );
+
+ var uiClass = this.attributes.uiProvider || this.defaultUI || Ext.tree.TreeNodeUI;
+
+
+ this.ui = new uiClass(this);
+ },
+
+ preventHScroll : true,
+
+ isExpanded : function(){
+ return this.expanded;
+ },
+
+
+ getUI : function(){
+ return this.ui;
+ },
+
+ getLoader : function(){
+ var owner;
+ return this.loader || ((owner = this.getOwnerTree()) && owner.loader ? owner.loader : (this.loader = new Ext.tree.TreeLoader()));
+ },
+
+
+ setFirstChild : function(node){
+ var of = this.firstChild;
+ Ext.tree.TreeNode.superclass.setFirstChild.call(this, node);
+ if(this.childrenRendered && of && node != of){
+ of.renderIndent(true, true);
+ }
+ if(this.rendered){
+ this.renderIndent(true, true);
+ }
+ },
+
+
+ setLastChild : function(node){
+ var ol = this.lastChild;
+ Ext.tree.TreeNode.superclass.setLastChild.call(this, node);
+ if(this.childrenRendered && ol && node != ol){
+ ol.renderIndent(true, true);
+ }
+ if(this.rendered){
+ this.renderIndent(true, true);
+ }
+ },
+
+
+
+ appendChild : function(n){
+ if(!n.render && !Ext.isArray(n)){
+ n = this.getLoader().createNode(n);
+ }
+ var node = Ext.tree.TreeNode.superclass.appendChild.call(this, n);
+ if(node && this.childrenRendered){
+ node.render();
+ }
+ this.ui.updateExpandIcon();
+ return node;
+ },
+
+
+ removeChild : function(node, destroy){
+ this.ownerTree.getSelectionModel().unselect(node);
+ Ext.tree.TreeNode.superclass.removeChild.apply(this, arguments);
+
+ if(!destroy){
+ var rendered = node.ui.rendered;
+
+ if(rendered){
+ node.ui.remove();
+ }
+ if(rendered && this.childNodes.length < 1){
+ this.collapse(false, false);
+ }else{
+ this.ui.updateExpandIcon();
+ }
+ if(!this.firstChild && !this.isHiddenRoot()){
+ this.childrenRendered = false;
+ }
+ }
+ return node;
+ },
+
+
+ insertBefore : function(node, refNode){
+ if(!node.render){
+ node = this.getLoader().createNode(node);
+ }
+ var newNode = Ext.tree.TreeNode.superclass.insertBefore.call(this, node, refNode);
+ if(newNode && refNode && this.childrenRendered){
+ node.render();
+ }
+ this.ui.updateExpandIcon();
+ return newNode;
+ },
+
+
+ setText : function(text){
+ var oldText = this.text;
+ this.text = this.attributes.text = text;
+ if(this.rendered){
+ this.ui.onTextChange(this, text, oldText);
+ }
+ this.fireEvent('textchange', this, text, oldText);
+ },
+
+
+ setIconCls : function(cls){
+ var old = this.attributes.iconCls;
+ this.attributes.iconCls = cls;
+ if(this.rendered){
+ this.ui.onIconClsChange(this, cls, old);
+ }
+ },
+
+
+ setTooltip : function(tip, title){
+ this.attributes.qtip = tip;
+ this.attributes.qtipTitle = title;
+ if(this.rendered){
+ this.ui.onTipChange(this, tip, title);
+ }
+ },
+
+
+ setIcon : function(icon){
+ this.attributes.icon = icon;
+ if(this.rendered){
+ this.ui.onIconChange(this, icon);
+ }
+ },
+
+
+ setHref : function(href, target){
+ this.attributes.href = href;
+ this.attributes.hrefTarget = target;
+ if(this.rendered){
+ this.ui.onHrefChange(this, href, target);
+ }
+ },
+
+
+ setCls : function(cls){
+ var old = this.attributes.cls;
+ this.attributes.cls = cls;
+ if(this.rendered){
+ this.ui.onClsChange(this, cls, old);
+ }
+ },
+
+
+ select : function(){
+ var t = this.getOwnerTree();
+ if(t){
+ t.getSelectionModel().select(this);
+ }
+ },
+
+
+ unselect : function(silent){
+ var t = this.getOwnerTree();
+ if(t){
+ t.getSelectionModel().unselect(this, silent);
+ }
+ },
+
+
+ isSelected : function(){
+ var t = this.getOwnerTree();
+ return t ? t.getSelectionModel().isSelected(this) : false;
+ },
+
+
+ expand : function(deep, anim, callback, scope){
+ if(!this.expanded){
+ if(this.fireEvent('beforeexpand', this, deep, anim) === false){
+ return;
+ }
+ if(!this.childrenRendered){
+ this.renderChildren();
+ }
+ this.expanded = true;
+ if(!this.isHiddenRoot() && (this.getOwnerTree().animate && anim !== false) || anim){
+ this.ui.animExpand(function(){
+ this.fireEvent('expand', this);
+ this.runCallback(callback, scope || this, [this]);
+ if(deep === true){
+ this.expandChildNodes(true, true);
+ }
+ }.createDelegate(this));
+ return;
+ }else{
+ this.ui.expand();
+ this.fireEvent('expand', this);
+ this.runCallback(callback, scope || this, [this]);
+ }
+ }else{
+ this.runCallback(callback, scope || this, [this]);
+ }
+ if(deep === true){
+ this.expandChildNodes(true);
+ }
+ },
+
+ runCallback : function(cb, scope, args){
+ if(Ext.isFunction(cb)){
+ cb.apply(scope, args);
+ }
+ },
+
+ isHiddenRoot : function(){
+ return this.isRoot && !this.getOwnerTree().rootVisible;
+ },
+
+
+ collapse : function(deep, anim, callback, scope){
+ if(this.expanded && !this.isHiddenRoot()){
+ if(this.fireEvent('beforecollapse', this, deep, anim) === false){
+ return;
+ }
+ this.expanded = false;
+ if((this.getOwnerTree().animate && anim !== false) || anim){
+ this.ui.animCollapse(function(){
+ this.fireEvent('collapse', this);
+ this.runCallback(callback, scope || this, [this]);
+ if(deep === true){
+ this.collapseChildNodes(true);
+ }
+ }.createDelegate(this));
+ return;
+ }else{
+ this.ui.collapse();
+ this.fireEvent('collapse', this);
+ this.runCallback(callback, scope || this, [this]);
+ }
+ }else if(!this.expanded){
+ this.runCallback(callback, scope || this, [this]);
+ }
+ if(deep === true){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ cs[i].collapse(true, false);
+ }
+ }
+ },
+
+
+ delayedExpand : function(delay){
+ if(!this.expandProcId){
+ this.expandProcId = this.expand.defer(delay, this);
+ }
+ },
+
+
+ cancelExpand : function(){
+ if(this.expandProcId){
+ clearTimeout(this.expandProcId);
+ }
+ this.expandProcId = false;
+ },
+
+
+ toggle : function(){
+ if(this.expanded){
+ this.collapse();
+ }else{
+ this.expand();
+ }
+ },
+
+
+ ensureVisible : function(callback, scope){
+ var tree = this.getOwnerTree();
+ tree.expandPath(this.parentNode ? this.parentNode.getPath() : this.getPath(), false, function(){
+ var node = tree.getNodeById(this.id);
+ tree.getTreeEl().scrollChildIntoView(node.ui.anchor);
+ this.runCallback(callback, scope || this, [this]);
+ }.createDelegate(this));
+ },
+
+
+ expandChildNodes : function(deep, anim) {
+ var cs = this.childNodes,
+ i,
+ len = cs.length;
+ for (i = 0; i < len; i++) {
+ cs[i].expand(deep, anim);
+ }
+ },
+
+
+ collapseChildNodes : function(deep){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ cs[i].collapse(deep);
+ }
+ },
+
+
+ disable : function(){
+ this.disabled = true;
+ this.unselect();
+ if(this.rendered && this.ui.onDisableChange){
+ this.ui.onDisableChange(this, true);
+ }
+ this.fireEvent('disabledchange', this, true);
+ },
+
+
+ enable : function(){
+ this.disabled = false;
+ if(this.rendered && this.ui.onDisableChange){
+ this.ui.onDisableChange(this, false);
+ }
+ this.fireEvent('disabledchange', this, false);
+ },
+
+
+ renderChildren : function(suppressEvent){
+ if(suppressEvent !== false){
+ this.fireEvent('beforechildrenrendered', this);
+ }
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].render(true);
+ }
+ this.childrenRendered = true;
+ },
+
+
+ sort : function(fn, scope){
+ Ext.tree.TreeNode.superclass.sort.apply(this, arguments);
+ if(this.childrenRendered){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].render(true);
+ }
+ }
+ },
+
+
+ render : function(bulkRender){
+ this.ui.render(bulkRender);
+ if(!this.rendered){
+
+ this.getOwnerTree().registerNode(this);
+ this.rendered = true;
+ if(this.expanded){
+ this.expanded = false;
+ this.expand(false, false);
+ }
+ }
+ },
+
+
+ renderIndent : function(deep, refresh){
+ if(refresh){
+ this.ui.childIndent = null;
+ }
+ this.ui.renderIndent();
+ if(deep === true && this.childrenRendered){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].renderIndent(true, refresh);
+ }
+ }
+ },
+
+ beginUpdate : function(){
+ this.childrenRendered = false;
+ },
+
+ endUpdate : function(){
+ if(this.expanded && this.rendered){
+ this.renderChildren();
+ }
+ },
+
+
+ destroy : function(silent){
+ if(silent === true){
+ this.unselect(true);
+ }
+ Ext.tree.TreeNode.superclass.destroy.call(this, silent);
+ Ext.destroy(this.ui, this.loader);
+ this.ui = this.loader = null;
+ },
+
+
+ onIdChange : function(id){
+ this.ui.onIdChange(id);
+ }
+});
+
+Ext.tree.TreePanel.nodeTypes.node = Ext.tree.TreeNode;
+ Ext.tree.AsyncTreeNode = function(config){
+ this.loaded = config && config.loaded === true;
+ this.loading = false;
+ Ext.tree.AsyncTreeNode.superclass.constructor.apply(this, arguments);
+
+ this.addEvents('beforeload', 'load');
+
+
+};
+Ext.extend(Ext.tree.AsyncTreeNode, Ext.tree.TreeNode, {
+ expand : function(deep, anim, callback, scope){
+ if(this.loading){
+ var timer;
+ var f = function(){
+ if(!this.loading){
+ clearInterval(timer);
+ this.expand(deep, anim, callback, scope);
+ }
+ }.createDelegate(this);
+ timer = setInterval(f, 200);
+ return;
+ }
+ if(!this.loaded){
+ if(this.fireEvent("beforeload", this) === false){
+ return;
+ }
+ this.loading = true;
+ this.ui.beforeLoad(this);
+ var loader = this.loader || this.attributes.loader || this.getOwnerTree().getLoader();
+ if(loader){
+ loader.load(this, this.loadComplete.createDelegate(this, [deep, anim, callback, scope]), this);
+ return;
+ }
+ }
+ Ext.tree.AsyncTreeNode.superclass.expand.call(this, deep, anim, callback, scope);
+ },
+
+
+ isLoading : function(){
+ return this.loading;
+ },
+
+ loadComplete : function(deep, anim, callback, scope){
+ this.loading = false;
+ this.loaded = true;
+ this.ui.afterLoad(this);
+ this.fireEvent("load", this);
+ this.expand(deep, anim, callback, scope);
+ },
+
+
+ isLoaded : function(){
+ return this.loaded;
+ },
+
+ hasChildNodes : function(){
+ if(!this.isLeaf() && !this.loaded){
+ return true;
+ }else{
+ return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this);
+ }
+ },
+
+
+ reload : function(callback, scope){
+ this.collapse(false, false);
+ while(this.firstChild){
+ this.removeChild(this.firstChild).destroy();
+ }
+ this.childrenRendered = false;
+ this.loaded = false;
+ if(this.isHiddenRoot()){
+ this.expanded = false;
+ }
+ this.expand(false, false, callback, scope);
+ }
+});
+
+Ext.tree.TreePanel.nodeTypes.async = Ext.tree.AsyncTreeNode;
+Ext.tree.TreeNodeUI = Ext.extend(Object, {
+
+ constructor : function(node){
+ Ext.apply(this, {
+ node: node,
+ rendered: false,
+ animating: false,
+ wasLeaf: true,
+ ecc: 'x-tree-ec-icon x-tree-elbow',
+ emptyIcon: Ext.BLANK_IMAGE_URL
+ });
+ },
+
+
+ removeChild : function(node){
+ if(this.rendered){
+ this.ctNode.removeChild(node.ui.getEl());
+ }
+ },
+
+
+ beforeLoad : function(){
+ this.addClass("x-tree-node-loading");
+ },
+
+
+ afterLoad : function(){
+ this.removeClass("x-tree-node-loading");
+ },
+
+
+ onTextChange : function(node, text, oldText){
+ if(this.rendered){
+ this.textNode.innerHTML = text;
+ }
+ },
+
+
+ onIconClsChange : function(node, cls, oldCls){
+ if(this.rendered){
+ Ext.fly(this.iconNode).replaceClass(oldCls, cls);
+ }
+ },
+
+
+ onIconChange : function(node, icon){
+ if(this.rendered){
+
+ var empty = Ext.isEmpty(icon);
+ this.iconNode.src = empty ? this.emptyIcon : icon;
+ Ext.fly(this.iconNode)[empty ? 'removeClass' : 'addClass']('x-tree-node-inline-icon');
+ }
+ },
+
+
+ onTipChange : function(node, tip, title){
+ if(this.rendered){
+ var hasTitle = Ext.isDefined(title);
+ if(this.textNode.setAttributeNS){
+ this.textNode.setAttributeNS("ext", "qtip", tip);
+ if(hasTitle){
+ this.textNode.setAttributeNS("ext", "qtitle", title);
+ }
+ }else{
+ this.textNode.setAttribute("ext:qtip", tip);
+ if(hasTitle){
+ this.textNode.setAttribute("ext:qtitle", title);
+ }
+ }
+ }
+ },
+
+
+ onHrefChange : function(node, href, target){
+ if(this.rendered){
+ this.anchor.href = this.getHref(href);
+ if(Ext.isDefined(target)){
+ this.anchor.target = target;
+ }
+ }
+ },
+
+
+ onClsChange : function(node, cls, oldCls){
+ if(this.rendered){
+ Ext.fly(this.elNode).replaceClass(oldCls, cls);
+ }
+ },
+
+
+ onDisableChange : function(node, state){
+ this.disabled = state;
+ if (this.checkbox) {
+ this.checkbox.disabled = state;
+ }
+ this[state ? 'addClass' : 'removeClass']('x-tree-node-disabled');
+ },
+
+
+ onSelectedChange : function(state){
+ if(state){
+ this.focus();
+ this.addClass("x-tree-selected");
+ }else{
+
+ this.removeClass("x-tree-selected");
+ }
+ },
+
+
+ onMove : function(tree, node, oldParent, newParent, index, refNode){
+ this.childIndent = null;
+ if(this.rendered){
+ var targetNode = newParent.ui.getContainer();
+ if(!targetNode){
+ this.holder = document.createElement("div");
+ this.holder.appendChild(this.wrap);
+ return;
+ }
+ var insertBefore = refNode ? refNode.ui.getEl() : null;
+ if(insertBefore){
+ targetNode.insertBefore(this.wrap, insertBefore);
+ }else{
+ targetNode.appendChild(this.wrap);
+ }
+ this.node.renderIndent(true, oldParent != newParent);
+ }
+ },
+
+
+ addClass : function(cls){
+ if(this.elNode){
+ Ext.fly(this.elNode).addClass(cls);
+ }
+ },
+
+
+ removeClass : function(cls){
+ if(this.elNode){
+ Ext.fly(this.elNode).removeClass(cls);
+ }
+ },
+
+
+ remove : function(){
+ if(this.rendered){
+ this.holder = document.createElement("div");
+ this.holder.appendChild(this.wrap);
+ }
+ },
+
+
+ fireEvent : function(){
+ return this.node.fireEvent.apply(this.node, arguments);
+ },
+
+
+ initEvents : function(){
+ this.node.on("move", this.onMove, this);
+
+ if(this.node.disabled){
+ this.onDisableChange(this.node, true);
+ }
+ if(this.node.hidden){
+ this.hide();
+ }
+ var ot = this.node.getOwnerTree();
+ var dd = ot.enableDD || ot.enableDrag || ot.enableDrop;
+ if(dd && (!this.node.isRoot || ot.rootVisible)){
+ Ext.dd.Registry.register(this.elNode, {
+ node: this.node,
+ handles: this.getDDHandles(),
+ isHandle: false
+ });
+ }
+ },
+
+
+ getDDHandles : function(){
+ return [this.iconNode, this.textNode, this.elNode];
+ },
+
+
+ hide : function(){
+ this.node.hidden = true;
+ if(this.wrap){
+ this.wrap.style.display = "none";
+ }
+ },
+
+
+ show : function(){
+ this.node.hidden = false;
+ if(this.wrap){
+ this.wrap.style.display = "";
+ }
+ },
+
+
+ onContextMenu : function(e){
+ if (this.node.hasListener("contextmenu") || this.node.getOwnerTree().hasListener("contextmenu")) {
+ e.preventDefault();
+ this.focus();
+ this.fireEvent("contextmenu", this.node, e);
+ }
+ },
+
+
+ onClick : function(e){
+ if(this.dropping){
+ e.stopEvent();
+ return;
+ }
+ if(this.fireEvent("beforeclick", this.node, e) !== false){
+ var a = e.getTarget('a');
+ if(!this.disabled && this.node.attributes.href && a){
+ this.fireEvent("click", this.node, e);
+ return;
+ }else if(a && e.ctrlKey){
+ e.stopEvent();
+ }
+ e.preventDefault();
+ if(this.disabled){
+ return;
+ }
+
+ if(this.node.attributes.singleClickExpand && !this.animating && this.node.isExpandable()){
+ this.node.toggle();
+ }
+
+ this.fireEvent("click", this.node, e);
+ }else{
+ e.stopEvent();
+ }
+ },
+
+
+ onDblClick : function(e){
+ e.preventDefault();
+ if(this.disabled){
+ return;
+ }
+ if(this.fireEvent("beforedblclick", this.node, e) !== false){
+ if(this.checkbox){
+ this.toggleCheck();
+ }
+ if(!this.animating && this.node.isExpandable()){
+ this.node.toggle();
+ }
+ this.fireEvent("dblclick", this.node, e);
+ }
+ },
+
+ onOver : function(e){
+ this.addClass('x-tree-node-over');
+ },
+
+ onOut : function(e){
+ this.removeClass('x-tree-node-over');
+ },
+
+
+ onCheckChange : function(){
+ var checked = this.checkbox.checked;
+
+ this.checkbox.defaultChecked = checked;
+ this.node.attributes.checked = checked;
+ this.fireEvent('checkchange', this.node, checked);
+ },
+
+
+ ecClick : function(e){
+ if(!this.animating && this.node.isExpandable()){
+ this.node.toggle();
+ }
+ },
+
+
+ startDrop : function(){
+ this.dropping = true;
+ },
+
+
+ endDrop : function(){
+ setTimeout(function(){
+ this.dropping = false;
+ }.createDelegate(this), 50);
+ },
+
+
+ expand : function(){
+ this.updateExpandIcon();
+ this.ctNode.style.display = "";
+ },
+
+
+ focus : function(){
+ if(!this.node.preventHScroll){
+ try{this.anchor.focus();
+ }catch(e){}
+ }else{
+ try{
+ var noscroll = this.node.getOwnerTree().getTreeEl().dom;
+ var l = noscroll.scrollLeft;
+ this.anchor.focus();
+ noscroll.scrollLeft = l;
+ }catch(e){}
+ }
+ },
+
+
+ toggleCheck : function(value){
+ var cb = this.checkbox;
+ if(cb){
+ cb.checked = (value === undefined ? !cb.checked : value);
+ this.onCheckChange();
+ }
+ },
+
+
+ blur : function(){
+ try{
+ this.anchor.blur();
+ }catch(e){}
+ },
+
+
+ animExpand : function(callback){
+ var ct = Ext.get(this.ctNode);
+ ct.stopFx();
+ if(!this.node.isExpandable()){
+ this.updateExpandIcon();
+ this.ctNode.style.display = "";
+ Ext.callback(callback);
+ return;
+ }
+ this.animating = true;
+ this.updateExpandIcon();
+
+ ct.slideIn('t', {
+ callback : function(){
+ this.animating = false;
+ Ext.callback(callback);
+ },
+ scope: this,
+ duration: this.node.ownerTree.duration || .25
+ });
+ },
+
+
+ highlight : function(){
+ var tree = this.node.getOwnerTree();
+ Ext.fly(this.wrap).highlight(
+ tree.hlColor || "C3DAF9",
+ {endColor: tree.hlBaseColor}
+ );
+ },
+
+
+ collapse : function(){
+ this.updateExpandIcon();
+ this.ctNode.style.display = "none";
+ },
+
+
+ animCollapse : function(callback){
+ var ct = Ext.get(this.ctNode);
+ ct.enableDisplayMode('block');
+ ct.stopFx();
+
+ this.animating = true;
+ this.updateExpandIcon();
+
+ ct.slideOut('t', {
+ callback : function(){
+ this.animating = false;
+ Ext.callback(callback);
+ },
+ scope: this,
+ duration: this.node.ownerTree.duration || .25
+ });
+ },
+
+
+ getContainer : function(){
+ return this.ctNode;
+ },
+
+
+ getEl : function(){
+ return this.wrap;
+ },
+
+
+ appendDDGhost : function(ghostNode){
+ ghostNode.appendChild(this.elNode.cloneNode(true));
+ },
+
+
+ getDDRepairXY : function(){
+ return Ext.lib.Dom.getXY(this.iconNode);
+ },
+
+
+ onRender : function(){
+ this.render();
+ },
+
+
+ render : function(bulkRender){
+ var n = this.node, a = n.attributes;
+ var targetNode = n.parentNode ?
+ n.parentNode.ui.getContainer() : n.ownerTree.innerCt.dom;
+
+ if(!this.rendered){
+ this.rendered = true;
+
+ this.renderElements(n, a, targetNode, bulkRender);
+
+ if(a.qtip){
+ this.onTipChange(n, a.qtip, a.qtipTitle);
+ }else if(a.qtipCfg){
+ a.qtipCfg.target = Ext.id(this.textNode);
+ Ext.QuickTips.register(a.qtipCfg);
+ }
+ this.initEvents();
+ if(!this.node.expanded){
+ this.updateExpandIcon(true);
+ }
+ }else{
+ if(bulkRender === true) {
+ targetNode.appendChild(this.wrap);
+ }
+ }
+ },
+
+
+ renderElements : function(n, a, targetNode, bulkRender){
+
+ this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : '';
+
+ var cb = Ext.isBoolean(a.checked),
+ nel,
+ href = this.getHref(a.href),
+ buf = ['<li class="x-tree-node"><div ext:tree-node-id="',n.id,'" class="x-tree-node-el x-tree-node-leaf x-unselectable ', a.cls,'" unselectable="on">',
+ '<span class="x-tree-node-indent">',this.indentMarkup,"</span>",
+ '<img alt="" src="', this.emptyIcon, '" class="x-tree-ec-icon x-tree-elbow" />',
+ '<img alt="" src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon',(a.icon ? " x-tree-node-inline-icon" : ""),(a.iconCls ? " "+a.iconCls : ""),'" unselectable="on" />',
+ cb ? ('<input class="x-tree-node-cb" type="checkbox" ' + (a.checked ? 'checked="checked" />' : '/>')) : '',
+ '<a hidefocus="on" class="x-tree-node-anchor" href="',href,'" tabIndex="1" ',
+ a.hrefTarget ? ' target="'+a.hrefTarget+'"' : "", '><span unselectable="on">',n.text,"</span></a></div>",
+ '<ul class="x-tree-node-ct" style="display:none;"></ul>',
+ "</li>"].join('');
+
+ if(bulkRender !== true && n.nextSibling && (nel = n.nextSibling.ui.getEl())){
+ this.wrap = Ext.DomHelper.insertHtml("beforeBegin", nel, buf);
+ }else{
+ this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf);
+ }
+
+ this.elNode = this.wrap.childNodes[0];
+ this.ctNode = this.wrap.childNodes[1];
+ var cs = this.elNode.childNodes;
+ this.indentNode = cs[0];
+ this.ecNode = cs[1];
+ this.iconNode = cs[2];
+ var index = 3;
+ if(cb){
+ this.checkbox = cs[3];
+
+ this.checkbox.defaultChecked = this.checkbox.checked;
+ index++;
+ }
+ this.anchor = cs[index];
+ this.textNode = cs[index].firstChild;
+ },
+
+
+ getHref : function(href){
+ return Ext.isEmpty(href) ? (Ext.isGecko ? '' : '#') : href;
+ },
+
+
+ getAnchor : function(){
+ return this.anchor;
+ },
+
+
+ getTextEl : function(){
+ return this.textNode;
+ },
+
+
+ getIconEl : function(){
+ return this.iconNode;
+ },
+
+
+ isChecked : function(){
+ return this.checkbox ? this.checkbox.checked : false;
+ },
+
+
+ updateExpandIcon : function(){
+ if(this.rendered){
+ var n = this.node,
+ c1,
+ c2,
+ cls = n.isLast() ? "x-tree-elbow-end" : "x-tree-elbow",
+ hasChild = n.hasChildNodes();
+ if(hasChild || n.attributes.expandable){
+ if(n.expanded){
+ cls += "-minus";
+ c1 = "x-tree-node-collapsed";
+ c2 = "x-tree-node-expanded";
+ }else{
+ cls += "-plus";
+ c1 = "x-tree-node-expanded";
+ c2 = "x-tree-node-collapsed";
+ }
+ if(this.wasLeaf){
+ this.removeClass("x-tree-node-leaf");
+ this.wasLeaf = false;
+ }
+ if(this.c1 != c1 || this.c2 != c2){
+ Ext.fly(this.elNode).replaceClass(c1, c2);
+ this.c1 = c1; this.c2 = c2;
+ }
+ }else{
+ if(!this.wasLeaf){
+ Ext.fly(this.elNode).replaceClass("x-tree-node-expanded", "x-tree-node-collapsed");
+ delete this.c1;
+ delete this.c2;
+ this.wasLeaf = true;
+ }
+ }
+ var ecc = "x-tree-ec-icon "+cls;
+ if(this.ecc != ecc){
+ this.ecNode.className = ecc;
+ this.ecc = ecc;
+ }
+ }
+ },
+
+
+ onIdChange: function(id){
+ if(this.rendered){
+ this.elNode.setAttribute('ext:tree-node-id', id);
+ }
+ },
+
+
+ getChildIndent : function(){
+ if(!this.childIndent){
+ var buf = [],
+ p = this.node;
+ while(p){
+ if(!p.isRoot || (p.isRoot && p.ownerTree.rootVisible)){
+ if(!p.isLast()) {
+ buf.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-elbow-line" />');
+ } else {
+ buf.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-icon" />');
+ }
+ }
+ p = p.parentNode;
+ }
+ this.childIndent = buf.join("");
+ }
+ return this.childIndent;
+ },
+
+
+ renderIndent : function(){
+ if(this.rendered){
+ var indent = "",
+ p = this.node.parentNode;
+ if(p){
+ indent = p.ui.getChildIndent();
+ }
+ if(this.indentMarkup != indent){
+ this.indentNode.innerHTML = indent;
+ this.indentMarkup = indent;
+ }
+ this.updateExpandIcon();
+ }
+ },
+
+ destroy : function(){
+ if(this.elNode){
+ Ext.dd.Registry.unregister(this.elNode.id);
+ }
+
+ Ext.each(['textnode', 'anchor', 'checkbox', 'indentNode', 'ecNode', 'iconNode', 'elNode', 'ctNode', 'wrap', 'holder'], function(el){
+ if(this[el]){
+ Ext.fly(this[el]).remove();
+ delete this[el];
+ }
+ }, this);
+ delete this.node;
+ }
+});
+
+
+Ext.tree.RootTreeNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
+
+ render : function(){
+ if(!this.rendered){
+ var targetNode = this.node.ownerTree.innerCt.dom;
+ this.node.expanded = true;
+ targetNode.innerHTML = '<div class="x-tree-root-node"></div>';
+ this.wrap = this.ctNode = targetNode.firstChild;
+ }
+ },
+ collapse : Ext.emptyFn,
+ expand : Ext.emptyFn
+});
+Ext.tree.TreeLoader = function(config){
+ this.baseParams = {};
+ Ext.apply(this, config);
+
+ this.addEvents(
+
+ "beforeload",
+
+ "load",
+
+ "loadexception"
+ );
+ Ext.tree.TreeLoader.superclass.constructor.call(this);
+ if(Ext.isString(this.paramOrder)){
+ this.paramOrder = this.paramOrder.split(/[\s,|]/);
+ }
+};
+
+Ext.extend(Ext.tree.TreeLoader, Ext.util.Observable, {
+
+
+
+
+
+
+
+ uiProviders : {},
+
+
+ clearOnLoad : true,
+
+
+ paramOrder: undefined,
+
+
+ paramsAsHash: false,
+
+
+ nodeParameter: 'node',
+
+
+ directFn : undefined,
+
+
+ load : function(node, callback, scope){
+ if(this.clearOnLoad){
+ while(node.firstChild){
+ node.removeChild(node.firstChild);
+ }
+ }
+ if(this.doPreload(node)){
+ this.runCallback(callback, scope || node, [node]);
+ }else if(this.directFn || this.dataUrl || this.url){
+ this.requestData(node, callback, scope || node);
+ }
+ },
+
+ doPreload : function(node){
+ if(node.attributes.children){
+ if(node.childNodes.length < 1){
+ var cs = node.attributes.children;
+ node.beginUpdate();
+ for(var i = 0, len = cs.length; i < len; i++){
+ var cn = node.appendChild(this.createNode(cs[i]));
+ if(this.preloadChildren){
+ this.doPreload(cn);
+ }
+ }
+ node.endUpdate();
+ }
+ return true;
+ }
+ return false;
+ },
+
+ getParams: function(node){
+ var bp = Ext.apply({}, this.baseParams),
+ np = this.nodeParameter,
+ po = this.paramOrder;
+
+ np && (bp[ np ] = node.id);
+
+ if(this.directFn){
+ var buf = [node.id];
+ if(po){
+
+ if(np && po.indexOf(np) > -1){
+ buf = [];
+ }
+
+ for(var i = 0, len = po.length; i < len; i++){
+ buf.push(bp[ po[i] ]);
+ }
+ }else if(this.paramsAsHash){
+ buf = [bp];
+ }
+ return buf;
+ }else{
+ return bp;
+ }
+ },
+
+ requestData : function(node, callback, scope){
+ if(this.fireEvent("beforeload", this, node, callback) !== false){
+ if(this.directFn){
+ var args = this.getParams(node);
+ args.push(this.processDirectResponse.createDelegate(this, [{callback: callback, node: node, scope: scope}], true));
+ this.directFn.apply(window, args);
+ }else{
+ this.transId = Ext.Ajax.request({
+ method:this.requestMethod,
+ url: this.dataUrl||this.url,
+ success: this.handleResponse,
+ failure: this.handleFailure,
+ scope: this,
+ argument: {callback: callback, node: node, scope: scope},
+ params: this.getParams(node)
+ });
+ }
+ }else{
+
+
+ this.runCallback(callback, scope || node, []);
+ }
+ },
+
+ processDirectResponse: function(result, response, args){
+ if(response.status){
+ this.handleResponse({
+ responseData: Ext.isArray(result) ? result : null,
+ responseText: result,
+ argument: args
+ });
+ }else{
+ this.handleFailure({
+ argument: args
+ });
+ }
+ },
+
+
+ runCallback: function(cb, scope, args){
+ if(Ext.isFunction(cb)){
+ cb.apply(scope, args);
+ }
+ },
+
+ isLoading : function(){
+ return !!this.transId;
+ },
+
+ abort : function(){
+ if(this.isLoading()){
+ Ext.Ajax.abort(this.transId);
+ }
+ },
+
+
+ createNode : function(attr){
+
+ if(this.baseAttrs){
+ Ext.applyIf(attr, this.baseAttrs);
+ }
+ if(this.applyLoader !== false && !attr.loader){
+ attr.loader = this;
+ }
+ if(Ext.isString(attr.uiProvider)){
+ attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);
+ }
+ if(attr.nodeType){
+ return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr);
+ }else{
+ return attr.leaf ?
+ new Ext.tree.TreeNode(attr) :
+ new Ext.tree.AsyncTreeNode(attr);
+ }
+ },
+
+ processResponse : function(response, node, callback, scope){
+ var json = response.responseText;
+ try {
+ var o = response.responseData || Ext.decode(json);
+ node.beginUpdate();
+ for(var i = 0, len = o.length; i < len; i++){
+ var n = this.createNode(o[i]);
+ if(n){
+ node.appendChild(n);
+ }
+ }
+ node.endUpdate();
+ this.runCallback(callback, scope || node, [node]);
+ }catch(e){
+ this.handleFailure(response);
+ }
+ },
+
+ handleResponse : function(response){
+ this.transId = false;
+ var a = response.argument;
+ this.processResponse(response, a.node, a.callback, a.scope);
+ this.fireEvent("load", this, a.node, response);
+ },
+
+ handleFailure : function(response){
+ this.transId = false;
+ var a = response.argument;
+ this.fireEvent("loadexception", this, a.node, response);
+ this.runCallback(a.callback, a.scope || a.node, [a.node]);
+ },
+
+ destroy : function(){
+ this.abort();
+ this.purgeListeners();
+ }
+});
+Ext.tree.TreeFilter = function(tree, config){
+ this.tree = tree;
+ this.filtered = {};
+ Ext.apply(this, config);
+};
+
+Ext.tree.TreeFilter.prototype = {
+ clearBlank:false,
+ reverse:false,
+ autoClear:false,
+ remove:false,
+
+
+ filter : function(value, attr, startNode){
+ attr = attr || "text";
+ var f;
+ if(typeof value == "string"){
+ var vlen = value.length;
+
+ if(vlen == 0 && this.clearBlank){
+ this.clear();
+ return;
+ }
+ value = value.toLowerCase();
+ f = function(n){
+ return n.attributes[attr].substr(0, vlen).toLowerCase() == value;
+ };
+ }else if(value.exec){
+ f = function(n){
+ return value.test(n.attributes[attr]);
+ };
+ }else{
+ throw 'Illegal filter type, must be string or regex';
+ }
+ this.filterBy(f, null, startNode);
+ },
+
+
+ filterBy : function(fn, scope, startNode){
+ startNode = startNode || this.tree.root;
+ if(this.autoClear){
+ this.clear();
+ }
+ var af = this.filtered, rv = this.reverse;
+ var f = function(n){
+ if(n == startNode){
+ return true;
+ }
+ if(af[n.id]){
+ return false;
+ }
+ var m = fn.call(scope || n, n);
+ if(!m || rv){
+ af[n.id] = n;
+ n.ui.hide();
+ return false;
+ }
+ return true;
+ };
+ startNode.cascade(f);
+ if(this.remove){
+ for(var id in af){
+ if(typeof id != "function"){
+ var n = af[id];
+ if(n && n.parentNode){
+ n.parentNode.removeChild(n);
+ }
+ }
+ }
+ }
+ },
+
+
+ clear : function(){
+ var t = this.tree;
+ var af = this.filtered;
+ for(var id in af){
+ if(typeof id != "function"){
+ var n = af[id];
+ if(n){
+ n.ui.show();
+ }
+ }
+ }
+ this.filtered = {};
+ }
+};
+
+Ext.tree.TreeSorter = Ext.extend(Object, {
+
+ constructor: function(tree, config){
+
+
+
+
+
+
+
+ Ext.apply(this, config);
+ tree.on({
+ scope: this,
+ beforechildrenrendered: this.doSort,
+ append: this.updateSort,
+ insert: this.updateSort,
+ textchange: this.updateSortParent
+ });
+
+ var desc = this.dir && this.dir.toLowerCase() == 'desc',
+ prop = this.property || 'text',
+ sortType = this.sortType,
+ folderSort = this.folderSort,
+ caseSensitive = this.caseSensitive === true,
+ leafAttr = this.leafAttr || 'leaf';
+
+ if(Ext.isString(sortType)){
+ sortType = Ext.data.SortTypes[sortType];
+ }
+ this.sortFn = function(n1, n2){
+ var attr1 = n1.attributes,
+ attr2 = n2.attributes;
+
+ if(folderSort){
+ if(attr1[leafAttr] && !attr2[leafAttr]){
+ return 1;
+ }
+ if(!attr1[leafAttr] && attr2[leafAttr]){
+ return -1;
+ }
+ }
+ var prop1 = attr1[prop],
+ prop2 = attr2[prop],
+ v1 = sortType ? sortType(prop1, n1) : (caseSensitive ? prop1 : prop1.toUpperCase()),
+ v2 = sortType ? sortType(prop2, n2) : (caseSensitive ? prop2 : prop2.toUpperCase());
+
+ if(v1 < v2){
+ return desc ? 1 : -1;
+ }else if(v1 > v2){
+ return desc ? -1 : 1;
+ }
+ return 0;
+ };
+ },
+
+ doSort : function(node){
+ node.sort(this.sortFn);
+ },
+
+ updateSort : function(tree, node){
+ if(node.childrenRendered){
+ this.doSort.defer(1, this, [node]);
+ }
+ },
+
+ updateSortParent : function(node){
+ var p = node.parentNode;
+ if(p && p.childrenRendered){
+ this.doSort.defer(1, this, [p]);
+ }
+ }
+});
+
+if(Ext.dd.DropZone){
+
+Ext.tree.TreeDropZone = function(tree, config){
+
+ this.allowParentInsert = config.allowParentInsert || false;
+
+ this.allowContainerDrop = config.allowContainerDrop || false;
+
+ this.appendOnly = config.appendOnly || false;
+
+ Ext.tree.TreeDropZone.superclass.constructor.call(this, tree.getTreeEl(), config);
+
+ this.tree = tree;
+
+ this.dragOverData = {};
+
+ this.lastInsertClass = "x-tree-no-status";
+};
+
+Ext.extend(Ext.tree.TreeDropZone, Ext.dd.DropZone, {
+
+ ddGroup : "TreeDD",
+
+
+ expandDelay : 1000,
+
+
+ expandNode : function(node){
+ if(node.hasChildNodes() && !node.isExpanded()){
+ node.expand(false, null, this.triggerCacheRefresh.createDelegate(this));
+ }
+ },
+
+
+ queueExpand : function(node){
+ this.expandProcId = this.expandNode.defer(this.expandDelay, this, [node]);
+ },
+
+
+ cancelExpand : function(){
+ if(this.expandProcId){
+ clearTimeout(this.expandProcId);
+ this.expandProcId = false;
+ }
+ },
+
+
+ isValidDropPoint : function(n, pt, dd, e, data){
+ if(!n || !data){ return false; }
+ var targetNode = n.node;
+ var dropNode = data.node;
+
+ if(!(targetNode && targetNode.isTarget && pt)){
+ return false;
+ }
+ if(pt == "append" && targetNode.allowChildren === false){
+ return false;
+ }
+ if((pt == "above" || pt == "below") && (targetNode.parentNode && targetNode.parentNode.allowChildren === false)){
+ return false;
+ }
+ if(dropNode && (targetNode == dropNode || dropNode.contains(targetNode))){
+ return false;
+ }
+
+ var overEvent = this.dragOverData;
+ overEvent.tree = this.tree;
+ overEvent.target = targetNode;
+ overEvent.data = data;
+ overEvent.point = pt;
+ overEvent.source = dd;
+ overEvent.rawEvent = e;
+ overEvent.dropNode = dropNode;
+ overEvent.cancel = false;
+ var result = this.tree.fireEvent("nodedragover", overEvent);
+ return overEvent.cancel === false && result !== false;
+ },
+
+
+ getDropPoint : function(e, n, dd){
+ var tn = n.node;
+ if(tn.isRoot){
+ return tn.allowChildren !== false ? "append" : false;
+ }
+ var dragEl = n.ddel;
+ var t = Ext.lib.Dom.getY(dragEl), b = t + dragEl.offsetHeight;
+ var y = Ext.lib.Event.getPageY(e);
+ var noAppend = tn.allowChildren === false || tn.isLeaf();
+ if(this.appendOnly || tn.parentNode.allowChildren === false){
+ return noAppend ? false : "append";
+ }
+ var noBelow = false;
+ if(!this.allowParentInsert){
+ noBelow = tn.hasChildNodes() && tn.isExpanded();
+ }
+ var q = (b - t) / (noAppend ? 2 : 3);
+ if(y >= t && y < (t + q)){
+ return "above";
+ }else if(!noBelow && (noAppend || y >= b-q && y <= b)){
+ return "below";
+ }else{
+ return "append";
+ }
+ },
+
+
+ onNodeEnter : function(n, dd, e, data){
+ this.cancelExpand();
+ },
+
+ onContainerOver : function(dd, e, data) {
+ if (this.allowContainerDrop && this.isValidDropPoint({ ddel: this.tree.getRootNode().ui.elNode, node: this.tree.getRootNode() }, "append", dd, e, data)) {
+ return this.dropAllowed;
+ }
+ return this.dropNotAllowed;
+ },
+
+
+ onNodeOver : function(n, dd, e, data){
+ var pt = this.getDropPoint(e, n, dd);
+ var node = n.node;
+
+
+ if(!this.expandProcId && pt == "append" && node.hasChildNodes() && !n.node.isExpanded()){
+ this.queueExpand(node);
+ }else if(pt != "append"){
+ this.cancelExpand();
+ }
+
+
+ var returnCls = this.dropNotAllowed;
+ if(this.isValidDropPoint(n, pt, dd, e, data)){
+ if(pt){
+ var el = n.ddel;
+ var cls;
+ if(pt == "above"){
+ returnCls = n.node.isFirst() ? "x-tree-drop-ok-above" : "x-tree-drop-ok-between";
+ cls = "x-tree-drag-insert-above";
+ }else if(pt == "below"){
+ returnCls = n.node.isLast() ? "x-tree-drop-ok-below" : "x-tree-drop-ok-between";
+ cls = "x-tree-drag-insert-below";
+ }else{
+ returnCls = "x-tree-drop-ok-append";
+ cls = "x-tree-drag-append";
+ }
+ if(this.lastInsertClass != cls){
+ Ext.fly(el).replaceClass(this.lastInsertClass, cls);
+ this.lastInsertClass = cls;
+ }
+ }
+ }
+ return returnCls;
+ },
+
+
+ onNodeOut : function(n, dd, e, data){
+ this.cancelExpand();
+ this.removeDropIndicators(n);
+ },
+
+
+ onNodeDrop : function(n, dd, e, data){
+ var point = this.getDropPoint(e, n, dd);
+ var targetNode = n.node;
+ targetNode.ui.startDrop();
+ if(!this.isValidDropPoint(n, point, dd, e, data)){
+ targetNode.ui.endDrop();
+ return false;
+ }
+
+ var dropNode = data.node || (dd.getTreeNode ? dd.getTreeNode(data, targetNode, point, e) : null);
+ return this.processDrop(targetNode, data, point, dd, e, dropNode);
+ },
+
+ onContainerDrop : function(dd, e, data){
+ if (this.allowContainerDrop && this.isValidDropPoint({ ddel: this.tree.getRootNode().ui.elNode, node: this.tree.getRootNode() }, "append", dd, e, data)) {
+ var targetNode = this.tree.getRootNode();
+ targetNode.ui.startDrop();
+ var dropNode = data.node || (dd.getTreeNode ? dd.getTreeNode(data, targetNode, 'append', e) : null);
+ return this.processDrop(targetNode, data, 'append', dd, e, dropNode);
+ }
+ return false;
+ },
+
+
+ processDrop: function(target, data, point, dd, e, dropNode){
+ var dropEvent = {
+ tree : this.tree,
+ target: target,
+ data: data,
+ point: point,
+ source: dd,
+ rawEvent: e,
+ dropNode: dropNode,
+ cancel: !dropNode,
+ dropStatus: false
+ };
+ var retval = this.tree.fireEvent("beforenodedrop", dropEvent);
+ if(retval === false || dropEvent.cancel === true || !dropEvent.dropNode){
+ target.ui.endDrop();
+ return dropEvent.dropStatus;
+ }
+
+ target = dropEvent.target;
+ if(point == 'append' && !target.isExpanded()){
+ target.expand(false, null, function(){
+ this.completeDrop(dropEvent);
+ }.createDelegate(this));
+ }else{
+ this.completeDrop(dropEvent);
+ }
+ return true;
+ },
+
+
+ completeDrop : function(de){
+ var ns = de.dropNode, p = de.point, t = de.target;
+ if(!Ext.isArray(ns)){
+ ns = [ns];
+ }
+ var n;
+ for(var i = 0, len = ns.length; i < len; i++){
+ n = ns[i];
+ if(p == "above"){
+ t.parentNode.insertBefore(n, t);
+ }else if(p == "below"){
+ t.parentNode.insertBefore(n, t.nextSibling);
+ }else{
+ t.appendChild(n);
+ }
+ }
+ n.ui.focus();
+ if(Ext.enableFx && this.tree.hlDrop){
+ n.ui.highlight();
+ }
+ t.ui.endDrop();
+ this.tree.fireEvent("nodedrop", de);
+ },
+
+
+ afterNodeMoved : function(dd, data, e, targetNode, dropNode){
+ if(Ext.enableFx && this.tree.hlDrop){
+ dropNode.ui.focus();
+ dropNode.ui.highlight();
+ }
+ this.tree.fireEvent("nodedrop", this.tree, targetNode, data, dd, e);
+ },
+
+
+ getTree : function(){
+ return this.tree;
+ },
+
+
+ removeDropIndicators : function(n){
+ if(n && n.ddel){
+ var el = n.ddel;
+ Ext.fly(el).removeClass([
+ "x-tree-drag-insert-above",
+ "x-tree-drag-insert-below",
+ "x-tree-drag-append"]);
+ this.lastInsertClass = "_noclass";
+ }
+ },
+
+
+ beforeDragDrop : function(target, e, id){
+ this.cancelExpand();
+ return true;
+ },
+
+
+ afterRepair : function(data){
+ if(data && Ext.enableFx){
+ data.node.ui.highlight();
+ }
+ this.hideProxy();
+ }
+});
+
+}
+if(Ext.dd.DragZone){
+Ext.tree.TreeDragZone = function(tree, config){
+ Ext.tree.TreeDragZone.superclass.constructor.call(this, tree.innerCt, config);
+
+ this.tree = tree;
+};
+
+Ext.extend(Ext.tree.TreeDragZone, Ext.dd.DragZone, {
+
+ ddGroup : "TreeDD",
+
+
+ onBeforeDrag : function(data, e){
+ var n = data.node;
+ return n && n.draggable && !n.disabled;
+ },
+
+
+ onInitDrag : function(e){
+ var data = this.dragData;
+ this.tree.getSelectionModel().select(data.node);
+ this.tree.eventModel.disable();
+ this.proxy.update("");
+ data.node.ui.appendDDGhost(this.proxy.ghost.dom);
+ this.tree.fireEvent("startdrag", this.tree, data.node, e);
+ },
+
+
+ getRepairXY : function(e, data){
+ return data.node.ui.getDDRepairXY();
+ },
+
+
+ onEndDrag : function(data, e){
+ this.tree.eventModel.enable.defer(100, this.tree.eventModel);
+ this.tree.fireEvent("enddrag", this.tree, data.node, e);
+ },
+
+
+ onValidDrop : function(dd, e, id){
+ this.tree.fireEvent("dragdrop", this.tree, this.dragData.node, dd, e);
+ this.hideProxy();
+ },
+
+
+ beforeInvalidDrop : function(e, id){
+
+ var sm = this.tree.getSelectionModel();
+ sm.clearSelections();
+ sm.select(this.dragData.node);
+ },
+
+
+ afterRepair : function(){
+ if (Ext.enableFx && this.tree.hlDrop) {
+ Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor || "c3daf9");
+ }
+ this.dragging = false;
+ }
+});
+}
+Ext.tree.TreeEditor = function(tree, fc, config){
+ fc = fc || {};
+ var field = fc.events ? fc : new Ext.form.TextField(fc);
+
+ Ext.tree.TreeEditor.superclass.constructor.call(this, field, config);
+
+ this.tree = tree;
+
+ if(!tree.rendered){
+ tree.on('render', this.initEditor, this);
+ }else{
+ this.initEditor(tree);
+ }
+};
+
+Ext.extend(Ext.tree.TreeEditor, Ext.Editor, {
+
+ alignment: "l-l",
+
+ autoSize: false,
+
+ hideEl : false,
+
+ cls: "x-small-editor x-tree-editor",
+
+ shim:false,
+
+ shadow:"frame",
+
+ maxWidth: 250,
+
+ editDelay : 350,
+
+ initEditor : function(tree){
+ tree.on({
+ scope : this,
+ beforeclick: this.beforeNodeClick,
+ dblclick : this.onNodeDblClick
+ });
+
+ this.on({
+ scope : this,
+ complete : this.updateNode,
+ beforestartedit: this.fitToTree,
+ specialkey : this.onSpecialKey
+ });
+
+ this.on('startedit', this.bindScroll, this, {delay:10});
+ },
+
+
+ fitToTree : function(ed, el){
+ var td = this.tree.getTreeEl().dom, nd = el.dom;
+ if(td.scrollLeft > nd.offsetLeft){
+ td.scrollLeft = nd.offsetLeft;
+ }
+ var w = Math.min(
+ this.maxWidth,
+ (td.clientWidth > 20 ? td.clientWidth : td.offsetWidth) - Math.max(0, nd.offsetLeft-td.scrollLeft) - 5);
+ this.setSize(w, '');
+ },
+
+
+ triggerEdit : function(node, defer){
+ this.completeEdit();
+ if(node.attributes.editable !== false){
+
+ this.editNode = node;
+ if(this.tree.autoScroll){
+ Ext.fly(node.ui.getEl()).scrollIntoView(this.tree.body);
+ }
+ var value = node.text || '';
+ if (!Ext.isGecko && Ext.isEmpty(node.text)){
+ node.setText('&#160;');
+ }
+ this.autoEditTimer = this.startEdit.defer(this.editDelay, this, [node.ui.textNode, value]);
+ return false;
+ }
+ },
+
+
+ bindScroll : function(){
+ this.tree.getTreeEl().on('scroll', this.cancelEdit, this);
+ },
+
+
+ beforeNodeClick : function(node, e){
+ clearTimeout(this.autoEditTimer);
+ if(this.tree.getSelectionModel().isSelected(node)){
+ e.stopEvent();
+ return this.triggerEdit(node);
+ }
+ },
+
+ onNodeDblClick : function(node, e){
+ clearTimeout(this.autoEditTimer);
+ },
+
+
+ updateNode : function(ed, value){
+ this.tree.getTreeEl().un('scroll', this.cancelEdit, this);
+ this.editNode.setText(value);
+ },
+
+
+ onHide : function(){
+ Ext.tree.TreeEditor.superclass.onHide.call(this);
+ if(this.editNode){
+ this.editNode.ui.focus.defer(50, this.editNode.ui);
+ }
+ },
+
+
+ onSpecialKey : function(field, e){
+ var k = e.getKey();
+ if(k == e.ESC){
+ e.stopEvent();
+ this.cancelEdit();
+ }else if(k == e.ENTER && !e.hasModifier()){
+ e.stopEvent();
+ this.completeEdit();
+ }
+ },
+
+ onDestroy : function(){
+ clearTimeout(this.autoEditTimer);
+ Ext.tree.TreeEditor.superclass.onDestroy.call(this);
+ var tree = this.tree;
+ tree.un('beforeclick', this.beforeNodeClick, this);
+ tree.un('dblclick', this.onNodeDblClick, this);
+ }
+});
+
+var swfobject = function() {
+
+ var UNDEF = "undefined",
+ OBJECT = "object",
+ SHOCKWAVE_FLASH = "Shockwave Flash",
+ SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
+ FLASH_MIME_TYPE = "application/x-shockwave-flash",
+ EXPRESS_INSTALL_ID = "SWFObjectExprInst",
+ ON_READY_STATE_CHANGE = "onreadystatechange",
+
+ win = window,
+ doc = document,
+ nav = navigator,
+
+ plugin = false,
+ domLoadFnArr = [main],
+ regObjArr = [],
+ objIdArr = [],
+ listenersArr = [],
+ storedAltContent,
+ storedAltContentId,
+ storedCallbackFn,
+ storedCallbackObj,
+ isDomLoaded = false,
+ isExpressInstallActive = false,
+ dynamicStylesheet,
+ dynamicStylesheetMedia,
+ autoHideShow = true,
+
+
+ ua = function() {
+ var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
+ u = nav.userAgent.toLowerCase(),
+ p = nav.platform.toLowerCase(),
+ windows = p ? (/win/).test(p) : /win/.test(u),
+ mac = p ? (/mac/).test(p) : /mac/.test(u),
+ webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false,
+ ie = !+"\v1",
+ playerVersion = [0,0,0],
+ d = null;
+ if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
+ d = nav.plugins[SHOCKWAVE_FLASH].description;
+ if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) {
+ plugin = true;
+ ie = false;
+ d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
+ playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
+ playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
+ playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0;
+ }
+ }
+ else if (typeof win.ActiveXObject != UNDEF) {
+ try {
+ var a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
+ if (a) {
+ d = a.GetVariable("$version");
+ if (d) {
+ ie = true;
+ d = d.split(" ")[1].split(",");
+ playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
+ }
+ }
+ }
+ catch(e) {}
+ }
+ return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac };
+ }(),
+
+
+ onDomLoad = function() {
+ if (!ua.w3) { return; }
+ if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) {
+ callDomLoadFunctions();
+ }
+ if (!isDomLoaded) {
+ if (typeof doc.addEventListener != UNDEF) {
+ doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false);
+ }
+ if (ua.ie && ua.win) {
+ doc.attachEvent(ON_READY_STATE_CHANGE, function() {
+ if (doc.readyState == "complete") {
+ doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee);
+ callDomLoadFunctions();
+ }
+ });
+ if (win == top) {
+ (function(){
+ if (isDomLoaded) { return; }
+ try {
+ doc.documentElement.doScroll("left");
+ }
+ catch(e) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+ callDomLoadFunctions();
+ })();
+ }
+ }
+ if (ua.wk) {
+ (function(){
+ if (isDomLoaded) { return; }
+ if (!(/loaded|complete/).test(doc.readyState)) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+ callDomLoadFunctions();
+ })();
+ }
+ addLoadEvent(callDomLoadFunctions);
+ }
+ }();
+
+ function callDomLoadFunctions() {
+ if (isDomLoaded) { return; }
+ try {
+ var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span"));
+ t.parentNode.removeChild(t);
+ }
+ catch (e) { return; }
+ isDomLoaded = true;
+ var dl = domLoadFnArr.length;
+ for (var i = 0; i < dl; i++) {
+ domLoadFnArr[i]();
+ }
+ }
+
+ function addDomLoadEvent(fn) {
+ if (isDomLoaded) {
+ fn();
+ }
+ else {
+ domLoadFnArr[domLoadFnArr.length] = fn;
+ }
+ }
+
+
+ function addLoadEvent(fn) {
+ if (typeof win.addEventListener != UNDEF) {
+ win.addEventListener("load", fn, false);
+ }
+ else if (typeof doc.addEventListener != UNDEF) {
+ doc.addEventListener("load", fn, false);
+ }
+ else if (typeof win.attachEvent != UNDEF) {
+ addListener(win, "onload", fn);
+ }
+ else if (typeof win.onload == "function") {
+ var fnOld = win.onload;
+ win.onload = function() {
+ fnOld();
+ fn();
+ };
+ }
+ else {
+ win.onload = fn;
+ }
+ }
+
+
+ function main() {
+ //~ if (plugin) {
+ //~ testPlayerVersion();
+ //~ }
+ //~ else {
+ matchVersions();
+ //~ }
+ }
+
+
+ function testPlayerVersion() {
+ var b = doc.getElementsByTagName("body")[0];
+ var o = createElement(OBJECT);
+ o.setAttribute("type", FLASH_MIME_TYPE);
+ var t = b.appendChild(o);
+ if (t) {
+ var counter = 0;
+ (function(){
+ if (typeof t.GetVariable != UNDEF) {
+ var d = t.GetVariable("$version");
+ if (d) {
+ d = d.split(" ")[1].split(",");
+ ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
+ }
+ }
+ else if (counter < 10) {
+ counter++;
+ setTimeout(arguments.callee, 10);
+ return;
+ }
+ b.removeChild(o);
+ t = null;
+ matchVersions();
+ })();
+ }
+ else {
+ matchVersions();
+ }
+ }
+
+
+ function matchVersions() {
+ var rl = regObjArr.length;
+ if (rl > 0) {
+ for (var i = 0; i < rl; i++) {
+ var id = regObjArr[i].id;
+ var cb = regObjArr[i].callbackFn;
+ var cbObj = {success:false, id:id};
+ if (ua.pv[0] > 0) {
+ var obj = getElementById(id);
+ if (obj) {
+ if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) {
+ setVisibility(id, true);
+ if (cb) {
+ cbObj.success = true;
+ cbObj.ref = getObjectById(id);
+ cb(cbObj);
+ }
+ }
+ else if (regObjArr[i].expressInstall && canExpressInstall()) {
+ var att = {};
+ att.data = regObjArr[i].expressInstall;
+ att.width = obj.getAttribute("width") || "0";
+ att.height = obj.getAttribute("height") || "0";
+ if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); }
+ if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); }
+
+ var par = {};
+ var p = obj.getElementsByTagName("param");
+ var pl = p.length;
+ for (var j = 0; j < pl; j++) {
+ if (p[j].getAttribute("name").toLowerCase() != "movie") {
+ par[p[j].getAttribute("name")] = p[j].getAttribute("value");
+ }
+ }
+ showExpressInstall(att, par, id, cb);
+ }
+ else {
+ displayAltContent(obj);
+ if (cb) { cb(cbObj); }
+ }
+ }
+ }
+ else {
+ setVisibility(id, true);
+ if (cb) {
+ var o = getObjectById(id);
+ if (o && typeof o.SetVariable != UNDEF) {
+ cbObj.success = true;
+ cbObj.ref = o;
+ }
+ cb(cbObj);
+ }
+ }
+ }
+ }
+ }
+
+ function getObjectById(objectIdStr) {
+ var r = null;
+ var o = getElementById(objectIdStr);
+ if (o && o.nodeName == "OBJECT") {
+ if (typeof o.SetVariable != UNDEF) {
+ r = o;
+ }
+ else {
+ var n = o.getElementsByTagName(OBJECT)[0];
+ if (n) {
+ r = n;
+ }
+ }
+ }
+ return r;
+ }
+
+
+ function canExpressInstall() {
+ return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312);
+ }
+
+
+ function showExpressInstall(att, par, replaceElemIdStr, callbackFn) {
+ isExpressInstallActive = true;
+ storedCallbackFn = callbackFn || null;
+ storedCallbackObj = {success:false, id:replaceElemIdStr};
+ var obj = getElementById(replaceElemIdStr);
+ if (obj) {
+ if (obj.nodeName == "OBJECT") {
+ storedAltContent = abstractAltContent(obj);
+ storedAltContentId = null;
+ }
+ else {
+ storedAltContent = obj;
+ storedAltContentId = replaceElemIdStr;
+ }
+ att.id = EXPRESS_INSTALL_ID;
+ if (typeof att.width == UNDEF || (!(/%$/).test(att.width) && parseInt(att.width, 10) < 310)) {
+ att.width = "310";
+ }
+
+ if (typeof att.height == UNDEF || (!(/%$/).test(att.height) && parseInt(att.height, 10) < 137)) {
+ att.height = "137";
+ }
+ doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
+ var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
+ fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title;
+ if (typeof par.flashvars != UNDEF) {
+ par.flashvars += "&" + fv;
+ }
+ else {
+ par.flashvars = fv;
+ }
+
+
+ if (ua.ie && ua.win && obj.readyState != 4) {
+ var newObj = createElement("div");
+ replaceElemIdStr += "SWFObjectNew";
+ newObj.setAttribute("id", replaceElemIdStr);
+ obj.parentNode.insertBefore(newObj, obj);
+ obj.style.display = "none";
+ (function(){
+ if (obj.readyState == 4) {
+ obj.parentNode.removeChild(obj);
+ }
+ else {
+ setTimeout(arguments.callee, 10);
+ }
+ })();
+ }
+ createSWF(att, par, replaceElemIdStr);
+ }
+ }
+
+
+ function displayAltContent(obj) {
+ if (ua.ie && ua.win && obj.readyState != 4) {
+
+
+ var el = createElement("div");
+ obj.parentNode.insertBefore(el, obj);
+ el.parentNode.replaceChild(abstractAltContent(obj), el);
+ obj.style.display = "none";
+ (function(){
+ if (obj.readyState == 4) {
+ obj.parentNode.removeChild(obj);
+ }
+ else {
+ setTimeout(arguments.callee, 10);
+ }
+ })();
+ }
+ else {
+ obj.parentNode.replaceChild(abstractAltContent(obj), obj);
+ }
+ }
+
+ function abstractAltContent(obj) {
+ var ac = createElement("div");
+ if (ua.win && ua.ie) {
+ ac.innerHTML = obj.innerHTML;
+ }
+ else {
+ var nestedObj = obj.getElementsByTagName(OBJECT)[0];
+ if (nestedObj) {
+ var c = nestedObj.childNodes;
+ if (c) {
+ var cl = c.length;
+ for (var i = 0; i < cl; i++) {
+ if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
+ ac.appendChild(c[i].cloneNode(true));
+ }
+ }
+ }
+ }
+ }
+ return ac;
+ }
+
+
+ function createSWF(attObj, parObj, id) {
+ var r, el = getElementById(id);
+ if (ua.wk && ua.wk < 312) { return r; }
+ if (el) {
+ if (typeof attObj.id == UNDEF) {
+ attObj.id = id;
+ }
+ if (ua.ie && ua.win) {
+ var att = "";
+ for (var i in attObj) {
+ if (attObj[i] != Object.prototype[i]) {
+ if (i.toLowerCase() == "data") {
+ parObj.movie = attObj[i];
+ }
+ else if (i.toLowerCase() == "styleclass") {
+ att += ' class="' + attObj[i] + '"';
+ }
+ else if (i.toLowerCase() != "classid") {
+ att += ' ' + i + '="' + attObj[i] + '"';
+ }
+ }
+ }
+ var par = "";
+ for (var j in parObj) {
+ if (parObj[j] != Object.prototype[j]) {
+ par += '<param name="' + j + '" value="' + parObj[j] + '" />';
+ }
+ }
+ el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
+ objIdArr[objIdArr.length] = attObj.id;
+ r = getElementById(attObj.id);
+ }
+ else {
+ var o = createElement(OBJECT);
+ o.setAttribute("type", FLASH_MIME_TYPE);
+ for (var m in attObj) {
+ if (attObj[m] != Object.prototype[m]) {
+ if (m.toLowerCase() == "styleclass") {
+ o.setAttribute("class", attObj[m]);
+ }
+ else if (m.toLowerCase() != "classid") {
+ o.setAttribute(m, attObj[m]);
+ }
+ }
+ }
+ for (var n in parObj) {
+ if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") {
+ createObjParam(o, n, parObj[n]);
+ }
+ }
+ el.parentNode.replaceChild(o, el);
+ r = o;
+ }
+ }
+ return r;
+ }
+
+ function createObjParam(el, pName, pValue) {
+ var p = createElement("param");
+ p.setAttribute("name", pName);
+ p.setAttribute("value", pValue);
+ el.appendChild(p);
+ }
+
+
+ function removeSWF(id) {
+ var obj = getElementById(id);
+ if (obj && obj.nodeName == "OBJECT") {
+ if (ua.ie && ua.win) {
+ obj.style.display = "none";
+ (function(){
+ if (obj.readyState == 4) {
+ removeObjectInIE(id);
+ }
+ else {
+ setTimeout(arguments.callee, 10);
+ }
+ })();
+ }
+ else {
+ obj.parentNode.removeChild(obj);
+ }
+ }
+ }
+
+ function removeObjectInIE(id) {
+ var obj = getElementById(id);
+ if (obj) {
+ for (var i in obj) {
+ if (typeof obj[i] == "function") {
+ obj[i] = null;
+ }
+ }
+ obj.parentNode.removeChild(obj);
+ }
+ }
+
+
+ function getElementById(id) {
+ var el = null;
+ try {
+ el = doc.getElementById(id);
+ }
+ catch (e) {}
+ return el;
+ }
+
+ function createElement(el) {
+ return doc.createElement(el);
+ }
+
+
+ function addListener(target, eventType, fn) {
+ target.attachEvent(eventType, fn);
+ listenersArr[listenersArr.length] = [target, eventType, fn];
+ }
+
+
+ function hasPlayerVersion(rv) {
+ var pv = ua.pv, v = rv.split(".");
+ v[0] = parseInt(v[0], 10);
+ v[1] = parseInt(v[1], 10) || 0;
+ v[2] = parseInt(v[2], 10) || 0;
+ return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
+ }
+
+
+ function createCSS(sel, decl, media, newStyle) {
+ if (ua.ie && ua.mac) { return; }
+ var h = doc.getElementsByTagName("head")[0];
+ if (!h) { return; }
+ var m = (media && typeof media == "string") ? media : "screen";
+ if (newStyle) {
+ dynamicStylesheet = null;
+ dynamicStylesheetMedia = null;
+ }
+ if (!dynamicStylesheet || dynamicStylesheetMedia != m) {
+
+ var s = createElement("style");
+ s.setAttribute("type", "text/css");
+ s.setAttribute("media", m);
+ dynamicStylesheet = h.appendChild(s);
+ if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
+ dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1];
+ }
+ dynamicStylesheetMedia = m;
+ }
+
+ if (ua.ie && ua.win) {
+ if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) {
+ dynamicStylesheet.addRule(sel, decl);
+ }
+ }
+ else {
+ if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) {
+ dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
+ }
+ }
+ }
+
+ function setVisibility(id, isVisible) {
+ if (!autoHideShow) { return; }
+ var v = isVisible ? "visible" : "hidden";
+ if (isDomLoaded && getElementById(id)) {
+ getElementById(id).style.visibility = v;
+ }
+ else {
+ createCSS("#" + id, "visibility:" + v);
+ }
+ }
+
+
+ function urlEncodeIfNecessary(s) {
+ var regex = /[\\\"<>\.;]/;
+ var hasBadChars = regex.exec(s) != null;
+ return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s;
+ }
+
+
+ var cleanup = function() {
+ if (ua.ie && ua.win) {
+ window.attachEvent("onunload", function() {
+
+ var ll = listenersArr.length;
+ for (var i = 0; i < ll; i++) {
+ listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
+ }
+
+ var il = objIdArr.length;
+ for (var j = 0; j < il; j++) {
+ removeSWF(objIdArr[j]);
+ }
+
+ for (var k in ua) {
+ ua[k] = null;
+ }
+ ua = null;
+ for (var l in swfobject) {
+ swfobject[l] = null;
+ }
+ swfobject = null;
+ window.detachEvent('onunload', arguments.callee);
+ });
+ }
+ }();
+
+ return {
+
+ registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) {
+ if (ua.w3 && objectIdStr && swfVersionStr) {
+ var regObj = {};
+ regObj.id = objectIdStr;
+ regObj.swfVersion = swfVersionStr;
+ regObj.expressInstall = xiSwfUrlStr;
+ regObj.callbackFn = callbackFn;
+ regObjArr[regObjArr.length] = regObj;
+ setVisibility(objectIdStr, false);
+ }
+ else if (callbackFn) {
+ callbackFn({success:false, id:objectIdStr});
+ }
+ },
+
+ getObjectById: function(objectIdStr) {
+ if (ua.w3) {
+ return getObjectById(objectIdStr);
+ }
+ },
+
+ embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) {
+ var callbackObj = {success:false, id:replaceElemIdStr};
+ if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) {
+ setVisibility(replaceElemIdStr, false);
+ addDomLoadEvent(function() {
+ widthStr += "";
+ heightStr += "";
+ var att = {};
+ if (attObj && typeof attObj === OBJECT) {
+ for (var i in attObj) {
+ att[i] = attObj[i];
+ }
+ }
+ att.data = swfUrlStr;
+ att.width = widthStr;
+ att.height = heightStr;
+ var par = {};
+ if (parObj && typeof parObj === OBJECT) {
+ for (var j in parObj) {
+ par[j] = parObj[j];
+ }
+ }
+ if (flashvarsObj && typeof flashvarsObj === OBJECT) {
+ for (var k in flashvarsObj) {
+ if (typeof par.flashvars != UNDEF) {
+ par.flashvars += "&" + k + "=" + flashvarsObj[k];
+ }
+ else {
+ par.flashvars = k + "=" + flashvarsObj[k];
+ }
+ }
+ }
+ if (hasPlayerVersion(swfVersionStr)) {
+ var obj = createSWF(att, par, replaceElemIdStr);
+ if (att.id == replaceElemIdStr) {
+ setVisibility(replaceElemIdStr, true);
+ }
+ callbackObj.success = true;
+ callbackObj.ref = obj;
+ }
+ else if (xiSwfUrlStr && canExpressInstall()) {
+ att.data = xiSwfUrlStr;
+ showExpressInstall(att, par, replaceElemIdStr, callbackFn);
+ return;
+ }
+ else {
+ setVisibility(replaceElemIdStr, true);
+ }
+ if (callbackFn) { callbackFn(callbackObj); }
+ });
+ }
+ else if (callbackFn) { callbackFn(callbackObj); }
+ },
+
+ switchOffAutoHideShow: function() {
+ autoHideShow = false;
+ },
+
+ ua: ua,
+
+ getFlashPlayerVersion: function() {
+ return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
+ },
+
+ hasFlashPlayerVersion: hasPlayerVersion,
+
+ createSWF: function(attObj, parObj, replaceElemIdStr) {
+ if (ua.w3) {
+ return createSWF(attObj, parObj, replaceElemIdStr);
+ }
+ else {
+ return undefined;
+ }
+ },
+
+ showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) {
+ if (ua.w3 && canExpressInstall()) {
+ showExpressInstall(att, par, replaceElemIdStr, callbackFn);
+ }
+ },
+
+ removeSWF: function(objElemIdStr) {
+ if (ua.w3) {
+ removeSWF(objElemIdStr);
+ }
+ },
+
+ createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) {
+ if (ua.w3) {
+ createCSS(selStr, declStr, mediaStr, newStyleBoolean);
+ }
+ },
+
+ addDomLoadEvent: addDomLoadEvent,
+
+ addLoadEvent: addLoadEvent,
+
+ getQueryParamValue: function(param) {
+ var q = doc.location.search || doc.location.hash;
+ if (q) {
+ if (/\?/.test(q)) { q = q.split("?")[1]; }
+ if (param == null) {
+ return urlEncodeIfNecessary(q);
+ }
+ var pairs = q.split("&");
+ for (var i = 0; i < pairs.length; i++) {
+ if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
+ return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
+ }
+ }
+ }
+ return "";
+ },
+
+
+ expressInstallCallback: function() {
+ if (isExpressInstallActive) {
+ var obj = getElementById(EXPRESS_INSTALL_ID);
+ if (obj && storedAltContent) {
+ obj.parentNode.replaceChild(storedAltContent, obj);
+ if (storedAltContentId) {
+ setVisibility(storedAltContentId, true);
+ if (ua.ie && ua.win) { storedAltContent.style.display = "block"; }
+ }
+ if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); }
+ }
+ isExpressInstallActive = false;
+ }
+ }
+ };
+}();
+
+Ext.FlashComponent = Ext.extend(Ext.BoxComponent, {
+
+ flashVersion : '9.0.115',
+
+
+ backgroundColor: '#ffffff',
+
+
+ wmode: 'opaque',
+
+
+ flashVars: undefined,
+
+
+ flashParams: undefined,
+
+
+ url: undefined,
+ swfId : undefined,
+ swfWidth: '100%',
+ swfHeight: '100%',
+
+
+ expressInstall: false,
+
+ initComponent : function(){
+ Ext.FlashComponent.superclass.initComponent.call(this);
+
+ this.addEvents(
+
+ 'initialize'
+ );
+ },
+
+ onRender : function(){
+ Ext.FlashComponent.superclass.onRender.apply(this, arguments);
+
+ var params = Ext.apply({
+ allowScriptAccess: 'always',
+ bgcolor: this.backgroundColor,
+ wmode: this.wmode
+ }, this.flashParams), vars = Ext.apply({
+ allowedDomain: document.location.hostname,
+ YUISwfId: this.getId(),
+ YUIBridgeCallback: 'Ext.FlashEventProxy.onEvent'
+ }, this.flashVars);
+
+ new swfobject.embedSWF(this.url, this.id, this.swfWidth, this.swfHeight, this.flashVersion,
+ this.expressInstall ? Ext.FlashComponent.EXPRESS_INSTALL_URL : undefined, vars, params);
+
+ this.swf = Ext.getDom(this.id);
+ this.el = Ext.get(this.swf);
+ },
+
+ getSwfId : function(){
+ return this.swfId || (this.swfId = "extswf" + (++Ext.Component.AUTO_ID));
+ },
+
+ getId : function(){
+ return this.id || (this.id = "extflashcmp" + (++Ext.Component.AUTO_ID));
+ },
+
+ onFlashEvent : function(e){
+ switch(e.type){
+ case "swfReady":
+ this.initSwf();
+ return;
+ case "log":
+ return;
+ }
+ e.component = this;
+ this.fireEvent(e.type.toLowerCase().replace(/event$/, ''), e);
+ },
+
+ initSwf : function(){
+ this.onSwfReady(!!this.isInitialized);
+ this.isInitialized = true;
+ this.fireEvent('initialize', this);
+ },
+
+ beforeDestroy: function(){
+ if(this.rendered){
+ swfobject.removeSWF(this.swf.id);
+ }
+ Ext.FlashComponent.superclass.beforeDestroy.call(this);
+ },
+
+ onSwfReady : Ext.emptyFn
+});
+
+
+Ext.FlashComponent.EXPRESS_INSTALL_URL = 'http:/' + '/swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf';
+
+Ext.reg('flash', Ext.FlashComponent);
+Ext.FlashEventProxy = {
+ onEvent : function(id, e){
+ var fp = Ext.getCmp(id);
+ if(fp){
+ fp.onFlashEvent(e);
+ }else{
+ arguments.callee.defer(10, this, [id, e]);
+ }
+ }
+};
+
+ Ext.chart.Chart = Ext.extend(Ext.FlashComponent, {
+ refreshBuffer: 100,
+
+
+
+
+ chartStyle: {
+ padding: 10,
+ animationEnabled: true,
+ font: {
+ name: 'Tahoma',
+ color: 0x444444,
+ size: 11
+ },
+ dataTip: {
+ padding: 5,
+ border: {
+ color: 0x99bbe8,
+ size:1
+ },
+ background: {
+ color: 0xDAE7F6,
+ alpha: .9
+ },
+ font: {
+ name: 'Tahoma',
+ color: 0x15428B,
+ size: 10,
+ bold: true
+ }
+ }
+ },
+
+
+
+
+ extraStyle: null,
+
+
+ seriesStyles: null,
+
+
+ disableCaching: Ext.isIE || Ext.isOpera,
+ disableCacheParam: '_dc',
+
+ initComponent : function(){
+ Ext.chart.Chart.superclass.initComponent.call(this);
+ if(!this.url){
+ this.url = Ext.chart.Chart.CHART_URL;
+ }
+ if(this.disableCaching){
+ this.url = Ext.urlAppend(this.url, String.format('{0}={1}', this.disableCacheParam, new Date().getTime()));
+ }
+ this.addEvents(
+ 'itemmouseover',
+ 'itemmouseout',
+ 'itemclick',
+ 'itemdoubleclick',
+ 'itemdragstart',
+ 'itemdrag',
+ 'itemdragend',
+
+ 'beforerefresh',
+
+ 'refresh'
+ );
+ this.store = Ext.StoreMgr.lookup(this.store);
+ },
+
+
+ setStyle: function(name, value){
+ this.swf.setStyle(name, Ext.encode(value));
+ },
+
+
+ setStyles: function(styles){
+ this.swf.setStyles(Ext.encode(styles));
+ },
+
+
+ setSeriesStyles: function(styles){
+ this.seriesStyles = styles;
+ var s = [];
+ Ext.each(styles, function(style){
+ s.push(Ext.encode(style));
+ });
+ this.swf.setSeriesStyles(s);
+ },
+
+ setCategoryNames : function(names){
+ this.swf.setCategoryNames(names);
+ },
+
+ setLegendRenderer : function(fn, scope){
+ var chart = this;
+ scope = scope || chart;
+ chart.removeFnProxy(chart.legendFnName);
+ chart.legendFnName = chart.createFnProxy(function(name){
+ return fn.call(scope, name);
+ });
+ chart.swf.setLegendLabelFunction(chart.legendFnName);
+ },
+
+ setTipRenderer : function(fn, scope){
+ var chart = this;
+ scope = scope || chart;
+ chart.removeFnProxy(chart.tipFnName);
+ chart.tipFnName = chart.createFnProxy(function(item, index, series){
+ var record = chart.store.getAt(index);
+ return fn.call(scope, chart, record, index, series);
+ });
+ chart.swf.setDataTipFunction(chart.tipFnName);
+ },
+
+ setSeries : function(series){
+ this.series = series;
+ this.refresh();
+ },
+
+
+ bindStore : function(store, initial){
+ if(!initial && this.store){
+ if(store !== this.store && this.store.autoDestroy){
+ this.store.destroy();
+ }else{
+ this.store.un("datachanged", this.refresh, this);
+ this.store.un("add", this.delayRefresh, this);
+ this.store.un("remove", this.delayRefresh, this);
+ this.store.un("update", this.delayRefresh, this);
+ this.store.un("clear", this.refresh, this);
+ }
+ }
+ if(store){
+ store = Ext.StoreMgr.lookup(store);
+ store.on({
+ scope: this,
+ datachanged: this.refresh,
+ add: this.delayRefresh,
+ remove: this.delayRefresh,
+ update: this.delayRefresh,
+ clear: this.refresh
+ });
+ }
+ this.store = store;
+ if(store && !initial){
+ this.refresh();
+ }
+ },
+
+ onSwfReady : function(isReset){
+ Ext.chart.Chart.superclass.onSwfReady.call(this, isReset);
+ var ref;
+ this.swf.setType(this.type);
+
+ if(this.chartStyle){
+ this.setStyles(Ext.apply({}, this.extraStyle, this.chartStyle));
+ }
+
+ if(this.categoryNames){
+ this.setCategoryNames(this.categoryNames);
+ }
+
+ if(this.tipRenderer){
+ ref = this.getFunctionRef(this.tipRenderer);
+ this.setTipRenderer(ref.fn, ref.scope);
+ }
+ if(this.legendRenderer){
+ ref = this.getFunctionRef(this.legendRenderer);
+ this.setLegendRenderer(ref.fn, ref.scope);
+ }
+ if(!isReset){
+ this.bindStore(this.store, true);
+ }
+ this.refresh.defer(10, this);
+ },
+
+ delayRefresh : function(){
+ if(!this.refreshTask){
+ this.refreshTask = new Ext.util.DelayedTask(this.refresh, this);
+ }
+ this.refreshTask.delay(this.refreshBuffer);
+ },
+
+ refresh : function(){
+ if(this.fireEvent('beforerefresh', this) !== false){
+ var styleChanged = false;
+
+ var data = [], rs = this.store.data.items;
+ for(var j = 0, len = rs.length; j < len; j++){
+ data[j] = rs[j].data;
+ }
+
+
+ var dataProvider = [];
+ var seriesCount = 0;
+ var currentSeries = null;
+ var i = 0;
+ if(this.series){
+ seriesCount = this.series.length;
+ for(i = 0; i < seriesCount; i++){
+ currentSeries = this.series[i];
+ var clonedSeries = {};
+ for(var prop in currentSeries){
+ if(prop == "style" && currentSeries.style !== null){
+ clonedSeries.style = Ext.encode(currentSeries.style);
+ styleChanged = true;
+
+
+
+
+ } else{
+ clonedSeries[prop] = currentSeries[prop];
+ }
+ }
+ dataProvider.push(clonedSeries);
+ }
+ }
+
+ if(seriesCount > 0){
+ for(i = 0; i < seriesCount; i++){
+ currentSeries = dataProvider[i];
+ if(!currentSeries.type){
+ currentSeries.type = this.type;
+ }
+ currentSeries.dataProvider = data;
+ }
+ } else{
+ dataProvider.push({type: this.type, dataProvider: data});
+ }
+ this.swf.setDataProvider(dataProvider);
+ if(this.seriesStyles){
+ this.setSeriesStyles(this.seriesStyles);
+ }
+ this.fireEvent('refresh', this);
+ }
+ },
+
+
+ createFnProxy : function(fn){
+ var fnName = 'extFnProxy' + (++Ext.chart.Chart.PROXY_FN_ID);
+ Ext.chart.Chart.proxyFunction[fnName] = fn;
+ return 'Ext.chart.Chart.proxyFunction.' + fnName;
+ },
+
+
+ removeFnProxy : function(fn){
+ if(!Ext.isEmpty(fn)){
+ fn = fn.replace('Ext.chart.Chart.proxyFunction.', '');
+ delete Ext.chart.Chart.proxyFunction[fn];
+ }
+ },
+
+
+ getFunctionRef : function(val){
+ if(Ext.isFunction(val)){
+ return {
+ fn: val,
+ scope: this
+ };
+ }else{
+ return {
+ fn: val.fn,
+ scope: val.scope || this
+ };
+ }
+ },
+
+
+ onDestroy: function(){
+ if (this.refreshTask && this.refreshTask.cancel){
+ this.refreshTask.cancel();
+ }
+ Ext.chart.Chart.superclass.onDestroy.call(this);
+ this.bindStore(null);
+ this.removeFnProxy(this.tipFnName);
+ this.removeFnProxy(this.legendFnName);
+ }
+});
+Ext.reg('chart', Ext.chart.Chart);
+Ext.chart.Chart.PROXY_FN_ID = 0;
+Ext.chart.Chart.proxyFunction = {};
+
+
+Ext.chart.Chart.CHART_URL = 'http:/' + '/yui.yahooapis.com/2.8.2/build/charts/assets/charts.swf';
+
+
+Ext.chart.PieChart = Ext.extend(Ext.chart.Chart, {
+ type: 'pie',
+
+ onSwfReady : function(isReset){
+ Ext.chart.PieChart.superclass.onSwfReady.call(this, isReset);
+
+ this.setDataField(this.dataField);
+ this.setCategoryField(this.categoryField);
+ },
+
+ setDataField : function(field){
+ this.dataField = field;
+ this.swf.setDataField(field);
+ },
+
+ setCategoryField : function(field){
+ this.categoryField = field;
+ this.swf.setCategoryField(field);
+ }
+});
+Ext.reg('piechart', Ext.chart.PieChart);
+
+
+Ext.chart.CartesianChart = Ext.extend(Ext.chart.Chart, {
+ onSwfReady : function(isReset){
+ Ext.chart.CartesianChart.superclass.onSwfReady.call(this, isReset);
+ this.labelFn = [];
+ if(this.xField){
+ this.setXField(this.xField);
+ }
+ if(this.yField){
+ this.setYField(this.yField);
+ }
+ if(this.xAxis){
+ this.setXAxis(this.xAxis);
+ }
+ if(this.xAxes){
+ this.setXAxes(this.xAxes);
+ }
+ if(this.yAxis){
+ this.setYAxis(this.yAxis);
+ }
+ if(this.yAxes){
+ this.setYAxes(this.yAxes);
+ }
+ if(Ext.isDefined(this.constrainViewport)){
+ this.swf.setConstrainViewport(this.constrainViewport);
+ }
+ },
+
+ setXField : function(value){
+ this.xField = value;
+ this.swf.setHorizontalField(value);
+ },
+
+ setYField : function(value){
+ this.yField = value;
+ this.swf.setVerticalField(value);
+ },
+
+ setXAxis : function(value){
+ this.xAxis = this.createAxis('xAxis', value);
+ this.swf.setHorizontalAxis(this.xAxis);
+ },
+
+ setXAxes : function(value){
+ var axis;
+ for(var i = 0; i < value.length; i++) {
+ axis = this.createAxis('xAxis' + i, value[i]);
+ this.swf.setHorizontalAxis(axis);
+ }
+ },
+
+ setYAxis : function(value){
+ this.yAxis = this.createAxis('yAxis', value);
+ this.swf.setVerticalAxis(this.yAxis);
+ },
+
+ setYAxes : function(value){
+ var axis;
+ for(var i = 0; i < value.length; i++) {
+ axis = this.createAxis('yAxis' + i, value[i]);
+ this.swf.setVerticalAxis(axis);
+ }
+ },
+
+ createAxis : function(axis, value){
+ var o = Ext.apply({}, value),
+ ref,
+ old;
+
+ if(this[axis]){
+ old = this[axis].labelFunction;
+ this.removeFnProxy(old);
+ this.labelFn.remove(old);
+ }
+ if(o.labelRenderer){
+ ref = this.getFunctionRef(o.labelRenderer);
+ o.labelFunction = this.createFnProxy(function(v){
+ return ref.fn.call(ref.scope, v);
+ });
+ delete o.labelRenderer;
+ this.labelFn.push(o.labelFunction);
+ }
+ if(axis.indexOf('xAxis') > -1 && o.position == 'left'){
+ o.position = 'bottom';
+ }
+ return o;
+ },
+
+ onDestroy : function(){
+ Ext.chart.CartesianChart.superclass.onDestroy.call(this);
+ Ext.each(this.labelFn, function(fn){
+ this.removeFnProxy(fn);
+ }, this);
+ }
+});
+Ext.reg('cartesianchart', Ext.chart.CartesianChart);
+
+
+Ext.chart.LineChart = Ext.extend(Ext.chart.CartesianChart, {
+ type: 'line'
+});
+Ext.reg('linechart', Ext.chart.LineChart);
+
+
+Ext.chart.ColumnChart = Ext.extend(Ext.chart.CartesianChart, {
+ type: 'column'
+});
+Ext.reg('columnchart', Ext.chart.ColumnChart);
+
+
+Ext.chart.StackedColumnChart = Ext.extend(Ext.chart.CartesianChart, {
+ type: 'stackcolumn'
+});
+Ext.reg('stackedcolumnchart', Ext.chart.StackedColumnChart);
+
+
+Ext.chart.BarChart = Ext.extend(Ext.chart.CartesianChart, {
+ type: 'bar'
+});
+Ext.reg('barchart', Ext.chart.BarChart);
+
+
+Ext.chart.StackedBarChart = Ext.extend(Ext.chart.CartesianChart, {
+ type: 'stackbar'
+});
+Ext.reg('stackedbarchart', Ext.chart.StackedBarChart);
+
+
+
+
+Ext.chart.Axis = function(config){
+ Ext.apply(this, config);
+};
+
+Ext.chart.Axis.prototype =
+{
+
+ type: null,
+
+
+ orientation: "horizontal",
+
+
+ reverse: false,
+
+
+ labelFunction: null,
+
+
+ hideOverlappingLabels: true,
+
+
+ labelSpacing: 2
+};
+
+
+Ext.chart.NumericAxis = Ext.extend(Ext.chart.Axis, {
+ type: "numeric",
+
+
+ minimum: NaN,
+
+
+ maximum: NaN,
+
+
+ majorUnit: NaN,
+
+
+ minorUnit: NaN,
+
+
+ snapToUnits: true,
+
+
+ alwaysShowZero: true,
+
+
+ scale: "linear",
+
+
+ roundMajorUnit: true,
+
+
+ calculateByLabelSize: true,
+
+
+ position: 'left',
+
+
+ adjustMaximumByMajorUnit: true,
+
+
+ adjustMinimumByMajorUnit: true
+
+});
+
+
+Ext.chart.TimeAxis = Ext.extend(Ext.chart.Axis, {
+ type: "time",
+
+
+ minimum: null,
+
+
+ maximum: null,
+
+
+ majorUnit: NaN,
+
+
+ majorTimeUnit: null,
+
+
+ minorUnit: NaN,
+
+
+ minorTimeUnit: null,
+
+
+ snapToUnits: true,
+
+
+ stackingEnabled: false,
+
+
+ calculateByLabelSize: true
+
+});
+
+
+Ext.chart.CategoryAxis = Ext.extend(Ext.chart.Axis, {
+ type: "category",
+
+
+ categoryNames: null,
+
+
+ calculateCategoryCount: false
+
+});
+
+
+Ext.chart.Series = function(config) { Ext.apply(this, config); };
+
+Ext.chart.Series.prototype =
+{
+
+ type: null,
+
+
+ displayName: null
+};
+
+
+Ext.chart.CartesianSeries = Ext.extend(Ext.chart.Series, {
+
+ xField: null,
+
+
+ yField: null,
+
+
+ showInLegend: true,
+
+
+ axis: 'primary'
+});
+
+
+Ext.chart.ColumnSeries = Ext.extend(Ext.chart.CartesianSeries, {
+ type: "column"
+});
+
+
+Ext.chart.LineSeries = Ext.extend(Ext.chart.CartesianSeries, {
+ type: "line"
+});
+
+
+Ext.chart.BarSeries = Ext.extend(Ext.chart.CartesianSeries, {
+ type: "bar"
+});
+
+
+
+Ext.chart.PieSeries = Ext.extend(Ext.chart.Series, {
+ type: "pie",
+ dataField: null,
+ categoryField: null
+});
+Ext.menu.Menu = Ext.extend(Ext.Container, {
+
+
+
+ minWidth : 120,
+
+ shadow : 'sides',
+
+ subMenuAlign : 'tl-tr?',
+
+ defaultAlign : 'tl-bl?',
+
+ allowOtherMenus : false,
+
+ ignoreParentClicks : false,
+
+ enableScrolling : true,
+
+ maxHeight : null,
+
+ scrollIncrement : 24,
+
+ showSeparator : true,
+
+ defaultOffsets : [0, 0],
+
+
+ plain : false,
+
+
+ floating : true,
+
+
+
+ zIndex: 15000,
+
+
+ hidden : true,
+
+
+ layout : 'menu',
+ hideMode : 'offsets',
+ scrollerHeight : 8,
+ autoLayout : true,
+ defaultType : 'menuitem',
+ bufferResize : false,
+
+ initComponent : function(){
+ if(Ext.isArray(this.initialConfig)){
+ Ext.apply(this, {items:this.initialConfig});
+ }
+ this.addEvents(
+
+ 'click',
+
+ 'mouseover',
+
+ 'mouseout',
+
+ 'itemclick'
+ );
+ Ext.menu.MenuMgr.register(this);
+ if(this.floating){
+ Ext.EventManager.onWindowResize(this.hide, this);
+ }else{
+ if(this.initialConfig.hidden !== false){
+ this.hidden = false;
+ }
+ this.internalDefaults = {hideOnClick: false};
+ }
+ Ext.menu.Menu.superclass.initComponent.call(this);
+ if(this.autoLayout){
+ var fn = this.doLayout.createDelegate(this, []);
+ this.on({
+ add: fn,
+ remove: fn
+ });
+ }
+ },
+
+
+ getLayoutTarget : function() {
+ return this.ul;
+ },
+
+
+ onRender : function(ct, position){
+ if(!ct){
+ ct = Ext.getBody();
+ }
+
+ var dh = {
+ id: this.getId(),
+ cls: 'x-menu ' + ((this.floating) ? 'x-menu-floating x-layer ' : '') + (this.cls || '') + (this.plain ? ' x-menu-plain' : '') + (this.showSeparator ? '' : ' x-menu-nosep'),
+ style: this.style,
+ cn: [
+ {tag: 'a', cls: 'x-menu-focus', href: '#', onclick: 'return false;', tabIndex: '-1'},
+ {tag: 'ul', cls: 'x-menu-list'}
+ ]
+ };
+ if(this.floating){
+ this.el = new Ext.Layer({
+ shadow: this.shadow,
+ dh: dh,
+ constrain: false,
+ parentEl: ct,
+ zindex: this.zIndex
+ });
+ }else{
+ this.el = ct.createChild(dh);
+ }
+ Ext.menu.Menu.superclass.onRender.call(this, ct, position);
+
+ if(!this.keyNav){
+ this.keyNav = new Ext.menu.MenuNav(this);
+ }
+
+ this.focusEl = this.el.child('a.x-menu-focus');
+ this.ul = this.el.child('ul.x-menu-list');
+ this.mon(this.ul, {
+ scope: this,
+ click: this.onClick,
+ mouseover: this.onMouseOver,
+ mouseout: this.onMouseOut
+ });
+ if(this.enableScrolling){
+ this.mon(this.el, {
+ scope: this,
+ delegate: '.x-menu-scroller',
+ click: this.onScroll,
+ mouseover: this.deactivateActive
+ });
+ }
+ },
+
+
+ findTargetItem : function(e){
+ var t = e.getTarget('.x-menu-list-item', this.ul, true);
+ if(t && t.menuItemId){
+ return this.items.get(t.menuItemId);
+ }
+ },
+
+
+ onClick : function(e){
+ var t = this.findTargetItem(e);
+ if(t){
+ if(t.isFormField){
+ this.setActiveItem(t);
+ }else if(t instanceof Ext.menu.BaseItem){
+ if(t.menu && this.ignoreParentClicks){
+ t.expandMenu();
+ e.preventDefault();
+ }else if(t.onClick){
+ t.onClick(e);
+ this.fireEvent('click', this, t, e);
+ }
+ }
+ }
+ },
+
+
+ setActiveItem : function(item, autoExpand){
+ if(item != this.activeItem){
+ this.deactivateActive();
+ if((this.activeItem = item).isFormField){
+ item.focus();
+ }else{
+ item.activate(autoExpand);
+ }
+ }else if(autoExpand){
+ item.expandMenu();
+ }
+ },
+
+ deactivateActive : function(){
+ var a = this.activeItem;
+ if(a){
+ if(a.isFormField){
+
+ if(a.collapse){
+ a.collapse();
+ }
+ }else{
+ a.deactivate();
+ }
+ delete this.activeItem;
+ }
+ },
+
+
+ tryActivate : function(start, step){
+ var items = this.items;
+ for(var i = start, len = items.length; i >= 0 && i < len; i+= step){
+ var item = items.get(i);
+ if(item.isVisible() && !item.disabled && (item.canActivate || item.isFormField)){
+ this.setActiveItem(item, false);
+ return item;
+ }
+ }
+ return false;
+ },
+
+
+ onMouseOver : function(e){
+ var t = this.findTargetItem(e);
+ if(t){
+ if(t.canActivate && !t.disabled){
+ this.setActiveItem(t, true);
+ }
+ }
+ this.over = true;
+ this.fireEvent('mouseover', this, e, t);
+ },
+
+
+ onMouseOut : function(e){
+ var t = this.findTargetItem(e);
+ if(t){
+ if(t == this.activeItem && t.shouldDeactivate && t.shouldDeactivate(e)){
+ this.activeItem.deactivate();
+ delete this.activeItem;
+ }
+ }
+ this.over = false;
+ this.fireEvent('mouseout', this, e, t);
+ },
+
+
+ onScroll : function(e, t){
+ if(e){
+ e.stopEvent();
+ }
+ var ul = this.ul.dom, top = Ext.fly(t).is('.x-menu-scroller-top');
+ ul.scrollTop += this.scrollIncrement * (top ? -1 : 1);
+ if(top ? ul.scrollTop <= 0 : ul.scrollTop + this.activeMax >= ul.scrollHeight){
+ this.onScrollerOut(null, t);
+ }
+ },
+
+
+ onScrollerIn : function(e, t){
+ var ul = this.ul.dom, top = Ext.fly(t).is('.x-menu-scroller-top');
+ if(top ? ul.scrollTop > 0 : ul.scrollTop + this.activeMax < ul.scrollHeight){
+ Ext.fly(t).addClass(['x-menu-item-active', 'x-menu-scroller-active']);
+ }
+ },
+
+
+ onScrollerOut : function(e, t){
+ Ext.fly(t).removeClass(['x-menu-item-active', 'x-menu-scroller-active']);
+ },
+
+
+ show : function(el, pos, parentMenu){
+ if(this.floating){
+ this.parentMenu = parentMenu;
+ if(!this.el){
+ this.render();
+ this.doLayout(false, true);
+ }
+ this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign, this.defaultOffsets), parentMenu);
+ }else{
+ Ext.menu.Menu.superclass.show.call(this);
+ }
+ },
+
+
+ showAt : function(xy, parentMenu){
+ if(this.fireEvent('beforeshow', this) !== false){
+ this.parentMenu = parentMenu;
+ if(!this.el){
+ this.render();
+ }
+ if(this.enableScrolling){
+
+ this.el.setXY(xy);
+
+ xy[1] = this.constrainScroll(xy[1]);
+ xy = [this.el.adjustForConstraints(xy)[0], xy[1]];
+ }else{
+
+ xy = this.el.adjustForConstraints(xy);
+ }
+ this.el.setXY(xy);
+ this.el.show();
+ Ext.menu.Menu.superclass.onShow.call(this);
+ if(Ext.isIE9m){
+
+ this.fireEvent('autosize', this);
+ if(!Ext.isIE8){
+ this.el.repaint();
+ }
+ }
+ this.hidden = false;
+ this.focus();
+ this.fireEvent('show', this);
+ }
+ },
+
+ constrainScroll : function(y){
+ var max, full = this.ul.setHeight('auto').getHeight(),
+ returnY = y, normalY, parentEl, scrollTop, viewHeight;
+ if(this.floating){
+ parentEl = Ext.fly(this.el.dom.parentNode);
+ scrollTop = parentEl.getScroll().top;
+ viewHeight = parentEl.getViewSize().height;
+
+
+ normalY = y - scrollTop;
+ max = this.maxHeight ? this.maxHeight : viewHeight - normalY;
+ if(full > viewHeight) {
+ max = viewHeight;
+
+ returnY = y - normalY;
+ } else if(max < full) {
+ returnY = y - (full - max);
+ max = full;
+ }
+ }else{
+ max = this.getHeight();
+ }
+
+ if (this.maxHeight){
+ max = Math.min(this.maxHeight, max);
+ }
+ if(full > max && max > 0){
+ this.activeMax = max - this.scrollerHeight * 2 - this.el.getFrameWidth('tb') - Ext.num(this.el.shadowOffset, 0);
+ this.ul.setHeight(this.activeMax);
+ this.createScrollers();
+ this.el.select('.x-menu-scroller').setDisplayed('');
+ }else{
+ this.ul.setHeight(full);
+ this.el.select('.x-menu-scroller').setDisplayed('none');
+ }
+ this.ul.dom.scrollTop = 0;
+ return returnY;
+ },
+
+ createScrollers : function(){
+ if(!this.scroller){
+ this.scroller = {
+ pos: 0,
+ top: this.el.insertFirst({
+ tag: 'div',
+ cls: 'x-menu-scroller x-menu-scroller-top',
+ html: '&#160;'
+ }),
+ bottom: this.el.createChild({
+ tag: 'div',
+ cls: 'x-menu-scroller x-menu-scroller-bottom',
+ html: '&#160;'
+ })
+ };
+ this.scroller.top.hover(this.onScrollerIn, this.onScrollerOut, this);
+ this.scroller.topRepeater = new Ext.util.ClickRepeater(this.scroller.top, {
+ listeners: {
+ click: this.onScroll.createDelegate(this, [null, this.scroller.top], false)
+ }
+ });
+ this.scroller.bottom.hover(this.onScrollerIn, this.onScrollerOut, this);
+ this.scroller.bottomRepeater = new Ext.util.ClickRepeater(this.scroller.bottom, {
+ listeners: {
+ click: this.onScroll.createDelegate(this, [null, this.scroller.bottom], false)
+ }
+ });
+ }
+ },
+
+ onLayout : function(){
+ if(this.isVisible()){
+ if(this.enableScrolling){
+ this.constrainScroll(this.el.getTop());
+ }
+ if(this.floating){
+ this.el.sync();
+ }
+ }
+ },
+
+ focus : function(){
+ if(!this.hidden){
+ this.doFocus.defer(50, this);
+ }
+ },
+
+ doFocus : function(){
+ if(!this.hidden){
+ this.focusEl.focus();
+ }
+ },
+
+
+ hide : function(deep){
+ if (!this.isDestroyed) {
+ this.deepHide = deep;
+ Ext.menu.Menu.superclass.hide.call(this);
+ delete this.deepHide;
+ }
+ },
+
+
+ onHide : function(){
+ Ext.menu.Menu.superclass.onHide.call(this);
+ this.deactivateActive();
+ if(this.el && this.floating){
+ this.el.hide();
+ }
+ var pm = this.parentMenu;
+ if(this.deepHide === true && pm){
+ if(pm.floating){
+ pm.hide(true);
+ }else{
+ pm.deactivateActive();
+ }
+ }
+ },
+
+
+ lookupComponent : function(c){
+ if(Ext.isString(c)){
+ c = (c == 'separator' || c == '-') ? new Ext.menu.Separator() : new Ext.menu.TextItem(c);
+ this.applyDefaults(c);
+ }else{
+ if(Ext.isObject(c)){
+ c = this.getMenuItem(c);
+ }else if(c.tagName || c.el){
+ c = new Ext.BoxComponent({
+ el: c
+ });
+ }
+ }
+ return c;
+ },
+
+ applyDefaults : function(c) {
+ if (!Ext.isString(c)) {
+ c = Ext.menu.Menu.superclass.applyDefaults.call(this, c);
+ var d = this.internalDefaults;
+ if(d){
+ if(c.events){
+ Ext.applyIf(c.initialConfig, d);
+ Ext.apply(c, d);
+ }else{
+ Ext.applyIf(c, d);
+ }
+ }
+ }
+ return c;
+ },
+
+
+ getMenuItem : function(config) {
+ config.ownerCt = this;
+
+ if (!config.isXType) {
+ if (!config.xtype && Ext.isBoolean(config.checked)) {
+ return new Ext.menu.CheckItem(config);
+ }
+ return Ext.create(config, this.defaultType);
+ }
+ return config;
+ },
+
+
+ addSeparator : function() {
+ return this.add(new Ext.menu.Separator());
+ },
+
+
+ addElement : function(el) {
+ return this.add(new Ext.menu.BaseItem({
+ el: el
+ }));
+ },
+
+
+ addItem : function(item) {
+ return this.add(item);
+ },
+
+
+ addMenuItem : function(config) {
+ return this.add(this.getMenuItem(config));
+ },
+
+
+ addText : function(text){
+ return this.add(new Ext.menu.TextItem(text));
+ },
+
+
+ onDestroy : function(){
+ Ext.EventManager.removeResizeListener(this.hide, this);
+ var pm = this.parentMenu;
+ if(pm && pm.activeChild == this){
+ delete pm.activeChild;
+ }
+ delete this.parentMenu;
+ Ext.menu.Menu.superclass.onDestroy.call(this);
+ Ext.menu.MenuMgr.unregister(this);
+ if(this.keyNav) {
+ this.keyNav.disable();
+ }
+ var s = this.scroller;
+ if(s){
+ Ext.destroy(s.topRepeater, s.bottomRepeater, s.top, s.bottom);
+ }
+ Ext.destroy(
+ this.el,
+ this.focusEl,
+ this.ul
+ );
+ }
+});
+
+Ext.reg('menu', Ext.menu.Menu);
+
+
+Ext.menu.MenuNav = Ext.extend(Ext.KeyNav, function(){
+ function up(e, m){
+ if(!m.tryActivate(m.items.indexOf(m.activeItem)-1, -1)){
+ m.tryActivate(m.items.length-1, -1);
+ }
+ }
+ function down(e, m){
+ if(!m.tryActivate(m.items.indexOf(m.activeItem)+1, 1)){
+ m.tryActivate(0, 1);
+ }
+ }
+ return {
+ constructor : function(menu){
+ Ext.menu.MenuNav.superclass.constructor.call(this, menu.el);
+ this.scope = this.menu = menu;
+ },
+
+ doRelay : function(e, h){
+ var k = e.getKey();
+
+ if (this.menu.activeItem && this.menu.activeItem.isFormField && k != e.TAB) {
+ return false;
+ }
+ if(!this.menu.activeItem && e.isNavKeyPress() && k != e.SPACE && k != e.RETURN){
+ this.menu.tryActivate(0, 1);
+ return false;
+ }
+ return h.call(this.scope || this, e, this.menu);
+ },
+
+ tab: function(e, m) {
+ e.stopEvent();
+ if (e.shiftKey) {
+ up(e, m);
+ } else {
+ down(e, m);
+ }
+ },
+
+ up : up,
+
+ down : down,
+
+ right : function(e, m){
+ if(m.activeItem){
+ m.activeItem.expandMenu(true);
+ }
+ },
+
+ left : function(e, m){
+ m.hide();
+ if(m.parentMenu && m.parentMenu.activeItem){
+ m.parentMenu.activeItem.activate();
+ }
+ },
+
+ enter : function(e, m){
+ if(m.activeItem){
+ e.stopPropagation();
+ m.activeItem.onClick(e);
+ m.fireEvent('click', this, m.activeItem);
+ return true;
+ }
+ }
+ };
+}());
+
+Ext.menu.MenuMgr = function(){
+ var menus,
+ active,
+ map,
+ groups = {},
+ attached = false,
+ lastShow = new Date();
+
+
+
+ function init(){
+ menus = {};
+ active = new Ext.util.MixedCollection();
+ map = Ext.getDoc().addKeyListener(27, hideAll);
+ map.disable();
+ }
+
+
+ function hideAll(){
+ if(active && active.length > 0){
+ var c = active.clone();
+ c.each(function(m){
+ m.hide();
+ });
+ return true;
+ }
+ return false;
+ }
+
+
+ function onHide(m){
+ active.remove(m);
+ if(active.length < 1){
+ map.disable();
+ Ext.getDoc().un("mousedown", onMouseDown);
+ attached = false;
+ }
+ }
+
+
+ function onShow(m){
+ var last = active.last();
+ lastShow = new Date();
+ active.add(m);
+ if(!attached){
+ map.enable();
+ Ext.getDoc().on("mousedown", onMouseDown);
+ attached = true;
+ }
+ if(m.parentMenu){
+ m.getEl().setZIndex(parseInt(m.parentMenu.getEl().getStyle("z-index"), 10) + 3);
+ m.parentMenu.activeChild = m;
+ }else if(last && !last.isDestroyed && last.isVisible()){
+ m.getEl().setZIndex(parseInt(last.getEl().getStyle("z-index"), 10) + 3);
+ }
+ }
+
+
+ function onBeforeHide(m){
+ if(m.activeChild){
+ m.activeChild.hide();
+ }
+ if(m.autoHideTimer){
+ clearTimeout(m.autoHideTimer);
+ delete m.autoHideTimer;
+ }
+ }
+
+
+ function onBeforeShow(m){
+ var pm = m.parentMenu;
+ if(!pm && !m.allowOtherMenus){
+ hideAll();
+ }else if(pm && pm.activeChild){
+ pm.activeChild.hide();
+ }
+ }
+
+
+ function onMouseDown(e){
+ if(lastShow.getElapsed() > 50 && active.length > 0 && !e.getTarget(".x-menu")){
+ hideAll();
+ }
+ }
+
+ return {
+
+
+ hideAll : function(){
+ return hideAll();
+ },
+
+
+ register : function(menu){
+ if(!menus){
+ init();
+ }
+ menus[menu.id] = menu;
+ menu.on({
+ beforehide: onBeforeHide,
+ hide: onHide,
+ beforeshow: onBeforeShow,
+ show: onShow
+ });
+ },
+
+
+ get : function(menu){
+ if(typeof menu == "string"){
+ if(!menus){
+ return null;
+ }
+ return menus[menu];
+ }else if(menu.events){
+ return menu;
+ }else if(typeof menu.length == 'number'){
+ return new Ext.menu.Menu({items:menu});
+ }else{
+ return Ext.create(menu, 'menu');
+ }
+ },
+
+
+ unregister : function(menu){
+ delete menus[menu.id];
+ menu.un("beforehide", onBeforeHide);
+ menu.un("hide", onHide);
+ menu.un("beforeshow", onBeforeShow);
+ menu.un("show", onShow);
+ },
+
+
+ registerCheckable : function(menuItem){
+ var g = menuItem.group;
+ if(g){
+ if(!groups[g]){
+ groups[g] = [];
+ }
+ groups[g].push(menuItem);
+ }
+ },
+
+
+ unregisterCheckable : function(menuItem){
+ var g = menuItem.group;
+ if(g){
+ groups[g].remove(menuItem);
+ }
+ },
+
+
+ onCheckChange: function(item, state){
+ if(item.group && state){
+ var group = groups[item.group],
+ i = 0,
+ len = group.length,
+ current;
+
+ for(; i < len; i++){
+ current = group[i];
+ if(current != item){
+ current.setChecked(false);
+ }
+ }
+ }
+ },
+
+ getCheckedItem : function(groupId){
+ var g = groups[groupId];
+ if(g){
+ for(var i = 0, l = g.length; i < l; i++){
+ if(g[i].checked){
+ return g[i];
+ }
+ }
+ }
+ return null;
+ },
+
+ setCheckedItem : function(groupId, itemId){
+ var g = groups[groupId];
+ if(g){
+ for(var i = 0, l = g.length; i < l; i++){
+ if(g[i].id == itemId){
+ g[i].setChecked(true);
+ }
+ }
+ }
+ return null;
+ }
+ };
+}();
+
+Ext.menu.BaseItem = Ext.extend(Ext.Component, {
+
+
+
+
+ canActivate : false,
+
+ activeClass : "x-menu-item-active",
+
+ hideOnClick : true,
+
+ clickHideDelay : 1,
+
+
+ ctype : "Ext.menu.BaseItem",
+
+
+ actionMode : "container",
+
+ initComponent : function(){
+ Ext.menu.BaseItem.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'click',
+
+ 'activate',
+
+ 'deactivate'
+ );
+ if(this.handler){
+ this.on("click", this.handler, this.scope);
+ }
+ },
+
+
+ onRender : function(container, position){
+ Ext.menu.BaseItem.superclass.onRender.apply(this, arguments);
+ if(this.ownerCt && this.ownerCt instanceof Ext.menu.Menu){
+ this.parentMenu = this.ownerCt;
+ }else{
+ this.container.addClass('x-menu-list-item');
+ this.mon(this.el, {
+ scope: this,
+ click: this.onClick,
+ mouseenter: this.activate,
+ mouseleave: this.deactivate
+ });
+ }
+ },
+
+
+ setHandler : function(handler, scope){
+ if(this.handler){
+ this.un("click", this.handler, this.scope);
+ }
+ this.on("click", this.handler = handler, this.scope = scope);
+ },
+
+
+ onClick : function(e){
+ if(!this.disabled && this.fireEvent("click", this, e) !== false
+ && (this.parentMenu && this.parentMenu.fireEvent("itemclick", this, e) !== false)){
+ this.handleClick(e);
+ }else{
+ e.stopEvent();
+ }
+ },
+
+
+ activate : function(){
+ if(this.disabled){
+ return false;
+ }
+ var li = this.container;
+ li.addClass(this.activeClass);
+ this.region = li.getRegion().adjust(2, 2, -2, -2);
+ this.fireEvent("activate", this);
+ return true;
+ },
+
+
+ deactivate : function(){
+ this.container.removeClass(this.activeClass);
+ this.fireEvent("deactivate", this);
+ },
+
+
+ shouldDeactivate : function(e){
+ return !this.region || !this.region.contains(e.getPoint());
+ },
+
+
+ handleClick : function(e){
+ var pm = this.parentMenu;
+ if(this.hideOnClick){
+ if(pm.floating){
+ this.clickHideDelayTimer = pm.hide.defer(this.clickHideDelay, pm, [true]);
+ }else{
+ pm.deactivateActive();
+ }
+ }
+ },
+
+ beforeDestroy: function(){
+ clearTimeout(this.clickHideDelayTimer);
+ Ext.menu.BaseItem.superclass.beforeDestroy.call(this);
+ },
+
+
+ expandMenu : Ext.emptyFn,
+
+
+ hideMenu : Ext.emptyFn
+});
+Ext.reg('menubaseitem', Ext.menu.BaseItem);
+Ext.menu.TextItem = Ext.extend(Ext.menu.BaseItem, {
+
+
+ hideOnClick : false,
+
+ itemCls : "x-menu-text",
+
+ constructor : function(config) {
+ if (typeof config == 'string') {
+ config = {
+ text: config
+ };
+ }
+ Ext.menu.TextItem.superclass.constructor.call(this, config);
+ },
+
+
+ onRender : function() {
+ var s = document.createElement("span");
+ s.className = this.itemCls;
+ s.innerHTML = this.text;
+ this.el = s;
+ Ext.menu.TextItem.superclass.onRender.apply(this, arguments);
+ }
+});
+Ext.reg('menutextitem', Ext.menu.TextItem);
+Ext.menu.Separator = Ext.extend(Ext.menu.BaseItem, {
+
+ itemCls : "x-menu-sep",
+
+ hideOnClick : false,
+
+
+ activeClass: '',
+
+
+ onRender : function(li){
+ var s = document.createElement("span");
+ s.className = this.itemCls;
+ s.innerHTML = "&#160;";
+ this.el = s;
+ li.addClass("x-menu-sep-li");
+ Ext.menu.Separator.superclass.onRender.apply(this, arguments);
+ }
+});
+Ext.reg('menuseparator', Ext.menu.Separator);
+Ext.menu.Item = Ext.extend(Ext.menu.BaseItem, {
+
+
+
+
+
+
+
+
+ itemCls : 'x-menu-item',
+
+ canActivate : true,
+
+ showDelay: 200,
+
+
+ altText: '',
+
+
+ hideDelay: 200,
+
+
+ ctype: 'Ext.menu.Item',
+
+ initComponent : function(){
+ Ext.menu.Item.superclass.initComponent.call(this);
+ if(this.menu){
+
+
+ if (Ext.isArray(this.menu)){
+ this.menu = { items: this.menu };
+ }
+
+
+
+ if (Ext.isObject(this.menu)){
+ this.menu.ownerCt = this;
+ }
+
+ this.menu = Ext.menu.MenuMgr.get(this.menu);
+ this.menu.ownerCt = undefined;
+ }
+ },
+
+
+ onRender : function(container, position){
+ if (!this.itemTpl) {
+ this.itemTpl = Ext.menu.Item.prototype.itemTpl = new Ext.XTemplate(
+ '<a id="{id}" class="{cls} x-unselectable" hidefocus="true" unselectable="on" href="{href}"',
+ '<tpl if="hrefTarget">',
+ ' target="{hrefTarget}"',
+ '</tpl>',
+ '>',
+ '<img alt="{altText}" src="{icon}" class="x-menu-item-icon {iconCls}"/>',
+ '<span class="x-menu-item-text">{text}</span>',
+ '</a>'
+ );
+ }
+ var a = this.getTemplateArgs();
+ this.el = position ? this.itemTpl.insertBefore(position, a, true) : this.itemTpl.append(container, a, true);
+ this.iconEl = this.el.child('img.x-menu-item-icon');
+ this.textEl = this.el.child('.x-menu-item-text');
+ if(!this.href) {
+ this.mon(this.el, 'click', Ext.emptyFn, null, { preventDefault: true });
+ }
+ Ext.menu.Item.superclass.onRender.call(this, container, position);
+ },
+
+ getTemplateArgs: function() {
+ return {
+ id: this.id,
+ cls: this.itemCls + (this.menu ? ' x-menu-item-arrow' : '') + (this.cls ? ' ' + this.cls : ''),
+ href: this.href || '#',
+ hrefTarget: this.hrefTarget,
+ icon: this.icon || Ext.BLANK_IMAGE_URL,
+ iconCls: this.iconCls || '',
+ text: this.itemText||this.text||'&#160;',
+ altText: this.altText || ''
+ };
+ },
+
+
+ setText : function(text){
+ this.text = text||'&#160;';
+ if(this.rendered){
+ this.textEl.update(this.text);
+ this.parentMenu.layout.doAutoSize();
+ }
+ },
+
+
+ setIconClass : function(cls){
+ var oldCls = this.iconCls;
+ this.iconCls = cls;
+ if(this.rendered){
+ this.iconEl.replaceClass(oldCls, this.iconCls);
+ }
+ },
+
+
+ beforeDestroy: function(){
+ clearTimeout(this.showTimer);
+ clearTimeout(this.hideTimer);
+ if (this.menu){
+ delete this.menu.ownerCt;
+ this.menu.destroy();
+ }
+ Ext.menu.Item.superclass.beforeDestroy.call(this);
+ },
+
+
+ handleClick : function(e){
+ if(!this.href){
+ e.stopEvent();
+ }
+ Ext.menu.Item.superclass.handleClick.apply(this, arguments);
+ },
+
+
+ activate : function(autoExpand){
+ if(Ext.menu.Item.superclass.activate.apply(this, arguments)){
+ this.focus();
+ if(autoExpand){
+ this.expandMenu();
+ }
+ }
+ return true;
+ },
+
+
+ shouldDeactivate : function(e){
+ if(Ext.menu.Item.superclass.shouldDeactivate.call(this, e)){
+ if(this.menu && this.menu.isVisible()){
+ return !this.menu.getEl().getRegion().contains(e.getPoint());
+ }
+ return true;
+ }
+ return false;
+ },
+
+
+ deactivate : function(){
+ Ext.menu.Item.superclass.deactivate.apply(this, arguments);
+ this.hideMenu();
+ },
+
+
+ expandMenu : function(autoActivate){
+ if(!this.disabled && this.menu){
+ clearTimeout(this.hideTimer);
+ delete this.hideTimer;
+ if(!this.menu.isVisible() && !this.showTimer){
+ this.showTimer = this.deferExpand.defer(this.showDelay, this, [autoActivate]);
+ }else if (this.menu.isVisible() && autoActivate){
+ this.menu.tryActivate(0, 1);
+ }
+ }
+ },
+
+
+ deferExpand : function(autoActivate){
+ delete this.showTimer;
+ this.menu.show(this.container, this.parentMenu.subMenuAlign || 'tl-tr?', this.parentMenu);
+ if(autoActivate){
+ this.menu.tryActivate(0, 1);
+ }
+ },
+
+
+ hideMenu : function(){
+ clearTimeout(this.showTimer);
+ delete this.showTimer;
+ if(!this.hideTimer && this.menu && this.menu.isVisible()){
+ this.hideTimer = this.deferHide.defer(this.hideDelay, this);
+ }
+ },
+
+
+ deferHide : function(){
+ delete this.hideTimer;
+ if(this.menu.over){
+ this.parentMenu.setActiveItem(this, false);
+ }else{
+ this.menu.hide();
+ }
+ }
+});
+Ext.reg('menuitem', Ext.menu.Item);
+Ext.menu.CheckItem = Ext.extend(Ext.menu.Item, {
+
+
+ itemCls : "x-menu-item x-menu-check-item",
+
+ groupClass : "x-menu-group-item",
+
+
+ checked: false,
+
+
+ ctype: "Ext.menu.CheckItem",
+
+ initComponent : function(){
+ Ext.menu.CheckItem.superclass.initComponent.call(this);
+ this.addEvents(
+
+ "beforecheckchange" ,
+
+ "checkchange"
+ );
+
+ if(this.checkHandler){
+ this.on('checkchange', this.checkHandler, this.scope);
+ }
+ Ext.menu.MenuMgr.registerCheckable(this);
+ },
+
+
+ onRender : function(c){
+ Ext.menu.CheckItem.superclass.onRender.apply(this, arguments);
+ if(this.group){
+ this.el.addClass(this.groupClass);
+ }
+ if(this.checked){
+ this.checked = false;
+ this.setChecked(true, true);
+ }
+ },
+
+
+ destroy : function(){
+ Ext.menu.MenuMgr.unregisterCheckable(this);
+ Ext.menu.CheckItem.superclass.destroy.apply(this, arguments);
+ },
+
+
+ setChecked : function(state, suppressEvent){
+ var suppress = suppressEvent === true;
+ if(this.checked != state && (suppress || this.fireEvent("beforecheckchange", this, state) !== false)){
+ Ext.menu.MenuMgr.onCheckChange(this, state);
+ if(this.container){
+ this.container[state ? "addClass" : "removeClass"]("x-menu-item-checked");
+ }
+ this.checked = state;
+ if(!suppress){
+ this.fireEvent("checkchange", this, state);
+ }
+ }
+ },
+
+
+ handleClick : function(e){
+ if(!this.disabled && !(this.checked && this.group)){
+ this.setChecked(!this.checked);
+ }
+ Ext.menu.CheckItem.superclass.handleClick.apply(this, arguments);
+ }
+});
+Ext.reg('menucheckitem', Ext.menu.CheckItem);
+ Ext.menu.DateMenu = Ext.extend(Ext.menu.Menu, {
+
+ enableScrolling : false,
+
+
+
+ hideOnClick : true,
+
+
+ pickerId : null,
+
+
+
+
+ cls : 'x-date-menu',
+
+
+
+
+
+ initComponent : function(){
+ this.on('beforeshow', this.onBeforeShow, this);
+ if(this.strict = (Ext.isIE7 && Ext.isStrict)){
+ this.on('show', this.onShow, this, {single: true, delay: 20});
+ }
+ Ext.apply(this, {
+ plain: true,
+ showSeparator: false,
+ items: this.picker = new Ext.DatePicker(Ext.applyIf({
+ internalRender: this.strict || !Ext.isIE9m,
+ ctCls: 'x-menu-date-item',
+ id: this.pickerId
+ }, this.initialConfig))
+ });
+ this.picker.purgeListeners();
+ Ext.menu.DateMenu.superclass.initComponent.call(this);
+
+ this.relayEvents(this.picker, ['select']);
+ this.on('show', this.picker.focus, this.picker);
+ this.on('select', this.menuHide, this);
+ if(this.handler){
+ this.on('select', this.handler, this.scope || this);
+ }
+ },
+
+ menuHide : function() {
+ if(this.hideOnClick){
+ this.hide(true);
+ }
+ },
+
+ onBeforeShow : function(){
+ if(this.picker){
+ this.picker.hideMonthPicker(true);
+ }
+ },
+
+ onShow : function(){
+ var el = this.picker.getEl();
+ el.setWidth(el.getWidth());
+ }
+ });
+ Ext.reg('datemenu', Ext.menu.DateMenu);
+
+ Ext.menu.ColorMenu = Ext.extend(Ext.menu.Menu, {
+
+ enableScrolling : false,
+
+
+
+
+ hideOnClick : true,
+
+ cls : 'x-color-menu',
+
+
+ paletteId : null,
+
+
+
+
+
+
+
+
+
+
+ initComponent : function(){
+ Ext.apply(this, {
+ plain: true,
+ showSeparator: false,
+ items: this.palette = new Ext.ColorPalette(Ext.applyIf({
+ id: this.paletteId
+ }, this.initialConfig))
+ });
+ this.palette.purgeListeners();
+ Ext.menu.ColorMenu.superclass.initComponent.call(this);
+
+ this.relayEvents(this.palette, ['select']);
+ this.on('select', this.menuHide, this);
+ if(this.handler){
+ this.on('select', this.handler, this.scope || this);
+ }
+ },
+
+ menuHide : function(){
+ if(this.hideOnClick){
+ this.hide(true);
+ }
+ }
+});
+Ext.reg('colormenu', Ext.menu.ColorMenu);
+
+Ext.form.Field = Ext.extend(Ext.BoxComponent, {
+
+
+
+
+
+
+
+
+ invalidClass : 'x-form-invalid',
+
+ invalidText : 'The value in this field is invalid',
+
+ focusClass : 'x-form-focus',
+
+
+ validationEvent : 'keyup',
+
+ validateOnBlur : true,
+
+ validationDelay : 250,
+
+ defaultAutoCreate : {tag: 'input', type: 'text', size: '20', autocomplete: 'off'},
+
+ fieldClass : 'x-form-field',
+
+ msgTarget : 'qtip',
+
+ msgFx : 'normal',
+
+ readOnly : false,
+
+ disabled : false,
+
+ submitValue: true,
+
+
+ isFormField : true,
+
+
+ msgDisplay: '',
+
+
+ hasFocus : false,
+
+
+ initComponent : function(){
+ Ext.form.Field.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'focus',
+
+ 'blur',
+
+ 'specialkey',
+
+ 'change',
+
+ 'invalid',
+
+ 'valid'
+ );
+ },
+
+
+ getName : function(){
+ return this.rendered && this.el.dom.name ? this.el.dom.name : this.name || this.id || '';
+ },
+
+
+ onRender : function(ct, position){
+ if(!this.el){
+ var cfg = this.getAutoCreate();
+
+ if(!cfg.name){
+ cfg.name = this.name || this.id;
+ }
+ if(this.inputType){
+ cfg.type = this.inputType;
+ }
+ this.autoEl = cfg;
+ }
+ Ext.form.Field.superclass.onRender.call(this, ct, position);
+ if(this.submitValue === false){
+ this.el.dom.removeAttribute('name');
+ }
+ var type = this.el.dom.type;
+ if(type){
+ if(type == 'password'){
+ type = 'text';
+ }
+ this.el.addClass('x-form-'+type);
+ }
+ if(this.readOnly){
+ this.setReadOnly(true);
+ }
+ if(this.tabIndex !== undefined){
+ this.el.dom.setAttribute('tabIndex', this.tabIndex);
+ }
+
+ this.el.addClass([this.fieldClass, this.cls]);
+ },
+
+
+ getItemCt : function(){
+ return this.itemCt;
+ },
+
+
+ initValue : function(){
+ if(this.value !== undefined){
+ this.setValue(this.value);
+ }else if(!Ext.isEmpty(this.el.dom.value) && this.el.dom.value != this.emptyText){
+ this.setValue(this.el.dom.value);
+ }
+
+ this.originalValue = this.getValue();
+ },
+
+
+ isDirty : function() {
+ if(this.disabled || !this.rendered) {
+ return false;
+ }
+ return String(this.getValue()) !== String(this.originalValue);
+ },
+
+
+ setReadOnly : function(readOnly){
+ if(this.rendered){
+ this.el.dom.readOnly = readOnly;
+ }
+ this.readOnly = readOnly;
+ },
+
+
+ afterRender : function(){
+ Ext.form.Field.superclass.afterRender.call(this);
+ this.initEvents();
+ this.initValue();
+ },
+
+
+ fireKey : function(e){
+ if(e.isSpecialKey()){
+ this.fireEvent('specialkey', this, e);
+ }
+ },
+
+
+ reset : function(){
+ this.setValue(this.originalValue);
+ this.clearInvalid();
+ },
+
+
+ initEvents : function(){
+ this.mon(this.el, Ext.EventManager.getKeyEvent(), this.fireKey, this);
+ this.mon(this.el, 'focus', this.onFocus, this);
+
+
+
+ this.mon(this.el, 'blur', this.onBlur, this, this.inEditor ? {buffer:10} : null);
+ },
+
+
+ preFocus: Ext.emptyFn,
+
+
+ onFocus : function(){
+ this.preFocus();
+ if(this.focusClass){
+ this.el.addClass(this.focusClass);
+ }
+ if(!this.hasFocus){
+ this.hasFocus = true;
+
+ this.startValue = this.getValue();
+ this.fireEvent('focus', this);
+ }
+ },
+
+
+ beforeBlur : Ext.emptyFn,
+
+
+ onBlur : function(){
+ this.beforeBlur();
+ if(this.focusClass){
+ this.el.removeClass(this.focusClass);
+ }
+ this.hasFocus = false;
+ if(this.validationEvent !== false && (this.validateOnBlur || this.validationEvent == 'blur')){
+ this.validate();
+ }
+ var v = this.getValue();
+ if(String(v) !== String(this.startValue)){
+ this.fireEvent('change', this, v, this.startValue);
+ }
+ this.fireEvent('blur', this);
+ this.postBlur();
+ },
+
+
+ postBlur : Ext.emptyFn,
+
+
+ isValid : function(preventMark){
+ if(this.disabled){
+ return true;
+ }
+ var restore = this.preventMark;
+ this.preventMark = preventMark === true;
+ var v = this.validateValue(this.processValue(this.getRawValue()), preventMark);
+ this.preventMark = restore;
+ return v;
+ },
+
+
+ validate : function(){
+ if(this.disabled || this.validateValue(this.processValue(this.getRawValue()))){
+ this.clearInvalid();
+ return true;
+ }
+ return false;
+ },
+
+
+ processValue : function(value){
+ return value;
+ },
+
+
+ validateValue : function(value) {
+
+ var error = this.getErrors(value)[0];
+
+ if (error == undefined) {
+ return true;
+ } else {
+ this.markInvalid(error);
+ return false;
+ }
+ },
+
+
+ getErrors: function() {
+ return [];
+ },
+
+
+ getActiveError : function(){
+ return this.activeError || '';
+ },
+
+
+ markInvalid : function(msg){
+
+ if (this.rendered && !this.preventMark) {
+ msg = msg || this.invalidText;
+
+ var mt = this.getMessageHandler();
+ if(mt){
+ mt.mark(this, msg);
+ }else if(this.msgTarget){
+ this.el.addClass(this.invalidClass);
+ var t = Ext.getDom(this.msgTarget);
+ if(t){
+ t.innerHTML = msg;
+ t.style.display = this.msgDisplay;
+ }
+ }
+ }
+
+ this.setActiveError(msg);
+ },
+
+
+ clearInvalid : function(){
+
+ if (this.rendered && !this.preventMark) {
+ this.el.removeClass(this.invalidClass);
+ var mt = this.getMessageHandler();
+ if(mt){
+ mt.clear(this);
+ }else if(this.msgTarget){
+ this.el.removeClass(this.invalidClass);
+ var t = Ext.getDom(this.msgTarget);
+ if(t){
+ t.innerHTML = '';
+ t.style.display = 'none';
+ }
+ }
+ }
+
+ this.unsetActiveError();
+ },
+
+
+ setActiveError: function(msg, suppressEvent) {
+ this.activeError = msg;
+ if (suppressEvent !== true) this.fireEvent('invalid', this, msg);
+ },
+
+
+ unsetActiveError: function(suppressEvent) {
+ delete this.activeError;
+ if (suppressEvent !== true) this.fireEvent('valid', this);
+ },
+
+
+ getMessageHandler : function(){
+ return Ext.form.MessageTargets[this.msgTarget];
+ },
+
+
+ getErrorCt : function(){
+ return this.el.findParent('.x-form-element', 5, true) ||
+ this.el.findParent('.x-form-field-wrap', 5, true);
+ },
+
+
+ alignErrorEl : function(){
+ this.errorEl.setWidth(this.getErrorCt().getWidth(true) - 20);
+ },
+
+
+ alignErrorIcon : function(){
+ this.errorIcon.alignTo(this.el, 'tl-tr', [2, 0]);
+ },
+
+
+ getRawValue : function(){
+ var v = this.rendered ? this.el.getValue() : Ext.value(this.value, '');
+ if(v === this.emptyText){
+ v = '';
+ }
+ return v;
+ },
+
+
+ getValue : function(){
+ if(!this.rendered) {
+ return this.value;
+ }
+ var v = this.el.getValue();
+ if(v === this.emptyText || v === undefined){
+ v = '';
+ }
+ return v;
+ },
+
+
+ setRawValue : function(v){
+ return this.rendered ? (this.el.dom.value = (Ext.isEmpty(v) ? '' : v)) : '';
+ },
+
+
+ setValue : function(v){
+ this.value = v;
+ if(this.rendered){
+ this.el.dom.value = (Ext.isEmpty(v) ? '' : v);
+ this.validate();
+ }
+ return this;
+ },
+
+
+ append : function(v){
+ this.setValue([this.getValue(), v].join(''));
+ }
+
+
+
+
+
+});
+
+
+Ext.form.MessageTargets = {
+ 'qtip' : {
+ mark: function(field, msg){
+ field.el.addClass(field.invalidClass);
+ field.el.dom.qtip = msg;
+ field.el.dom.qclass = 'x-form-invalid-tip';
+ if(Ext.QuickTips){
+ Ext.QuickTips.enable();
+ }
+ },
+ clear: function(field){
+ field.el.removeClass(field.invalidClass);
+ field.el.dom.qtip = '';
+ }
+ },
+ 'title' : {
+ mark: function(field, msg){
+ field.el.addClass(field.invalidClass);
+ field.el.dom.title = msg;
+ },
+ clear: function(field){
+ field.el.dom.title = '';
+ }
+ },
+ 'under' : {
+ mark: function(field, msg){
+ field.el.addClass(field.invalidClass);
+ if(!field.errorEl){
+ var elp = field.getErrorCt();
+ if(!elp){
+ field.el.dom.title = msg;
+ return;
+ }
+ field.errorEl = elp.createChild({cls:'x-form-invalid-msg'});
+ field.on('resize', field.alignErrorEl, field);
+ field.on('destroy', function(){
+ Ext.destroy(this.errorEl);
+ }, field);
+ }
+ field.alignErrorEl();
+ field.errorEl.update(msg);
+ Ext.form.Field.msgFx[field.msgFx].show(field.errorEl, field);
+ },
+ clear: function(field){
+ field.el.removeClass(field.invalidClass);
+ if(field.errorEl){
+ Ext.form.Field.msgFx[field.msgFx].hide(field.errorEl, field);
+ }else{
+ field.el.dom.title = '';
+ }
+ }
+ },
+ 'side' : {
+ mark: function(field, msg){
+ field.el.addClass(field.invalidClass);
+ if(!field.errorIcon){
+ var elp = field.getErrorCt();
+
+ if(!elp){
+ field.el.dom.title = msg;
+ return;
+ }
+ field.errorIcon = elp.createChild({cls:'x-form-invalid-icon'});
+ if (field.ownerCt) {
+ field.ownerCt.on('afterlayout', field.alignErrorIcon, field);
+ field.ownerCt.on('expand', field.alignErrorIcon, field);
+ }
+ field.on('resize', field.alignErrorIcon, field);
+ field.on('destroy', function(){
+ Ext.destroy(this.errorIcon);
+ }, field);
+ }
+ field.alignErrorIcon();
+ field.errorIcon.dom.qtip = msg;
+ field.errorIcon.dom.qclass = 'x-form-invalid-tip';
+ field.errorIcon.show();
+ },
+ clear: function(field){
+ field.el.removeClass(field.invalidClass);
+ if(field.errorIcon){
+ field.errorIcon.dom.qtip = '';
+ field.errorIcon.hide();
+ }else{
+ field.el.dom.title = '';
+ }
+ }
+ }
+};
+
+
+Ext.form.Field.msgFx = {
+ normal : {
+ show: function(msgEl, f){
+ msgEl.setDisplayed('block');
+ },
+
+ hide : function(msgEl, f){
+ msgEl.setDisplayed(false).update('');
+ }
+ },
+
+ slide : {
+ show: function(msgEl, f){
+ msgEl.slideIn('t', {stopFx:true});
+ },
+
+ hide : function(msgEl, f){
+ msgEl.slideOut('t', {stopFx:true,useDisplay:true});
+ }
+ },
+
+ slideRight : {
+ show: function(msgEl, f){
+ msgEl.fixDisplay();
+ msgEl.alignTo(f.el, 'tl-tr');
+ msgEl.slideIn('l', {stopFx:true});
+ },
+
+ hide : function(msgEl, f){
+ msgEl.slideOut('l', {stopFx:true,useDisplay:true});
+ }
+ }
+};
+Ext.reg('field', Ext.form.Field);
+
+Ext.form.TextField = Ext.extend(Ext.form.Field, {
+
+
+
+ grow : false,
+
+ growMin : 30,
+
+ growMax : 800,
+
+ vtype : null,
+
+ maskRe : null,
+
+ disableKeyFilter : false,
+
+ allowBlank : true,
+
+ minLength : 0,
+
+ maxLength : Number.MAX_VALUE,
+
+ minLengthText : 'The minimum length for this field is {0}',
+
+ maxLengthText : 'The maximum length for this field is {0}',
+
+ selectOnFocus : false,
+
+ blankText : 'This field is required',
+
+ validator : null,
+
+ regex : null,
+
+ regexText : '',
+
+ emptyText : null,
+
+ emptyClass : 'x-form-empty-field',
+
+
+
+ initComponent : function(){
+ Ext.form.TextField.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'autosize',
+
+
+ 'keydown',
+
+ 'keyup',
+
+ 'keypress'
+ );
+ },
+
+
+ initEvents : function(){
+ Ext.form.TextField.superclass.initEvents.call(this);
+ if(this.validationEvent == 'keyup'){
+ this.validationTask = new Ext.util.DelayedTask(this.validate, this);
+ this.mon(this.el, 'keyup', this.filterValidation, this);
+ }
+ else if(this.validationEvent !== false && this.validationEvent != 'blur'){
+ this.mon(this.el, this.validationEvent, this.validate, this, {buffer: this.validationDelay});
+ }
+ if(this.selectOnFocus || this.emptyText){
+ this.mon(this.el, 'mousedown', this.onMouseDown, this);
+
+ if(this.emptyText){
+ this.applyEmptyText();
+ }
+ }
+ if(this.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Ext.form.VTypes[this.vtype+'Mask']))){
+ this.mon(this.el, 'keypress', this.filterKeys, this);
+ }
+ if(this.grow){
+ this.mon(this.el, 'keyup', this.onKeyUpBuffered, this, {buffer: 50});
+ this.mon(this.el, 'click', this.autoSize, this);
+ }
+ if(this.enableKeyEvents){
+ this.mon(this.el, {
+ scope: this,
+ keyup: this.onKeyUp,
+ keydown: this.onKeyDown,
+ keypress: this.onKeyPress
+ });
+ }
+ },
+
+ onMouseDown: function(e){
+ if(!this.hasFocus){
+ this.mon(this.el, 'mouseup', Ext.emptyFn, this, { single: true, preventDefault: true });
+ }
+ },
+
+ processValue : function(value){
+ if(this.stripCharsRe){
+ var newValue = value.replace(this.stripCharsRe, '');
+ if(newValue !== value){
+ this.setRawValue(newValue);
+ return newValue;
+ }
+ }
+ return value;
+ },
+
+ filterValidation : function(e){
+ if(!e.isNavKeyPress()){
+ this.validationTask.delay(this.validationDelay);
+ }
+ },
+
+
+ onDisable: function(){
+ Ext.form.TextField.superclass.onDisable.call(this);
+ if(Ext.isIE){
+ this.el.dom.unselectable = 'on';
+ }
+ },
+
+
+ onEnable: function(){
+ Ext.form.TextField.superclass.onEnable.call(this);
+ if(Ext.isIE){
+ this.el.dom.unselectable = '';
+ }
+ },
+
+
+ onKeyUpBuffered : function(e){
+ if(this.doAutoSize(e)){
+ this.autoSize();
+ }
+ },
+
+
+ doAutoSize : function(e){
+ return !e.isNavKeyPress();
+ },
+
+
+ onKeyUp : function(e){
+ this.fireEvent('keyup', this, e);
+ },
+
+
+ onKeyDown : function(e){
+ this.fireEvent('keydown', this, e);
+ },
+
+
+ onKeyPress : function(e){
+ this.fireEvent('keypress', this, e);
+ },
+
+
+ reset : function(){
+ Ext.form.TextField.superclass.reset.call(this);
+ this.applyEmptyText();
+ },
+
+ applyEmptyText : function(){
+ if(this.rendered && this.emptyText && this.getRawValue().length < 1 && !this.hasFocus){
+ this.setRawValue(this.emptyText);
+ this.el.addClass(this.emptyClass);
+ }
+ },
+
+
+ preFocus : function(){
+ var el = this.el,
+ isEmpty;
+ if(this.emptyText){
+ if(el.dom.value == this.emptyText){
+ this.setRawValue('');
+ isEmpty = true;
+ }
+ el.removeClass(this.emptyClass);
+ }
+ if(this.selectOnFocus || isEmpty){
+ el.dom.select();
+ }
+ },
+
+
+ postBlur : function(){
+ this.applyEmptyText();
+ },
+
+
+ filterKeys : function(e){
+ if(e.ctrlKey){
+ return;
+ }
+ var k = e.getKey();
+ if(Ext.isGecko && (e.isNavKeyPress() || k == e.BACKSPACE || (k == e.DELETE && e.button == -1))){
+ return;
+ }
+ var cc = String.fromCharCode(e.getCharCode());
+ if(!Ext.isGecko && e.isSpecialKey() && !cc){
+ return;
+ }
+ if(!this.maskRe.test(cc)){
+ e.stopEvent();
+ }
+ },
+
+ setValue : function(v){
+ if(this.emptyText && this.el && !Ext.isEmpty(v)){
+ this.el.removeClass(this.emptyClass);
+ }
+ Ext.form.TextField.superclass.setValue.apply(this, arguments);
+ this.applyEmptyText();
+ this.autoSize();
+ return this;
+ },
+
+
+ getErrors: function(value) {
+ var errors = Ext.form.TextField.superclass.getErrors.apply(this, arguments);
+
+ value = Ext.isDefined(value) ? value : this.processValue(this.getRawValue());
+
+ if (Ext.isFunction(this.validator)) {
+ var msg = this.validator(value);
+ if (msg !== true) {
+ errors.push(msg);
+ }
+ }
+
+ if (value.length < 1 || value === this.emptyText) {
+ if (this.allowBlank) {
+
+ return errors;
+ } else {
+ errors.push(this.blankText);
+ }
+ }
+
+ if (!this.allowBlank && (value.length < 1 || value === this.emptyText)) {
+ errors.push(this.blankText);
+ }
+
+ if (value.length < this.minLength) {
+ errors.push(String.format(this.minLengthText, this.minLength));
+ }
+
+ if (value.length > this.maxLength) {
+ errors.push(String.format(this.maxLengthText, this.maxLength));
+ }
+
+ if (this.vtype) {
+ var vt = Ext.form.VTypes;
+ if(!vt[this.vtype](value, this)){
+ errors.push(this.vtypeText || vt[this.vtype +'Text']);
+ }
+ }
+
+ if (this.regex && !this.regex.test(value)) {
+ errors.push(this.regexText);
+ }
+
+ return errors;
+ },
+
+
+ selectText : function(start, end){
+ var v = this.getRawValue();
+ var doFocus = false;
+ if(v.length > 0){
+ start = start === undefined ? 0 : start;
+ end = end === undefined ? v.length : end;
+ var d = this.el.dom;
+ if(d.setSelectionRange){
+ d.setSelectionRange(start, end);
+ }else if(d.createTextRange){
+ var range = d.createTextRange();
+ range.moveStart('character', start);
+ range.moveEnd('character', end-v.length);
+ range.select();
+ }
+ doFocus = Ext.isGecko || Ext.isOpera;
+ }else{
+ doFocus = true;
+ }
+ if(doFocus){
+ this.focus();
+ }
+ },
+
+
+ autoSize : function(){
+ if(!this.grow || !this.rendered){
+ return;
+ }
+ if(!this.metrics){
+ this.metrics = Ext.util.TextMetrics.createInstance(this.el);
+ }
+ var el = this.el;
+ var v = el.dom.value;
+ var d = document.createElement('div');
+ d.appendChild(document.createTextNode(v));
+ v = d.innerHTML;
+ Ext.removeNode(d);
+ d = null;
+ v += '&#160;';
+ var w = Math.min(this.growMax, Math.max(this.metrics.getWidth(v) + 10, this.growMin));
+ this.el.setWidth(w);
+ this.fireEvent('autosize', this, w);
+ },
+
+ onDestroy: function(){
+ if(this.validationTask){
+ this.validationTask.cancel();
+ this.validationTask = null;
+ }
+ Ext.form.TextField.superclass.onDestroy.call(this);
+ }
+});
+Ext.reg('textfield', Ext.form.TextField);
+
+Ext.form.TriggerField = Ext.extend(Ext.form.TextField, {
+
+
+
+ defaultAutoCreate : {tag: "input", type: "text", size: "16", autocomplete: "off"},
+
+ hideTrigger:false,
+
+ editable: true,
+
+ readOnly: false,
+
+ wrapFocusClass: 'x-trigger-wrap-focus',
+
+ autoSize: Ext.emptyFn,
+
+ monitorTab : true,
+
+ deferHeight : true,
+
+ mimicing : false,
+
+ actionMode: 'wrap',
+
+ defaultTriggerWidth: 17,
+
+
+ onResize : function(w, h){
+ Ext.form.TriggerField.superclass.onResize.call(this, w, h);
+ var tw = this.getTriggerWidth();
+ if(Ext.isNumber(w)){
+ this.el.setWidth(w - tw);
+ }
+ this.wrap.setWidth(this.el.getWidth() + tw);
+ },
+
+ getTriggerWidth: function(){
+ var tw = this.trigger.getWidth();
+ if(!this.hideTrigger && !this.readOnly && tw === 0){
+ tw = this.defaultTriggerWidth;
+ }
+ return tw;
+ },
+
+
+ alignErrorIcon : function(){
+ if(this.wrap){
+ this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]);
+ }
+ },
+
+
+ onRender : function(ct, position){
+ this.doc = Ext.isIE ? Ext.getBody() : Ext.getDoc();
+ Ext.form.TriggerField.superclass.onRender.call(this, ct, position);
+
+ this.wrap = this.el.wrap({cls: 'x-form-field-wrap x-form-field-trigger-wrap'});
+ this.trigger = this.wrap.createChild(this.triggerConfig ||
+ {tag: "img", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.triggerClass});
+ this.initTrigger();
+ if(!this.width){
+ this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth());
+ }
+ this.resizeEl = this.positionEl = this.wrap;
+ },
+
+ getWidth: function() {
+ return(this.el.getWidth() + this.trigger.getWidth());
+ },
+
+ updateEditState: function(){
+ if(this.rendered){
+ if (this.readOnly) {
+ this.el.dom.readOnly = true;
+ this.el.addClass('x-trigger-noedit');
+ this.mun(this.el, 'click', this.onTriggerClick, this);
+ this.trigger.setDisplayed(false);
+ } else {
+ if (!this.editable) {
+ this.el.dom.readOnly = true;
+ this.el.addClass('x-trigger-noedit');
+ this.mon(this.el, 'click', this.onTriggerClick, this);
+ } else {
+ this.el.dom.readOnly = false;
+ this.el.removeClass('x-trigger-noedit');
+ this.mun(this.el, 'click', this.onTriggerClick, this);
+ }
+ this.trigger.setDisplayed(!this.hideTrigger);
+ }
+ this.onResize(this.width || this.wrap.getWidth());
+ }
+ },
+
+
+ setHideTrigger: function(hideTrigger){
+ if(hideTrigger != this.hideTrigger){
+ this.hideTrigger = hideTrigger;
+ this.updateEditState();
+ }
+ },
+
+
+ setEditable: function(editable){
+ if(editable != this.editable){
+ this.editable = editable;
+ this.updateEditState();
+ }
+ },
+
+
+ setReadOnly: function(readOnly){
+ if(readOnly != this.readOnly){
+ this.readOnly = readOnly;
+ this.updateEditState();
+ }
+ },
+
+ afterRender : function(){
+ Ext.form.TriggerField.superclass.afterRender.call(this);
+ this.updateEditState();
+ },
+
+
+ initTrigger : function(){
+ this.mon(this.trigger, 'click', this.onTriggerClick, this, {preventDefault:true});
+ this.trigger.addClassOnOver('x-form-trigger-over');
+ this.trigger.addClassOnClick('x-form-trigger-click');
+ },
+
+
+ onDestroy : function(){
+ Ext.destroy(this.trigger, this.wrap);
+ if (this.mimicing){
+ this.doc.un('mousedown', this.mimicBlur, this);
+ }
+ delete this.doc;
+ Ext.form.TriggerField.superclass.onDestroy.call(this);
+ },
+
+
+ onFocus : function(){
+ Ext.form.TriggerField.superclass.onFocus.call(this);
+ if(!this.mimicing){
+ this.wrap.addClass(this.wrapFocusClass);
+ this.mimicing = true;
+ this.doc.on('mousedown', this.mimicBlur, this, {delay: 10});
+ if(this.monitorTab){
+ this.on('specialkey', this.checkTab, this);
+ }
+ }
+ },
+
+
+ checkTab : function(me, e){
+ if(e.getKey() == e.TAB){
+ this.triggerBlur();
+ }
+ },
+
+
+ onBlur : Ext.emptyFn,
+
+
+ mimicBlur : function(e){
+ if(!this.isDestroyed && !this.wrap.contains(e.target) && this.validateBlur(e)){
+ this.triggerBlur();
+ }
+ },
+
+
+ triggerBlur : function(){
+ this.mimicing = false;
+ this.doc.un('mousedown', this.mimicBlur, this);
+ if(this.monitorTab && this.el){
+ this.un('specialkey', this.checkTab, this);
+ }
+ Ext.form.TriggerField.superclass.onBlur.call(this);
+ if(this.wrap){
+ this.wrap.removeClass(this.wrapFocusClass);
+ }
+ },
+
+ beforeBlur : Ext.emptyFn,
+
+
+
+ validateBlur : function(e){
+ return true;
+ },
+
+
+ onTriggerClick : Ext.emptyFn
+
+
+
+
+});
+
+
+Ext.form.TwinTriggerField = Ext.extend(Ext.form.TriggerField, {
+
+
+
+
+ initComponent : function(){
+ Ext.form.TwinTriggerField.superclass.initComponent.call(this);
+
+ this.triggerConfig = {
+ tag:'span', cls:'x-form-twin-triggers', cn:[
+ {tag: "img", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.trigger1Class},
+ {tag: "img", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.trigger2Class}
+ ]};
+ },
+
+ getTrigger : function(index){
+ return this.triggers[index];
+ },
+
+ afterRender: function(){
+ Ext.form.TwinTriggerField.superclass.afterRender.call(this);
+ var triggers = this.triggers,
+ i = 0,
+ len = triggers.length;
+
+ for(; i < len; ++i){
+ if(this['hideTrigger' + (i + 1)]){
+ triggers[i].hide();
+ }
+
+ }
+ },
+
+ initTrigger : function(){
+ var ts = this.trigger.select('.x-form-trigger', true),
+ triggerField = this;
+
+ ts.each(function(t, all, index){
+ var triggerIndex = 'Trigger'+(index+1);
+ t.hide = function(){
+ var w = triggerField.wrap.getWidth();
+ this.dom.style.display = 'none';
+ triggerField.el.setWidth(w-triggerField.trigger.getWidth());
+ triggerField['hidden' + triggerIndex] = true;
+ };
+ t.show = function(){
+ var w = triggerField.wrap.getWidth();
+ this.dom.style.display = '';
+ triggerField.el.setWidth(w-triggerField.trigger.getWidth());
+ triggerField['hidden' + triggerIndex] = false;
+ };
+ this.mon(t, 'click', this['on'+triggerIndex+'Click'], this, {preventDefault:true});
+ t.addClassOnOver('x-form-trigger-over');
+ t.addClassOnClick('x-form-trigger-click');
+ }, this);
+ this.triggers = ts.elements;
+ },
+
+ getTriggerWidth: function(){
+ var tw = 0;
+ Ext.each(this.triggers, function(t, index){
+ var triggerIndex = 'Trigger' + (index + 1),
+ w = t.getWidth();
+ if(w === 0 && !this['hidden' + triggerIndex]){
+ tw += this.defaultTriggerWidth;
+ }else{
+ tw += w;
+ }
+ }, this);
+ return tw;
+ },
+
+
+ onDestroy : function() {
+ Ext.destroy(this.triggers);
+ Ext.form.TwinTriggerField.superclass.onDestroy.call(this);
+ },
+
+
+ onTrigger1Click : Ext.emptyFn,
+
+ onTrigger2Click : Ext.emptyFn
+});
+Ext.reg('trigger', Ext.form.TriggerField);
+Ext.reg('twintrigger', Ext.form.TwinTriggerField);
+Ext.form.TextArea = Ext.extend(Ext.form.TextField, {
+
+ growMin : 60,
+
+ growMax: 1000,
+ growAppend : '&#160;\n&#160;',
+
+ enterIsSpecial : false,
+
+
+ preventScrollbars: false,
+
+
+
+ onRender : function(ct, position){
+ if(!this.el){
+ this.defaultAutoCreate = {
+ tag: "textarea",
+ style:"width:100px;height:60px;",
+ autocomplete: "off"
+ };
+ }
+ Ext.form.TextArea.superclass.onRender.call(this, ct, position);
+ if(this.grow){
+ this.textSizeEl = Ext.DomHelper.append(document.body, {
+ tag: "pre", cls: "x-form-grow-sizer"
+ });
+ if(this.preventScrollbars){
+ this.el.setStyle("overflow", "hidden");
+ }
+ this.el.setHeight(this.growMin);
+ }
+ },
+
+ onDestroy : function(){
+ Ext.removeNode(this.textSizeEl);
+ Ext.form.TextArea.superclass.onDestroy.call(this);
+ },
+
+ fireKey : function(e){
+ if(e.isSpecialKey() && (this.enterIsSpecial || (e.getKey() != e.ENTER || e.hasModifier()))){
+ this.fireEvent("specialkey", this, e);
+ }
+ },
+
+
+ doAutoSize : function(e){
+ return !e.isNavKeyPress() || e.getKey() == e.ENTER;
+ },
+
+
+ filterValidation: function(e) {
+ if(!e.isNavKeyPress() || (!this.enterIsSpecial && e.keyCode == e.ENTER)){
+ this.validationTask.delay(this.validationDelay);
+ }
+ },
+
+
+ autoSize: function(){
+ if(!this.grow || !this.textSizeEl){
+ return;
+ }
+ var el = this.el,
+ v = Ext.util.Format.htmlEncode(el.dom.value),
+ ts = this.textSizeEl,
+ h;
+
+ Ext.fly(ts).setWidth(this.el.getWidth());
+ if(v.length < 1){
+ v = "&#160;&#160;";
+ }else{
+ v += this.growAppend;
+ if(Ext.isIE){
+ v = v.replace(/\n/g, '&#160;<br />');
+ }
+ }
+ ts.innerHTML = v;
+ h = Math.min(this.growMax, Math.max(ts.offsetHeight, this.growMin));
+ if(h != this.lastHeight){
+ this.lastHeight = h;
+ this.el.setHeight(h);
+ this.fireEvent("autosize", this, h);
+ }
+ }
+});
+Ext.reg('textarea', Ext.form.TextArea);
+Ext.form.NumberField = Ext.extend(Ext.form.TextField, {
+
+
+
+ fieldClass: "x-form-field x-form-num-field",
+
+
+ allowDecimals : true,
+
+
+ decimalSeparator : ".",
+
+
+ decimalPrecision : 2,
+
+
+ allowNegative : true,
+
+
+ minValue : Number.NEGATIVE_INFINITY,
+
+
+ maxValue : Number.MAX_VALUE,
+
+
+ minText : "The minimum value for this field is {0}",
+
+
+ maxText : "The maximum value for this field is {0}",
+
+
+ nanText : "{0} is not a valid number",
+
+
+ baseChars : "0123456789",
+
+
+ autoStripChars: false,
+
+
+ initEvents : function() {
+ var allowed = this.baseChars + '';
+ if (this.allowDecimals) {
+ allowed += this.decimalSeparator;
+ }
+ if (this.allowNegative) {
+ allowed += '-';
+ }
+ allowed = Ext.escapeRe(allowed);
+ this.maskRe = new RegExp('[' + allowed + ']');
+ if (this.autoStripChars) {
+ this.stripCharsRe = new RegExp('[^' + allowed + ']', 'gi');
+ }
+
+ Ext.form.NumberField.superclass.initEvents.call(this);
+ },
+
+
+ getErrors: function(value) {
+ var errors = Ext.form.NumberField.superclass.getErrors.apply(this, arguments);
+
+ value = Ext.isDefined(value) ? value : this.processValue(this.getRawValue());
+
+ if (value.length < 1) {
+ return errors;
+ }
+
+ value = String(value).replace(this.decimalSeparator, ".");
+
+ if(isNaN(value)){
+ errors.push(String.format(this.nanText, value));
+ }
+
+ var num = this.parseValue(value);
+
+ if (num < this.minValue) {
+ errors.push(String.format(this.minText, this.minValue));
+ }
+
+ if (num > this.maxValue) {
+ errors.push(String.format(this.maxText, this.maxValue));
+ }
+
+ return errors;
+ },
+
+ getValue : function() {
+ return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)));
+ },
+
+ setValue : function(v) {
+ v = Ext.isNumber(v) ? v : parseFloat(String(v).replace(this.decimalSeparator, "."));
+ v = this.fixPrecision(v);
+ v = isNaN(v) ? '' : String(v).replace(".", this.decimalSeparator);
+ return Ext.form.NumberField.superclass.setValue.call(this, v);
+ },
+
+
+ setMinValue : function(value) {
+ this.minValue = Ext.num(value, Number.NEGATIVE_INFINITY);
+ },
+
+
+ setMaxValue : function(value) {
+ this.maxValue = Ext.num(value, Number.MAX_VALUE);
+ },
+
+
+ parseValue : function(value) {
+ value = parseFloat(String(value).replace(this.decimalSeparator, "."));
+ return isNaN(value) ? '' : value;
+ },
+
+
+ fixPrecision : function(value) {
+ var nan = isNaN(value);
+
+ if (!this.allowDecimals || this.decimalPrecision == -1 || nan || !value) {
+ return nan ? '' : value;
+ }
+
+ return parseFloat(parseFloat(value).toFixed(this.decimalPrecision));
+ },
+
+ beforeBlur : function() {
+ var v = this.parseValue(this.getRawValue());
+
+ if (!Ext.isEmpty(v)) {
+ this.setValue(v);
+ }
+ }
+});
+
+Ext.reg('numberfield', Ext.form.NumberField);
+
+Ext.form.DateField = Ext.extend(Ext.form.TriggerField, {
+
+ format : "m/d/Y",
+
+ altFormats : "m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",
+
+ disabledDaysText : "Disabled",
+
+ disabledDatesText : "Disabled",
+
+ minText : "The date in this field must be equal to or after {0}",
+
+ maxText : "The date in this field must be equal to or before {0}",
+
+ invalidText : "{0} is not a valid date - it must be in the format {1}",
+
+ triggerClass : 'x-form-date-trigger',
+
+ showToday : true,
+
+
+ startDay : 0,
+
+
+
+
+
+
+
+
+ defaultAutoCreate : {tag: "input", type: "text", size: "10", autocomplete: "off"},
+
+
+
+ initTime: '12',
+
+ initTimeFormat: 'H',
+
+
+ safeParse : function(value, format) {
+ if (Date.formatContainsHourInfo(format)) {
+
+ return Date.parseDate(value, format);
+ } else {
+
+ var parsedDate = Date.parseDate(value + ' ' + this.initTime, format + ' ' + this.initTimeFormat);
+
+ if (parsedDate) {
+ return parsedDate.clearTime();
+ }
+ }
+ },
+
+ initComponent : function(){
+ Ext.form.DateField.superclass.initComponent.call(this);
+
+ this.addEvents(
+
+ 'select'
+ );
+
+ if(Ext.isString(this.minValue)){
+ this.minValue = this.parseDate(this.minValue);
+ }
+ if(Ext.isString(this.maxValue)){
+ this.maxValue = this.parseDate(this.maxValue);
+ }
+ this.disabledDatesRE = null;
+ this.initDisabledDays();
+ },
+
+ initEvents: function() {
+ Ext.form.DateField.superclass.initEvents.call(this);
+ this.keyNav = new Ext.KeyNav(this.el, {
+ "down": function(e) {
+ this.onTriggerClick();
+ },
+ scope: this,
+ forceKeyDown: true
+ });
+ },
+
+
+
+ initDisabledDays : function(){
+ if(this.disabledDates){
+ var dd = this.disabledDates,
+ len = dd.length - 1,
+ re = "(?:";
+
+ Ext.each(dd, function(d, i){
+ re += Ext.isDate(d) ? '^' + Ext.escapeRe(d.dateFormat(this.format)) + '$' : dd[i];
+ if(i != len){
+ re += '|';
+ }
+ }, this);
+ this.disabledDatesRE = new RegExp(re + ')');
+ }
+ },
+
+
+ setDisabledDates : function(dd){
+ this.disabledDates = dd;
+ this.initDisabledDays();
+ if(this.menu){
+ this.menu.picker.setDisabledDates(this.disabledDatesRE);
+ }
+ },
+
+
+ setDisabledDays : function(dd){
+ this.disabledDays = dd;
+ if(this.menu){
+ this.menu.picker.setDisabledDays(dd);
+ }
+ },
+
+
+ setMinValue : function(dt){
+ this.minValue = (Ext.isString(dt) ? this.parseDate(dt) : dt);
+ if(this.menu){
+ this.menu.picker.setMinDate(this.minValue);
+ }
+ },
+
+
+ setMaxValue : function(dt){
+ this.maxValue = (Ext.isString(dt) ? this.parseDate(dt) : dt);
+ if(this.menu){
+ this.menu.picker.setMaxDate(this.maxValue);
+ }
+ },
+
+
+ getErrors: function(value) {
+ var errors = Ext.form.DateField.superclass.getErrors.apply(this, arguments);
+
+ value = this.formatDate(value || this.processValue(this.getRawValue()));
+
+ if (value.length < 1) {
+ return errors;
+ }
+
+ var svalue = value;
+ value = this.parseDate(value);
+ if (!value) {
+ errors.push(String.format(this.invalidText, svalue, this.format));
+ return errors;
+ }
+
+ var time = value.getTime();
+ if (this.minValue && time < this.minValue.clearTime().getTime()) {
+ errors.push(String.format(this.minText, this.formatDate(this.minValue)));
+ }
+
+ if (this.maxValue && time > this.maxValue.clearTime().getTime()) {
+ errors.push(String.format(this.maxText, this.formatDate(this.maxValue)));
+ }
+
+ if (this.disabledDays) {
+ var day = value.getDay();
+
+ for(var i = 0; i < this.disabledDays.length; i++) {
+ if (day === this.disabledDays[i]) {
+ errors.push(this.disabledDaysText);
+ break;
+ }
+ }
+ }
+
+ var fvalue = this.formatDate(value);
+ if (this.disabledDatesRE && this.disabledDatesRE.test(fvalue)) {
+ errors.push(String.format(this.disabledDatesText, fvalue));
+ }
+
+ return errors;
+ },
+
+
+
+ validateBlur : function(){
+ return !this.menu || !this.menu.isVisible();
+ },
+
+
+ getValue : function(){
+ return this.parseDate(Ext.form.DateField.superclass.getValue.call(this)) || "";
+ },
+
+
+ setValue : function(date){
+ return Ext.form.DateField.superclass.setValue.call(this, this.formatDate(this.parseDate(date)));
+ },
+
+
+ parseDate : function(value) {
+ if(!value || Ext.isDate(value)){
+ return value;
+ }
+
+ var v = this.safeParse(value, this.format),
+ af = this.altFormats,
+ afa = this.altFormatsArray;
+
+ if (!v && af) {
+ afa = afa || af.split("|");
+
+ for (var i = 0, len = afa.length; i < len && !v; i++) {
+ v = this.safeParse(value, afa[i]);
+ }
+ }
+ return v;
+ },
+
+
+ onDestroy : function(){
+ Ext.destroy(this.menu, this.keyNav);
+ Ext.form.DateField.superclass.onDestroy.call(this);
+ },
+
+
+ formatDate : function(date){
+ return Ext.isDate(date) ? date.dateFormat(this.format) : date;
+ },
+
+
+
+
+ onTriggerClick : function(){
+ if(this.disabled){
+ return;
+ }
+ if(this.menu == null){
+ this.menu = new Ext.menu.DateMenu({
+ hideOnClick: false,
+ focusOnSelect: false
+ });
+ }
+ this.onFocus();
+ Ext.apply(this.menu.picker, {
+ minDate : this.minValue,
+ maxDate : this.maxValue,
+ disabledDatesRE : this.disabledDatesRE,
+ disabledDatesText : this.disabledDatesText,
+ disabledDays : this.disabledDays,
+ disabledDaysText : this.disabledDaysText,
+ format : this.format,
+ showToday : this.showToday,
+ startDay: this.startDay,
+ minText : String.format(this.minText, this.formatDate(this.minValue)),
+ maxText : String.format(this.maxText, this.formatDate(this.maxValue))
+ });
+ this.menu.picker.setValue(this.getValue() || new Date());
+ this.menu.show(this.el, "tl-bl?");
+ this.menuEvents('on');
+ },
+
+
+ menuEvents: function(method){
+ this.menu[method]('select', this.onSelect, this);
+ this.menu[method]('hide', this.onMenuHide, this);
+ this.menu[method]('show', this.onFocus, this);
+ },
+
+ onSelect: function(m, d){
+ this.setValue(d);
+ this.fireEvent('select', this, d);
+ this.menu.hide();
+ },
+
+ onMenuHide: function(){
+ this.focus(false, 60);
+ this.menuEvents('un');
+ },
+
+
+ beforeBlur : function(){
+ var v = this.parseDate(this.getRawValue());
+ if(v){
+ this.setValue(v);
+ }
+ }
+
+
+
+
+
+});
+Ext.reg('datefield', Ext.form.DateField);
+
+Ext.form.DisplayField = Ext.extend(Ext.form.Field, {
+ validationEvent : false,
+ validateOnBlur : false,
+ defaultAutoCreate : {tag: "div"},
+
+ fieldClass : "x-form-display-field",
+
+ htmlEncode: false,
+
+
+ initEvents : Ext.emptyFn,
+
+ isValid : function(){
+ return true;
+ },
+
+ validate : function(){
+ return true;
+ },
+
+ getRawValue : function(){
+ var v = this.rendered ? this.el.dom.innerHTML : Ext.value(this.value, '');
+ if(v === this.emptyText){
+ v = '';
+ }
+ if(this.htmlEncode){
+ v = Ext.util.Format.htmlDecode(v);
+ }
+ return v;
+ },
+
+ getValue : function(){
+ return this.getRawValue();
+ },
+
+ getName: function() {
+ return this.name;
+ },
+
+ setRawValue : function(v){
+ if(this.htmlEncode){
+ v = Ext.util.Format.htmlEncode(v);
+ }
+ return this.rendered ? (this.el.dom.innerHTML = (Ext.isEmpty(v) ? '' : v)) : (this.value = v);
+ },
+
+ setValue : function(v){
+ this.setRawValue(v);
+ return this;
+ }
+
+
+
+
+
+
+});
+
+Ext.reg('displayfield', Ext.form.DisplayField);
+
+Ext.form.ComboBox = Ext.extend(Ext.form.TriggerField, {
+
+
+
+
+
+
+
+ defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"},
+
+
+
+
+
+
+
+ listClass : '',
+
+ selectedClass : 'x-combo-selected',
+
+ listEmptyText: '',
+
+ triggerClass : 'x-form-arrow-trigger',
+
+ shadow : 'sides',
+
+ listAlign : 'tl-bl?',
+
+ maxHeight : 300,
+
+ minHeight : 90,
+
+ triggerAction : 'query',
+
+ minChars : 4,
+
+ autoSelect : true,
+
+ typeAhead : false,
+
+ queryDelay : 500,
+
+ pageSize : 0,
+
+ selectOnFocus : false,
+
+ queryParam : 'query',
+
+ loadingText : 'Loading...',
+
+ resizable : false,
+
+ handleHeight : 8,
+
+ allQuery: '',
+
+ mode: 'remote',
+
+ minListWidth : 70,
+
+ forceSelection : false,
+
+ typeAheadDelay : 250,
+
+
+
+ lazyInit : true,
+
+
+ clearFilterOnReset : true,
+
+
+ submitValue: undefined,
+
+
+
+
+ initComponent : function(){
+ Ext.form.ComboBox.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'expand',
+
+ 'collapse',
+
+
+ 'beforeselect',
+
+ 'select',
+
+ 'beforequery'
+ );
+ if(this.transform){
+ var s = Ext.getDom(this.transform);
+ if(!this.hiddenName){
+ this.hiddenName = s.name;
+ }
+ if(!this.store){
+ this.mode = 'local';
+ var d = [], opts = s.options;
+ for(var i = 0, len = opts.length;i < len; i++){
+ var o = opts[i],
+ value = (o.hasAttribute ? o.hasAttribute('value') : o.getAttributeNode('value').specified) ? o.value : o.text;
+ if(o.selected && Ext.isEmpty(this.value, true)) {
+ this.value = value;
+ }
+ d.push([value, o.text]);
+ }
+ this.store = new Ext.data.ArrayStore({
+ idIndex: 0,
+ fields: ['value', 'text'],
+ data : d,
+ autoDestroy: true
+ });
+ this.valueField = 'value';
+ this.displayField = 'text';
+ }
+ s.name = Ext.id();
+ if(!this.lazyRender){
+ this.target = true;
+ this.el = Ext.DomHelper.insertBefore(s, this.autoCreate || this.defaultAutoCreate);
+ this.render(this.el.parentNode, s);
+ }
+ Ext.removeNode(s);
+ }
+
+ else if(this.store){
+ this.store = Ext.StoreMgr.lookup(this.store);
+ if(this.store.autoCreated){
+ this.displayField = this.valueField = 'field1';
+ if(!this.store.expandData){
+ this.displayField = 'field2';
+ }
+ this.mode = 'local';
+ }
+ }
+
+ this.selectedIndex = -1;
+ if(this.mode == 'local'){
+ if(!Ext.isDefined(this.initialConfig.queryDelay)){
+ this.queryDelay = 10;
+ }
+ if(!Ext.isDefined(this.initialConfig.minChars)){
+ this.minChars = 0;
+ }
+ }
+ },
+
+
+ onRender : function(ct, position){
+ if(this.hiddenName && !Ext.isDefined(this.submitValue)){
+ this.submitValue = false;
+ }
+ Ext.form.ComboBox.superclass.onRender.call(this, ct, position);
+ if(this.hiddenName){
+ this.hiddenField = this.el.insertSibling({tag:'input', type:'hidden', name: this.hiddenName,
+ id: (this.hiddenId || Ext.id())}, 'before', true);
+
+ }
+ if(Ext.isGecko){
+ this.el.dom.setAttribute('autocomplete', 'off');
+ }
+
+ if(!this.lazyInit){
+ this.initList();
+ }else{
+ this.on('focus', this.initList, this, {single: true});
+ }
+ },
+
+
+ initValue : function(){
+ Ext.form.ComboBox.superclass.initValue.call(this);
+ if(this.hiddenField){
+ this.hiddenField.value =
+ Ext.value(Ext.isDefined(this.hiddenValue) ? this.hiddenValue : this.value, '');
+ }
+ },
+
+ getParentZIndex : function(){
+ var zindex;
+ if (this.ownerCt){
+ this.findParentBy(function(ct){
+ zindex = parseInt(ct.getPositionEl().getStyle('z-index'), 10);
+ return !!zindex;
+ });
+ }
+ return zindex;
+ },
+
+ getZIndex : function(listParent){
+ listParent = listParent || Ext.getDom(this.getListParent() || Ext.getBody());
+ var zindex = parseInt(Ext.fly(listParent).getStyle('z-index'), 10);
+ if(!zindex){
+ zindex = this.getParentZIndex();
+ }
+ return (zindex || 12000) + 5;
+ },
+
+
+ initList : function(){
+ if(!this.list){
+ var cls = 'x-combo-list',
+ listParent = Ext.getDom(this.getListParent() || Ext.getBody());
+
+ this.list = new Ext.Layer({
+ parentEl: listParent,
+ shadow: this.shadow,
+ cls: [cls, this.listClass].join(' '),
+ constrain:false,
+ zindex: this.getZIndex(listParent)
+ });
+
+ var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
+ this.list.setSize(lw, 0);
+ this.list.swallowEvent('mousewheel');
+ this.assetHeight = 0;
+ if(this.syncFont !== false){
+ this.list.setStyle('font-size', this.el.getStyle('font-size'));
+ }
+ if(this.title){
+ this.header = this.list.createChild({cls:cls+'-hd', html: this.title});
+ this.assetHeight += this.header.getHeight();
+ }
+
+ this.innerList = this.list.createChild({cls:cls+'-inner'});
+ this.mon(this.innerList, 'mouseover', this.onViewOver, this);
+ this.mon(this.innerList, 'mousemove', this.onViewMove, this);
+ this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
+
+ if(this.pageSize){
+ this.footer = this.list.createChild({cls:cls+'-ft'});
+ this.pageTb = new Ext.PagingToolbar({
+ store: this.store,
+ pageSize: this.pageSize,
+ renderTo:this.footer
+ });
+ this.assetHeight += this.footer.getHeight();
+ }
+
+ if(!this.tpl){
+
+ this.tpl = '<tpl for="."><div class="'+cls+'-item">{' + this.displayField + '}</div></tpl>';
+
+ }
+
+
+ this.view = new Ext.DataView({
+ applyTo: this.innerList,
+ tpl: this.tpl,
+ singleSelect: true,
+ selectedClass: this.selectedClass,
+ itemSelector: this.itemSelector || '.' + cls + '-item',
+ emptyText: this.listEmptyText,
+ deferEmptyText: false
+ });
+
+ this.mon(this.view, {
+ containerclick : this.onViewClick,
+ click : this.onViewClick,
+ scope :this
+ });
+
+ this.bindStore(this.store, true);
+
+ if(this.resizable){
+ this.resizer = new Ext.Resizable(this.list, {
+ pinned:true, handles:'se'
+ });
+ this.mon(this.resizer, 'resize', function(r, w, h){
+ this.maxHeight = h-this.handleHeight-this.list.getFrameWidth('tb')-this.assetHeight;
+ this.listWidth = w;
+ this.innerList.setWidth(w - this.list.getFrameWidth('lr'));
+ this.restrictHeight();
+ }, this);
+
+ this[this.pageSize?'footer':'innerList'].setStyle('margin-bottom', this.handleHeight+'px');
+ }
+ }
+ },
+
+
+ getListParent : function() {
+ return document.body;
+ },
+
+
+ getStore : function(){
+ return this.store;
+ },
+
+
+ bindStore : function(store, initial){
+ if(this.store && !initial){
+ if(this.store !== store && this.store.autoDestroy){
+ this.store.destroy();
+ }else{
+ this.store.un('beforeload', this.onBeforeLoad, this);
+ this.store.un('load', this.onLoad, this);
+ this.store.un('exception', this.collapse, this);
+ }
+ if(!store){
+ this.store = null;
+ if(this.view){
+ this.view.bindStore(null);
+ }
+ if(this.pageTb){
+ this.pageTb.bindStore(null);
+ }
+ }
+ }
+ if(store){
+ if(!initial) {
+ this.lastQuery = null;
+ if(this.pageTb) {
+ this.pageTb.bindStore(store);
+ }
+ }
+
+ this.store = Ext.StoreMgr.lookup(store);
+ this.store.on({
+ scope: this,
+ beforeload: this.onBeforeLoad,
+ load: this.onLoad,
+ exception: this.collapse
+ });
+
+ if(this.view){
+ this.view.bindStore(store);
+ }
+ }
+ },
+
+ reset : function(){
+ if(this.clearFilterOnReset && this.mode == 'local'){
+ this.store.clearFilter();
+ }
+ Ext.form.ComboBox.superclass.reset.call(this);
+ },
+
+
+ initEvents : function(){
+ Ext.form.ComboBox.superclass.initEvents.call(this);
+
+
+ this.keyNav = new Ext.KeyNav(this.el, {
+ "up" : function(e){
+ this.inKeyMode = true;
+ this.selectPrev();
+ },
+
+ "down" : function(e){
+ if(!this.isExpanded()){
+ this.onTriggerClick();
+ }else{
+ this.inKeyMode = true;
+ this.selectNext();
+ }
+ },
+
+ "enter" : function(e){
+ this.onViewClick();
+ },
+
+ "esc" : function(e){
+ this.collapse();
+ },
+
+ "tab" : function(e){
+ if (this.forceSelection === true) {
+ this.collapse();
+ } else {
+ this.onViewClick(false);
+ }
+ return true;
+ },
+
+ scope : this,
+
+ doRelay : function(e, h, hname){
+ if(hname == 'down' || this.scope.isExpanded()){
+
+ var relay = Ext.KeyNav.prototype.doRelay.apply(this, arguments);
+ if((((Ext.isIE9 && Ext.isStrict) || Ext.isIE10p) || !Ext.isIE) && Ext.EventManager.useKeydown){
+
+ this.scope.fireKey(e);
+ }
+ return relay;
+ }
+ return true;
+ },
+
+ forceKeyDown : true,
+ defaultEventAction: 'stopEvent'
+ });
+ this.queryDelay = Math.max(this.queryDelay || 10,
+ this.mode == 'local' ? 10 : 250);
+ this.dqTask = new Ext.util.DelayedTask(this.initQuery, this);
+ if(this.typeAhead){
+ this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this);
+ }
+ if(!this.enableKeyEvents){
+ this.mon(this.el, 'keyup', this.onKeyUp, this);
+ }
+ },
+
+
+
+ onDestroy : function(){
+ if (this.dqTask){
+ this.dqTask.cancel();
+ this.dqTask = null;
+ }
+ this.bindStore(null);
+ Ext.destroy(
+ this.resizer,
+ this.view,
+ this.pageTb,
+ this.list
+ );
+ Ext.destroyMembers(this, 'hiddenField');
+ Ext.form.ComboBox.superclass.onDestroy.call(this);
+ },
+
+
+ fireKey : function(e){
+ if (!this.isExpanded()) {
+ Ext.form.ComboBox.superclass.fireKey.call(this, e);
+ }
+ },
+
+
+ onResize : function(w, h){
+ Ext.form.ComboBox.superclass.onResize.apply(this, arguments);
+ if(!isNaN(w) && this.isVisible() && this.list){
+ this.doResize(w);
+ }else{
+ this.bufferSize = w;
+ }
+ },
+
+ doResize: function(w){
+ if(!Ext.isDefined(this.listWidth)){
+ var lw = Math.max(w, this.minListWidth);
+ this.list.setWidth(lw);
+ this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
+ }
+ },
+
+
+ onEnable : function(){
+ Ext.form.ComboBox.superclass.onEnable.apply(this, arguments);
+ if(this.hiddenField){
+ this.hiddenField.disabled = false;
+ }
+ },
+
+
+ onDisable : function(){
+ Ext.form.ComboBox.superclass.onDisable.apply(this, arguments);
+ if(this.hiddenField){
+ this.hiddenField.disabled = true;
+ }
+ },
+
+
+ onBeforeLoad : function(){
+ if(!this.hasFocus){
+ return;
+ }
+ this.innerList.update(this.loadingText ?
+ '<div class="loading-indicator">'+this.loadingText+'</div>' : '');
+ this.restrictHeight();
+ this.selectedIndex = -1;
+ },
+
+
+ onLoad : function(){
+ if(!this.hasFocus){
+ return;
+ }
+ if(this.store.getCount() > 0 || this.listEmptyText){
+ this.expand();
+ this.restrictHeight();
+ if(this.lastQuery == this.allQuery){
+ if(this.editable){
+ this.el.dom.select();
+ }
+
+ if(this.autoSelect !== false && !this.selectByValue(this.value, true)){
+ this.select(0, true);
+ }
+ }else{
+ if(this.autoSelect !== false){
+ this.selectNext();
+ }
+ if(this.typeAhead && this.lastKey != Ext.EventObject.BACKSPACE && this.lastKey != Ext.EventObject.DELETE){
+ this.taTask.delay(this.typeAheadDelay);
+ }
+ }
+ }else{
+ this.collapse();
+ }
+
+ },
+
+
+ onTypeAhead : function(){
+ if(this.store.getCount() > 0){
+ var r = this.store.getAt(0);
+ var newValue = r.data[this.displayField];
+ var len = newValue.length;
+ var selStart = this.getRawValue().length;
+ if(selStart != len){
+ this.setRawValue(newValue);
+ this.selectText(selStart, newValue.length);
+ }
+ }
+ },
+
+
+ assertValue : function(){
+ var val = this.getRawValue(),
+ rec;
+
+ if(this.valueField && Ext.isDefined(this.value)){
+ rec = this.findRecord(this.valueField, this.value);
+ }
+ if(!rec || rec.get(this.displayField) != val){
+ rec = this.findRecord(this.displayField, val);
+ }
+ if(!rec && this.forceSelection){
+ if(val.length > 0 && val != this.emptyText){
+ this.el.dom.value = Ext.value(this.lastSelectionText, '');
+ this.applyEmptyText();
+ }else{
+ this.clearValue();
+ }
+ }else{
+ if(rec && this.valueField){
+
+
+
+ if (this.value == val){
+ return;
+ }
+ val = rec.get(this.valueField || this.displayField);
+ }
+ this.setValue(val);
+ }
+ },
+
+
+ onSelect : function(record, index){
+ if(this.fireEvent('beforeselect', this, record, index) !== false){
+ this.setValue(record.data[this.valueField || this.displayField]);
+ this.collapse();
+ this.fireEvent('select', this, record, index);
+ }
+ },
+
+
+ getName: function(){
+ var hf = this.hiddenField;
+ return hf && hf.name ? hf.name : this.hiddenName || Ext.form.ComboBox.superclass.getName.call(this);
+ },
+
+
+ getValue : function(){
+ if(this.valueField){
+ return Ext.isDefined(this.value) ? this.value : '';
+ }else{
+ return Ext.form.ComboBox.superclass.getValue.call(this);
+ }
+ },
+
+
+ clearValue : function(){
+ if(this.hiddenField){
+ this.hiddenField.value = '';
+ }
+ this.setRawValue('');
+ this.lastSelectionText = '';
+ this.applyEmptyText();
+ this.value = '';
+ },
+
+
+ setValue : function(v){
+ var text = v;
+ if(this.valueField){
+ var r = this.findRecord(this.valueField, v);
+ if(r){
+ text = r.data[this.displayField];
+ }else if(Ext.isDefined(this.valueNotFoundText)){
+ text = this.valueNotFoundText;
+ }
+ }
+ this.lastSelectionText = text;
+ if(this.hiddenField){
+ this.hiddenField.value = Ext.value(v, '');
+ }
+ Ext.form.ComboBox.superclass.setValue.call(this, text);
+ this.value = v;
+ return this;
+ },
+
+
+ findRecord : function(prop, value){
+ var record;
+ if(this.store.getCount() > 0){
+ this.store.each(function(r){
+ if(r.data[prop] == value){
+ record = r;
+ return false;
+ }
+ });
+ }
+ return record;
+ },
+
+
+ onViewMove : function(e, t){
+ this.inKeyMode = false;
+ },
+
+
+ onViewOver : function(e, t){
+ if(this.inKeyMode){
+ return;
+ }
+ var item = this.view.findItemFromChild(t);
+ if(item){
+ var index = this.view.indexOf(item);
+ this.select(index, false);
+ }
+ },
+
+
+ onViewClick : function(doFocus){
+ var index = this.view.getSelectedIndexes()[0],
+ s = this.store,
+ r = s.getAt(index);
+ if(r){
+ this.onSelect(r, index);
+ }else {
+ this.collapse();
+ }
+ if(doFocus !== false){
+ this.el.focus();
+ }
+ },
+
+
+
+ restrictHeight : function(){
+ this.innerList.dom.style.height = '';
+ var inner = this.innerList.dom,
+ pad = this.list.getFrameWidth('tb') + (this.resizable ? this.handleHeight : 0) + this.assetHeight,
+ h = Math.max(inner.clientHeight, inner.offsetHeight, inner.scrollHeight),
+ ha = this.getPosition()[1]-Ext.getBody().getScroll().top,
+ hb = Ext.lib.Dom.getViewHeight()-ha-this.getSize().height,
+ space = Math.max(ha, hb, this.minHeight || 0)-this.list.shadowOffset-pad-5;
+
+ h = Math.min(h, space, this.maxHeight);
+
+ this.innerList.setHeight(h);
+ this.list.beginUpdate();
+ this.list.setHeight(h+pad);
+ this.list.alignTo.apply(this.list, [this.el].concat(this.listAlign));
+ this.list.endUpdate();
+ },
+
+
+ isExpanded : function(){
+ return this.list && this.list.isVisible();
+ },
+
+
+ selectByValue : function(v, scrollIntoView){
+ if(!Ext.isEmpty(v, true)){
+ var r = this.findRecord(this.valueField || this.displayField, v);
+ if(r){
+ this.select(this.store.indexOf(r), scrollIntoView);
+ return true;
+ }
+ }
+ return false;
+ },
+
+
+ select : function(index, scrollIntoView){
+ this.selectedIndex = index;
+ this.view.select(index);
+ if(scrollIntoView !== false){
+ var el = this.view.getNode(index);
+ if(el){
+ this.innerList.scrollChildIntoView(el, false);
+ }
+ }
+
+ },
+
+
+ selectNext : function(){
+ var ct = this.store.getCount();
+ if(ct > 0){
+ if(this.selectedIndex == -1){
+ this.select(0);
+ }else if(this.selectedIndex < ct-1){
+ this.select(this.selectedIndex+1);
+ }
+ }
+ },
+
+
+ selectPrev : function(){
+ var ct = this.store.getCount();
+ if(ct > 0){
+ if(this.selectedIndex == -1){
+ this.select(0);
+ }else if(this.selectedIndex !== 0){
+ this.select(this.selectedIndex-1);
+ }
+ }
+ },
+
+
+ onKeyUp : function(e){
+ var k = e.getKey();
+ if(this.editable !== false && this.readOnly !== true && (k == e.BACKSPACE || !e.isSpecialKey())){
+
+ this.lastKey = k;
+ this.dqTask.delay(this.queryDelay);
+ }
+ Ext.form.ComboBox.superclass.onKeyUp.call(this, e);
+ },
+
+
+ validateBlur : function(){
+ return !this.list || !this.list.isVisible();
+ },
+
+
+ initQuery : function(){
+ this.doQuery(this.getRawValue());
+ },
+
+
+ beforeBlur : function(){
+ this.assertValue();
+ },
+
+
+ postBlur : function(){
+ Ext.form.ComboBox.superclass.postBlur.call(this);
+ this.collapse();
+ this.inKeyMode = false;
+ },
+
+
+ doQuery : function(q, forceAll){
+ q = Ext.isEmpty(q) ? '' : q;
+ var qe = {
+ query: q,
+ forceAll: forceAll,
+ combo: this,
+ cancel:false
+ };
+ if(this.fireEvent('beforequery', qe)===false || qe.cancel){
+ return false;
+ }
+ q = qe.query;
+ forceAll = qe.forceAll;
+ if(forceAll === true || (q.length >= this.minChars)){
+ if(this.lastQuery !== q){
+ this.lastQuery = q;
+ if(this.mode == 'local'){
+ this.selectedIndex = -1;
+ if(forceAll){
+ this.store.clearFilter();
+ }else{
+ this.store.filter(this.displayField, q);
+ }
+ this.onLoad();
+ }else{
+ this.store.baseParams[this.queryParam] = q;
+ this.store.load({
+ params: this.getParams(q)
+ });
+ this.expand();
+ }
+ }else{
+ this.selectedIndex = -1;
+ this.onLoad();
+ }
+ }
+ },
+
+
+ getParams : function(q){
+ var params = {},
+ paramNames = this.store.paramNames;
+ if(this.pageSize){
+ params[paramNames.start] = 0;
+ params[paramNames.limit] = this.pageSize;
+ }
+ return params;
+ },
+
+
+ collapse : function(){
+ if(!this.isExpanded()){
+ return;
+ }
+ this.list.hide();
+ Ext.getDoc().un('mousewheel', this.collapseIf, this);
+ Ext.getDoc().un('mousedown', this.collapseIf, this);
+ this.fireEvent('collapse', this);
+ },
+
+
+ collapseIf : function(e){
+ if(!this.isDestroyed && !e.within(this.wrap) && !e.within(this.list)){
+ this.collapse();
+ }
+ },
+
+
+ expand : function(){
+ if(this.isExpanded() || !this.hasFocus){
+ return;
+ }
+
+ if(this.title || this.pageSize){
+ this.assetHeight = 0;
+ if(this.title){
+ this.assetHeight += this.header.getHeight();
+ }
+ if(this.pageSize){
+ this.assetHeight += this.footer.getHeight();
+ }
+ }
+
+ if(this.bufferSize){
+ this.doResize(this.bufferSize);
+ delete this.bufferSize;
+ }
+ this.list.alignTo.apply(this.list, [this.el].concat(this.listAlign));
+
+
+ this.list.setZIndex(this.getZIndex());
+ this.list.show();
+ if(Ext.isGecko2){
+ this.innerList.setOverflow('auto');
+ }
+ this.mon(Ext.getDoc(), {
+ scope: this,
+ mousewheel: this.collapseIf,
+ mousedown: this.collapseIf
+ });
+ this.fireEvent('expand', this);
+ },
+
+
+
+
+ onTriggerClick : function(){
+ if(this.readOnly || this.disabled){
+ return;
+ }
+ if(this.isExpanded()){
+ this.collapse();
+ this.el.focus();
+ }else {
+ this.onFocus({});
+ if(this.triggerAction == 'all') {
+ this.doQuery(this.allQuery, true);
+ } else {
+ this.doQuery(this.getRawValue());
+ }
+ this.el.focus();
+ }
+ }
+
+
+
+
+
+
+});
+Ext.reg('combo', Ext.form.ComboBox);
+
+Ext.form.Checkbox = Ext.extend(Ext.form.Field, {
+
+ focusClass : undefined,
+
+ fieldClass : 'x-form-field',
+
+ checked : false,
+
+ boxLabel: '&#160;',
+
+ defaultAutoCreate : { tag: 'input', type: 'checkbox', autocomplete: 'off'},
+
+
+
+
+
+ actionMode : 'wrap',
+
+
+ initComponent : function(){
+ Ext.form.Checkbox.superclass.initComponent.call(this);
+ this.addEvents(
+
+ 'check'
+ );
+ },
+
+
+ onResize : function(){
+ Ext.form.Checkbox.superclass.onResize.apply(this, arguments);
+ if(!this.boxLabel && !this.fieldLabel){
+ this.el.alignTo(this.wrap, 'c-c');
+ }
+ },
+
+
+ initEvents : function(){
+ Ext.form.Checkbox.superclass.initEvents.call(this);
+ this.mon(this.el, {
+ scope: this,
+ click: this.onClick,
+ change: this.onClick
+ });
+ },
+
+
+ markInvalid : Ext.emptyFn,
+
+ clearInvalid : Ext.emptyFn,
+
+
+ onRender : function(ct, position){
+ Ext.form.Checkbox.superclass.onRender.call(this, ct, position);
+ if(this.inputValue !== undefined){
+ this.el.dom.value = this.inputValue;
+ }
+ this.wrap = this.el.wrap({cls: 'x-form-check-wrap'});
+ if(this.boxLabel){
+ this.wrap.createChild({tag: 'label', htmlFor: this.el.id, cls: 'x-form-cb-label', html: this.boxLabel});
+ }
+ if(this.checked){
+ this.setValue(true);
+ }else{
+ this.checked = this.el.dom.checked;
+ }
+
+ if (Ext.isIEQuirks) {
+ this.wrap.repaint();
+ }
+ this.resizeEl = this.positionEl = this.wrap;
+ },
+
+
+ onDestroy : function(){
+ Ext.destroy(this.wrap);
+ Ext.form.Checkbox.superclass.onDestroy.call(this);
+ },
+
+
+ initValue : function() {
+ this.originalValue = this.getValue();
+ },
+
+
+ getValue : function(){
+ if(this.rendered){
+ return this.el.dom.checked;
+ }
+ return this.checked;
+ },
+
+
+ onClick : function(){
+ if(this.el.dom.checked != this.checked){
+ this.setValue(this.el.dom.checked);
+ }
+ },
+
+
+ setValue : function(v){
+ var checked = this.checked,
+ inputVal = this.inputValue;
+
+ if (v === false) {
+ this.checked = false;
+ } else {
+ this.checked = (v === true || v === 'true' || v == '1' || (inputVal ? v == inputVal : String(v).toLowerCase() == 'on'));
+ }
+
+ if(this.rendered){
+ this.el.dom.checked = this.checked;
+ this.el.dom.defaultChecked = this.checked;
+ }
+ if(checked != this.checked){
+ this.fireEvent('check', this, this.checked);
+ if(this.handler){
+ this.handler.call(this.scope || this, this, this.checked);
+ }
+ }
+ return this;
+ }
+});
+Ext.reg('checkbox', Ext.form.Checkbox);
+
+Ext.form.CheckboxGroup = Ext.extend(Ext.form.Field, {
+
+
+ columns : 'auto',
+
+ vertical : false,
+
+ allowBlank : true,
+
+ blankText : "You must select at least one item in this group",
+
+
+ defaultType : 'checkbox',
+
+
+ groupCls : 'x-form-check-group',
+
+
+ initComponent: function(){
+ this.addEvents(
+
+ 'change'
+ );
+ this.on('change', this.validate, this);
+ Ext.form.CheckboxGroup.superclass.initComponent.call(this);
+ },
+
+
+ onRender : function(ct, position){
+ if(!this.el){
+ var panelCfg = {
+ autoEl: {
+ id: this.id
+ },
+ cls: this.groupCls,
+ layout: 'column',
+ renderTo: ct,
+ bufferResize: false
+ };
+ var colCfg = {
+ xtype: 'container',
+ defaultType: this.defaultType,
+ layout: 'form',
+ defaults: {
+ hideLabel: true,
+ anchor: '100%'
+ }
+ };
+
+ if(this.items[0].items){
+
+
+
+ Ext.apply(panelCfg, {
+ layoutConfig: {columns: this.items.length},
+ defaults: this.defaults,
+ items: this.items
+ });
+ for(var i=0, len=this.items.length; i<len; i++){
+ Ext.applyIf(this.items[i], colCfg);
+ }
+
+ }else{
+
+
+
+
+ var numCols, cols = [];
+
+ if(typeof this.columns == 'string'){
+ this.columns = this.items.length;
+ }
+ if(!Ext.isArray(this.columns)){
+ var cs = [];
+ for(var i=0; i<this.columns; i++){
+ cs.push((100/this.columns)*.01);
+ }
+ this.columns = cs;
+ }
+
+ numCols = this.columns.length;
+
+
+ for(var i=0; i<numCols; i++){
+ var cc = Ext.apply({items:[]}, colCfg);
+ cc[this.columns[i] <= 1 ? 'columnWidth' : 'width'] = this.columns[i];
+ if(this.defaults){
+ cc.defaults = Ext.apply(cc.defaults || {}, this.defaults);
+ }
+ cols.push(cc);
+ };
+
+
+ if(this.vertical){
+ var rows = Math.ceil(this.items.length / numCols), ri = 0;
+ for(var i=0, len=this.items.length; i<len; i++){
+ if(i>0 && i%rows==0){
+ ri++;
+ }
+ if(this.items[i].fieldLabel){
+ this.items[i].hideLabel = false;
+ }
+ cols[ri].items.push(this.items[i]);
+ };
+ }else{
+ for(var i=0, len=this.items.length; i<len; i++){
+ var ci = i % numCols;
+ if(this.items[i].fieldLabel){
+ this.items[i].hideLabel = false;
+ }
+ cols[ci].items.push(this.items[i]);
+ };
+ }
+
+ Ext.apply(panelCfg, {
+ layoutConfig: {columns: numCols},
+ items: cols
+ });
+ }
+
+ this.panel = new Ext.Container(panelCfg);
+ this.panel.ownerCt = this;
+ this.el = this.panel.getEl();
+
+ if(this.forId && this.itemCls){
+ var l = this.el.up(this.itemCls).child('label', true);
+ if(l){
+ l.setAttribute('htmlFor', this.forId);
+ }
+ }
+
+ var fields = this.panel.findBy(function(c){
+ return c.isFormField;
+ }, this);
+
+ this.items = new Ext.util.MixedCollection();
+ this.items.addAll(fields);
+ }
+ Ext.form.CheckboxGroup.superclass.onRender.call(this, ct, position);
+ },
+
+ initValue : function(){
+ if(this.value){
+ this.setValue.apply(this, this.buffered ? this.value : [this.value]);
+ delete this.buffered;
+ delete this.value;
+ }
+ },
+
+ afterRender : function(){
+ Ext.form.CheckboxGroup.superclass.afterRender.call(this);
+ this.eachItem(function(item){
+ item.on('check', this.fireChecked, this);
+ item.inGroup = true;
+ });
+ },
+
+
+ doLayout: function(){
+
+ if(this.rendered){
+ this.panel.forceLayout = this.ownerCt.forceLayout;
+ this.panel.doLayout();
+ }
+ },
+
+
+ fireChecked: function(){
+ var arr = [];
+ this.eachItem(function(item){
+ if(item.checked){
+ arr.push(item);
+ }
+ });
+ this.fireEvent('change', this, arr);
+ },
+
+
+ getErrors: function() {
+ var errors = Ext.form.CheckboxGroup.superclass.getErrors.apply(this, arguments);
+
+ if (!this.allowBlank) {
+ var blank = true;
+
+ this.eachItem(function(f){
+ if (f.checked) {
+ return (blank = false);
+ }
+ });
+
+ if (blank) errors.push(this.blankText);
+ }
+
+ return errors;
+ },
+
+
+ isDirty: function(){
+
+ if (this.disabled || !this.rendered) {
+ return false;
+ }
+
+ var dirty = false;
+
+ this.eachItem(function(item){
+ if(item.isDirty()){
+ dirty = true;
+ return false;
+ }
+ });
+
+ return dirty;
+ },
+
+
+ setReadOnly : function(readOnly){
+ if(this.rendered){
+ this.eachItem(function(item){
+ item.setReadOnly(readOnly);
+ });
+ }
+ this.readOnly = readOnly;
+ },
+
+
+ onDisable : function(){
+ this.eachItem(function(item){
+ item.disable();
+ });
+ },
+
+
+ onEnable : function(){
+ this.eachItem(function(item){
+ item.enable();
+ });
+ },
+
+
+ onResize : function(w, h){
+ this.panel.setSize(w, h);
+ this.panel.doLayout();
+ },
+
+
+ reset : function(){
+ if (this.originalValue) {
+
+ this.eachItem(function(c){
+ if(c.setValue){
+ c.setValue(false);
+ c.originalValue = c.getValue();
+ }
+ });
+
+
+ this.resetOriginal = true;
+ this.setValue(this.originalValue);
+ delete this.resetOriginal;
+ } else {
+ this.eachItem(function(c){
+ if(c.reset){
+ c.reset();
+ }
+ });
+ }
+
+
+ (function() {
+ this.clearInvalid();
+ }).defer(50, this);
+ },
+
+
+ setValue: function(){
+ if(this.rendered){
+ this.onSetValue.apply(this, arguments);
+ }else{
+ this.buffered = true;
+ this.value = arguments;
+ }
+ return this;
+ },
+
+
+ onSetValue: function(id, value){
+ if(arguments.length == 1){
+ if(Ext.isArray(id)){
+ Ext.each(id, function(val, idx){
+ if (Ext.isObject(val) && val.setValue){
+ val.setValue(true);
+ if (this.resetOriginal === true) {
+ val.originalValue = val.getValue();
+ }
+ } else {
+ var item = this.items.itemAt(idx);
+ if(item){
+ item.setValue(val);
+ }
+ }
+ }, this);
+ }else if(Ext.isObject(id)){
+
+ for(var i in id){
+ var f = this.getBox(i);
+ if(f){
+ f.setValue(id[i]);
+ }
+ }
+ }else{
+ this.setValueForItem(id);
+ }
+ }else{
+ var f = this.getBox(id);
+ if(f){
+ f.setValue(value);
+ }
+ }
+ },
+
+
+ beforeDestroy: function(){
+ Ext.destroy(this.panel);
+ if (!this.rendered) {
+ Ext.destroy(this.items);
+ }
+ Ext.form.CheckboxGroup.superclass.beforeDestroy.call(this);
+
+ },
+
+ setValueForItem : function(val){
+ val = String(val).split(',');
+ this.eachItem(function(item){
+ if(val.indexOf(item.inputValue)> -1){
+ item.setValue(true);
+ }
+ });
+ },
+
+
+ getBox : function(id){
+ var box = null;
+ this.eachItem(function(f){
+ if(id == f || f.dataIndex == id || f.id == id || f.getName() == id){
+ box = f;
+ return false;
+ }
+ });
+ return box;
+ },
+
+
+ getValue : function(){
+ var out = [];
+ this.eachItem(function(item){
+ if(item.checked){
+ out.push(item);
+ }
+ });
+ return out;
+ },
+
+
+ eachItem: function(fn, scope) {
+ if(this.items && this.items.each){
+ this.items.each(fn, scope || this);
+ }
+ },
+
+
+
+
+ getRawValue : Ext.emptyFn,
+
+
+ setRawValue : Ext.emptyFn
+
+});
+
+Ext.reg('checkboxgroup', Ext.form.CheckboxGroup);
+
+Ext.form.CompositeField = Ext.extend(Ext.form.Field, {
+
+
+ defaultMargins: '0 5 0 0',
+
+
+ skipLastItemMargin: true,
+
+
+ isComposite: true,
+
+
+ combineErrors: true,
+
+
+ labelConnector: ', ',
+
+
+
+
+
+ initComponent: function() {
+ var labels = [],
+ items = this.items,
+ item;
+
+ for (var i=0, j = items.length; i < j; i++) {
+ item = items[i];
+
+ if (!Ext.isEmpty(item.ref)){
+ item.ref = '../' + item.ref;
+ }
+
+ labels.push(item.fieldLabel);
+
+
+ Ext.applyIf(item, this.defaults);
+
+
+ if (!(i == j - 1 && this.skipLastItemMargin)) {
+ Ext.applyIf(item, {margins: this.defaultMargins});
+ }
+ }
+
+ this.fieldLabel = this.fieldLabel || this.buildLabel(labels);
+
+
+ this.fieldErrors = new Ext.util.MixedCollection(true, function(item) {
+ return item.field;
+ });
+
+ this.fieldErrors.on({
+ scope : this,
+ add : this.updateInvalidMark,
+ remove : this.updateInvalidMark,
+ replace: this.updateInvalidMark
+ });
+
+ Ext.form.CompositeField.superclass.initComponent.apply(this, arguments);
+
+ this.innerCt = new Ext.Container({
+ layout : 'hbox',
+ items : this.items,
+ cls : 'x-form-composite',
+ defaultMargins: '0 3 0 0',
+ ownerCt: this
+ });
+ delete this.innerCt.ownerCt;
+
+ var fields = this.innerCt.findBy(function(c) {
+ return c.isFormField;
+ }, this);
+
+
+ this.items = new Ext.util.MixedCollection();
+ this.items.addAll(fields);
+
+ },
+
+
+ onRender: function(ct, position) {
+ if (!this.el) {
+
+ var innerCt = this.innerCt;
+ innerCt.render(ct);
+ this.innerCt.ownerCt = this;
+
+ this.el = innerCt.getEl();
+
+
+
+ if (this.combineErrors) {
+ this.eachItem(function(field) {
+ Ext.apply(field, {
+ markInvalid : this.onFieldMarkInvalid.createDelegate(this, [field], 0),
+ clearInvalid: this.onFieldClearInvalid.createDelegate(this, [field], 0)
+ });
+ });
+ }
+
+
+ var l = this.el.parent().parent().child('label', true);
+ if (l) {
+ l.setAttribute('for', this.items.items[0].id);
+ }
+ }
+
+ Ext.form.CompositeField.superclass.onRender.apply(this, arguments);
+ },
+
+
+ onFieldMarkInvalid: function(field, message) {
+ var name = field.getName(),
+ error = {
+ field: name,
+ errorName: field.fieldLabel || name,
+ error: message
+ };
+
+ this.fieldErrors.replace(name, error);
+
+ if (!field.preventMark) {
+ field.el.addClass(field.invalidClass);
+ }
+ },
+
+
+ onFieldClearInvalid: function(field) {
+ this.fieldErrors.removeKey(field.getName());
+
+ field.el.removeClass(field.invalidClass);
+ },
+
+
+ updateInvalidMark: function() {
+ var ieStrict = Ext.isIE6 && Ext.isStrict;
+
+ if (this.fieldErrors.length == 0) {
+ this.clearInvalid();
+
+
+ if (ieStrict) {
+ this.clearInvalid.defer(50, this);
+ }
+ } else {
+ var message = this.buildCombinedErrorMessage(this.fieldErrors.items);
+
+ this.sortErrors();
+ this.markInvalid(message);
+
+
+ if (ieStrict) {
+ this.markInvalid(message);
+ }
+ }
+ },
+
+
+ validateValue: function(value, preventMark) {
+ var valid = true;
+
+ this.eachItem(function(field) {
+ if (!field.isValid(preventMark)) {
+ valid = false;
+ }
+ });
+
+ return valid;
+ },
+
+
+ buildCombinedErrorMessage: function(errors) {
+ var combined = [],
+ error;
+
+ for (var i = 0, j = errors.length; i < j; i++) {
+ error = errors[i];
+
+ combined.push(String.format("{0}: {1}", error.errorName, error.error));
+ }
+
+ return combined.join("<br />");
+ },
+
+
+ sortErrors: function() {
+ var fields = this.items;
+
+ this.fieldErrors.sort("ASC", function(a, b) {
+ var findByName = function(key) {
+ return function(field) {
+ return field.getName() == key;
+ };
+ };
+
+ var aIndex = fields.findIndexBy(findByName(a.field)),
+ bIndex = fields.findIndexBy(findByName(b.field));
+
+ return aIndex < bIndex ? -1 : 1;
+ });
+ },
+
+
+ reset: function() {
+ this.eachItem(function(item) {
+ item.reset();
+ });
+
+
+
+ (function() {
+ this.clearInvalid();
+ }).defer(50, this);
+ },
+
+
+ clearInvalidChildren: function() {
+ this.eachItem(function(item) {
+ item.clearInvalid();
+ });
+ },
+
+
+ buildLabel: function(segments) {
+ return Ext.clean(segments).join(this.labelConnector);
+ },
+
+
+ isDirty: function(){
+
+ if (this.disabled || !this.rendered) {
+ return false;
+ }
+
+ var dirty = false;
+ this.eachItem(function(item){
+ if(item.isDirty()){
+ dirty = true;
+ return false;
+ }
+ });
+ return dirty;
+ },
+
+
+ eachItem: function(fn, scope) {
+ if(this.items && this.items.each){
+ this.items.each(fn, scope || this);
+ }
+ },
+
+
+ onResize: function(adjWidth, adjHeight, rawWidth, rawHeight) {
+ var innerCt = this.innerCt;
+
+ if (this.rendered && innerCt.rendered) {
+ innerCt.setSize(adjWidth, adjHeight);
+ }
+
+ Ext.form.CompositeField.superclass.onResize.apply(this, arguments);
+ },
+
+
+ doLayout: function(shallow, force) {
+ if (this.rendered) {
+ var innerCt = this.innerCt;
+
+ innerCt.forceLayout = this.ownerCt.forceLayout;
+ innerCt.doLayout(shallow, force);
+ }
+ },
+
+
+ beforeDestroy: function(){
+ Ext.destroy(this.innerCt);
+
+ Ext.form.CompositeField.superclass.beforeDestroy.call(this);
+ },
+
+
+ setReadOnly : function(readOnly) {
+ if (readOnly == undefined) {
+ readOnly = true;
+ }
+ readOnly = !!readOnly;
+
+ if(this.rendered){
+ this.eachItem(function(item){
+ item.setReadOnly(readOnly);
+ });
+ }
+ this.readOnly = readOnly;
+ },
+
+ onShow : function() {
+ Ext.form.CompositeField.superclass.onShow.call(this);
+ this.doLayout();
+ },
+
+
+ onDisable : function(){
+ this.eachItem(function(item){
+ item.disable();
+ });
+ },
+
+
+ onEnable : function(){
+ this.eachItem(function(item){
+ item.enable();
+ });
+ }
+});
+
+Ext.reg('compositefield', Ext.form.CompositeField);
+Ext.form.Radio = Ext.extend(Ext.form.Checkbox, {
+ inputType: 'radio',
+
+
+ markInvalid : Ext.emptyFn,
+
+ clearInvalid : Ext.emptyFn,
+
+
+ getGroupValue : function(){
+ var p = this.el.up('form') || Ext.getBody();
+ var c = p.child('input[name="'+this.el.dom.name+'"]:checked', true);
+ return c ? c.value : null;
+ },
+
+
+ setValue : function(v){
+ var checkEl,
+ els,
+ radio;
+ if (typeof v == 'boolean') {
+ Ext.form.Radio.superclass.setValue.call(this, v);
+ } else if (this.rendered) {
+ checkEl = this.getCheckEl();
+ radio = checkEl.child('input[name="' + this.el.dom.name + '"][value="' + v + '"]', true);
+ if(radio){
+ Ext.getCmp(radio.id).setValue(true);
+ }
+ }
+ if(this.rendered && this.checked){
+ checkEl = checkEl || this.getCheckEl();
+ els = this.getCheckEl().select('input[name="' + this.el.dom.name + '"]');
+ els.each(function(el){
+ if(el.dom.id != this.id){
+ Ext.getCmp(el.dom.id).setValue(false);
+ }
+ }, this);
+ }
+ return this;
+ },
+
+
+ getCheckEl: function(){
+ if(this.inGroup){
+ return this.el.up('.x-form-radio-group');
+ }
+ return this.el.up('form') || Ext.getBody();
+ }
+});
+Ext.reg('radio', Ext.form.Radio);
+
+Ext.form.RadioGroup = Ext.extend(Ext.form.CheckboxGroup, {
+
+
+ allowBlank : true,
+
+ blankText : 'You must select one item in this group',
+
+
+ defaultType : 'radio',
+
+
+ groupCls : 'x-form-radio-group',
+
+
+
+
+ getValue : function(){
+ var out = null;
+ this.eachItem(function(item){
+ if(item.checked){
+ out = item;
+ return false;
+ }
+ });
+ return out;
+ },
+
+
+ onSetValue : function(id, value){
+ if(arguments.length > 1){
+ var f = this.getBox(id);
+ if(f){
+ f.setValue(value);
+ if(f.checked){
+ this.eachItem(function(item){
+ if (item !== f){
+ item.setValue(false);
+ }
+ });
+ }
+ }
+ }else{
+ this.setValueForItem(id);
+ }
+ },
+
+ setValueForItem : function(val){
+ val = String(val).split(',')[0];
+ this.eachItem(function(item){
+ item.setValue(val == item.inputValue);
+ });
+ },
+
+
+ fireChecked : function(){
+ if(!this.checkTask){
+ this.checkTask = new Ext.util.DelayedTask(this.bufferChecked, this);
+ }
+ this.checkTask.delay(10);
+ },
+
+
+ bufferChecked : function(){
+ var out = null;
+ this.eachItem(function(item){
+ if(item.checked){
+ out = item;
+ return false;
+ }
+ });
+ this.fireEvent('change', this, out);
+ },
+
+ onDestroy : function(){
+ if(this.checkTask){
+ this.checkTask.cancel();
+ this.checkTask = null;
+ }
+ Ext.form.RadioGroup.superclass.onDestroy.call(this);
+ }
+
+});
+
+Ext.reg('radiogroup', Ext.form.RadioGroup);
+
+Ext.form.Hidden = Ext.extend(Ext.form.Field, {
+
+ inputType : 'hidden',
+
+ shouldLayout: false,
+
+
+ onRender : function(){
+ Ext.form.Hidden.superclass.onRender.apply(this, arguments);
+ },
+
+
+ initEvents : function(){
+ this.originalValue = this.getValue();
+ },
+
+
+ setSize : Ext.emptyFn,
+ setWidth : Ext.emptyFn,
+ setHeight : Ext.emptyFn,
+ setPosition : Ext.emptyFn,
+ setPagePosition : Ext.emptyFn,
+ markInvalid : Ext.emptyFn,
+ clearInvalid : Ext.emptyFn
+});
+Ext.reg('hidden', Ext.form.Hidden);
+Ext.form.BasicForm = Ext.extend(Ext.util.Observable, {
+
+ constructor: function(el, config){
+ Ext.apply(this, config);
+ if(Ext.isString(this.paramOrder)){
+ this.paramOrder = this.paramOrder.split(/[\s,|]/);
+ }
+
+ this.items = new Ext.util.MixedCollection(false, function(o){
+ return o.getItemId();
+ });
+ this.addEvents(
+
+ 'beforeaction',
+
+ 'actionfailed',
+
+ 'actioncomplete'
+ );
+
+ if(el){
+ this.initEl(el);
+ }
+ Ext.form.BasicForm.superclass.constructor.call(this);
+ },
+
+
+
+
+
+
+
+
+ timeout: 30,
+
+
+
+
+ paramOrder: undefined,
+
+
+ paramsAsHash: false,
+
+
+ waitTitle: 'Please Wait...',
+
+
+ activeAction : null,
+
+
+ trackResetOnLoad : false,
+
+
+
+
+
+ initEl : function(el){
+ this.el = Ext.get(el);
+ this.id = this.el.id || Ext.id();
+ if(!this.standardSubmit){
+ this.el.on('submit', this.onSubmit, this);
+ }
+ this.el.addClass('x-form');
+ },
+
+
+ getEl: function(){
+ return this.el;
+ },
+
+
+ onSubmit : function(e){
+ e.stopEvent();
+ },
+
+
+ destroy: function(bound){
+ if(bound !== true){
+ this.items.each(function(f){
+ Ext.destroy(f);
+ });
+ Ext.destroy(this.el);
+ }
+ this.items.clear();
+ this.purgeListeners();
+ },
+
+
+ isValid : function(){
+ var valid = true;
+ this.items.each(function(f){
+ if(!f.validate()){
+ valid = false;
+ }
+ });
+ return valid;
+ },
+
+
+ isDirty : function(){
+ var dirty = false;
+ this.items.each(function(f){
+ if(f.isDirty()){
+ dirty = true;
+ return false;
+ }
+ });
+ return dirty;
+ },
+
+
+ doAction : function(action, options){
+ if(Ext.isString(action)){
+ action = new Ext.form.Action.ACTION_TYPES[action](this, options);
+ }
+ if(this.fireEvent('beforeaction', this, action) !== false){
+ this.beforeAction(action);
+ action.run.defer(100, action);
+ }
+ return this;
+ },
+
+
+ submit : function(options){
+ options = options || {};
+ if(this.standardSubmit){
+ var v = options.clientValidation === false || this.isValid();
+ if(v){
+ var el = this.el.dom;
+ if(this.url && Ext.isEmpty(el.action)){
+ el.action = this.url;
+ }
+ el.submit();
+ }
+ return v;
+ }
+ var submitAction = String.format('{0}submit', this.api ? 'direct' : '');
+ this.doAction(submitAction, options);
+ return this;
+ },
+
+
+ load : function(options){
+ var loadAction = String.format('{0}load', this.api ? 'direct' : '');
+ this.doAction(loadAction, options);
+ return this;
+ },
+
+
+ updateRecord : function(record){
+ record.beginEdit();
+ var fs = record.fields,
+ field,
+ value;
+ fs.each(function(f){
+ field = this.findField(f.name);
+ if(field){
+ value = field.getValue();
+ if (Ext.type(value) !== false && value.getGroupValue) {
+ value = value.getGroupValue();
+ } else if ( field.eachItem ) {
+ value = [];
+ field.eachItem(function(item){
+ value.push(item.getValue());
+ });
+ }
+ record.set(f.name, value);
+ }
+ }, this);
+ record.endEdit();
+ return this;
+ },
+
+
+ loadRecord : function(record){
+ this.setValues(record.data);
+ return this;
+ },
+
+
+ beforeAction : function(action){
+
+ this.items.each(function(f){
+ if(f.isFormField && f.syncValue){
+ f.syncValue();
+ }
+ });
+ var o = action.options;
+ if(o.waitMsg){
+ if(this.waitMsgTarget === true){
+ this.el.mask(o.waitMsg, 'x-mask-loading');
+ }else if(this.waitMsgTarget){
+ this.waitMsgTarget = Ext.get(this.waitMsgTarget);
+ this.waitMsgTarget.mask(o.waitMsg, 'x-mask-loading');
+ }else{
+ Ext.MessageBox.wait(o.waitMsg, o.waitTitle || this.waitTitle);
+ }
+ }
+ },
+
+
+ afterAction : function(action, success){
+ this.activeAction = null;
+ var o = action.options;
+ if(o.waitMsg){
+ if(this.waitMsgTarget === true){
+ this.el.unmask();
+ }else if(this.waitMsgTarget){
+ this.waitMsgTarget.unmask();
+ }else{
+ Ext.MessageBox.updateProgress(1);
+ Ext.MessageBox.hide();
+ }
+ }
+ if(success){
+ if(o.reset){
+ this.reset();
+ }
+ Ext.callback(o.success, o.scope, [this, action]);
+ this.fireEvent('actioncomplete', this, action);
+ }else{
+ Ext.callback(o.failure, o.scope, [this, action]);
+ this.fireEvent('actionfailed', this, action);
+ }
+ },
+
+
+ findField : function(id) {
+ var field = this.items.get(id);
+
+ if (!Ext.isObject(field)) {
+
+ var findMatchingField = function(f) {
+ if (f.isFormField) {
+ if (f.dataIndex == id || f.id == id || f.getName() == id) {
+ field = f;
+ return false;
+ } else if (f.isComposite) {
+ return f.items.each(findMatchingField);
+ } else if (f instanceof Ext.form.CheckboxGroup && f.rendered) {
+ return f.eachItem(findMatchingField);
+ }
+ }
+ };
+
+ this.items.each(findMatchingField);
+ }
+ return field || null;
+ },
+
+
+
+ markInvalid : function(errors){
+ if (Ext.isArray(errors)) {
+ for(var i = 0, len = errors.length; i < len; i++){
+ var fieldError = errors[i];
+ var f = this.findField(fieldError.id);
+ if(f){
+ f.markInvalid(fieldError.msg);
+ }
+ }
+ } else {
+ var field, id;
+ for(id in errors){
+ if(!Ext.isFunction(errors[id]) && (field = this.findField(id))){
+ field.markInvalid(errors[id]);
+ }
+ }
+ }
+
+ return this;
+ },
+
+
+ setValues : function(values){
+ if(Ext.isArray(values)){
+ for(var i = 0, len = values.length; i < len; i++){
+ var v = values[i];
+ var f = this.findField(v.id);
+ if(f){
+ f.setValue(v.value);
+ if(this.trackResetOnLoad){
+ f.originalValue = f.getValue();
+ }
+ }
+ }
+ }else{
+ var field, id;
+ for(id in values){
+ if(!Ext.isFunction(values[id]) && (field = this.findField(id))){
+ field.setValue(values[id]);
+ if(this.trackResetOnLoad){
+ field.originalValue = field.getValue();
+ }
+ }
+ }
+ }
+ return this;
+ },
+
+
+ getValues : function(asString){
+ var fs = Ext.lib.Ajax.serializeForm(this.el.dom);
+ if(asString === true){
+ return fs;
+ }
+ return Ext.urlDecode(fs);
+ },
+
+
+ getFieldValues : function(dirtyOnly){
+ var o = {},
+ n,
+ key,
+ val;
+ this.items.each(function(f) {
+ if (!f.disabled && (dirtyOnly !== true || f.isDirty())) {
+ n = f.getName();
+ key = o[n];
+ val = f.getValue();
+
+ if(Ext.isDefined(key)){
+ if(Ext.isArray(key)){
+ o[n].push(val);
+ }else{
+ o[n] = [key, val];
+ }
+ }else{
+ o[n] = val;
+ }
+ }
+ });
+ return o;
+ },
+
+
+ clearInvalid : function(){
+ this.items.each(function(f){
+ f.clearInvalid();
+ });
+ return this;
+ },
+
+
+ reset : function(){
+ this.items.each(function(f){
+ f.reset();
+ });
+ return this;
+ },
+
+
+ add : function(){
+ this.items.addAll(Array.prototype.slice.call(arguments, 0));
+ return this;
+ },
+
+
+ remove : function(field){
+ this.items.remove(field);
+ return this;
+ },
+
+
+ cleanDestroyed : function() {
+ this.items.filterBy(function(o) { return !!o.isDestroyed; }).each(this.remove, this);
+ },
+
+
+ render : function(){
+ this.items.each(function(f){
+ if(f.isFormField && !f.rendered && document.getElementById(f.id)){
+ f.applyToMarkup(f.id);
+ }
+ });
+ return this;
+ },
+
+
+ applyToFields : function(o){
+ this.items.each(function(f){
+ Ext.apply(f, o);
+ });
+ return this;
+ },
+
+
+ applyIfToFields : function(o){
+ this.items.each(function(f){
+ Ext.applyIf(f, o);
+ });
+ return this;
+ },
+
+ callFieldMethod : function(fnName, args){
+ args = args || [];
+ this.items.each(function(f){
+ if(Ext.isFunction(f[fnName])){
+ f[fnName].apply(f, args);
+ }
+ });
+ return this;
+ }
+});
+
+
+Ext.BasicForm = Ext.form.BasicForm;
+
+Ext.FormPanel = Ext.extend(Ext.Panel, {
+
+
+
+
+
+
+
+
+
+
+ minButtonWidth : 75,
+
+
+ labelAlign : 'left',
+
+
+ monitorValid : false,
+
+
+ monitorPoll : 200,
+
+
+ layout : 'form',
+
+
+ initComponent : function(){
+ this.form = this.createForm();
+ Ext.FormPanel.superclass.initComponent.call(this);
+
+ this.bodyCfg = {
+ tag: 'form',
+ cls: this.baseCls + '-body',
+ method : this.method || 'POST',
+ id : this.formId || Ext.id()
+ };
+ if(this.fileUpload) {
+ this.bodyCfg.enctype = 'multipart/form-data';
+ }
+ this.initItems();
+
+ this.addEvents(
+
+ 'clientvalidation'
+ );
+
+ this.relayEvents(this.form, ['beforeaction', 'actionfailed', 'actioncomplete']);
+ },
+
+
+ createForm : function(){
+ var config = Ext.applyIf({listeners: {}}, this.initialConfig);
+ return new Ext.form.BasicForm(null, config);
+ },
+
+
+ initFields : function(){
+ var f = this.form;
+ var formPanel = this;
+ var fn = function(c){
+ if(formPanel.isField(c)){
+ f.add(c);
+ }else if(c.findBy && c != formPanel){
+ formPanel.applySettings(c);
+
+ if(c.items && c.items.each){
+ c.items.each(fn, this);
+ }
+ }
+ };
+ this.items.each(fn, this);
+ },
+
+
+ applySettings: function(c){
+ var ct = c.ownerCt;
+ Ext.applyIf(c, {
+ labelAlign: ct.labelAlign,
+ labelWidth: ct.labelWidth,
+ itemCls: ct.itemCls
+ });
+ },
+
+
+ getLayoutTarget : function(){
+ return this.form.el;
+ },
+
+
+ getForm : function(){
+ return this.form;
+ },
+
+
+ onRender : function(ct, position){
+ this.initFields();
+ Ext.FormPanel.superclass.onRender.call(this, ct, position);
+ this.form.initEl(this.body);
+ },
+
+
+ beforeDestroy : function(){
+ this.stopMonitoring();
+ this.form.destroy(true);
+ Ext.FormPanel.superclass.beforeDestroy.call(this);
+ },
+
+
+ isField : function(c) {
+ return !!c.setValue && !!c.getValue && !!c.markInvalid && !!c.clearInvalid;
+ },
+
+
+ initEvents : function(){
+ Ext.FormPanel.superclass.initEvents.call(this);
+
+ this.on({
+ scope: this,
+ add: this.onAddEvent,
+ remove: this.onRemoveEvent
+ });
+ if(this.monitorValid){
+ this.startMonitoring();
+ }
+ },
+
+
+ onAdd: function(c){
+ Ext.FormPanel.superclass.onAdd.call(this, c);
+ this.processAdd(c);
+ },
+
+
+ onAddEvent: function(ct, c){
+ if(ct !== this){
+ this.processAdd(c);
+ }
+ },
+
+
+ processAdd : function(c){
+
+ if(this.isField(c)){
+ this.form.add(c);
+
+ }else if(c.findBy){
+ this.applySettings(c);
+ this.form.add.apply(this.form, c.findBy(this.isField));
+ }
+ },
+
+
+ onRemove: function(c){
+ Ext.FormPanel.superclass.onRemove.call(this, c);
+ this.processRemove(c);
+ },
+
+ onRemoveEvent: function(ct, c){
+ if(ct !== this){
+ this.processRemove(c);
+ }
+ },
+
+
+ processRemove: function(c){
+ if(!this.destroying){
+
+ if(this.isField(c)){
+ this.form.remove(c);
+
+ }else if (c.findBy){
+ Ext.each(c.findBy(this.isField), this.form.remove, this.form);
+
+ this.form.cleanDestroyed();
+ }
+ }
+ },
+
+
+ startMonitoring : function(){
+ if(!this.validTask){
+ this.validTask = new Ext.util.TaskRunner();
+ this.validTask.start({
+ run : this.bindHandler,
+ interval : this.monitorPoll || 200,
+ scope: this
+ });
+ }
+ },
+
+
+ stopMonitoring : function(){
+ if(this.validTask){
+ this.validTask.stopAll();
+ this.validTask = null;
+ }
+ },
+
+
+ load : function(){
+ this.form.load.apply(this.form, arguments);
+ },
+
+
+ onDisable : function(){
+ Ext.FormPanel.superclass.onDisable.call(this);
+ if(this.form){
+ this.form.items.each(function(){
+ this.disable();
+ });
+ }
+ },
+
+
+ onEnable : function(){
+ Ext.FormPanel.superclass.onEnable.call(this);
+ if(this.form){
+ this.form.items.each(function(){
+ this.enable();
+ });
+ }
+ },
+
+
+ bindHandler : function(){
+ var valid = true;
+ this.form.items.each(function(f){
+ if(!f.isValid(true)){
+ valid = false;
+ return false;
+ }
+ });
+ if(this.fbar){
+ var fitems = this.fbar.items.items;
+ for(var i = 0, len = fitems.length; i < len; i++){
+ var btn = fitems[i];
+ if(btn.formBind === true && btn.disabled === valid){
+ btn.setDisabled(!valid);
+ }
+ }
+ }
+ this.fireEvent('clientvalidation', this, valid);
+ }
+});
+Ext.reg('form', Ext.FormPanel);
+
+Ext.form.FormPanel = Ext.FormPanel;
+
+Ext.form.FieldSet = Ext.extend(Ext.Panel, {
+
+
+
+
+
+
+ baseCls : 'x-fieldset',
+
+ layout : 'form',
+
+ animCollapse : false,
+
+
+ onRender : function(ct, position){
+ if(!this.el){
+ this.el = document.createElement('fieldset');
+ this.el.id = this.id;
+ if (this.title || this.header || this.checkboxToggle) {
+ this.el.appendChild(document.createElement('legend')).className = this.baseCls + '-header';
+ }
+ }
+
+ Ext.form.FieldSet.superclass.onRender.call(this, ct, position);
+
+ if(this.checkboxToggle){
+ var o = typeof this.checkboxToggle == 'object' ?
+ this.checkboxToggle :
+ {tag: 'input', type: 'checkbox', name: this.checkboxName || this.id+'-checkbox'};
+ this.checkbox = this.header.insertFirst(o);
+ this.checkbox.dom.checked = !this.collapsed;
+ this.mon(this.checkbox, 'click', this.onCheckClick, this);
+ }
+ },
+
+
+ onCollapse : function(doAnim, animArg){
+ if(this.checkbox){
+ this.checkbox.dom.checked = false;
+ }
+ Ext.form.FieldSet.superclass.onCollapse.call(this, doAnim, animArg);
+
+ },
+
+
+ onExpand : function(doAnim, animArg){
+ if(this.checkbox){
+ this.checkbox.dom.checked = true;
+ }
+ Ext.form.FieldSet.superclass.onExpand.call(this, doAnim, animArg);
+ },
+
+
+ onCheckClick : function(){
+ this[this.checkbox.dom.checked ? 'expand' : 'collapse']();
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+});
+Ext.reg('fieldset', Ext.form.FieldSet);
+
+Ext.form.HtmlEditor = Ext.extend(Ext.form.Field, {
+
+ enableFormat : true,
+
+ enableFontSize : true,
+
+ enableColors : true,
+
+ enableAlignments : true,
+
+ enableLists : true,
+
+ enableSourceEdit : true,
+
+ enableLinks : true,
+
+ enableFont : true,
+
+ createLinkText : 'Please enter the URL for the link:',
+
+ defaultLinkValue : 'http:/'+'/',
+
+ fontFamilies : [
+ 'Arial',
+ 'Courier New',
+ 'Tahoma',
+ 'Times New Roman',
+ 'Verdana'
+ ],
+ defaultFont: 'tahoma',
+
+ defaultValue: (Ext.isOpera || Ext.isIE6) ? '&#160;' : '&#8203;',
+
+
+ actionMode: 'wrap',
+ validationEvent : false,
+ deferHeight: true,
+ initialized : false,
+ activated : false,
+ sourceEditMode : false,
+ onFocus : Ext.emptyFn,
+ iframePad:3,
+ hideMode:'offsets',
+ defaultAutoCreate : {
+ tag: "textarea",
+ style:"width:500px;height:300px;",
+ autocomplete: "off"
+ },
+
+
+ initComponent : function(){
+ this.addEvents(
+
+ 'initialize',
+
+ 'activate',
+
+ 'beforesync',
+
+ 'beforepush',
+
+ 'sync',
+
+ 'push',
+
+ 'editmodechange'
+ );
+ Ext.form.HtmlEditor.superclass.initComponent.call(this);
+ },
+
+
+ createFontOptions : function(){
+ var buf = [], fs = this.fontFamilies, ff, lc;
+ for(var i = 0, len = fs.length; i< len; i++){
+ ff = fs[i];
+ lc = ff.toLowerCase();
+ buf.push(
+ '<option value="',lc,'" style="font-family:',ff,';"',
+ (this.defaultFont == lc ? ' selected="true">' : '>'),
+ ff,
+ '</option>'
+ );
+ }
+ return buf.join('');
+ },
+
+
+ createToolbar : function(editor){
+ var items = [];
+ var tipsEnabled = Ext.QuickTips && Ext.QuickTips.isEnabled();
+
+
+ function btn(id, toggle, handler){
+ return {
+ itemId : id,
+ cls : 'x-btn-icon',
+ iconCls: 'x-edit-'+id,
+ enableToggle:toggle !== false,
+ scope: editor,
+ handler:handler||editor.relayBtnCmd,
+ clickEvent:'mousedown',
+ tooltip: tipsEnabled ? editor.buttonTips[id] || undefined : undefined,
+ overflowText: editor.buttonTips[id].title || undefined,
+ tabIndex:-1
+ };
+ }
+
+
+ if(this.enableFont && !Ext.isSafari2){
+ var fontSelectItem = new Ext.Toolbar.Item({
+ autoEl: {
+ tag:'select',
+ cls:'x-font-select',
+ html: this.createFontOptions()
+ }
+ });
+
+ items.push(
+ fontSelectItem,
+ '-'
+ );
+ }
+
+ if(this.enableFormat){
+ items.push(
+ btn('bold'),
+ btn('italic'),
+ btn('underline')
+ );
+ }
+
+ if(this.enableFontSize){
+ items.push(
+ '-',
+ btn('increasefontsize', false, this.adjustFont),
+ btn('decreasefontsize', false, this.adjustFont)
+ );
+ }
+
+ if(this.enableColors){
+ items.push(
+ '-', {
+ itemId:'forecolor',
+ cls:'x-btn-icon',
+ iconCls: 'x-edit-forecolor',
+ clickEvent:'mousedown',
+ tooltip: tipsEnabled ? editor.buttonTips.forecolor || undefined : undefined,
+ tabIndex:-1,
+ menu : new Ext.menu.ColorMenu({
+ allowReselect: true,
+ focus: Ext.emptyFn,
+ value:'000000',
+ plain:true,
+ listeners: {
+ scope: this,
+ select: function(cp, color){
+ this.execCmd('forecolor', Ext.isWebKit || Ext.isIE ? '#'+color : color);
+ this.deferFocus();
+ }
+ },
+ clickEvent:'mousedown'
+ })
+ }, {
+ itemId:'backcolor',
+ cls:'x-btn-icon',
+ iconCls: 'x-edit-backcolor',
+ clickEvent:'mousedown',
+ tooltip: tipsEnabled ? editor.buttonTips.backcolor || undefined : undefined,
+ tabIndex:-1,
+ menu : new Ext.menu.ColorMenu({
+ focus: Ext.emptyFn,
+ value:'FFFFFF',
+ plain:true,
+ allowReselect: true,
+ listeners: {
+ scope: this,
+ select: function(cp, color){
+ if(Ext.isGecko){
+ this.execCmd('useCSS', false);
+ this.execCmd('hilitecolor', color);
+ this.execCmd('useCSS', true);
+ this.deferFocus();
+ }else{
+ this.execCmd(Ext.isOpera ? 'hilitecolor' : 'backcolor', Ext.isWebKit || Ext.isIE ? '#'+color : color);
+ this.deferFocus();
+ }
+ }
+ },
+ clickEvent:'mousedown'
+ })
+ }
+ );
+ }
+
+ if(this.enableAlignments){
+ items.push(
+ '-',
+ btn('justifyleft'),
+ btn('justifycenter'),
+ btn('justifyright')
+ );
+ }
+
+ if(!Ext.isSafari2){
+ if(this.enableLinks){
+ items.push(
+ '-',
+ btn('createlink', false, this.createLink)
+ );
+ }
+
+ if(this.enableLists){
+ items.push(
+ '-',
+ btn('insertorderedlist'),
+ btn('insertunorderedlist')
+ );
+ }
+ if(this.enableSourceEdit){
+ items.push(
+ '-',
+ btn('sourceedit', true, function(btn){
+ this.toggleSourceEdit(!this.sourceEditMode);
+ })
+ );
+ }
+ }
+
+
+ var tb = new Ext.Toolbar({
+ renderTo: this.wrap.dom.firstChild,
+ items: items
+ });
+
+ if (fontSelectItem) {
+ this.fontSelect = fontSelectItem.el;
+
+ this.mon(this.fontSelect, 'change', function(){
+ var font = this.fontSelect.dom.value;
+ this.relayCmd('fontname', font);
+ this.deferFocus();
+ }, this);
+ }
+
+
+ this.mon(tb.el, 'click', function(e){
+ e.preventDefault();
+ });
+
+ this.tb = tb;
+ this.tb.doLayout();
+ },
+
+ onDisable: function(){
+ this.wrap.mask();
+ Ext.form.HtmlEditor.superclass.onDisable.call(this);
+ },
+
+ onEnable: function(){
+ this.wrap.unmask();
+ Ext.form.HtmlEditor.superclass.onEnable.call(this);
+ },
+
+ setReadOnly: function(readOnly){
+
+ Ext.form.HtmlEditor.superclass.setReadOnly.call(this, readOnly);
+ if(this.initialized){
+ if(Ext.isIE){
+ this.getEditorBody().contentEditable = !readOnly;
+ }else{
+ this.setDesignMode(!readOnly);
+ }
+ var bd = this.getEditorBody();
+ if(bd){
+ bd.style.cursor = this.readOnly ? 'default' : 'text';
+ }
+ this.disableItems(readOnly);
+ }
+ },
+
+
+ getDocMarkup : function(){
+ var h = Ext.fly(this.iframe).getHeight() - this.iframePad * 2;
+ return String.format('<html><head><style type="text/css">body{border: 0; margin: 0; padding: {0}px; height: {1}px; cursor: text}</style></head><body></body></html>', this.iframePad, h);
+ },
+
+
+ getEditorBody : function(){
+ var doc = this.getDoc();
+ return doc.body || doc.documentElement;
+ },
+
+
+ getDoc : function(){
+ return Ext.isIE ? this.getWin().document : (this.iframe.contentDocument || this.getWin().document);
+ },
+
+
+ getWin : function(){
+ return Ext.isIE ? this.iframe.contentWindow : window.frames[this.iframe.name];
+ },
+
+
+ onRender : function(ct, position){
+ Ext.form.HtmlEditor.superclass.onRender.call(this, ct, position);
+ this.el.dom.style.border = '0 none';
+ this.el.dom.setAttribute('tabIndex', -1);
+ this.el.addClass('x-hidden');
+ if(Ext.isIE){
+ this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;');
+ }
+ this.wrap = this.el.wrap({
+ cls:'x-html-editor-wrap', cn:{cls:'x-html-editor-tb'}
+ });
+
+ this.createToolbar(this);
+
+ this.disableItems(true);
+
+ this.tb.doLayout();
+
+ this.createIFrame();
+
+ if(!this.width){
+ var sz = this.el.getSize();
+ this.setSize(sz.width, this.height || sz.height);
+ }
+ this.resizeEl = this.positionEl = this.wrap;
+ },
+
+ createIFrame: function(){
+ var iframe = document.createElement('iframe');
+ iframe.name = Ext.id();
+ iframe.frameBorder = '0';
+ iframe.style.overflow = 'auto';
+ iframe.src = Ext.SSL_SECURE_URL;
+
+ this.wrap.dom.appendChild(iframe);
+ this.iframe = iframe;
+
+ this.monitorTask = Ext.TaskMgr.start({
+ run: this.checkDesignMode,
+ scope: this,
+ interval:100
+ });
+ },
+
+ initFrame : function(){
+ Ext.TaskMgr.stop(this.monitorTask);
+ var doc = this.getDoc();
+ this.win = this.getWin();
+
+ doc.open();
+ doc.write(this.getDocMarkup());
+ doc.close();
+
+ this.readyTask = {
+ run : function(){
+ var doc = this.getDoc();
+ if(doc.body || doc.readyState == 'complete'){
+ Ext.TaskMgr.stop(this.readyTask);
+ this.setDesignMode(true);
+ this.initEditor.defer(10, this);
+ }
+ },
+ interval : 10,
+ duration:10000,
+ scope: this
+ };
+ Ext.TaskMgr.start(this.readyTask);
+ },
+
+
+ checkDesignMode : function(){
+ if(this.wrap && this.wrap.dom.offsetWidth){
+ var doc = this.getDoc();
+ if(!doc){
+ return;
+ }
+ if(!doc.editorInitialized || this.getDesignMode() != 'on'){
+ this.initFrame();
+ }
+ }
+ },
+
+
+ setDesignMode : function(mode){
+ var doc = this.getDoc();
+ if (doc) {
+ if(this.readOnly){
+ mode = false;
+ }
+ doc.designMode = (/on|true/i).test(String(mode).toLowerCase()) ?'on':'off';
+ }
+
+ },
+
+
+ getDesignMode : function(){
+ var doc = this.getDoc();
+ if(!doc){ return ''; }
+ return String(doc.designMode).toLowerCase();
+
+ },
+
+ disableItems: function(disabled){
+ if(this.fontSelect){
+ this.fontSelect.dom.disabled = disabled;
+ }
+ this.tb.items.each(function(item){
+ if(item.getItemId() != 'sourceedit'){
+ item.setDisabled(disabled);
+ }
+ });
+ },
+
+
+ onResize : function(w, h){
+ Ext.form.HtmlEditor.superclass.onResize.apply(this, arguments);
+ if(this.el && this.iframe){
+ if(Ext.isNumber(w)){
+ var aw = w - this.wrap.getFrameWidth('lr');
+ this.el.setWidth(aw);
+ this.tb.setWidth(aw);
+ this.iframe.style.width = Math.max(aw, 0) + 'px';
+ }
+ if(Ext.isNumber(h)){
+ var ah = h - this.wrap.getFrameWidth('tb') - this.tb.el.getHeight();
+ this.el.setHeight(ah);
+ this.iframe.style.height = Math.max(ah, 0) + 'px';
+ var bd = this.getEditorBody();
+ if(bd){
+ bd.style.height = Math.max((ah - (this.iframePad*2)), 0) + 'px';
+ }
+ }
+ }
+ },
+
+
+ toggleSourceEdit : function(sourceEditMode){
+ var iframeHeight,
+ elHeight;
+
+ if (sourceEditMode === undefined) {
+ sourceEditMode = !this.sourceEditMode;
+ }
+ this.sourceEditMode = sourceEditMode === true;
+ var btn = this.tb.getComponent('sourceedit');
+
+ if (btn.pressed !== this.sourceEditMode) {
+ btn.toggle(this.sourceEditMode);
+ if (!btn.xtbHidden) {
+ return;
+ }
+ }
+ if (this.sourceEditMode) {
+
+ this.previousSize = this.getSize();
+
+ iframeHeight = Ext.get(this.iframe).getHeight();
+
+ this.disableItems(true);
+ this.syncValue();
+ this.iframe.className = 'x-hidden';
+ this.el.removeClass('x-hidden');
+ this.el.dom.removeAttribute('tabIndex');
+ this.el.focus();
+ this.el.dom.style.height = iframeHeight + 'px';
+ }
+ else {
+ elHeight = parseInt(this.el.dom.style.height, 10);
+ if (this.initialized) {
+ this.disableItems(this.readOnly);
+ }
+ this.pushValue();
+ this.iframe.className = '';
+ this.el.addClass('x-hidden');
+ this.el.dom.setAttribute('tabIndex', -1);
+ this.deferFocus();
+
+ this.setSize(this.previousSize);
+ delete this.previousSize;
+ this.iframe.style.height = elHeight + 'px';
+ }
+ this.fireEvent('editmodechange', this, this.sourceEditMode);
+ },
+
+
+ createLink : function() {
+ var url = prompt(this.createLinkText, this.defaultLinkValue);
+ if(url && url != 'http:/'+'/'){
+ this.relayCmd('createlink', url);
+ }
+ },
+
+
+ initEvents : function(){
+ this.originalValue = this.getValue();
+ },
+
+
+ markInvalid : Ext.emptyFn,
+
+
+ clearInvalid : Ext.emptyFn,
+
+
+ setValue : function(v){
+ Ext.form.HtmlEditor.superclass.setValue.call(this, v);
+ this.pushValue();
+ return this;
+ },
+
+
+ cleanHtml: function(html) {
+ html = String(html);
+ if(Ext.isWebKit){
+ html = html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, '');
+ }
+
+
+ if(html.charCodeAt(0) == this.defaultValue.replace(/\D/g, '')){
+ html = html.substring(1);
+ }
+ return html;
+ },
+
+
+ syncValue : function(){
+ if(this.initialized){
+ var bd = this.getEditorBody();
+ var html = bd.innerHTML;
+ if(Ext.isWebKit){
+ var bs = bd.getAttribute('style');
+ var m = bs.match(/text-align:(.*?);/i);
+ if(m && m[1]){
+ html = '<div style="'+m[0]+'">' + html + '</div>';
+ }
+ }
+ html = this.cleanHtml(html);
+ if(this.fireEvent('beforesync', this, html) !== false){
+ this.el.dom.value = html;
+ this.fireEvent('sync', this, html);
+ }
+ }
+ },
+
+
+ getValue : function() {
+ this[this.sourceEditMode ? 'pushValue' : 'syncValue']();
+ return Ext.form.HtmlEditor.superclass.getValue.call(this);
+ },
+
+
+ pushValue : function(){
+ if(this.initialized){
+ var v = this.el.dom.value;
+ if(!this.activated && v.length < 1){
+ v = this.defaultValue;
+ }
+ if(this.fireEvent('beforepush', this, v) !== false){
+ this.getEditorBody().innerHTML = v;
+ if(Ext.isGecko){
+
+ this.setDesignMode(false);
+ this.setDesignMode(true);
+ }
+ this.fireEvent('push', this, v);
+ }
+
+ }
+ },
+
+
+ deferFocus : function(){
+ this.focus.defer(10, this);
+ },
+
+
+ focus : function(){
+ if(this.win && !this.sourceEditMode){
+ this.win.focus();
+ }else{
+ this.el.focus();
+ }
+ },
+
+
+ initEditor : function(){
+
+ try{
+ var dbody = this.getEditorBody(),
+ ss = this.el.getStyles('font-size', 'font-family', 'background-image', 'background-repeat', 'background-color', 'color'),
+ doc,
+ fn;
+
+ ss['background-attachment'] = 'fixed';
+ dbody.bgProperties = 'fixed';
+
+ Ext.DomHelper.applyStyles(dbody, ss);
+
+ doc = this.getDoc();
+
+ if(doc){
+ try{
+ Ext.EventManager.removeAll(doc);
+ }catch(e){}
+ }
+
+
+ fn = this.onEditorEvent.createDelegate(this);
+ Ext.EventManager.on(doc, {
+ mousedown: fn,
+ dblclick: fn,
+ click: fn,
+ keyup: fn,
+ buffer:100
+ });
+
+ if(Ext.isGecko){
+ Ext.EventManager.on(doc, 'keypress', this.applyCommand, this);
+ }
+ if(Ext.isIE || Ext.isWebKit || Ext.isOpera){
+ Ext.EventManager.on(doc, 'keydown', this.fixKeys, this);
+ }
+ doc.editorInitialized = true;
+ this.initialized = true;
+ this.pushValue();
+ this.setReadOnly(this.readOnly);
+ this.fireEvent('initialize', this);
+ }catch(e){}
+ },
+
+
+ beforeDestroy : function(){
+ if(this.monitorTask){
+ Ext.TaskMgr.stop(this.monitorTask);
+ }
+ if(this.readyTask){
+ Ext.TaskMgr.stop(this.readyTask);
+ }
+ if(this.rendered){
+ Ext.destroy(this.tb);
+ var doc = this.getDoc();
+ Ext.EventManager.removeFromSpecialCache(doc);
+ if(doc){
+ try{
+ Ext.EventManager.removeAll(doc);
+ for (var prop in doc){
+ delete doc[prop];
+ }
+ }catch(e){}
+ }
+ if(this.wrap){
+ this.wrap.dom.innerHTML = '';
+ this.wrap.remove();
+ }
+ }
+ Ext.form.HtmlEditor.superclass.beforeDestroy.call(this);
+ },
+
+
+ onFirstFocus : function(){
+ this.activated = true;
+ this.disableItems(this.readOnly);
+ if(Ext.isGecko){
+ this.win.focus();
+ var s = this.win.getSelection();
+ if(!s.focusNode || s.focusNode.nodeType != 3){
+ var r = s.getRangeAt(0);
+ r.selectNodeContents(this.getEditorBody());
+ r.collapse(true);
+ this.deferFocus();
+ }
+ try{
+ this.execCmd('useCSS', true);
+ this.execCmd('styleWithCSS', false);
+ }catch(e){}
+ }
+ this.fireEvent('activate', this);
+ },
+
+
+ adjustFont: function(btn){
+ var adjust = btn.getItemId() == 'increasefontsize' ? 1 : -1,
+ doc = this.getDoc(),
+ v = parseInt(doc.queryCommandValue('FontSize') || 2, 10);
+ if((Ext.isSafari && !Ext.isSafari2) || Ext.isChrome || Ext.isAir){
+
+
+ if(v <= 10){
+ v = 1 + adjust;
+ }else if(v <= 13){
+ v = 2 + adjust;
+ }else if(v <= 16){
+ v = 3 + adjust;
+ }else if(v <= 18){
+ v = 4 + adjust;
+ }else if(v <= 24){
+ v = 5 + adjust;
+ }else {
+ v = 6 + adjust;
+ }
+ v = v.constrain(1, 6);
+ }else{
+ if(Ext.isSafari){
+ adjust *= 2;
+ }
+ v = Math.max(1, v+adjust) + (Ext.isSafari ? 'px' : 0);
+ }
+ this.execCmd('FontSize', v);
+ },
+
+
+ onEditorEvent : function(e){
+ this.updateToolbar();
+ },
+
+
+
+ updateToolbar: function(){
+
+ if(this.readOnly){
+ return;
+ }
+
+ if(!this.activated){
+ this.onFirstFocus();
+ return;
+ }
+
+ var btns = this.tb.items.map,
+ doc = this.getDoc();
+
+ if(this.enableFont && !Ext.isSafari2){
+ var name = (doc.queryCommandValue('FontName')||this.defaultFont).toLowerCase();
+ if(name != this.fontSelect.dom.value){
+ this.fontSelect.dom.value = name;
+ }
+ }
+ if(this.enableFormat){
+ btns.bold.toggle(doc.queryCommandState('bold'));
+ btns.italic.toggle(doc.queryCommandState('italic'));
+ btns.underline.toggle(doc.queryCommandState('underline'));
+ }
+ if(this.enableAlignments){
+ btns.justifyleft.toggle(doc.queryCommandState('justifyleft'));
+ btns.justifycenter.toggle(doc.queryCommandState('justifycenter'));
+ btns.justifyright.toggle(doc.queryCommandState('justifyright'));
+ }
+ if(!Ext.isSafari2 && this.enableLists){
+ btns.insertorderedlist.toggle(doc.queryCommandState('insertorderedlist'));
+ btns.insertunorderedlist.toggle(doc.queryCommandState('insertunorderedlist'));
+ }
+
+ Ext.menu.MenuMgr.hideAll();
+
+ this.syncValue();
+ },
+
+
+ relayBtnCmd : function(btn){
+ this.relayCmd(btn.getItemId());
+ },
+
+
+ relayCmd : function(cmd, value){
+ (function(){
+ this.focus();
+ this.execCmd(cmd, value);
+ this.updateToolbar();
+ }).defer(10, this);
+ },
+
+
+ execCmd : function(cmd, value){
+ var doc = this.getDoc();
+ doc.execCommand(cmd, false, value === undefined ? null : value);
+ this.syncValue();
+ },
+
+
+ applyCommand : function(e){
+ if(e.ctrlKey){
+ var c = e.getCharCode(), cmd;
+ if(c > 0){
+ c = String.fromCharCode(c);
+ switch(c){
+ case 'b':
+ cmd = 'bold';
+ break;
+ case 'i':
+ cmd = 'italic';
+ break;
+ case 'u':
+ cmd = 'underline';
+ break;
+ }
+ if(cmd){
+ this.win.focus();
+ this.execCmd(cmd);
+ this.deferFocus();
+ e.preventDefault();
+ }
+ }
+ }
+ },
+
+
+ insertAtCursor : function(text){
+ if(!this.activated){
+ return;
+ }
+ if(Ext.isIE){
+ this.win.focus();
+ var doc = this.getDoc(),
+ r = doc.selection.createRange();
+ if(r){
+ r.pasteHTML(text);
+ this.syncValue();
+ this.deferFocus();
+ }
+ }else{
+ this.win.focus();
+ this.execCmd('InsertHTML', text);
+ this.deferFocus();
+ }
+ },
+
+
+ fixKeys : function(){
+ if(Ext.isIE){
+ return function(e){
+ var k = e.getKey(),
+ doc = this.getDoc(),
+ r;
+ if(k == e.TAB){
+ e.stopEvent();
+ r = doc.selection.createRange();
+ if(r){
+ r.collapse(true);
+ r.pasteHTML('&nbsp;&nbsp;&nbsp;&nbsp;');
+ this.deferFocus();
+ }
+ }else if(k == e.ENTER){
+ r = doc.selection.createRange();
+ if(r){
+ var target = r.parentElement();
+ if(!target || target.tagName.toLowerCase() != 'li'){
+ e.stopEvent();
+ r.pasteHTML('<br />');
+ r.collapse(false);
+ r.select();
+ }
+ }
+ }
+ };
+ }else if(Ext.isOpera){
+ return function(e){
+ var k = e.getKey();
+ if(k == e.TAB){
+ e.stopEvent();
+ this.win.focus();
+ this.execCmd('InsertHTML','&nbsp;&nbsp;&nbsp;&nbsp;');
+ this.deferFocus();
+ }
+ };
+ }else if(Ext.isWebKit){
+ return function(e){
+ var k = e.getKey();
+ if(k == e.TAB){
+ e.stopEvent();
+ this.execCmd('InsertText','\t');
+ this.deferFocus();
+ }else if(k == e.ENTER){
+ e.stopEvent();
+ this.execCmd('InsertHtml','<br /><br />');
+ this.deferFocus();
+ }
+ };
+ }
+ }(),
+
+
+ getToolbar : function(){
+ return this.tb;
+ },
+
+
+ buttonTips : {
+ bold : {
+ title: 'Bold (Ctrl+B)',
+ text: 'Make the selected text bold.',
+ cls: 'x-html-editor-tip'
+ },
+ italic : {
+ title: 'Italic (Ctrl+I)',
+ text: 'Make the selected text italic.',
+ cls: 'x-html-editor-tip'
+ },
+ underline : {
+ title: 'Underline (Ctrl+U)',
+ text: 'Underline the selected text.',
+ cls: 'x-html-editor-tip'
+ },
+ increasefontsize : {
+ title: 'Grow Text',
+ text: 'Increase the font size.',
+ cls: 'x-html-editor-tip'
+ },
+ decreasefontsize : {
+ title: 'Shrink Text',
+ text: 'Decrease the font size.',
+ cls: 'x-html-editor-tip'
+ },
+ backcolor : {
+ title: 'Text Highlight Color',
+ text: 'Change the background color of the selected text.',
+ cls: 'x-html-editor-tip'
+ },
+ forecolor : {
+ title: 'Font Color',
+ text: 'Change the color of the selected text.',
+ cls: 'x-html-editor-tip'
+ },
+ justifyleft : {
+ title: 'Align Text Left',
+ text: 'Align text to the left.',
+ cls: 'x-html-editor-tip'
+ },
+ justifycenter : {
+ title: 'Center Text',
+ text: 'Center text in the editor.',
+ cls: 'x-html-editor-tip'
+ },
+ justifyright : {
+ title: 'Align Text Right',
+ text: 'Align text to the right.',
+ cls: 'x-html-editor-tip'
+ },
+ insertunorderedlist : {
+ title: 'Bullet List',
+ text: 'Start a bulleted list.',
+ cls: 'x-html-editor-tip'
+ },
+ insertorderedlist : {
+ title: 'Numbered List',
+ text: 'Start a numbered list.',
+ cls: 'x-html-editor-tip'
+ },
+ createlink : {
+ title: 'Hyperlink',
+ text: 'Make the selected text a hyperlink.',
+ cls: 'x-html-editor-tip'
+ },
+ sourceedit : {
+ title: 'Source Edit',
+ text: 'Switch to source editing mode.',
+ cls: 'x-html-editor-tip'
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+});
+Ext.reg('htmleditor', Ext.form.HtmlEditor);
+
+Ext.form.TimeField = Ext.extend(Ext.form.ComboBox, {
+
+ minValue : undefined,
+
+ maxValue : undefined,
+
+ minText : "The time in this field must be equal to or after {0}",
+
+ maxText : "The time in this field must be equal to or before {0}",
+
+ invalidText : "{0} is not a valid time",
+
+ format : "g:i A",
+
+ altFormats : "g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H|gi a|hi a|giA|hiA|gi A|hi A",
+
+ increment: 15,
+
+
+ mode: 'local',
+
+ triggerAction: 'all',
+
+ typeAhead: false,
+
+
+
+
+ initDate: '1/1/2008',
+
+ initDateFormat: 'j/n/Y',
+
+
+ initComponent : function(){
+ if(Ext.isDefined(this.minValue)){
+ this.setMinValue(this.minValue, true);
+ }
+ if(Ext.isDefined(this.maxValue)){
+ this.setMaxValue(this.maxValue, true);
+ }
+ if(!this.store){
+ this.generateStore(true);
+ }
+ Ext.form.TimeField.superclass.initComponent.call(this);
+ },
+
+
+ setMinValue: function(value, initial){
+ this.setLimit(value, true, initial);
+ return this;
+ },
+
+
+ setMaxValue: function(value, initial){
+ this.setLimit(value, false, initial);
+ return this;
+ },
+
+
+ generateStore: function(initial){
+ var min = this.minValue || new Date(this.initDate).clearTime(),
+ max = this.maxValue || new Date(this.initDate).clearTime().add('mi', (24 * 60) - 1),
+ times = [];
+
+ while(min <= max){
+ times.push(min.dateFormat(this.format));
+ min = min.add('mi', this.increment);
+ }
+ this.bindStore(times, initial);
+ },
+
+
+ setLimit: function(value, isMin, initial){
+ var d;
+ if(Ext.isString(value)){
+ d = this.parseDate(value);
+ }else if(Ext.isDate(value)){
+ d = value;
+ }
+ if(d){
+ var val = new Date(this.initDate).clearTime();
+ val.setHours(d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());
+ this[isMin ? 'minValue' : 'maxValue'] = val;
+ if(!initial){
+ this.generateStore();
+ }
+ }
+ },
+
+
+ getValue : function(){
+ var v = Ext.form.TimeField.superclass.getValue.call(this);
+ return this.formatDate(this.parseDate(v)) || '';
+ },
+
+
+ setValue : function(value){
+ return Ext.form.TimeField.superclass.setValue.call(this, this.formatDate(this.parseDate(value)));
+ },
+
+
+ validateValue : Ext.form.DateField.prototype.validateValue,
+
+ formatDate : Ext.form.DateField.prototype.formatDate,
+
+ parseDate: function(value) {
+ if (!value || Ext.isDate(value)) {
+ return value;
+ }
+
+ var id = this.initDate + ' ',
+ idf = this.initDateFormat + ' ',
+ v = Date.parseDate(id + value, idf + this.format),
+ af = this.altFormats;
+
+ if (!v && af) {
+ if (!this.altFormatsArray) {
+ this.altFormatsArray = af.split("|");
+ }
+ for (var i = 0, afa = this.altFormatsArray, len = afa.length; i < len && !v; i++) {
+ v = Date.parseDate(id + value, idf + afa[i]);
+ }
+ }
+
+ return v;
+ }
+});
+Ext.reg('timefield', Ext.form.TimeField);
+Ext.form.SliderField = Ext.extend(Ext.form.Field, {
+
+
+ useTips : true,
+
+
+ tipText : null,
+
+
+ actionMode: 'wrap',
+
+
+ initComponent : function() {
+ var cfg = Ext.copyTo({
+ id: this.id + '-slider'
+ }, this.initialConfig, ['vertical', 'minValue', 'maxValue', 'decimalPrecision', 'keyIncrement', 'increment', 'clickToChange', 'animate']);
+
+
+ if (this.useTips) {
+ var plug = this.tipText ? {getText: this.tipText} : {};
+ cfg.plugins = [new Ext.slider.Tip(plug)];
+ }
+ this.slider = new Ext.Slider(cfg);
+ Ext.form.SliderField.superclass.initComponent.call(this);
+ },
+
+
+ onRender : function(ct, position){
+ this.autoCreate = {
+ id: this.id,
+ name: this.name,
+ type: 'hidden',
+ tag: 'input'
+ };
+ Ext.form.SliderField.superclass.onRender.call(this, ct, position);
+ this.wrap = this.el.wrap({cls: 'x-form-field-wrap'});
+ this.resizeEl = this.positionEl = this.wrap;
+ this.slider.render(this.wrap);
+ },
+
+
+ onResize : function(w, h, aw, ah){
+ Ext.form.SliderField.superclass.onResize.call(this, w, h, aw, ah);
+ this.slider.setSize(w, h);
+ },
+
+
+ initEvents : function(){
+ Ext.form.SliderField.superclass.initEvents.call(this);
+ this.slider.on('change', this.onChange, this);
+ },
+
+
+ onChange : function(slider, v){
+ this.setValue(v, undefined, true);
+ },
+
+
+ onEnable : function(){
+ Ext.form.SliderField.superclass.onEnable.call(this);
+ this.slider.enable();
+ },
+
+
+ onDisable : function(){
+ Ext.form.SliderField.superclass.onDisable.call(this);
+ this.slider.disable();
+ },
+
+
+ beforeDestroy : function(){
+ Ext.destroy(this.slider);
+ Ext.form.SliderField.superclass.beforeDestroy.call(this);
+ },
+
+
+ alignErrorIcon : function(){
+ this.errorIcon.alignTo(this.slider.el, 'tl-tr', [2, 0]);
+ },
+
+
+ setMinValue : function(v){
+ this.slider.setMinValue(v);
+ return this;
+ },
+
+
+ setMaxValue : function(v){
+ this.slider.setMaxValue(v);
+ return this;
+ },
+
+
+ setValue : function(v, animate, silent){
+
+
+ if(!silent){
+ this.slider.setValue(v, animate);
+ }
+ return Ext.form.SliderField.superclass.setValue.call(this, this.slider.getValue());
+ },
+
+
+ getValue : function(){
+ return this.slider.getValue();
+ }
+});
+
+Ext.reg('sliderfield', Ext.form.SliderField);
+Ext.form.Label = Ext.extend(Ext.BoxComponent, {
+
+
+
+
+
+ onRender : function(ct, position){
+ if(!this.el){
+ this.el = document.createElement('label');
+ this.el.id = this.getId();
+ this.el.innerHTML = this.text ? Ext.util.Format.htmlEncode(this.text) : (this.html || '');
+ if(this.forId){
+ this.el.setAttribute('for', this.forId);
+ }
+ }
+ Ext.form.Label.superclass.onRender.call(this, ct, position);
+ },
+
+
+ setText : function(t, encode){
+ var e = encode === false;
+ this[!e ? 'text' : 'html'] = t;
+ delete this[e ? 'text' : 'html'];
+ if(this.rendered){
+ this.el.dom.innerHTML = encode !== false ? Ext.util.Format.htmlEncode(t) : t;
+ }
+ return this;
+ }
+});
+
+Ext.reg('label', Ext.form.Label);
+Ext.form.Action = function(form, options){
+ this.form = form;
+ this.options = options || {};
+};
+
+
+Ext.form.Action.CLIENT_INVALID = 'client';
+
+Ext.form.Action.SERVER_INVALID = 'server';
+
+Ext.form.Action.CONNECT_FAILURE = 'connect';
+
+Ext.form.Action.LOAD_FAILURE = 'load';
+
+Ext.form.Action.prototype = {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ type : 'default',
+
+
+
+
+
+ run : function(options){
+
+ },
+
+
+ success : function(response){
+
+ },
+
+
+ handleResponse : function(response){
+
+ },
+
+
+ failure : function(response){
+ this.response = response;
+ this.failureType = Ext.form.Action.CONNECT_FAILURE;
+ this.form.afterAction(this, false);
+ },
+
+
+
+
+ processResponse : function(response){
+ this.response = response;
+ if(!response.responseText && !response.responseXML){
+ return true;
+ }
+ this.result = this.handleResponse(response);
+ return this.result;
+ },
+
+ decodeResponse: function(response) {
+ try {
+ return Ext.decode(response.responseText);
+ } catch(e) {
+ return false;
+ }
+ },
+
+
+ getUrl : function(appendParams){
+ var url = this.options.url || this.form.url || this.form.el.dom.action;
+ if(appendParams){
+ var p = this.getParams();
+ if(p){
+ url = Ext.urlAppend(url, p);
+ }
+ }
+ return url;
+ },
+
+
+ getMethod : function(){
+ return (this.options.method || this.form.method || this.form.el.dom.method || 'POST').toUpperCase();
+ },
+
+
+ getParams : function(){
+ var bp = this.form.baseParams;
+ var p = this.options.params;
+ if(p){
+ if(typeof p == "object"){
+ p = Ext.urlEncode(Ext.applyIf(p, bp));
+ }else if(typeof p == 'string' && bp){
+ p += '&' + Ext.urlEncode(bp);
+ }
+ }else if(bp){
+ p = Ext.urlEncode(bp);
+ }
+ return p;
+ },
+
+
+ createCallback : function(opts){
+ var opts = opts || {};
+ return {
+ success: this.success,
+ failure: this.failure,
+ scope: this,
+ timeout: (opts.timeout*1000) || (this.form.timeout*1000),
+ upload: this.form.fileUpload ? this.success : undefined
+ };
+ }
+};
+
+
+Ext.form.Action.Submit = function(form, options){
+ Ext.form.Action.Submit.superclass.constructor.call(this, form, options);
+};
+
+Ext.extend(Ext.form.Action.Submit, Ext.form.Action, {
+
+
+ type : 'submit',
+
+
+ run : function(){
+ var o = this.options,
+ method = this.getMethod(),
+ isGet = method == 'GET';
+ if(o.clientValidation === false || this.form.isValid()){
+ if (o.submitEmptyText === false) {
+ var fields = this.form.items,
+ emptyFields = [],
+ setupEmptyFields = function(f){
+ if (f.el.getValue() == f.emptyText) {
+ emptyFields.push(f);
+ f.el.dom.value = "";
+ }
+ if(f.isComposite && f.rendered){
+ f.items.each(setupEmptyFields);
+ }
+ };
+
+ fields.each(setupEmptyFields);
+ }
+ Ext.Ajax.request(Ext.apply(this.createCallback(o), {
+ form:this.form.el.dom,
+ url:this.getUrl(isGet),
+ method: method,
+ headers: o.headers,
+ params:!isGet ? this.getParams() : null,
+ isUpload: this.form.fileUpload
+ }));
+ if (o.submitEmptyText === false) {
+ Ext.each(emptyFields, function(f) {
+ if (f.applyEmptyText) {
+ f.applyEmptyText();
+ }
+ });
+ }
+ }else if (o.clientValidation !== false){
+ this.failureType = Ext.form.Action.CLIENT_INVALID;
+ this.form.afterAction(this, false);
+ }
+ },
+
+
+ success : function(response){
+ var result = this.processResponse(response);
+ if(result === true || result.success){
+ this.form.afterAction(this, true);
+ return;
+ }
+ if(result.errors){
+ this.form.markInvalid(result.errors);
+ }
+ this.failureType = Ext.form.Action.SERVER_INVALID;
+ this.form.afterAction(this, false);
+ },
+
+
+ handleResponse : function(response){
+ if(this.form.errorReader){
+ var rs = this.form.errorReader.read(response);
+ var errors = [];
+ if(rs.records){
+ for(var i = 0, len = rs.records.length; i < len; i++) {
+ var r = rs.records[i];
+ errors[i] = r.data;
+ }
+ }
+ if(errors.length < 1){
+ errors = null;
+ }
+ return {
+ success : rs.success,
+ errors : errors
+ };
+ }
+ return this.decodeResponse(response);
+ }
+});
+
+
+
+Ext.form.Action.Load = function(form, options){
+ Ext.form.Action.Load.superclass.constructor.call(this, form, options);
+ this.reader = this.form.reader;
+};
+
+Ext.extend(Ext.form.Action.Load, Ext.form.Action, {
+
+ type : 'load',
+
+
+ run : function(){
+ Ext.Ajax.request(Ext.apply(
+ this.createCallback(this.options), {
+ method:this.getMethod(),
+ url:this.getUrl(false),
+ headers: this.options.headers,
+ params:this.getParams()
+ }));
+ },
+
+
+ success : function(response){
+ var result = this.processResponse(response);
+ if(result === true || !result.success || !result.data){
+ this.failureType = Ext.form.Action.LOAD_FAILURE;
+ this.form.afterAction(this, false);
+ return;
+ }
+ this.form.clearInvalid();
+ this.form.setValues(result.data);
+ this.form.afterAction(this, true);
+ },
+
+
+ handleResponse : function(response){
+ if(this.form.reader){
+ var rs = this.form.reader.read(response);
+ var data = rs.records && rs.records[0] ? rs.records[0].data : null;
+ return {
+ success : rs.success,
+ data : data
+ };
+ }
+ return this.decodeResponse(response);
+ }
+});
+
+
+
+
+Ext.form.Action.DirectLoad = Ext.extend(Ext.form.Action.Load, {
+ constructor: function(form, opts) {
+ Ext.form.Action.DirectLoad.superclass.constructor.call(this, form, opts);
+ },
+ type : 'directload',
+
+ run : function(){
+ var args = this.getParams();
+ args.push(this.success, this);
+ this.form.api.load.apply(window, args);
+ },
+
+ getParams : function() {
+ var buf = [], o = {};
+ var bp = this.form.baseParams;
+ var p = this.options.params;
+ Ext.apply(o, p, bp);
+ var paramOrder = this.form.paramOrder;
+ if(paramOrder){
+ for(var i = 0, len = paramOrder.length; i < len; i++){
+ buf.push(o[paramOrder[i]]);
+ }
+ }else if(this.form.paramsAsHash){
+ buf.push(o);
+ }
+ return buf;
+ },
+
+
+
+ processResponse : function(result) {
+ this.result = result;
+ return result;
+ },
+
+ success : function(response, trans){
+ if(trans.type == Ext.Direct.exceptions.SERVER){
+ response = {};
+ }
+ Ext.form.Action.DirectLoad.superclass.success.call(this, response);
+ }
+});
+
+
+Ext.form.Action.DirectSubmit = Ext.extend(Ext.form.Action.Submit, {
+ constructor : function(form, opts) {
+ Ext.form.Action.DirectSubmit.superclass.constructor.call(this, form, opts);
+ },
+ type : 'directsubmit',
+
+ run : function(){
+ var o = this.options;
+ if(o.clientValidation === false || this.form.isValid()){
+
+
+ this.success.params = this.getParams();
+ this.form.api.submit(this.form.el.dom, this.success, this);
+ }else if (o.clientValidation !== false){
+ this.failureType = Ext.form.Action.CLIENT_INVALID;
+ this.form.afterAction(this, false);
+ }
+ },
+
+ getParams : function() {
+ var o = {};
+ var bp = this.form.baseParams;
+ var p = this.options.params;
+ Ext.apply(o, p, bp);
+ return o;
+ },
+
+
+
+ processResponse : function(result) {
+ this.result = result;
+ return result;
+ },
+
+ success : function(response, trans){
+ if(trans.type == Ext.Direct.exceptions.SERVER){
+ response = {};
+ }
+ Ext.form.Action.DirectSubmit.superclass.success.call(this, response);
+ }
+});
+
+Ext.form.Action.ACTION_TYPES = {
+ 'load' : Ext.form.Action.Load,
+ 'submit' : Ext.form.Action.Submit,
+ 'directload' : Ext.form.Action.DirectLoad,
+ 'directsubmit' : Ext.form.Action.DirectSubmit
+};
+
+Ext.form.VTypes = function(){
+
+ var alpha = /^[a-zA-Z_]+$/,
+ alphanum = /^[a-zA-Z0-9_]+$/,
+ email = /^(\w+)([\-+.\'][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,
+ url = /(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;
+
+
+ return {
+
+ 'email' : function(v){
+ return email.test(v);
+ },
+
+ 'emailText' : 'This field should be an e-mail address in the format "user@example.com"',
+
+ 'emailMask' : /[a-z0-9_\.\-\+\'@]/i,
+
+ /**
+ * The function used to validate URLs
+ * @param {String} value The URL
+ * @return {Boolean} true if the RegExp test passed, and false if not.
+ */
+ 'url' : function(v){
+ return url.test(v);
+ },
+ /**
+ * The error text to display when the url validation function returns false. Defaults to:
+ * <tt>'This field should be a URL in the format "http:/'+'/www.example.com"'</tt>
+ * @type String
+ */
+ 'urlText' : 'This field should be a URL in the format "http:/'+'/www.example.com"',
+
+ /**
+ * The function used to validate alpha values
+ * @param {String} value The value
+ * @return {Boolean} true if the RegExp test passed, and false if not.
+ */
+ 'alpha' : function(v){
+ return alpha.test(v);
+ },
+ /**
+ * The error text to display when the alpha validation function returns false. Defaults to:
+ * <tt>'This field should only contain letters and _'</tt>
+ * @type String
+ */
+ 'alphaText' : 'This field should only contain letters and _',
+ /**
+ * The keystroke filter mask to be applied on alpha input. Defaults to:
+ * <tt>/[a-z_]/i</tt>
+ * @type RegExp
+ */
+ 'alphaMask' : /[a-z_]/i,
+
+ /**
+ * The function used to validate alphanumeric values
+ * @param {String} value The value
+ * @return {Boolean} true if the RegExp test passed, and false if not.
+ */
+ 'alphanum' : function(v){
+ return alphanum.test(v);
+ },
+ /**
+ * The error text to display when the alphanumeric validation function returns false. Defaults to:
+ * <tt>'This field should only contain letters, numbers and _'</tt>
+ * @type String
+ */
+ 'alphanumText' : 'This field should only contain letters, numbers and _',
+ /**
+ * The keystroke filter mask to be applied on alphanumeric input. Defaults to:
+ * <tt>/[a-z0-9_]/i</tt>
+ * @type RegExp
+ */
+ 'alphanumMask' : /[a-z0-9_]/i
+ };
+}();
+/**
+ * @class Ext.grid.GridPanel
+ * @extends Ext.Panel
+ * <p>This class represents the primary interface of a component based grid control to represent data
+ * in a tabular format of rows and columns. The GridPanel is composed of the following:</p>
+ * <div class="mdetail-params"><ul>
+ * <li><b>{@link Ext.data.Store Store}</b> : The Model holding the data records (rows)
+ * <div class="sub-desc"></div></li>
+ * <li><b>{@link Ext.grid.ColumnModel Column model}</b> : Column makeup
+ * <div class="sub-desc"></div></li>
+ * <li><b>{@link Ext.grid.GridView View}</b> : Encapsulates the user interface
+ * <div class="sub-desc"></div></li>
+ * <li><b>{@link Ext.grid.AbstractSelectionModel selection model}</b> : Selection behavior
+ * <div class="sub-desc"></div></li>
+ * </ul></div>
+ * <p>Example usage:</p>
+ * <pre><code>
+var grid = new Ext.grid.GridPanel({
+ {@link #store}: new {@link Ext.data.Store}({
+ {@link Ext.data.Store#autoDestroy autoDestroy}: true,
+ {@link Ext.data.Store#reader reader}: reader,
+ {@link Ext.data.Store#data data}: xg.dummyData
+ }),
+ {@link #colModel}: new {@link Ext.grid.ColumnModel}({
+ {@link Ext.grid.ColumnModel#defaults defaults}: {
+ width: 120,
+ sortable: true
+ },
+ {@link Ext.grid.ColumnModel#columns columns}: [
+ {id: 'company', header: 'Company', width: 200, sortable: true, dataIndex: 'company'},
+ {header: 'Price', renderer: Ext.util.Format.usMoney, dataIndex: 'price'},
+ {header: 'Change', dataIndex: 'change'},
+ {header: '% Change', dataIndex: 'pctChange'},
+ // instead of specifying renderer: Ext.util.Format.dateRenderer('m/d/Y') use xtype
+ {
+ header: 'Last Updated', width: 135, dataIndex: 'lastChange',
+ xtype: 'datecolumn', format: 'M d, Y'
+ }
+ ]
+ }),
+ {@link #viewConfig}: {
+ {@link Ext.grid.GridView#forceFit forceFit}: true,
+
+// Return CSS class to apply to rows depending upon data values
+ {@link Ext.grid.GridView#getRowClass getRowClass}: function(record, index) {
+ var c = record.{@link Ext.data.Record#get get}('change');
+ if (c < 0) {
+ return 'price-fall';
+ } else if (c > 0) {
+ return 'price-rise';
+ }
+ }
+ },
+ {@link #sm}: new Ext.grid.RowSelectionModel({singleSelect:true}),
+ width: 600,
+ height: 300,
+ frame: true,
+ title: 'Framed with Row Selection and Horizontal Scrolling',
+ iconCls: 'icon-grid'
+});
+ * </code></pre>
+ * <p><b><u>Notes:</u></b></p>
+ * <div class="mdetail-params"><ul>
+ * <li>Although this class inherits many configuration options from base classes, some of them
+ * (such as autoScroll, autoWidth, layout, items, etc) are not used by this class, and will
+ * have no effect.</li>
+ * <li>A grid <b>requires</b> a width in which to scroll its columns, and a height in which to
+ * scroll its rows. These dimensions can either be set explicitly through the
+ * <tt>{@link Ext.BoxComponent#height height}</tt> and <tt>{@link Ext.BoxComponent#width width}</tt>
+ * configuration options or implicitly set by using the grid as a child item of a
+ * {@link Ext.Container Container} which will have a {@link Ext.Container#layout layout manager}
+ * provide the sizing of its child items (for example the Container of the Grid may specify
+ * <tt>{@link Ext.Container#layout layout}:'fit'</tt>).</li>
+ * <li>To access the data in a Grid, it is necessary to use the data model encapsulated
+ * by the {@link #store Store}. See the {@link #cellclick} event for more details.</li>
+ * </ul></div>
+ * @constructor
+ * @param {Object} config The config object
+ * @xtype grid
+ */
+Ext.grid.GridPanel = Ext.extend(Ext.Panel, {
+ /**
+ * @cfg {String} autoExpandColumn
+ * <p>The <tt>{@link Ext.grid.Column#id id}</tt> of a {@link Ext.grid.Column column} in
+ * this grid that should expand to fill unused space. This value specified here can not
+ * be <tt>0</tt>.</p>
+ * <br><p><b>Note</b>: If the Grid's {@link Ext.grid.GridView view} is configured with
+ * <tt>{@link Ext.grid.GridView#forceFit forceFit}=true</tt> the <tt>autoExpandColumn</tt>
+ * is ignored. See {@link Ext.grid.Column}.<tt>{@link Ext.grid.Column#width width}</tt>
+ * for additional details.</p>
+ * <p>See <tt>{@link #autoExpandMax}</tt> and <tt>{@link #autoExpandMin}</tt> also.</p>
+ */
+ autoExpandColumn : false,
+
+
+ autoExpandMax : 1000,
+
+
+ autoExpandMin : 50,
+
+
+ columnLines : false,
+
+
+
+
+
+
+ ddText : '{0} selected row{1}',
+
+
+
+
+ deferRowRender : true,
+
+
+
+
+ enableColumnHide : true,
+
+
+ enableColumnMove : true,
+
+
+ enableDragDrop : false,
+
+
+ enableHdMenu : true,
+
+
+
+ loadMask : false,
+
+
+
+ minColumnWidth : 25,
+
+
+
+
+
+ stripeRows : false,
+
+
+ trackMouseOver : true,
+
+
+ stateEvents : ['columnmove', 'columnresize', 'sortchange', 'groupchange'],
+
+
+ view : null,
+
+
+ bubbleEvents: [],
+
+
+
+
+ rendered : false,
+
+
+ viewReady : false,
+
+
+ initComponent : function() {
+ Ext.grid.GridPanel.superclass.initComponent.call(this);
+
+ if (this.columnLines) {
+ this.cls = (this.cls || '') + ' x-grid-with-col-lines';
+ }
+
+
+ this.autoScroll = false;
+ this.autoWidth = false;
+
+ if(Ext.isArray(this.columns)){
+ this.colModel = new Ext.grid.ColumnModel(this.columns);
+ delete this.columns;
+ }
+
+
+ if(this.ds){
+ this.store = this.ds;
+ delete this.ds;
+ }
+ if(this.cm){
+ this.colModel = this.cm;
+ delete this.cm;
+ }
+ if(this.sm){
+ this.selModel = this.sm;
+ delete this.sm;
+ }
+ this.store = Ext.StoreMgr.lookup(this.store);
+
+ this.addEvents(
+
+
+ 'click',
+
+ 'dblclick',
+
+ 'contextmenu',
+
+ 'mousedown',
+
+ 'mouseup',
+
+ 'mouseover',
+
+ 'mouseout',
+
+ 'keypress',
+
+ 'keydown',
+
+
+
+ 'cellmousedown',
+
+ 'rowmousedown',
+
+ 'headermousedown',
+
+
+ 'groupmousedown',
+
+
+ 'rowbodymousedown',
+
+
+ 'containermousedown',
+
+
+ 'cellclick',
+
+ 'celldblclick',
+
+ 'rowclick',
+
+ 'rowdblclick',
+
+ 'headerclick',
+
+ 'headerdblclick',
+
+ 'groupclick',
+
+ 'groupdblclick',
+
+ 'containerclick',
+
+ 'containerdblclick',
+
+
+ 'rowbodyclick',
+
+ 'rowbodydblclick',
+
+
+ 'rowcontextmenu',
+
+ 'cellcontextmenu',
+
+ 'headercontextmenu',
+
+ 'groupcontextmenu',
+
+ 'containercontextmenu',
+
+ 'rowbodycontextmenu',
+
+ 'bodyscroll',
+
+ 'columnresize',
+
+ 'columnmove',
+
+ 'sortchange',
+
+ 'groupchange',
+
+ 'reconfigure',
+
+ 'viewready'
+ );
+ },
+
+
+ onRender : function(ct, position){
+ Ext.grid.GridPanel.superclass.onRender.apply(this, arguments);
+
+ var c = this.getGridEl();
+
+ this.el.addClass('x-grid-panel');
+
+ this.mon(c, {
+ scope: this,
+ mousedown: this.onMouseDown,
+ click: this.onClick,
+ dblclick: this.onDblClick,
+ contextmenu: this.onContextMenu
+ });
+
+ this.relayEvents(c, ['mousedown','mouseup','mouseover','mouseout','keypress', 'keydown']);
+
+ var view = this.getView();
+ view.init(this);
+ view.render();
+ this.getSelectionModel().init(this);
+ },
+
+
+ initEvents : function(){
+ Ext.grid.GridPanel.superclass.initEvents.call(this);
+
+ if(this.loadMask){
+ this.loadMask = new Ext.LoadMask(this.bwrap,
+ Ext.apply({store:this.store}, this.loadMask));
+ }
+ },
+
+ initStateEvents : function(){
+ Ext.grid.GridPanel.superclass.initStateEvents.call(this);
+ this.mon(this.colModel, 'hiddenchange', this.saveState, this, {delay: 100});
+ },
+
+ applyState : function(state){
+ var cm = this.colModel,
+ cs = state.columns,
+ store = this.store,
+ s,
+ c,
+ colIndex;
+
+ if(cs){
+ for(var i = 0, len = cs.length; i < len; i++){
+ s = cs[i];
+ c = cm.getColumnById(s.id);
+ if(c){
+ colIndex = cm.getIndexById(s.id);
+ cm.setState(colIndex, {
+ hidden: s.hidden,
+ width: s.width,
+ sortable: c.sortable,
+ editable: c.editable
+ });
+ if(colIndex != i){
+ cm.moveColumn(colIndex, i);
+ }
+ }
+ }
+ }
+ if(store){
+ s = state.sort;
+ if(s){
+ store[store.remoteSort ? 'setDefaultSort' : 'sort'](s.field, s.direction);
+ }
+ s = state.group;
+ if(store.groupBy){
+ if(s){
+ store.groupBy(s);
+ }else{
+ store.clearGrouping();
+ }
+ }
+
+ }
+ var o = Ext.apply({}, state);
+ delete o.columns;
+ delete o.sort;
+ Ext.grid.GridPanel.superclass.applyState.call(this, o);
+ },
+
+ getState : function(){
+ var o = {columns: []},
+ store = this.store,
+ ss,
+ gs;
+
+ for(var i = 0, c; (c = this.colModel.config[i]); i++){
+ o.columns[i] = {
+ id: c.id,
+ width: c.width
+ };
+ if(c.hidden){
+ o.columns[i].hidden = true;
+ }
+ }
+ if(store){
+ ss = store.getSortState();
+ if(ss){
+ o.sort = ss;
+ }
+ if(store.getGroupState){
+ gs = store.getGroupState();
+ if(gs){
+ o.group = gs;
+ }
+ }
+ }
+ return o;
+ },
+
+
+ afterRender : function(){
+ Ext.grid.GridPanel.superclass.afterRender.call(this);
+ var v = this.view;
+ this.on('bodyresize', v.layout, v);
+ v.layout(true);
+ if(this.deferRowRender){
+ if (!this.deferRowRenderTask){
+ this.deferRowRenderTask = new Ext.util.DelayedTask(v.afterRender, this.view);
+ }
+ this.deferRowRenderTask.delay(10);
+ }else{
+ v.afterRender();
+ }
+ this.viewReady = true;
+ },
+
+
+ reconfigure : function(store, colModel){
+ var rendered = this.rendered;
+ if(rendered){
+ if(this.loadMask){
+ this.loadMask.destroy();
+ this.loadMask = new Ext.LoadMask(this.bwrap,
+ Ext.apply({}, {store:store}, this.initialConfig.loadMask));
+ }
+ }
+ if(this.view){
+ this.view.initData(store, colModel);
+ }
+ this.store = store;
+ this.colModel = colModel;
+ if(rendered){
+ this.view.refresh(true);
+ }
+ this.fireEvent('reconfigure', this, store, colModel);
+ },
+
+
+ onDestroy : function(){
+ if (this.deferRowRenderTask && this.deferRowRenderTask.cancel){
+ this.deferRowRenderTask.cancel();
+ }
+ if(this.rendered){
+ Ext.destroy(this.view, this.loadMask);
+ }else if(this.store && this.store.autoDestroy){
+ this.store.destroy();
+ }
+ Ext.destroy(this.colModel, this.selModel);
+ this.store = this.selModel = this.colModel = this.view = this.loadMask = null;
+ Ext.grid.GridPanel.superclass.onDestroy.call(this);
+ },
+
+
+ processEvent : function(name, e){
+ this.view.processEvent(name, e);
+ },
+
+
+ onClick : function(e){
+ this.processEvent('click', e);
+ },
+
+
+ onMouseDown : function(e){
+ this.processEvent('mousedown', e);
+ },
+
+
+ onContextMenu : function(e, t){
+ this.processEvent('contextmenu', e);
+ },
+
+
+ onDblClick : function(e){
+ this.processEvent('dblclick', e);
+ },
+
+
+ walkCells : function(row, col, step, fn, scope){
+ var cm = this.colModel,
+ clen = cm.getColumnCount(),
+ ds = this.store,
+ rlen = ds.getCount(),
+ first = true;
+
+ if(step < 0){
+ if(col < 0){
+ row--;
+ first = false;
+ }
+ while(row >= 0){
+ if(!first){
+ col = clen-1;
+ }
+ first = false;
+ while(col >= 0){
+ if(fn.call(scope || this, row, col, cm) === true){
+ return [row, col];
+ }
+ col--;
+ }
+ row--;
+ }
+ } else {
+ if(col >= clen){
+ row++;
+ first = false;
+ }
+ while(row < rlen){
+ if(!first){
+ col = 0;
+ }
+ first = false;
+ while(col < clen){
+ if(fn.call(scope || this, row, col, cm) === true){
+ return [row, col];
+ }
+ col++;
+ }
+ row++;
+ }
+ }
+ return null;
+ },
+
+
+ getGridEl : function(){
+ return this.body;
+ },
+
+
+ stopEditing : Ext.emptyFn,
+
+
+ getSelectionModel : function(){
+ if(!this.selModel){
+ this.selModel = new Ext.grid.RowSelectionModel(
+ this.disableSelection ? {selectRow: Ext.emptyFn} : null);
+ }
+ return this.selModel;
+ },
+
+
+ getStore : function(){
+ return this.store;
+ },
+
+
+ getColumnModel : function(){
+ return this.colModel;
+ },
+
+
+ getView : function() {
+ if (!this.view) {
+ this.view = new Ext.grid.GridView(this.viewConfig);
+ }
+
+ return this.view;
+ },
+
+ getDragDropText : function(){
+ var count = this.selModel.getCount ? this.selModel.getCount() : 1;
+ return String.format(this.ddText, count, count == 1 ? '' : 's');
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+});
+Ext.reg('grid', Ext.grid.GridPanel);
+Ext.grid.PivotGrid = Ext.extend(Ext.grid.GridPanel, {
+
+
+ aggregator: 'sum',
+
+
+ renderer: undefined,
+
+
+
+
+
+
+
+
+ initComponent: function() {
+ Ext.grid.PivotGrid.superclass.initComponent.apply(this, arguments);
+
+ this.initAxes();
+
+
+ this.enableColumnResize = false;
+
+ this.viewConfig = Ext.apply(this.viewConfig || {}, {
+ forceFit: true
+ });
+
+
+
+ this.colModel = new Ext.grid.ColumnModel({});
+ },
+
+
+ getAggregator: function() {
+ if (typeof this.aggregator == 'string') {
+ return Ext.grid.PivotAggregatorMgr.types[this.aggregator];
+ } else {
+ return this.aggregator;
+ }
+ },
+
+
+ setAggregator: function(aggregator) {
+ this.aggregator = aggregator;
+ },
+
+
+ setMeasure: function(measure) {
+ this.measure = measure;
+ },
+
+
+ setLeftAxis: function(axis, refresh) {
+
+ this.leftAxis = axis;
+
+ if (refresh) {
+ this.view.refresh();
+ }
+ },
+
+
+ setTopAxis: function(axis, refresh) {
+
+ this.topAxis = axis;
+
+ if (refresh) {
+ this.view.refresh();
+ }
+ },
+
+
+ initAxes: function() {
+ var PivotAxis = Ext.grid.PivotAxis;
+
+ if (!(this.leftAxis instanceof PivotAxis)) {
+ this.setLeftAxis(new PivotAxis({
+ orientation: 'vertical',
+ dimensions : this.leftAxis || [],
+ store : this.store
+ }));
+ };
+
+ if (!(this.topAxis instanceof PivotAxis)) {
+ this.setTopAxis(new PivotAxis({
+ orientation: 'horizontal',
+ dimensions : this.topAxis || [],
+ store : this.store
+ }));
+ };
+ },
+
+
+ extractData: function() {
+ var records = this.store.data.items,
+ recCount = records.length,
+ cells = [],
+ record, i, j, k;
+
+ if (recCount == 0) {
+ return [];
+ }
+
+ var leftTuples = this.leftAxis.getTuples(),
+ leftCount = leftTuples.length,
+ topTuples = this.topAxis.getTuples(),
+ topCount = topTuples.length,
+ aggregator = this.getAggregator();
+
+ for (i = 0; i < recCount; i++) {
+ record = records[i];
+
+ for (j = 0; j < leftCount; j++) {
+ cells[j] = cells[j] || [];
+
+ if (leftTuples[j].matcher(record) === true) {
+ for (k = 0; k < topCount; k++) {
+ cells[j][k] = cells[j][k] || [];
+
+ if (topTuples[k].matcher(record)) {
+ cells[j][k].push(record);
+ }
+ }
+ }
+ }
+ }
+
+ var rowCount = cells.length,
+ colCount, row;
+
+ for (i = 0; i < rowCount; i++) {
+ row = cells[i];
+ colCount = row.length;
+
+ for (j = 0; j < colCount; j++) {
+ cells[i][j] = aggregator(cells[i][j], this.measure);
+ }
+ }
+
+ return cells;
+ },
+
+
+ getView: function() {
+ if (!this.view) {
+ this.view = new Ext.grid.PivotGridView(this.viewConfig);
+ }
+
+ return this.view;
+ }
+});
+
+Ext.reg('pivotgrid', Ext.grid.PivotGrid);
+
+
+Ext.grid.PivotAggregatorMgr = new Ext.AbstractManager();
+
+Ext.grid.PivotAggregatorMgr.registerType('sum', function(records, measure) {
+ var length = records.length,
+ total = 0,
+ i;
+
+ for (i = 0; i < length; i++) {
+ total += records[i].get(measure);
+ }
+
+ return total;
+});
+
+Ext.grid.PivotAggregatorMgr.registerType('avg', function(records, measure) {
+ var length = records.length,
+ total = 0,
+ i;
+
+ for (i = 0; i < length; i++) {
+ total += records[i].get(measure);
+ }
+
+ return (total / length) || 'n/a';
+});
+
+Ext.grid.PivotAggregatorMgr.registerType('min', function(records, measure) {
+ var data = [],
+ length = records.length,
+ i;
+
+ for (i = 0; i < length; i++) {
+ data.push(records[i].get(measure));
+ }
+
+ return Math.min.apply(this, data) || 'n/a';
+});
+
+Ext.grid.PivotAggregatorMgr.registerType('max', function(records, measure) {
+ var data = [],
+ length = records.length,
+ i;
+
+ for (i = 0; i < length; i++) {
+ data.push(records[i].get(measure));
+ }
+
+ return Math.max.apply(this, data) || 'n/a';
+});
+
+Ext.grid.PivotAggregatorMgr.registerType('count', function(records, measure) {
+ return records.length;
+});
+Ext.grid.GridView = Ext.extend(Ext.util.Observable, {
+
+
+
+
+
+
+
+
+
+
+
+ deferEmptyText : true,
+
+
+ scrollOffset : undefined,
+
+
+ autoFill : false,
+
+
+ forceFit : false,
+
+
+ sortClasses : ['sort-asc', 'sort-desc'],
+
+
+ sortAscText : 'Sort Ascending',
+
+
+ sortDescText : 'Sort Descending',
+
+
+ hideSortIcons: false,
+
+
+ columnsText : 'Columns',
+
+
+ selectedRowClass : 'x-grid3-row-selected',
+
+
+ borderWidth : 2,
+ tdClass : 'x-grid3-cell',
+ hdCls : 'x-grid3-hd',
+
+
+
+ markDirty : true,
+
+
+ cellSelectorDepth : 4,
+
+
+ rowSelectorDepth : 10,
+
+
+ rowBodySelectorDepth : 10,
+
+
+ cellSelector : 'td.x-grid3-cell',
+
+
+ rowSelector : 'div.x-grid3-row',
+
+
+ rowBodySelector : 'div.x-grid3-row-body',
+
+
+ firstRowCls: 'x-grid3-row-first',
+ lastRowCls: 'x-grid3-row-last',
+ rowClsRe: /(?:^|\s+)x-grid3-row-(first|last|alt)(?:\s+|$)/g,
+
+
+ headerMenuOpenCls: 'x-grid3-hd-menu-open',
+
+
+ rowOverCls: 'x-grid3-row-over',
+
+ constructor : function(config) {
+ Ext.apply(this, config);
+
+
+ this.addEvents(
+
+ 'beforerowremoved',
+
+
+ 'beforerowsinserted',
+
+
+ 'beforerefresh',
+
+
+ 'rowremoved',
+
+
+ 'rowsinserted',
+
+
+ 'rowupdated',
+
+
+ 'refresh'
+ );
+
+ Ext.grid.GridView.superclass.constructor.call(this);
+ },
+
+
+
+
+ masterTpl: new Ext.Template(
+ '<div class="x-grid3" hidefocus="true">',
+ '<div class="x-grid3-viewport">',
+ '<div class="x-grid3-header">',
+ '<div class="x-grid3-header-inner">',
+ '<div class="x-grid3-header-offset" style="{ostyle}">{header}</div>',
+ '</div>',
+ '<div class="x-clear"></div>',
+ '</div>',
+ '<div class="x-grid3-scroller">',
+ '<div class="x-grid3-body" style="{bstyle}">{body}</div>',
+ '<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',
+ '</div>',
+ '</div>',
+ '<div class="x-grid3-resize-marker">&#160;</div>',
+ '<div class="x-grid3-resize-proxy">&#160;</div>',
+ '</div>'
+ ),
+
+
+ headerTpl: new Ext.Template(
+ '<table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',
+ '<thead>',
+ '<tr class="x-grid3-hd-row">{cells}</tr>',
+ '</thead>',
+ '</table>'
+ ),
+
+
+ bodyTpl: new Ext.Template('{rows}'),
+
+
+ cellTpl: new Ext.Template(
+ '<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}" tabIndex="0" {cellAttr}>',
+ '<div class="x-grid3-cell-inner x-grid3-col-{id} x-unselectable" unselectable="on" {attr}>{value}</div>',
+ '</td>'
+ ),
+
+
+ initTemplates : function() {
+ var templates = this.templates || {},
+ template, name,
+
+ headerCellTpl = new Ext.Template(
+ '<td class="x-grid3-hd x-grid3-cell x-grid3-td-{id} {css}" style="{style}">',
+ '<div {tooltip} {attr} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">',
+ this.grid.enableHdMenu ? '<a class="x-grid3-hd-btn" href="#"></a>' : '',
+ '{value}',
+ '<img alt="" class="x-grid3-sort-icon" src="', Ext.BLANK_IMAGE_URL, '" />',
+ '</div>',
+ '</td>'
+ ),
+
+ rowBodyText = [
+ '<tr class="x-grid3-row-body-tr" style="{bodyStyle}">',
+ '<td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on">',
+ '<div class="x-grid3-row-body">{body}</div>',
+ '</td>',
+ '</tr>'
+ ].join(""),
+
+ innerText = [
+ '<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',
+ '<tbody>',
+ '<tr>{cells}</tr>',
+ this.enableRowBody ? rowBodyText : '',
+ '</tbody>',
+ '</table>'
+ ].join("");
+
+ Ext.applyIf(templates, {
+ hcell : headerCellTpl,
+ cell : this.cellTpl,
+ body : this.bodyTpl,
+ header : this.headerTpl,
+ master : this.masterTpl,
+ row : new Ext.Template('<div class="x-grid3-row {alt}" style="{tstyle}">' + innerText + '</div>'),
+ rowInner: new Ext.Template(innerText)
+ });
+
+ for (name in templates) {
+ template = templates[name];
+
+ if (template && Ext.isFunction(template.compile) && !template.compiled) {
+ template.disableFormats = true;
+ template.compile();
+ }
+ }
+
+ this.templates = templates;
+ this.colRe = new RegExp('x-grid3-td-([^\\s]+)', '');
+ },
+
+
+ fly : function(el) {
+ if (!this._flyweight) {
+ this._flyweight = new Ext.Element.Flyweight(document.body);
+ }
+ this._flyweight.dom = el;
+ return this._flyweight;
+ },
+
+
+ getEditorParent : function() {
+ return this.scroller.dom;
+ },
+
+
+ initElements : function() {
+ var Element = Ext.Element,
+ el = Ext.get(this.grid.getGridEl().dom.firstChild),
+ mainWrap = new Element(el.child('div.x-grid3-viewport')),
+ mainHd = new Element(mainWrap.child('div.x-grid3-header')),
+ scroller = new Element(mainWrap.child('div.x-grid3-scroller'));
+
+ if (this.grid.hideHeaders) {
+ mainHd.setDisplayed(false);
+ }
+
+ if (this.forceFit) {
+ scroller.setStyle('overflow-x', 'hidden');
+ }
+
+
+
+ Ext.apply(this, {
+ el : el,
+ mainWrap: mainWrap,
+ scroller: scroller,
+ mainHd : mainHd,
+ innerHd : mainHd.child('div.x-grid3-header-inner').dom,
+ mainBody: new Element(Element.fly(scroller).child('div.x-grid3-body')),
+ focusEl : new Element(Element.fly(scroller).child('a')),
+
+ resizeMarker: new Element(el.child('div.x-grid3-resize-marker')),
+ resizeProxy : new Element(el.child('div.x-grid3-resize-proxy'))
+ });
+
+ this.focusEl.swallowEvent('click', true);
+ },
+
+
+ getRows : function() {
+ return this.hasRows() ? this.mainBody.dom.childNodes : [];
+ },
+
+
+
+
+ findCell : function(el) {
+ if (!el) {
+ return false;
+ }
+ return this.fly(el).findParent(this.cellSelector, this.cellSelectorDepth);
+ },
+
+
+ findCellIndex : function(el, requiredCls) {
+ var cell = this.findCell(el),
+ hasCls;
+
+ if (cell) {
+ hasCls = this.fly(cell).hasClass(requiredCls);
+ if (!requiredCls || hasCls) {
+ return this.getCellIndex(cell);
+ }
+ }
+ return false;
+ },
+
+
+ getCellIndex : function(el) {
+ if (el) {
+ var match = el.className.match(this.colRe);
+
+ if (match && match[1]) {
+ return this.cm.getIndexById(match[1]);
+ }
+ }
+ return false;
+ },
+
+
+ findHeaderCell : function(el) {
+ var cell = this.findCell(el);
+ return cell && this.fly(cell).hasClass(this.hdCls) ? cell : null;
+ },
+
+
+ findHeaderIndex : function(el){
+ return this.findCellIndex(el, this.hdCls);
+ },
+
+
+ findRow : function(el) {
+ if (!el) {
+ return false;
+ }
+ return this.fly(el).findParent(this.rowSelector, this.rowSelectorDepth);
+ },
+
+
+ findRowIndex : function(el) {
+ var row = this.findRow(el);
+ return row ? row.rowIndex : false;
+ },
+
+
+ findRowBody : function(el) {
+ if (!el) {
+ return false;
+ }
+
+ return this.fly(el).findParent(this.rowBodySelector, this.rowBodySelectorDepth);
+ },
+
+
+
+
+ getRow : function(row) {
+ return this.getRows()[row];
+ },
+
+
+ getCell : function(row, col) {
+ return Ext.fly(this.getRow(row)).query(this.cellSelector)[col];
+ },
+
+
+ getHeaderCell : function(index) {
+ return this.mainHd.dom.getElementsByTagName('td')[index];
+ },
+
+
+
+
+ addRowClass : function(rowId, cls) {
+ var row = this.getRow(rowId);
+ if (row) {
+ this.fly(row).addClass(cls);
+ }
+ },
+
+
+ removeRowClass : function(row, cls) {
+ var r = this.getRow(row);
+ if(r){
+ this.fly(r).removeClass(cls);
+ }
+ },
+
+
+ removeRow : function(row) {
+ Ext.removeNode(this.getRow(row));
+ this.syncFocusEl(row);
+ },
+
+
+ removeRows : function(firstRow, lastRow) {
+ var bd = this.mainBody.dom,
+ rowIndex;
+
+ for (rowIndex = firstRow; rowIndex <= lastRow; rowIndex++){
+ Ext.removeNode(bd.childNodes[firstRow]);
+ }
+
+ this.syncFocusEl(firstRow);
+ },
+
+
+
+
+ getScrollState : function() {
+ var sb = this.scroller.dom;
+
+ return {
+ left: sb.scrollLeft,
+ top : sb.scrollTop
+ };
+ },
+
+
+ restoreScroll : function(state) {
+ var sb = this.scroller.dom;
+ sb.scrollLeft = state.left;
+ sb.scrollTop = state.top;
+ },
+
+
+ scrollToTop : function() {
+ var dom = this.scroller.dom;
+
+ dom.scrollTop = 0;
+ dom.scrollLeft = 0;
+ },
+
+
+ syncScroll : function() {
+ this.syncHeaderScroll();
+ var mb = this.scroller.dom;
+ this.grid.fireEvent('bodyscroll', mb.scrollLeft, mb.scrollTop);
+ },
+
+
+ syncHeaderScroll : function() {
+ var innerHd = this.innerHd,
+ scrollLeft = this.scroller.dom.scrollLeft;
+
+ innerHd.scrollLeft = scrollLeft;
+ innerHd.scrollLeft = scrollLeft;
+ },
+
+
+ updateSortIcon : function(col, dir) {
+ var sortClasses = this.sortClasses,
+ sortClass = sortClasses[dir == "DESC" ? 1 : 0],
+ headers = this.mainHd.select('td').removeClass(sortClasses);
+
+ headers.item(col).addClass(sortClass);
+ },
+
+
+ updateAllColumnWidths : function() {
+ var totalWidth = this.getTotalWidth(),
+ colCount = this.cm.getColumnCount(),
+ rows = this.getRows(),
+ rowCount = rows.length,
+ widths = [],
+ row, rowFirstChild, trow, i, j;
+
+ for (i = 0; i < colCount; i++) {
+ widths[i] = this.getColumnWidth(i);
+ this.getHeaderCell(i).style.width = widths[i];
+ }
+
+ this.updateHeaderWidth();
+
+ for (i = 0; i < rowCount; i++) {
+ row = rows[i];
+ row.style.width = totalWidth;
+ rowFirstChild = row.firstChild;
+
+ if (rowFirstChild) {
+ rowFirstChild.style.width = totalWidth;
+ trow = rowFirstChild.rows[0];
+
+ for (j = 0; j < colCount; j++) {
+ trow.childNodes[j].style.width = widths[j];
+ }
+ }
+ }
+
+ this.onAllColumnWidthsUpdated(widths, totalWidth);
+ },
+
+
+ updateColumnWidth : function(column, width) {
+ var columnWidth = this.getColumnWidth(column),
+ totalWidth = this.getTotalWidth(),
+ headerCell = this.getHeaderCell(column),
+ nodes = this.getRows(),
+ nodeCount = nodes.length,
+ row, i, firstChild;
+
+ this.updateHeaderWidth();
+ headerCell.style.width = columnWidth;
+
+ for (i = 0; i < nodeCount; i++) {
+ row = nodes[i];
+ firstChild = row.firstChild;
+
+ row.style.width = totalWidth;
+ if (firstChild) {
+ firstChild.style.width = totalWidth;
+ firstChild.rows[0].childNodes[column].style.width = columnWidth;
+ }
+ }
+
+ this.onColumnWidthUpdated(column, columnWidth, totalWidth);
+ },
+
+
+ updateColumnHidden : function(col, hidden) {
+ var totalWidth = this.getTotalWidth(),
+ display = hidden ? 'none' : '',
+ headerCell = this.getHeaderCell(col),
+ nodes = this.getRows(),
+ nodeCount = nodes.length,
+ row, rowFirstChild, i;
+
+ this.updateHeaderWidth();
+ headerCell.style.display = display;
+
+ for (i = 0; i < nodeCount; i++) {
+ row = nodes[i];
+ row.style.width = totalWidth;
+ rowFirstChild = row.firstChild;
+
+ if (rowFirstChild) {
+ rowFirstChild.style.width = totalWidth;
+ rowFirstChild.rows[0].childNodes[col].style.display = display;
+ }
+ }
+
+ this.onColumnHiddenUpdated(col, hidden, totalWidth);
+ delete this.lastViewWidth;
+ this.layout();
+ },
+
+
+ doRender : function(columns, records, store, startRow, colCount, stripe) {
+ var templates = this.templates,
+ cellTemplate = templates.cell,
+ rowTemplate = templates.row,
+ last = colCount - 1,
+ tstyle = 'width:' + this.getTotalWidth() + ';',
+
+ rowBuffer = [],
+ colBuffer = [],
+ rowParams = {tstyle: tstyle},
+ meta = {},
+ len = records.length,
+ alt,
+ column,
+ record, i, j, rowIndex;
+
+
+ for (j = 0; j < len; j++) {
+ record = records[j];
+ colBuffer = [];
+
+ rowIndex = j + startRow;
+
+
+ for (i = 0; i < colCount; i++) {
+ column = columns[i];
+
+ meta.id = column.id;
+ meta.css = i === 0 ? 'x-grid3-cell-first ' : (i == last ? 'x-grid3-cell-last ' : '');
+ meta.attr = meta.cellAttr = '';
+ meta.style = column.style;
+ meta.value = column.renderer.call(column.scope, record.data[column.name], meta, record, rowIndex, i, store);
+
+ if (Ext.isEmpty(meta.value)) {
+ meta.value = '&#160;';
+ }
+
+ if (this.markDirty && record.dirty && typeof record.modified[column.name] != 'undefined') {
+ meta.css += ' x-grid3-dirty-cell';
+ }
+
+ colBuffer[colBuffer.length] = cellTemplate.apply(meta);
+ }
+
+ alt = [];
+
+ if (stripe && ((rowIndex + 1) % 2 === 0)) {
+ alt[0] = 'x-grid3-row-alt';
+ }
+
+ if (record.dirty) {
+ alt[1] = ' x-grid3-dirty-row';
+ }
+
+ rowParams.cols = colCount;
+
+ if (this.getRowClass) {
+ alt[2] = this.getRowClass(record, rowIndex, rowParams, store);
+ }
+
+ rowParams.alt = alt.join(' ');
+ rowParams.cells = colBuffer.join('');
+
+ rowBuffer[rowBuffer.length] = rowTemplate.apply(rowParams);
+ }
+
+ return rowBuffer.join('');
+ },
+
+
+ processRows : function(startRow, skipStripe) {
+ if (!this.ds || this.ds.getCount() < 1) {
+ return;
+ }
+
+ var rows = this.getRows(),
+ length = rows.length,
+ row, i;
+
+ skipStripe = skipStripe || !this.grid.stripeRows;
+ startRow = startRow || 0;
+
+ for (i = 0; i < length; i++) {
+ row = rows[i];
+ if (row) {
+ row.rowIndex = i;
+ if (!skipStripe) {
+ row.className = row.className.replace(this.rowClsRe, ' ');
+ if ((i + 1) % 2 === 0){
+ row.className += ' x-grid3-row-alt';
+ }
+ }
+ }
+ }
+
+
+ if (startRow === 0) {
+ Ext.fly(rows[0]).addClass(this.firstRowCls);
+ }
+
+ Ext.fly(rows[length - 1]).addClass(this.lastRowCls);
+ },
+
+
+ afterRender : function() {
+ if (!this.ds || !this.cm) {
+ return;
+ }
+
+ this.mainBody.dom.innerHTML = this.renderBody() || '&#160;';
+ this.processRows(0, true);
+
+ if (this.deferEmptyText !== true) {
+ this.applyEmptyText();
+ }
+
+ this.grid.fireEvent('viewready', this.grid);
+ },
+
+
+ afterRenderUI: function() {
+ var grid = this.grid;
+
+ this.initElements();
+
+
+ Ext.fly(this.innerHd).on('click', this.handleHdDown, this);
+
+ this.mainHd.on({
+ scope : this,
+ mouseover: this.handleHdOver,
+ mouseout : this.handleHdOut,
+ mousemove: this.handleHdMove
+ });
+
+ this.scroller.on('scroll', this.syncScroll, this);
+
+ if (grid.enableColumnResize !== false) {
+ this.splitZone = new Ext.grid.GridView.SplitDragZone(grid, this.mainHd.dom);
+ }
+
+ if (grid.enableColumnMove) {
+ this.columnDrag = new Ext.grid.GridView.ColumnDragZone(grid, this.innerHd);
+ this.columnDrop = new Ext.grid.HeaderDropZone(grid, this.mainHd.dom);
+ }
+
+ if (grid.enableHdMenu !== false) {
+ this.hmenu = new Ext.menu.Menu({id: grid.id + '-hctx'});
+ this.hmenu.add(
+ {itemId:'asc', text: this.sortAscText, cls: 'xg-hmenu-sort-asc'},
+ {itemId:'desc', text: this.sortDescText, cls: 'xg-hmenu-sort-desc'}
+ );
+
+ if (grid.enableColumnHide !== false) {
+ this.colMenu = new Ext.menu.Menu({id:grid.id + '-hcols-menu'});
+ this.colMenu.on({
+ scope : this,
+ beforeshow: this.beforeColMenuShow,
+ itemclick : this.handleHdMenuClick
+ });
+ this.hmenu.add({
+ itemId: 'sortSep',
+ xtype: 'menuseparator'
+ }, {
+ itemId:'columns',
+ hideOnClick: false,
+ text: this.columnsText,
+ menu: this.colMenu,
+ iconCls: 'x-cols-icon'
+ });
+ }
+
+ this.hmenu.on('itemclick', this.handleHdMenuClick, this);
+ }
+
+ if (grid.trackMouseOver) {
+ this.mainBody.on({
+ scope : this,
+ mouseover: this.onRowOver,
+ mouseout : this.onRowOut
+ });
+ }
+
+ if (grid.enableDragDrop || grid.enableDrag) {
+ this.dragZone = new Ext.grid.GridDragZone(grid, {
+ ddGroup : grid.ddGroup || 'GridDD'
+ });
+ }
+
+ this.updateHeaderSortState();
+ },
+
+
+ renderUI : function() {
+ var templates = this.templates;
+
+ return templates.master.apply({
+ body : templates.body.apply({rows:'&#160;'}),
+ header: this.renderHeaders(),
+ ostyle: 'width:' + this.getOffsetWidth() + ';',
+ bstyle: 'width:' + this.getTotalWidth() + ';'
+ });
+ },
+
+
+ processEvent : function(name, e) {
+ var target = e.getTarget(),
+ grid = this.grid,
+ header = this.findHeaderIndex(target),
+ row, cell, col, body;
+
+ grid.fireEvent(name, e);
+
+ if (header !== false) {
+ grid.fireEvent('header' + name, grid, header, e);
+ } else {
+ row = this.findRowIndex(target);
+
+
+
+
+ if (row !== false) {
+ cell = this.findCellIndex(target);
+ if (cell !== false) {
+ col = grid.colModel.getColumnAt(cell);
+ if (grid.fireEvent('cell' + name, grid, row, cell, e) !== false) {
+ if (!col || (col.processEvent && (col.processEvent(name, e, grid, row, cell) !== false))) {
+ grid.fireEvent('row' + name, grid, row, e);
+ }
+ }
+ } else {
+ if (grid.fireEvent('row' + name, grid, row, e) !== false) {
+ (body = this.findRowBody(target)) && grid.fireEvent('rowbody' + name, grid, row, e);
+ }
+ }
+ } else {
+ grid.fireEvent('container' + name, grid, e);
+ }
+ }
+ },
+
+
+ layout : function(initial) {
+ if (!this.mainBody) {
+ return;
+ }
+
+ var grid = this.grid,
+ gridEl = grid.getGridEl(),
+ gridSize = gridEl.getSize(true),
+ gridWidth = gridSize.width,
+ gridHeight = gridSize.height,
+ scroller = this.scroller,
+ scrollStyle, headerHeight, scrollHeight;
+
+ if (gridWidth < 20 || gridHeight < 20) {
+ return;
+ }
+
+ if (grid.autoHeight) {
+ scrollStyle = scroller.dom.style;
+ scrollStyle.overflow = 'visible';
+
+ if (Ext.isWebKit) {
+ scrollStyle.position = 'static';
+ }
+ } else {
+ this.el.setSize(gridWidth, gridHeight);
+
+ headerHeight = this.mainHd.getHeight();
+ scrollHeight = gridHeight - headerHeight;
+
+ scroller.setSize(gridWidth, scrollHeight);
+
+ if (this.innerHd) {
+ this.innerHd.style.width = (gridWidth) + "px";
+ }
+ }
+
+ if (this.forceFit || (initial === true && this.autoFill)) {
+ if (this.lastViewWidth != gridWidth) {
+ this.fitColumns(false, false);
+ this.lastViewWidth = gridWidth;
+ }
+ } else {
+ this.autoExpand();
+ this.syncHeaderScroll();
+ }
+
+ this.onLayout(gridWidth, scrollHeight);
+ },
+
+
+
+ onLayout : function(vw, vh) {
+
+ },
+
+ onColumnWidthUpdated : function(col, w, tw) {
+
+ },
+
+ onAllColumnWidthsUpdated : function(ws, tw) {
+
+ },
+
+ onColumnHiddenUpdated : function(col, hidden, tw) {
+
+ },
+
+ updateColumnText : function(col, text) {
+
+ },
+
+ afterMove : function(colIndex) {
+
+ },
+
+
+
+ init : function(grid) {
+ this.grid = grid;
+
+ this.initTemplates();
+ this.initData(grid.store, grid.colModel);
+ this.initUI(grid);
+ },
+
+
+ getColumnId : function(index){
+ return this.cm.getColumnId(index);
+ },
+
+
+ getOffsetWidth : function() {
+ return (this.cm.getTotalWidth() + this.getScrollOffset()) + 'px';
+ },
+
+
+ getScrollOffset: function() {
+ return Ext.num(this.scrollOffset, Ext.getScrollBarWidth());
+ },
+
+
+ renderHeaders : function() {
+ var colModel = this.cm,
+ templates = this.templates,
+ headerTpl = templates.hcell,
+ properties = {},
+ colCount = colModel.getColumnCount(),
+ last = colCount - 1,
+ cells = [],
+ i, cssCls;
+
+ for (i = 0; i < colCount; i++) {
+ if (i == 0) {
+ cssCls = 'x-grid3-cell-first ';
+ } else {
+ cssCls = i == last ? 'x-grid3-cell-last ' : '';
+ }
+
+ properties = {
+ id : colModel.getColumnId(i),
+ value : colModel.getColumnHeader(i) || '',
+ style : this.getColumnStyle(i, true),
+ css : cssCls,
+ tooltip: this.getColumnTooltip(i)
+ };
+
+ if (colModel.config[i].align == 'right') {
+ properties.istyle = 'padding-right: 16px;';
+ } else {
+ delete properties.istyle;
+ }
+
+ cells[i] = headerTpl.apply(properties);
+ }
+
+ return templates.header.apply({
+ cells : cells.join(""),
+ tstyle: String.format("width: {0};", this.getTotalWidth())
+ });
+ },
+
+
+ getColumnTooltip : function(i) {
+ var tooltip = this.cm.getColumnTooltip(i);
+ if (tooltip) {
+ if (Ext.QuickTips.isEnabled()) {
+ return 'ext:qtip="' + tooltip + '"';
+ } else {
+ return 'title="' + tooltip + '"';
+ }
+ }
+
+ return '';
+ },
+
+
+ beforeUpdate : function() {
+ this.grid.stopEditing(true);
+ },
+
+
+ updateHeaders : function() {
+ this.innerHd.firstChild.innerHTML = this.renderHeaders();
+
+ this.updateHeaderWidth(false);
+ },
+
+
+ updateHeaderWidth: function(updateMain) {
+ var innerHdChild = this.innerHd.firstChild,
+ totalWidth = this.getTotalWidth();
+
+ innerHdChild.style.width = this.getOffsetWidth();
+ innerHdChild.firstChild.style.width = totalWidth;
+
+ if (updateMain !== false) {
+ this.mainBody.dom.style.width = totalWidth;
+ }
+ },
+
+
+ focusRow : function(row) {
+ this.focusCell(row, 0, false);
+ },
+
+
+ focusCell : function(row, col, hscroll) {
+ this.syncFocusEl(this.ensureVisible(row, col, hscroll));
+
+ var focusEl = this.focusEl;
+
+ if (Ext.isGecko) {
+ focusEl.focus();
+ } else {
+ focusEl.focus.defer(1, focusEl);
+ }
+ },
+
+
+ resolveCell : function(row, col, hscroll) {
+ if (!Ext.isNumber(row)) {
+ row = row.rowIndex;
+ }
+
+ if (!this.ds) {
+ return null;
+ }
+
+ if (row < 0 || row >= this.ds.getCount()) {
+ return null;
+ }
+ col = (col !== undefined ? col : 0);
+
+ var rowEl = this.getRow(row),
+ colModel = this.cm,
+ colCount = colModel.getColumnCount(),
+ cellEl;
+
+ if (!(hscroll === false && col === 0)) {
+ while (col < colCount && colModel.isHidden(col)) {
+ col++;
+ }
+
+ cellEl = this.getCell(row, col);
+ }
+
+ return {row: rowEl, cell: cellEl};
+ },
+
+
+ getResolvedXY : function(resolved) {
+ if (!resolved) {
+ return null;
+ }
+
+ var cell = resolved.cell,
+ row = resolved.row;
+
+ if (cell) {
+ return Ext.fly(cell).getXY();
+ } else {
+ return [this.el.getX(), Ext.fly(row).getY()];
+ }
+ },
+
+
+ syncFocusEl : function(row, col, hscroll) {
+ var xy = row;
+
+ if (!Ext.isArray(xy)) {
+ row = Math.min(row, Math.max(0, this.getRows().length-1));
+
+ if (isNaN(row)) {
+ return;
+ }
+
+ xy = this.getResolvedXY(this.resolveCell(row, col, hscroll));
+ }
+
+ this.focusEl.setXY(xy || this.scroller.getXY());
+ },
+
+
+ ensureVisible : function(row, col, hscroll) {
+ var resolved = this.resolveCell(row, col, hscroll);
+
+ if (!resolved || !resolved.row) {
+ return null;
+ }
+
+ var rowEl = resolved.row,
+ cellEl = resolved.cell,
+ c = this.scroller.dom,
+ p = rowEl,
+ ctop = 0,
+ stop = this.el.dom;
+
+ while (p && p != stop) {
+ ctop += p.offsetTop;
+ p = p.offsetParent;
+ }
+
+ ctop -= this.mainHd.dom.offsetHeight;
+ stop = parseInt(c.scrollTop, 10);
+
+ var cbot = ctop + rowEl.offsetHeight,
+ ch = c.clientHeight,
+ sbot = stop + ch;
+
+
+ if (ctop < stop) {
+ c.scrollTop = ctop;
+ } else if(cbot > sbot) {
+ c.scrollTop = cbot-ch;
+ }
+
+ if (hscroll !== false) {
+ var cleft = parseInt(cellEl.offsetLeft, 10),
+ cright = cleft + cellEl.offsetWidth,
+ sleft = parseInt(c.scrollLeft, 10),
+ sright = sleft + c.clientWidth;
+
+ if (cleft < sleft) {
+ c.scrollLeft = cleft;
+ } else if(cright > sright) {
+ c.scrollLeft = cright-c.clientWidth;
+ }
+ }
+
+ return this.getResolvedXY(resolved);
+ },
+
+
+ insertRows : function(dm, firstRow, lastRow, isUpdate) {
+ var last = dm.getCount() - 1;
+ if( !isUpdate && firstRow === 0 && lastRow >= last) {
+ this.fireEvent('beforerowsinserted', this, firstRow, lastRow);
+ this.refresh();
+ this.fireEvent('rowsinserted', this, firstRow, lastRow);
+ } else {
+ if (!isUpdate) {
+ this.fireEvent('beforerowsinserted', this, firstRow, lastRow);
+ }
+ var html = this.renderRows(firstRow, lastRow),
+ before = this.getRow(firstRow);
+ if (before) {
+ if(firstRow === 0){
+ Ext.fly(this.getRow(0)).removeClass(this.firstRowCls);
+ }
+ Ext.DomHelper.insertHtml('beforeBegin', before, html);
+ } else {
+ var r = this.getRow(last - 1);
+ if(r){
+ Ext.fly(r).removeClass(this.lastRowCls);
+ }
+ Ext.DomHelper.insertHtml('beforeEnd', this.mainBody.dom, html);
+ }
+ if (!isUpdate) {
+ this.processRows(firstRow);
+ this.fireEvent('rowsinserted', this, firstRow, lastRow);
+ } else if (firstRow === 0 || firstRow >= last) {
+
+ Ext.fly(this.getRow(firstRow)).addClass(firstRow === 0 ? this.firstRowCls : this.lastRowCls);
+ }
+ }
+ this.syncFocusEl(firstRow);
+ },
+
+
+ deleteRows : function(dm, firstRow, lastRow) {
+ if (dm.getRowCount() < 1) {
+ this.refresh();
+ } else {
+ this.fireEvent('beforerowsdeleted', this, firstRow, lastRow);
+
+ this.removeRows(firstRow, lastRow);
+
+ this.processRows(firstRow);
+ this.fireEvent('rowsdeleted', this, firstRow, lastRow);
+ }
+ },
+
+
+ getColumnStyle : function(colIndex, isHeader) {
+ var colModel = this.cm,
+ colConfig = colModel.config,
+ style = isHeader ? '' : colConfig[colIndex].css || '',
+ align = colConfig[colIndex].align;
+
+ style += String.format("width: {0};", this.getColumnWidth(colIndex));
+
+ if (colModel.isHidden(colIndex)) {
+ style += 'display: none; ';
+ }
+
+ if (align) {
+ style += String.format("text-align: {0};", align);
+ }
+
+ return style;
+ },
+
+
+ getColumnWidth : function(column) {
+ var columnWidth = this.cm.getColumnWidth(column),
+ borderWidth = this.borderWidth;
+
+ if (Ext.isNumber(columnWidth)) {
+ if (Ext.isBorderBox) {
+ return columnWidth + "px";
+ } else {
+ return Math.max(columnWidth - borderWidth, 0) + "px";
+ }
+ } else {
+ return columnWidth;
+ }
+ },
+
+
+ getTotalWidth : function() {
+ return this.cm.getTotalWidth() + 'px';
+ },
+
+
+ fitColumns : function(preventRefresh, onlyExpand, omitColumn) {
+ var grid = this.grid,
+ colModel = this.cm,
+ totalColWidth = colModel.getTotalWidth(false),
+ gridWidth = this.getGridInnerWidth(),
+ extraWidth = gridWidth - totalColWidth,
+ columns = [],
+ extraCol = 0,
+ width = 0,
+ colWidth, fraction, i;
+
+
+ if (gridWidth < 20 || extraWidth === 0) {
+ return false;
+ }
+
+ var visibleColCount = colModel.getColumnCount(true),
+ totalColCount = colModel.getColumnCount(false),
+ adjCount = visibleColCount - (Ext.isNumber(omitColumn) ? 1 : 0);
+
+ if (adjCount === 0) {
+ adjCount = 1;
+ omitColumn = undefined;
+ }
+
+
+ for (i = 0; i < totalColCount; i++) {
+ if (!colModel.isFixed(i) && i !== omitColumn) {
+ colWidth = colModel.getColumnWidth(i);
+ columns.push(i, colWidth);
+
+ if (!colModel.isHidden(i)) {
+ extraCol = i;
+ width += colWidth;
+ }
+ }
+ }
+
+ fraction = (gridWidth - colModel.getTotalWidth()) / width;
+
+ while (columns.length) {
+ colWidth = columns.pop();
+ i = columns.pop();
+
+ colModel.setColumnWidth(i, Math.max(grid.minColumnWidth, Math.floor(colWidth + colWidth * fraction)), true);
+ }
+
+
+ totalColWidth = colModel.getTotalWidth(false);
+
+ if (totalColWidth > gridWidth) {
+ var adjustCol = (adjCount == visibleColCount) ? extraCol : omitColumn,
+ newWidth = Math.max(1, colModel.getColumnWidth(adjustCol) - (totalColWidth - gridWidth));
+
+ colModel.setColumnWidth(adjustCol, newWidth, true);
+ }
+
+ if (preventRefresh !== true) {
+ this.updateAllColumnWidths();
+ }
+
+ return true;
+ },
+
+
+ autoExpand : function(preventUpdate) {
+ var grid = this.grid,
+ colModel = this.cm,
+ gridWidth = this.getGridInnerWidth(),
+ totalColumnWidth = colModel.getTotalWidth(false),
+ autoExpandColumn = grid.autoExpandColumn;
+
+ if (!this.userResized && autoExpandColumn) {
+ if (gridWidth != totalColumnWidth) {
+
+ var colIndex = colModel.getIndexById(autoExpandColumn),
+ currentWidth = colModel.getColumnWidth(colIndex),
+ desiredWidth = gridWidth - totalColumnWidth + currentWidth,
+ newWidth = Math.min(Math.max(desiredWidth, grid.autoExpandMin), grid.autoExpandMax);
+
+ if (currentWidth != newWidth) {
+ colModel.setColumnWidth(colIndex, newWidth, true);
+
+ if (preventUpdate !== true) {
+ this.updateColumnWidth(colIndex, newWidth);
+ }
+ }
+ }
+ }
+ },
+
+
+ getGridInnerWidth: function() {
+ return this.grid.getGridEl().getWidth(true) - this.getScrollOffset();
+ },
+
+
+ getColumnData : function() {
+ var columns = [],
+ colModel = this.cm,
+ colCount = colModel.getColumnCount(),
+ fields = this.ds.fields,
+ i, name;
+
+ for (i = 0; i < colCount; i++) {
+ name = colModel.getDataIndex(i);
+
+ columns[i] = {
+ name : Ext.isDefined(name) ? name : (fields.get(i) ? fields.get(i).name : undefined),
+ renderer: colModel.getRenderer(i),
+ scope : colModel.getRendererScope(i),
+ id : colModel.getColumnId(i),
+ style : this.getColumnStyle(i)
+ };
+ }
+
+ return columns;
+ },
+
+
+ renderRows : function(startRow, endRow) {
+ var grid = this.grid,
+ store = grid.store,
+ stripe = grid.stripeRows,
+ colModel = grid.colModel,
+ colCount = colModel.getColumnCount(),
+ rowCount = store.getCount(),
+ records;
+
+ if (rowCount < 1) {
+ return '';
+ }
+
+ startRow = startRow || 0;
+ endRow = Ext.isDefined(endRow) ? endRow : rowCount - 1;
+ records = store.getRange(startRow, endRow);
+
+ return this.doRender(this.getColumnData(), records, store, startRow, colCount, stripe);
+ },
+
+
+ renderBody : function(){
+ var markup = this.renderRows() || '&#160;';
+ return this.templates.body.apply({rows: markup});
+ },
+
+
+ refreshRow: function(record) {
+ var store = this.ds,
+ colCount = this.cm.getColumnCount(),
+ columns = this.getColumnData(),
+ last = colCount - 1,
+ cls = ['x-grid3-row'],
+ rowParams = {
+ tstyle: String.format("width: {0};", this.getTotalWidth())
+ },
+ colBuffer = [],
+ cellTpl = this.templates.cell,
+ rowIndex, row, column, meta, css, i;
+
+ if (Ext.isNumber(record)) {
+ rowIndex = record;
+ record = store.getAt(rowIndex);
+ } else {
+ rowIndex = store.indexOf(record);
+ }
+
+
+ if (!record || rowIndex < 0) {
+ return;
+ }
+
+
+ for (i = 0; i < colCount; i++) {
+ column = columns[i];
+
+ if (i == 0) {
+ css = 'x-grid3-cell-first';
+ } else {
+ css = (i == last) ? 'x-grid3-cell-last ' : '';
+ }
+
+ meta = {
+ id : column.id,
+ style : column.style,
+ css : css,
+ attr : "",
+ cellAttr: ""
+ };
+
+ meta.value = column.renderer.call(column.scope, record.data[column.name], meta, record, rowIndex, i, store);
+
+ if (Ext.isEmpty(meta.value)) {
+ meta.value = '&#160;';
+ }
+
+ if (this.markDirty && record.dirty && typeof record.modified[column.name] != 'undefined') {
+ meta.css += ' x-grid3-dirty-cell';
+ }
+
+ colBuffer[i] = cellTpl.apply(meta);
+ }
+
+ row = this.getRow(rowIndex);
+ row.className = '';
+
+ if (this.grid.stripeRows && ((rowIndex + 1) % 2 === 0)) {
+ cls.push('x-grid3-row-alt');
+ }
+
+ if (this.getRowClass) {
+ rowParams.cols = colCount;
+ cls.push(this.getRowClass(record, rowIndex, rowParams, store));
+ }
+
+ this.fly(row).addClass(cls).setStyle(rowParams.tstyle);
+ rowParams.cells = colBuffer.join("");
+ row.innerHTML = this.templates.rowInner.apply(rowParams);
+
+ this.fireEvent('rowupdated', this, rowIndex, record);
+ },
+
+
+ refresh : function(headersToo) {
+ this.fireEvent('beforerefresh', this);
+ this.grid.stopEditing(true);
+
+ var result = this.renderBody();
+ this.mainBody.update(result).setWidth(this.getTotalWidth());
+ if (headersToo === true) {
+ this.updateHeaders();
+ this.updateHeaderSortState();
+ }
+ this.processRows(0, true);
+ this.layout();
+ this.applyEmptyText();
+ this.fireEvent('refresh', this);
+ },
+
+
+ applyEmptyText : function() {
+ if (this.emptyText && !this.hasRows()) {
+ this.mainBody.update('<div class="x-grid-empty">' + this.emptyText + '</div>');
+ }
+ },
+
+
+ updateHeaderSortState : function() {
+ var state = this.ds.getSortState();
+ if (!state) {
+ return;
+ }
+
+ if (!this.sortState || (this.sortState.field != state.field || this.sortState.direction != state.direction)) {
+ this.grid.fireEvent('sortchange', this.grid, state);
+ }
+
+ this.sortState = state;
+
+ var sortColumn = this.cm.findColumnIndex(state.field);
+ if (sortColumn != -1) {
+ var sortDir = state.direction;
+ this.updateSortIcon(sortColumn, sortDir);
+ }
+ },
+
+
+ clearHeaderSortState : function() {
+ if (!this.sortState) {
+ return;
+ }
+ this.grid.fireEvent('sortchange', this.grid, null);
+ this.mainHd.select('td').removeClass(this.sortClasses);
+ delete this.sortState;
+ },
+
+
+ destroy : function() {
+ var me = this,
+ grid = me.grid,
+ gridEl = grid.getGridEl(),
+ dragZone = me.dragZone,
+ splitZone = me.splitZone,
+ columnDrag = me.columnDrag,
+ columnDrop = me.columnDrop,
+ scrollToTopTask = me.scrollToTopTask,
+ columnDragData,
+ columnDragProxy;
+
+ if (scrollToTopTask && scrollToTopTask.cancel) {
+ scrollToTopTask.cancel();
+ }
+
+ Ext.destroyMembers(me, 'colMenu', 'hmenu');
+
+ me.initData(null, null);
+ me.purgeListeners();
+
+ Ext.fly(me.innerHd).un("click", me.handleHdDown, me);
+
+ if (grid.enableColumnMove) {
+ columnDragData = columnDrag.dragData;
+ columnDragProxy = columnDrag.proxy;
+ Ext.destroy(
+ columnDrag.el,
+ columnDragProxy.ghost,
+ columnDragProxy.el,
+ columnDrop.el,
+ columnDrop.proxyTop,
+ columnDrop.proxyBottom,
+ columnDragData.ddel,
+ columnDragData.header
+ );
+
+ if (columnDragProxy.anim) {
+ Ext.destroy(columnDragProxy.anim);
+ }
+
+ delete columnDragProxy.ghost;
+ delete columnDragData.ddel;
+ delete columnDragData.header;
+ columnDrag.destroy();
+
+ delete Ext.dd.DDM.locationCache[columnDrag.id];
+ delete columnDrag._domRef;
+
+ delete columnDrop.proxyTop;
+ delete columnDrop.proxyBottom;
+ columnDrop.destroy();
+ delete Ext.dd.DDM.locationCache["gridHeader" + gridEl.id];
+ delete columnDrop._domRef;
+ delete Ext.dd.DDM.ids[columnDrop.ddGroup];
+ }
+
+ if (splitZone) {
+ splitZone.destroy();
+ delete splitZone._domRef;
+ delete Ext.dd.DDM.ids["gridSplitters" + gridEl.id];
+ }
+
+ Ext.fly(me.innerHd).removeAllListeners();
+ Ext.removeNode(me.innerHd);
+ delete me.innerHd;
+
+ Ext.destroy(
+ me.el,
+ me.mainWrap,
+ me.mainHd,
+ me.scroller,
+ me.mainBody,
+ me.focusEl,
+ me.resizeMarker,
+ me.resizeProxy,
+ me.activeHdBtn,
+ me._flyweight,
+ dragZone,
+ splitZone
+ );
+
+ delete grid.container;
+
+ if (dragZone) {
+ dragZone.destroy();
+ }
+
+ Ext.dd.DDM.currentTarget = null;
+ delete Ext.dd.DDM.locationCache[gridEl.id];
+
+ Ext.EventManager.removeResizeListener(me.onWindowResize, me);
+ },
+
+
+ onDenyColumnHide : function() {
+
+ },
+
+
+ render : function() {
+ if (this.autoFill) {
+ var ct = this.grid.ownerCt;
+
+ if (ct && ct.getLayout()) {
+ ct.on('afterlayout', function() {
+ this.fitColumns(true, true);
+ this.updateHeaders();
+ this.updateHeaderSortState();
+ }, this, {single: true});
+ }
+ } else if (this.forceFit) {
+ this.fitColumns(true, false);
+ } else if (this.grid.autoExpandColumn) {
+ this.autoExpand(true);
+ }
+
+ this.grid.getGridEl().dom.innerHTML = this.renderUI();
+
+ this.afterRenderUI();
+ },
+
+
+
+
+ initData : function(newStore, newColModel) {
+ var me = this;
+
+ if (me.ds) {
+ var oldStore = me.ds;
+
+ oldStore.un('add', me.onAdd, me);
+ oldStore.un('load', me.onLoad, me);
+ oldStore.un('clear', me.onClear, me);
+ oldStore.un('remove', me.onRemove, me);
+ oldStore.un('update', me.onUpdate, me);
+ oldStore.un('datachanged', me.onDataChange, me);
+
+ if (oldStore !== newStore && oldStore.autoDestroy) {
+ oldStore.destroy();
+ }
+ }
+
+ if (newStore) {
+ newStore.on({
+ scope : me,
+ load : me.onLoad,
+ add : me.onAdd,
+ remove : me.onRemove,
+ update : me.onUpdate,
+ clear : me.onClear,
+ datachanged: me.onDataChange
+ });
+ }
+
+ if (me.cm) {
+ var oldColModel = me.cm;
+
+ oldColModel.un('configchange', me.onColConfigChange, me);
+ oldColModel.un('widthchange', me.onColWidthChange, me);
+ oldColModel.un('headerchange', me.onHeaderChange, me);
+ oldColModel.un('hiddenchange', me.onHiddenChange, me);
+ oldColModel.un('columnmoved', me.onColumnMove, me);
+ }
+
+ if (newColModel) {
+ delete me.lastViewWidth;
+
+ newColModel.on({
+ scope : me,
+ configchange: me.onColConfigChange,
+ widthchange : me.onColWidthChange,
+ headerchange: me.onHeaderChange,
+ hiddenchange: me.onHiddenChange,
+ columnmoved : me.onColumnMove
+ });
+ }
+
+ me.ds = newStore;
+ me.cm = newColModel;
+ },
+
+
+ onDataChange : function(){
+ this.refresh(true);
+ this.updateHeaderSortState();
+ this.syncFocusEl(0);
+ },
+
+
+ onClear : function() {
+ this.refresh();
+ this.syncFocusEl(0);
+ },
+
+
+ onUpdate : function(store, record) {
+ this.refreshRow(record);
+ },
+
+
+ onAdd : function(store, records, index) {
+ this.insertRows(store, index, index + (records.length-1));
+ },
+
+
+ onRemove : function(store, record, index, isUpdate) {
+ if (isUpdate !== true) {
+ this.fireEvent('beforerowremoved', this, index, record);
+ }
+
+ this.removeRow(index);
+
+ if (isUpdate !== true) {
+ this.processRows(index);
+ this.applyEmptyText();
+ this.fireEvent('rowremoved', this, index, record);
+ }
+ },
+
+
+ onLoad : function() {
+ if (Ext.isGecko) {
+ if (!this.scrollToTopTask) {
+ this.scrollToTopTask = new Ext.util.DelayedTask(this.scrollToTop, this);
+ }
+ this.scrollToTopTask.delay(1);
+ } else {
+ this.scrollToTop();
+ }
+ },
+
+
+ onColWidthChange : function(cm, col, width) {
+ this.updateColumnWidth(col, width);
+ },
+
+
+ onHeaderChange : function(cm, col, text) {
+ this.updateHeaders();
+ },
+
+
+ onHiddenChange : function(cm, col, hidden) {
+ this.updateColumnHidden(col, hidden);
+ },
+
+
+ onColumnMove : function(cm, oldIndex, newIndex) {
+ this.indexMap = null;
+ this.refresh(true);
+ this.restoreScroll(this.getScrollState());
+
+ this.afterMove(newIndex);
+ this.grid.fireEvent('columnmove', oldIndex, newIndex);
+ },
+
+
+ onColConfigChange : function() {
+ delete this.lastViewWidth;
+ this.indexMap = null;
+ this.refresh(true);
+ },
+
+
+
+ initUI : function(grid) {
+ grid.on('headerclick', this.onHeaderClick, this);
+ },
+
+
+ initEvents : Ext.emptyFn,
+
+
+ onHeaderClick : function(g, index) {
+ if (this.headersDisabled || !this.cm.isSortable(index)) {
+ return;
+ }
+ g.stopEditing(true);
+ g.store.sort(this.cm.getDataIndex(index));
+ },
+
+
+ onRowOver : function(e, target) {
+ var row = this.findRowIndex(target);
+
+ if (row !== false) {
+ this.addRowClass(row, this.rowOverCls);
+ }
+ },
+
+
+ onRowOut : function(e, target) {
+ var row = this.findRowIndex(target);
+
+ if (row !== false && !e.within(this.getRow(row), true)) {
+ this.removeRowClass(row, this.rowOverCls);
+ }
+ },
+
+
+ onRowSelect : function(row) {
+ this.addRowClass(row, this.selectedRowClass);
+ },
+
+
+ onRowDeselect : function(row) {
+ this.removeRowClass(row, this.selectedRowClass);
+ },
+
+
+ onCellSelect : function(row, col) {
+ var cell = this.getCell(row, col);
+ if (cell) {
+ this.fly(cell).addClass('x-grid3-cell-selected');
+ }
+ },
+
+
+ onCellDeselect : function(row, col) {
+ var cell = this.getCell(row, col);
+ if (cell) {
+ this.fly(cell).removeClass('x-grid3-cell-selected');
+ }
+ },
+
+
+ handleWheel : function(e) {
+ e.stopPropagation();
+ },
+
+
+ onColumnSplitterMoved : function(cellIndex, width) {
+ this.userResized = true;
+ this.grid.colModel.setColumnWidth(cellIndex, width, true);
+
+ if (this.forceFit) {
+ this.fitColumns(true, false, cellIndex);
+ this.updateAllColumnWidths();
+ } else {
+ this.updateColumnWidth(cellIndex, width);
+ this.syncHeaderScroll();
+ }
+
+ this.grid.fireEvent('columnresize', cellIndex, width);
+ },
+
+
+ beforeColMenuShow : function() {
+ var colModel = this.cm,
+ colCount = colModel.getColumnCount(),
+ colMenu = this.colMenu,
+ i;
+
+ colMenu.removeAll();
+
+ for (i = 0; i < colCount; i++) {
+ if (colModel.config[i].hideable !== false) {
+ colMenu.add(new Ext.menu.CheckItem({
+ text : colModel.getColumnHeader(i),
+ itemId : 'col-' + colModel.getColumnId(i),
+ checked : !colModel.isHidden(i),
+ disabled : colModel.config[i].hideable === false,
+ hideOnClick: false
+ }));
+ }
+ }
+ },
+
+
+ handleHdMenuClick : function(item) {
+ var store = this.ds,
+ dataIndex = this.cm.getDataIndex(this.hdCtxIndex);
+
+ switch (item.getItemId()) {
+ case 'asc':
+ store.sort(dataIndex, 'ASC');
+ break;
+ case 'desc':
+ store.sort(dataIndex, 'DESC');
+ break;
+ default:
+ this.handleHdMenuClickDefault(item);
+ }
+ return true;
+ },
+
+
+ handleHdMenuClickDefault: function(item) {
+ var colModel = this.cm,
+ itemId = item.getItemId(),
+ index = colModel.getIndexById(itemId.substr(4));
+
+ if (index != -1) {
+ if (item.checked && colModel.getColumnsBy(this.isHideableColumn, this).length <= 1) {
+ this.onDenyColumnHide();
+ return;
+ }
+ colModel.setHidden(index, item.checked);
+ }
+ },
+
+
+ handleHdDown : function(e, target) {
+ if (Ext.fly(target).hasClass('x-grid3-hd-btn')) {
+ e.stopEvent();
+
+ var colModel = this.cm,
+ header = this.findHeaderCell(target),
+ index = this.getCellIndex(header),
+ sortable = colModel.isSortable(index),
+ menu = this.hmenu,
+ menuItems = menu.items,
+ menuCls = this.headerMenuOpenCls,
+ sep;
+
+ this.hdCtxIndex = index;
+
+ Ext.fly(header).addClass(menuCls);
+ if (this.hideSortIcons) {
+ menuItems.get('asc').setVisible(sortable);
+ menuItems.get('desc').setVisible(sortable);
+ sep = menuItems.get('sortSep');
+ if (sep) {
+ sep.setVisible(sortable);
+ }
+ } else {
+ menuItems.get('asc').setDisabled(!sortable);
+ menuItems.get('desc').setDisabled(!sortable);
+ }
+
+ menu.on('hide', function() {
+ Ext.fly(header).removeClass(menuCls);
+ }, this, {single:true});
+
+ menu.show(target, 'tl-bl?');
+ }
+ },
+
+
+ handleHdMove : function(e) {
+ var header = this.findHeaderCell(this.activeHdRef);
+
+ if (header && !this.headersDisabled) {
+ var handleWidth = this.splitHandleWidth || 5,
+ activeRegion = this.activeHdRegion,
+ headerStyle = header.style,
+ colModel = this.cm,
+ cursor = '',
+ pageX = e.getPageX();
+
+ if (this.grid.enableColumnResize !== false) {
+ var activeHeaderIndex = this.activeHdIndex,
+ previousVisible = this.getPreviousVisible(activeHeaderIndex),
+ currentResizable = colModel.isResizable(activeHeaderIndex),
+ previousResizable = previousVisible && colModel.isResizable(previousVisible),
+ inLeftResizer = pageX - activeRegion.left <= handleWidth,
+ inRightResizer = activeRegion.right - pageX <= (!this.activeHdBtn ? handleWidth : 2);
+
+ if (inLeftResizer && previousResizable) {
+ cursor = Ext.isAir ? 'move' : Ext.isWebKit ? 'e-resize' : 'col-resize';
+ } else if (inRightResizer && currentResizable) {
+ cursor = Ext.isAir ? 'move' : Ext.isWebKit ? 'w-resize' : 'col-resize';
+ }
+ }
+
+ headerStyle.cursor = cursor;
+ }
+ },
+
+
+ getPreviousVisible: function(index) {
+ while (index > 0) {
+ if (!this.cm.isHidden(index - 1)) {
+ return index;
+ }
+ index--;
+ }
+ return undefined;
+ },
+
+
+ handleHdOver : function(e, target) {
+ var header = this.findHeaderCell(target);
+
+ if (header && !this.headersDisabled) {
+ var fly = this.fly(header);
+
+ this.activeHdRef = target;
+ this.activeHdIndex = this.getCellIndex(header);
+ this.activeHdRegion = fly.getRegion();
+
+ if (!this.isMenuDisabled(this.activeHdIndex, fly)) {
+ fly.addClass('x-grid3-hd-over');
+ this.activeHdBtn = fly.child('.x-grid3-hd-btn');
+
+ if (this.activeHdBtn) {
+ this.activeHdBtn.dom.style.height = (header.firstChild.offsetHeight - 1) + 'px';
+ }
+ }
+ }
+ },
+
+
+ handleHdOut : function(e, target) {
+ var header = this.findHeaderCell(target);
+
+ if (header && (!Ext.isIE9m || !e.within(header, true))) {
+ this.activeHdRef = null;
+ this.fly(header).removeClass('x-grid3-hd-over');
+ header.style.cursor = '';
+ }
+ },
+
+
+ isMenuDisabled: function(cellIndex, el) {
+ return this.cm.isMenuDisabled(cellIndex);
+ },
+
+
+ hasRows : function() {
+ var fc = this.mainBody.dom.firstChild;
+ return fc && fc.nodeType == 1 && fc.className != 'x-grid-empty';
+ },
+
+
+ isHideableColumn : function(c) {
+ return !c.hidden;
+ },
+
+
+ bind : function(d, c) {
+ this.initData(d, c);
+ }
+});
+
+
+
+
+Ext.grid.GridView.SplitDragZone = Ext.extend(Ext.dd.DDProxy, {
+
+ constructor: function(grid, hd){
+ this.grid = grid;
+ this.view = grid.getView();
+ this.marker = this.view.resizeMarker;
+ this.proxy = this.view.resizeProxy;
+ Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this, hd,
+ 'gridSplitters' + this.grid.getGridEl().id, {
+ dragElId : Ext.id(this.proxy.dom), resizeFrame:false
+ });
+ this.scroll = false;
+ this.hw = this.view.splitHandleWidth || 5;
+ },
+
+ b4StartDrag : function(x, y){
+ this.dragHeadersDisabled = this.view.headersDisabled;
+ this.view.headersDisabled = true;
+ var h = this.view.mainWrap.getHeight();
+ this.marker.setHeight(h);
+ this.marker.show();
+ this.marker.alignTo(this.view.getHeaderCell(this.cellIndex), 'tl-tl', [-2, 0]);
+ this.proxy.setHeight(h);
+ var w = this.cm.getColumnWidth(this.cellIndex),
+ minw = Math.max(w-this.grid.minColumnWidth, 0);
+ this.resetConstraints();
+ this.setXConstraint(minw, 1000);
+ this.setYConstraint(0, 0);
+ this.minX = x - minw;
+ this.maxX = x + 1000;
+ this.startPos = x;
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this, x, y);
+ },
+
+ allowHeaderDrag : function(e){
+ return true;
+ },
+
+ handleMouseDown : function(e){
+ var t = this.view.findHeaderCell(e.getTarget());
+ if(t && this.allowHeaderDrag(e)){
+ var xy = this.view.fly(t).getXY(),
+ x = xy[0],
+ exy = e.getXY(),
+ ex = exy[0],
+ w = t.offsetWidth,
+ adjust = false;
+
+ if((ex - x) <= this.hw){
+ adjust = -1;
+ }else if((x+w) - ex <= this.hw){
+ adjust = 0;
+ }
+ if(adjust !== false){
+ this.cm = this.grid.colModel;
+ var ci = this.view.getCellIndex(t);
+ if(adjust == -1){
+ if (ci + adjust < 0) {
+ return;
+ }
+ while(this.cm.isHidden(ci+adjust)){
+ --adjust;
+ if(ci+adjust < 0){
+ return;
+ }
+ }
+ }
+ this.cellIndex = ci+adjust;
+ this.split = t.dom;
+ if(this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)){
+ Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this, arguments);
+ }
+ }else if(this.view.columnDrag){
+ this.view.columnDrag.callHandleMouseDown(e);
+ }
+ }
+ },
+
+ endDrag : function(e){
+ this.marker.hide();
+ var v = this.view,
+ endX = Math.max(this.minX, e.getPageX()),
+ diff = endX - this.startPos,
+ disabled = this.dragHeadersDisabled;
+
+ v.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex)+diff);
+ setTimeout(function(){
+ v.headersDisabled = disabled;
+ }, 50);
+ },
+
+ autoOffset : function(){
+ this.setDelta(0,0);
+ }
+});
+
+Ext.grid.PivotGridView = Ext.extend(Ext.grid.GridView, {
+
+
+ colHeaderCellCls: 'grid-hd-group-cell',
+
+
+ title: '',
+
+
+
+
+ getColumnHeaders: function() {
+ return this.grid.topAxis.buildHeaders();;
+ },
+
+
+ getRowHeaders: function() {
+ return this.grid.leftAxis.buildHeaders();
+ },
+
+
+ renderRows : function(startRow, endRow) {
+ var grid = this.grid,
+ rows = grid.extractData(),
+ rowCount = rows.length,
+ templates = this.templates,
+ renderer = grid.renderer,
+ hasRenderer = typeof renderer == 'function',
+ getCellCls = this.getCellCls,
+ hasGetCellCls = typeof getCellCls == 'function',
+ cellTemplate = templates.cell,
+ rowTemplate = templates.row,
+ rowBuffer = [],
+ meta = {},
+ tstyle = 'width:' + this.getGridInnerWidth() + 'px;',
+ colBuffer, colCount, column, i, row;
+
+ startRow = startRow || 0;
+ endRow = Ext.isDefined(endRow) ? endRow : rowCount - 1;
+
+ for (i = 0; i < rowCount; i++) {
+ row = rows[i];
+ colCount = row.length;
+ colBuffer = [];
+
+
+ for (var j = 0; j < colCount; j++) {
+
+ meta.id = i + '-' + j;
+ meta.css = j === 0 ? 'x-grid3-cell-first ' : (j == (colCount - 1) ? 'x-grid3-cell-last ' : '');
+ meta.attr = meta.cellAttr = '';
+ meta.value = row[j];
+
+ if (Ext.isEmpty(meta.value)) {
+ meta.value = '&#160;';
+ }
+
+ if (hasRenderer) {
+ meta.value = renderer(meta.value);
+ }
+
+ if (hasGetCellCls) {
+ meta.css += getCellCls(meta.value) + ' ';
+ }
+
+ colBuffer[colBuffer.length] = cellTemplate.apply(meta);
+ }
+
+ rowBuffer[rowBuffer.length] = rowTemplate.apply({
+ tstyle: tstyle,
+ cols : colCount,
+ cells : colBuffer.join(""),
+ alt : ''
+ });
+ }
+
+ return rowBuffer.join("");
+ },
+
+
+ masterTpl: new Ext.Template(
+ '<div class="x-grid3 x-pivotgrid" hidefocus="true">',
+ '<div class="x-grid3-viewport">',
+ '<div class="x-grid3-header">',
+ '<div class="x-grid3-header-title"><span>{title}</span></div>',
+ '<div class="x-grid3-header-inner">',
+ '<div class="x-grid3-header-offset" style="{ostyle}"></div>',
+ '</div>',
+ '<div class="x-clear"></div>',
+ '</div>',
+ '<div class="x-grid3-scroller">',
+ '<div class="x-grid3-row-headers"></div>',
+ '<div class="x-grid3-body" style="{bstyle}">{body}</div>',
+ '<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',
+ '</div>',
+ '</div>',
+ '<div class="x-grid3-resize-marker">&#160;</div>',
+ '<div class="x-grid3-resize-proxy">&#160;</div>',
+ '</div>'
+ ),
+
+
+ initTemplates: function() {
+ Ext.grid.PivotGridView.superclass.initTemplates.apply(this, arguments);
+
+ var templates = this.templates || {};
+ if (!templates.gcell) {
+ templates.gcell = new Ext.XTemplate(
+ '<td class="x-grid3-hd x-grid3-gcell x-grid3-td-{id} ux-grid-hd-group-row-{row} ' + this.colHeaderCellCls + '" style="{style}">',
+ '<div {tooltip} class="x-grid3-hd-inner x-grid3-hd-{id} x-unselectable" unselectable="on" style="{istyle}">',
+ this.grid.enableHdMenu ? '<a class="x-grid3-hd-btn" href="#"></a>' : '', '{value}',
+ '</div>',
+ '</td>'
+ );
+ }
+
+ this.templates = templates;
+ this.hrowRe = new RegExp("ux-grid-hd-group-row-(\\d+)", "");
+ },
+
+
+ initElements: function() {
+ Ext.grid.PivotGridView.superclass.initElements.apply(this, arguments);
+
+
+ this.rowHeadersEl = new Ext.Element(this.scroller.child('div.x-grid3-row-headers'));
+
+
+ this.headerTitleEl = new Ext.Element(this.mainHd.child('div.x-grid3-header-title'));
+ },
+
+
+ getGridInnerWidth: function() {
+ var previousWidth = Ext.grid.PivotGridView.superclass.getGridInnerWidth.apply(this, arguments);
+
+ return previousWidth - this.getTotalRowHeaderWidth();
+ },
+
+
+ getTotalRowHeaderWidth: function() {
+ var headers = this.getRowHeaders(),
+ length = headers.length,
+ total = 0,
+ i;
+
+ for (i = 0; i< length; i++) {
+ total += headers[i].width;
+ }
+
+ return total;
+ },
+
+
+ getTotalColumnHeaderHeight: function() {
+ return this.getColumnHeaders().length * 21;
+ },
+
+
+ getCellIndex : function(el) {
+ if (el) {
+ var match = el.className.match(this.colRe),
+ data;
+
+ if (match && (data = match[1])) {
+ return parseInt(data.split('-')[1], 10);
+ }
+ }
+ return false;
+ },
+
+
+
+ renderUI : function() {
+ var templates = this.templates,
+ innerWidth = this.getGridInnerWidth();
+
+ return templates.master.apply({
+ body : templates.body.apply({rows:'&#160;'}),
+ ostyle: 'width:' + innerWidth + 'px',
+ bstyle: 'width:' + innerWidth + 'px'
+ });
+ },
+
+
+ onLayout: function(width, height) {
+ Ext.grid.PivotGridView.superclass.onLayout.apply(this, arguments);
+
+ var width = this.getGridInnerWidth();
+
+ this.resizeColumnHeaders(width);
+ this.resizeAllRows(width);
+ },
+
+
+ refresh : function(headersToo) {
+ this.fireEvent('beforerefresh', this);
+ this.grid.stopEditing(true);
+
+ var result = this.renderBody();
+ this.mainBody.update(result).setWidth(this.getGridInnerWidth());
+ if (headersToo === true) {
+ this.updateHeaders();
+ this.updateHeaderSortState();
+ }
+ this.processRows(0, true);
+ this.layout();
+ this.applyEmptyText();
+ this.fireEvent('refresh', this);
+ },
+
+
+ renderHeaders: Ext.emptyFn,
+
+
+ fitColumns: Ext.emptyFn,
+
+
+ resizeColumnHeaders: function(width) {
+ var topAxis = this.grid.topAxis;
+
+ if (topAxis.rendered) {
+ topAxis.el.setWidth(width);
+ }
+ },
+
+
+ resizeRowHeaders: function() {
+ var rowHeaderWidth = this.getTotalRowHeaderWidth(),
+ marginStyle = String.format("margin-left: {0}px;", rowHeaderWidth);
+
+ this.rowHeadersEl.setWidth(rowHeaderWidth);
+ this.mainBody.applyStyles(marginStyle);
+ Ext.fly(this.innerHd).applyStyles(marginStyle);
+
+ this.headerTitleEl.setWidth(rowHeaderWidth);
+ this.headerTitleEl.setHeight(this.getTotalColumnHeaderHeight());
+ },
+
+
+ resizeAllRows: function(width) {
+ var rows = this.getRows(),
+ length = rows.length,
+ i;
+
+ for (i = 0; i < length; i++) {
+ Ext.fly(rows[i]).setWidth(width);
+ Ext.fly(rows[i]).child('table').setWidth(width);
+ }
+ },
+
+
+ updateHeaders: function() {
+ this.renderGroupRowHeaders();
+ this.renderGroupColumnHeaders();
+ },
+
+
+ renderGroupRowHeaders: function() {
+ var leftAxis = this.grid.leftAxis;
+
+ this.resizeRowHeaders();
+ leftAxis.rendered = false;
+ leftAxis.render(this.rowHeadersEl);
+
+ this.setTitle(this.title);
+ },
+
+
+ setTitle: function(title) {
+ this.headerTitleEl.child('span').dom.innerHTML = title;
+ },
+
+
+ renderGroupColumnHeaders: function() {
+ var topAxis = this.grid.topAxis;
+
+ topAxis.rendered = false;
+ topAxis.render(this.innerHd.firstChild);
+ },
+
+
+ isMenuDisabled: function(cellIndex, el) {
+ return true;
+ }
+});
+Ext.grid.PivotAxis = Ext.extend(Ext.Component, {
+
+ orientation: 'horizontal',
+
+
+ defaultHeaderWidth: 80,
+
+
+ paddingWidth: 7,
+
+
+ setDimensions: function(dimensions) {
+ this.dimensions = dimensions;
+ },
+
+
+ onRender: function(ct, position) {
+ var rows = this.orientation == 'horizontal'
+ ? this.renderHorizontalRows()
+ : this.renderVerticalRows();
+
+ this.el = Ext.DomHelper.overwrite(ct.dom, {tag: 'table', cn: rows}, true);
+ },
+
+
+ renderHorizontalRows: function() {
+ var headers = this.buildHeaders(),
+ rowCount = headers.length,
+ rows = [],
+ cells, cols, colCount, i, j;
+
+ for (i = 0; i < rowCount; i++) {
+ cells = [];
+ cols = headers[i].items;
+ colCount = cols.length;
+
+ for (j = 0; j < colCount; j++) {
+ cells.push({
+ tag: 'td',
+ html: cols[j].header,
+ colspan: cols[j].span
+ });
+ }
+
+ rows[i] = {
+ tag: 'tr',
+ cn: cells
+ };
+ }
+
+ return rows;
+ },
+
+
+ renderVerticalRows: function() {
+ var headers = this.buildHeaders(),
+ colCount = headers.length,
+ rowCells = [],
+ rows = [],
+ rowCount, col, row, colWidth, i, j;
+
+ for (i = 0; i < colCount; i++) {
+ col = headers[i];
+ colWidth = col.width || 80;
+ rowCount = col.items.length;
+
+ for (j = 0; j < rowCount; j++) {
+ row = col.items[j];
+
+ rowCells[row.start] = rowCells[row.start] || [];
+ rowCells[row.start].push({
+ tag : 'td',
+ html : row.header,
+ rowspan: row.span,
+ width : Ext.isBorderBox ? colWidth : colWidth - this.paddingWidth
+ });
+ }
+ }
+
+ rowCount = rowCells.length;
+ for (i = 0; i < rowCount; i++) {
+ rows[i] = {
+ tag: 'tr',
+ cn : rowCells[i]
+ };
+ }
+
+ return rows;
+ },
+
+
+ getTuples: function() {
+ var newStore = new Ext.data.Store({});
+
+ newStore.data = this.store.data.clone();
+ newStore.fields = this.store.fields;
+
+ var sorters = [],
+ dimensions = this.dimensions,
+ length = dimensions.length,
+ i;
+
+ for (i = 0; i < length; i++) {
+ sorters.push({
+ field : dimensions[i].dataIndex,
+ direction: dimensions[i].direction || 'ASC'
+ });
+ }
+
+ newStore.sort(sorters);
+
+ var records = newStore.data.items,
+ hashes = [],
+ tuples = [],
+ recData, hash, info, data, key;
+
+ length = records.length;
+
+ for (i = 0; i < length; i++) {
+ info = this.getRecordInfo(records[i]);
+ data = info.data;
+ hash = "";
+
+ for (key in data) {
+ hash += data[key] + '---';
+ }
+
+ if (hashes.indexOf(hash) == -1) {
+ hashes.push(hash);
+ tuples.push(info);
+ }
+ }
+
+ newStore.destroy();
+
+ return tuples;
+ },
+
+
+ getRecordInfo: function(record) {
+ var dimensions = this.dimensions,
+ length = dimensions.length,
+ data = {},
+ dimension, dataIndex, i;
+
+
+ for (i = 0; i < length; i++) {
+ dimension = dimensions[i];
+ dataIndex = dimension.dataIndex;
+
+ data[dataIndex] = record.get(dataIndex);
+ }
+
+
+
+ var createMatcherFunction = function(data) {
+ return function(record) {
+ for (var dataIndex in data) {
+ if (record.get(dataIndex) != data[dataIndex]) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+ };
+
+ return {
+ data: data,
+ matcher: createMatcherFunction(data)
+ };
+ },
+
+
+ buildHeaders: function() {
+ var tuples = this.getTuples(),
+ rowCount = tuples.length,
+ dimensions = this.dimensions,
+ dimension,
+ colCount = dimensions.length,
+ headers = [],
+ tuple, rows, currentHeader, previousHeader, span, start, isLast, changed, i, j;
+
+ for (i = 0; i < colCount; i++) {
+ dimension = dimensions[i];
+ rows = [];
+ span = 0;
+ start = 0;
+
+ for (j = 0; j < rowCount; j++) {
+ tuple = tuples[j];
+ isLast = j == (rowCount - 1);
+ currentHeader = tuple.data[dimension.dataIndex];
+
+
+ changed = previousHeader != undefined && previousHeader != currentHeader;
+ if (i > 0 && j > 0) {
+ changed = changed || tuple.data[dimensions[i-1].dataIndex] != tuples[j-1].data[dimensions[i-1].dataIndex];
+ }
+
+ if (changed) {
+ rows.push({
+ header: previousHeader,
+ span : span,
+ start : start
+ });
+
+ start += span;
+ span = 0;
+ }
+
+ if (isLast) {
+ rows.push({
+ header: currentHeader,
+ span : span + 1,
+ start : start
+ });
+
+ start += span;
+ span = 0;
+ }
+
+ previousHeader = currentHeader;
+ span++;
+ }
+
+ headers.push({
+ items: rows,
+ width: dimension.width || this.defaultHeaderWidth
+ });
+
+ previousHeader = undefined;
+ }
+
+ return headers;
+ }
+});
+
+
+Ext.grid.HeaderDragZone = Ext.extend(Ext.dd.DragZone, {
+ maxDragWidth: 120,
+
+ constructor : function(grid, hd, hd2){
+ this.grid = grid;
+ this.view = grid.getView();
+ this.ddGroup = "gridHeader" + this.grid.getGridEl().id;
+ Ext.grid.HeaderDragZone.superclass.constructor.call(this, hd);
+ if(hd2){
+ this.setHandleElId(Ext.id(hd));
+ this.setOuterHandleElId(Ext.id(hd2));
+ }
+ this.scroll = false;
+ },
+
+ getDragData : function(e){
+ var t = Ext.lib.Event.getTarget(e),
+ h = this.view.findHeaderCell(t);
+ if(h){
+ return {ddel: h.firstChild, header:h};
+ }
+ return false;
+ },
+
+ onInitDrag : function(e){
+
+ this.dragHeadersDisabled = this.view.headersDisabled;
+ this.view.headersDisabled = true;
+ var clone = this.dragData.ddel.cloneNode(true);
+ clone.id = Ext.id();
+ clone.style.width = Math.min(this.dragData.header.offsetWidth,this.maxDragWidth) + "px";
+ this.proxy.update(clone);
+ return true;
+ },
+
+ afterValidDrop : function(){
+ this.completeDrop();
+ },
+
+ afterInvalidDrop : function(){
+ this.completeDrop();
+ },
+
+ completeDrop: function(){
+ var v = this.view,
+ disabled = this.dragHeadersDisabled;
+ setTimeout(function(){
+ v.headersDisabled = disabled;
+ }, 50);
+ }
+});
+
+
+
+Ext.grid.HeaderDropZone = Ext.extend(Ext.dd.DropZone, {
+ proxyOffsets : [-4, -9],
+ fly: Ext.Element.fly,
+
+ constructor : function(grid, hd, hd2){
+ this.grid = grid;
+ this.view = grid.getView();
+
+ this.proxyTop = Ext.DomHelper.append(document.body, {
+ cls:"col-move-top", html:"&#160;"
+ }, true);
+ this.proxyBottom = Ext.DomHelper.append(document.body, {
+ cls:"col-move-bottom", html:"&#160;"
+ }, true);
+ this.proxyTop.hide = this.proxyBottom.hide = function(){
+ this.setLeftTop(-100,-100);
+ this.setStyle("visibility", "hidden");
+ };
+ this.ddGroup = "gridHeader" + this.grid.getGridEl().id;
+
+
+ Ext.grid.HeaderDropZone.superclass.constructor.call(this, grid.getGridEl().dom);
+ },
+
+ getTargetFromEvent : function(e){
+ var t = Ext.lib.Event.getTarget(e),
+ cindex = this.view.findCellIndex(t);
+ if(cindex !== false){
+ return this.view.getHeaderCell(cindex);
+ }
+ },
+
+ nextVisible : function(h){
+ var v = this.view, cm = this.grid.colModel;
+ h = h.nextSibling;
+ while(h){
+ if(!cm.isHidden(v.getCellIndex(h))){
+ return h;
+ }
+ h = h.nextSibling;
+ }
+ return null;
+ },
+
+ prevVisible : function(h){
+ var v = this.view, cm = this.grid.colModel;
+ h = h.prevSibling;
+ while(h){
+ if(!cm.isHidden(v.getCellIndex(h))){
+ return h;
+ }
+ h = h.prevSibling;
+ }
+ return null;
+ },
+
+ positionIndicator : function(h, n, e){
+ var x = Ext.lib.Event.getPageX(e),
+ r = Ext.lib.Dom.getRegion(n.firstChild),
+ px,
+ pt,
+ py = r.top + this.proxyOffsets[1];
+ if((r.right - x) <= (r.right-r.left)/2){
+ px = r.right+this.view.borderWidth;
+ pt = "after";
+ }else{
+ px = r.left;
+ pt = "before";
+ }
+
+ if(this.grid.colModel.isFixed(this.view.getCellIndex(n))){
+ return false;
+ }
+
+ px += this.proxyOffsets[0];
+ this.proxyTop.setLeftTop(px, py);
+ this.proxyTop.show();
+ if(!this.bottomOffset){
+ this.bottomOffset = this.view.mainHd.getHeight();
+ }
+ this.proxyBottom.setLeftTop(px, py+this.proxyTop.dom.offsetHeight+this.bottomOffset);
+ this.proxyBottom.show();
+ return pt;
+ },
+
+ onNodeEnter : function(n, dd, e, data){
+ if(data.header != n){
+ this.positionIndicator(data.header, n, e);
+ }
+ },
+
+ onNodeOver : function(n, dd, e, data){
+ var result = false;
+ if(data.header != n){
+ result = this.positionIndicator(data.header, n, e);
+ }
+ if(!result){
+ this.proxyTop.hide();
+ this.proxyBottom.hide();
+ }
+ return result ? this.dropAllowed : this.dropNotAllowed;
+ },
+
+ onNodeOut : function(n, dd, e, data){
+ this.proxyTop.hide();
+ this.proxyBottom.hide();
+ },
+
+ onNodeDrop : function(n, dd, e, data){
+ var h = data.header;
+ if(h != n){
+ var cm = this.grid.colModel,
+ x = Ext.lib.Event.getPageX(e),
+ r = Ext.lib.Dom.getRegion(n.firstChild),
+ pt = (r.right - x) <= ((r.right-r.left)/2) ? "after" : "before",
+ oldIndex = this.view.getCellIndex(h),
+ newIndex = this.view.getCellIndex(n);
+ if(pt == "after"){
+ newIndex++;
+ }
+ if(oldIndex < newIndex){
+ newIndex--;
+ }
+ cm.moveColumn(oldIndex, newIndex);
+ return true;
+ }
+ return false;
+ }
+});
+
+Ext.grid.GridView.ColumnDragZone = Ext.extend(Ext.grid.HeaderDragZone, {
+
+ constructor : function(grid, hd){
+ Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this, grid, hd, null);
+ this.proxy.el.addClass('x-grid3-col-dd');
+ },
+
+ handleMouseDown : function(e){
+ },
+
+ callHandleMouseDown : function(e){
+ Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this, e);
+ }
+});
+
+Ext.grid.SplitDragZone = Ext.extend(Ext.dd.DDProxy, {
+ fly: Ext.Element.fly,
+
+ constructor : function(grid, hd, hd2){
+ this.grid = grid;
+ this.view = grid.getView();
+ this.proxy = this.view.resizeProxy;
+ Ext.grid.SplitDragZone.superclass.constructor.call(this, hd,
+ "gridSplitters" + this.grid.getGridEl().id, {
+ dragElId : Ext.id(this.proxy.dom), resizeFrame:false
+ });
+ this.setHandleElId(Ext.id(hd));
+ this.setOuterHandleElId(Ext.id(hd2));
+ this.scroll = false;
+ },
+
+ b4StartDrag : function(x, y){
+ this.view.headersDisabled = true;
+ this.proxy.setHeight(this.view.mainWrap.getHeight());
+ var w = this.cm.getColumnWidth(this.cellIndex);
+ var minw = Math.max(w-this.grid.minColumnWidth, 0);
+ this.resetConstraints();
+ this.setXConstraint(minw, 1000);
+ this.setYConstraint(0, 0);
+ this.minX = x - minw;
+ this.maxX = x + 1000;
+ this.startPos = x;
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this, x, y);
+ },
+
+
+ handleMouseDown : function(e){
+ var ev = Ext.EventObject.setEvent(e);
+ var t = this.fly(ev.getTarget());
+ if(t.hasClass("x-grid-split")){
+ this.cellIndex = this.view.getCellIndex(t.dom);
+ this.split = t.dom;
+ this.cm = this.grid.colModel;
+ if(this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)){
+ Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this, arguments);
+ }
+ }
+ },
+
+ endDrag : function(e){
+ this.view.headersDisabled = false;
+ var endX = Math.max(this.minX, Ext.lib.Event.getPageX(e));
+ var diff = endX - this.startPos;
+ this.view.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex)+diff);
+ },
+
+ autoOffset : function(){
+ this.setDelta(0,0);
+ }
+});
+Ext.grid.GridDragZone = function(grid, config){
+ this.view = grid.getView();
+ Ext.grid.GridDragZone.superclass.constructor.call(this, this.view.mainBody.dom, config);
+ this.scroll = false;
+ this.grid = grid;
+ this.ddel = document.createElement('div');
+ this.ddel.className = 'x-grid-dd-wrap';
+
+ this.preventDefault = true;
+};
+
+Ext.extend(Ext.grid.GridDragZone, Ext.dd.DragZone, {
+ ddGroup : "GridDD",
+
+
+ getDragData : function(e){
+ var t = Ext.lib.Event.getTarget(e),
+ sm,
+ rowIndex = this.view.findRowIndex(t),
+ cellIndex,
+ selectedCell,
+ selection;
+
+ if (rowIndex !== false){
+ sm = this.grid.selModel;
+
+
+
+ if (sm.getSelectedCell) {
+ cellIndex = this.view.findCellIndex(t);
+ selectedCell = sm.getSelectedCell();
+ if (!selectedCell || selectedCell[0] !== rowIndex || selectedCell[1] !== cellIndex) {
+ sm.handleMouseDown(this.grid, rowIndex, cellIndex, e);
+ }
+ if (this.grid.dragCell) {
+
+ selection = sm.getSelectedCell();
+ if (!this.grid.hasOwnProperty('ddText')) {
+ this.grid.ddText = '{0} selected cell{1}';
+ }
+ } else {
+
+ selection = [this.grid.store.getAt(rowIndex)];
+ }
+ } else {
+ if(!sm.isSelected(rowIndex) || e.hasModifier()){
+ sm.handleMouseDown(this.grid, rowIndex, e);
+ }
+ selection = sm.getSelections();
+ }
+ return {grid: this.grid, ddel: this.ddel, rowIndex: rowIndex, selections: selection};
+ }
+ return false;
+ },
+
+
+ onInitDrag : function(e){
+ var data = this.dragData;
+ this.ddel.innerHTML = this.grid.getDragDropText();
+ this.proxy.update(this.ddel);
+
+ },
+
+
+ afterRepair : function(){
+ this.dragging = false;
+ },
+
+
+ getRepairXY : function(e, data){
+ return false;
+ },
+
+ onEndDrag : function(data, e){
+
+ },
+
+ onValidDrop : function(dd, e, id){
+
+ this.hideProxy();
+ },
+
+ beforeInvalidDrop : function(e, id){
+
+ }
+});
+
+Ext.grid.ColumnModel = Ext.extend(Ext.util.Observable, {
+
+ defaultWidth: 100,
+
+
+ defaultSortable: false,
+
+
+
+
+
+ constructor : function(config) {
+
+ if (config.columns) {
+ Ext.apply(this, config);
+ this.setConfig(config.columns, true);
+ } else {
+ this.setConfig(config, true);
+ }
+
+ this.addEvents(
+
+ "widthchange",
+
+
+ "headerchange",
+
+
+ "hiddenchange",
+
+
+ "columnmoved",
+
+
+ "configchange"
+ );
+
+ Ext.grid.ColumnModel.superclass.constructor.call(this);
+ },
+
+
+ getColumnId : function(index) {
+ return this.config[index].id;
+ },
+
+ getColumnAt : function(index) {
+ return this.config[index];
+ },
+
+
+ setConfig : function(config, initial) {
+ var i, c, len;
+
+ if (!initial) {
+ delete this.totalWidth;
+
+ for (i = 0, len = this.config.length; i < len; i++) {
+ c = this.config[i];
+
+ if (c.setEditor) {
+
+ c.setEditor(null);
+ }
+ }
+ }
+
+
+ this.defaults = Ext.apply({
+ width: this.defaultWidth,
+ sortable: this.defaultSortable
+ }, this.defaults);
+
+ this.config = config;
+ this.lookup = {};
+
+ for (i = 0, len = config.length; i < len; i++) {
+ c = Ext.applyIf(config[i], this.defaults);
+
+
+ if (Ext.isEmpty(c.id)) {
+ c.id = i;
+ }
+
+ if (!c.isColumn) {
+ var Cls = Ext.grid.Column.types[c.xtype || 'gridcolumn'];
+ c = new Cls(c);
+ config[i] = c;
+ }
+
+ this.lookup[c.id] = c;
+ }
+
+ if (!initial) {
+ this.fireEvent('configchange', this);
+ }
+ },
+
+
+ getColumnById : function(id) {
+ return this.lookup[id];
+ },
+
+
+ getIndexById : function(id) {
+ for (var i = 0, len = this.config.length; i < len; i++) {
+ if (this.config[i].id == id) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+
+ moveColumn : function(oldIndex, newIndex) {
+ var config = this.config,
+ c = config[oldIndex];
+
+ config.splice(oldIndex, 1);
+ config.splice(newIndex, 0, c);
+ this.dataMap = null;
+ this.fireEvent("columnmoved", this, oldIndex, newIndex);
+ },
+
+
+ getColumnCount : function(visibleOnly) {
+ var length = this.config.length,
+ c = 0,
+ i;
+
+ if (visibleOnly === true) {
+ for (i = 0; i < length; i++) {
+ if (!this.isHidden(i)) {
+ c++;
+ }
+ }
+
+ return c;
+ }
+
+ return length;
+ },
+
+
+ getColumnsBy : function(fn, scope) {
+ var config = this.config,
+ length = config.length,
+ result = [],
+ i, c;
+
+ for (i = 0; i < length; i++){
+ c = config[i];
+
+ if (fn.call(scope || this, c, i) === true) {
+ result[result.length] = c;
+ }
+ }
+
+ return result;
+ },
+
+
+ isSortable : function(col) {
+ return !!this.config[col].sortable;
+ },
+
+
+ isMenuDisabled : function(col) {
+ return !!this.config[col].menuDisabled;
+ },
+
+
+ getRenderer : function(col) {
+ return this.config[col].renderer || Ext.grid.ColumnModel.defaultRenderer;
+ },
+
+ getRendererScope : function(col) {
+ return this.config[col].scope;
+ },
+
+
+ setRenderer : function(col, fn) {
+ this.config[col].renderer = fn;
+ },
+
+
+ getColumnWidth : function(col) {
+ var width = this.config[col].width;
+ if(typeof width != 'number'){
+ width = this.defaultWidth;
+ }
+ return width;
+ },
+
+
+ setColumnWidth : function(col, width, suppressEvent) {
+ this.config[col].width = width;
+ this.totalWidth = null;
+
+ if (!suppressEvent) {
+ this.fireEvent("widthchange", this, col, width);
+ }
+ },
+
+
+ getTotalWidth : function(includeHidden) {
+ if (!this.totalWidth) {
+ this.totalWidth = 0;
+ for (var i = 0, len = this.config.length; i < len; i++) {
+ if (includeHidden || !this.isHidden(i)) {
+ this.totalWidth += this.getColumnWidth(i);
+ }
+ }
+ }
+ return this.totalWidth;
+ },
+
+
+ getColumnHeader : function(col) {
+ return this.config[col].header;
+ },
+
+
+ setColumnHeader : function(col, header) {
+ this.config[col].header = header;
+ this.fireEvent("headerchange", this, col, header);
+ },
+
+
+ getColumnTooltip : function(col) {
+ return this.config[col].tooltip;
+ },
+
+ setColumnTooltip : function(col, tooltip) {
+ this.config[col].tooltip = tooltip;
+ },
+
+
+ getDataIndex : function(col) {
+ return this.config[col].dataIndex;
+ },
+
+
+ setDataIndex : function(col, dataIndex) {
+ this.config[col].dataIndex = dataIndex;
+ },
+
+
+ findColumnIndex : function(dataIndex) {
+ var c = this.config;
+ for(var i = 0, len = c.length; i < len; i++){
+ if(c[i].dataIndex == dataIndex){
+ return i;
+ }
+ }
+ return -1;
+ },
+
+
+ isCellEditable : function(colIndex, rowIndex) {
+ var c = this.config[colIndex],
+ ed = c.editable;
+
+
+ return !!(ed || (!Ext.isDefined(ed) && c.editor));
+ },
+
+
+ getCellEditor : function(colIndex, rowIndex) {
+ return this.config[colIndex].getCellEditor(rowIndex);
+ },
+
+
+ setEditable : function(col, editable) {
+ this.config[col].editable = editable;
+ },
+
+
+ isHidden : function(colIndex) {
+ return !!this.config[colIndex].hidden;
+ },
+
+
+ isFixed : function(colIndex) {
+ return !!this.config[colIndex].fixed;
+ },
+
+
+ isResizable : function(colIndex) {
+ return colIndex >= 0 && this.config[colIndex].resizable !== false && this.config[colIndex].fixed !== true;
+ },
+
+
+ setHidden : function(colIndex, hidden) {
+ var c = this.config[colIndex];
+ if(c.hidden !== hidden){
+ c.hidden = hidden;
+ this.totalWidth = null;
+ this.fireEvent("hiddenchange", this, colIndex, hidden);
+ }
+ },
+
+
+ setEditor : function(col, editor) {
+ this.config[col].setEditor(editor);
+ },
+
+
+ destroy : function() {
+ var length = this.config.length,
+ i = 0;
+
+ for (; i < length; i++){
+ this.config[i].destroy();
+ }
+ delete this.config;
+ delete this.lookup;
+ this.purgeListeners();
+ },
+
+
+ setState : function(col, state) {
+ state = Ext.applyIf(state, this.defaults);
+ Ext.apply(this.config[col], state);
+ }
+});
+
+
+Ext.grid.ColumnModel.defaultRenderer = function(value) {
+ if (typeof value == "string" && value.length < 1) {
+ return "&#160;";
+ }
+ return value;
+};
+Ext.grid.AbstractSelectionModel = Ext.extend(Ext.util.Observable, {
+
+
+ constructor : function(){
+ this.locked = false;
+ Ext.grid.AbstractSelectionModel.superclass.constructor.call(this);
+ },
+
+
+ init : function(grid){
+ this.grid = grid;
+ if(this.lockOnInit){
+ delete this.lockOnInit;
+ this.locked = false;
+ this.lock();
+ }
+ this.initEvents();
+ },
+
+
+ lock : function(){
+ if(!this.locked){
+ this.locked = true;
+
+ var g = this.grid;
+ if(g){
+ g.getView().on({
+ scope: this,
+ beforerefresh: this.sortUnLock,
+ refresh: this.sortLock
+ });
+ }else{
+ this.lockOnInit = true;
+ }
+ }
+ },
+
+
+ sortLock : function() {
+ this.locked = true;
+ },
+
+
+ sortUnLock : function() {
+ this.locked = false;
+ },
+
+
+ unlock : function(){
+ if(this.locked){
+ this.locked = false;
+ var g = this.grid,
+ gv;
+
+
+ if(g){
+ gv = g.getView();
+ gv.un('beforerefresh', this.sortUnLock, this);
+ gv.un('refresh', this.sortLock, this);
+ }else{
+ delete this.lockOnInit;
+ }
+ }
+ },
+
+
+ isLocked : function(){
+ return this.locked;
+ },
+
+ destroy: function(){
+ this.unlock();
+ this.purgeListeners();
+ }
+});
+Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, {
+
+ singleSelect : false,
+
+ constructor : function(config){
+ Ext.apply(this, config);
+ this.selections = new Ext.util.MixedCollection(false, function(o){
+ return o.id;
+ });
+
+ this.last = false;
+ this.lastActive = false;
+
+ this.addEvents(
+
+ 'selectionchange',
+
+ 'beforerowselect',
+
+ 'rowselect',
+
+ 'rowdeselect'
+ );
+ Ext.grid.RowSelectionModel.superclass.constructor.call(this);
+ },
+
+
+
+ initEvents : function(){
+
+ if(!this.grid.enableDragDrop && !this.grid.enableDrag){
+ this.grid.on('rowmousedown', this.handleMouseDown, this);
+ }
+
+ this.rowNav = new Ext.KeyNav(this.grid.getGridEl(), {
+ up: this.onKeyPress,
+ down: this.onKeyPress,
+ scope: this
+ });
+
+ this.grid.getView().on({
+ scope: this,
+ refresh: this.onRefresh,
+ rowupdated: this.onRowUpdated,
+ rowremoved: this.onRemove
+ });
+ },
+
+ onKeyPress : function(e, name){
+ var up = name == 'up',
+ method = up ? 'selectPrevious' : 'selectNext',
+ add = up ? -1 : 1,
+ last;
+ if(!e.shiftKey || this.singleSelect){
+ this[method](false);
+ }else if(this.last !== false && this.lastActive !== false){
+ last = this.last;
+ this.selectRange(this.last, this.lastActive + add);
+ this.grid.getView().focusRow(this.lastActive);
+ if(last !== false){
+ this.last = last;
+ }
+ }else{
+ this.selectFirstRow();
+ }
+ },
+
+
+ onRefresh : function(){
+ var ds = this.grid.store,
+ s = this.getSelections(),
+ i = 0,
+ len = s.length,
+ index, r;
+
+ this.silent = true;
+ this.clearSelections(true);
+ for(; i < len; i++){
+ r = s[i];
+ if((index = ds.indexOfId(r.id)) != -1){
+ this.selectRow(index, true);
+ }
+ }
+ if(s.length != this.selections.getCount()){
+ this.fireEvent('selectionchange', this);
+ }
+ this.silent = false;
+ },
+
+
+ onRemove : function(v, index, r){
+ if(this.selections.remove(r) !== false){
+ this.fireEvent('selectionchange', this);
+ }
+ },
+
+
+ onRowUpdated : function(v, index, r){
+ if(this.isSelected(r)){
+ v.onRowSelect(index);
+ }
+ },
+
+
+ selectRecords : function(records, keepExisting){
+ if(!keepExisting){
+ this.clearSelections();
+ }
+ var ds = this.grid.store,
+ i = 0,
+ len = records.length;
+ for(; i < len; i++){
+ this.selectRow(ds.indexOf(records[i]), true);
+ }
+ },
+
+
+ getCount : function(){
+ return this.selections.length;
+ },
+
+
+ selectFirstRow : function(){
+ this.selectRow(0);
+ },
+
+
+ selectLastRow : function(keepExisting){
+ this.selectRow(this.grid.store.getCount() - 1, keepExisting);
+ },
+
+
+ selectNext : function(keepExisting){
+ if(this.hasNext()){
+ this.selectRow(this.last+1, keepExisting);
+ this.grid.getView().focusRow(this.last);
+ return true;
+ }
+ return false;
+ },
+
+
+ selectPrevious : function(keepExisting){
+ if(this.hasPrevious()){
+ this.selectRow(this.last-1, keepExisting);
+ this.grid.getView().focusRow(this.last);
+ return true;
+ }
+ return false;
+ },
+
+
+ hasNext : function(){
+ return this.last !== false && (this.last+1) < this.grid.store.getCount();
+ },
+
+
+ hasPrevious : function(){
+ return !!this.last;
+ },
+
+
+
+ getSelections : function(){
+ return [].concat(this.selections.items);
+ },
+
+
+ getSelected : function(){
+ return this.selections.itemAt(0);
+ },
+
+
+ each : function(fn, scope){
+ var s = this.getSelections(),
+ i = 0,
+ len = s.length;
+
+ for(; i < len; i++){
+ if(fn.call(scope || this, s[i], i) === false){
+ return false;
+ }
+ }
+ return true;
+ },
+
+
+ clearSelections : function(fast){
+ if(this.isLocked()){
+ return;
+ }
+ if(fast !== true){
+ var ds = this.grid.store,
+ s = this.selections;
+ s.each(function(r){
+ this.deselectRow(ds.indexOfId(r.id));
+ }, this);
+ s.clear();
+ }else{
+ this.selections.clear();
+ }
+ this.last = false;
+ },
+
+
+
+ selectAll : function(){
+ if(this.isLocked()){
+ return;
+ }
+ this.selections.clear();
+ for(var i = 0, len = this.grid.store.getCount(); i < len; i++){
+ this.selectRow(i, true);
+ }
+ },
+
+
+ hasSelection : function(){
+ return this.selections.length > 0;
+ },
+
+
+ isSelected : function(index){
+ var r = Ext.isNumber(index) ? this.grid.store.getAt(index) : index;
+ return (r && this.selections.key(r.id) ? true : false);
+ },
+
+
+ isIdSelected : function(id){
+ return (this.selections.key(id) ? true : false);
+ },
+
+
+ handleMouseDown : function(g, rowIndex, e){
+ if(e.button !== 0 || this.isLocked()){
+ return;
+ }
+ var view = this.grid.getView();
+ if(e.shiftKey && !this.singleSelect && this.last !== false){
+ var last = this.last;
+ this.selectRange(last, rowIndex, e.ctrlKey);
+ this.last = last;
+ view.focusRow(rowIndex);
+ }else{
+ var isSelected = this.isSelected(rowIndex);
+ if(e.ctrlKey && isSelected){
+ this.deselectRow(rowIndex);
+ }else if(!isSelected || this.getCount() > 1){
+ this.selectRow(rowIndex, e.ctrlKey || e.shiftKey);
+ view.focusRow(rowIndex);
+ }
+ }
+ },
+
+
+ selectRows : function(rows, keepExisting){
+ if(!keepExisting){
+ this.clearSelections();
+ }
+ for(var i = 0, len = rows.length; i < len; i++){
+ this.selectRow(rows[i], true);
+ }
+ },
+
+
+ selectRange : function(startRow, endRow, keepExisting){
+ var i;
+ if(this.isLocked()){
+ return;
+ }
+ if(!keepExisting){
+ this.clearSelections();
+ }
+ if(startRow <= endRow){
+ for(i = startRow; i <= endRow; i++){
+ this.selectRow(i, true);
+ }
+ }else{
+ for(i = startRow; i >= endRow; i--){
+ this.selectRow(i, true);
+ }
+ }
+ },
+
+
+ deselectRange : function(startRow, endRow, preventViewNotify){
+ if(this.isLocked()){
+ return;
+ }
+ for(var i = startRow; i <= endRow; i++){
+ this.deselectRow(i, preventViewNotify);
+ }
+ },
+
+
+ selectRow : function(index, keepExisting, preventViewNotify){
+ if(this.isLocked() || (index < 0 || index >= this.grid.store.getCount()) || (keepExisting && this.isSelected(index))){
+ return;
+ }
+ var r = this.grid.store.getAt(index);
+ if(r && this.fireEvent('beforerowselect', this, index, keepExisting, r) !== false){
+ if(!keepExisting || this.singleSelect){
+ this.clearSelections();
+ }
+ this.selections.add(r);
+ this.last = this.lastActive = index;
+ if(!preventViewNotify){
+ this.grid.getView().onRowSelect(index);
+ }
+ if(!this.silent){
+ this.fireEvent('rowselect', this, index, r);
+ this.fireEvent('selectionchange', this);
+ }
+ }
+ },
+
+
+ deselectRow : function(index, preventViewNotify){
+ if(this.isLocked()){
+ return;
+ }
+ if(this.last == index){
+ this.last = false;
+ }
+ if(this.lastActive == index){
+ this.lastActive = false;
+ }
+ var r = this.grid.store.getAt(index);
+ if(r){
+ this.selections.remove(r);
+ if(!preventViewNotify){
+ this.grid.getView().onRowDeselect(index);
+ }
+ this.fireEvent('rowdeselect', this, index, r);
+ this.fireEvent('selectionchange', this);
+ }
+ },
+
+
+ acceptsNav : function(row, col, cm){
+ return !cm.isHidden(col) && cm.isCellEditable(col, row);
+ },
+
+
+ onEditorKey : function(field, e){
+ var k = e.getKey(),
+ newCell,
+ g = this.grid,
+ last = g.lastEdit,
+ ed = g.activeEditor,
+ shift = e.shiftKey,
+ ae, last, r, c;
+
+ if(k == e.TAB){
+ e.stopEvent();
+ ed.completeEdit();
+ if(shift){
+ newCell = g.walkCells(ed.row, ed.col-1, -1, this.acceptsNav, this);
+ }else{
+ newCell = g.walkCells(ed.row, ed.col+1, 1, this.acceptsNav, this);
+ }
+ }else if(k == e.ENTER){
+ if(this.moveEditorOnEnter !== false){
+ if(shift){
+ newCell = g.walkCells(last.row - 1, last.col, -1, this.acceptsNav, this);
+ }else{
+ newCell = g.walkCells(last.row + 1, last.col, 1, this.acceptsNav, this);
+ }
+ }
+ }
+ if(newCell){
+ r = newCell[0];
+ c = newCell[1];
+
+ this.onEditorSelect(r, last.row);
+
+ if(g.isEditor && g.editing){
+ ae = g.activeEditor;
+ if(ae && ae.field.triggerBlur){
+
+ ae.field.triggerBlur();
+ }
+ }
+ g.startEditing(r, c);
+ }
+ },
+
+ onEditorSelect: function(row, lastRow){
+ if(lastRow != row){
+ this.selectRow(row);
+ }
+ },
+
+ destroy : function(){
+ Ext.destroy(this.rowNav);
+ this.rowNav = null;
+ Ext.grid.RowSelectionModel.superclass.destroy.call(this);
+ }
+});
+
+Ext.grid.Column = Ext.extend(Ext.util.Observable, {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ isColumn : true,
+
+ constructor : function(config){
+ Ext.apply(this, config);
+
+ if(Ext.isString(this.renderer)){
+ this.renderer = Ext.util.Format[this.renderer];
+ }else if(Ext.isObject(this.renderer)){
+ this.scope = this.renderer.scope;
+ this.renderer = this.renderer.fn;
+ }
+ if(!this.scope){
+ this.scope = this;
+ }
+
+ var ed = this.editor;
+ delete this.editor;
+ this.setEditor(ed);
+ this.addEvents(
+
+ 'click',
+
+ 'contextmenu',
+
+ 'dblclick',
+
+ 'mousedown'
+ );
+ Ext.grid.Column.superclass.constructor.call(this);
+ },
+
+
+ processEvent : function(name, e, grid, rowIndex, colIndex){
+ return this.fireEvent(name, this, grid, rowIndex, e);
+ },
+
+
+ destroy: function() {
+ if(this.setEditor){
+ this.setEditor(null);
+ }
+ this.purgeListeners();
+ },
+
+
+ renderer : function(value){
+ return value;
+ },
+
+
+ getEditor: function(rowIndex){
+ return this.editable !== false ? this.editor : null;
+ },
+
+
+ setEditor : function(editor){
+ var ed = this.editor;
+ if(ed){
+ if(ed.gridEditor){
+ ed.gridEditor.destroy();
+ delete ed.gridEditor;
+ }else{
+ ed.destroy();
+ }
+ }
+ this.editor = null;
+ if(editor){
+
+ if(!editor.isXType){
+ editor = Ext.create(editor, 'textfield');
+ }
+ this.editor = editor;
+ }
+ },
+
+
+ getCellEditor: function(rowIndex){
+ var ed = this.getEditor(rowIndex);
+ if(ed){
+ if(!ed.startEdit){
+ if(!ed.gridEditor){
+ ed.gridEditor = new Ext.grid.GridEditor(ed);
+ }
+ ed = ed.gridEditor;
+ }
+ }
+ return ed;
+ }
+});
+
+
+Ext.grid.BooleanColumn = Ext.extend(Ext.grid.Column, {
+
+ trueText: 'true',
+
+ falseText: 'false',
+
+ undefinedText: '&#160;',
+
+ constructor: function(cfg){
+ Ext.grid.BooleanColumn.superclass.constructor.call(this, cfg);
+ var t = this.trueText, f = this.falseText, u = this.undefinedText;
+ this.renderer = function(v){
+ if(v === undefined){
+ return u;
+ }
+ if(!v || v === 'false'){
+ return f;
+ }
+ return t;
+ };
+ }
+});
+
+
+Ext.grid.NumberColumn = Ext.extend(Ext.grid.Column, {
+
+ format : '0,000.00',
+ constructor: function(cfg){
+ Ext.grid.NumberColumn.superclass.constructor.call(this, cfg);
+ this.renderer = Ext.util.Format.numberRenderer(this.format);
+ }
+});
+
+
+Ext.grid.DateColumn = Ext.extend(Ext.grid.Column, {
+
+ format : 'm/d/Y',
+ constructor: function(cfg){
+ Ext.grid.DateColumn.superclass.constructor.call(this, cfg);
+ this.renderer = Ext.util.Format.dateRenderer(this.format);
+ }
+});
+
+
+Ext.grid.TemplateColumn = Ext.extend(Ext.grid.Column, {
+
+ constructor: function(cfg){
+ Ext.grid.TemplateColumn.superclass.constructor.call(this, cfg);
+ var tpl = (!Ext.isPrimitive(this.tpl) && this.tpl.compile) ? this.tpl : new Ext.XTemplate(this.tpl);
+ this.renderer = function(value, p, r){
+ return tpl.apply(r.data);
+ };
+ this.tpl = tpl;
+ }
+});
+
+
+Ext.grid.ActionColumn = Ext.extend(Ext.grid.Column, {
+
+
+
+
+
+
+
+
+ header: '&#160;',
+
+ actionIdRe: /x-action-col-(\d+)/,
+
+
+ altText: '',
+
+ constructor: function(cfg) {
+ var me = this,
+ items = cfg.items || (me.items = [me]),
+ l = items.length,
+ i,
+ item;
+
+ Ext.grid.ActionColumn.superclass.constructor.call(me, cfg);
+
+
+
+ me.renderer = function(v, meta) {
+
+ v = Ext.isFunction(cfg.renderer) ? cfg.renderer.apply(this, arguments)||'' : '';
+
+ meta.css += ' x-action-col-cell';
+ for (i = 0; i < l; i++) {
+ item = items[i];
+ v += '<img alt="' + (item.altText || me.altText) + '" src="' + (item.icon || Ext.BLANK_IMAGE_URL) +
+ '" class="x-action-col-icon x-action-col-' + String(i) + ' ' + (item.iconCls || '') +
+ ' ' + (Ext.isFunction(item.getClass) ? item.getClass.apply(item.scope||this.scope||this, arguments) : '') + '"' +
+ ((item.tooltip) ? ' ext:qtip="' + item.tooltip + '"' : '') + ' />';
+ }
+ return v;
+ };
+ },
+
+ destroy: function() {
+ delete this.items;
+ delete this.renderer;
+ return Ext.grid.ActionColumn.superclass.destroy.apply(this, arguments);
+ },
+
+
+ processEvent : function(name, e, grid, rowIndex, colIndex){
+ var m = e.getTarget().className.match(this.actionIdRe),
+ item, fn;
+ if (m && (item = this.items[parseInt(m[1], 10)])) {
+ if (name == 'click') {
+ (fn = item.handler || this.handler) && fn.call(item.scope||this.scope||this, grid, rowIndex, colIndex, item, e);
+ } else if ((name == 'mousedown') && (item.stopSelection !== false)) {
+ return false;
+ }
+ }
+ return Ext.grid.ActionColumn.superclass.processEvent.apply(this, arguments);
+ }
+});
+
+
+Ext.grid.Column.types = {
+ gridcolumn : Ext.grid.Column,
+ booleancolumn: Ext.grid.BooleanColumn,
+ numbercolumn: Ext.grid.NumberColumn,
+ datecolumn: Ext.grid.DateColumn,
+ templatecolumn: Ext.grid.TemplateColumn,
+ actioncolumn: Ext.grid.ActionColumn
+};
+Ext.grid.RowNumberer = Ext.extend(Object, {
+
+ header: "",
+
+ width: 23,
+
+ sortable: false,
+
+ constructor : function(config){
+ Ext.apply(this, config);
+ if(this.rowspan){
+ this.renderer = this.renderer.createDelegate(this);
+ }
+ },
+
+
+ fixed:true,
+ hideable: false,
+ menuDisabled:true,
+ dataIndex: '',
+ id: 'numberer',
+ rowspan: undefined,
+
+
+ renderer : function(v, p, record, rowIndex){
+ if(this.rowspan){
+ p.cellAttr = 'rowspan="'+this.rowspan+'"';
+ }
+ return rowIndex+1;
+ }
+});
+Ext.grid.CheckboxSelectionModel = Ext.extend(Ext.grid.RowSelectionModel, {
+
+
+
+ header : '<div class="x-grid3-hd-checker">&#160;</div>',
+
+ width : 20,
+
+ sortable : false,
+
+
+ menuDisabled : true,
+ fixed : true,
+ hideable: false,
+ dataIndex : '',
+ id : 'checker',
+ isColumn: true,
+
+ constructor : function(){
+ Ext.grid.CheckboxSelectionModel.superclass.constructor.apply(this, arguments);
+ if(this.checkOnly){
+ this.handleMouseDown = Ext.emptyFn;
+ }
+ },
+
+
+ initEvents : function(){
+ Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);
+ this.grid.on('render', function(){
+ Ext.fly(this.grid.getView().innerHd).on('mousedown', this.onHdMouseDown, this);
+ }, this);
+ },
+
+
+ processEvent : function(name, e, grid, rowIndex, colIndex){
+ if (name == 'mousedown') {
+ this.onMouseDown(e, e.getTarget());
+ return false;
+ } else {
+ return Ext.grid.Column.prototype.processEvent.apply(this, arguments);
+ }
+ },
+
+
+ onMouseDown : function(e, t){
+ if(e.button === 0 && t.className == 'x-grid3-row-checker'){
+ e.stopEvent();
+ var row = e.getTarget('.x-grid3-row');
+ if(row){
+ var index = row.rowIndex;
+ if(this.isSelected(index)){
+ this.deselectRow(index);
+ }else{
+ this.selectRow(index, true);
+ this.grid.getView().focusRow(index);
+ }
+ }
+ }
+ },
+
+
+ onHdMouseDown : function(e, t) {
+ if(t.className == 'x-grid3-hd-checker'){
+ e.stopEvent();
+ var hd = Ext.fly(t.parentNode);
+ var isChecked = hd.hasClass('x-grid3-hd-checker-on');
+ if(isChecked){
+ hd.removeClass('x-grid3-hd-checker-on');
+ this.clearSelections();
+ }else{
+ hd.addClass('x-grid3-hd-checker-on');
+ this.selectAll();
+ }
+ }
+ },
+
+
+ renderer : function(v, p, record){
+ return '<div class="x-grid3-row-checker">&#160;</div>';
+ },
+
+ onEditorSelect: function(row, lastRow){
+ if(lastRow != row && !this.checkOnly){
+ this.selectRow(row);
+ }
+ }
+});
+Ext.grid.CellSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, {
+
+ constructor : function(config){
+ Ext.apply(this, config);
+
+ this.selection = null;
+
+ this.addEvents(
+
+ "beforecellselect",
+
+ "cellselect",
+
+ "selectionchange"
+ );
+
+ Ext.grid.CellSelectionModel.superclass.constructor.call(this);
+ },
+
+
+ initEvents : function(){
+ this.grid.on('cellmousedown', this.handleMouseDown, this);
+ this.grid.on(Ext.EventManager.getKeyEvent(), this.handleKeyDown, this);
+ this.grid.getView().on({
+ scope: this,
+ refresh: this.onViewChange,
+ rowupdated: this.onRowUpdated,
+ beforerowremoved: this.clearSelections,
+ beforerowsinserted: this.clearSelections
+ });
+ if(this.grid.isEditor){
+ this.grid.on('beforeedit', this.beforeEdit, this);
+ }
+ },
+
+
+ beforeEdit : function(e){
+ this.select(e.row, e.column, false, true, e.record);
+ },
+
+
+ onRowUpdated : function(v, index, r){
+ if(this.selection && this.selection.record == r){
+ v.onCellSelect(index, this.selection.cell[1]);
+ }
+ },
+
+
+ onViewChange : function(){
+ this.clearSelections(true);
+ },
+
+
+ getSelectedCell : function(){
+ return this.selection ? this.selection.cell : null;
+ },
+
+
+ clearSelections : function(preventNotify){
+ var s = this.selection;
+ if(s){
+ if(preventNotify !== true){
+ this.grid.view.onCellDeselect(s.cell[0], s.cell[1]);
+ }
+ this.selection = null;
+ this.fireEvent("selectionchange", this, null);
+ }
+ },
+
+
+ hasSelection : function(){
+ return this.selection ? true : false;
+ },
+
+
+ handleMouseDown : function(g, row, cell, e){
+ if(e.button !== 0 || this.isLocked()){
+ return;
+ }
+ this.select(row, cell);
+ },
+
+
+ select : function(rowIndex, colIndex, preventViewNotify, preventFocus, r){
+ if(this.fireEvent("beforecellselect", this, rowIndex, colIndex) !== false){
+ this.clearSelections();
+ r = r || this.grid.store.getAt(rowIndex);
+ this.selection = {
+ record : r,
+ cell : [rowIndex, colIndex]
+ };
+ if(!preventViewNotify){
+ var v = this.grid.getView();
+ v.onCellSelect(rowIndex, colIndex);
+ if(preventFocus !== true){
+ v.focusCell(rowIndex, colIndex);
+ }
+ }
+ this.fireEvent("cellselect", this, rowIndex, colIndex);
+ this.fireEvent("selectionchange", this, this.selection);
+ }
+ },
+
+
+ isSelectable : function(rowIndex, colIndex, cm){
+ return !cm.isHidden(colIndex);
+ },
+
+
+ onEditorKey: function(field, e){
+ if(e.getKey() == e.TAB){
+ this.handleKeyDown(e);
+ }
+ },
+
+
+ handleKeyDown : function(e){
+ if(!e.isNavKeyPress()){
+ return;
+ }
+
+ var k = e.getKey(),
+ g = this.grid,
+ s = this.selection,
+ sm = this,
+ walk = function(row, col, step){
+ return g.walkCells(
+ row,
+ col,
+ step,
+ g.isEditor && g.editing ? sm.acceptsNav : sm.isSelectable,
+ sm
+ );
+ },
+ cell, newCell, r, c, ae;
+
+ switch(k){
+ case e.ESC:
+ case e.PAGE_UP:
+ case e.PAGE_DOWN:
+
+ break;
+ default:
+
+ e.stopEvent();
+ break;
+ }
+
+ if(!s){
+ cell = walk(0, 0, 1);
+ if(cell){
+ this.select(cell[0], cell[1]);
+ }
+ return;
+ }
+
+ cell = s.cell;
+ r = cell[0];
+ c = cell[1];
+
+ switch(k){
+ case e.TAB:
+ if(e.shiftKey){
+ newCell = walk(r, c - 1, -1);
+ }else{
+ newCell = walk(r, c + 1, 1);
+ }
+ break;
+ case e.DOWN:
+ newCell = walk(r + 1, c, 1);
+ break;
+ case e.UP:
+ newCell = walk(r - 1, c, -1);
+ break;
+ case e.RIGHT:
+ newCell = walk(r, c + 1, 1);
+ break;
+ case e.LEFT:
+ newCell = walk(r, c - 1, -1);
+ break;
+ case e.ENTER:
+ if (g.isEditor && !g.editing) {
+ g.startEditing(r, c);
+ return;
+ }
+ break;
+ }
+
+ if(newCell){
+
+ r = newCell[0];
+ c = newCell[1];
+
+ this.select(r, c);
+
+ if(g.isEditor && g.editing){
+ ae = g.activeEditor;
+ if(ae && ae.field.triggerBlur){
+
+ ae.field.triggerBlur();
+ }
+ g.startEditing(r, c);
+ }
+ }
+ },
+
+ acceptsNav : function(row, col, cm){
+ return !cm.isHidden(col) && cm.isCellEditable(col, row);
+ }
+});
+Ext.grid.EditorGridPanel = Ext.extend(Ext.grid.GridPanel, {
+
+ clicksToEdit: 2,
+
+
+ forceValidation: false,
+
+
+ isEditor : true,
+
+ detectEdit: false,
+
+
+ autoEncode : false,
+
+
+
+ trackMouseOver: false,
+
+
+ initComponent : function(){
+ Ext.grid.EditorGridPanel.superclass.initComponent.call(this);
+
+ if(!this.selModel){
+
+ this.selModel = new Ext.grid.CellSelectionModel();
+ }
+
+ this.activeEditor = null;
+
+ this.addEvents(
+
+ "beforeedit",
+
+ "afteredit",
+
+ "validateedit"
+ );
+ },
+
+
+ initEvents : function(){
+ Ext.grid.EditorGridPanel.superclass.initEvents.call(this);
+
+ this.getGridEl().on('mousewheel', this.stopEditing.createDelegate(this, [true]), this);
+ this.on('columnresize', this.stopEditing, this, [true]);
+
+ if(this.clicksToEdit == 1){
+ this.on("cellclick", this.onCellDblClick, this);
+ }else {
+ var view = this.getView();
+ if(this.clicksToEdit == 'auto' && view.mainBody){
+ view.mainBody.on('mousedown', this.onAutoEditClick, this);
+ }
+ this.on('celldblclick', this.onCellDblClick, this);
+ }
+ },
+
+ onResize : function(){
+ Ext.grid.EditorGridPanel.superclass.onResize.apply(this, arguments);
+ var ae = this.activeEditor;
+ if(this.editing && ae){
+ ae.realign(true);
+ }
+ },
+
+
+ onCellDblClick : function(g, row, col){
+ this.startEditing(row, col);
+ },
+
+
+ onAutoEditClick : function(e, t){
+ if(e.button !== 0){
+ return;
+ }
+ var row = this.view.findRowIndex(t),
+ col = this.view.findCellIndex(t);
+ if(row !== false && col !== false){
+ this.stopEditing();
+ if(this.selModel.getSelectedCell){
+ var sc = this.selModel.getSelectedCell();
+ if(sc && sc[0] === row && sc[1] === col){
+ this.startEditing(row, col);
+ }
+ }else{
+ if(this.selModel.isSelected(row)){
+ this.startEditing(row, col);
+ }
+ }
+ }
+ },
+
+
+ onEditComplete : function(ed, value, startValue){
+ this.editing = false;
+ this.lastActiveEditor = this.activeEditor;
+ this.activeEditor = null;
+
+ var r = ed.record,
+ field = this.colModel.getDataIndex(ed.col);
+ value = this.postEditValue(value, startValue, r, field);
+ if(this.forceValidation === true || String(value) !== String(startValue)){
+ var e = {
+ grid: this,
+ record: r,
+ field: field,
+ originalValue: startValue,
+ value: value,
+ row: ed.row,
+ column: ed.col,
+ cancel:false
+ };
+ if(this.fireEvent("validateedit", e) !== false && !e.cancel && String(value) !== String(startValue)){
+ r.set(field, e.value);
+ delete e.cancel;
+ this.fireEvent("afteredit", e);
+ }
+ }
+ this.view.focusCell(ed.row, ed.col);
+ },
+
+
+ startEditing : function(row, col){
+ this.stopEditing();
+ if(this.colModel.isCellEditable(col, row)){
+ this.view.ensureVisible(row, col, true);
+ var r = this.store.getAt(row),
+ field = this.colModel.getDataIndex(col),
+ e = {
+ grid: this,
+ record: r,
+ field: field,
+ value: r.data[field],
+ row: row,
+ column: col,
+ cancel:false
+ };
+ if(this.fireEvent("beforeedit", e) !== false && !e.cancel){
+ this.editing = true;
+ var ed = this.colModel.getCellEditor(col, row);
+ if(!ed){
+ return;
+ }
+ if(!ed.rendered){
+ ed.parentEl = this.view.getEditorParent(ed);
+ ed.on({
+ scope: this,
+ render: {
+ fn: function(c){
+ c.field.focus(false, true);
+ },
+ single: true,
+ scope: this
+ },
+ specialkey: function(field, e){
+ this.getSelectionModel().onEditorKey(field, e);
+ },
+ complete: this.onEditComplete,
+ canceledit: this.stopEditing.createDelegate(this, [true])
+ });
+ }
+ Ext.apply(ed, {
+ row : row,
+ col : col,
+ record : r
+ });
+ this.lastEdit = {
+ row: row,
+ col: col
+ };
+ this.activeEditor = ed;
+ if (ed.field.isXType('checkbox')) {
+ ed.allowBlur = false;
+ this.setupCheckbox(ed.field);
+ }
+
+
+ ed.selectSameEditor = (this.activeEditor == this.lastActiveEditor);
+ var v = this.preEditValue(r, field);
+ ed.startEdit(this.view.getCell(row, col).firstChild, Ext.isDefined(v) ? v : '');
+
+
+ (function(){
+ delete ed.selectSameEditor;
+ }).defer(50);
+ }
+ }
+ },
+
+ setupCheckbox: function(field){
+ var me = this,
+ fn = function() {
+ field.el.on('click', me.onCheckClick, me, {single: true});
+ };
+ if (field.rendered) {
+ fn();
+ } else {
+ field.on('render', fn, null, {single: true});
+ }
+ },
+
+ onCheckClick: function(){
+ var ed = this.activeEditor;
+ ed.allowBlur = true;
+ ed.field.focus(false, 10);
+ },
+
+
+ preEditValue : function(r, field){
+ var value = r.data[field];
+ return this.autoEncode && Ext.isString(value) ? Ext.util.Format.htmlDecode(value) : value;
+ },
+
+
+ postEditValue : function(value, originalValue, r, field){
+ return this.autoEncode && Ext.isString(value) ? Ext.util.Format.htmlEncode(value) : value;
+ },
+
+
+ stopEditing : function(cancel){
+ if(this.editing){
+
+ var ae = this.lastActiveEditor = this.activeEditor;
+ if(ae){
+ ae[cancel === true ? 'cancelEdit' : 'completeEdit']();
+ this.view.focusCell(ae.row, ae.col);
+ }
+ this.activeEditor = null;
+ }
+ this.editing = false;
+ }
+});
+Ext.reg('editorgrid', Ext.grid.EditorGridPanel);
+
+Ext.grid.GridEditor = function(field, config){
+ Ext.grid.GridEditor.superclass.constructor.call(this, field, config);
+ field.monitorTab = false;
+};
+
+Ext.extend(Ext.grid.GridEditor, Ext.Editor, {
+ alignment: "tl-tl",
+ autoSize: "width",
+ hideEl : false,
+ cls: "x-small-editor x-grid-editor",
+ shim:false,
+ shadow:false
+});
+Ext.grid.PropertyRecord = Ext.data.Record.create([
+ {name:'name',type:'string'}, 'value'
+]);
+
+
+Ext.grid.PropertyStore = Ext.extend(Ext.util.Observable, {
+
+ constructor : function(grid, source){
+ this.grid = grid;
+ this.store = new Ext.data.Store({
+ recordType : Ext.grid.PropertyRecord
+ });
+ this.store.on('update', this.onUpdate, this);
+ if(source){
+ this.setSource(source);
+ }
+ Ext.grid.PropertyStore.superclass.constructor.call(this);
+ },
+
+
+ setSource : function(o){
+ this.source = o;
+ this.store.removeAll();
+ var data = [];
+ for(var k in o){
+ if(this.isEditableValue(o[k])){
+ data.push(new Ext.grid.PropertyRecord({name: k, value: o[k]}, k));
+ }
+ }
+ this.store.loadRecords({records: data}, {}, true);
+ },
+
+
+ onUpdate : function(ds, record, type){
+ if(type == Ext.data.Record.EDIT){
+ var v = record.data.value;
+ var oldValue = record.modified.value;
+ if(this.grid.fireEvent('beforepropertychange', this.source, record.id, v, oldValue) !== false){
+ this.source[record.id] = v;
+ record.commit();
+ this.grid.fireEvent('propertychange', this.source, record.id, v, oldValue);
+ }else{
+ record.reject();
+ }
+ }
+ },
+
+
+ getProperty : function(row){
+ return this.store.getAt(row);
+ },
+
+
+ isEditableValue: function(val){
+ return Ext.isPrimitive(val) || Ext.isDate(val);
+ },
+
+
+ setValue : function(prop, value, create){
+ var r = this.getRec(prop);
+ if(r){
+ r.set('value', value);
+ this.source[prop] = value;
+ }else if(create){
+
+ this.source[prop] = value;
+ r = new Ext.grid.PropertyRecord({name: prop, value: value}, prop);
+ this.store.add(r);
+
+ }
+ },
+
+
+ remove : function(prop){
+ var r = this.getRec(prop);
+ if(r){
+ this.store.remove(r);
+ delete this.source[prop];
+ }
+ },
+
+
+ getRec : function(prop){
+ return this.store.getById(prop);
+ },
+
+
+ getSource : function(){
+ return this.source;
+ }
+});
+
+
+Ext.grid.PropertyColumnModel = Ext.extend(Ext.grid.ColumnModel, {
+
+ nameText : 'Name',
+ valueText : 'Value',
+ dateFormat : 'm/j/Y',
+ trueText: 'true',
+ falseText: 'false',
+
+ constructor : function(grid, store){
+ var g = Ext.grid,
+ f = Ext.form;
+
+ this.grid = grid;
+ g.PropertyColumnModel.superclass.constructor.call(this, [
+ {header: this.nameText, width:50, sortable: true, dataIndex:'name', id: 'name', menuDisabled:true},
+ {header: this.valueText, width:50, resizable:false, dataIndex: 'value', id: 'value', menuDisabled:true}
+ ]);
+ this.store = store;
+
+ var bfield = new f.Field({
+ autoCreate: {tag: 'select', children: [
+ {tag: 'option', value: 'true', html: this.trueText},
+ {tag: 'option', value: 'false', html: this.falseText}
+ ]},
+ getValue : function(){
+ return this.el.dom.value == 'true';
+ }
+ });
+ this.editors = {
+ 'date' : new g.GridEditor(new f.DateField({selectOnFocus:true})),
+ 'string' : new g.GridEditor(new f.TextField({selectOnFocus:true})),
+ 'number' : new g.GridEditor(new f.NumberField({selectOnFocus:true, style:'text-align:left;'})),
+ 'boolean' : new g.GridEditor(bfield, {
+ autoSize: 'both'
+ })
+ };
+ this.renderCellDelegate = this.renderCell.createDelegate(this);
+ this.renderPropDelegate = this.renderProp.createDelegate(this);
+ },
+
+
+ renderDate : function(dateVal){
+ return dateVal.dateFormat(this.dateFormat);
+ },
+
+
+ renderBool : function(bVal){
+ return this[bVal ? 'trueText' : 'falseText'];
+ },
+
+
+ isCellEditable : function(colIndex, rowIndex){
+ return colIndex == 1;
+ },
+
+
+ getRenderer : function(col){
+ return col == 1 ?
+ this.renderCellDelegate : this.renderPropDelegate;
+ },
+
+
+ renderProp : function(v){
+ return this.getPropertyName(v);
+ },
+
+
+ renderCell : function(val, meta, rec){
+ var renderer = this.grid.customRenderers[rec.get('name')];
+ if(renderer){
+ return renderer.apply(this, arguments);
+ }
+ var rv = val;
+ if(Ext.isDate(val)){
+ rv = this.renderDate(val);
+ }else if(typeof val == 'boolean'){
+ rv = this.renderBool(val);
+ }
+ return Ext.util.Format.htmlEncode(rv);
+ },
+
+
+ getPropertyName : function(name){
+ var pn = this.grid.propertyNames;
+ return pn && pn[name] ? pn[name] : name;
+ },
+
+
+ getCellEditor : function(colIndex, rowIndex){
+ var p = this.store.getProperty(rowIndex),
+ n = p.data.name,
+ val = p.data.value;
+ if(this.grid.customEditors[n]){
+ return this.grid.customEditors[n];
+ }
+ if(Ext.isDate(val)){
+ return this.editors.date;
+ }else if(typeof val == 'number'){
+ return this.editors.number;
+ }else if(typeof val == 'boolean'){
+ return this.editors['boolean'];
+ }else{
+ return this.editors.string;
+ }
+ },
+
+
+ destroy : function(){
+ Ext.grid.PropertyColumnModel.superclass.destroy.call(this);
+ this.destroyEditors(this.editors);
+ this.destroyEditors(this.grid.customEditors);
+ },
+
+ destroyEditors: function(editors){
+ for(var ed in editors){
+ Ext.destroy(editors[ed]);
+ }
+ }
+});
+
+
+Ext.grid.PropertyGrid = Ext.extend(Ext.grid.EditorGridPanel, {
+
+
+
+
+
+
+ enableColumnMove:false,
+ stripeRows:false,
+ trackMouseOver: false,
+ clicksToEdit:1,
+ enableHdMenu : false,
+ viewConfig : {
+ forceFit:true
+ },
+
+
+ initComponent : function(){
+ this.customRenderers = this.customRenderers || {};
+ this.customEditors = this.customEditors || {};
+ this.lastEditRow = null;
+ var store = new Ext.grid.PropertyStore(this);
+ this.propStore = store;
+ var cm = new Ext.grid.PropertyColumnModel(this, store);
+ store.store.sort('name', 'ASC');
+ this.addEvents(
+
+ 'beforepropertychange',
+
+ 'propertychange'
+ );
+ this.cm = cm;
+ this.ds = store.store;
+ Ext.grid.PropertyGrid.superclass.initComponent.call(this);
+
+ this.mon(this.selModel, 'beforecellselect', function(sm, rowIndex, colIndex){
+ if(colIndex === 0){
+ this.startEditing.defer(200, this, [rowIndex, 1]);
+ return false;
+ }
+ }, this);
+ },
+
+
+ onRender : function(){
+ Ext.grid.PropertyGrid.superclass.onRender.apply(this, arguments);
+
+ this.getGridEl().addClass('x-props-grid');
+ },
+
+
+ afterRender: function(){
+ Ext.grid.PropertyGrid.superclass.afterRender.apply(this, arguments);
+ if(this.source){
+ this.setSource(this.source);
+ }
+ },
+
+
+ setSource : function(source){
+ this.propStore.setSource(source);
+ },
+
+
+ getSource : function(){
+ return this.propStore.getSource();
+ },
+
+
+ setProperty : function(prop, value, create){
+ this.propStore.setValue(prop, value, create);
+ },
+
+
+ removeProperty : function(prop){
+ this.propStore.remove(prop);
+ }
+
+
+
+
+
+});
+Ext.reg("propertygrid", Ext.grid.PropertyGrid);
+
+Ext.grid.GroupingView = Ext.extend(Ext.grid.GridView, {
+
+
+ groupByText : 'Group By This Field',
+
+ showGroupsText : 'Show in Groups',
+
+ hideGroupedColumn : false,
+
+ showGroupName : true,
+
+ startCollapsed : false,
+
+ enableGrouping : true,
+
+ enableGroupingMenu : true,
+
+ enableNoGroups : true,
+
+ emptyGroupText : '(None)',
+
+ ignoreAdd : false,
+
+ groupTextTpl : '{text}',
+
+
+ groupMode: 'value',
+
+
+
+
+ cancelEditOnToggle: true,
+
+
+ initTemplates : function(){
+ Ext.grid.GroupingView.superclass.initTemplates.call(this);
+ this.state = {};
+
+ var sm = this.grid.getSelectionModel();
+ sm.on(sm.selectRow ? 'beforerowselect' : 'beforecellselect',
+ this.onBeforeRowSelect, this);
+
+ if(!this.startGroup){
+ this.startGroup = new Ext.XTemplate(
+ '<div id="{groupId}" class="x-grid-group {cls}">',
+ '<div id="{groupId}-hd" class="x-grid-group-hd" style="{style}"><div class="x-grid-group-title">', this.groupTextTpl ,'</div></div>',
+ '<div id="{groupId}-bd" class="x-grid-group-body">'
+ );
+ }
+ this.startGroup.compile();
+
+ if (!this.endGroup) {
+ this.endGroup = '</div></div>';
+ }
+ },
+
+
+ findGroup : function(el){
+ return Ext.fly(el).up('.x-grid-group', this.mainBody.dom);
+ },
+
+
+ getGroups : function(){
+ return this.hasRows() ? this.mainBody.dom.childNodes : [];
+ },
+
+
+ onAdd : function(ds, records, index) {
+ if (this.canGroup() && !this.ignoreAdd) {
+ var ss = this.getScrollState();
+ this.fireEvent('beforerowsinserted', ds, index, index + (records.length-1));
+ this.refresh();
+ this.restoreScroll(ss);
+ this.fireEvent('rowsinserted', ds, index, index + (records.length-1));
+ } else if (!this.canGroup()) {
+ Ext.grid.GroupingView.superclass.onAdd.apply(this, arguments);
+ }
+ },
+
+
+ onRemove : function(ds, record, index, isUpdate){
+ Ext.grid.GroupingView.superclass.onRemove.apply(this, arguments);
+ var g = document.getElementById(record._groupId);
+ if(g && g.childNodes[1].childNodes.length < 1){
+ Ext.removeNode(g);
+ }
+ this.applyEmptyText();
+ },
+
+
+ refreshRow : function(record){
+ if(this.ds.getCount()==1){
+ this.refresh();
+ }else{
+ this.isUpdating = true;
+ Ext.grid.GroupingView.superclass.refreshRow.apply(this, arguments);
+ this.isUpdating = false;
+ }
+ },
+
+
+ beforeMenuShow : function(){
+ var item, items = this.hmenu.items, disabled = this.cm.config[this.hdCtxIndex].groupable === false;
+ if((item = items.get('groupBy'))){
+ item.setDisabled(disabled);
+ }
+ if((item = items.get('showGroups'))){
+ item.setDisabled(disabled);
+ item.setChecked(this.canGroup(), true);
+ }
+ },
+
+
+ renderUI : function(){
+ var markup = Ext.grid.GroupingView.superclass.renderUI.call(this);
+
+ if(this.enableGroupingMenu && this.hmenu){
+ this.hmenu.add('-',{
+ itemId:'groupBy',
+ text: this.groupByText,
+ handler: this.onGroupByClick,
+ scope: this,
+ iconCls:'x-group-by-icon'
+ });
+ if(this.enableNoGroups){
+ this.hmenu.add({
+ itemId:'showGroups',
+ text: this.showGroupsText,
+ checked: true,
+ checkHandler: this.onShowGroupsClick,
+ scope: this
+ });
+ }
+ this.hmenu.on('beforeshow', this.beforeMenuShow, this);
+ }
+ return markup;
+ },
+
+ processEvent: function(name, e){
+ Ext.grid.GroupingView.superclass.processEvent.call(this, name, e);
+ var hd = e.getTarget('.x-grid-group-hd', this.mainBody);
+ if(hd){
+
+ var field = this.getGroupField(),
+ prefix = this.getPrefix(field),
+ groupValue = hd.id.substring(prefix.length),
+ emptyRe = new RegExp('gp-' + Ext.escapeRe(field) + '--hd');
+
+
+ groupValue = groupValue.substr(0, groupValue.length - 3);
+
+
+ if(groupValue || emptyRe.test(hd.id)){
+ this.grid.fireEvent('group' + name, this.grid, field, groupValue, e);
+ }
+ if(name == 'mousedown' && e.button == 0){
+ this.toggleGroup(hd.parentNode);
+ }
+ }
+
+ },
+
+
+ onGroupByClick : function(){
+ var grid = this.grid;
+ this.enableGrouping = true;
+ grid.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));
+ grid.fireEvent('groupchange', grid, grid.store.getGroupState());
+ this.beforeMenuShow();
+ this.refresh();
+ },
+
+
+ onShowGroupsClick : function(mi, checked){
+ this.enableGrouping = checked;
+ if(checked){
+ this.onGroupByClick();
+ }else{
+ this.grid.store.clearGrouping();
+ this.grid.fireEvent('groupchange', this, null);
+ }
+ },
+
+
+ toggleRowIndex : function(rowIndex, expanded){
+ if(!this.canGroup()){
+ return;
+ }
+ var row = this.getRow(rowIndex);
+ if(row){
+ this.toggleGroup(this.findGroup(row), expanded);
+ }
+ },
+
+
+ toggleGroup : function(group, expanded){
+ var gel = Ext.get(group),
+ id = Ext.util.Format.htmlEncode(gel.id);
+
+ expanded = Ext.isDefined(expanded) ? expanded : gel.hasClass('x-grid-group-collapsed');
+ if(this.state[id] !== expanded){
+ if (this.cancelEditOnToggle !== false) {
+ this.grid.stopEditing(true);
+ }
+ this.state[id] = expanded;
+ gel[expanded ? 'removeClass' : 'addClass']('x-grid-group-collapsed');
+ }
+ },
+
+
+ toggleAllGroups : function(expanded){
+ var groups = this.getGroups();
+ for(var i = 0, len = groups.length; i < len; i++){
+ this.toggleGroup(groups[i], expanded);
+ }
+ },
+
+
+ expandAllGroups : function(){
+ this.toggleAllGroups(true);
+ },
+
+
+ collapseAllGroups : function(){
+ this.toggleAllGroups(false);
+ },
+
+
+ getGroup : function(v, r, groupRenderer, rowIndex, colIndex, ds){
+ var column = this.cm.config[colIndex],
+ g = groupRenderer ? groupRenderer.call(column.scope, v, {}, r, rowIndex, colIndex, ds) : String(v);
+ if(g === '' || g === '&#160;'){
+ g = column.emptyGroupText || this.emptyGroupText;
+ }
+ return g;
+ },
+
+
+ getGroupField : function(){
+ return this.grid.store.getGroupState();
+ },
+
+
+ afterRender : function(){
+ if(!this.ds || !this.cm){
+ return;
+ }
+ Ext.grid.GroupingView.superclass.afterRender.call(this);
+ if(this.grid.deferRowRender){
+ this.updateGroupWidths();
+ }
+ },
+
+ afterRenderUI: function () {
+ Ext.grid.GroupingView.superclass.afterRenderUI.call(this);
+
+ if (this.enableGroupingMenu && this.hmenu) {
+ this.hmenu.add('-',{
+ itemId:'groupBy',
+ text: this.groupByText,
+ handler: this.onGroupByClick,
+ scope: this,
+ iconCls:'x-group-by-icon'
+ });
+
+ if (this.enableNoGroups) {
+ this.hmenu.add({
+ itemId:'showGroups',
+ text: this.showGroupsText,
+ checked: true,
+ checkHandler: this.onShowGroupsClick,
+ scope: this
+ });
+ }
+
+ this.hmenu.on('beforeshow', this.beforeMenuShow, this);
+ }
+ },
+
+
+ renderRows : function(){
+ var groupField = this.getGroupField();
+ var eg = !!groupField;
+
+ if(this.hideGroupedColumn) {
+ var colIndex = this.cm.findColumnIndex(groupField),
+ hasLastGroupField = Ext.isDefined(this.lastGroupField);
+ if(!eg && hasLastGroupField){
+ this.mainBody.update('');
+ this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField), false);
+ delete this.lastGroupField;
+ }else if (eg && !hasLastGroupField){
+ this.lastGroupField = groupField;
+ this.cm.setHidden(colIndex, true);
+ }else if (eg && hasLastGroupField && groupField !== this.lastGroupField) {
+ this.mainBody.update('');
+ var oldIndex = this.cm.findColumnIndex(this.lastGroupField);
+ this.cm.setHidden(oldIndex, false);
+ this.lastGroupField = groupField;
+ this.cm.setHidden(colIndex, true);
+ }
+ }
+ return Ext.grid.GroupingView.superclass.renderRows.apply(
+ this, arguments);
+ },
+
+
+ doRender : function(cs, rs, ds, startRow, colCount, stripe){
+ if(rs.length < 1){
+ return '';
+ }
+
+ if(!this.canGroup() || this.isUpdating){
+ return Ext.grid.GroupingView.superclass.doRender.apply(this, arguments);
+ }
+
+ var groupField = this.getGroupField(),
+ colIndex = this.cm.findColumnIndex(groupField),
+ g,
+ gstyle = 'width:' + this.getTotalWidth() + ';',
+ cfg = this.cm.config[colIndex],
+ groupRenderer = cfg.groupRenderer || cfg.renderer,
+ prefix = this.showGroupName ? (cfg.groupName || cfg.header)+': ' : '',
+ groups = [],
+ curGroup, i, len, gid;
+
+ for(i = 0, len = rs.length; i < len; i++){
+ var rowIndex = startRow + i,
+ r = rs[i],
+ gvalue = r.data[groupField];
+
+ g = this.getGroup(gvalue, r, groupRenderer, rowIndex, colIndex, ds);
+ if(!curGroup || curGroup.group != g){
+ gid = this.constructId(gvalue, groupField, colIndex);
+
+
+ this.state[gid] = !(Ext.isDefined(this.state[gid]) ? !this.state[gid] : this.startCollapsed);
+ curGroup = {
+ group: g,
+ gvalue: gvalue,
+ text: prefix + g,
+ groupId: gid,
+ startRow: rowIndex,
+ rs: [r],
+ cls: this.state[gid] ? '' : 'x-grid-group-collapsed',
+ style: gstyle
+ };
+ groups.push(curGroup);
+ }else{
+ curGroup.rs.push(r);
+ }
+ r._groupId = gid;
+ }
+
+ var buf = [];
+ for(i = 0, len = groups.length; i < len; i++){
+ g = groups[i];
+ this.doGroupStart(buf, g, cs, ds, colCount);
+ buf[buf.length] = Ext.grid.GroupingView.superclass.doRender.call(
+ this, cs, g.rs, ds, g.startRow, colCount, stripe);
+
+ this.doGroupEnd(buf, g, cs, ds, colCount);
+ }
+ return buf.join('');
+ },
+
+
+ getGroupId : function(value){
+ var field = this.getGroupField();
+ return this.constructId(value, field, this.cm.findColumnIndex(field));
+ },
+
+
+ constructId : function(value, field, idx){
+ var cfg = this.cm.config[idx],
+ groupRenderer = cfg.groupRenderer || cfg.renderer,
+ val = (this.groupMode == 'value') ? value : this.getGroup(value, {data:{}}, groupRenderer, 0, idx, this.ds);
+
+ return this.getPrefix(field) + Ext.util.Format.htmlEncode(val);
+ },
+
+
+ canGroup : function(){
+ return this.enableGrouping && !!this.getGroupField();
+ },
+
+
+ getPrefix: function(field){
+ return this.grid.getGridEl().id + '-gp-' + field + '-';
+ },
+
+
+ doGroupStart : function(buf, g, cs, ds, colCount){
+ buf[buf.length] = this.startGroup.apply(g);
+ },
+
+
+ doGroupEnd : function(buf, g, cs, ds, colCount){
+ buf[buf.length] = this.endGroup;
+ },
+
+
+ getRows : function(){
+ if(!this.canGroup()){
+ return Ext.grid.GroupingView.superclass.getRows.call(this);
+ }
+ var r = [],
+ gs = this.getGroups(),
+ g,
+ i = 0,
+ len = gs.length,
+ j,
+ jlen;
+ for(; i < len; ++i){
+ g = gs[i].childNodes[1];
+ if(g){
+ g = g.childNodes;
+ for(j = 0, jlen = g.length; j < jlen; ++j){
+ r[r.length] = g[j];
+ }
+ }
+ }
+ return r;
+ },
+
+
+ updateGroupWidths : function(){
+ if(!this.canGroup() || !this.hasRows()){
+ return;
+ }
+ var tw = Math.max(this.cm.getTotalWidth(), this.el.dom.offsetWidth-this.getScrollOffset()) +'px';
+ var gs = this.getGroups();
+ for(var i = 0, len = gs.length; i < len; i++){
+ gs[i].firstChild.style.width = tw;
+ }
+ },
+
+
+ onColumnWidthUpdated : function(col, w, tw){
+ Ext.grid.GroupingView.superclass.onColumnWidthUpdated.call(this, col, w, tw);
+ this.updateGroupWidths();
+ },
+
+
+ onAllColumnWidthsUpdated : function(ws, tw){
+ Ext.grid.GroupingView.superclass.onAllColumnWidthsUpdated.call(this, ws, tw);
+ this.updateGroupWidths();
+ },
+
+
+ onColumnHiddenUpdated : function(col, hidden, tw){
+ Ext.grid.GroupingView.superclass.onColumnHiddenUpdated.call(this, col, hidden, tw);
+ this.updateGroupWidths();
+ },
+
+
+ onLayout : function(){
+ this.updateGroupWidths();
+ },
+
+
+ onBeforeRowSelect : function(sm, rowIndex){
+ this.toggleRowIndex(rowIndex, true);
+ }
+});
+
+Ext.grid.GroupingView.GROUP_ID = 1000;
diff --git a/deluge/ui/web/js/extjs/ext-all.js b/deluge/ui/web/js/extjs/ext-all.js
new file mode 100644
index 0000000..5f3e5aa
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-all.js
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 3.4
+
+Copyright (c) 2011-2013 Sencha Inc
+
+Contact: http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2013-04-03 15:07:25
+*/
+(function(){var h=Ext.util,j=Ext.each,g=true,i=false;h.Observable=function(){var k=this,l=k.events;if(k.listeners){k.on(k.listeners);delete k.listeners}k.events=l||{}};h.Observable.prototype={filterOptRe:/^(?:scope|delay|buffer|single)$/,fireEvent:function(){var k=Array.prototype.slice.call(arguments,0),m=k[0].toLowerCase(),n=this,l=g,p=n.events[m],s,o,r;if(n.eventsSuspended===g){if(o=n.eventQueue){o.push(k)}}else{if(typeof p=="object"){if(p.bubble){if(p.fire.apply(p,k.slice(1))===i){return i}r=n.getBubbleTarget&&n.getBubbleTarget();if(r&&r.enableBubble){s=r.events[m];if(!s||typeof s!="object"||!s.bubble){r.enableBubble(m)}return r.fireEvent.apply(r,k)}}else{k.shift();l=p.fire.apply(p,k)}}}return l},addListener:function(k,m,l,r){var n=this,q,s,p;if(typeof k=="object"){r=k;for(q in r){s=r[q];if(!n.filterOptRe.test(q)){n.addListener(q,s.fn||s,s.scope||r.scope,s.fn?s:r)}}}else{k=k.toLowerCase();p=n.events[k]||g;if(typeof p=="boolean"){n.events[k]=p=new h.Event(n,k)}p.addListener(m,l,typeof r=="object"?r:{})}},removeListener:function(k,m,l){var n=this.events[k.toLowerCase()];if(typeof n=="object"){n.removeListener(m,l)}},purgeListeners:function(){var m=this.events,k,l;for(l in m){k=m[l];if(typeof k=="object"){k.clearListeners()}}},addEvents:function(n){var m=this;m.events=m.events||{};if(typeof n=="string"){var k=arguments,l=k.length;while(l--){m.events[k[l]]=m.events[k[l]]||g}}else{Ext.applyIf(m.events,n)}},hasListener:function(k){var l=this.events[k.toLowerCase()];return typeof l=="object"&&l.listeners.length>0},suspendEvents:function(k){this.eventsSuspended=g;if(k&&!this.eventQueue){this.eventQueue=[]}},resumeEvents:function(){var k=this,l=k.eventQueue||[];k.eventsSuspended=i;delete k.eventQueue;j(l,function(m){k.fireEvent.apply(k,m)})}};var d=h.Observable.prototype;d.on=d.addListener;d.un=d.removeListener;h.Observable.releaseCapture=function(k){k.fireEvent=d.fireEvent};function e(l,m,k){return function(){if(m.target==arguments[0]){l.apply(k,Array.prototype.slice.call(arguments,0))}}}function b(n,p,k,m){k.task=new h.DelayedTask();return function(){k.task.delay(p.buffer,n,m,Array.prototype.slice.call(arguments,0))}}function c(m,n,l,k){return function(){n.removeListener(l,k);return m.apply(k,arguments)}}function a(n,p,k,m){return function(){var l=new h.DelayedTask(),o=Array.prototype.slice.call(arguments,0);if(!k.tasks){k.tasks=[]}k.tasks.push(l);l.delay(p.delay||10,function(){k.tasks.remove(l);n.apply(m,o)},m)}}h.Event=function(l,k){this.name=k;this.obj=l;this.listeners=[]};h.Event.prototype={addListener:function(o,n,m){var p=this,k;n=n||p.obj;if(!p.isListening(o,n)){k=p.createListener(o,n,m);if(p.firing){p.listeners=p.listeners.slice(0)}p.listeners.push(k)}},createListener:function(p,n,q){q=q||{};n=n||this.obj;var k={fn:p,scope:n,options:q},m=p;if(q.target){m=e(m,q,n)}if(q.delay){m=a(m,q,k,n)}if(q.single){m=c(m,this,p,n)}if(q.buffer){m=b(m,q,k,n)}k.fireFn=m;return k},findListener:function(o,n){var p=this.listeners,m=p.length,k;n=n||this.obj;while(m--){k=p[m];if(k){if(k.fn==o&&k.scope==n){return m}}}return -1},isListening:function(l,k){return this.findListener(l,k)!=-1},removeListener:function(r,q){var p,m,n,s=this,o=i;if((p=s.findListener(r,q))!=-1){if(s.firing){s.listeners=s.listeners.slice(0)}m=s.listeners[p];if(m.task){m.task.cancel();delete m.task}n=m.tasks&&m.tasks.length;if(n){while(n--){m.tasks[n].cancel()}delete m.tasks}s.listeners.splice(p,1);o=g}return o},clearListeners:function(){var n=this,k=n.listeners,m=k.length;while(m--){n.removeListener(k[m].fn,k[m].scope)}},fire:function(){var q=this,p=q.listeners,k=p.length,o=0,m;if(k>0){q.firing=g;var n=Array.prototype.slice.call(arguments,0);for(;o<k;o++){m=p[o];if(m&&m.fireFn.apply(m.scope||q.obj||window,n)===i){return(q.firing=i)}}}q.firing=i;return g}}})();Ext.DomHelper=function(){var x=null,k=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,m=/^table|tbody|tr|td$/i,d=/tag|children|cn|html$/i,t=/td|tr|tbody/i,o=/([a-z0-9-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,v=/end/i,r,n="afterbegin",p="afterend",c="beforebegin",q="beforeend",a="<table>",i="</table>",b=a+"<tbody>",j="</tbody>"+i,l=b+"<tr>",w="</tr>"+j;function h(B,D,C,E,A,y){var z=r.insertHtml(E,Ext.getDom(B),u(D));return C?Ext.get(z,true):z}function u(D){var z="",y,C,B,E;if(typeof D=="string"){z=D}else{if(Ext.isArray(D)){for(var A=0;A<D.length;A++){if(D[A]){z+=u(D[A])}}}else{z+="<"+(D.tag=D.tag||"div");for(y in D){C=D[y];if(!d.test(y)){if(typeof C=="object"){z+=" "+y+'="';for(B in C){z+=B+":"+C[B]+";"}z+='"'}else{z+=" "+({cls:"class",htmlFor:"for"}[y]||y)+'="'+C+'"'}}}if(k.test(D.tag)){z+="/>"}else{z+=">";if((E=D.children||D.cn)){z+=u(E)}else{if(D.html){z+=D.html}}z+="</"+D.tag+">"}}}return z}function g(F,C,B,D){x.innerHTML=[C,B,D].join("");var y=-1,A=x,z;while(++y<F){A=A.firstChild}if(z=A.nextSibling){var E=document.createDocumentFragment();while(A){z=A.nextSibling;E.appendChild(A);A=z}A=E}return A}function e(y,z,B,A){var C,D;x=x||document.createElement("div");if(y=="td"&&(z==n||z==q)||!t.test(y)&&(z==c||z==p)){return}D=z==c?B:z==p?B.nextSibling:z==n?B.firstChild:null;if(z==c||z==p){B=B.parentNode}if(y=="td"||(y=="tr"&&(z==q||z==n))){C=g(4,l,A,w)}else{if((y=="tbody"&&(z==q||z==n))||(y=="tr"&&(z==c||z==p))){C=g(3,b,A,j)}else{C=g(2,a,A,i)}}B.insertBefore(C,D);return C}function s(A){var D=document.createElement("div"),y=document.createDocumentFragment(),z=0,B,C;D.innerHTML=A;C=D.childNodes;B=C.length;for(;z<B;z++){y.appendChild(C[z].cloneNode(true))}return y}r={markup:function(y){return u(y)},applyStyles:function(y,z){if(z){var A;y=Ext.fly(y);if(typeof z=="function"){z=z.call()}if(typeof z=="string"){o.lastIndex=0;while((A=o.exec(z))){y.setStyle(A[1],A[2])}}else{if(typeof z=="object"){y.setStyle(z)}}}},insertHtml:function(D,y,E){var B={},A,F,C,G,H,z;D=D.toLowerCase();B[c]=["BeforeBegin","previousSibling"];B[p]=["AfterEnd","nextSibling"];if(y.insertAdjacentHTML){if(m.test(y.tagName)&&(z=e(y.tagName.toLowerCase(),D,y,E))){return z}B[n]=["AfterBegin","firstChild"];B[q]=["BeforeEnd","lastChild"];if((A=B[D])){y.insertAdjacentHTML(A[0],E);return y[A[1]]}}else{F=y.ownerDocument.createRange();G="setStart"+(v.test(D)?"After":"Before");if(B[D]){F[G](y);if(!F.createContextualFragment){H=s(E)}else{H=F.createContextualFragment(E)}y.parentNode.insertBefore(H,D==c?y:y.nextSibling);return y[(D==c?"previous":"next")+"Sibling"]}else{C=(D==n?"first":"last")+"Child";if(y.firstChild){F[G](y[C]);if(!F.createContextualFragment){H=s(E)}else{H=F.createContextualFragment(E)}if(D==n){y.insertBefore(H,y.firstChild)}else{y.appendChild(H)}}else{y.innerHTML=E}return y[C]}}throw'Illegal insertion point -> "'+D+'"'},insertBefore:function(y,A,z){return h(y,A,z,c)},insertAfter:function(y,A,z){return h(y,A,z,p,"nextSibling")},insertFirst:function(y,A,z){return h(y,A,z,n,"firstChild")},append:function(y,A,z){return h(y,A,z,q,"",true)},overwrite:function(y,A,z){y=Ext.getDom(y);y.innerHTML=u(A);return z?Ext.get(y.firstChild):y.firstChild},createHtml:u};return r}();Ext.Template=function(h){var j=this,c=arguments,e=[],d;if(Ext.isArray(h)){h=h.join("")}else{if(c.length>1){for(var g=0,b=c.length;g<b;g++){d=c[g];if(typeof d=="object"){Ext.apply(j,d)}else{e.push(d)}}h=e.join("")}}j.html=h;if(j.compiled){j.compile()}};Ext.Template.prototype={re:/\{([\w\-]+)\}/g,applyTemplate:function(a){var b=this;return b.compiled?b.compiled(a):b.html.replace(b.re,function(c,d){return a[d]!==undefined?a[d]:""})},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},compile:function(){var me=this,sep=Ext.isGecko?"+":",";function fn(m,name){name="values['"+name+"']";return"'"+sep+"("+name+" == undefined ? '' : "+name+")"+sep+"'"}eval("this.compiled = function(values){ return "+(Ext.isGecko?"'":"['")+me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+(Ext.isGecko?"';};":"'].join('');};"));return me},insertFirst:function(b,a,c){return this.doInsert("afterBegin",b,a,c)},insertBefore:function(b,a,c){return this.doInsert("beforeBegin",b,a,c)},insertAfter:function(b,a,c){return this.doInsert("afterEnd",b,a,c)},append:function(b,a,c){return this.doInsert("beforeEnd",b,a,c)},doInsert:function(c,e,b,a){e=Ext.getDom(e);var d=Ext.DomHelper.insertHtml(c,e,this.applyTemplate(b));return a?Ext.get(d,true):d},overwrite:function(b,a,c){b=Ext.getDom(b);b.innerHTML=this.applyTemplate(a);return c?Ext.get(b.firstChild,true):b.firstChild}};Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.Template.from=function(b,a){b=Ext.getDom(b);return new Ext.Template(b.value||b.innerHTML,a||"")};Ext.DomQuery=function(){var cache={},simpleCache={},valueCache={},nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,isIE=window.ActiveXObject?true:false,key=30803;eval("var batch = 30803;");function child(parent,index){var i=0,n=parent.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null}function next(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n}function prev(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n}function children(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}function byClassName(nodeSet,cls){if(!cls){return nodeSet}var result=[],ri=-1;for(var i=0,ci;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!=-1){result[++ri]=ci}}return result}function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs;if(!ns){return result}tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){for(var i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(var j=0,ci;ci=cs[j];j++){result[++ri]=ci}}}else{if(mode=="/"||mode==">"){var utag=tagName.toUpperCase();for(var i=0,ni,cn;ni=ns[i];i++){cn=ni.childNodes;for(var j=0,cj;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){if(b.slice){return a.concat(b)}for(var i=0,l=b.length;i<l;i++){a[a.length]=b[i]}return a}function byTag(cs,tagName){if(cs.tagName||cs==document){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1;tagName=tagName.toLowerCase();for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){if(cs.tagName||cs==document){cs=[cs]}if(!id){return cs}var result=[],ri=-1;for(var i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=Ext.DomQuery.operators[op],a,xml,hasXml;for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType!=1){continue}if(!hasXml){xml=Ext.DomQuery.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=Ext.DomQuery.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}return result}function byPseudo(cs,name,value){return Ext.DomQuery.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(var i=1,len=cs.length;i<len;i++){var c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(var i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup")}return r}function nodup(cs){if(!cs){return[]}var len=cs.length,c,i,r=cs,cj,ri=-1;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}var d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(var j=0;j<i;j++){r[++ri]=cs[j]}for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[++ri]=cj}}return r}}return r}function quickDiffIEXml(c1,c2){var d=++key,r=[];for(var i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(var i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(var i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[];if(!len1){return c2}if(isIE&&typeof c1[0].selectSingleNode!="undefined"){return quickDiffIEXml(c1,c2)}for(var i=0;i<len1;i++){c1[i]._qdiff=d}for(var i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}return r}function quickId(ns,mode,root,id){if(ns==root){var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,id)}return{getStyle:function(el,name){return Ext.fly(el).getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],mode,lastPath,matchers=Ext.DomQuery.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';path=path.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(path&&lastPath!=path){lastPath=path;var tokenMatch=path.match(tagTokenRe);if(type=="select"){if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}else{if(path.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}}while(!(modeMatch=path.match(modeRe))){var matched=false;for(var j=0;j<matchersLn;j++){var t=matchers[j];var m=path.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});path=path.replace(m[0],"");matched=true;break}}if(!matched){throw'Error parsing selector, parsing failed at "'+path+'"'}}if(modeMatch[1]){fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";';path=path.replace(modeMatch[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},jsSelect:function(path,root,type){root=root||document;if(typeof root=="string"){root=document.getElementById(root)}var paths=path.split(","),results=[];for(var i=0,len=paths.length;i<len;i++){var subPath=paths[i].replace(trimRe,"");if(!cache[subPath]){cache[subPath]=Ext.DomQuery.compile(subPath);if(!cache[subPath]){throw subPath+" is not a valid selector"}}var result=cache[subPath](root);if(result&&result!=document){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:document.querySelectorAll?function(path,root,type){root=root||document;if(!Ext.DomQuery.isXml(root)){try{var cs=root.querySelectorAll(path);return Ext.toArray(cs)}catch(ex){}}return Ext.DomQuery.jsSelect.call(this,path,root,type)}:function(path,root,type){return Ext.DomQuery.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el),result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple")}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-]+)/,select:'n = byClassName(n, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?(["']?)(.*?)\4)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{5}", "{3}", "{1}");'},{re:/^#([\w\-]+)/,select:'n = byId(n, "{1}");'},{re:/^@([\w\-]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)==0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0;for(var i=0,n;n=c[i];i++){var pn=n.parentNode;if(batch!=pn._batch){var j=0;for(var cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l==0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f==0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var cns=ci.childNodes,j=0,cn,empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if((ci.textContent||ci.innerText||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.checked==true){r[++ri]=ci}}return r},not:function(c,ss){return Ext.DomQuery.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s;for(var i=0,ci;ci=c[i];i++){for(var j=0;s=ss[j];j++){if(Ext.DomQuery.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=Ext.DomQuery.select,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r}}}}();Ext.query=Ext.DomQuery.select;Ext.util.DelayedTask=function(d,c,a){var e=this,g,b=function(){clearInterval(g);g=null;d.apply(c,a||[])};e.delay=function(i,k,j,h){e.cancel();d=k||d;c=j||c;a=h||a;g=setInterval(b,i)};e.cancel=function(){if(g){clearInterval(g);g=null}}};(function(){var h=document;Ext.Element=function(l,m){var n=typeof l=="string"?h.getElementById(l):l,o;if(!n){return null}o=n.id;if(!m&&o&&Ext.elCache[o]){return Ext.elCache[o].el}this.dom=n;this.id=o||Ext.id(n)};var d=Ext.DomHelper,e=Ext.Element,a=Ext.elCache;e.prototype={set:function(q,m){var n=this.dom,l,p,m=(m!==false)&&!!n.setAttribute;for(l in q){if(q.hasOwnProperty(l)){p=q[l];if(l=="style"){d.applyStyles(n,p)}else{if(l=="cls"){n.className=p}else{if(m){n.setAttribute(l,p)}else{n[l]=p}}}}}return this},defaultUnit:"px",is:function(l){return Ext.DomQuery.is(this.dom,l)},focus:function(o,n){var l=this,n=n||l.dom;try{if(Number(o)){l.focus.defer(o,null,[null,n])}else{n.focus()}}catch(m){}return l},blur:function(){try{this.dom.blur()}catch(l){}return this},getValue:function(l){var m=this.dom.value;return l?parseInt(m,10):m},addListener:function(l,o,n,m){Ext.EventManager.on(this.dom,l,o,n||this,m);return this},removeListener:function(l,n,m){Ext.EventManager.removeListener(this.dom,l,n,m||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this.dom);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this,true);return this},addUnits:function(l){if(l===""||l=="auto"||l===undefined){l=l||""}else{if(!isNaN(l)||!i.test(l)){l=l+(this.defaultUnit||"px")}}return l},load:function(m,n,l){Ext.Ajax.request(Ext.apply({params:n,url:m.url||m,callback:l,el:this.dom,indicatorText:m.indicatorText||""},Ext.isObject(m)?m:{}));return this},isBorderBox:function(){return Ext.isBorderBox||Ext.isForcedBorderBox||g[(this.dom.tagName||"").toLowerCase()]},remove:function(){var l=this,m=l.dom;if(m){delete l.dom;Ext.removeNode(m)}},hover:function(m,l,o,n){var p=this;p.on("mouseenter",m,o||p.dom,n);p.on("mouseleave",l,o||p.dom,n);return p},contains:function(l){return !l?false:Ext.lib.Dom.isAncestor(this.dom,l.dom?l.dom:l)},getAttributeNS:function(m,l){return this.getAttribute(l,m)},getAttribute:(function(){var p=document.createElement("table"),o=false,m="getAttribute" in p,l=/undefined|unknown/;if(m){try{p.getAttribute("ext:qtip")}catch(n){o=true}return function(q,s){var r=this.dom,t;if(r.getAttributeNS){t=r.getAttributeNS(s,q)||null}if(t==null){if(s){if(o&&r.tagName.toUpperCase()=="TABLE"){try{t=r.getAttribute(s+":"+q)}catch(u){t=""}}else{t=r.getAttribute(s+":"+q)}}else{t=r.getAttribute(q)||r[q]}}return t||""}}else{return function(q,s){var r=this.om,u,t;if(s){t=r[s+":"+q];u=l.test(typeof t)?undefined:t}else{u=r[q]}return u||""}}p=null})(),update:function(l){if(this.dom){this.dom.innerHTML=l}return this}};var k=e.prototype;e.addMethods=function(l){Ext.apply(k,l)};k.on=k.addListener;k.un=k.removeListener;k.autoBoxAdjust=true;var i=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,c;e.get=function(m){var l,p,o;if(!m){return null}if(typeof m=="string"){if(!(p=h.getElementById(m))){return null}if(a[m]&&a[m].el){l=a[m].el;l.dom=p}else{l=e.addToCache(new e(p))}return l}else{if(m.tagName){if(!(o=m.id)){o=Ext.id(m)}if(a[o]&&a[o].el){l=a[o].el;l.dom=m}else{l=e.addToCache(new e(m))}return l}else{if(m instanceof e){if(m!=c){if(Ext.isIE&&(m.id==undefined||m.id=="")){m.dom=m.dom}else{m.dom=h.getElementById(m.id)||m.dom}}return m}else{if(m.isComposite){return m}else{if(Ext.isArray(m)){return e.select(m)}else{if(m==h){if(!c){var n=function(){};n.prototype=e.prototype;c=new n();c.dom=h}return c}}}}}}return null};e.addToCache=function(l,m){m=m||l.id;a[m]={el:l,data:{},events:{}};return l};e.data=function(m,l,n){m=e.get(m);if(!m){return null}var o=a[m.id].data;if(arguments.length==2){return o[l]}else{return(o[l]=n)}};function j(){if(!Ext.enableGarbageCollector){clearInterval(e.collectorThreadId)}else{var l,n,q,p;for(l in a){p=a[l];if(p.skipGC){Ext.EventManager.removeFromSpecialCache(p.el);continue}n=p.el;q=n.dom;if(!q||!q.parentNode||(!q.offsetParent&&!h.getElementById(l))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(q)}delete a[l]}}if(Ext.isIE){var m={};for(l in a){m[l]=a[l]}a=Ext.elCache=m}}}e.collectorThreadId=setInterval(j,30000);var b=function(){};b.prototype=e.prototype;e.Flyweight=function(l){this.dom=l};e.Flyweight.prototype=new b();e.Flyweight.prototype.isFlyweight=true;e._flyweights={};e.fly=function(n,l){var m=null;l=l||"_global";if(n=Ext.getDom(n)){(e._flyweights[l]=e._flyweights[l]||new e.Flyweight()).dom=n;m=e._flyweights[l]}return m};Ext.get=e.get;Ext.fly=e.fly;var g=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){g.button=1}})();Ext.Element.addMethods(function(){var d="parentNode",b="nextSibling",c="previousSibling",e=Ext.DomQuery,a=Ext.get;return{findParent:function(m,l,h){var j=this.dom,g=document.body,k=0,i;if(Ext.isGecko&&Object.prototype.toString.call(j)=="[object XULElement]"){return null}l=l||50;if(isNaN(l)){i=Ext.getDom(l);l=Number.MAX_VALUE}while(j&&j.nodeType==1&&k<l&&j!=g&&j!=i){if(e.is(j,m)){return h?a(j):j}k++;j=j.parentNode}return null},findParentNode:function(j,i,g){var h=Ext.fly(this.dom.parentNode,"_internal");return h?h.findParent(j,i,g):null},up:function(h,g){return this.findParentNode(h,g,true)},select:function(g){return Ext.Element.select(g,this.dom)},query:function(g){return e.select(g,this.dom)},child:function(g,h){var i=e.selectNode(g,this.dom);return h?i:a(i)},down:function(g,h){var i=e.selectNode(" > "+g,this.dom);return h?i:a(i)},parent:function(g,h){return this.matchNode(d,d,g,h)},next:function(g,h){return this.matchNode(b,b,g,h)},prev:function(g,h){return this.matchNode(c,c,g,h)},first:function(g,h){return this.matchNode(b,"firstChild",g,h)},last:function(g,h){return this.matchNode(c,"lastChild",g,h)},matchNode:function(h,k,g,i){var j=this.dom[k];while(j){if(j.nodeType==1&&(!g||e.is(j,g))){return !i?a(j):j}j=j[h]}return null}}}());Ext.Element.addMethods(function(){var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;return{appendChild:function(d){return a(d).appendTo(this)},appendTo:function(d){c(d).appendChild(this.dom);return this},insertBefore:function(d){(d=c(d)).parentNode.insertBefore(this.dom,d);return this},insertAfter:function(d){(d=c(d)).parentNode.insertBefore(this.dom,d.nextSibling);return this},insertFirst:function(e,d){e=e||{};if(e.nodeType||e.dom||typeof e=="string"){e=c(e);this.dom.insertBefore(e,this.dom.firstChild);return !d?a(e):e}else{return this.createChild(e,this.dom.firstChild,d)}},replace:function(d){d=a(d);this.insertBefore(d);d.remove();return this},replaceWith:function(d){var e=this;if(d.nodeType||d.dom||typeof d=="string"){d=c(d);e.dom.parentNode.insertBefore(d,e.dom)}else{d=b.insertBefore(e.dom,d)}delete Ext.elCache[e.id];Ext.removeNode(e.dom);e.id=Ext.id(e.dom=d);Ext.Element.addToCache(e.isFlyweight?new Ext.Element(e.dom):e);return e},createChild:function(e,d,g){e=e||{tag:"div"};return d?b.insertBefore(d,e,g!==true):b[!this.dom.firstChild?"overwrite":"append"](this.dom,e,g!==true)},wrap:function(d,e){var g=b.insertBefore(this.dom,d||{tag:"div"},!e);g.dom?g.dom.appendChild(this.dom):g.appendChild(this.dom);return g},insertHtml:function(e,g,d){var h=b.insertHtml(e,this.dom,g);return d?Ext.get(h):h}}}());Ext.Element.addMethods(function(){var A=Ext.supports,h={},x=/(-[a-z])/gi,s=document.defaultView,D=/alpha\(opacity=(.*)\)/i,l=/^\s+|\s+$/g,B=Ext.Element,u=/\s+/,b=/\w/g,d="padding",c="margin",y="border",t="-left",q="-right",w="-top",o="-bottom",j="-width",r=Math,z="hidden",e="isClipped",k="overflow",n="overflow-x",m="overflow-y",C="originalClip",i={l:y+t+j,r:y+q+j,t:y+w+j,b:y+o+j},g={l:d+t,r:d+q,t:d+w,b:d+o},a={l:c+t,r:c+q,t:c+w,b:c+o},E=Ext.Element.data;function p(F,G){return G.charAt(1).toUpperCase()}function v(F){return h[F]||(h[F]=F=="float"?(A.cssFloat?"cssFloat":"styleFloat"):F.replace(x,p))}return{adjustWidth:function(F){var G=this;var H=(typeof F=="number");if(H&&G.autoBoxAdjust&&!G.isBorderBox()){F-=(G.getBorderWidth("lr")+G.getPadding("lr"))}return(H&&F<0)?0:F},adjustHeight:function(F){var G=this;var H=(typeof F=="number");if(H&&G.autoBoxAdjust&&!G.isBorderBox()){F-=(G.getBorderWidth("tb")+G.getPadding("tb"))}return(H&&F<0)?0:F},addClass:function(J){var K=this,I,F,H,G=[];if(!Ext.isArray(J)){if(typeof J=="string"&&!this.hasClass(J)){K.dom.className+=" "+J}}else{for(I=0,F=J.length;I<F;I++){H=J[I];if(typeof H=="string"&&(" "+K.dom.className+" ").indexOf(" "+H+" ")==-1){G.push(H)}}if(G.length){K.dom.className+=" "+G.join(" ")}}return K},removeClass:function(K){var L=this,J,G,F,I,H;if(!Ext.isArray(K)){K=[K]}if(L.dom&&L.dom.className){H=L.dom.className.replace(l,"").split(u);for(J=0,F=K.length;J<F;J++){I=K[J];if(typeof I=="string"){I=I.replace(l,"");G=H.indexOf(I);if(G!=-1){H.splice(G,1)}}}L.dom.className=H.join(" ")}return L},radioClass:function(I){var J=this.dom.parentNode.childNodes,G,H,F;I=Ext.isArray(I)?I:[I];for(H=0,F=J.length;H<F;H++){G=J[H];if(G&&G.nodeType==1){Ext.fly(G,"_internal").removeClass(I)}}return this.addClass(I)},toggleClass:function(F){return this.hasClass(F)?this.removeClass(F):this.addClass(F)},hasClass:function(F){return F&&(" "+this.dom.className+" ").indexOf(" "+F+" ")!=-1},replaceClass:function(G,F){return this.removeClass(G).addClass(F)},isStyle:function(F,G){return this.getStyle(F)==G},getStyle:function(){return s&&s.getComputedStyle?function(K){var I=this.dom,F,H,G,J;if(I==document){return null}K=v(K);G=(F=I.style[K])?F:(H=s.getComputedStyle(I,""))?H[K]:null;if(K=="marginRight"&&G!="0px"&&!A.correctRightMargin){J=I.style.display;I.style.display="inline-block";G=s.getComputedStyle(I,"").marginRight;I.style.display=J}if(K=="backgroundColor"&&G=="rgba(0, 0, 0, 0)"&&!A.correctTransparentColor){G="transparent"}return G}:function(J){var H=this.dom,F,G;if(H==document){return null}if(J=="opacity"){if(H.style.filter.match){if(F=H.style.filter.match(D)){var I=parseFloat(F[1]);if(!isNaN(I)){return I?I/100:0}}}return 1}J=v(J);return H.style[J]||((G=H.currentStyle)?G[J]:null)}}(),getColor:function(F,G,K){var I=this.getStyle(F),H=(typeof K!="undefined")?K:"#",J;if(!I||(/transparent|inherit/.test(I))){return G}if(/^r/.test(I)){Ext.each(I.slice(4,I.length-1).split(","),function(L){J=parseInt(L,10);H+=(J<16?"0":"")+J.toString(16)})}else{I=I.replace("#","");H+=I.length==3?I.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):I}return(H.length>5?H.toLowerCase():G)},setStyle:function(I,H){var F,G;if(typeof I!="object"){F={};F[I]=H;I=F}for(G in I){H=I[G];G=="opacity"?this.setOpacity(H):this.dom.style[v(G)]=H}return this},setOpacity:function(G,F){var J=this,H=J.dom.style;if(!F||!J.anim){if(Ext.isIE9m){var I=G<1?"alpha(opacity="+G*100+")":"",K=H.filter.replace(D,"").replace(l,"");H.zoom=1;H.filter=K+(K.length>0?" ":"")+I}else{H.opacity=G}}else{J.anim({opacity:{to:G}},J.preanim(arguments,1),null,0.35,"easeIn")}return J},clearOpacity:function(){var F=this.dom.style;if(Ext.isIE9m){if(!Ext.isEmpty(F.filter)){F.filter=F.filter.replace(D,"").replace(l,"")}}else{F.opacity=F["-moz-opacity"]=F["-khtml-opacity"]=""}return this},getHeight:function(H){var G=this,J=G.dom,I=Ext.isIE9m&&G.isStyle("display","none"),F=r.max(J.offsetHeight,I?0:J.clientHeight)||0;F=!H?F:F-G.getBorderWidth("tb")-G.getPadding("tb");return F<0?0:F},getWidth:function(G){var H=this,J=H.dom,I=Ext.isIE9m&&H.isStyle("display","none"),F=r.max(J.offsetWidth,I?0:J.clientWidth)||0;F=!G?F:F-H.getBorderWidth("lr")-H.getPadding("lr");return F<0?0:F},setWidth:function(G,F){var H=this;G=H.adjustWidth(G);!F||!H.anim?H.dom.style.width=H.addUnits(G):H.anim({width:{to:G}},H.preanim(arguments,1));return H},setHeight:function(F,G){var H=this;F=H.adjustHeight(F);!G||!H.anim?H.dom.style.height=H.addUnits(F):H.anim({height:{to:F}},H.preanim(arguments,1));return H},getBorderWidth:function(F){return this.addStyles(F,i)},getPadding:function(F){return this.addStyles(F,g)},clip:function(){var F=this,G=F.dom;if(!E(G,e)){E(G,e,true);E(G,C,{o:F.getStyle(k),x:F.getStyle(n),y:F.getStyle(m)});F.setStyle(k,z);F.setStyle(n,z);F.setStyle(m,z)}return F},unclip:function(){var F=this,H=F.dom;if(E(H,e)){E(H,e,false);var G=E(H,C);if(G.o){F.setStyle(k,G.o)}if(G.x){F.setStyle(n,G.x)}if(G.y){F.setStyle(m,G.y)}}return F},addStyles:function(M,L){var J=0,K=M.match(b),I,H,G,F=K.length;for(G=0;G<F;G++){I=K[G];H=I&&parseInt(this.getStyle(L[I]),10);if(H){J+=r.abs(H)}}return J},margins:a}}());(function(){var a=Ext.lib.Dom,b="left",g="right",d="top",i="bottom",h="position",c="static",e="relative",j="auto",k="z-index";Ext.Element.addMethods({getX:function(){return a.getX(this.dom)},getY:function(){return a.getY(this.dom)},getXY:function(){return a.getXY(this.dom)},getOffsetsTo:function(l){var n=this.getXY(),m=Ext.fly(l,"_internal").getXY();return[n[0]-m[0],n[1]-m[1]]},setX:function(l,m){return this.setXY([l,this.getY()],this.animTest(arguments,m,1))},setY:function(m,l){return this.setXY([this.getX(),m],this.animTest(arguments,l,1))},setLeft:function(l){this.setStyle(b,this.addUnits(l));return this},setTop:function(l){this.setStyle(d,this.addUnits(l));return this},setRight:function(l){this.setStyle(g,this.addUnits(l));return this},setBottom:function(l){this.setStyle(i,this.addUnits(l));return this},setXY:function(n,l){var m=this;if(!l||!m.anim){a.setXY(m.dom,n)}else{m.anim({points:{to:n}},m.preanim(arguments,1),"motion")}return m},setLocation:function(l,n,m){return this.setXY([l,n],this.animTest(arguments,m,2))},moveTo:function(l,n,m){return this.setXY([l,n],this.animTest(arguments,m,2))},getLeft:function(l){return !l?this.getX():parseInt(this.getStyle(b),10)||0},getRight:function(l){var m=this;return !l?m.getX()+m.getWidth():(m.getLeft(true)+m.getWidth())||0},getTop:function(l){return !l?this.getY():parseInt(this.getStyle(d),10)||0},getBottom:function(l){var m=this;return !l?m.getY()+m.getHeight():(m.getTop(true)+m.getHeight())||0},position:function(p,o,l,n){var m=this;if(!p&&m.isStyle(h,c)){m.setStyle(h,e)}else{if(p){m.setStyle(h,p)}}if(o){m.setStyle(k,o)}if(l||n){m.setXY([l||false,n||false])}},clearPositioning:function(l){l=l||"";this.setStyle({left:l,right:l,top:l,bottom:l,"z-index":"",position:c});return this},getPositioning:function(){var m=this.getStyle(b);var n=this.getStyle(d);return{position:this.getStyle(h),left:m,right:m?"":this.getStyle(g),top:n,bottom:n?"":this.getStyle(i),"z-index":this.getStyle(k)}},setPositioning:function(l){var n=this,m=n.dom.style;n.setStyle(l);if(l.right==j){m.right=""}if(l.bottom==j){m.bottom=""}return n},translatePoints:function(m,u){u=isNaN(m[1])?u:m[1];m=isNaN(m[0])?m:m[0];var q=this,r=q.isStyle(h,e),s=q.getXY(),n=parseInt(q.getStyle(b),10),p=parseInt(q.getStyle(d),10);n=!isNaN(n)?n:(r?0:q.dom.offsetLeft);p=!isNaN(p)?p:(r?0:q.dom.offsetTop);return{left:(m-s[0]+n),top:(u-s[1]+p)}},animTest:function(m,l,n){return !!l&&this.preanim?this.preanim(m,n):false}})})();Ext.Element.addMethods({isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},scrollTo:function(a,b){this.dom["scroll"+(/top/i.test(a)?"Top":"Left")]=b;return this},getScroll:function(){var i=this.dom,h=document,a=h.body,c=h.documentElement,b,g,e;if(i==h||i==a){if(Ext.isIE&&Ext.isStrict){b=c.scrollLeft;g=c.scrollTop}else{b=window.pageXOffset;g=window.pageYOffset}e={left:b||(a?a.scrollLeft:0),top:g||(a?a.scrollTop:0)}}else{e={left:i.scrollLeft,top:i.scrollTop}}return e}});Ext.Element.VISIBILITY=1;Ext.Element.DISPLAY=2;Ext.Element.OFFSETS=3;Ext.Element.ASCLASS=4;Ext.Element.visibilityCls="x-hide-nosize";Ext.Element.addMethods(function(){var e=Ext.Element,p="opacity",j="visibility",g="display",d="hidden",n="offsets",k="asclass",m="none",a="nosize",b="originalDisplay",c="visibilityMode",h="isVisible",i=e.data,l=function(r){var q=i(r,b);if(q===undefined){i(r,b,q="")}return q},o=function(r){var q=i(r,c);if(q===undefined){i(r,c,q=1)}return q};return{originalDisplay:"",visibilityMode:1,setVisibilityMode:function(q){i(this.dom,c,q);return this},animate:function(r,t,s,u,q){this.anim(r,{duration:t,callback:s,easing:u},q);return this},anim:function(t,u,r,w,s,q){r=r||"run";u=u||{};var v=this,x=Ext.lib.Anim[r](v.dom,t,(u.duration||w)||0.35,(u.easing||s)||"easeOut",function(){if(q){q.call(v)}if(u.callback){u.callback.call(u.scope||v,v,u)}},v);u.anim=x;return x},preanim:function(q,r){return !q[r]?false:(typeof q[r]=="object"?q[r]:{duration:q[r+1],callback:q[r+2],easing:q[r+3]})},isVisible:function(){var q=this,s=q.dom,r=i(s,h);if(typeof r=="boolean"){return r}r=!q.isStyle(j,d)&&!q.isStyle(g,m)&&!((o(s)==e.ASCLASS)&&q.hasClass(q.visibilityCls||e.visibilityCls));i(s,h,r);return r},setVisible:function(t,q){var w=this,r,y,x,v,u=w.dom,s=o(u);if(typeof q=="string"){switch(q){case g:s=e.DISPLAY;break;case j:s=e.VISIBILITY;break;case n:s=e.OFFSETS;break;case a:case k:s=e.ASCLASS;break}w.setVisibilityMode(s);q=false}if(!q||!w.anim){if(s==e.ASCLASS){w[t?"removeClass":"addClass"](w.visibilityCls||e.visibilityCls)}else{if(s==e.DISPLAY){return w.setDisplayed(t)}else{if(s==e.OFFSETS){if(!t){w.hideModeStyles={position:w.getStyle("position"),top:w.getStyle("top"),left:w.getStyle("left")};w.applyStyles({position:"absolute",top:"-10000px",left:"-10000px"})}else{w.applyStyles(w.hideModeStyles||{position:"",top:"",left:""});delete w.hideModeStyles}}else{w.fixDisplay();u.style.visibility=t?"visible":d}}}}else{if(t){w.setOpacity(0.01);w.setVisible(true)}w.anim({opacity:{to:(t?1:0)}},w.preanim(arguments,1),null,0.35,"easeIn",function(){t||w.setVisible(false).setOpacity(1)})}i(u,h,t);return w},hasMetrics:function(){var q=this.dom;return this.isVisible()||(o(q)==e.VISIBILITY)},toggle:function(q){var r=this;r.setVisible(!r.isVisible(),r.preanim(arguments,0));return r},setDisplayed:function(q){if(typeof q=="boolean"){q=q?l(this.dom):m}this.setStyle(g,q);return this},fixDisplay:function(){var q=this;if(q.isStyle(g,m)){q.setStyle(j,d);q.setStyle(g,l(this.dom));if(q.isStyle(g,m)){q.setStyle(g,"block")}}},hide:function(q){if(typeof q=="string"){this.setVisible(false,q);return this}this.setVisible(false,this.preanim(arguments,0));return this},show:function(q){if(typeof q=="string"){this.setVisible(true,q);return this}this.setVisible(true,this.preanim(arguments,0));return this}}}());(function(){var y=null,A=undefined,k=true,t=false,j="setX",h="setY",a="setXY",n="left",l="bottom",s="top",m="right",q="height",g="width",i="points",w="hidden",z="absolute",u="visible",e="motion",o="position",r="easeOut",d=new Ext.Element.Flyweight(),v={},x=function(B){return B||{}},p=function(B){d.dom=B;d.id=Ext.id(B);return d},c=function(B){if(!v[B]){v[B]=[]}return v[B]},b=function(C,B){v[C]=B};Ext.enableFx=k;Ext.Fx={switchStatements:function(C,D,B){return D.apply(this,B[C])},slideIn:function(H,E){E=x(E);var J=this,G=J.dom,M=G.style,O,B,L,D,C,M,I,N,K,F;H=H||"t";J.queueFx(E,function(){O=p(G).getXY();p(G).fixDisplay();B=p(G).getFxRestore();L={x:O[0],y:O[1],0:O[0],1:O[1],width:G.offsetWidth,height:G.offsetHeight};L.right=L.x+L.width;L.bottom=L.y+L.height;p(G).setWidth(L.width).setHeight(L.height);D=p(G).fxWrap(B.pos,E,w);M.visibility=u;M.position=z;function P(){p(G).fxUnwrap(D,B.pos,E);M.width=B.width;M.height=B.height;p(G).afterFx(E)}N={to:[L.x,L.y]};K={to:L.width};F={to:L.height};function Q(U,R,V,S,X,Z,ac,ab,aa,W,T){var Y={};p(U).setWidth(V).setHeight(S);if(p(U)[X]){p(U)[X](Z)}R[ac]=R[ab]="0";if(aa){Y.width=aa}if(W){Y.height=W}if(T){Y.points=T}return Y}I=p(G).switchStatements(H.toLowerCase(),Q,{t:[D,M,L.width,0,y,y,n,l,y,F,y],l:[D,M,0,L.height,y,y,m,s,K,y,y],r:[D,M,L.width,L.height,j,L.right,n,s,y,y,N],b:[D,M,L.width,L.height,h,L.bottom,n,s,y,F,N],tl:[D,M,0,0,y,y,m,l,K,F,N],bl:[D,M,0,0,h,L.y+L.height,m,s,K,F,N],br:[D,M,0,0,a,[L.right,L.bottom],n,s,K,F,N],tr:[D,M,0,0,j,L.x+L.width,n,l,K,F,N]});M.visibility=u;p(D).show();arguments.callee.anim=p(D).fxanim(I,E,e,0.5,r,P)});return J},slideOut:function(F,D){D=x(D);var H=this,E=H.dom,K=E.style,L=H.getXY(),C,B,I,J,G={to:0};F=F||"t";H.queueFx(D,function(){B=p(E).getFxRestore();I={x:L[0],y:L[1],0:L[0],1:L[1],width:E.offsetWidth,height:E.offsetHeight};I.right=I.x+I.width;I.bottom=I.y+I.height;p(E).setWidth(I.width).setHeight(I.height);C=p(E).fxWrap(B.pos,D,u);K.visibility=u;K.position=z;p(C).setWidth(I.width).setHeight(I.height);function M(){D.useDisplay?p(E).setDisplayed(t):p(E).hide();p(E).fxUnwrap(C,B.pos,D);K.width=B.width;K.height=B.height;p(E).afterFx(D)}function N(O,W,U,X,S,V,R,T,Q){var P={};O[W]=O[U]="0";P[X]=S;if(V){P[V]=R}if(T){P[T]=Q}return P}J=p(E).switchStatements(F.toLowerCase(),N,{t:[K,n,l,q,G],l:[K,m,s,g,G],r:[K,n,s,g,G,i,{to:[I.right,I.y]}],b:[K,n,s,q,G,i,{to:[I.x,I.bottom]}],tl:[K,m,l,g,G,q,G],bl:[K,m,s,g,G,q,G,i,{to:[I.x,I.bottom]}],br:[K,n,s,g,G,q,G,i,{to:[I.x+I.width,I.bottom]}],tr:[K,n,l,g,G,q,G,i,{to:[I.right,I.y]}]});arguments.callee.anim=p(C).fxanim(J,D,e,0.5,r,M)});return H},puff:function(H){H=x(H);var F=this,G=F.dom,C=G.style,D,B,E;F.queueFx(H,function(){D=p(G).getWidth();B=p(G).getHeight();p(G).clearOpacity();p(G).show();E=p(G).getFxRestore();function I(){H.useDisplay?p(G).setDisplayed(t):p(G).hide();p(G).clearOpacity();p(G).setPositioning(E.pos);C.width=E.width;C.height=E.height;C.fontSize="";p(G).afterFx(H)}arguments.callee.anim=p(G).fxanim({width:{to:p(G).adjustWidth(D*2)},height:{to:p(G).adjustHeight(B*2)},points:{by:[-D*0.5,-B*0.5]},opacity:{to:0},fontSize:{to:200,unit:"%"}},H,e,0.5,r,I)});return F},switchOff:function(F){F=x(F);var D=this,E=D.dom,B=E.style,C;D.queueFx(F,function(){p(E).clearOpacity();p(E).clip();C=p(E).getFxRestore();function G(){F.useDisplay?p(E).setDisplayed(t):p(E).hide();p(E).clearOpacity();p(E).setPositioning(C.pos);B.width=C.width;B.height=C.height;p(E).afterFx(F)}p(E).fxanim({opacity:{to:0.3}},y,y,0.1,y,function(){p(E).clearOpacity();(function(){p(E).fxanim({height:{to:1},points:{by:[0,p(E).getHeight()*0.5]}},F,e,0.3,"easeIn",G)}).defer(100)})});return D},highlight:function(D,H){H=x(H);var F=this,G=F.dom,B=H.attr||"backgroundColor",C={},E;F.queueFx(H,function(){p(G).clearOpacity();p(G).show();function I(){G.style[B]=E;p(G).afterFx(H)}E=G.style[B];C[B]={from:D||"ffff9c",to:H.endColor||p(G).getColor(B)||"ffffff"};arguments.callee.anim=p(G).fxanim(C,H,"color",1,"easeIn",I)});return F},frame:function(B,E,H){H=x(H);var D=this,G=D.dom,C,F;D.queueFx(H,function(){B=B||"#C3DAF9";if(B.length==6){B="#"+B}E=E||1;p(G).show();var L=p(G).getXY(),J={x:L[0],y:L[1],0:L[0],1:L[1],width:G.offsetWidth,height:G.offsetHeight},I=function(){C=p(document.body||document.documentElement).createChild({style:{position:z,"z-index":35000,border:"0px solid "+B}});return C.queueFx({},K)};arguments.callee.anim={isAnimated:true,stop:function(){E=0;C.stopFx()}};function K(){var M=Ext.isBorderBox?2:1;F=C.anim({top:{from:J.y,to:J.y-20},left:{from:J.x,to:J.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:J.height,to:J.height+20*M},width:{from:J.width,to:J.width+20*M}},{duration:H.duration||1,callback:function(){C.remove();--E>0?I():p(G).afterFx(H)}});arguments.callee.anim={isAnimated:true,stop:function(){F.stop()}}}I()});return D},pause:function(D){var C=this.dom,B;this.queueFx({},function(){B=setTimeout(function(){p(C).afterFx({})},D*1000);arguments.callee.anim={isAnimated:true,stop:function(){clearTimeout(B);p(C).afterFx({})}}});return this},fadeIn:function(D){D=x(D);var B=this,C=B.dom,E=D.endOpacity||1;B.queueFx(D,function(){p(C).setOpacity(0);p(C).fixDisplay();C.style.visibility=u;arguments.callee.anim=p(C).fxanim({opacity:{to:E}},D,y,0.5,r,function(){if(E==1){p(C).clearOpacity()}p(C).afterFx(D)})});return B},fadeOut:function(E){E=x(E);var C=this,D=C.dom,B=D.style,F=E.endOpacity||0;C.queueFx(E,function(){arguments.callee.anim=p(D).fxanim({opacity:{to:F}},E,y,0.5,r,function(){if(F==0){Ext.Element.data(D,"visibilityMode")==Ext.Element.DISPLAY||E.useDisplay?B.display="none":B.visibility=w;p(D).clearOpacity()}p(D).afterFx(E)})});return C},scale:function(B,C,D){this.shift(Ext.apply({},D,{width:B,height:C}));return this},shift:function(D){D=x(D);var C=this.dom,B={};this.queueFx(D,function(){for(var E in D){if(D[E]!=A){B[E]={to:D[E]}}}B.width?B.width.to=p(C).adjustWidth(D.width):B;B.height?B.height.to=p(C).adjustWidth(D.height):B;if(B.x||B.y||B.xy){B.points=B.xy||{to:[B.x?B.x.to:p(C).getX(),B.y?B.y.to:p(C).getY()]}}arguments.callee.anim=p(C).fxanim(B,D,e,0.35,r,function(){p(C).afterFx(D)})});return this},ghost:function(E,C){C=x(C);var G=this,D=G.dom,J=D.style,H={opacity:{to:0},points:{}},K=H.points,B,I,F;E=E||"b";G.queueFx(C,function(){B=p(D).getFxRestore();I=p(D).getWidth();F=p(D).getHeight();function L(){C.useDisplay?p(D).setDisplayed(t):p(D).hide();p(D).clearOpacity();p(D).setPositioning(B.pos);J.width=B.width;J.height=B.height;p(D).afterFx(C)}K.by=p(D).switchStatements(E.toLowerCase(),function(N,M){return[N,M]},{t:[0,-F],l:[-I,0],r:[I,0],b:[0,F],tl:[-I,-F],bl:[-I,F],br:[I,F],tr:[I,-F]});arguments.callee.anim=p(D).fxanim(H,C,e,0.5,r,L)});return G},syncFx:function(){var B=this;B.fxDefaults=Ext.apply(B.fxDefaults||{},{block:t,concurrent:k,stopFx:t});return B},sequenceFx:function(){var B=this;B.fxDefaults=Ext.apply(B.fxDefaults||{},{block:t,concurrent:t,stopFx:t});return B},nextFx:function(){var B=c(this.dom.id)[0];if(B){B.call(this)}},hasActiveFx:function(){return c(this.dom.id)[0]},stopFx:function(B){var C=this,E=C.dom.id;if(C.hasActiveFx()){var D=c(E)[0];if(D&&D.anim){if(D.anim.isAnimated){b(E,[D]);D.anim.stop(B!==undefined?B:k)}else{b(E,[])}}}return C},beforeFx:function(B){if(this.hasActiveFx()&&!B.concurrent){if(B.stopFx){this.stopFx();return k}return t}return k},hasFxBlock:function(){var B=c(this.dom.id);return B&&B[0]&&B[0].block},queueFx:function(E,B){var C=p(this.dom);if(!C.hasFxBlock()){Ext.applyIf(E,C.fxDefaults);if(!E.concurrent){var D=C.beforeFx(E);B.block=E.block;c(C.dom.id).push(B);if(D){C.nextFx()}}else{B.call(C)}}return C},fxWrap:function(H,F,D){var E=this.dom,C,B;if(!F.wrap||!(C=Ext.getDom(F.wrap))){if(F.fixPosition){B=p(E).getXY()}var G=document.createElement("div");G.style.visibility=D;C=E.parentNode.insertBefore(G,E);p(C).setPositioning(H);if(p(C).isStyle(o,"static")){p(C).position("relative")}p(E).clearPositioning("auto");p(C).clip();C.appendChild(E);if(B){p(C).setXY(B)}}return C},fxUnwrap:function(C,F,E){var D=this.dom;p(D).clearPositioning();p(D).setPositioning(F);if(!E.wrap){var B=p(C).dom.parentNode;B.insertBefore(D,C);p(C).remove()}},getFxRestore:function(){var B=this.dom.style;return{pos:this.getPositioning(),width:B.width,height:B.height}},afterFx:function(C){var B=this.dom,D=B.id;if(C.afterStyle){p(B).setStyle(C.afterStyle)}if(C.afterCls){p(B).addClass(C.afterCls)}if(C.remove==k){p(B).remove()}if(C.callback){C.callback.call(C.scope,p(B))}if(!C.concurrent){c(D).shift();p(B).nextFx()}},fxanim:function(E,F,C,G,D,B){C=C||"run";F=F||{};var H=Ext.lib.Anim[C](this.dom,E,(F.duration||G)||0.35,(F.easing||D)||r,B,this);F.anim=H;return H}};Ext.Fx.resize=Ext.Fx.scale;Ext.Element.addMethods(Ext.Fx)})();Ext.CompositeElementLite=function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.Element.Flyweight()};Ext.CompositeElementLite.prototype={isComposite:true,getElement:function(a){var b=this.el;b.dom=a;b.id=a.id;return b},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(d,b){var e=this,g=e.elements;if(!d){return this}if(typeof d=="string"){d=Ext.Element.selectorFunction(d,b)}else{if(d.isComposite){d=d.elements}else{if(!Ext.isIterable(d)){d=[d]}}}for(var c=0,a=d.length;c<a;++c){g.push(e.transformElement(d[c]))}return e},invoke:function(g,b){var h=this,d=h.elements,a=d.length,j,c;for(c=0;c<a;c++){j=d[c];if(j){Ext.Element.prototype[g].apply(h.getElement(j),b)}}return h},item:function(b){var d=this,c=d.elements[b],a=null;if(c){a=d.getElement(c)}return a},addListener:function(b,j,h,g){var d=this.elements,a=d.length,c,k;for(c=0;c<a;c++){k=d[c];if(k){Ext.EventManager.on(k,b,j,h||k,g)}}return this},each:function(g,d){var h=this,c=h.elements,a=c.length,b,j;for(b=0;b<a;b++){j=c[b];if(j){j=this.getElement(j);if(g.call(d||j,j,h,b)===false){break}}}return h},fill:function(a){var b=this;b.elements=[];b.add(a);return b},filter:function(a){var b=[],d=this,c=Ext.isFunction(a)?a:function(e){return e.is(a)};d.each(function(h,e,g){if(c(h,g)!==false){b[b.length]=d.transformElement(h)}});d.elements=b;return d},indexOf:function(a){return this.elements.indexOf(this.transformElement(a))},replaceElement:function(e,c,a){var b=!isNaN(e)?e:this.indexOf(e),g;if(b>-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}this.elements.splice(b,1,c)}return this},clear:function(){this.elements=[]}};Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;Ext.CompositeElementLite.importElementMethods=function(){var c,b=Ext.Element.prototype,a=Ext.CompositeElementLite.prototype;for(c in b){if(typeof b[c]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,c)}}};Ext.CompositeElementLite.importElementMethods();if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select}Ext.Element.select=function(a,b){var c;if(typeof a=="string"){c=Ext.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{throw"Invalid selector"}}return new Ext.CompositeElementLite(c)};Ext.select=Ext.Element.select;(function(){var b="beforerequest",e="requestcomplete",d="requestexception",h=undefined,c="load",i="POST",a="GET",g=window;Ext.data.Connection=function(j){Ext.apply(this,j);this.addEvents(b,e,d);Ext.data.Connection.superclass.constructor.call(this)};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,autoAbort:false,disableCaching:true,disableCachingParam:"_dc",request:function(n){var s=this;if(s.fireEvent(b,s,n)){if(n.el){if(!Ext.isEmpty(n.indicatorText)){s.indicatorText='<div class="loading-indicator">'+n.indicatorText+"</div>"}if(s.indicatorText){Ext.getDom(n.el).innerHTML=s.indicatorText}n.success=(Ext.isFunction(n.success)?n.success:function(){}).createInterceptor(function(o){Ext.getDom(n.el).innerHTML=o.responseText})}var l=n.params,k=n.url||s.url,j,q={success:s.handleResponse,failure:s.handleFailure,scope:s,argument:{options:n},timeout:Ext.num(n.timeout,s.timeout)},m,t;if(Ext.isFunction(l)){l=l.call(n.scope||g,n)}l=Ext.urlEncode(s.extraParams,Ext.isObject(l)?Ext.urlEncode(l):l);if(Ext.isFunction(k)){k=k.call(n.scope||g,n)}if((m=Ext.getDom(n.form))){k=k||m.action;if(n.isUpload||(/multipart\/form-data/i.test(m.getAttribute("enctype")))){return s.doFormUpload.call(s,n,l,k)}t=Ext.lib.Ajax.serializeForm(m);l=l?(l+"&"+t):t}j=n.method||s.method||((l||n.xmlData||n.jsonData)?i:a);if(j===a&&(s.disableCaching&&n.disableCaching!==false)||n.disableCaching===true){var r=n.disableCachingParam||s.disableCachingParam;k=Ext.urlAppend(k,r+"="+(new Date().getTime()))}n.headers=Ext.applyIf(n.headers||{},s.defaultHeaders||{});if(n.autoAbort===true||s.autoAbort){s.abort()}if((j==a||n.xmlData||n.jsonData)&&l){k=Ext.urlAppend(k,l);l=""}return(s.transId=Ext.lib.Ajax.request(j,k,q,l,n))}else{return n.callback?n.callback.apply(n.scope,[n,h,h]):null}},isLoading:function(j){return j?Ext.lib.Ajax.isCallInProgress(j):!!this.transId},abort:function(j){if(j||this.isLoading()){Ext.lib.Ajax.abort(j||this.transId)}},handleResponse:function(j){this.transId=false;var k=j.argument.options;j.argument=k?k.argument:null;this.fireEvent(e,this,j,k);if(k.success){k.success.call(k.scope,j,k)}if(k.callback){k.callback.call(k.scope,k,true,j)}},handleFailure:function(j,l){this.transId=false;var k=j.argument.options;j.argument=k?k.argument:null;this.fireEvent(d,this,j,k,l);if(k.failure){k.failure.call(k.scope,j,k)}if(k.callback){k.callback.call(k.scope,k,false,j)}},doFormUpload:function(q,j,k){var l=Ext.id(),v=document,r=v.createElement("iframe"),m=Ext.getDom(q.form),u=[],t,p="multipart/form-data",n={target:m.target,method:m.method,encoding:m.encoding,enctype:m.enctype,action:m.action};Ext.fly(r).set({id:l,name:l,cls:"x-hidden",src:Ext.SSL_SECURE_URL});v.body.appendChild(r);if(Ext.isIE){document.frames[l].name=l}Ext.fly(m).set({target:l,method:i,enctype:p,encoding:p,action:k||n.action});Ext.iterate(Ext.urlDecode(j,false),function(w,o){t=v.createElement("input");Ext.fly(t).set({type:"hidden",value:o,name:w});m.appendChild(t);u.push(t)});function s(){var x=this,w={responseText:"",responseXML:null,argument:q.argument},A,z;try{A=r.contentWindow.document||r.contentDocument||g.frames[l].document;if(A){if(A.body){if(/textarea/i.test((z=A.body.firstChild||{}).tagName)){w.responseText=z.value}else{w.responseText=A.body.innerHTML}}w.responseXML=A.XMLDocument||A}}catch(y){}Ext.EventManager.removeListener(r,c,s,x);x.fireEvent(e,x,w,q);function o(D,C,B){if(Ext.isFunction(D)){D.apply(C,B)}}o(q.success,q.scope,[w,q]);o(q.callback,q.scope,[q,true,w]);if(!x.debugUploads){setTimeout(function(){Ext.removeNode(r)},100)}}Ext.EventManager.on(r,c,s,this);m.submit();Ext.fly(m).set(n);Ext.each(u,function(o){Ext.removeNode(o)})}})})();Ext.Ajax=new Ext.data.Connection({autoAbort:false,serializeForm:function(a){return Ext.lib.Ajax.serializeForm(a)}});Ext.util.JSON=new (function(){var useHasOwn=!!{}.hasOwnProperty,isNative=function(){var useNative=null;return function(){if(useNative===null){useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"}return useNative}}(),pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return json?eval("("+json+")"):""},doEncode=function(o){if(!Ext.isDefined(o)||o===null){return"null"}else{if(Ext.isArray(o)){return encodeArray(o)}else{if(Ext.isDate(o)){return Ext.util.JSON.encodeDate(o)}else{if(Ext.isString(o)){return encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{var a=["{"],b,i,v;for(i in o){if(!o.getElementsByTagName){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(doEncode(i),":",v===null?"null":doEncode(v));b=true}}}}a.push("}");return a.join("")}}}}}}},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},encodeString=function(s){if(/["\\\x00-\x1f]/.test(s)){return'"'+s.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c}c=b.charCodeAt();return"\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16)})+'"'}return'"'+s+'"'},encodeArray=function(o){var a=["["],b,i,l=o.length,v;for(i=0;i<l;i+=1){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(v===null?"null":Ext.util.JSON.encode(v));b=true}}a.push("]");return a.join("")};this.encodeDate=function(o){return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'};this.encode=function(){var ec;return function(o){if(!ec){ec=isNative()?JSON.stringify:doEncode}return ec(o)}}();this.decode=function(){var dc;return function(json){if(!dc){dc=isNative()?JSON.parse:doDecode}return dc(json)}}()})();Ext.encode=Ext.util.JSON.encode;Ext.decode=Ext.util.JSON.decode;Ext.EventManager=function(){var z,p,j=false,l=Ext.isGecko||Ext.isWebKit||Ext.isSafari||Ext.isIE10p,o=Ext.lib.Event,q=Ext.lib.Dom,c=document,A=window,r="DOMContentLoaded",t="complete",g=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,u=[];function n(E){var H=false,D=0,C=u.length,F=false,G;if(E){if(E.getElementById||E.navigator){for(;D<C;++D){G=u[D];if(G.el===E){H=G.id;break}}if(!H){H=Ext.id(E);u.push({id:H,el:E});F=true}}else{H=Ext.id(E)}if(!Ext.elCache[H]){Ext.Element.addToCache(new Ext.Element(E),H);if(F){Ext.elCache[H].skipGC=true}}}return H}function m(E,G,J,F,D,L){E=Ext.getDom(E);var C=n(E),K=Ext.elCache[C].events,H;H=o.on(E,G,D);K[G]=K[G]||[];K[G].push([J,D,L,H,F]);if(E.addEventListener&&G=="mousewheel"){var I=["DOMMouseScroll",D,false];E.addEventListener.apply(E,I);Ext.EventManager.addListener(A,"unload",function(){E.removeEventListener.apply(E,I)})}if(E==c&&G=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.addListener(D)}}function d(){if(window!=top){return false}try{c.documentElement.doScroll("left")}catch(C){return false}b();return true}function B(C){if(Ext.isIE9m&&d()){return true}if(c.readyState==t){b();return true}j||(p=setTimeout(arguments.callee,2));return false}var k;function i(C){k||(k=Ext.query("style, link[rel=stylesheet]"));if(k.length==c.styleSheets.length){b();return true}j||(p=setTimeout(arguments.callee,2));return false}function y(C){c.removeEventListener(r,arguments.callee,false);i()}function b(C){if(!j){j=true;if(p){clearTimeout(p)}if(l){c.removeEventListener(r,b,false)}if(Ext.isIE9m&&B.bindIE){c.detachEvent("onreadystatechange",B)}o.un(A,"load",arguments.callee)}if(z&&!Ext.isReady){Ext.isReady=true;z.fire();z.listeners=[]}}function a(){z||(z=new Ext.util.Event());if(l){c.addEventListener(r,b,false)}if(Ext.isIE9m){if(!B()){B.bindIE=true;c.attachEvent("onreadystatechange",B)}}else{if(Ext.isOpera){(c.readyState==t&&i())||c.addEventListener(r,y,false)}else{if(Ext.isWebKit){B()}}}o.on(A,"load",b)}function x(C,D){return function(){var E=Ext.toArray(arguments);if(D.target==Ext.EventObject.setEvent(E[0]).target){C.apply(this,E)}}}function w(D,E,C){return function(F){C.delay(E.buffer,D,null,[new Ext.EventObjectImpl(F)])}}function s(G,F,C,E,D){return function(H){Ext.EventManager.removeListener(F,C,E,D);G(H)}}function e(D,E,C){return function(G){var F=new Ext.util.DelayedTask(D);if(!C.tasks){C.tasks=[]}C.tasks.push(F);F.delay(E.delay||10,D,null,[new Ext.EventObjectImpl(G)])}}function h(H,G,C,J,K){var D=(!C||typeof C=="boolean")?{}:C,E=Ext.getDom(H),F;J=J||D.fn;K=K||D.scope;if(!E){throw'Error listening for "'+G+'". Element "'+H+"\" doesn't exist."}function I(M){if(!Ext){return}M=Ext.EventObject.setEvent(M);var L;if(D.delegate){if(!(L=M.getTarget(D.delegate,E))){return}}else{L=M.target}if(D.stopEvent){M.stopEvent()}if(D.preventDefault){M.preventDefault()}if(D.stopPropagation){M.stopPropagation()}if(D.normalized===false){M=M.browserEvent}J.call(K||E,M,L,D)}if(D.target){I=x(I,D)}if(D.delay){I=e(I,D,J)}if(D.single){I=s(I,E,G,J,K)}if(D.buffer){F=new Ext.util.DelayedTask(I);I=w(I,D,F)}m(E,G,J,F,I,K);return I}var v={addListener:function(E,C,G,F,D){if(typeof C=="object"){var J=C,H,I;for(H in J){I=J[H];if(!g.test(H)){if(Ext.isFunction(I)){h(E,H,J,I,J.scope)}else{h(E,H,I)}}}}else{h(E,C,D,G,F)}},removeListener:function(E,I,M,N){E=Ext.getDom(E);var C=n(E),K=E&&(Ext.elCache[C].events)[I]||[],D,H,F,G,J,L;for(H=0,J=K.length;H<J;H++){if(Ext.isArray(L=K[H])&&L[0]==M&&(!N||L[2]==N)){if(L[4]){L[4].cancel()}G=M.tasks&&M.tasks.length;if(G){while(G--){M.tasks[G].cancel()}delete M.tasks}D=L[1];o.un(E,I,o.extAdapter?L[3]:D);if(D&&E.addEventListener&&I=="mousewheel"){E.removeEventListener("DOMMouseScroll",D,false)}if(D&&E==c&&I=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.removeListener(D)}K.splice(H,1);if(K.length===0){delete Ext.elCache[C].events[I]}for(G in Ext.elCache[C].events){return false}Ext.elCache[C].events={};return false}}},removeAll:function(E){E=Ext.getDom(E);var D=n(E),J=Ext.elCache[D]||{},M=J.events||{},I,H,K,F,L,G,C;for(F in M){if(M.hasOwnProperty(F)){I=M[F];for(H=0,K=I.length;H<K;H++){L=I[H];if(L[4]){L[4].cancel()}if(L[0].tasks&&(G=L[0].tasks.length)){while(G--){L[0].tasks[G].cancel()}delete L.tasks}C=L[1];o.un(E,F,o.extAdapter?L[3]:C);if(E.addEventListener&&C&&F=="mousewheel"){E.removeEventListener("DOMMouseScroll",C,false)}if(C&&E==c&&F=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.removeListener(C)}}}}if(Ext.elCache[D]){Ext.elCache[D].events={}}},getListeners:function(F,C){F=Ext.getDom(F);var H=n(F),D=Ext.elCache[H]||{},G=D.events||{},E=[];if(G&&G[C]){return G[C]}else{return null}},removeFromSpecialCache:function(E){var D=0,C=u.length;for(;D<C;++D){if(u[D].el==E){u.splice(D,1)}}},purgeElement:function(E,C,G){E=Ext.getDom(E);var D=n(E),J=Ext.elCache[D]||{},K=J.events||{},F,I,H;if(G){if(K&&K.hasOwnProperty(G)){I=K[G];for(F=0,H=I.length;F<H;F++){Ext.EventManager.removeListener(E,G,I[F][0])}}}else{Ext.EventManager.removeAll(E)}if(C&&E&&E.childNodes){for(F=0,H=E.childNodes.length;F<H;F++){Ext.EventManager.purgeElement(E.childNodes[F],C,G)}}},_unload:function(){var C;for(C in Ext.elCache){Ext.EventManager.removeAll(C)}delete Ext.elCache;delete Ext.Element._flyweights;var G,D,F,E=Ext.lib.Ajax;(typeof E.conn=="object")?D=E.conn:D={};for(F in D){G=D[F];if(G){E.abort({conn:G,tId:F})}}},onDocumentReady:function(E,D,C){if(Ext.isReady){z||(z=new Ext.util.Event());z.addListener(E,D,C);z.fire();z.listeners=[]}else{if(!z){a()}C=C||{};C.delay=C.delay||1;z.addListener(E,D,C)}},fireDocReady:b};v.on=v.addListener;v.un=v.removeListener;v.stoppedMouseDownEvent=new Ext.util.Event();return v}();Ext.onReady=Ext.EventManager.onDocumentReady;(function(){var a=function(){var c=document.body||document.getElementsByTagName("body")[0];if(!c){return false}var b=[];if(Ext.isIE){if(!Ext.isIE10p){b.push("ext-ie")}if(Ext.isIE6){b.push("ext-ie6")}else{if(Ext.isIE7){b.push("ext-ie7","ext-ie7m")}else{if(Ext.isIE8){b.push("ext-ie8","ext-ie8m")}else{if(Ext.isIE9){b.push("ext-ie9","ext-ie9m")}else{if(Ext.isIE10){b.push("ext-ie10")}}}}}}if(Ext.isGecko){if(Ext.isGecko2){b.push("ext-gecko2")}else{b.push("ext-gecko3")}}if(Ext.isOpera){b.push("ext-opera")}if(Ext.isWebKit){b.push("ext-webkit")}if(Ext.isSafari){b.push("ext-safari "+(Ext.isSafari2?"ext-safari2":(Ext.isSafari3?"ext-safari3":"ext-safari4")))}else{if(Ext.isChrome){b.push("ext-chrome")}}if(Ext.isMac){b.push("ext-mac")}if(Ext.isLinux){b.push("ext-linux")}if(Ext.isStrict||Ext.isBorderBox){var d=c.parentNode;if(d){if(!Ext.isStrict){Ext.fly(d,"_internal").addClass("x-quirks");if(Ext.isIE9m&&!Ext.isStrict){Ext.isIEQuirks=true}}Ext.fly(d,"_internal").addClass(((Ext.isStrict&&Ext.isIE)||(!Ext.enableForcedBoxModel&&!Ext.isIE))?" ext-strict":" ext-border-box")}}if(Ext.enableForcedBoxModel&&!Ext.isIE){Ext.isForcedBorderBox=true;b.push("ext-forced-border-box")}Ext.fly(c,"_internal").addClass(b);return true};if(!a()){Ext.onReady(a)}})();(function(){var b=Ext.apply(Ext.supports,{correctRightMargin:true,correctTransparentColor:true,cssFloat:true});var a=function(){var g=document.createElement("div"),e=document,c,d;g.innerHTML='<div style="height:30px;width:50px;"><div style="height:20px;width:20px;"></div></div><div style="float:left;background-color:transparent;">';e.body.appendChild(g);d=g.lastChild;if((c=e.defaultView)){if(c.getComputedStyle(g.firstChild.firstChild,null).marginRight!="0px"){b.correctRightMargin=false}if(c.getComputedStyle(d,null).backgroundColor!="transparent"){b.correctTransparentColor=false}}b.cssFloat=!!d.style.cssFloat;e.body.removeChild(g)};if(Ext.isReady){a()}else{Ext.onReady(a)}})();Ext.EventObject=function(){var b=Ext.lib.Event,c=/(dbl)?click/,a={3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},d=Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2};Ext.EventObjectImpl=function(g){if(g){this.setEvent(g.browserEvent||g)}};Ext.EventObjectImpl.prototype={setEvent:function(h){var g=this;if(h==g||(h&&h.browserEvent)){return h}g.browserEvent=h;if(h){g.button=h.button?d[h.button]:(h.which?h.which-1:-1);if(c.test(h.type)&&g.button==-1){g.button=0}g.type=h.type;g.shiftKey=h.shiftKey;g.ctrlKey=h.ctrlKey||h.metaKey||false;g.altKey=h.altKey;g.keyCode=h.keyCode;g.charCode=h.charCode;g.target=b.getTarget(h);g.xy=b.getXY(h)}else{g.button=-1;g.shiftKey=false;g.ctrlKey=false;g.altKey=false;g.keyCode=0;g.charCode=0;g.target=null;g.xy=[0,0]}return g},stopEvent:function(){var e=this;if(e.browserEvent){if(e.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(e)}b.stopEvent(e.browserEvent)}},preventDefault:function(){if(this.browserEvent){b.preventDefault(this.browserEvent)}},stopPropagation:function(){var e=this;if(e.browserEvent){if(e.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(e)}b.stopPropagation(e.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(e){return Ext.isSafari?(a[e]||e):e},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getXY:function(){return this.xy},getTarget:function(g,h,e){return g?Ext.fly(this.target).findParent(g,h,e):(e?Ext.get(this.target):this.target)},getRelatedTarget:function(){return this.browserEvent?b.getRelatedTarget(this.browserEvent):null},getWheelDelta:function(){var g=this.browserEvent;var h=0;if(g.wheelDelta){h=g.wheelDelta/120}else{if(g.detail){h=-g.detail/3}}return h},within:function(h,i,e){if(h){var g=this[i?"getRelatedTarget":"getTarget"]();return g&&((e?(g==Ext.getDom(h)):false)||Ext.fly(h).contains(g))}return false}};return new Ext.EventObjectImpl()}();Ext.Loader=Ext.apply({},{load:function(j,i,k,c){var k=k||this,g=document.getElementsByTagName("head")[0],b=document.createDocumentFragment(),a=j.length,h=0,e=this;var l=function(m){g.appendChild(e.buildScriptTag(j[m],d))};var d=function(){h++;if(a==h&&typeof i=="function"){i.call(k)}else{if(c===true){l(h)}}};if(c===true){l.call(this,0)}else{Ext.each(j,function(n,m){b.appendChild(this.buildScriptTag(n,d))},this);g.appendChild(b)}},buildScriptTag:function(b,c){var a=document.createElement("script");a.type="text/javascript";a.src=b;if(a.readyState){a.onreadystatechange=function(){if(a.readyState=="loaded"||a.readyState=="complete"){a.onreadystatechange=null;c()}}}else{a.onload=c}return a}});Ext.ns("Ext.grid","Ext.list","Ext.dd","Ext.tree","Ext.form","Ext.menu","Ext.state","Ext.layout.boxOverflow","Ext.app","Ext.ux","Ext.chart","Ext.direct","Ext.slider");Ext.apply(Ext,function(){var c=Ext,a=0,b=null;return{emptyFn:function(){},BLANK_IMAGE_URL:Ext.isIE6||Ext.isIE7||Ext.isAir?"http://www.extjs.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",extendX:function(d,e){return Ext.extend(d,e(d.prototype))},getDoc:function(){return Ext.get(document)},num:function(e,d){e=Number(Ext.isEmpty(e)||Ext.isArray(e)||typeof e=="boolean"||(typeof e=="string"&&e.trim().length==0)?NaN:e);return isNaN(e)?d:e},value:function(g,d,e){return Ext.isEmpty(g,e)?d:g},escapeRe:function(d){return d.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1")},sequence:function(h,d,g,e){h[d]=h[d].createSequence(g,e)},addBehaviors:function(i){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(i)})}else{var e={},h,d,g;for(d in i){if((h=d.split("@"))[1]){g=h[0];if(!e[g]){e[g]=Ext.select(g)}e[g].on(h[1],i[d])}}e=null}},getScrollBarWidth:function(g){if(!Ext.isReady){return 0}if(g===true||b===null){var i=Ext.getBody().createChild('<div class="x-hide-offsets" style="width:100px;height:50px;overflow:hidden;"><div style="height:200px;"></div></div>'),h=i.child("div",true);var e=h.offsetWidth;i.setStyle("overflow",(Ext.isWebKit||Ext.isGecko)?"auto":"scroll");var d=h.offsetWidth;i.remove();b=e-d+2}return b},combine:function(){var g=arguments,e=g.length,j=[];for(var h=0;h<e;h++){var d=g[h];if(Ext.isArray(d)){j=j.concat(d)}else{if(d.length!==undefined&&!d.substr){j=j.concat(Array.prototype.slice.call(d,0))}else{j.push(d)}}}return j},copyTo:function(d,e,g){if(typeof g=="string"){g=g.split(/[,;\s]/)}Ext.each(g,function(h){if(e.hasOwnProperty(h)){d[h]=e[h]}},this);return d},destroy:function(){Ext.each(arguments,function(d){if(d){if(Ext.isArray(d)){this.destroy.apply(this,d)}else{if(typeof d.destroy=="function"){d.destroy()}else{if(d.dom){d.remove()}}}}},this)},destroyMembers:function(l,j,g,h){for(var k=1,e=arguments,d=e.length;k<d;k++){Ext.destroy(l[e[k]]);delete l[e[k]]}},clean:function(d){var e=[];Ext.each(d,function(g){if(!!g){e.push(g)}});return e},unique:function(d){var e=[],g={};Ext.each(d,function(h){if(!g[h]){e.push(h)}g[h]=true});return e},flatten:function(d){var g=[];function e(h){Ext.each(h,function(i){if(Ext.isArray(i)){e(i)}else{g.push(i)}});return g}return e(d)},min:function(d,e){var g=d[0];e=e||function(i,h){return i<h?-1:1};Ext.each(d,function(h){g=e(g,h)==-1?g:h});return g},max:function(d,e){var g=d[0];e=e||function(i,h){return i>h?1:-1};Ext.each(d,function(h){g=e(g,h)==1?g:h});return g},mean:function(d){return d.length>0?Ext.sum(d)/d.length:undefined},sum:function(d){var e=0;Ext.each(d,function(g){e+=g});return e},partition:function(d,e){var g=[[],[]];Ext.each(d,function(j,k,h){g[(e&&e(j,k,h))||(!e&&j)?0:1].push(j)});return g},invoke:function(d,e){var h=[],g=Array.prototype.slice.call(arguments,2);Ext.each(d,function(j,k){if(j&&typeof j[e]=="function"){h.push(j[e].apply(j,g))}else{h.push(undefined)}});return h},pluck:function(d,g){var e=[];Ext.each(d,function(h){e.push(h[g])});return e},zip:function(){var n=Ext.partition(arguments,function(i){return typeof i!="function"}),k=n[0],m=n[1][0],d=Ext.max(Ext.pluck(k,"length")),h=[];for(var l=0;l<d;l++){h[l]=[];if(m){h[l]=m.apply(m,Ext.pluck(k,l))}else{for(var g=0,e=k.length;g<e;g++){h[l].push(k[g][l])}}}return h},getCmp:function(d){return Ext.ComponentMgr.get(d)},useShims:c.isIE6||(c.isMac&&c.isGecko2),type:function(e){if(e===undefined||e===null){return false}if(e.htmlElement){return"element"}var d=typeof e;if(d=="object"&&e.nodeName){switch(e.nodeType){case 1:return"element";case 3:return(/\S/).test(e.nodeValue)?"textnode":"whitespace"}}if(d=="object"||d=="function"){switch(e.constructor){case Array:return"array";case RegExp:return"regexp";case Date:return"date"}if(typeof e.length=="number"&&typeof e.item=="function"){return"nodelist"}}return d},intercept:function(h,d,g,e){h[d]=h[d].createInterceptor(g,e)},callback:function(d,h,g,e){if(typeof d=="function"){if(e){d.defer(e,h,g||[])}else{d.apply(h,g||[])}}}}}());Ext.apply(Function.prototype,{createSequence:function(b,a){var c=this;return(typeof b!="function")?this:function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}}});Ext.applyIf(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a}});String.prototype.toggle=function(b,a){return this==b?a:b};String.prototype.trim=function(){var a=/^\s+|\s+$/g;return function(){return this.replace(a,"")}}();Date.prototype.getElapsed=function(a){return Math.abs((a||new Date()).getTime()-this.getTime())};Ext.applyIf(Number.prototype,{constrain:function(b,a){return Math.min(Math.max(this,b),a)}});Ext.lib.Dom.getRegion=function(a){return Ext.lib.Region.getRegion(a)};Ext.lib.Region=function(d,g,a,c){var e=this;e.top=d;e[1]=d;e.right=g;e.bottom=a;e.left=c;e[0]=c};Ext.lib.Region.prototype={contains:function(b){var a=this;return(b.left>=a.left&&b.right<=a.right&&b.top>=a.top&&b.bottom<=a.bottom)},getArea:function(){var a=this;return((a.bottom-a.top)*(a.right-a.left))},intersect:function(h){var g=this,d=Math.max(g.top,h.top),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.left,h.left);if(a>=d&&e>=c){return new Ext.lib.Region(d,e,a,c)}},union:function(h){var g=this,d=Math.min(g.top,h.top),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.left,h.left);return new Ext.lib.Region(d,e,a,c)},constrainTo:function(b){var a=this;a.top=a.top.constrain(b.top,b.bottom);a.bottom=a.bottom.constrain(b.top,b.bottom);a.left=a.left.constrain(b.left,b.right);a.right=a.right.constrain(b.left,b.right);return a},adjust:function(d,c,a,g){var e=this;e.top+=d;e.left+=c;e.right+=g;e.bottom+=a;return e}};Ext.lib.Region.getRegion=function(e){var h=Ext.lib.Dom.getXY(e),d=h[1],g=h[0]+e.offsetWidth,a=h[1]+e.offsetHeight,c=h[0];return new Ext.lib.Region(d,g,a,c)};Ext.lib.Point=function(a,c){if(Ext.isArray(a)){c=a[1];a=a[0]}var b=this;b.x=b.right=b.left=b[0]=a;b.y=b.top=b.bottom=b[1]=c};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.apply(Ext.DomHelper,function(){var e,a="afterbegin",h="afterend",i="beforebegin",d="beforeend",b=/tag|children|cn|html$/i;function g(m,p,n,q,l,j){m=Ext.getDom(m);var k;if(e.useDom){k=c(p,null);if(j){m.appendChild(k)}else{(l=="firstChild"?m:m.parentNode).insertBefore(k,m[l]||m)}}else{k=Ext.DomHelper.insertHtml(q,m,Ext.DomHelper.createHtml(p))}return n?Ext.get(k,true):k}function c(j,r){var k,u=document,p,s,m,t;if(Ext.isArray(j)){k=u.createDocumentFragment();for(var q=0,n=j.length;q<n;q++){c(j[q],k)}}else{if(typeof j=="string"){k=u.createTextNode(j)}else{k=u.createElement(j.tag||"div");p=!!k.setAttribute;for(var s in j){if(!b.test(s)){m=j[s];if(s=="cls"){k.className=m}else{if(p){k.setAttribute(s,m)}else{k[s]=m}}}}Ext.DomHelper.applyStyles(k,j.style);if((t=j.children||j.cn)){c(t,k)}else{if(j.html){k.innerHTML=j.html}}}}if(r){r.appendChild(k)}return k}e={createTemplate:function(k){var j=Ext.DomHelper.createHtml(k);return new Ext.Template(j)},useDom:false,insertBefore:function(j,l,k){return g(j,l,k,i)},insertAfter:function(j,l,k){return g(j,l,k,h,"nextSibling")},insertFirst:function(j,l,k){return g(j,l,k,a,"firstChild")},append:function(j,l,k){return g(j,l,k,d,"",true)},createDom:c};return e}());Ext.apply(Ext.Template.prototype,{disableFormats:false,re:/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,argsRe:/^\s*['"](.*)["']\s*$/,compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,applyTemplate:function(b){var g=this,a=g.disableFormats!==true,e=Ext.util.Format,c=g;if(g.compiled){return g.compiled(b)}function d(j,l,p,k){if(p&&a){if(p.substr(0,5)=="this."){return c.call(p.substr(5),b[l],b)}else{if(k){var o=g.argsRe;k=k.split(",");for(var n=0,h=k.length;n<h;n++){k[n]=k[n].replace(o,"$1")}k=[b[l]].concat(k)}else{k=[b[l]]}return e[p].apply(e,k)}}else{return b[l]!==undefined?b[l]:""}}return g.html.replace(g.re,d)},compile:function(){var me=this,fm=Ext.util.Format,useF=me.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(m,name,format,args){if(format&&useF){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format='this.call("'+format.substr(5)+'", ';args=", values"}}else{args="";format="(values['"+name+"'] == undefined ? '' : "}return"'"+sep+format+"values['"+name+"']"+args+")"+sep+"'"}if(Ext.isGecko){body="this.compiled = function(values){ return '"+me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn)+"';};"}else{body=["this.compiled = function(values){ return ['"];body.push(me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn));body.push("'].join('');};");body=body.join("")}eval(body);return me},call:function(c,b,a){return this[c](b,a)}});Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.util.Functions={createInterceptor:function(c,b,a){var d=c;if(!Ext.isFunction(b)){return c}else{return function(){var g=this,e=arguments;b.target=g;b.method=c;return(b.apply(a||g||window,e)!==false)?c.apply(g||window,e):null}}},createDelegate:function(c,d,b,a){if(!Ext.isFunction(c)){return c}return function(){var g=b||arguments;if(a===true){g=Array.prototype.slice.call(arguments,0);g=g.concat(b)}else{if(Ext.isNumber(a)){g=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(g,e)}}return c.apply(d||window,g)}},defer:function(d,c,e,b,a){d=Ext.util.Functions.createDelegate(d,e,b,a);if(c>0){return setTimeout(d,c)}d();return 0},createSequence:function(c,b,a){if(!Ext.isFunction(b)){return c}else{return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}}}};Ext.defer=Ext.util.Functions.defer;Ext.createInterceptor=Ext.util.Functions.createInterceptor;Ext.createSequence=Ext.util.Functions.createSequence;Ext.createDelegate=Ext.util.Functions.createDelegate;Ext.apply(Ext.util.Observable.prototype,function(){function a(j){var i=(this.methodEvents=this.methodEvents||{})[j],d,c,g,h=this;if(!i){this.methodEvents[j]=i={};i.originalFn=this[j];i.methodName=j;i.before=[];i.after=[];var b=function(l,k,e){if((c=l.apply(k||h,e))!==undefined){if(typeof c=="object"){if(c.returnValue!==undefined){d=c.returnValue}else{d=c}g=!!c.cancel}else{if(c===false){g=true}else{d=c}}}};this[j]=function(){var l=Array.prototype.slice.call(arguments,0),k;d=c=undefined;g=false;for(var m=0,e=i.before.length;m<e;m++){k=i.before[m];b(k.fn,k.scope,l);if(g){return d}}if((c=i.originalFn.apply(h,l))!==undefined){d=c}for(var m=0,e=i.after.length;m<e;m++){k=i.after[m];b(k.fn,k.scope,l);if(g){return d}}return d}}return i}return{beforeMethod:function(d,c,b){a.call(this,d).before.push({fn:c,scope:b})},afterMethod:function(d,c,b){a.call(this,d).after.push({fn:c,scope:b})},removeMethodListener:function(j,g,d){var h=this.getMethodEvent(j);for(var c=0,b=h.before.length;c<b;c++){if(h.before[c].fn==g&&h.before[c].scope==d){h.before.splice(c,1);return}}for(var c=0,b=h.after.length;c<b;c++){if(h.after[c].fn==g&&h.after[c].scope==d){h.after.splice(c,1);return}}},relayEvents:function(j,e){var h=this;function g(i){return function(){return h.fireEvent.apply(h,[i].concat(Array.prototype.slice.call(arguments,0)))}}for(var d=0,b=e.length;d<b;d++){var c=e[d];h.events[c]=h.events[c]||true;j.on(c,g(c),h)}},enableBubble:function(e){var g=this;if(!Ext.isEmpty(e)){e=Ext.isArray(e)?e:Array.prototype.slice.call(arguments,0);for(var d=0,b=e.length;d<b;d++){var c=e[d];c=c.toLowerCase();var h=g.events[c]||true;if(typeof h=="boolean"){h=new Ext.util.Event(g,c);g.events[c]=h}h.bubble=true}}}}}());Ext.util.Observable.capture=function(c,b,a){c.fireEvent=c.fireEvent.createInterceptor(b,a)};Ext.util.Observable.observeClass=function(b,a){if(b){if(!b.fireEvent){Ext.apply(b,new Ext.util.Observable());Ext.util.Observable.capture(b.prototype,b.fireEvent,b)}if(typeof a=="object"){b.on(a)}return b}};Ext.apply(Ext.EventManager,function(){var d,k,g,b,a=Ext.lib.Dom,j=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,c=Ext.EventManager._unload,i=0,h=0,e=Ext.isWebKit?Ext.num(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1])>=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera);return{_unload:function(){Ext.EventManager.un(window,"resize",this.fireWindowResize,this);c.call(Ext.EventManager)},doResizeEvent:function(){var m=a.getViewHeight(),l=a.getViewWidth();if(h!=m||i!=l){d.fire(i=l,h=m)}},onWindowResize:function(n,m,l){if(!d){d=new Ext.util.Event();k=new Ext.util.DelayedTask(this.doResizeEvent);Ext.EventManager.on(window,"resize",this.fireWindowResize,this)}d.addListener(n,m,l)},fireWindowResize:function(){if(d){k.delay(100)}},onTextResize:function(o,n,l){if(!g){g=new Ext.util.Event();var m=new Ext.Element(document.createElement("div"));m.dom.className="x-text-resize";m.dom.innerHTML="X";m.appendTo(document.body);b=m.dom.offsetHeight;setInterval(function(){if(m.dom.offsetHeight!=b){g.fire(b,b=m.dom.offsetHeight)}},this.textResizeInterval)}g.addListener(o,n,l)},removeResizeListener:function(m,l){if(d){d.removeListener(m,l)}},fireResize:function(){if(d){d.fire(a.getViewWidth(),a.getViewHeight())}},textResizeInterval:50,ieDeferSrc:false,getKeyEvent:function(){return e?"keydown":"keypress"},useKeydown:e}}());Ext.EventManager.on=Ext.EventManager.addListener;Ext.apply(Ext.EventObjectImpl.prototype,{BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,CONTROL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGEUP:33,PAGE_DOWN:34,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1])},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)}});Ext.Element.addMethods({swallowEvent:function(a,b){var d=this;function c(g){g.stopPropagation();if(b){g.preventDefault()}}if(Ext.isArray(a)){Ext.each(a,function(g){d.on(g,c)});return d}d.on(a,c);return d},relayEvent:function(a,b){this.on(a,function(c){b.fireEvent(a,c)})},clean:function(b){var d=this,e=d.dom,g=e.firstChild,c=-1;if(Ext.Element.data(e,"isCleaned")&&b!==true){return d}while(g){var a=g.nextSibling;if(g.nodeType==3&&!(/\S/.test(g.nodeValue))){e.removeChild(g)}else{g.nodeIndex=++c}g=a}Ext.Element.data(e,"isCleaned",true);return d},load:function(){var a=this.getUpdater();a.update.apply(a,arguments);return this},getUpdater:function(){return this.updateManager||(this.updateManager=new Ext.Updater(this))},update:function(html,loadScripts,callback){if(!this.dom){return this}html=html||"";if(loadScripts!==true){this.dom.innerHTML=html;if(typeof callback=="function"){callback()}return this}var id=Ext.id(),dom=this.dom;html+='<span id="'+id+'"></span>';Ext.lib.Event.onAvailable(id,function(){var DOC=document,hd=DOC.getElementsByTagName("head")[0],re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,match,attrs,srcMatch,typeMatch,el,s;while((match=re.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}el=DOC.getElementById(id);if(el){Ext.removeNode(el)}if(typeof callback=="function"){callback()}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(a,e,d){a=(typeof a=="object")?a:{tag:"div",cls:a};var c=this,b=e?Ext.DomHelper.append(e,a,true):Ext.DomHelper.insertBefore(c.dom,a,true);if(d&&c.setBox&&c.getBox){b.setBox(c.getBox())}return b}});Ext.Element.prototype.getUpdateManager=Ext.Element.prototype.getUpdater;Ext.Element.addMethods({getAnchorXY:function(e,l,q){e=(e||"tl").toLowerCase();q=q||{};var k=this,b=k.dom==document.body||k.dom==document,n=q.width||b?Ext.lib.Dom.getViewWidth():k.getWidth(),i=q.height||b?Ext.lib.Dom.getViewHeight():k.getHeight(),p,a=Math.round,c=k.getXY(),m=k.getScroll(),j=b?m.left:!l?c[0]:0,g=b?m.top:!l?c[1]:0,d={c:[a(n*0.5),a(i*0.5)],t:[a(n*0.5),0],l:[0,a(i*0.5)],r:[n,a(i*0.5)],b:[a(n*0.5),i],tl:[0,0],bl:[0,i],br:[n,i],tr:[n,0]};p=d[e];return[p[0]+j,p[1]+g]},anchorTo:function(b,h,c,a,k,l){var i=this,e=i.dom,j=!Ext.isEmpty(k),d=function(){Ext.fly(e).alignTo(b,h,c,a);Ext.callback(l,Ext.fly(e))},g=this.getAnchor();this.removeAnchor();Ext.apply(g,{fn:d,scroll:j});Ext.EventManager.onWindowResize(d,null);if(j){Ext.EventManager.on(window,"scroll",d,null,{buffer:!isNaN(k)?k:50})}d.call(i);return i},removeAnchor:function(){var b=this,a=this.getAnchor();if(a&&a.fn){Ext.EventManager.removeResizeListener(a.fn);if(a.scroll){Ext.EventManager.un(window,"scroll",a.fn)}delete a.fn}return b},getAnchor:function(){var b=Ext.Element.data,c=this.dom;if(!c){return}var a=b(c,"_anchor");if(!a){a=b(c,"_anchor",{})}return a},getAlignToXY:function(g,A,B){g=Ext.get(g);if(!g||!g.dom){throw"Element.alignToXY with an element that doesn't exist"}B=B||[0,0];A=(!A||A=="?"?"tl-bl?":(!(/-/).test(A)&&A!==""?"tl-"+A:A||"tl-bl")).toLowerCase();var K=this,H=K.dom,M,L,n,l,s,F,v,t=Ext.lib.Dom.getViewWidth()-10,G=Ext.lib.Dom.getViewHeight()-10,b,i,j,k,u,z,N=document,J=N.documentElement,q=N.body,E=(J.scrollLeft||q.scrollLeft||0)+5,D=(J.scrollTop||q.scrollTop||0)+5,I=false,e="",a="",C=A.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!C){throw"Element.alignTo with an invalid alignment "+A}e=C[1];a=C[2];I=!!C[3];M=K.getAnchorXY(e,true);L=g.getAnchorXY(a,false);n=L[0]-M[0]+B[0];l=L[1]-M[1]+B[1];if(I){s=K.getWidth();F=K.getHeight();v=g.getRegion();b=e.charAt(0);i=e.charAt(e.length-1);j=a.charAt(0);k=a.charAt(a.length-1);u=((b=="t"&&j=="b")||(b=="b"&&j=="t"));z=((i=="r"&&k=="l")||(i=="l"&&k=="r"));if(n+s>t+E){n=z?v.left-s:t+E-s}if(n<E){n=z?v.right:E}if(l+F>G+D){l=u?v.top-F:G+D-F}if(l<D){l=u?v.bottom:D}}return[n,l]},alignTo:function(c,a,e,b){var d=this;return d.setXY(d.getAlignToXY(c,a,e),d.preanim&&!!b?d.preanim(arguments,3):false)},adjustForConstraints:function(c,a,b){return this.getConstrainToXY(a||document,false,b,c)||c},getConstrainToXY:function(b,a,c,e){var d={top:0,left:0,bottom:0,right:0};return function(i,A,l,n){i=Ext.get(i);l=l?Ext.applyIf(l,d):d;var z,D,v=0,u=0;if(i.dom==document.body||i.dom==document){z=Ext.lib.Dom.getViewWidth();D=Ext.lib.Dom.getViewHeight()}else{z=i.dom.clientWidth;D=i.dom.clientHeight;if(!A){var t=i.getXY();v=t[0];u=t[1]}}var r=i.getScroll();v+=l.left+r.left;u+=l.top+r.top;z-=l.right;D-=l.bottom;var B=v+z,g=u+D,j=n||(!A?this.getXY():[this.getLeft(true),this.getTop(true)]),p=j[0],o=j[1],k=this.getConstrainOffset(),q=this.dom.offsetWidth+k,C=this.dom.offsetHeight+k;var m=false;if((p+q)>B){p=B-q;m=true}if((o+C)>g){o=g-C;m=true}if(p<v){p=v;m=true}if(o<u){o=u;m=true}return m?[p,o]:false}}(),getConstrainOffset:function(){return 0},getCenterXY:function(){return this.getAlignToXY(document,"c-c")},center:function(a){return this.alignTo(a||document,"c-c")}});Ext.Element.addMethods({select:function(a,b){return Ext.Element.select(a,b,this.dom)}});Ext.apply(Ext.Element.prototype,function(){var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;return{insertSibling:function(i,g,h){var j=this,e,d=(g||"before").toLowerCase()=="after",k;if(Ext.isArray(i)){k=j;Ext.each(i,function(l){e=Ext.fly(k,"_internal").insertSibling(l,g,h);if(d){k=e}});return e}i=i||{};if(i.nodeType||i.dom){e=j.dom.parentNode.insertBefore(c(i),d?j.dom.nextSibling:j.dom);if(!h){e=a(e)}}else{if(d&&!j.dom.nextSibling){e=b.append(j.dom.parentNode,i,!h)}else{e=b[d?"insertAfter":"insertBefore"](j.dom,i,!h)}}return e}}}());Ext.Element.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';Ext.Element.addMethods(function(){var a="_internal",b=/(\d+\.?\d+)px/;return{applyStyles:function(c){Ext.DomHelper.applyStyles(this.dom,c);return this},getStyles:function(){var c={};Ext.each(arguments,function(d){c[d]=this.getStyle(d)},this);return c},setOverflow:function(c){var d=this.dom;if(c=="auto"&&Ext.isMac&&Ext.isGecko2){d.style.overflow="hidden";(function(){d.style.overflow="auto"}).defer(1)}else{d.style.overflow=c}},boxWrap:function(c){c=c||"x-box";var d=Ext.get(this.insertHtml("beforeBegin","<div class='"+c+"'>"+String.format(Ext.Element.boxMarkup,c)+"</div>"));Ext.DomQuery.selectNode("."+c+"-mc",d.dom).appendChild(this.dom);return d},setSize:function(e,c,d){var g=this;if(typeof e=="object"){c=e.height;e=e.width}e=g.adjustWidth(e);c=g.adjustHeight(c);if(!d||!g.anim){g.dom.style.width=g.addUnits(e);g.dom.style.height=g.addUnits(c)}else{g.anim({width:{to:e},height:{to:c}},g.preanim(arguments,2))}return g},getComputedHeight:function(){var d=this,c=Math.max(d.dom.offsetHeight,d.dom.clientHeight);if(!c){c=parseFloat(d.getStyle("height"))||0;if(!d.isBorderBox()){c+=d.getFrameWidth("tb")}}return c},getComputedWidth:function(){var c=Math.max(this.dom.offsetWidth,this.dom.clientWidth);if(!c){c=parseFloat(this.getStyle("width"))||0;if(!this.isBorderBox()){c+=this.getFrameWidth("lr")}}return c},getFrameWidth:function(d,c){return c&&this.isBorderBox()?0:(this.getPadding(d)+this.getBorderWidth(d))},addClassOnOver:function(c){this.hover(function(){Ext.fly(this,a).addClass(c)},function(){Ext.fly(this,a).removeClass(c)});return this},addClassOnFocus:function(c){this.on("focus",function(){Ext.fly(this,a).addClass(c)},this.dom);this.on("blur",function(){Ext.fly(this,a).removeClass(c)},this.dom);return this},addClassOnClick:function(c){var d=this.dom;this.on("mousedown",function(){Ext.fly(d,a).addClass(c);var g=Ext.getDoc(),e=function(){Ext.fly(d,a).removeClass(c);g.removeListener("mouseup",e)};g.on("mouseup",e)});return this},getViewSize:function(){var g=document,h=this.dom,c=(h==g||h==g.body);if(c){var e=Ext.lib.Dom;return{width:e.getViewWidth(),height:e.getViewHeight()}}else{return{width:h.clientWidth,height:h.clientHeight}}},getStyleSize:function(){var j=this,c,i,l=document,m=this.dom,e=(m==l||m==l.body),g=m.style;if(e){var k=Ext.lib.Dom;return{width:k.getViewWidth(),height:k.getViewHeight()}}if(g.width&&g.width!="auto"){c=parseFloat(g.width);if(j.isBorderBox()){c-=j.getFrameWidth("lr")}}if(g.height&&g.height!="auto"){i=parseFloat(g.height);if(j.isBorderBox()){i-=j.getFrameWidth("tb")}}return{width:c||j.getWidth(true),height:i||j.getHeight(true)}},getSize:function(c){return{width:this.getWidth(c),height:this.getHeight(c)}},repaint:function(){var c=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.fly(c).removeClass("x-repaint")},1);return this},unselectable:function(){this.dom.unselectable="on";return this.swallowEvent("selectstart",true).addClass("x-unselectable")},getMargins:function(d){var e=this,c,g={t:"top",l:"left",r:"right",b:"bottom"},h={};if(!d){for(c in e.margins){h[g[c]]=parseFloat(e.getStyle(e.margins[c]))||0}return h}else{return e.addStyles.call(e,d,e.margins)}}}}());Ext.Element.addMethods({setBox:function(e,g,b){var d=this,a=e.width,c=e.height;if((g&&!d.autoBoxAdjust)&&!d.isBorderBox()){a-=(d.getBorderWidth("lr")+d.getPadding("lr"));c-=(d.getBorderWidth("tb")+d.getPadding("tb"))}d.setBounds(e.x,e.y,a,c,d.animTest.call(d,arguments,b,2));return d},getBox:function(j,p){var m=this,v,e,o,d=m.getBorderWidth,q=m.getPadding,g,a,u,n;if(!p){v=m.getXY()}else{e=parseInt(m.getStyle("left"),10)||0;o=parseInt(m.getStyle("top"),10)||0;v=[e,o]}var c=m.dom,s=c.offsetWidth,i=c.offsetHeight,k;if(!j){k={x:v[0],y:v[1],0:v[0],1:v[1],width:s,height:i}}else{g=d.call(m,"l")+q.call(m,"l");a=d.call(m,"r")+q.call(m,"r");u=d.call(m,"t")+q.call(m,"t");n=d.call(m,"b")+q.call(m,"b");k={x:v[0]+g,y:v[1]+u,0:v[0]+g,1:v[1]+u,width:s-(g+a),height:i-(u+n)}}k.right=k.x+k.width;k.bottom=k.y+k.height;return k},move:function(j,b,c){var g=this,m=g.getXY(),k=m[0],i=m[1],d=[k-b,i],l=[k+b,i],h=[k,i-b],a=[k,i+b],e={l:d,left:d,r:l,right:l,t:h,top:h,up:h,b:a,bottom:a,down:a};j=j.toLowerCase();g.moveTo(e[j][0],e[j][1],g.animTest.call(g,arguments,c,2))},setLeftTop:function(d,c){var b=this,a=b.dom.style;a.left=b.addUnits(d);a.top=b.addUnits(c);return b},getRegion:function(){return Ext.lib.Dom.getRegion(this.dom)},setBounds:function(b,g,d,a,c){var e=this;if(!c||!e.anim){e.setSize(d,a);e.setLocation(b,g)}else{e.anim({points:{to:[b,g]},width:{to:e.adjustWidth(d)},height:{to:e.adjustHeight(a)}},e.preanim(arguments,4),"motion")}return e},setRegion:function(b,a){return this.setBounds(b.left,b.top,b.right-b.left,b.bottom-b.top,this.animTest.call(this,arguments,a,1))}});Ext.Element.addMethods({scrollTo:function(b,d,a){var e=/top/i.test(b),c=this,g=c.dom,h;if(!a||!c.anim){h="scroll"+(e?"Top":"Left");g[h]=d}else{h="scroll"+(e?"Left":"Top");c.anim({scroll:{to:e?[g[h],d]:[d,g[h]]}},c.preanim(arguments,2),"scroll")}return c},scrollIntoView:function(e,i){var p=Ext.getDom(e)||Ext.getBody().dom,h=this.dom,g=this.getOffsetsTo(p),k=g[0]+p.scrollLeft,u=g[1]+p.scrollTop,q=u+h.offsetHeight,d=k+h.offsetWidth,a=p.clientHeight,m=parseInt(p.scrollTop,10),s=parseInt(p.scrollLeft,10),j=m+a,n=s+p.clientWidth;if(h.offsetHeight>a||u<m){p.scrollTop=u}else{if(q>j){p.scrollTop=q-a}}p.scrollTop=p.scrollTop;if(i!==false){if(h.offsetWidth>p.clientWidth||k<s){p.scrollLeft=k}else{if(d>n){p.scrollLeft=d-p.clientWidth}}p.scrollLeft=p.scrollLeft}return this},scrollChildIntoView:function(b,a){Ext.fly(b,"_scrollChildIntoView").scrollIntoView(this,a)},scroll:function(m,b,d){if(!this.isScrollable()){return false}var e=this.dom,g=e.scrollLeft,p=e.scrollTop,n=e.scrollWidth,k=e.scrollHeight,i=e.clientWidth,a=e.clientHeight,c=false,o,j={l:Math.min(g+b,n-i),r:o=Math.max(g-b,0),t:Math.max(p-b,0),b:Math.min(p+b,k-a)};j.d=j.b;j.u=j.t;m=m.substr(0,1);if((o=j[m])>-1){c=true;this.scrollTo(m=="l"||m=="r"?"left":"top",o,this.preanim(arguments,2))}return c}});Ext.Element.addMethods(function(){var d="visibility",b="display",a="hidden",h="none",c="x-masked",g="x-masked-relative",e=Ext.Element.data;return{isVisible:function(i){var j=!this.isStyle(d,a)&&!this.isStyle(b,h),k=this.dom.parentNode;if(i!==true||!j){return j}while(k&&!(/^body/i.test(k.tagName))){if(!Ext.fly(k,"_isVisible").isVisible()){return false}k=k.parentNode}return true},isDisplayed:function(){return !this.isStyle(b,h)},enableDisplayMode:function(i){this.setVisibilityMode(Ext.Element.DISPLAY);if(!Ext.isEmpty(i)){e(this.dom,"originalDisplay",i)}return this},mask:function(j,n){var p=this,l=p.dom,o=Ext.DomHelper,m="ext-el-mask-msg",i,q;if(!/^body/i.test(l.tagName)&&p.getStyle("position")=="static"){p.addClass(g)}if(i=e(l,"maskMsg")){i.remove()}if(i=e(l,"mask")){i.remove()}q=o.append(l,{cls:"ext-el-mask"},true);e(l,"mask",q);p.addClass(c);q.setDisplayed(true);if(typeof j=="string"){var k=o.append(l,{cls:m,cn:{tag:"div"}},true);e(l,"maskMsg",k);k.dom.className=n?m+" "+n:m;k.dom.firstChild.innerHTML=j;k.setDisplayed(true);k.center(p)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&p.getStyle("height")=="auto"){q.setSize(undefined,p.getHeight())}return q},unmask:function(){var k=this,l=k.dom,i=e(l,"mask"),j=e(l,"maskMsg");if(i){if(j){j.remove();e(l,"maskMsg",undefined)}i.remove();e(l,"mask",undefined);k.removeClass([c,g])}},isMasked:function(){var i=e(this.dom,"mask");return i&&i.isVisible()},createShim:function(){var i=document.createElement("iframe"),j;i.frameBorder="0";i.className="ext-shim";i.src=Ext.SSL_SECURE_URL;j=Ext.get(this.dom.parentNode.insertBefore(i,this.dom));j.autoBoxAdjust=false;return j}}}());Ext.Element.addMethods({addKeyListener:function(b,d,c){var a;if(typeof b!="object"||Ext.isArray(b)){a={key:b,fn:d,scope:c}}else{a={key:b.key,shift:b.shift,ctrl:b.ctrl,alt:b.alt,fn:d,scope:c}}return new Ext.KeyMap(this,a)},addKeyMap:function(a){return new Ext.KeyMap(this,a)}});Ext.CompositeElementLite.importElementMethods();Ext.apply(Ext.CompositeElementLite.prototype,{addElements:function(c,a){if(!c){return this}if(typeof c=="string"){c=Ext.Element.selectorFunction(c,a)}var b=this.elements;Ext.each(c,function(d){b.push(Ext.get(d))});return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},removeElement:function(d,e){var c=this,a=this.elements,b;Ext.each(d,function(g){if((b=(a[g]||a[g=c.indexOf(g)]))){if(e){if(b.dom){b.remove()}else{Ext.removeNode(b)}}a.splice(g,1)}});return this}});Ext.CompositeElement=Ext.extend(Ext.CompositeElementLite,{constructor:function(b,a){this.elements=[];this.add(b,a)},getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}});Ext.Element.select=function(a,d,b){var c;if(typeof a=="string"){c=Ext.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{throw"Invalid selector"}}return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)};Ext.select=Ext.Element.select;Ext.UpdateManager=Ext.Updater=Ext.extend(Ext.util.Observable,function(){var b="beforeupdate",d="update",c="failure";function a(h){var i=this;i.transaction=null;if(h.argument.form&&h.argument.reset){try{h.argument.form.reset()}catch(j){}}if(i.loadScripts){i.renderer.render(i.el,h,i,g.createDelegate(i,[h]))}else{i.renderer.render(i.el,h,i);g.call(i,h)}}function g(h,i,j){this.fireEvent(i||d,this.el,h);if(Ext.isFunction(h.argument.callback)){h.argument.callback.call(h.argument.scope,this.el,Ext.isEmpty(j)?true:false,h,h.argument.options)}}function e(h){g.call(this,h,c,!!(this.transaction=null))}return{constructor:function(i,h){var j=this;i=Ext.get(i);if(!h&&i.updateManager){return i.updateManager}j.el=i;j.defaultUrl=null;j.addEvents(b,d,c);Ext.apply(j,Ext.Updater.defaults);j.transaction=null;j.refreshDelegate=j.refresh.createDelegate(j);j.updateDelegate=j.update.createDelegate(j);j.formUpdateDelegate=(j.formUpdate||function(){}).createDelegate(j);j.renderer=j.renderer||j.getDefaultRenderer();Ext.Updater.superclass.constructor.call(j)},setRenderer:function(h){this.renderer=h},getRenderer:function(){return this.renderer},getDefaultRenderer:function(){return new Ext.Updater.BasicRenderer()},setDefaultUrl:function(h){this.defaultUrl=h},getEl:function(){return this.el},update:function(i,n,p,l){var k=this,h,j;if(k.fireEvent(b,k.el,i,n)!==false){if(Ext.isObject(i)){h=i;i=h.url;n=n||h.params;p=p||h.callback;l=l||h.discardUrl;j=h.scope;if(!Ext.isEmpty(h.nocache)){k.disableCaching=h.nocache}if(!Ext.isEmpty(h.text)){k.indicatorText='<div class="loading-indicator">'+h.text+"</div>"}if(!Ext.isEmpty(h.scripts)){k.loadScripts=h.scripts}if(!Ext.isEmpty(h.timeout)){k.timeout=h.timeout}}k.showLoading();if(!l){k.defaultUrl=i}if(Ext.isFunction(i)){i=i.call(k)}var m=Ext.apply({},{url:i,params:(Ext.isFunction(n)&&j)?n.createDelegate(j):n,success:a,failure:e,scope:k,callback:undefined,timeout:(k.timeout*1000),disableCaching:k.disableCaching,argument:{options:h,url:i,form:null,callback:p,scope:j||window,params:n}},h);k.transaction=Ext.Ajax.request(m)}},formUpdate:function(k,h,j,l){var i=this;if(i.fireEvent(b,i.el,k,h)!==false){if(Ext.isFunction(h)){h=h.call(i)}k=Ext.getDom(k);i.transaction=Ext.Ajax.request({form:k,url:h,success:a,failure:e,scope:i,timeout:(i.timeout*1000),argument:{url:h,form:k,callback:l,reset:j}});i.showLoading.defer(1,i)}},startAutoRefresh:function(i,j,l,m,h){var k=this;if(h){k.update(j||k.defaultUrl,l,m,true)}if(k.autoRefreshProcId){clearInterval(k.autoRefreshProcId)}k.autoRefreshProcId=setInterval(k.update.createDelegate(k,[j||k.defaultUrl,l,m,true]),i*1000)},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId}},isAutoRefreshing:function(){return !!this.autoRefreshProcId},showLoading:function(){if(this.showLoadIndicator){this.el.dom.innerHTML=this.indicatorText}},abort:function(){if(this.transaction){Ext.Ajax.abort(this.transaction)}},isUpdating:function(){return this.transaction?Ext.Ajax.isLoading(this.transaction):false},refresh:function(h){if(this.defaultUrl){this.update(this.defaultUrl,null,h,true)}}}}());Ext.Updater.defaults={timeout:30,disableCaching:false,showLoadIndicator:true,indicatorText:'<div class="loading-indicator">Loading...</div>',loadScripts:false,sslBlankUrl:Ext.SSL_SECURE_URL};Ext.Updater.updateElement=function(d,c,e,b){var a=Ext.get(d).getUpdater();Ext.apply(a,b);a.update(c,e,b?b.callback:null)};Ext.Updater.BasicRenderer=function(){};Ext.Updater.BasicRenderer.prototype={render:function(c,a,b,d){c.update(a.responseText,b.loadScripts,d)}};(function(){Date.useStrict=false;function b(d){var c=Array.prototype.slice.call(arguments,1);return d.replace(/\{(\d+)\}/g,function(e,g){return c[g]})}Date.formatCodeToRegex=function(d,c){var e=Date.parseCodes[d];if(e){e=typeof e=="function"?e():e;Date.parseCodes[d]=e}return e?Ext.applyIf({c:e.c?b(e.c,c||"{0}"):e.c},e):{g:0,c:null,s:Ext.escapeRe(d)}};var a=Date.formatCodeToRegex;Ext.apply(Date,{parseFunctions:{"M$":function(d,c){var e=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/");var g=(d||"").match(e);return g?new Date(((g[1]||"")+g[2])*1):null}},parseRegexes:[],formatFunctions:{"M$":function(){return"\\/Date("+this.getTime()+")\\/"}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},getShortMonthName:function(c){return Date.monthNames[c].substring(0,3)},getShortDayName:function(c){return Date.dayNames[c].substring(0,3)},getMonthNumber:function(c){return Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]},formatContainsHourInfo:(function(){var d=/(\\.)/g,c=/([gGhHisucUOPZ]|M\$)/;return function(e){return c.test(e.replace(d,""))}})(),formatCodes:{d:"String.leftPad(this.getDate(), 2, '0')",D:"Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"this.getSuffix()",w:"this.getDay()",z:"this.getDayOfYear()",W:"String.leftPad(this.getWeekOfYear(), 2, '0')",F:"Date.monthNames[this.getMonth()]",m:"String.leftPad(this.getMonth() + 1, 2, '0')",M:"Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"this.getDaysInMonth()",L:"(this.isLeapYear() ? 1 : 0)",o:"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"String.leftPad(this.getHours(), 2, '0')",i:"String.leftPad(this.getMinutes(), 2, '0')",s:"String.leftPad(this.getSeconds(), 2, '0')",u:"String.leftPad(this.getMilliseconds(), 3, '0')",O:"this.getGMTOffset()",P:"this.getGMTOffset(true)",T:"this.getTimezone()",Z:"(this.getTimezoneOffset() * -60)",c:function(){for(var k="Y-m-dTH:i:sP",h=[],g=0,d=k.length;g<d;++g){var j=k.charAt(g);h.push(j=="T"?"'T'":Date.getFormatCode(j))}return h.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(o,c,n,k,g,j,e){k=k||0;g=g||0;j=j||0;e=e||0;var l=new Date(o<100?100:o,c-1,n,k,g,j,e).add(Date.YEAR,o<100?o-100:0);return o==l.getFullYear()&&c==l.getMonth()+1&&n==l.getDate()&&k==l.getHours()&&g==l.getMinutes()&&j==l.getSeconds()&&e==l.getMilliseconds()},parseDate:function(d,g,c){var e=Date.parseFunctions;if(e[g]==null){Date.createParser(g)}return e[g](d,Ext.isDefined(c)?c:Date.useStrict)},getFormatCode:function(d){var c=Date.formatCodes[d];if(c){c=typeof c=="function"?c():c;Date.formatCodes[d]=c}return c||("'"+String.escape(d)+"'")},createFormat:function(h){var g=[],c=false,e="";for(var d=0;d<h.length;++d){e=h.charAt(d);if(!c&&e=="\\"){c=true}else{if(c){c=false;g.push("'"+String.escape(e)+"'")}else{g.push(Date.getFormatCode(e))}}}Date.formatFunctions[h]=new Function("return "+g.join("+"))},createParser:function(){var c=["var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,","def = Date.defaults,","results = String(input).match(Date.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = (new Date()).clearTime();","y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));","m = Ext.num(m, Ext.num(def.m - 1, dt.getMonth()));","d = Ext.num(d, Ext.num(def.d, dt.getDate()));","h = Ext.num(h, Ext.num(def.h, dt.getHours()));","i = Ext.num(i, Ext.num(def.i, dt.getMinutes()));","s = Ext.num(s, Ext.num(def.s, dt.getSeconds()));","ms = Ext.num(ms, Ext.num(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);","}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","v = new Date(y < 100 ? 100 : y, m, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","}","}","}","if(v){","if(zz != null){","v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");return function(m){var e=Date.parseRegexes.length,o=1,g=[],l=[],k=false,d="",j=0,h,n;for(;j<m.length;++j){d=m.charAt(j);if(!k&&d=="\\"){k=true}else{if(k){k=false;l.push(String.escape(d))}else{h=a(d,o);o+=h.g;l.push(h.s);if(h.g&&h.c){if(h.calcLast){n=h.c}else{g.push(h.c)}}}}}if(n){g.push(n)}Date.parseRegexes[e]=new RegExp("^"+l.join("")+"$","i");Date.parseFunctions[m]=new Function("input","strict",b(c,e,g.join("")))}}(),parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},D:function(){for(var c=[],d=0;d<7;c.push(Date.getShortDayName(d)),++d){}return{g:0,c:null,s:"(?:"+c.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:0,c:null,s:"(?:\\d{2})"},F:function(){return{g:1,c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n",s:"("+Date.monthNames.join("|")+")"}},M:function(){for(var c=[],d=0;d<12;c.push(Date.getShortMonthName(d)),++d){}return Ext.applyIf({s:"("+c.join("|")+")"},a("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{2})"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{1,2})"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:function(){return a("Y")},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:function(){return a("A")},A:{calcLast:true,g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)"},g:function(){return a("G")},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},h:function(){return a("H")},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,4}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var e=[],c=[a("Y",1),a("m",2),a("d",3),a("h",4),a("i",5),a("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",a("P",8).c,"}else{",a("O",8).c,"}","}"].join("\n")}];for(var g=0,d=c.length;g<d;++g){e.push(c[g].c)}return{g:1,c:e.join(""),s:[c[0].s,"(?:","-",c[1].s,"(?:","-",c[2].s,"(?:","(?:T| )?",c[3].s,":",c[4].s,"(?::",c[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}}})}());Ext.apply(Date.prototype,{dateFormat:function(a){if(Date.formatFunctions[a]==null){Date.createFormat(a)}return Date.formatFunctions[a].call(this)},getTimezone:function(){return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(a){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+(a?":":"")+String.leftPad(Math.abs(this.getTimezoneOffset()%60),2,"0")},getDayOfYear:function(){var b=0,e=this.clone(),a=this.getMonth(),c;for(c=0,e.setDate(1),e.setMonth(0);c<a;e.setMonth(++c)){b+=e.getDaysInMonth()}return b+this.getDate()-1},getWeekOfYear:function(){var a=86400000,b=7*a;return function(){var d=Date.UTC(this.getFullYear(),this.getMonth(),this.getDate()+3)/a,c=Math.floor(d/7),e=new Date(c*b).getUTCFullYear();return c-Math.floor(Date.UTC(e,0,7)/b)+1}}(),isLeapYear:function(){var a=this.getFullYear();return !!((a&3)==0&&(a%100||(a%400==0&&a)))},getFirstDayOfMonth:function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a},getLastDayOfMonth:function(){return this.getLastDateOfMonth().getDay()},getFirstDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),1)},getLastDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth())},getDaysInMonth:function(){var a=[31,28,31,30,31,30,31,31,30,31,30,31];return function(){var b=this.getMonth();return b==1&&this.isLeapYear()?29:a[b]}}(),getSuffix:function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(){return new Date(this.getTime())},isDST:function(){return new Date(this.getFullYear(),0,1).getTimezoneOffset()!=this.getTimezoneOffset()},clearTime:function(g){if(g){return this.clone().clearTime()}var b=this.getDate();this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);if(this.getDate()!=b){for(var a=1,e=this.add(Date.HOUR,a);e.getDate()!=b;a++,e=this.add(Date.HOUR,a)){}this.setDate(b);this.setHours(e.getHours())}return this},add:function(b,c){var e=this.clone();if(!b||c===0){return e}switch(b.toLowerCase()){case Date.MILLI:e.setMilliseconds(this.getMilliseconds()+c);break;case Date.SECOND:e.setSeconds(this.getSeconds()+c);break;case Date.MINUTE:e.setMinutes(this.getMinutes()+c);break;case Date.HOUR:e.setHours(this.getHours()+c);break;case Date.DAY:e.setDate(this.getDate()+c);break;case Date.MONTH:var a=this.getDate();if(a>28){a=Math.min(a,this.getFirstDateOfMonth().add("mo",c).getLastDateOfMonth().getDate())}e.setDate(a);e.setMonth(this.getMonth()+c);break;case Date.YEAR:e.setFullYear(this.getFullYear()+c);break}return e},between:function(c,a){var b=this.getTime();return c.getTime()<=b&&b<=a.getTime()}});Date.prototype.format=Date.prototype.dateFormat;if(Ext.isSafari&&(navigator.userAgent.match(/WebKit\/(\d+)/)[1]||NaN)<420){Ext.apply(Date.prototype,{_xMonth:Date.prototype.setMonth,_xDate:Date.prototype.setDate,setMonth:function(a){if(a<=-1){var d=Math.ceil(-a),c=Math.ceil(d/12),b=(d%12)?12-d%12:0;this.setFullYear(this.getFullYear()-c);return this._xMonth(b)}else{return this._xMonth(a)}},setDate:function(a){return this.setTime(this.getTime()-(this.getDate()-a)*86400000)}})}Ext.util.MixedCollection=function(b,a){this.items=[];this.map={};this.keys=[];this.length=0;this.addEvents("clear","add","replace","remove","sort");this.allowFunctions=b===true;if(a){this.getKey=a}Ext.util.MixedCollection.superclass.constructor.call(this)};Ext.extend(Ext.util.MixedCollection,Ext.util.Observable,{allowFunctions:false,add:function(b,c){if(arguments.length==1){c=arguments[0];b=this.getKey(c)}if(typeof b!="undefined"&&b!==null){var a=this.map[b];if(typeof a!="undefined"){return this.replace(b,c)}this.map[b]=c}this.length++;this.items.push(c);this.keys.push(b);this.fireEvent("add",this.length-1,c,b);return c},getKey:function(a){return a.id},replace:function(c,d){if(arguments.length==1){d=arguments[0];c=this.getKey(d)}var a=this.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return this.add(c,d)}var b=this.indexOfKey(c);this.items[b]=d;this.map[c]=d;this.fireEvent("replace",c,a,d);return d},addAll:function(e){if(arguments.length>1||Ext.isArray(e)){var b=arguments.length>1?arguments:e;for(var d=0,a=b.length;d<a;d++){this.add(b[d])}}else{for(var c in e){if(this.allowFunctions||typeof e[c]!="function"){this.add(c,e[c])}}}},each:function(e,d){var b=[].concat(this.items);for(var c=0,a=b.length;c<a;c++){if(e.call(d||b[c],b[c],c,a)===false){break}}},eachKey:function(d,c){for(var b=0,a=this.keys.length;b<a;b++){d.call(c||window,this.keys[b],this.items[b],b,a)}},find:function(d,c){for(var b=0,a=this.items.length;b<a;b++){if(d.call(c||window,this.items[b],this.keys[b])){return this.items[b]}}return null},insert:function(a,b,c){if(arguments.length==2){c=arguments[1];b=this.getKey(c)}if(this.containsKey(b)){this.suspendEvents();this.removeKey(b);this.resumeEvents()}if(a>=this.length){return this.add(b,c)}this.length++;this.items.splice(a,0,c);if(typeof b!="undefined"&&b!==null){this.map[b]=c}this.keys.splice(a,0,b);this.fireEvent("add",a,c,b);return c},remove:function(a){return this.removeAt(this.indexOf(a))},removeAt:function(a){if(a<this.length&&a>=0){this.length--;var c=this.items[a];this.items.splice(a,1);var b=this.keys[a];if(typeof b!="undefined"){delete this.map[b]}this.keys.splice(a,1);this.fireEvent("remove",c,b);return c}return false},removeKey:function(a){return this.removeAt(this.indexOfKey(a))},getCount:function(){return this.length},indexOf:function(a){return this.items.indexOf(a)},indexOfKey:function(a){return this.keys.indexOf(a)},item:function(b){var a=this.map[b],c=a!==undefined?a:(typeof b=="number")?this.items[b]:undefined;return typeof c!="function"||this.allowFunctions?c:null},itemAt:function(a){return this.items[a]},key:function(a){return this.map[a]},contains:function(a){return this.indexOf(a)!=-1},containsKey:function(a){return typeof this.map[a]!="undefined"},clear:function(){this.length=0;this.items=[];this.keys=[];this.map={};this.fireEvent("clear")},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},_sort:function(k,a,j){var d,e,b=String(a).toUpperCase()=="DESC"?-1:1,h=[],l=this.keys,g=this.items;j=j||function(i,c){return i-c};for(d=0,e=g.length;d<e;d++){h[h.length]={key:l[d],value:g[d],index:d}}h.sort(function(i,c){var m=j(i[k],c[k])*b;if(m===0){m=(i.index<c.index?-1:1)}return m});for(d=0,e=h.length;d<e;d++){g[d]=h[d].value;l[d]=h[d].key}this.fireEvent("sort",this)},sort:function(a,b){this._sort("value",a,b)},reorder:function(d){this.suspendEvents();var b=this.items,c=0,g=b.length,a=[],e=[],h;for(h in d){a[d[h]]=b[h]}for(c=0;c<g;c++){if(d[c]==undefined){e.push(b[c])}}for(c=0;c<g;c++){if(a[c]==undefined){a[c]=e.shift()}}this.clear();this.addAll(a);this.resumeEvents();this.fireEvent("sort",this)},keySort:function(a,b){this._sort("key",a,b||function(d,c){var g=String(d).toUpperCase(),e=String(c).toUpperCase();return g>e?1:(g<e?-1:0)})},getRange:function(e,a){var b=this.items;if(b.length<1){return[]}e=e||0;a=Math.min(typeof a=="undefined"?this.length-1:a,this.length-1);var c,d=[];if(e<=a){for(c=e;c<=a;c++){d[d.length]=b[c]}}else{for(c=e;c>=a;c--){d[d.length]=b[c]}}return d},filter:function(c,b,d,a){if(Ext.isEmpty(b,false)){return this.clone()}b=this.createValueMatcher(b,d,a);return this.filterBy(function(e){return e&&b.test(e[c])})},filterBy:function(g,e){var h=new Ext.util.MixedCollection();h.getKey=this.getKey;var b=this.keys,d=this.items;for(var c=0,a=d.length;c<a;c++){if(g.call(e||this,d[c],b[c])){h.add(b[c],d[c])}}return h},findIndex:function(c,b,e,d,a){if(Ext.isEmpty(b,false)){return -1}b=this.createValueMatcher(b,d,a);return this.findIndexBy(function(g){return g&&b.test(g[c])},null,e)},findIndexBy:function(g,e,h){var b=this.keys,d=this.items;for(var c=(h||0),a=d.length;c<a;c++){if(g.call(e||this,d[c],b[c])){return c}}return -1},createValueMatcher:function(c,e,a,b){if(!c.exec){var d=Ext.escapeRe;c=String(c);if(e===true){c=d(c)}else{c="^"+d(c);if(b===true){c+="$"}}c=new RegExp(c,a?"":"i")}return c},clone:function(){var e=new Ext.util.MixedCollection();var b=this.keys,d=this.items;for(var c=0,a=d.length;c<a;c++){e.add(b[c],d[c])}e.getKey=this.getKey;return e}});Ext.util.MixedCollection.prototype.get=Ext.util.MixedCollection.prototype.item;Ext.AbstractManager=Ext.extend(Object,{typeName:"type",constructor:function(a){Ext.apply(this,a||{});this.all=new Ext.util.MixedCollection();this.types={}},get:function(a){return this.all.get(a)},register:function(a){this.all.add(a)},unregister:function(a){this.all.remove(a)},registerType:function(b,a){this.types[b]=a;a[this.typeName]=b},isRegistered:function(a){return this.types[a]!==undefined},create:function(a,d){var b=a[this.typeName]||a.type||d,c=this.types[b];if(c==undefined){throw new Error(String.format("The '{0}' type has not been registered with this manager",b))}return new c(a)},onAvailable:function(d,c,b){var a=this.all;a.on("add",function(e,g){if(g.id==d){c.call(b||g,g);a.un("add",c,b)}})}});Ext.util.Format=function(){var trimRe=/^\s+|\s+$/g,stripTagsRE=/<\/?[^>]+>/gi,stripScriptsRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,nl2brRe=/\r?\n/g;return{ellipsis:function(value,len,word){if(value&&value.length>len){if(word){var vs=value.substr(0,len-2),index=Math.max(vs.lastIndexOf(" "),vs.lastIndexOf("."),vs.lastIndexOf("!"),vs.lastIndexOf("?"));if(index==-1||index<(len-15)){return value.substr(0,len-3)+"..."}else{return vs.substr(0,index)+"..."}}else{return value.substr(0,len-3)+"..."}}return value},undef:function(value){return value!==undefined?value:""},defaultValue:function(value,defaultValue){if(!defaultValue&&defaultValue!==0){defaultValue=""}return value!==undefined&&value!==""?value:defaultValue},htmlEncode:function(value){return !value?value:String(value).replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;")},htmlDecode:function(value){return !value?value:String(value).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&amp;/g,"&")},trim:function(value){return String(value).replace(trimRe,"")},substr:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},uppercase:function(value){return String(value).toUpperCase()},capitalize:function(value){return !value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase()},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);args.unshift(value);return eval(fn).apply(window,args)}else{return eval(fn).call(window,value)}},usMoney:function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);v=String(v);var ps=v.split("."),whole=ps[0],sub=ps[1]?"."+ps[1]:".00",r=/(\d+)(\d{3})/;while(r.test(whole)){whole=whole.replace(r,"$1,$2")}v=whole+sub;if(v.charAt(0)=="-"){return"-$"+v.substr(1)}return"$"+v},date:function(v,format){if(!v){return""}if(!Ext.isDate(v)){v=new Date(Date.parse(v))}return v.dateFormat(format||"m/d/Y")},dateRenderer:function(format){return function(v){return Ext.util.Format.date(v,format)}},stripTags:function(v){return !v?v:String(v).replace(stripTagsRE,"")},stripScripts:function(v){return !v?v:String(v).replace(stripScriptsRe,"")},fileSize:function(size){if(size<1024){return size+" bytes"}else{if(size<1048576){return(Math.round(((size*10)/1024))/10)+" KB"}else{return(Math.round(((size*10)/1048576))/10)+" MB"}}},math:function(){var fns={};return function(v,a){if(!fns[a]){fns[a]=new Function("v","return v "+a+";")}return fns[a](v)}}(),round:function(value,precision){var result=Number(value);if(typeof precision=="number"){precision=Math.pow(10,precision);result=Math.round(value*precision)/precision}return result},number:function(v,format){if(!format){return v}v=Ext.num(v,NaN);if(isNaN(v)){return""}var comma=",",dec=".",i18n=false,neg=v<0;v=Math.abs(v);if(format.substr(format.length-2)=="/i"){format=format.substr(0,format.length-2);i18n=true;comma=".";dec=","}var hasComma=format.indexOf(comma)!=-1,psplit=(i18n?format.replace(/[^\d\,]/g,""):format.replace(/[^\d\.]/g,"")).split(dec);if(1<psplit.length){v=v.toFixed(psplit[1].length)}else{if(2<psplit.length){throw ("NumberFormatException: invalid format, formats should have no more than 1 period: "+format)}else{v=v.toFixed(0)}}var fnum=v.toString();psplit=fnum.split(".");if(hasComma){var cnum=psplit[0],parr=[],j=cnum.length,m=Math.floor(j/3),n=cnum.length%3||3,i;for(i=0;i<j;i+=n){if(i!=0){n=3}parr[parr.length]=cnum.substr(i,n);m-=1}fnum=parr.join(comma);if(psplit[1]){fnum+=dec+psplit[1]}}else{if(psplit[1]){fnum=psplit[0]+dec+psplit[1]}}return(neg?"-":"")+format.replace(/[\d,?\.?]+/,fnum)},numberRenderer:function(format){return function(v){return Ext.util.Format.number(v,format)}},plural:function(v,s,p){return v+" "+(v==1?s:(p?p:s+"s"))},nl2br:function(v){return Ext.isEmpty(v)?"":v.replace(nl2brRe,"<br/>")}}}();Ext.XTemplate=function(){Ext.XTemplate.superclass.constructor.apply(this,arguments);var y=this,j=y.html,q=/<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,d=/^<tpl\b[^>]*?for="(.*?)"/,v=/^<tpl\b[^>]*?if="(.*?)"/,x=/^<tpl\b[^>]*?exec="(.*?)"/,r,p=0,k=[],o="values",w="parent",l="xindex",n="xcount",e="return ",c="with(values){ ";j=["<tpl>",j,"</tpl>"].join("");while((r=j.match(q))){var b=r[0].match(d),a=r[0].match(v),A=r[0].match(x),g=null,h=null,t=null,z=b&&b[1]?b[1]:"";if(a){g=a&&a[1]?a[1]:null;if(g){h=new Function(o,w,l,n,c+e+(Ext.util.Format.htmlDecode(g))+"; }")}}if(A){g=A&&A[1]?A[1]:null;if(g){t=new Function(o,w,l,n,c+(Ext.util.Format.htmlDecode(g))+"; }")}}if(z){switch(z){case".":z=new Function(o,w,c+e+o+"; }");break;case"..":z=new Function(o,w,c+e+w+"; }");break;default:z=new Function(o,w,c+e+z+"; }")}}k.push({id:p,target:z,exec:t,test:h,body:r[1]||""});j=j.replace(r[0],"{xtpl"+p+"}");++p}for(var u=k.length-1;u>=0;--u){y.compileTpl(k[u])}y.master=k[k.length-1];y.tpls=k};Ext.extend(Ext.XTemplate,Ext.Template,{re:/\{([\w\-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(a,k,j,d,c){var h=this,g,m=h.tpls[a],l,b=[];if((m.test&&!m.test.call(h,k,j,d,c))||(m.exec&&m.exec.call(h,k,j,d,c))){return""}l=m.target?m.target.call(h,k,j):k;g=l.length;j=m.target?k:j;if(m.target&&Ext.isArray(l)){for(var e=0,g=l.length;e<g;e++){b[b.length]=m.compiled.call(h,l[e],j,e+1,g)}return b.join("")}return m.compiled.call(h,l,j,d,c)},compileTpl:function(tpl){var fm=Ext.util.Format,useF=this.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(m,name,format,args,math){if(name.substr(0,4)=="xtpl"){return"'"+sep+"this.applySubTemplate("+name.substr(4)+", values, parent, xindex, xcount)"+sep+"'"}var v;if(name==="."){v="values"}else{if(name==="#"){v="xindex"}else{if(name.indexOf(".")!=-1){v=name}else{v="values['"+name+"']"}}}if(math){v="("+v+math+")"}if(format&&useF){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format='this.call("'+format.substr(5)+'", ';args=", values"}}else{args="";format="("+v+" === undefined ? '' : "}return"'"+sep+format+v+args+")"+sep+"'"}function codeFn(m,code){return"'"+sep+"("+code.replace(/\\'/g,"'")+")"+sep+"'"}if(Ext.isGecko){body="tpl.compiled = function(values, parent, xindex, xcount){ return '"+tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn)+"';};"}else{body=["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];body.push(tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn));body.push("'].join('');};");body=body.join("")}eval(body);return this},applyTemplate:function(a){return this.master.compiled.call(this,a,{},1,1)},compile:function(){return this}});Ext.XTemplate.prototype.apply=Ext.XTemplate.prototype.applyTemplate;Ext.XTemplate.from=function(a){a=Ext.getDom(a);return new Ext.XTemplate(a.value||a.innerHTML)};Ext.util.CSS=function(){var d=null;var c=document;var b=/(-[a-z])/gi;var a=function(e,g){return g.charAt(1).toUpperCase()};return{createStyleSheet:function(i,l){var h;var g=c.getElementsByTagName("head")[0];var k=c.createElement("style");k.setAttribute("type","text/css");if(l){k.setAttribute("id",l)}if(Ext.isIE){g.appendChild(k);h=k.styleSheet;h.cssText=i}else{try{k.appendChild(c.createTextNode(i))}catch(j){k.cssText=i}g.appendChild(k);h=k.styleSheet?k.styleSheet:(k.sheet||c.styleSheets[c.styleSheets.length-1])}this.cacheStyleSheet(h);return h},removeStyleSheet:function(g){var e=c.getElementById(g);if(e){e.parentNode.removeChild(e)}},swapStyleSheet:function(h,e){this.removeStyleSheet(h);var g=c.createElement("link");g.setAttribute("rel","stylesheet");g.setAttribute("type","text/css");g.setAttribute("id",h);g.setAttribute("href",e);c.getElementsByTagName("head")[0].appendChild(g)},refreshCache:function(){return this.getRules(true)},cacheStyleSheet:function(h){if(!d){d={}}try{var k=h.cssRules||h.rules;for(var g=k.length-1;g>=0;--g){d[k[g].selectorText.toLowerCase()]=k[g]}}catch(i){}},getRules:function(h){if(d===null||h){d={};var k=c.styleSheets;for(var j=0,g=k.length;j<g;j++){try{this.cacheStyleSheet(k[j])}catch(l){}}}return d},getRule:function(e,h){var g=this.getRules(h);if(!Ext.isArray(e)){return g[e.toLowerCase()]}for(var j=0;j<e.length;j++){if(g[e[j]]){return g[e[j].toLowerCase()]}}return null},updateRule:function(e,j,h){if(!Ext.isArray(e)){var k=this.getRule(e);if(k){k.style[j.replace(b,a)]=h;return true}}else{for(var g=0;g<e.length;g++){if(this.updateRule(e[g],j,h)){return true}}}return false}}}();Ext.util.ClickRepeater=Ext.extend(Ext.util.Observable,{constructor:function(b,a){this.el=Ext.get(b);this.el.unselectable();Ext.apply(this,a);this.addEvents("mousedown","click","mouseup");if(!this.disabled){this.disabled=true;this.enable()}if(this.handler){this.on("click",this.handler,this.scope||this)}Ext.util.ClickRepeater.superclass.constructor.call(this)},interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,enable:function(){if(this.disabled){this.el.on("mousedown",this.handleMouseDown,this);if(Ext.isIE){this.el.on("dblclick",this.handleDblClick,this)}if(this.preventDefault||this.stopDefault){this.el.on("click",this.eventOptions,this)}}this.disabled=false},disable:function(a){if(a||!this.disabled){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass)}Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeAllListeners()}this.disabled=true},setDisabled:function(a){this[a?"disable":"enable"]()},eventOptions:function(a){if(this.preventDefault){a.preventDefault()}if(this.stopDefault){a.stopEvent()}},destroy:function(){this.disable(true);Ext.destroy(this.el);this.purgeListeners()},handleDblClick:function(a){clearTimeout(this.timer);this.el.blur();this.fireEvent("mousedown",this,a);this.fireEvent("click",this,a)},handleMouseDown:function(a){clearTimeout(this.timer);this.el.blur();if(this.pressClass){this.el.addClass(this.pressClass)}this.mousedownTime=new Date();Ext.getDoc().on("mouseup",this.handleMouseUp,this);this.el.on("mouseout",this.handleMouseOut,this);this.fireEvent("mousedown",this,a);this.fireEvent("click",this,a);if(this.accelerate){this.delay=400}this.timer=this.click.defer(this.delay||this.interval,this,[a])},click:function(a){this.fireEvent("click",this,a);this.timer=this.click.defer(this.accelerate?this.easeOutExpo(this.mousedownTime.getElapsed(),400,-390,12000):this.interval,this,[a])},easeOutExpo:function(e,a,h,g){return(e==g)?a+h:h*(-Math.pow(2,-10*e/g)+1)+a},handleMouseOut:function(){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass)}this.el.on("mouseover",this.handleMouseReturn,this)},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn,this);if(this.pressClass){this.el.addClass(this.pressClass)}this.click()},handleMouseUp:function(a){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn,this);this.el.un("mouseout",this.handleMouseOut,this);Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeClass(this.pressClass);this.fireEvent("mouseup",this,a)}});Ext.KeyNav=function(b,a){this.el=Ext.get(b);Ext.apply(this,a);if(!this.disabled){this.disabled=true;this.enable()}};Ext.KeyNav.prototype={disabled:false,defaultEventAction:"stopEvent",forceKeyDown:false,relay:function(c){var a=c.getKey(),b=this.keyToHandler[a];if(b&&this[b]){if(this.doRelay(c,this[b],b)!==true){c[this.defaultEventAction]()}}},doRelay:function(c,b,a){return b.call(this.scope||this,c,a)},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,space:false,keyToHandler:{37:"left",39:"right",38:"up",40:"down",33:"pageUp",34:"pageDown",46:"del",36:"home",35:"end",13:"enter",27:"esc",9:"tab",32:"space"},stopKeyUp:function(b){var a=b.getKey();if(a>=37&&a<=40){b.stopEvent()}},destroy:function(){this.disable()},enable:function(){if(this.disabled){if(Ext.isSafari2){this.el.on("keyup",this.stopKeyUp,this)}this.el.on(this.isKeydown()?"keydown":"keypress",this.relay,this);this.disabled=false}},disable:function(){if(!this.disabled){if(Ext.isSafari2){this.el.un("keyup",this.stopKeyUp,this)}this.el.un(this.isKeydown()?"keydown":"keypress",this.relay,this);this.disabled=true}},setDisabled:function(a){this[a?"disable":"enable"]()},isKeydown:function(){return this.forceKeyDown||Ext.EventManager.useKeydown}};Ext.KeyMap=function(c,b,a){this.el=Ext.get(c);this.eventName=a||"keydown";this.bindings=[];if(b){this.addBinding(b)}this.enable()};Ext.KeyMap.prototype={stopEvent:false,addBinding:function(b){if(Ext.isArray(b)){Ext.each(b,function(j){this.addBinding(j)},this);return}var k=b.key,g=b.fn||b.handler,l=b.scope;if(b.stopEvent){this.stopEvent=b.stopEvent}if(typeof k=="string"){var h=[];var e=k.toUpperCase();for(var c=0,d=e.length;c<d;c++){h.push(e.charCodeAt(c))}k=h}var a=Ext.isArray(k);var i=function(o){if(this.checkModifiers(b,o)){var m=o.getKey();if(a){for(var n=0,j=k.length;n<j;n++){if(k[n]==m){if(this.stopEvent){o.stopEvent()}g.call(l||window,m,o);return}}}else{if(m==k){if(this.stopEvent){o.stopEvent()}g.call(l||window,m,o)}}}};this.bindings.push(i)},checkModifiers:function(b,h){var j,d,g=["shift","ctrl","alt"];for(var c=0,a=g.length;c<a;++c){d=g[c];j=b[d];if(!(j===undefined||(j===h[d+"Key"]))){return false}}return true},on:function(b,d,c){var h,a,e,g;if(typeof b=="object"&&!Ext.isArray(b)){h=b.key;a=b.shift;e=b.ctrl;g=b.alt}else{h=b}this.addBinding({key:h,shift:a,ctrl:e,alt:g,fn:d,scope:c})},handleKeyDown:function(g){if(this.enabled){var c=this.bindings;for(var d=0,a=c.length;d<a;d++){c[d].call(this,g)}}},isEnabled:function(){return this.enabled},enable:function(){if(!this.enabled){this.el.on(this.eventName,this.handleKeyDown,this);this.enabled=true}},disable:function(){if(this.enabled){this.el.removeListener(this.eventName,this.handleKeyDown,this);this.enabled=false}},setDisabled:function(a){this[a?"disable":"enable"]()}};Ext.util.TextMetrics=function(){var a;return{measure:function(b,c,d){if(!a){a=Ext.util.TextMetrics.Instance(b,d)}a.bind(b);a.setFixedWidth(d||"auto");return a.getSize(c)},createInstance:function(b,c){return Ext.util.TextMetrics.Instance(b,c)}}}();Ext.util.TextMetrics.Instance=function(b,d){var c=new Ext.Element(document.createElement("div"));document.body.appendChild(c.dom);c.position("absolute");c.setLeftTop(-1000,-1000);c.hide();if(d){c.setWidth(d)}var a={getSize:function(g){c.update(g);var e=c.getSize();c.update("");return e},bind:function(e){c.setStyle(Ext.fly(e).getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(e){c.setWidth(e)},getWidth:function(e){c.dom.style.width="auto";return this.getSize(e).width},getHeight:function(e){return this.getSize(e).height}};a.bind(b);return a};Ext.Element.addMethods({getTextWidth:function(c,b,a){return(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width).constrain(b||0,a||1000000)}});Ext.util.Cookies={set:function(c,e){var a=arguments;var i=arguments.length;var b=(i>2)?a[2]:null;var h=(i>3)?a[3]:"/";var d=(i>4)?a[4]:null;var g=(i>5)?a[5]:false;document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((h===null)?"":("; path="+h))+((d===null)?"":("; domain="+d))+((g===true)?"; secure":"")},get:function(d){var b=d+"=";var g=b.length;var a=document.cookie.length;var e=0;var c=0;while(e<a){c=e+g;if(document.cookie.substring(e,c)==b){return Ext.util.Cookies.getCookieVal(c)}e=document.cookie.indexOf(" ",e)+1;if(e===0){break}}return null},clear:function(a){if(Ext.util.Cookies.get(a)){document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT"}},getCookieVal:function(b){var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}return unescape(document.cookie.substring(b,a))}};Ext.handleError=function(a){throw a};Ext.Error=function(a){this.message=(this.lang[a])?this.lang[a]:a};Ext.Error.prototype=new Error();Ext.apply(Ext.Error.prototype,{lang:{},name:"Ext.Error",getName:function(){return this.name},getMessage:function(){return this.message},toJson:function(){return Ext.encode(this)}});Ext.ComponentMgr=function(){var c=new Ext.util.MixedCollection();var b={};var a={};return{register:function(d){c.add(d)},unregister:function(d){c.remove(d)},get:function(d){return c.get(d)},onAvailable:function(g,e,d){c.on("add",function(h,i){if(i.id==g){e.call(d||i,i);c.un("add",e,d)}})},all:c,types:b,ptypes:a,isRegistered:function(d){return b[d]!==undefined},isPluginRegistered:function(d){return a[d]!==undefined},registerType:function(e,d){b[e]=d;d.xtype=e},create:function(d,e){return d.render?d:new b[d.xtype||e](d)},registerPlugin:function(e,d){a[e]=d;d.ptype=e},createPlugin:function(e,g){var d=a[e.ptype||g];if(d.init){return d}else{return new d(e)}}}}();Ext.reg=Ext.ComponentMgr.registerType;Ext.preg=Ext.ComponentMgr.registerPlugin;Ext.create=Ext.ComponentMgr.create;Ext.Component=function(b){b=b||{};if(b.initialConfig){if(b.isAction){this.baseAction=b}b=b.initialConfig}else{if(b.tagName||b.dom||Ext.isString(b)){b={applyTo:b,id:b.id||b}}}this.initialConfig=b;Ext.apply(this,b);this.addEvents("added","disable","enable","beforeshow","show","beforehide","hide","removed","beforerender","render","afterrender","beforedestroy","destroy","beforestaterestore","staterestore","beforestatesave","statesave");this.getId();Ext.ComponentMgr.register(this);Ext.Component.superclass.constructor.call(this);if(this.baseAction){this.baseAction.addComponent(this)}this.initComponent();if(this.plugins){if(Ext.isArray(this.plugins)){for(var c=0,a=this.plugins.length;c<a;c++){this.plugins[c]=this.initPlugin(this.plugins[c])}}else{this.plugins=this.initPlugin(this.plugins)}}if(this.stateful!==false){this.initState()}if(this.applyTo){this.applyToMarkup(this.applyTo);delete this.applyTo}else{if(this.renderTo){this.render(this.renderTo);delete this.renderTo}}};Ext.Component.AUTO_ID=1000;Ext.extend(Ext.Component,Ext.util.Observable,{disabled:false,hidden:false,autoEl:"div",disabledClass:"x-item-disabled",allowDomMove:true,autoShow:false,hideMode:"display",hideParent:false,rendered:false,tplWriteMode:"overwrite",bubbleEvents:[],ctype:"Ext.Component",actionMode:"el",getActionEl:function(){return this[this.actionMode]},initPlugin:function(a){if(a.ptype&&!Ext.isFunction(a.init)){a=Ext.ComponentMgr.createPlugin(a)}else{if(Ext.isString(a)){a=Ext.ComponentMgr.createPlugin({ptype:a})}}a.init(this);return a},initComponent:function(){if(this.listeners){this.on(this.listeners);delete this.listeners}this.enableBubble(this.bubbleEvents)},render:function(b,a){if(!this.rendered&&this.fireEvent("beforerender",this)!==false){if(!b&&this.el){this.el=Ext.get(this.el);b=this.el.dom.parentNode;this.allowDomMove=false}this.container=Ext.get(b);if(this.ctCls){this.container.addClass(this.ctCls)}this.rendered=true;if(a!==undefined){if(Ext.isNumber(a)){a=this.container.dom.childNodes[a]}else{a=Ext.getDom(a)}}this.onRender(this.container,a||null);if(this.autoShow){this.el.removeClass(["x-hidden","x-hide-"+this.hideMode])}if(this.cls){this.el.addClass(this.cls);delete this.cls}if(this.style){this.el.applyStyles(this.style);delete this.style}if(this.overCls){this.el.addClassOnOver(this.overCls)}this.fireEvent("render",this);var c=this.getContentTarget();if(this.html){c.update(Ext.DomHelper.markup(this.html));delete this.html}if(this.contentEl){var d=Ext.getDom(this.contentEl);Ext.fly(d).removeClass(["x-hidden","x-hide-display"]);c.appendChild(d)}if(this.tpl){if(!this.tpl.compile){this.tpl=new Ext.XTemplate(this.tpl)}if(this.data){this.tpl[this.tplWriteMode](c,this.data);delete this.data}}this.afterRender(this.container);if(this.hidden){this.doHide()}if(this.disabled){this.disable(true)}if(this.stateful!==false){this.initStateEvents()}this.fireEvent("afterrender",this)}return this},update:function(b,d,a){var c=this.getContentTarget();if(this.tpl&&typeof b!=="string"){this.tpl[this.tplWriteMode](c,b||{})}else{var e=Ext.isObject(b)?Ext.DomHelper.markup(b):b;c.update(e,d,a)}},onAdded:function(a,b){this.ownerCt=a;this.initRef();this.fireEvent("added",this,a,b)},onRemoved:function(){this.removeRef();this.fireEvent("removed",this,this.ownerCt);delete this.ownerCt},initRef:function(){if(this.ref&&!this.refOwner){var d=this.ref.split("/"),c=d.length,b=0,a=this;while(a&&b<c){a=a.ownerCt;++b}if(a){a[this.refName=d[--b]]=this;this.refOwner=a}}},removeRef:function(){if(this.refOwner&&this.refName){delete this.refOwner[this.refName];delete this.refOwner}},initState:function(){if(Ext.state.Manager){var b=this.getStateId();if(b){var a=Ext.state.Manager.get(b);if(a){if(this.fireEvent("beforestaterestore",this,a)!==false){this.applyState(Ext.apply({},a));this.fireEvent("staterestore",this,a)}}}}},getStateId:function(){return this.stateId||((/^(ext-comp-|ext-gen)/).test(String(this.id))?null:this.id)},initStateEvents:function(){if(this.stateEvents){for(var a=0,b;b=this.stateEvents[a];a++){this.on(b,this.saveState,this,{delay:100})}}},applyState:function(a){if(a){Ext.apply(this,a)}},getState:function(){return null},saveState:function(){if(Ext.state.Manager&&this.stateful!==false){var b=this.getStateId();if(b){var a=this.getState();if(this.fireEvent("beforestatesave",this,a)!==false){Ext.state.Manager.set(b,a);this.fireEvent("statesave",this,a)}}}},applyToMarkup:function(a){this.allowDomMove=false;this.el=Ext.get(a);this.render(this.el.dom.parentNode)},addClass:function(a){if(this.el){this.el.addClass(a)}else{this.cls=this.cls?this.cls+" "+a:a}return this},removeClass:function(a){if(this.el){this.el.removeClass(a)}else{if(this.cls){this.cls=this.cls.split(" ").remove(a).join(" ")}}return this},onRender:function(b,a){if(!this.el&&this.autoEl){if(Ext.isString(this.autoEl)){this.el=document.createElement(this.autoEl)}else{var c=document.createElement("div");Ext.DomHelper.overwrite(c,this.autoEl);this.el=c.firstChild}if(!this.el.id){this.el.id=this.getId()}}if(this.el){this.el=Ext.get(this.el);if(this.allowDomMove!==false){b.dom.insertBefore(this.el.dom,a);if(c){Ext.removeNode(c);c=null}}}},getAutoCreate:function(){var a=Ext.isObject(this.autoCreate)?this.autoCreate:Ext.apply({},this.defaultAutoCreate);if(this.id&&!a.id){a.id=this.id}return a},afterRender:Ext.emptyFn,destroy:function(){if(!this.isDestroyed){if(this.fireEvent("beforedestroy",this)!==false){this.destroying=true;this.beforeDestroy();if(this.ownerCt&&this.ownerCt.remove){this.ownerCt.remove(this,false)}if(this.rendered){this.el.remove();if(this.actionMode=="container"||this.removeMode=="container"){this.container.remove()}}if(this.focusTask&&this.focusTask.cancel){this.focusTask.cancel()}this.onDestroy();Ext.ComponentMgr.unregister(this);this.fireEvent("destroy",this);this.purgeListeners();this.destroying=false;this.isDestroyed=true}}},deleteMembers:function(){var b=arguments;for(var c=0,a=b.length;c<a;++c){delete this[b[c]]}},beforeDestroy:Ext.emptyFn,onDestroy:Ext.emptyFn,getEl:function(){return this.el},getContentTarget:function(){return this.el},getId:function(){return this.id||(this.id="ext-comp-"+(++Ext.Component.AUTO_ID))},getItemId:function(){return this.itemId||this.getId()},focus:function(b,a){if(a){this.focusTask=new Ext.util.DelayedTask(this.focus,this,[b,false]);this.focusTask.delay(Ext.isNumber(a)?a:10);return this}if(this.rendered&&!this.isDestroyed){this.el.focus();if(b===true){this.el.dom.select()}}return this},blur:function(){if(this.rendered){this.el.blur()}return this},disable:function(a){if(this.rendered){this.onDisable()}this.disabled=true;if(a!==true){this.fireEvent("disable",this)}return this},onDisable:function(){this.getActionEl().addClass(this.disabledClass);this.el.dom.disabled=true},enable:function(){if(this.rendered){this.onEnable()}this.disabled=false;this.fireEvent("enable",this);return this},onEnable:function(){this.getActionEl().removeClass(this.disabledClass);this.el.dom.disabled=false},setDisabled:function(a){return this[a?"disable":"enable"]()},show:function(){if(this.fireEvent("beforeshow",this)!==false){this.hidden=false;if(this.autoRender){this.render(Ext.isBoolean(this.autoRender)?Ext.getBody():this.autoRender)}if(this.rendered){this.onShow()}this.fireEvent("show",this)}return this},onShow:function(){this.getVisibilityEl().removeClass("x-hide-"+this.hideMode)},hide:function(){if(this.fireEvent("beforehide",this)!==false){this.doHide();this.fireEvent("hide",this)}return this},doHide:function(){this.hidden=true;if(this.rendered){this.onHide()}},onHide:function(){this.getVisibilityEl().addClass("x-hide-"+this.hideMode)},getVisibilityEl:function(){return this.hideParent?this.container:this.getActionEl()},setVisible:function(a){return this[a?"show":"hide"]()},isVisible:function(){return this.rendered&&this.getVisibilityEl().isVisible()},cloneConfig:function(b){b=b||{};var c=b.id||Ext.id();var a=Ext.applyIf(b,this.initialConfig);a.id=c;return new this.constructor(a)},getXType:function(){return this.constructor.xtype},isXType:function(b,a){if(Ext.isFunction(b)){b=b.xtype}else{if(Ext.isObject(b)){b=b.constructor.xtype}}return !a?("/"+this.getXTypes()+"/").indexOf("/"+b+"/")!=-1:this.constructor.xtype==b},getXTypes:function(){var a=this.constructor;if(!a.xtypes){var d=[],b=this;while(b&&b.constructor.xtype){d.unshift(b.constructor.xtype);b=b.constructor.superclass}a.xtypeChain=d;a.xtypes=d.join("/")}return a.xtypes},findParentBy:function(a){for(var b=this.ownerCt;(b!=null)&&!a(b,this);b=b.ownerCt){}return b||null},findParentByType:function(b,a){return this.findParentBy(function(d){return d.isXType(b,a)})},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.ownerCt}return this},getPositionEl:function(){return this.positionEl||this.el},purgeListeners:function(){Ext.Component.superclass.purgeListeners.call(this);if(this.mons){this.on("beforedestroy",this.clearMons,this,{single:true})}},clearMons:function(){Ext.each(this.mons,function(a){a.item.un(a.ename,a.fn,a.scope)},this);this.mons=[]},createMons:function(){if(!this.mons){this.mons=[];this.on("beforedestroy",this.clearMons,this,{single:true})}},mon:function(g,b,d,c,a){this.createMons();if(Ext.isObject(b)){var j=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;var i=b;for(var h in i){if(j.test(h)){continue}if(Ext.isFunction(i[h])){this.mons.push({item:g,ename:h,fn:i[h],scope:i.scope});g.on(h,i[h],i.scope,i)}else{this.mons.push({item:g,ename:h,fn:i[h],scope:i.scope});g.on(h,i[h])}}return}this.mons.push({item:g,ename:b,fn:d,scope:c});g.on(b,d,c,a)},mun:function(h,c,g,e){var j,d;this.createMons();for(var b=0,a=this.mons.length;b<a;++b){d=this.mons[b];if(h===d.item&&c==d.ename&&g===d.fn&&e===d.scope){this.mons.splice(b,1);h.un(c,g,e);j=true;break}}return j},nextSibling:function(){if(this.ownerCt){var a=this.ownerCt.items.indexOf(this);if(a!=-1&&a+1<this.ownerCt.items.getCount()){return this.ownerCt.items.itemAt(a+1)}}return null},previousSibling:function(){if(this.ownerCt){var a=this.ownerCt.items.indexOf(this);if(a>0){return this.ownerCt.items.itemAt(a-1)}}return null},getBubbleTarget:function(){return this.ownerCt}});Ext.reg("component",Ext.Component);Ext.Action=Ext.extend(Object,{constructor:function(a){this.initialConfig=a;this.itemId=a.itemId=(a.itemId||a.id||Ext.id());this.items=[]},isAction:true,setText:function(a){this.initialConfig.text=a;this.callEach("setText",[a])},getText:function(){return this.initialConfig.text},setIconClass:function(a){this.initialConfig.iconCls=a;this.callEach("setIconClass",[a])},getIconClass:function(){return this.initialConfig.iconCls},setDisabled:function(a){this.initialConfig.disabled=a;this.callEach("setDisabled",[a])},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},isDisabled:function(){return this.initialConfig.disabled},setHidden:function(a){this.initialConfig.hidden=a;this.callEach("setVisible",[!a])},show:function(){this.setHidden(false)},hide:function(){this.setHidden(true)},isHidden:function(){return this.initialConfig.hidden},setHandler:function(b,a){this.initialConfig.handler=b;this.initialConfig.scope=a;this.callEach("setHandler",[b,a])},each:function(b,a){Ext.each(this.items,b,a)},callEach:function(e,b){var d=this.items;for(var c=0,a=d.length;c<a;c++){d[c][e].apply(d[c],b)}},addComponent:function(a){this.items.push(a);a.on("destroy",this.removeComponent,this)},removeComponent:function(a){this.items.remove(a)},execute:function(){this.initialConfig.handler.apply(this.initialConfig.scope||window,arguments)}});(function(){Ext.Layer=function(d,c){d=d||{};var e=Ext.DomHelper,h=d.parentEl,g=h?Ext.getDom(h):document.body;if(c){this.dom=Ext.getDom(c)}if(!this.dom){var i=d.dh||{tag:"div",cls:"x-layer"};this.dom=e.append(g,i)}if(d.cls){this.addClass(d.cls)}this.constrain=d.constrain!==false;this.setVisibilityMode(Ext.Element.VISIBILITY);if(d.id){this.id=this.dom.id=d.id}else{this.id=Ext.id(this.dom)}this.zindex=d.zindex||this.getZIndex();this.position("absolute",this.zindex);if(d.shadow){this.shadowOffset=d.shadowOffset||4;this.shadow=new Ext.Shadow({offset:this.shadowOffset,mode:d.shadow})}else{this.shadowOffset=0}this.useShim=d.shim!==false&&Ext.useShims;this.useDisplay=d.useDisplay;this.hide()};var a=Ext.Element.prototype;var b=[];Ext.extend(Ext.Layer,Ext.Element,{getZIndex:function(){return this.zindex||parseInt((this.getShim()||this).getStyle("z-index"),10)||11000},getShim:function(){if(!this.useShim){return null}if(this.shim){return this.shim}var d=b.shift();if(!d){d=this.createShim();d.enableDisplayMode("block");d.dom.style.display="none";d.dom.style.visibility="visible"}var c=this.dom.parentNode;if(d.dom.parentNode!=c){c.insertBefore(d.dom,this.dom)}d.setStyle("z-index",this.getZIndex()-2);this.shim=d;return d},hideShim:function(){if(this.shim){this.shim.setDisplayed(false);b.push(this.shim);delete this.shim}},disableShadow:function(){if(this.shadow){this.shadowDisabled=true;this.shadow.hide();this.lastShadowOffset=this.shadowOffset;this.shadowOffset=0}},enableShadow:function(c){if(this.shadow){this.shadowDisabled=false;if(Ext.isDefined(this.lastShadowOffset)){this.shadowOffset=this.lastShadowOffset;delete this.lastShadowOffset}if(c){this.sync(true)}}},sync:function(d){var n=this.shadow;if(!this.updating&&this.isVisible()&&(n||this.useShim)){var i=this.getShim(),m=this.getWidth(),j=this.getHeight(),e=this.getLeft(true),o=this.getTop(true);if(n&&!this.shadowDisabled){if(d&&!n.isVisible()){n.show(this)}else{n.realign(e,o,m,j)}if(i){if(d){i.show()}var k=n.el.getXY(),g=i.dom.style,c=n.el.getSize();g.left=(k[0])+"px";g.top=(k[1])+"px";g.width=(c.width)+"px";g.height=(c.height)+"px"}}else{if(i){if(d){i.show()}i.setSize(m,j);i.setLeftTop(e,o)}}}},destroy:function(){this.hideShim();if(this.shadow){this.shadow.hide()}this.removeAllListeners();Ext.removeNode(this.dom);delete this.dom},remove:function(){this.destroy()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(c){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var j=Ext.lib.Dom.getViewWidth(),d=Ext.lib.Dom.getViewHeight();var o=Ext.getDoc().getScroll();var n=this.getXY();var k=n[0],i=n[1];var c=this.shadowOffset;var l=this.dom.offsetWidth+c,e=this.dom.offsetHeight+c;var g=false;if((k+l)>j+o.left){k=j-l-c;g=true}if((i+e)>d+o.top){i=d-e-c;g=true}if(k<o.left){k=o.left;g=true}if(i<o.top){i=o.top;g=true}if(g){if(this.avoidY){var m=this.avoidY;if(i<=m&&(i+e)>=m){i=m-e-5}}n=[k,i];this.storeXY(n);a.setXY.call(this,n);this.sync()}}return this},getConstrainOffset:function(){return this.shadowOffset},isVisible:function(){return this.visible},showAction:function(){this.visible=true;if(this.useDisplay===true){this.setDisplayed("")}else{if(this.lastXY){a.setXY.call(this,this.lastXY)}else{if(this.lastLT){a.setLeftTop.call(this,this.lastLT[0],this.lastLT[1])}}}},hideAction:function(){this.visible=false;if(this.useDisplay===true){this.setDisplayed(false)}else{this.setLeftTop(-10000,-10000)}},setVisible:function(i,h,k,l,j){if(i){this.showAction()}if(h&&i){var g=function(){this.sync(true);if(l){l()}}.createDelegate(this);a.setVisible.call(this,true,true,k,g,j)}else{if(!i){this.hideUnders(true)}var g=l;if(h){g=function(){this.hideAction();if(l){l()}}.createDelegate(this)}a.setVisible.call(this,i,h,k,g,j);if(i){this.sync(true)}else{if(!h){this.hideAction()}}}return this},storeXY:function(c){delete this.lastLT;this.lastXY=c},storeLeftTop:function(d,c){delete this.lastXY;this.lastLT=[d,c]},beforeFx:function(){this.beforeAction();return Ext.Layer.superclass.beforeFx.apply(this,arguments)},afterFx:function(){Ext.Layer.superclass.afterFx.apply(this,arguments);this.sync(this.isVisible())},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide()}},setLeft:function(c){this.storeLeftTop(c,this.getTop(true));a.setLeft.apply(this,arguments);this.sync();return this},setTop:function(c){this.storeLeftTop(this.getLeft(true),c);a.setTop.apply(this,arguments);this.sync();return this},setLeftTop:function(d,c){this.storeLeftTop(d,c);a.setLeftTop.apply(this,arguments);this.sync();return this},setXY:function(j,h,k,l,i){this.fixDisplay();this.beforeAction();this.storeXY(j);var g=this.createCB(l);a.setXY.call(this,j,h,k,g,i);if(!h){g()}return this},createCB:function(e){var d=this;return function(){d.constrainXY();d.sync(true);if(e){e()}}},setX:function(g,h,j,k,i){this.setXY([g,this.getY()],h,j,k,i);return this},setY:function(k,g,i,j,h){this.setXY([this.getX(),k],g,i,j,h);return this},setSize:function(j,k,i,m,n,l){this.beforeAction();var g=this.createCB(n);a.setSize.call(this,j,k,i,m,g,l);if(!i){g()}return this},setWidth:function(i,h,k,l,j){this.beforeAction();var g=this.createCB(l);a.setWidth.call(this,i,h,k,g,j);if(!h){g()}return this},setHeight:function(j,i,l,m,k){this.beforeAction();var g=this.createCB(m);a.setHeight.call(this,j,i,l,g,k);if(!i){g()}return this},setBounds:function(o,m,p,i,n,k,l,j){this.beforeAction();var g=this.createCB(l);if(!n){this.storeXY([o,m]);a.setXY.call(this,[o,m]);a.setSize.call(this,p,i,n,k,g,j);g()}else{a.setBounds.call(this,o,m,p,i,n,k,g,j)}return this},setZIndex:function(c){this.zindex=c;this.setStyle("z-index",c+2);if(this.shadow){this.shadow.setZIndex(c+1)}if(this.shim){this.shim.setStyle("z-index",c)}return this}})})();Ext.Shadow=function(d){Ext.apply(this,d);if(typeof this.mode!="string"){this.mode=this.defaultMode}var e=this.offset,c={h:0},b=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":c.w=0;c.l=c.t=e;c.t-=1;if(Ext.isIE9m){c.l-=this.offset+b;c.t-=this.offset+b;c.w-=b;c.h-=b;c.t+=1}break;case"sides":c.w=(e*2);c.l=-e;c.t=e-1;if(Ext.isIE9m){c.l-=(this.offset-b);c.t-=this.offset+b;c.l+=1;c.w-=(this.offset-b)*2;c.w-=b+1;c.h-=1}break;case"frame":c.w=c.h=(e*2);c.l=c.t=-e;c.t+=1;c.h-=2;if(Ext.isIE9m){c.l-=(this.offset-b);c.t-=(this.offset-b);c.l+=1;c.w-=(this.offset+b+1);c.h-=(this.offset+b);c.h+=1}break}this.adjusts=c};Ext.Shadow.prototype={offset:4,defaultMode:"drop",show:function(a){a=Ext.get(a);if(!this.el){this.el=Ext.Shadow.Pool.pull();if(this.el.dom.nextSibling!=a.dom){this.el.insertBefore(a)}}this.el.setStyle("z-index",this.zIndex||parseInt(a.getStyle("z-index"),10)-1);if(Ext.isIE9m){this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")"}this.realign(a.getLeft(true),a.getTop(true),a.getWidth(),a.getHeight());this.el.dom.style.display="block"},isVisible:function(){return this.el?true:false},realign:function(b,r,q,g){if(!this.el){return}var n=this.adjusts,k=this.el.dom,u=k.style,i=0,p=(q+n.w),e=(g+n.h),j=p+"px",o=e+"px",m,c;u.left=(b+n.l)+"px";u.top=(r+n.t)+"px";if(u.width!=j||u.height!=o){u.width=j;u.height=o;if(!Ext.isIE9m){m=k.childNodes;c=Math.max(0,(p-12))+"px";m[0].childNodes[1].style.width=c;m[1].childNodes[1].style.width=c;m[2].childNodes[1].style.width=c;m[1].style.height=Math.max(0,(e-12))+"px"}}},hide:function(){if(this.el){this.el.dom.style.display="none";Ext.Shadow.Pool.push(this.el);delete this.el}},setZIndex:function(a){this.zIndex=a;if(this.el){this.el.setStyle("z-index",a)}}};Ext.Shadow.Pool=function(){var b=[],a=Ext.isIE9m?'<div class="x-ie-shadow"></div>':'<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';return{pull:function(){var c=b.shift();if(!c){c=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,a));c.autoBoxAdjust=false}return c},push:function(c){b.push(c)}}}();Ext.BoxComponent=Ext.extend(Ext.Component,{initComponent:function(){Ext.BoxComponent.superclass.initComponent.call(this);this.addEvents("resize","move")},boxReady:false,deferHeight:false,setSize:function(b,d){if(typeof b=="object"){d=b.height;b=b.width}if(Ext.isDefined(b)&&Ext.isDefined(this.boxMinWidth)&&(b<this.boxMinWidth)){b=this.boxMinWidth}if(Ext.isDefined(d)&&Ext.isDefined(this.boxMinHeight)&&(d<this.boxMinHeight)){d=this.boxMinHeight}if(Ext.isDefined(b)&&Ext.isDefined(this.boxMaxWidth)&&(b>this.boxMaxWidth)){b=this.boxMaxWidth}if(Ext.isDefined(d)&&Ext.isDefined(this.boxMaxHeight)&&(d>this.boxMaxHeight)){d=this.boxMaxHeight}if(!this.boxReady){this.width=b;this.height=d;return this}if(this.cacheSizes!==false&&this.lastSize&&this.lastSize.width==b&&this.lastSize.height==d){return this}this.lastSize={width:b,height:d};var c=this.adjustSize(b,d),g=c.width,a=c.height,e;if(g!==undefined||a!==undefined){e=this.getResizeEl();if(!this.deferHeight&&g!==undefined&&a!==undefined){e.setSize(g,a)}else{if(!this.deferHeight&&a!==undefined){e.setHeight(a)}else{if(g!==undefined){e.setWidth(g)}}}this.onResize(g,a,b,d);this.fireEvent("resize",this,g,a,b,d)}return this},setWidth:function(a){return this.setSize(a)},setHeight:function(a){return this.setSize(undefined,a)},getSize:function(){return this.getResizeEl().getSize()},getWidth:function(){return this.getResizeEl().getWidth()},getHeight:function(){return this.getResizeEl().getHeight()},getOuterSize:function(){var a=this.getResizeEl();return{width:a.getWidth()+a.getMargins("lr"),height:a.getHeight()+a.getMargins("tb")}},getPosition:function(a){var b=this.getPositionEl();if(a===true){return[b.getLeft(true),b.getTop(true)]}return this.xy||b.getXY()},getBox:function(a){var c=this.getPosition(a);var b=this.getSize();b.x=c[0];b.y=c[1];return b},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getResizeEl:function(){return this.resizeEl||this.el},setAutoScroll:function(a){if(this.rendered){this.getContentTarget().setOverflow(a?"auto":"")}this.autoScroll=a;return this},setPosition:function(a,g){if(a&&typeof a[1]=="number"){g=a[1];a=a[0]}this.x=a;this.y=g;if(!this.boxReady){return this}var b=this.adjustPosition(a,g);var e=b.x,d=b.y;var c=this.getPositionEl();if(e!==undefined||d!==undefined){if(e!==undefined&&d!==undefined){c.setLeftTop(e,d)}else{if(e!==undefined){c.setLeft(e)}else{if(d!==undefined){c.setTop(d)}}}this.onPosition(e,d);this.fireEvent("move",this,e,d)}return this},setPagePosition:function(a,c){if(a&&typeof a[1]=="number"){c=a[1];a=a[0]}this.pageX=a;this.pageY=c;if(!this.boxReady){return}if(a===undefined||c===undefined){return}var b=this.getPositionEl().translatePoints(a,c);this.setPosition(b.left,b.top);return this},afterRender:function(){Ext.BoxComponent.superclass.afterRender.call(this);if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl)}if(this.positionEl){this.positionEl=Ext.get(this.positionEl)}this.boxReady=true;Ext.isDefined(this.autoScroll)&&this.setAutoScroll(this.autoScroll);this.setSize(this.width,this.height);if(this.x||this.y){this.setPosition(this.x,this.y)}else{if(this.pageX||this.pageY){this.setPagePosition(this.pageX,this.pageY)}}},syncSize:function(){delete this.lastSize;this.setSize(this.autoWidth?undefined:this.getResizeEl().getWidth(),this.autoHeight?undefined:this.getResizeEl().getHeight());return this},onResize:function(d,b,a,c){},onPosition:function(a,b){},adjustSize:function(a,b){if(this.autoWidth){a="auto"}if(this.autoHeight){b="auto"}return{width:a,height:b}},adjustPosition:function(a,b){return{x:a,y:b}}});Ext.reg("box",Ext.BoxComponent);Ext.Spacer=Ext.extend(Ext.BoxComponent,{autoEl:"div"});Ext.reg("spacer",Ext.Spacer);Ext.SplitBar=function(c,e,b,d,a){this.el=Ext.get(c,true);this.el.unselectable();this.resizingEl=Ext.get(e,true);this.orientation=b||Ext.SplitBar.HORIZONTAL;this.minSize=0;this.maxSize=2000;this.animate=false;this.useShim=false;this.shim=null;if(!a){this.proxy=Ext.SplitBar.createProxy(this.orientation)}else{this.proxy=Ext.get(a).dom}this.dd=new Ext.dd.DDProxy(this.el.dom.id,"XSplitBars",{dragElId:this.proxy.id});this.dd.b4StartDrag=this.onStartProxyDrag.createDelegate(this);this.dd.endDrag=this.onEndProxyDrag.createDelegate(this);this.dragSpecs={};this.adapter=new Ext.SplitBar.BasicLayoutAdapter();this.adapter.init(this);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.placement=d||(this.el.getX()>this.resizingEl.getX()?Ext.SplitBar.LEFT:Ext.SplitBar.RIGHT);this.el.addClass("x-splitbar-h")}else{this.placement=d||(this.el.getY()>this.resizingEl.getY()?Ext.SplitBar.TOP:Ext.SplitBar.BOTTOM);this.el.addClass("x-splitbar-v")}this.addEvents("resize","moved","beforeresize","beforeapply");Ext.SplitBar.superclass.constructor.call(this)};Ext.extend(Ext.SplitBar,Ext.util.Observable,{onStartProxyDrag:function(a,e){this.fireEvent("beforeresize",this);this.overlay=Ext.DomHelper.append(document.body,{cls:"x-drag-overlay",html:"&#160;"},true);this.overlay.unselectable();this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();Ext.get(this.proxy).setDisplayed("block");var c=this.adapter.getElementSize(this);this.activeMinSize=this.getMinimumSize();this.activeMaxSize=this.getMaximumSize();var d=c-this.activeMinSize;var b=Math.max(this.activeMaxSize-c,0);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.dd.resetConstraints();this.dd.setXConstraint(this.placement==Ext.SplitBar.LEFT?d:b,this.placement==Ext.SplitBar.LEFT?b:d,this.tickSize);this.dd.setYConstraint(0,0)}else{this.dd.resetConstraints();this.dd.setXConstraint(0,0);this.dd.setYConstraint(this.placement==Ext.SplitBar.TOP?d:b,this.placement==Ext.SplitBar.TOP?b:d,this.tickSize)}this.dragSpecs.startSize=c;this.dragSpecs.startPoint=[a,e];Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd,a,e)},onEndProxyDrag:function(c){Ext.get(this.proxy).setDisplayed(false);var b=Ext.lib.Event.getXY(c);if(this.overlay){Ext.destroy(this.overlay);delete this.overlay}var a;if(this.orientation==Ext.SplitBar.HORIZONTAL){a=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.LEFT?b[0]-this.dragSpecs.startPoint[0]:this.dragSpecs.startPoint[0]-b[0])}else{a=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.TOP?b[1]-this.dragSpecs.startPoint[1]:this.dragSpecs.startPoint[1]-b[1])}a=Math.min(Math.max(a,this.activeMinSize),this.activeMaxSize);if(a!=this.dragSpecs.startSize){if(this.fireEvent("beforeapply",this,a)!==false){this.adapter.setElementSize(this,a);this.fireEvent("moved",this,a);this.fireEvent("resize",this,a)}}},getAdapter:function(){return this.adapter},setAdapter:function(a){this.adapter=a;this.adapter.init(this)},getMinimumSize:function(){return this.minSize},setMinimumSize:function(a){this.minSize=a},getMaximumSize:function(){return this.maxSize},setMaximumSize:function(a){this.maxSize=a},setCurrentSize:function(b){var a=this.animate;this.animate=false;this.adapter.setElementSize(this,b);this.animate=a},destroy:function(a){Ext.destroy(this.shim,Ext.get(this.proxy));this.dd.unreg();if(a){this.el.remove()}this.purgeListeners()}});Ext.SplitBar.createProxy=function(b){var c=new Ext.Element(document.createElement("div"));document.body.appendChild(c.dom);c.unselectable();var a="x-splitbar-proxy";c.addClass(a+" "+(b==Ext.SplitBar.HORIZONTAL?a+"-h":a+"-v"));return c.dom};Ext.SplitBar.BasicLayoutAdapter=function(){};Ext.SplitBar.BasicLayoutAdapter.prototype={init:function(a){},getElementSize:function(a){if(a.orientation==Ext.SplitBar.HORIZONTAL){return a.resizingEl.getWidth()}else{return a.resizingEl.getHeight()}},setElementSize:function(b,a,c){if(b.orientation==Ext.SplitBar.HORIZONTAL){if(!b.animate){b.resizingEl.setWidth(a);if(c){c(b,a)}}else{b.resizingEl.setWidth(a,true,0.1,c,"easeOut")}}else{if(!b.animate){b.resizingEl.setHeight(a);if(c){c(b,a)}}else{b.resizingEl.setHeight(a,true,0.1,c,"easeOut")}}}};Ext.SplitBar.AbsoluteLayoutAdapter=function(a){this.basic=new Ext.SplitBar.BasicLayoutAdapter();this.container=Ext.get(a)};Ext.SplitBar.AbsoluteLayoutAdapter.prototype={init:function(a){this.basic.init(a)},getElementSize:function(a){return this.basic.getElementSize(a)},setElementSize:function(b,a,c){this.basic.setElementSize(b,a,this.moveSplitter.createDelegate(this,[b]))},moveSplitter:function(a){var b=Ext.SplitBar;switch(a.placement){case b.LEFT:a.el.setX(a.resizingEl.getRight());break;case b.RIGHT:a.el.setStyle("right",(this.container.getWidth()-a.resizingEl.getLeft())+"px");break;case b.TOP:a.el.setY(a.resizingEl.getBottom());break;case b.BOTTOM:a.el.setY(a.resizingEl.getTop()-a.el.getHeight());break}}};Ext.SplitBar.VERTICAL=1;Ext.SplitBar.HORIZONTAL=2;Ext.SplitBar.LEFT=1;Ext.SplitBar.RIGHT=2;Ext.SplitBar.TOP=3;Ext.SplitBar.BOTTOM=4;Ext.Container=Ext.extend(Ext.BoxComponent,{bufferResize:50,autoDestroy:true,forceLayout:false,defaultType:"panel",resizeEvent:"resize",bubbleEvents:["add","remove"],initComponent:function(){Ext.Container.superclass.initComponent.call(this);this.addEvents("afterlayout","beforeadd","beforeremove","add","remove");var a=this.items;if(a){delete this.items;this.add(a)}},initItems:function(){if(!this.items){this.items=new Ext.util.MixedCollection(false,this.getComponentId);this.getLayout()}},setLayout:function(a){if(this.layout&&this.layout!=a){this.layout.setContainer(null)}this.layout=a;this.initItems();a.setContainer(this)},afterRender:function(){Ext.Container.superclass.afterRender.call(this);if(!this.layout){this.layout="auto"}if(Ext.isObject(this.layout)&&!this.layout.layout){this.layoutConfig=this.layout;this.layout=this.layoutConfig.type}if(Ext.isString(this.layout)){this.layout=new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)}this.setLayout(this.layout);if(this.activeItem!==undefined&&this.layout.setActiveItem){var a=this.activeItem;delete this.activeItem;this.layout.setActiveItem(a)}if(!this.ownerCt){this.doLayout(false,true)}if(this.monitorResize===true){Ext.EventManager.onWindowResize(this.doLayout,this,[false])}},getLayoutTarget:function(){return this.el},getComponentId:function(a){return a.getItemId()},add:function(b){this.initItems();var e=arguments.length>1;if(e||Ext.isArray(b)){var a=[];Ext.each(e?arguments:b,function(h){a.push(this.add(h))},this);return a}var g=this.lookupComponent(this.applyDefaults(b));var d=this.items.length;if(this.fireEvent("beforeadd",this,g,d)!==false&&this.onBeforeAdd(g)!==false){this.items.add(g);g.onAdded(this,d);this.onAdd(g);this.fireEvent("add",this,g,d)}return g},onAdd:function(a){},onAdded:function(a,b){this.ownerCt=a;this.initRef();this.cascade(function(d){d.initRef()});this.fireEvent("added",this,a,b)},insert:function(e,b){var d=arguments,h=d.length,a=[],g,j;this.initItems();if(h>2){for(g=h-1;g>=1;--g){a.push(this.insert(e,d[g]))}return a}j=this.lookupComponent(this.applyDefaults(b));e=Math.min(e,this.items.length);if(this.fireEvent("beforeadd",this,j,e)!==false&&this.onBeforeAdd(j)!==false){if(j.ownerCt==this){this.items.remove(j)}this.items.insert(e,j);j.onAdded(this,e);this.onAdd(j);this.fireEvent("add",this,j,e)}return j},applyDefaults:function(b){var a=this.defaults;if(a){if(Ext.isFunction(a)){a=a.call(this,b)}if(Ext.isString(b)){b=Ext.ComponentMgr.get(b);Ext.apply(b,a)}else{if(!b.events){Ext.applyIf(b.isAction?b.initialConfig:b,a)}else{Ext.apply(b,a)}}}return b},onBeforeAdd:function(a){if(a.ownerCt){a.ownerCt.remove(a,false)}if(this.hideBorders===true){a.border=(a.border===true)}},remove:function(a,b){this.initItems();var d=this.getComponent(a);if(d&&this.fireEvent("beforeremove",this,d)!==false){this.doRemove(d,b);this.fireEvent("remove",this,d)}return d},onRemove:function(a){},doRemove:function(e,d){var b=this.layout,a=b&&this.rendered;if(a){b.onRemove(e)}this.items.remove(e);e.onRemoved();this.onRemove(e);if(d===true||(d!==false&&this.autoDestroy)){e.destroy()}if(a){b.afterRemove(e)}},removeAll:function(c){this.initItems();var e,g=[],b=[];this.items.each(function(h){g.push(h)});for(var d=0,a=g.length;d<a;++d){e=g[d];this.remove(e,c);if(e.ownerCt!==this){b.push(e)}}return b},getComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}return this.items.get(a)},lookupComponent:function(a){if(Ext.isString(a)){return Ext.ComponentMgr.get(a)}else{if(!a.events){return this.createComponent(a)}}return a},createComponent:function(a,d){if(a.render){return a}var b=Ext.create(Ext.apply({ownerCt:this},a),d||this.defaultType);delete b.initialConfig.ownerCt;delete b.ownerCt;return b},canLayout:function(){var a=this.getVisibilityEl();return a&&a.dom&&!a.isStyle("display","none")},doLayout:function(g,e){var k=this.rendered,j=e||this.forceLayout;if(this.collapsed||!this.canLayout()){this.deferLayout=this.deferLayout||!g;if(!j){return}g=g&&!this.deferLayout}else{delete this.deferLayout}if(k&&this.layout){this.layout.layout()}if(g!==true&&this.items){var d=this.items.items;for(var b=0,a=d.length;b<a;b++){var h=d[b];if(h.doLayout){h.doLayout(false,j)}}}if(k){this.onLayout(g,j)}this.hasLayout=true;delete this.forceLayout},onLayout:Ext.emptyFn,shouldBufferLayout:function(){var a=this.hasLayout;if(this.ownerCt){return a?!this.hasLayoutPending():false}return a},hasLayoutPending:function(){var a=false;this.ownerCt.bubble(function(b){if(b.layoutPending){a=true;return false}});return a},onShow:function(){Ext.Container.superclass.onShow.call(this);if(Ext.isDefined(this.deferLayout)){delete this.deferLayout;this.doLayout(true)}},getLayout:function(){if(!this.layout){var a=new Ext.layout.AutoLayout(this.layoutConfig);this.setLayout(a)}return this.layout},beforeDestroy:function(){var a;if(this.items){while(a=this.items.first()){this.doRemove(a,true)}}if(this.monitorResize){Ext.EventManager.removeResizeListener(this.doLayout,this)}Ext.destroy(this.layout);Ext.Container.superclass.beforeDestroy.call(this)},cascade:function(g,e,b){if(g.apply(e||this,b||[this])!==false){if(this.items){var d=this.items.items;for(var c=0,a=d.length;c<a;c++){if(d[c].cascade){d[c].cascade(g,e,b)}else{g.apply(e||d[c],b||[d[c]])}}}}return this},findById:function(c){var a=null,b=this;this.cascade(function(d){if(b!=d&&d.id===c){a=d;return false}});return a},findByType:function(b,a){return this.findBy(function(d){return d.isXType(b,a)})},find:function(b,a){return this.findBy(function(d){return d[b]===a})},findBy:function(d,c){var a=[],b=this;this.cascade(function(e){if(b!=e&&d.call(c||e,e,b)===true){a.push(e)}});return a},get:function(a){return this.getComponent(a)}});Ext.Container.LAYOUTS={};Ext.reg("container",Ext.Container);Ext.layout.ContainerLayout=Ext.extend(Object,{monitorResize:false,activeItem:null,constructor:function(a){this.id=Ext.id(null,"ext-layout-");Ext.apply(this,a)},type:"container",IEMeasureHack:function(k,g){var a=k.dom.childNodes,b=a.length,n,m=[],l,h,j;for(h=0;h<b;h++){n=a[h];l=Ext.get(n);if(l){m[h]=l.getStyle("display");l.setStyle({display:"none"})}}j=k?k.getViewSize(g):{};for(h=0;h<b;h++){n=a[h];l=Ext.get(n);if(l){l.setStyle({display:m[h]})}}return j},getLayoutTargetSize:Ext.EmptyFn,layout:function(){var a=this.container,b=a.getLayoutTarget();if(!(this.hasLayout||Ext.isEmpty(this.targetCls))){b.addClass(this.targetCls)}this.onLayout(a,b);a.fireEvent("afterlayout",a,this)},onLayout:function(a,b){this.renderAll(a,b)},isValidParent:function(b,a){return a&&b.getPositionEl().dom.parentNode==(a.dom||a)},renderAll:function(e,g){var b=e.items.items,d,h,a=b.length;for(d=0;d<a;d++){h=b[d];if(h&&(!h.rendered||!this.isValidParent(h,g))){this.renderItem(h,d,g)}}},renderItem:function(d,a,b){if(d){if(!d.rendered){d.render(b,a);this.configureItem(d)}else{if(!this.isValidParent(d,b)){if(Ext.isNumber(a)){a=b.dom.childNodes[a]}b.dom.insertBefore(d.getPositionEl().dom,a||null);d.container=b;this.configureItem(d)}}}},getRenderedItems:function(g){var e=g.getLayoutTarget(),h=g.items.items,a=h.length,d,j,b=[];for(d=0;d<a;d++){if((j=h[d]).rendered&&this.isValidParent(j,e)&&j.shouldLayout!==false){b.push(j)}}return b},configureItem:function(b){if(this.extraCls){var a=b.getPositionEl?b.getPositionEl():b;a.addClass(this.extraCls)}if(b.doLayout&&this.forceLayout){b.doLayout()}if(this.renderHidden&&b!=this.activeItem){b.hide()}},onRemove:function(b){if(this.activeItem==b){delete this.activeItem}if(b.rendered&&this.extraCls){var a=b.getPositionEl?b.getPositionEl():b;a.removeClass(this.extraCls)}},afterRemove:function(a){if(a.removeRestore){a.removeMode="container";delete a.removeRestore}},onResize:function(){var c=this.container,a;if(c.collapsed){return}if(a=c.bufferResize&&c.shouldBufferLayout()){if(!this.resizeTask){this.resizeTask=new Ext.util.DelayedTask(this.runLayout,this);this.resizeBuffer=Ext.isNumber(a)?a:50}c.layoutPending=true;this.resizeTask.delay(this.resizeBuffer)}else{this.runLayout()}},runLayout:function(){var a=this.container;this.layout();a.onLayout();delete a.layoutPending},setContainer:function(b){if(this.monitorResize&&b!=this.container){var a=this.container;if(a){a.un(a.resizeEvent,this.onResize,this)}if(b){b.on(b.resizeEvent,this.onResize,this)}}this.container=b},parseMargins:function(b){if(Ext.isNumber(b)){b=b.toString()}var c=b.split(" "),a=c.length;if(a==1){c[1]=c[2]=c[3]=c[0]}else{if(a==2){c[2]=c[0];c[3]=c[1]}else{if(a==3){c[3]=c[1]}}}return{top:parseInt(c[0],10)||0,right:parseInt(c[1],10)||0,bottom:parseInt(c[2],10)||0,left:parseInt(c[3],10)||0}},fieldTpl:(function(){var a=new Ext.Template('<div class="x-form-item {itemCls}" tabIndex="-1">','<label for="{id}" style="{labelStyle}" class="x-form-item-label">{label}{labelSeparator}</label>','<div class="x-form-element" id="x-form-el-{id}" style="{elementStyle}">','</div><div class="{clearCls}"></div>',"</div>");a.disableFormats=true;return a.compile()})(),destroy:function(){if(this.resizeTask&&this.resizeTask.cancel){this.resizeTask.cancel()}if(this.container){this.container.un(this.container.resizeEvent,this.onResize,this)}if(!Ext.isEmpty(this.targetCls)){var a=this.container.getLayoutTarget();if(a){a.removeClass(this.targetCls)}}}});Ext.layout.AutoLayout=Ext.extend(Ext.layout.ContainerLayout,{type:"auto",monitorResize:true,onLayout:function(d,g){Ext.layout.AutoLayout.superclass.onLayout.call(this,d,g);var e=this.getRenderedItems(d),a=e.length,b,h;for(b=0;b<a;b++){h=e[b];if(h.doLayout){h.doLayout(true)}}}});Ext.Container.LAYOUTS.auto=Ext.layout.AutoLayout;Ext.layout.FitLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"fit",getLayoutTargetSize:function(){var a=this.container.getLayoutTarget();if(!a){return{}}return a.getStyleSize()},onLayout:function(a,b){Ext.layout.FitLayout.superclass.onLayout.call(this,a,b);if(!a.collapsed){this.setItemSize(this.activeItem||a.items.itemAt(0),this.getLayoutTargetSize())}},setItemSize:function(b,a){if(b&&a.height>0){b.setSize(a)}}});Ext.Container.LAYOUTS.fit=Ext.layout.FitLayout;Ext.layout.CardLayout=Ext.extend(Ext.layout.FitLayout,{deferredRender:false,layoutOnCardChange:false,renderHidden:true,type:"card",setActiveItem:function(d){var a=this.activeItem,b=this.container;d=b.getComponent(d);if(d&&a!=d){if(a){a.hide();if(a.hidden!==true){return false}a.fireEvent("deactivate",a)}var c=d.doLayout&&(this.layoutOnCardChange||!d.rendered);this.activeItem=d;delete d.deferLayout;d.show();this.layout();if(c){d.doLayout()}d.fireEvent("activate",d)}},renderAll:function(a,b){if(this.deferredRender){this.renderItem(this.activeItem,undefined,b)}else{Ext.layout.CardLayout.superclass.renderAll.call(this,a,b)}}});Ext.Container.LAYOUTS.card=Ext.layout.CardLayout;Ext.layout.AnchorLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a={};if(b){a=b.getViewSize();if(Ext.isIE9m&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},onLayout:function(m,w){Ext.layout.AnchorLayout.superclass.onLayout.call(this,m,w);var p=this.getLayoutTargetSize(),k=p.width,o=p.height,q=w.getStyle("overflow"),n=this.getRenderedItems(m),t=n.length,g=[],j,a,v,l,h,c,e,d,u=0,s,b;if(k<20&&o<20){return}if(m.anchorSize){if(typeof m.anchorSize=="number"){a=m.anchorSize}else{a=m.anchorSize.width;v=m.anchorSize.height}}else{a=m.initialConfig.width;v=m.initialConfig.height}for(s=0;s<t;s++){l=n[s];b=l.getPositionEl();if(!l.anchor&&l.items&&!Ext.isNumber(l.width)&&!(Ext.isIE6&&Ext.isStrict)){l.anchor=this.defaultAnchor}if(l.anchor){h=l.anchorSpec;if(!h){d=l.anchor.split(" ");l.anchorSpec=h={right:this.parseAnchor(d[0],l.initialConfig.width,a),bottom:this.parseAnchor(d[1],l.initialConfig.height,v)}}c=h.right?this.adjustWidthAnchor(h.right(k)-b.getMargins("lr"),l):undefined;e=h.bottom?this.adjustHeightAnchor(h.bottom(o)-b.getMargins("tb"),l):undefined;if(c||e){g.push({component:l,width:c||undefined,height:e||undefined})}}}for(s=0,t=g.length;s<t;s++){j=g[s];j.component.setSize(j.width,j.height)}if(q&&q!="hidden"&&!this.adjustmentPass){var r=this.getLayoutTargetSize();if(r.width!=p.width||r.height!=p.height){this.adjustmentPass=true;this.onLayout(m,w)}}delete this.adjustmentPass},parseAnchor:function(c,h,b){if(c&&c!="none"){var e;if(this.parseAnchorRE.test(c)){var g=b-h;return function(a){if(a!==e){e=a;return a-g}}}else{if(c.indexOf("%")!=-1){var d=parseFloat(c.replace("%",""))*0.01;return function(a){if(a!==e){e=a;return Math.floor(a*d)}}}else{c=parseInt(c,10);if(!isNaN(c)){return function(a){if(a!==e){e=a;return a+c}}}}}}return false},adjustWidthAnchor:function(b,a){return b},adjustHeightAnchor:function(b,a){return b}});Ext.Container.LAYOUTS.anchor=Ext.layout.AnchorLayout;Ext.layout.ColumnLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"column",extraCls:"x-column",scrollOffset:0,targetCls:"x-column-layout-ct",isValidParent:function(b,a){return this.innerCt&&b.getPositionEl().dom.parentNode==this.innerCt.dom},getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a;if(b){a=b.getViewSize();if(Ext.isIE9m&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},renderAll:function(a,b){if(!this.innerCt){this.innerCt=b.createChild({cls:"x-column-inner"});this.innerCt.createChild({cls:"x-clear"})}Ext.layout.ColumnLayout.superclass.renderAll.call(this,a,this.innerCt)},onLayout:function(e,k){var g=e.items.items,j=g.length,n,b,a,o=[];this.renderAll(e,k);var r=this.getLayoutTargetSize();if(Ext.isIE9m&&(r.width<1&&r.height<1)){return}var p=r.width-this.scrollOffset,d=r.height,q=p;this.innerCt.setWidth(p);for(b=0;b<j;b++){n=g[b];a=n.getPositionEl().getMargins("lr");o[b]=a;if(!n.columnWidth){q-=(n.getWidth()+a)}}q=q<0?0:q;for(b=0;b<j;b++){n=g[b];a=o[b];if(n.columnWidth){n.setSize(Math.floor(n.columnWidth*q)-a)}}if(Ext.isIE9m){if(b=k.getStyle("overflow")&&b!="hidden"&&!this.adjustmentPass){var l=this.getLayoutTargetSize();if(l.width!=r.width){this.adjustmentPass=true;this.onLayout(e,k)}}}delete this.adjustmentPass}});Ext.Container.LAYOUTS.column=Ext.layout.ColumnLayout;Ext.layout.BorderLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,rendered:false,type:"border",targetCls:"x-border-layout-ct",getLayoutTargetSize:function(){var a=this.container.getLayoutTarget();return a?a.getViewSize():{}},onLayout:function(g,I){var j,B,F,o,x=g.items.items,C=x.length;if(!this.rendered){j=[];for(B=0;B<C;B++){F=x[B];o=F.region;if(F.collapsed){j.push(F)}F.collapsed=false;if(!F.rendered){F.render(I,B);F.getPositionEl().addClass("x-border-panel")}this[o]=o!="center"&&F.split?new Ext.layout.BorderLayout.SplitRegion(this,F.initialConfig,o):new Ext.layout.BorderLayout.Region(this,F.initialConfig,o);this[o].render(I,F)}this.rendered=true}var v=this.getLayoutTargetSize();if(v.width<20||v.height<20){if(j){this.restoreCollapsed=j}return}else{if(this.restoreCollapsed){j=this.restoreCollapsed;delete this.restoreCollapsed}}var t=v.width,D=v.height,r=t,A=D,p=0,q=0,y=this.north,u=this.south,l=this.west,E=this.east,F=this.center,H,z,d,G;if(!F&&Ext.layout.BorderLayout.WARN!==false){throw"No center region defined in BorderLayout "+g.id}if(y&&y.isVisible()){H=y.getSize();z=y.getMargins();H.width=t-(z.left+z.right);H.x=z.left;H.y=z.top;p=H.height+H.y+z.bottom;A-=p;y.applyLayout(H)}if(u&&u.isVisible()){H=u.getSize();z=u.getMargins();H.width=t-(z.left+z.right);H.x=z.left;G=(H.height+z.top+z.bottom);H.y=D-G+z.top;A-=G;u.applyLayout(H)}if(l&&l.isVisible()){H=l.getSize();z=l.getMargins();H.height=A-(z.top+z.bottom);H.x=z.left;H.y=p+z.top;d=(H.width+z.left+z.right);q+=d;r-=d;l.applyLayout(H)}if(E&&E.isVisible()){H=E.getSize();z=E.getMargins();H.height=A-(z.top+z.bottom);d=(H.width+z.left+z.right);H.x=t-d+z.left;H.y=p+z.top;r-=d;E.applyLayout(H)}if(F){z=F.getMargins();var k={x:q+z.left,y:p+z.top,width:r-(z.left+z.right),height:A-(z.top+z.bottom)};F.applyLayout(k)}if(j){for(B=0,C=j.length;B<C;B++){j[B].collapse(false)}}if(Ext.isIE9m&&Ext.isStrict){I.repaint()}if(B=I.getStyle("overflow")&&B!="hidden"&&!this.adjustmentPass){var a=this.getLayoutTargetSize();if(a.width!=v.width||a.height!=v.height){this.adjustmentPass=true;this.onLayout(g,I)}}delete this.adjustmentPass},destroy:function(){var b=["north","south","east","west"],a,c;for(a=0;a<b.length;a++){c=this[b[a]];if(c){if(c.destroy){c.destroy()}else{if(c.split){c.split.destroy(true)}}}}Ext.layout.BorderLayout.superclass.destroy.call(this)}});Ext.layout.BorderLayout.Region=function(b,a,c){Ext.apply(this,a);this.layout=b;this.position=c;this.state={};if(typeof this.margins=="string"){this.margins=this.layout.parseMargins(this.margins)}this.margins=Ext.applyIf(this.margins||{},this.defaultMargins);if(this.collapsible){if(typeof this.cmargins=="string"){this.cmargins=this.layout.parseMargins(this.cmargins)}if(this.collapseMode=="mini"&&!this.cmargins){this.cmargins={left:0,top:0,right:0,bottom:0}}else{this.cmargins=Ext.applyIf(this.cmargins||{},c=="north"||c=="south"?this.defaultNSCMargins:this.defaultEWCMargins)}}};Ext.layout.BorderLayout.Region.prototype={collapsible:false,split:false,floatable:true,minWidth:50,minHeight:50,defaultMargins:{left:0,top:0,right:0,bottom:0},defaultNSCMargins:{left:5,top:5,right:5,bottom:5},defaultEWCMargins:{left:5,top:0,right:5,bottom:0},floatingZIndex:100,isCollapsed:false,render:function(b,c){this.panel=c;c.el.enableDisplayMode();this.targetEl=b;this.el=c.el;var a=c.getState,d=this.position;c.getState=function(){return Ext.apply(a.call(c)||{},this.state)}.createDelegate(this);if(d!="center"){c.allowQueuedExpand=false;c.on({beforecollapse:this.beforeCollapse,collapse:this.onCollapse,beforeexpand:this.beforeExpand,expand:this.onExpand,hide:this.onHide,show:this.onShow,scope:this});if(this.collapsible||this.floatable){c.collapseEl="el";c.slideAnchor=this.getSlideAnchor()}if(c.tools&&c.tools.toggle){c.tools.toggle.addClass("x-tool-collapse-"+d);c.tools.toggle.addClassOnOver("x-tool-collapse-"+d+"-over")}}},getCollapsedEl:function(){if(!this.collapsedEl){if(!this.toolTemplate){var b=new Ext.Template('<div class="x-tool x-tool-{id}">&#160;</div>');b.disableFormats=true;b.compile();Ext.layout.BorderLayout.Region.prototype.toolTemplate=b}this.collapsedEl=this.targetEl.createChild({cls:"x-layout-collapsed x-layout-collapsed-"+this.position,id:this.panel.id+"-xcollapsed"});this.collapsedEl.enableDisplayMode("block");if(this.collapseMode=="mini"){this.collapsedEl.addClass("x-layout-cmini-"+this.position);this.miniCollapsedEl=this.collapsedEl.createChild({cls:"x-layout-mini x-layout-mini-"+this.position,html:"&#160;"});this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.onExpandClick,this,{stopEvent:true})}else{if(this.collapsible!==false&&!this.hideCollapseTool){var a=this.expandToolEl=this.toolTemplate.append(this.collapsedEl.dom,{id:"expand-"+this.position},true);a.addClassOnOver("x-tool-expand-"+this.position+"-over");a.on("click",this.onExpandClick,this,{stopEvent:true})}if(this.floatable!==false||this.titleCollapse){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this[this.floatable?"collapseClick":"onExpandClick"],this)}}}return this.collapsedEl},onExpandClick:function(a){if(this.isSlid){this.panel.expand(false)}else{this.panel.expand()}},onCollapseClick:function(a){this.panel.collapse()},beforeCollapse:function(c,a){this.lastAnim=a;if(this.splitEl){this.splitEl.hide()}this.getCollapsedEl().show();var b=this.panel.getEl();this.originalZIndex=b.getStyle("z-index");b.setStyle("z-index",100);this.isCollapsed=true;this.layout.layout()},onCollapse:function(a){this.panel.el.setStyle("z-index",1);if(this.lastAnim===false||this.panel.animCollapse===false){this.getCollapsedEl().dom.style.visibility="visible"}else{this.getCollapsedEl().slideIn(this.panel.slideAnchor,{duration:0.2})}this.state.collapsed=true;this.panel.saveState()},beforeExpand:function(a){if(this.isSlid){this.afterSlideIn()}var b=this.getCollapsedEl();this.el.show();if(this.position=="east"||this.position=="west"){this.panel.setSize(undefined,b.getHeight())}else{this.panel.setSize(b.getWidth(),undefined)}b.hide();b.dom.style.visibility="hidden";this.panel.el.setStyle("z-index",this.floatingZIndex)},onExpand:function(){this.isCollapsed=false;if(this.splitEl){this.splitEl.show()}this.layout.layout();this.panel.el.setStyle("z-index",this.originalZIndex);this.state.collapsed=false;this.panel.saveState()},collapseClick:function(a){if(this.isSlid){a.stopPropagation();this.slideIn()}else{a.stopPropagation();this.slideOut()}},onHide:function(){if(this.isCollapsed){this.getCollapsedEl().hide()}else{if(this.splitEl){this.splitEl.hide()}}},onShow:function(){if(this.isCollapsed){this.getCollapsedEl().show()}else{if(this.splitEl){this.splitEl.show()}}},isVisible:function(){return !this.panel.hidden},getMargins:function(){return this.isCollapsed&&this.cmargins?this.cmargins:this.margins},getSize:function(){return this.isCollapsed?this.getCollapsedEl().getSize():this.panel.getSize()},setPanel:function(a){this.panel=a},getMinWidth:function(){return this.minWidth},getMinHeight:function(){return this.minHeight},applyLayoutCollapsed:function(a){var b=this.getCollapsedEl();b.setLeftTop(a.x,a.y);b.setSize(a.width,a.height)},applyLayout:function(a){if(this.isCollapsed){this.applyLayoutCollapsed(a)}else{this.panel.setPosition(a.x,a.y);this.panel.setSize(a.width,a.height)}},beforeSlide:function(){this.panel.beforeEffect()},afterSlide:function(){this.panel.afterEffect()},initAutoHide:function(){if(this.autoHide!==false){if(!this.autoHideHd){this.autoHideSlideTask=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={mouseout:function(a){if(!a.within(this.el,true)){this.autoHideSlideTask.delay(500)}},mouseover:function(a){this.autoHideSlideTask.cancel()},scope:this}}this.el.on(this.autoHideHd);this.collapsedEl.on(this.autoHideHd)}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover);this.collapsedEl.un("mouseout",this.autoHideHd.mouseout);this.collapsedEl.un("mouseover",this.autoHideHd.mouseover)}},clearMonitor:function(){Ext.getDoc().un("click",this.slideInIf,this)},slideOut:function(){if(this.isSlid||this.el.hasActiveFx()){return}this.isSlid=true;var b=this.panel.tools,c,a;if(b&&b.toggle){b.toggle.hide()}this.el.show();a=this.panel.collapsed;this.panel.collapsed=false;if(this.position=="east"||this.position=="west"){c=this.panel.deferHeight;this.panel.deferHeight=false;this.panel.setSize(undefined,this.collapsedEl.getHeight());this.panel.deferHeight=c}else{this.panel.setSize(this.collapsedEl.getWidth(),undefined)}this.panel.collapsed=a;this.restoreLT=[this.el.dom.style.left,this.el.dom.style.top];this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.el.setStyle("z-index",this.floatingZIndex+2);this.panel.el.replaceClass("x-panel-collapsed","x-panel-floating");if(this.animFloat!==false){this.beforeSlide();this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.afterSlide();this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)},scope:this,block:true})}else{this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)}},afterSlideIn:function(){this.clearAutoHide();this.isSlid=false;this.clearMonitor();this.el.setStyle("z-index","");this.panel.el.replaceClass("x-panel-floating","x-panel-collapsed");this.el.dom.style.left=this.restoreLT[0];this.el.dom.style.top=this.restoreLT[1];var a=this.panel.tools;if(a&&a.toggle){a.toggle.show()}},slideIn:function(a){if(!this.isSlid||this.el.hasActiveFx()){Ext.callback(a);return}this.isSlid=false;if(this.animFloat!==false){this.beforeSlide();this.el.slideOut(this.getSlideAnchor(),{callback:function(){this.el.hide();this.afterSlide();this.afterSlideIn();Ext.callback(a)},scope:this,block:true})}else{this.el.hide();this.afterSlideIn()}},slideInIf:function(a){if(!a.within(this.el)){this.slideIn()}},anchors:{west:"left",east:"right",north:"top",south:"bottom"},sanchors:{west:"l",east:"r",north:"t",south:"b"},canchors:{west:"tl-tr",east:"tr-tl",north:"tl-bl",south:"bl-tl"},getAnchor:function(){return this.anchors[this.position]},getCollapseAnchor:function(){return this.canchors[this.position]},getSlideAnchor:function(){return this.sanchors[this.position]},getAlignAdj:function(){var a=this.cmargins;switch(this.position){case"west":return[0,0];break;case"east":return[0,0];break;case"north":return[0,0];break;case"south":return[0,0];break}},getExpandAdj:function(){var b=this.collapsedEl,a=this.cmargins;switch(this.position){case"west":return[-(a.right+b.getWidth()+a.left),0];break;case"east":return[a.right+b.getWidth()+a.left,0];break;case"north":return[0,-(a.top+a.bottom+b.getHeight())];break;case"south":return[0,a.top+a.bottom+b.getHeight()];break}},destroy:function(){if(this.autoHideSlideTask&&this.autoHideSlideTask.cancel){this.autoHideSlideTask.cancel()}Ext.destroyMembers(this,"miniCollapsedEl","collapsedEl","expandToolEl")}};Ext.layout.BorderLayout.SplitRegion=function(b,a,c){Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this,b,a,c);this.applyLayout=this.applyFns[c]};Ext.extend(Ext.layout.BorderLayout.SplitRegion,Ext.layout.BorderLayout.Region,{splitTip:"Drag to resize.",collapsibleSplitTip:"Drag to resize. Double click to hide.",useSplitTips:false,splitSettings:{north:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.TOP,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},south:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.BOTTOM,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},east:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.RIGHT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"},west:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.LEFT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"}},applyFns:{west:function(c){if(this.isCollapsed){return this.applyLayoutCollapsed(c)}var d=this.splitEl.dom,b=d.style;this.panel.setPosition(c.x,c.y);var a=d.offsetWidth;b.left=(c.x+c.width-a)+"px";b.top=(c.y)+"px";b.height=Math.max(0,c.height)+"px";this.panel.setSize(c.width-a,c.height)},east:function(c){if(this.isCollapsed){return this.applyLayoutCollapsed(c)}var d=this.splitEl.dom,b=d.style;var a=d.offsetWidth;this.panel.setPosition(c.x+a,c.y);b.left=(c.x)+"px";b.top=(c.y)+"px";b.height=Math.max(0,c.height)+"px";this.panel.setSize(c.width-a,c.height)},north:function(c){if(this.isCollapsed){return this.applyLayoutCollapsed(c)}var d=this.splitEl.dom,b=d.style;var a=d.offsetHeight;this.panel.setPosition(c.x,c.y);b.left=(c.x)+"px";b.top=(c.y+c.height-a)+"px";b.width=Math.max(0,c.width)+"px";this.panel.setSize(c.width,c.height-a)},south:function(c){if(this.isCollapsed){return this.applyLayoutCollapsed(c)}var d=this.splitEl.dom,b=d.style;var a=d.offsetHeight;this.panel.setPosition(c.x,c.y+a);b.left=(c.x)+"px";b.top=(c.y)+"px";b.width=Math.max(0,c.width)+"px";this.panel.setSize(c.width,c.height-a)}},render:function(a,c){Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this,a,c);var d=this.position;this.splitEl=a.createChild({cls:"x-layout-split x-layout-split-"+d,html:"&#160;",id:this.panel.id+"-xsplit"});if(this.collapseMode=="mini"){this.miniSplitEl=this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-"+d,html:"&#160;"});this.miniSplitEl.addClassOnOver("x-layout-mini-over");this.miniSplitEl.on("click",this.onCollapseClick,this,{stopEvent:true})}var b=this.splitSettings[d];this.split=new Ext.SplitBar(this.splitEl.dom,c.el,b.orientation);this.split.tickSize=this.tickSize;this.split.placement=b.placement;this.split.getMaximumSize=this[b.maxFn].createDelegate(this);this.split.minSize=this.minSize||this[b.minProp];this.split.on("beforeapply",this.onSplitMove,this);this.split.useShim=this.useShim===true;this.maxSize=this.maxSize||this[b.maxProp];if(c.hidden){this.splitEl.hide()}if(this.useSplitTips){this.splitEl.dom.title=this.collapsible?this.collapsibleSplitTip:this.splitTip}if(this.collapsible){this.splitEl.on("dblclick",this.onCollapseClick,this)}},getSize:function(){if(this.isCollapsed){return this.collapsedEl.getSize()}var a=this.panel.getSize();if(this.position=="north"||this.position=="south"){a.height+=this.splitEl.dom.offsetHeight}else{a.width+=this.splitEl.dom.offsetWidth}return a},getHMaxSize:function(){var b=this.maxSize||10000;var a=this.layout.center;return Math.min(b,(this.el.getWidth()+a.el.getWidth())-a.getMinWidth())},getVMaxSize:function(){var b=this.maxSize||10000;var a=this.layout.center;return Math.min(b,(this.el.getHeight()+a.el.getHeight())-a.getMinHeight())},onSplitMove:function(b,a){var c=this.panel.getSize();this.lastSplitSize=a;if(this.position=="north"||this.position=="south"){this.panel.setSize(c.width,a);this.state.height=a}else{this.panel.setSize(a,c.height);this.state.width=a}this.layout.layout();this.panel.saveState();return false},getSplitBar:function(){return this.split},destroy:function(){Ext.destroy(this.miniSplitEl,this.split,this.splitEl);Ext.layout.BorderLayout.SplitRegion.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.border=Ext.layout.BorderLayout;Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{labelSeparator:":",trackLabels:true,type:"form",onRemove:function(d){Ext.layout.FormLayout.superclass.onRemove.call(this,d);if(this.trackLabels){d.un("show",this.onFieldShow,this);d.un("hide",this.onFieldHide,this)}var b=d.getPositionEl(),a=d.getItemCt&&d.getItemCt();if(d.rendered&&a){if(b&&b.dom){b.insertAfter(a)}Ext.destroy(a);Ext.destroyMembers(d,"label","itemCt");if(d.customItemCt){Ext.destroyMembers(d,"getItemCt","customItemCt")}}},setContainer:function(a){Ext.layout.FormLayout.superclass.setContainer.call(this,a);a.labelAlign=a.labelAlign||this.labelAlign;if(a.labelAlign){a.addClass("x-form-label-"+a.labelAlign)}if(a.hideLabels||this.hideLabels){Ext.apply(this,{labelStyle:"display:none",elementStyle:"padding-left:0;",labelAdjust:0})}else{this.labelSeparator=Ext.isDefined(a.labelSeparator)?a.labelSeparator:this.labelSeparator;a.labelWidth=a.labelWidth||this.labelWidth||100;if(Ext.isNumber(a.labelWidth)){var b=a.labelPad||this.labelPad;b=Ext.isNumber(b)?b:5;Ext.apply(this,{labelAdjust:a.labelWidth+b,labelStyle:"width:"+a.labelWidth+"px;",elementStyle:"padding-left:"+(a.labelWidth+b)+"px"})}if(a.labelAlign=="top"){Ext.apply(this,{labelStyle:"width:auto;",labelAdjust:0,elementStyle:"padding-left:0;"})}}},isHide:function(a){return a.hideLabel||this.container.hideLabels},onFieldShow:function(a){a.getItemCt().removeClass("x-hide-"+a.hideMode);if(a.isComposite){a.doLayout()}},onFieldHide:function(a){a.getItemCt().addClass("x-hide-"+a.hideMode)},getLabelStyle:function(e){var b="",c=[this.labelStyle,e];for(var d=0,a=c.length;d<a;++d){if(c[d]){b+=c[d];if(b.substr(-1,1)!=";"){b+=";"}}}return b},renderItem:function(e,a,d){if(e&&(e.isFormField||e.fieldLabel)&&e.inputType!="hidden"){var b=this.getTemplateArgs(e);if(Ext.isNumber(a)){a=d.dom.childNodes[a]||null}if(a){e.itemCt=this.fieldTpl.insertBefore(a,b,true)}else{e.itemCt=this.fieldTpl.append(d,b,true)}if(!e.getItemCt){Ext.apply(e,{getItemCt:function(){return e.itemCt},customItemCt:true})}e.label=e.getItemCt().child("label.x-form-item-label");if(!e.rendered){e.render("x-form-el-"+e.id)}else{if(!this.isValidParent(e,d)){Ext.fly("x-form-el-"+e.id).appendChild(e.getPositionEl())}}if(this.trackLabels){if(e.hidden){this.onFieldHide(e)}e.on({scope:this,show:this.onFieldShow,hide:this.onFieldHide})}this.configureItem(e)}else{Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments)}},getTemplateArgs:function(c){var a=!c.fieldLabel||c.hideLabel,b=(c.itemCls||this.container.itemCls||"")+(c.hideLabel?" x-hide-label":"");if(Ext.isIE9&&Ext.isIEQuirks&&c instanceof Ext.form.TextField){b+=" x-input-wrapper"}return{id:c.id,label:c.fieldLabel,itemCls:b,clearCls:c.clearCls||"x-form-clear-left",labelStyle:this.getLabelStyle(c.labelStyle),elementStyle:this.elementStyle||"",labelSeparator:a?"":(Ext.isDefined(c.labelSeparator)?c.labelSeparator:this.labelSeparator)}},adjustWidthAnchor:function(a,d){if(d.label&&!this.isHide(d)&&(this.container.labelAlign!="top")){var b=Ext.isIE6||Ext.isIEQuirks;return a-this.labelAdjust+(b?-3:0)}return a},adjustHeightAnchor:function(a,b){if(b.label&&!this.isHide(b)&&(this.container.labelAlign=="top")){return a-b.label.getHeight()}return a},isValidParent:function(b,a){return a&&this.container.getEl().contains(b.getPositionEl())}});Ext.Container.LAYOUTS.form=Ext.layout.FormLayout;Ext.layout.AccordionLayout=Ext.extend(Ext.layout.FitLayout,{fill:true,autoWidth:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:false,animate:false,sequence:false,activeOnTop:false,type:"accordion",renderItem:function(a){if(this.animate===false){a.animCollapse=false}a.collapsible=true;if(this.autoWidth){a.autoWidth=true}if(this.titleCollapse){a.titleCollapse=true}if(this.hideCollapseTool){a.hideCollapseTool=true}if(this.collapseFirst!==undefined){a.collapseFirst=this.collapseFirst}if(!this.activeItem&&!a.collapsed){this.setActiveItem(a,true)}else{if(this.activeItem&&this.activeItem!=a){a.collapsed=true}}Ext.layout.AccordionLayout.superclass.renderItem.apply(this,arguments);a.header.addClass("x-accordion-hd");a.on("beforeexpand",this.beforeExpand,this)},onRemove:function(a){Ext.layout.AccordionLayout.superclass.onRemove.call(this,a);if(a.rendered){a.header.removeClass("x-accordion-hd")}a.un("beforeexpand",this.beforeExpand,this)},beforeExpand:function(c,b){var a=this.activeItem;if(a){if(this.sequence){delete this.activeItem;if(!a.collapsed){a.collapse({callback:function(){c.expand(b||true)},scope:this});return false}}else{a.collapse(this.animate)}}this.setActive(c);if(this.activeOnTop){c.el.dom.parentNode.insertBefore(c.el.dom,c.el.dom.parentNode.firstChild)}this.layout()},setItemSize:function(g,e){if(this.fill&&g){var d=0,c,b=this.getRenderedItems(this.container),a=b.length,h;for(c=0;c<a;c++){if((h=b[c])!=g&&!h.hidden){d+=h.header.getHeight()}}e.height-=d;g.setSize(e)}},setActiveItem:function(a){this.setActive(a,true)},setActive:function(c,b){var a=this.activeItem;c=this.container.getComponent(c);if(a!=c){if(c.rendered&&c.collapsed&&b){c.expand()}else{if(a){a.fireEvent("deactivate",a)}this.activeItem=c;c.fireEvent("activate",c)}}}});Ext.Container.LAYOUTS.accordion=Ext.layout.AccordionLayout;Ext.layout.Accordion=Ext.layout.AccordionLayout;Ext.layout.TableLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:false,type:"table",targetCls:"x-table-layout-ct",tableAttrs:null,setContainer:function(a){Ext.layout.TableLayout.superclass.setContainer.call(this,a);this.currentRow=0;this.currentColumn=0;this.cells=[]},onLayout:function(d,g){var e=d.items.items,a=e.length,h,b;if(!this.table){g.addClass("x-table-layout-ct");this.table=g.createChild(Ext.apply({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},this.tableAttrs),null,true)}this.renderAll(d,g)},getRow:function(a){var b=this.table.tBodies[0].childNodes[a];if(!b){b=document.createElement("tr");this.table.tBodies[0].appendChild(b)}return b},getNextCell:function(j){var a=this.getNextNonSpan(this.currentColumn,this.currentRow);var g=this.currentColumn=a[0],e=this.currentRow=a[1];for(var i=e;i<e+(j.rowspan||1);i++){if(!this.cells[i]){this.cells[i]=[]}for(var d=g;d<g+(j.colspan||1);d++){this.cells[i][d]=true}}var h=document.createElement("td");if(j.cellId){h.id=j.cellId}var b="x-table-layout-cell";if(j.cellCls){b+=" "+j.cellCls}h.className=b;if(j.colspan){h.colSpan=j.colspan}if(j.rowspan){h.rowSpan=j.rowspan}this.getRow(e).appendChild(h);return h},getNextNonSpan:function(a,c){var b=this.columns;while((b&&a>=b)||(this.cells[c]&&this.cells[c][a])){if(b&&a>=b){c++;a=0}else{a++}}return[a,c]},renderItem:function(e,a,d){if(!this.table){this.table=d.createChild(Ext.apply({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},this.tableAttrs),null,true)}if(e&&!e.rendered){e.render(this.getNextCell(e));this.configureItem(e)}else{if(e&&!this.isValidParent(e,d)){var b=this.getNextCell(e);b.insertBefore(e.getPositionEl().dom,null);e.container=Ext.get(b);this.configureItem(e)}}},isValidParent:function(b,a){return b.getPositionEl().up("table",5).dom.parentNode===(a.dom||a)},destroy:function(){delete this.table;Ext.layout.TableLayout.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.table=Ext.layout.TableLayout;Ext.layout.AbsoluteLayout=Ext.extend(Ext.layout.AnchorLayout,{extraCls:"x-abs-layout-item",type:"absolute",onLayout:function(a,b){b.position();this.paddingLeft=b.getPadding("l");this.paddingTop=b.getPadding("t");Ext.layout.AbsoluteLayout.superclass.onLayout.call(this,a,b)},adjustWidthAnchor:function(b,a){return b?b-a.getPosition(true)[0]+this.paddingLeft:b},adjustHeightAnchor:function(b,a){return b?b-a.getPosition(true)[1]+this.paddingTop:b}});Ext.Container.LAYOUTS.absolute=Ext.layout.AbsoluteLayout;Ext.layout.BoxLayout=Ext.extend(Ext.layout.ContainerLayout,{defaultMargins:{left:0,top:0,right:0,bottom:0},padding:"0",pack:"start",monitorResize:true,type:"box",scrollOffset:0,extraCls:"x-box-item",targetCls:"x-box-layout-ct",innerCls:"x-box-inner",constructor:function(a){Ext.layout.BoxLayout.superclass.constructor.call(this,a);if(Ext.isString(this.defaultMargins)){this.defaultMargins=this.parseMargins(this.defaultMargins)}var d=this.overflowHandler;if(typeof d=="string"){d={type:d}}var c="none";if(d&&d.type!=undefined){c=d.type}var b=Ext.layout.boxOverflow[c];if(b[this.type]){b=b[this.type]}this.overflowHandler=new b(this,d)},onLayout:function(b,h){Ext.layout.BoxLayout.superclass.onLayout.call(this,b,h);var d=this.getLayoutTargetSize(),i=this.getVisibleItems(b),c=this.calculateChildBoxes(i,d),g=c.boxes,j=c.meta;if(d.width>0){var k=this.overflowHandler,a=j.tooNarrow?"handleOverflow":"clearOverflow";var e=k[a](c,d);if(e){if(e.targetSize){d=e.targetSize}if(e.recalculate){i=this.getVisibleItems(b);c=this.calculateChildBoxes(i,d);g=c.boxes}}}this.layoutTargetLastSize=d;this.childBoxCache=c;this.updateInnerCtSize(d,c);this.updateChildBoxes(g);this.handleTargetOverflow(d,b,h)},updateChildBoxes:function(c){for(var b=0,e=c.length;b<e;b++){var d=c[b],a=d.component;if(d.dirtySize){a.setSize(d.width,d.height)}if(isNaN(d.left)||isNaN(d.top)){continue}a.setPosition(d.left,d.top)}},updateInnerCtSize:function(c,h){var i=this.align,g=this.padding,e=c.width,a=c.height;if(this.type=="hbox"){var b=e,d=h.meta.maxHeight+g.top+g.bottom;if(i=="stretch"){d=a}else{if(i=="middle"){d=Math.max(a,d)}}}else{var d=a,b=h.meta.maxWidth+g.left+g.right;if(i=="stretch"){b=e}else{if(i=="center"){b=Math.max(e,b)}}}this.innerCt.setSize(b||undefined,d||undefined)},handleTargetOverflow:function(d,a,c){var e=c.getStyle("overflow");if(e&&e!="hidden"&&!this.adjustmentPass){var b=this.getLayoutTargetSize();if(b.width!=d.width||b.height!=d.height){this.adjustmentPass=true;this.onLayout(a,c)}}delete this.adjustmentPass},isValidParent:function(b,a){return this.innerCt&&b.getPositionEl().dom.parentNode==this.innerCt.dom},getVisibleItems:function(g){var g=g||this.container,e=g.getLayoutTarget(),h=g.items.items,a=h.length,d,j,b=[];for(d=0;d<a;d++){if((j=h[d]).rendered&&this.isValidParent(j,e)&&j.hidden!==true&&j.collapsed!==true&&j.shouldLayout!==false){b.push(j)}}return b},renderAll:function(a,b){if(!this.innerCt){this.innerCt=b.createChild({cls:this.innerCls});this.padding=this.parseMargins(this.padding)}Ext.layout.BoxLayout.superclass.renderAll.call(this,a,this.innerCt)},getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a;if(b){a=b.getViewSize();if(Ext.isIE9m&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},renderItem:function(a){if(Ext.isString(a.margins)){a.margins=this.parseMargins(a.margins)}else{if(!a.margins){a.margins=this.defaultMargins}}Ext.layout.BoxLayout.superclass.renderItem.apply(this,arguments)},destroy:function(){Ext.destroy(this.overflowHandler);Ext.layout.BoxLayout.superclass.destroy.apply(this,arguments)}});Ext.layout.boxOverflow.None=Ext.extend(Object,{constructor:function(b,a){this.layout=b;Ext.apply(this,a||{})},handleOverflow:Ext.emptyFn,clearOverflow:Ext.emptyFn});Ext.layout.boxOverflow.none=Ext.layout.boxOverflow.None;Ext.layout.boxOverflow.Menu=Ext.extend(Ext.layout.boxOverflow.None,{afterCls:"x-strip-right",noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>',constructor:function(a){Ext.layout.boxOverflow.Menu.superclass.constructor.apply(this,arguments);this.menuItems=[]},createInnerElements:function(){if(!this.afterCt){this.afterCt=this.layout.innerCt.insertSibling({cls:this.afterCls},"before")}},clearOverflow:function(a,g){var e=g.width+(this.afterCt?this.afterCt.getWidth():0),b=this.menuItems;this.hideTrigger();for(var c=0,d=b.length;c<d;c++){b.pop().component.show()}return{targetSize:{height:g.height,width:e}}},showTrigger:function(){this.createMenu();this.menuTrigger.show()},hideTrigger:function(){if(this.menuTrigger!=undefined){this.menuTrigger.hide()}},beforeMenuShow:function(h){var b=this.menuItems,a=b.length,g,e;var c=function(j,i){return j.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)};this.clearMenu();h.removeAll();for(var d=0;d<a;d++){g=b[d].component;if(e&&(c(g,e)||c(e,g))){h.add("-")}this.addComponentToMenu(h,g);e=g}if(h.items.length<1){h.add(this.noItemsMenuText)}},createMenuConfig:function(c,a){var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a});if(d||c.enableToggle){Ext.apply(b,{group:d,checked:c.pressed,listeners:{checkchange:function(g,e){c.toggle(e)}}})}delete b.ownerCt;delete b.xtype;delete b.id;return b},addComponentToMenu:function(b,a){if(a instanceof Ext.Toolbar.Separator){b.add("-")}else{if(Ext.isFunction(a.isXType)){if(a.isXType("splitbutton")){b.add(this.createMenuConfig(a,true))}else{if(a.isXType("button")){b.add(this.createMenuConfig(a,!a.menu))}else{if(a.isXType("buttongroup")){a.items.each(function(c){this.addComponentToMenu(b,c)},this)}}}}}},clearMenu:function(){var a=this.moreMenu;if(a&&a.items){a.items.each(function(b){delete b.menu})}},createMenu:function(){if(!this.menuTrigger){this.createInnerElements();this.menu=new Ext.menu.Menu({ownerCt:this.layout.container,listeners:{scope:this,beforeshow:this.beforeMenuShow}});this.menuTrigger=new Ext.Button({iconCls:"x-toolbar-more-icon",cls:"x-toolbar-more",menu:this.menu,renderTo:this.afterCt})}},destroy:function(){Ext.destroy(this.menu,this.menuTrigger)}});Ext.layout.boxOverflow.menu=Ext.layout.boxOverflow.Menu;Ext.layout.boxOverflow.HorizontalMenu=Ext.extend(Ext.layout.boxOverflow.Menu,{constructor:function(){Ext.layout.boxOverflow.HorizontalMenu.superclass.constructor.apply(this,arguments);var c=this,b=c.layout,a=b.calculateChildBoxes;b.calculateChildBoxes=function(d,i){var l=a.apply(b,arguments),k=l.meta,e=c.menuItems;var j=0;for(var g=0,h=e.length;g<h;g++){j+=e[g].width}k.minimumWidth+=j;k.tooNarrow=k.minimumWidth>i.width;return l}},handleOverflow:function(d,h){this.showTrigger();var k=h.width-this.afterCt.getWidth(),l=d.boxes,e=0,r=false;for(var o=0,c=l.length;o<c;o++){e+=l[o].width}var a=k-e,g=0;for(var o=0,c=this.menuItems.length;o<c;o++){var n=this.menuItems[o],m=n.component,b=n.width;if(b<a){m.show();a-=b;g++;r=true}else{break}}if(r){this.menuItems=this.menuItems.slice(g)}else{for(var j=l.length-1;j>=0;j--){var q=l[j].component,p=l[j].left+l[j].width;if(p>=k){this.menuItems.unshift({component:q,width:l[j].width});q.hide()}else{break}}}if(this.menuItems.length==0){this.hideTrigger()}return{targetSize:{height:h.height,width:k},recalculate:r}}});Ext.layout.boxOverflow.menu.hbox=Ext.layout.boxOverflow.HorizontalMenu;Ext.layout.boxOverflow.Scroller=Ext.extend(Ext.layout.boxOverflow.None,{animateScroll:true,scrollIncrement:100,wheelIncrement:3,scrollRepeatInterval:400,scrollDuration:0.4,beforeCls:"x-strip-left",afterCls:"x-strip-right",scrollerCls:"x-strip-scroller",beforeScrollerCls:"x-strip-scroller-left",afterScrollerCls:"x-strip-scroller-right",createWheelListener:function(){this.layout.innerCt.on({scope:this,mousewheel:function(a){a.stopEvent();this.scrollBy(a.getWheelDelta()*this.wheelIncrement*-1,false)}})},handleOverflow:function(a,b){this.createInnerElements();this.showScrollers()},clearOverflow:function(){this.hideScrollers()},showScrollers:function(){this.createScrollers();this.beforeScroller.show();this.afterScroller.show();this.updateScrollButtons()},hideScrollers:function(){if(this.beforeScroller!=undefined){this.beforeScroller.hide();this.afterScroller.hide()}},createScrollers:function(){if(!this.beforeScroller&&!this.afterScroller){var a=this.beforeCt.createChild({cls:String.format("{0} {1} ",this.scrollerCls,this.beforeScrollerCls)});var b=this.afterCt.createChild({cls:String.format("{0} {1}",this.scrollerCls,this.afterScrollerCls)});a.addClassOnOver(this.beforeScrollerCls+"-hover");b.addClassOnOver(this.afterScrollerCls+"-hover");a.setVisibilityMode(Ext.Element.DISPLAY);b.setVisibilityMode(Ext.Element.DISPLAY);this.beforeRepeater=new Ext.util.ClickRepeater(a,{interval:this.scrollRepeatInterval,handler:this.scrollLeft,scope:this});this.afterRepeater=new Ext.util.ClickRepeater(b,{interval:this.scrollRepeatInterval,handler:this.scrollRight,scope:this});this.beforeScroller=a;this.afterScroller=b}},destroy:function(){Ext.destroy(this.beforeScroller,this.afterScroller,this.beforeRepeater,this.afterRepeater,this.beforeCt,this.afterCt)},scrollBy:function(b,a){this.scrollTo(this.getScrollPosition()+b,a)},getItem:function(a){if(Ext.isString(a)){a=Ext.getCmp(a)}else{if(Ext.isNumber(a)){a=this.items[a]}}return a},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){if(this.beforeScroller==undefined||this.afterScroller==undefined){return}var d=this.atExtremeBefore()?"addClass":"removeClass",c=this.atExtremeAfter()?"addClass":"removeClass",a=this.beforeScrollerCls+"-disabled",b=this.afterScrollerCls+"-disabled";this.beforeScroller[d](a);this.afterScroller[c](b);this.scrolling=false},atExtremeBefore:function(){return this.getScrollPosition()===0},scrollLeft:function(a){this.scrollBy(-this.scrollIncrement,a)},scrollRight:function(a){this.scrollBy(this.scrollIncrement,a)},scrollToItem:function(d,b){d=this.getItem(d);if(d!=undefined){var a=this.getItemVisibility(d);if(!a.fullyVisible){var c=d.getBox(true,true),e=c.x;if(a.hiddenRight){e-=(this.layout.innerCt.getWidth()-c.width)}this.scrollTo(e,b)}}},getItemVisibility:function(e){var d=this.getItem(e).getBox(true,true),a=d.x,c=d.x+d.width,g=this.getScrollPosition(),b=this.layout.innerCt.getWidth()+g;return{hiddenLeft:a<g,hiddenRight:c>b,fullyVisible:a>g&&c<b}}});Ext.layout.boxOverflow.scroller=Ext.layout.boxOverflow.Scroller;Ext.layout.boxOverflow.VerticalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{scrollIncrement:75,wheelIncrement:2,handleOverflow:function(a,b){Ext.layout.boxOverflow.VerticalScroller.superclass.handleOverflow.apply(this,arguments);return{targetSize:{height:b.height-(this.beforeCt.getHeight()+this.afterCt.getHeight()),width:b.width}}},createInnerElements:function(){var a=this.layout.innerCt;if(!this.beforeCt){this.beforeCt=a.insertSibling({cls:this.beforeCls},"before");this.afterCt=a.insertSibling({cls:this.afterCls},"after");this.createWheelListener()}},scrollTo:function(a,b){var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollBottom());if(c!=d&&!this.scrolling){if(b==undefined){b=this.animateScroll}this.layout.innerCt.scrollTo("top",c,b?this.getScrollAnim():false);if(b){this.scrolling=true}else{this.scrolling=false;this.updateScrollButtons()}}},getScrollPosition:function(){return parseInt(this.layout.innerCt.dom.scrollTop,10)||0},getMaxScrollBottom:function(){return this.layout.innerCt.dom.scrollHeight-this.layout.innerCt.getHeight()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollBottom()}});Ext.layout.boxOverflow.scroller.vbox=Ext.layout.boxOverflow.VerticalScroller;Ext.layout.boxOverflow.HorizontalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{handleOverflow:function(a,b){Ext.layout.boxOverflow.HorizontalScroller.superclass.handleOverflow.apply(this,arguments);return{targetSize:{height:b.height,width:b.width-(this.beforeCt.getWidth()+this.afterCt.getWidth())}}},createInnerElements:function(){var a=this.layout.innerCt;if(!this.beforeCt){this.afterCt=a.insertSibling({cls:this.afterCls},"before");this.beforeCt=a.insertSibling({cls:this.beforeCls},"before");this.createWheelListener()}},scrollTo:function(a,b){var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollRight());if(c!=d&&!this.scrolling){if(b==undefined){b=this.animateScroll}this.layout.innerCt.scrollTo("left",c,b?this.getScrollAnim():false);if(b){this.scrolling=true}else{this.scrolling=false;this.updateScrollButtons()}}},getScrollPosition:function(){return parseInt(this.layout.innerCt.dom.scrollLeft,10)||0},getMaxScrollRight:function(){return this.layout.innerCt.dom.scrollWidth-this.layout.innerCt.getWidth()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollRight()}});Ext.layout.boxOverflow.scroller.hbox=Ext.layout.boxOverflow.HorizontalScroller;Ext.layout.HBoxLayout=Ext.extend(Ext.layout.BoxLayout,{align:"top",type:"hbox",calculateChildBoxes:function(r,b){var F=r.length,R=this.padding,D=R.top,U=R.left,y=D+R.bottom,O=U+R.right,a=b.width-this.scrollOffset,e=b.height,o=Math.max(0,e-y),P=this.pack=="start",W=this.pack=="center",A=this.pack=="end",L=0,Q=0,T=0,l=0,X=0,H=[],k,J,M,V,w,j,S,I,c,x,q,N;for(S=0;S<F;S++){k=r[S];M=k.height;J=k.width;j=!k.hasLayout&&typeof k.doLayout=="function";if(typeof J!="number"){if(k.flex&&!J){T+=k.flex}else{if(!J&&j){k.doLayout()}V=k.getSize();J=V.width;M=V.height}}w=k.margins;x=w.left+w.right;L+=x+(J||0);l+=x+(k.flex?k.minWidth||0:J);X+=x+(k.minWidth||J||0);if(typeof M!="number"){if(j){k.doLayout()}M=k.getHeight()}Q=Math.max(Q,M+w.top+w.bottom);H.push({component:k,height:M||undefined,width:J||undefined})}var K=l-a,p=X>a;var n=Math.max(0,a-L-O);if(p){for(S=0;S<F;S++){H[S].width=r[S].minWidth||r[S].width||H[S].width}}else{if(K>0){var C=[];for(var E=0,v=F;E<v;E++){var B=r[E],t=B.minWidth||0;if(B.flex){H[E].width=t}else{C.push({minWidth:t,available:H[E].width-t,index:E})}}C.sort(function(Y,i){return Y.available>i.available?1:-1});for(var S=0,v=C.length;S<v;S++){var G=C[S].index;if(G==undefined){continue}var B=r[G],m=H[G],u=m.width,t=B.minWidth,d=Math.max(t,u-Math.ceil(K/(v-S))),g=u-d;H[G].width=d;K-=g}}else{var h=n,s=T;for(S=0;S<F;S++){k=r[S];I=H[S];w=k.margins;q=w.top+w.bottom;if(P&&k.flex&&!k.width){c=Math.ceil((k.flex/s)*h);h-=c;s-=k.flex;I.width=c;I.dirtySize=true}}}}if(W){U+=n/2}else{if(A){U+=n}}for(S=0;S<F;S++){k=r[S];I=H[S];w=k.margins;U+=w.left;q=w.top+w.bottom;I.left=U;I.top=D+w.top;switch(this.align){case"stretch":N=o-q;I.height=N.constrain(k.minHeight||0,k.maxHeight||1000000);I.dirtySize=true;break;case"stretchmax":N=Q-q;I.height=N.constrain(k.minHeight||0,k.maxHeight||1000000);I.dirtySize=true;break;case"middle":var z=o-I.height-q;if(z>0){I.top=D+q+(z/2)}}U+=I.width+w.right}return{boxes:H,meta:{maxHeight:Q,nonFlexWidth:L,desiredWidth:l,minimumWidth:X,shortfall:l-a,tooNarrow:p}}}});Ext.Container.LAYOUTS.hbox=Ext.layout.HBoxLayout;Ext.layout.VBoxLayout=Ext.extend(Ext.layout.BoxLayout,{align:"left",type:"vbox",calculateChildBoxes:function(o,b){var E=o.length,R=this.padding,C=R.top,V=R.left,x=C+R.bottom,O=V+R.right,a=b.width-this.scrollOffset,c=b.height,K=Math.max(0,a-O),P=this.pack=="start",X=this.pack=="center",z=this.pack=="end",k=0,u=0,U=0,L=0,m=0,G=[],h,I,N,W,t,g,T,H,S,w,n,d,r;for(T=0;T<E;T++){h=o[T];N=h.height;I=h.width;g=!h.hasLayout&&typeof h.doLayout=="function";if(typeof N!="number"){if(h.flex&&!N){U+=h.flex}else{if(!N&&g){h.doLayout()}W=h.getSize();I=W.width;N=W.height}}t=h.margins;n=t.top+t.bottom;k+=n+(N||0);L+=n+(h.flex?h.minHeight||0:N);m+=n+(h.minHeight||N||0);if(typeof I!="number"){if(g){h.doLayout()}I=h.getWidth()}u=Math.max(u,I+t.left+t.right);G.push({component:h,height:N||undefined,width:I||undefined})}var M=L-c,l=m>c;var q=Math.max(0,(c-k-x));if(l){for(T=0,r=E;T<r;T++){G[T].height=o[T].minHeight||o[T].height||G[T].height}}else{if(M>0){var J=[];for(var D=0,r=E;D<r;D++){var A=o[D],s=A.minHeight||0;if(A.flex){G[D].height=s}else{J.push({minHeight:s,available:G[D].height-s,index:D})}}J.sort(function(Y,i){return Y.available>i.available?1:-1});for(var T=0,r=J.length;T<r;T++){var F=J[T].index;if(F==undefined){continue}var A=o[F],j=G[F],v=j.height,s=A.minHeight,B=Math.max(s,v-Math.ceil(M/(r-T))),e=v-B;G[F].height=B;M-=e}}else{var Q=q,p=U;for(T=0;T<E;T++){h=o[T];H=G[T];t=h.margins;w=t.left+t.right;if(P&&h.flex&&!h.height){S=Math.ceil((h.flex/p)*Q);Q-=S;p-=h.flex;H.height=S;H.dirtySize=true}}}}if(X){C+=q/2}else{if(z){C+=q}}for(T=0;T<E;T++){h=o[T];H=G[T];t=h.margins;C+=t.top;w=t.left+t.right;H.left=V+t.left;H.top=C;switch(this.align){case"stretch":d=K-w;H.width=d.constrain(h.minWidth||0,h.maxWidth||1000000);H.dirtySize=true;break;case"stretchmax":d=u-w;H.width=d.constrain(h.minWidth||0,h.maxWidth||1000000);H.dirtySize=true;break;case"center":var y=K-H.width-w;if(y>0){H.left=V+w+(y/2)}}C+=H.height+t.bottom}return{boxes:G,meta:{maxWidth:u,nonFlexHeight:k,desiredHeight:L,minimumHeight:m,shortfall:L-c,tooNarrow:l}}}});Ext.Container.LAYOUTS.vbox=Ext.layout.VBoxLayout;Ext.layout.ToolbarLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"toolbar",triggerWidth:18,noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>',lastOverflow:false,tableHTML:['<table cellspacing="0" class="x-toolbar-ct">',"<tbody>","<tr>",'<td class="x-toolbar-left" align="{0}">','<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-left-row"></tr>',"</tbody>","</table>","</td>",'<td class="x-toolbar-right" align="right">','<table cellspacing="0" class="x-toolbar-right-ct">',"<tbody>","<tr>","<td>",'<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-right-row"></tr>',"</tbody>","</table>","</td>","<td>",'<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-extras-row"></tr>',"</tbody>","</table>","</td>","</tr>","</tbody>","</table>","</td>","</tr>","</tbody>","</table>"].join(""),onLayout:function(e,j){if(!this.leftTr){var h=e.buttonAlign=="center"?"center":"left";j.addClass("x-toolbar-layout-ct");j.insertHtml("beforeEnd",String.format(this.tableHTML,h));this.leftTr=j.child("tr.x-toolbar-left-row",true);this.rightTr=j.child("tr.x-toolbar-right-row",true);this.extrasTr=j.child("tr.x-toolbar-extras-row",true);if(this.hiddenItem==undefined){this.hiddenItems=[]}}var k=e.buttonAlign=="right"?this.rightTr:this.leftTr,l=e.items.items,d=0;for(var b=0,g=l.length,m;b<g;b++,d++){m=l[b];if(m.isFill){k=this.rightTr;d=-1}else{if(!m.rendered){m.render(this.insertCell(m,k,d));this.configureItem(m)}else{if(!m.xtbHidden&&!this.isValidParent(m,k.childNodes[d])){var a=this.insertCell(m,k,d);a.appendChild(m.getPositionEl().dom);m.container=Ext.get(a)}}}}this.cleanup(this.leftTr);this.cleanup(this.rightTr);this.cleanup(this.extrasTr);this.fitToSize(j)},cleanup:function(b){var e=b.childNodes,a,d;for(a=e.length-1;a>=0&&(d=e[a]);a--){if(!d.firstChild){b.removeChild(d)}}},insertCell:function(e,b,a){var d=document.createElement("td");d.className="x-toolbar-cell";b.insertBefore(d,b.childNodes[a]||null);return d},hideItem:function(a){this.hiddenItems.push(a);a.xtbHidden=true;a.xtbWidth=a.getPositionEl().dom.parentNode.offsetWidth;a.hide()},unhideItem:function(a){a.show();a.xtbHidden=false;this.hiddenItems.remove(a)},getItemWidth:function(a){return a.hidden?(a.xtbWidth||0):a.getPositionEl().dom.parentNode.offsetWidth},fitToSize:function(k){if(this.container.enableOverflow===false){return}var b=k.dom.clientWidth,j=k.dom.firstChild.offsetWidth,m=b-this.triggerWidth,a=this.lastWidth||0,c=this.hiddenItems,e=c.length!=0,n=b>=a;this.lastWidth=b;if(j>b||(e&&n)){var l=this.container.items.items,h=l.length,d=0,o;for(var g=0;g<h;g++){o=l[g];if(!o.isFill){d+=this.getItemWidth(o);if(d>m){if(!(o.hidden||o.xtbHidden)){this.hideItem(o)}}else{if(o.xtbHidden){this.unhideItem(o)}}}}}e=c.length!=0;if(e){this.initMore();if(!this.lastOverflow){this.container.fireEvent("overflowchange",this.container,true);this.lastOverflow=true}}else{if(this.more){this.clearMenu();this.more.destroy();delete this.more;if(this.lastOverflow){this.container.fireEvent("overflowchange",this.container,false);this.lastOverflow=false}}}},createMenuConfig:function(c,a){var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a});if(d||c.enableToggle){Ext.apply(b,{group:d,checked:c.pressed,listeners:{checkchange:function(g,e){c.toggle(e)}}})}delete b.ownerCt;delete b.xtype;delete b.id;return b},addComponentToMenu:function(b,a){if(a instanceof Ext.Toolbar.Separator){b.add("-")}else{if(Ext.isFunction(a.isXType)){if(a.isXType("splitbutton")){b.add(this.createMenuConfig(a,true))}else{if(a.isXType("button")){b.add(this.createMenuConfig(a,!a.menu))}else{if(a.isXType("buttongroup")){a.items.each(function(c){this.addComponentToMenu(b,c)},this)}}}}}},clearMenu:function(){var a=this.moreMenu;if(a&&a.items){a.items.each(function(b){delete b.menu})}},beforeMoreShow:function(h){var b=this.container.items.items,a=b.length,g,e;var c=function(j,i){return j.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)};this.clearMenu();h.removeAll();for(var d=0;d<a;d++){g=b[d];if(g.xtbHidden){if(e&&(c(g,e)||c(e,g))){h.add("-")}this.addComponentToMenu(h,g);e=g}}if(h.items.length<1){h.add(this.noItemsMenuText)}},initMore:function(){if(!this.more){this.moreMenu=new Ext.menu.Menu({ownerCt:this.container,listeners:{beforeshow:this.beforeMoreShow,scope:this}});this.more=new Ext.Button({iconCls:"x-toolbar-more-icon",cls:"x-toolbar-more",menu:this.moreMenu,ownerCt:this.container});var a=this.insertCell(this.more,this.extrasTr,100);this.more.render(a)}},destroy:function(){Ext.destroy(this.more,this.moreMenu);delete this.leftTr;delete this.rightTr;delete this.extrasTr;Ext.layout.ToolbarLayout.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.toolbar=Ext.layout.ToolbarLayout;Ext.layout.MenuLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"menu",setContainer:function(a){this.monitorResize=!a.floating;a.on("autosize",this.doAutoSize,this);Ext.layout.MenuLayout.superclass.setContainer.call(this,a)},renderItem:function(g,b,e){if(!this.itemTpl){this.itemTpl=Ext.layout.MenuLayout.prototype.itemTpl=new Ext.XTemplate('<li id="{itemId}" class="{itemCls}">','<tpl if="needsIcon">','<img alt="{altText}" src="{icon}" class="{iconCls}"/>',"</tpl>","</li>")}if(g&&!g.rendered){if(Ext.isNumber(b)){b=e.dom.childNodes[b]}var d=this.getItemArgs(g);g.render(g.positionEl=b?this.itemTpl.insertBefore(b,d,true):this.itemTpl.append(e,d,true));g.positionEl.menuItemId=g.getItemId();if(!d.isMenuItem&&d.needsIcon){g.positionEl.addClass("x-menu-list-item-indent")}this.configureItem(g)}else{if(g&&!this.isValidParent(g,e)){if(Ext.isNumber(b)){b=e.dom.childNodes[b]}e.dom.insertBefore(g.getActionEl().dom,b||null)}}},getItemArgs:function(d){var a=d instanceof Ext.menu.Item,b=!(a||d instanceof Ext.menu.Separator);return{isMenuItem:a,needsIcon:b&&(d.icon||d.iconCls),icon:d.icon||Ext.BLANK_IMAGE_URL,iconCls:"x-menu-item-icon "+(d.iconCls||""),itemId:"x-menu-el-"+d.id,itemCls:"x-menu-list-item ",altText:d.altText||""}},isValidParent:function(b,a){return b.el.up("li.x-menu-list-item",5).dom.parentNode===(a.dom||a)},onLayout:function(a,b){Ext.layout.MenuLayout.superclass.onLayout.call(this,a,b);this.doAutoSize()},doAutoSize:function(){var c=this.container,a=c.width;if(c.floating){if(a){c.setWidth(a)}else{if(Ext.isIE9m){c.setWidth(Ext.isStrict&&(Ext.isIE7||Ext.isIE8||Ext.isIE9)?"auto":c.minWidth);var d=c.getEl(),b=d.dom.offsetWidth;c.setWidth(c.getLayoutTarget().getWidth()+d.getFrameWidth("lr"))}}}}});Ext.Container.LAYOUTS.menu=Ext.layout.MenuLayout;Ext.Viewport=Ext.extend(Ext.Container,{initComponent:function(){Ext.Viewport.superclass.initComponent.call(this);document.getElementsByTagName("html")[0].className+=" x-viewport";this.el=Ext.getBody();this.el.setHeight=Ext.emptyFn;this.el.setWidth=Ext.emptyFn;this.el.setSize=Ext.emptyFn;this.el.dom.scroll="no";this.allowDomMove=false;this.autoWidth=true;this.autoHeight=true;Ext.EventManager.onWindowResize(this.fireResize,this);this.renderTo=this.el},fireResize:function(a,b){this.fireEvent("resize",this,a,b,a,b)}});Ext.reg("viewport",Ext.Viewport);Ext.Panel=Ext.extend(Ext.Container,{baseCls:"x-panel",collapsedCls:"x-panel-collapsed",maskDisabled:true,animCollapse:Ext.enableFx,headerAsText:true,buttonAlign:"right",collapsed:false,collapseFirst:true,minButtonWidth:75,elements:"body",preventBodyReset:false,padding:undefined,resizeEvent:"bodyresize",toolTarget:"header",collapseEl:"bwrap",slideAnchor:"t",disabledClass:"",deferHeight:true,expandDefaults:{duration:0.25},collapseDefaults:{duration:0.25},initComponent:function(){Ext.Panel.superclass.initComponent.call(this);this.addEvents("bodyresize","titlechange","iconchange","collapse","expand","beforecollapse","beforeexpand","beforeclose","close","activate","deactivate");if(this.unstyled){this.baseCls="x-plain"}this.toolbars=[];if(this.tbar){this.elements+=",tbar";this.topToolbar=this.createToolbar(this.tbar);this.tbar=null}if(this.bbar){this.elements+=",bbar";this.bottomToolbar=this.createToolbar(this.bbar);this.bbar=null}if(this.header===true){this.elements+=",header";this.header=null}else{if(this.headerCfg||(this.title&&this.header!==false)){this.elements+=",header"}}if(this.footerCfg||this.footer===true){this.elements+=",footer";this.footer=null}if(this.buttons){this.fbar=this.buttons;this.buttons=null}if(this.fbar){this.createFbar(this.fbar)}if(this.autoLoad){this.on("render",this.doAutoLoad,this,{delay:10})}},createFbar:function(b){var a=this.minButtonWidth;this.elements+=",footer";this.fbar=this.createToolbar(b,{buttonAlign:this.buttonAlign,toolbarCls:"x-panel-fbar",enableOverflow:false,defaults:function(d){return{minWidth:d.minWidth||a}}});this.fbar.items.each(function(d){d.minWidth=d.minWidth||this.minButtonWidth},this);this.buttons=this.fbar.items.items},createToolbar:function(b,c){var a;if(Ext.isArray(b)){b={items:b}}a=b.events?Ext.apply(b,c):this.createComponent(Ext.apply({},b,c),"toolbar");this.toolbars.push(a);return a},createElement:function(a,c){if(this[a]){c.appendChild(this[a].dom);return}if(a==="bwrap"||this.elements.indexOf(a)!=-1){if(this[a+"Cfg"]){this[a]=Ext.fly(c).createChild(this[a+"Cfg"])}else{var b=document.createElement("div");b.className=this[a+"Cls"];this[a]=Ext.get(c.appendChild(b))}if(this[a+"CssClass"]){this[a].addClass(this[a+"CssClass"])}if(this[a+"Style"]){this[a].applyStyles(this[a+"Style"])}}},onRender:function(g,e){Ext.Panel.superclass.onRender.call(this,g,e);this.createClasses();var a=this.el,h=a.dom,k,i;if(this.collapsible&&!this.hideCollapseTool){this.tools=this.tools?this.tools.slice(0):[];this.tools[this.collapseFirst?"unshift":"push"]({id:"toggle",handler:this.toggleCollapse,scope:this})}if(this.tools){i=this.tools;this.elements+=(this.header!==false)?",header":""}this.tools={};a.addClass(this.baseCls);if(h.firstChild){this.header=a.down("."+this.headerCls);this.bwrap=a.down("."+this.bwrapCls);var j=this.bwrap?this.bwrap:a;this.tbar=j.down("."+this.tbarCls);this.body=j.down("."+this.bodyCls);this.bbar=j.down("."+this.bbarCls);this.footer=j.down("."+this.footerCls);this.fromMarkup=true}if(this.preventBodyReset===true){a.addClass("x-panel-reset")}if(this.cls){a.addClass(this.cls)}if(this.buttons){this.elements+=",footer"}if(this.frame){a.insertHtml("afterBegin",String.format(Ext.Element.boxMarkup,this.baseCls));this.createElement("header",h.firstChild.firstChild.firstChild);this.createElement("bwrap",h);k=this.bwrap.dom;var c=h.childNodes[1],b=h.childNodes[2];k.appendChild(c);k.appendChild(b);var l=k.firstChild.firstChild.firstChild;this.createElement("tbar",l);this.createElement("body",l);this.createElement("bbar",l);this.createElement("footer",k.lastChild.firstChild.firstChild);if(!this.footer){this.bwrap.dom.lastChild.className+=" x-panel-nofooter"}this.ft=Ext.get(this.bwrap.dom.lastChild);this.mc=Ext.get(l)}else{this.createElement("header",h);this.createElement("bwrap",h);k=this.bwrap.dom;this.createElement("tbar",k);this.createElement("body",k);this.createElement("bbar",k);this.createElement("footer",k);if(!this.header){this.body.addClass(this.bodyCls+"-noheader");if(this.tbar){this.tbar.addClass(this.tbarCls+"-noheader")}}}if(Ext.isDefined(this.padding)){this.body.setStyle("padding",this.body.addUnits(this.padding))}if(this.border===false){this.el.addClass(this.baseCls+"-noborder");this.body.addClass(this.bodyCls+"-noborder");if(this.header){this.header.addClass(this.headerCls+"-noborder")}if(this.footer){this.footer.addClass(this.footerCls+"-noborder")}if(this.tbar){this.tbar.addClass(this.tbarCls+"-noborder")}if(this.bbar){this.bbar.addClass(this.bbarCls+"-noborder")}}if(this.bodyBorder===false){this.body.addClass(this.bodyCls+"-noborder")}this.bwrap.enableDisplayMode("block");if(this.header){this.header.unselectable();if(this.headerAsText){this.header.dom.innerHTML='<span class="'+this.headerTextCls+'">'+this.header.dom.innerHTML+"</span>";if(this.iconCls){this.setIconClass(this.iconCls)}}}if(this.floating){this.makeFloating(this.floating)}if(this.collapsible&&this.titleCollapse&&this.header){this.mon(this.header,"click",this.toggleCollapse,this);this.header.setStyle("cursor","pointer")}if(i){this.addTool.apply(this,i)}if(this.fbar){this.footer.addClass("x-panel-btns");this.fbar.ownerCt=this;this.fbar.render(this.footer);this.footer.createChild({cls:"x-clear"})}if(this.tbar&&this.topToolbar){this.topToolbar.ownerCt=this;this.topToolbar.render(this.tbar)}if(this.bbar&&this.bottomToolbar){this.bottomToolbar.ownerCt=this;this.bottomToolbar.render(this.bbar)}},setIconClass:function(b){var a=this.iconCls;this.iconCls=b;if(this.rendered&&this.header){if(this.frame){this.header.addClass("x-panel-icon");this.header.replaceClass(a,this.iconCls)}else{var e=this.header,c=e.child("img.x-panel-inline-icon");if(c){Ext.fly(c).replaceClass(a,this.iconCls)}else{var d=e.child("span."+this.headerTextCls);if(d){Ext.DomHelper.insertBefore(d.dom,{tag:"img",alt:"",src:Ext.BLANK_IMAGE_URL,cls:"x-panel-inline-icon "+this.iconCls})}}}}this.fireEvent("iconchange",this,b,a)},makeFloating:function(a){this.floating=true;this.el=new Ext.Layer(Ext.apply({},a,{shadow:Ext.isDefined(this.shadow)?this.shadow:"sides",shadowOffset:this.shadowOffset,constrain:false,shim:this.shim===false?false:undefined}),this.el)},getTopToolbar:function(){return this.topToolbar},getBottomToolbar:function(){return this.bottomToolbar},getFooterToolbar:function(){return this.fbar},addButton:function(a,c,b){if(!this.fbar){this.createFbar([])}if(c){if(Ext.isString(a)){a={text:a}}a=Ext.apply({handler:c,scope:b},a)}return this.fbar.add(a)},addTool:function(){if(!this.rendered){if(!this.tools){this.tools=[]}Ext.each(arguments,function(a){this.tools.push(a)},this);return}if(!this[this.toolTarget]){return}if(!this.toolTemplate){var h=new Ext.Template('<div class="x-tool x-tool-{id}">&#160;</div>');h.disableFormats=true;h.compile();Ext.Panel.prototype.toolTemplate=h}for(var g=0,d=arguments,c=d.length;g<c;g++){var b=d[g];if(!this.tools[b.id]){var j="x-tool-"+b.id+"-over";var e=this.toolTemplate.insertFirst(this[this.toolTarget],b,true);this.tools[b.id]=e;e.enableDisplayMode("block");this.mon(e,"click",this.createToolHandler(e,b,j,this));if(b.on){this.mon(e,b.on)}if(b.hidden){e.hide()}if(b.qtip){if(Ext.isObject(b.qtip)){Ext.QuickTips.register(Ext.apply({target:e.id},b.qtip))}else{e.dom.qtip=b.qtip}}e.addClassOnOver(j)}}},onLayout:function(b,a){Ext.Panel.superclass.onLayout.apply(this,arguments);if(this.hasLayout&&this.toolbars.length>0){Ext.each(this.toolbars,function(c){c.doLayout(undefined,a)});this.syncHeight()}},syncHeight:function(){var b=this.toolbarHeight,c=this.body,a=this.lastSize.height,d;if(this.autoHeight||!Ext.isDefined(a)||a=="auto"){return}if(b!=this.getToolbarHeight()){b=Math.max(0,a-this.getFrameHeight());c.setHeight(b);d=c.getSize();this.toolbarHeight=this.getToolbarHeight();this.onBodyResize(d.width,d.height)}},onShow:function(){if(this.floating){return this.el.show()}Ext.Panel.superclass.onShow.call(this)},onHide:function(){if(this.floating){return this.el.hide()}Ext.Panel.superclass.onHide.call(this)},createToolHandler:function(c,a,d,b){return function(g){c.removeClass(d);if(a.stopEvent!==false){g.stopEvent()}if(a.handler){a.handler.call(a.scope||c,g,c,b,a)}}},afterRender:function(){if(this.floating&&!this.hidden){this.el.show()}if(this.title){this.setTitle(this.title)}Ext.Panel.superclass.afterRender.call(this);if(this.collapsed){this.collapsed=false;this.collapse(false)}this.initEvents()},getKeyMap:function(){if(!this.keyMap){this.keyMap=new Ext.KeyMap(this.el,this.keys)}return this.keyMap},initEvents:function(){if(this.keys){this.getKeyMap()}if(this.draggable){this.initDraggable()}if(this.toolbars.length>0){Ext.each(this.toolbars,function(a){a.doLayout();a.on({scope:this,afterlayout:this.syncHeight,remove:this.syncHeight})},this);this.syncHeight()}},initDraggable:function(){this.dd=new Ext.Panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)},beforeEffect:function(a){if(this.floating){this.el.beforeAction()}if(a!==false){this.el.addClass("x-panel-animated")}},afterEffect:function(a){this.syncShadow();this.el.removeClass("x-panel-animated")},createEffect:function(c,b,d){var e={scope:d,block:true};if(c===true){e.callback=b;return e}else{if(!c.callback){e.callback=b}else{e.callback=function(){b.call(d);Ext.callback(c.callback,c.scope)}}}return Ext.applyIf(e,c)},collapse:function(b){if(this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforecollapse",this,b)===false){return}var a=b===true||(b!==false&&this.animCollapse);this.beforeEffect(a);this.onCollapse(a,b);return this},onCollapse:function(a,b){if(a){this[this.collapseEl].slideOut(this.slideAnchor,Ext.apply(this.createEffect(b||true,this.afterCollapse,this),this.collapseDefaults))}else{this[this.collapseEl].hide(this.hideMode);this.afterCollapse(false)}},afterCollapse:function(a){this.collapsed=true;this.el.addClass(this.collapsedCls);if(a!==false){this[this.collapseEl].hide(this.hideMode)}this.afterEffect(a);this.cascade(function(b){if(b.lastSize){b.lastSize={width:undefined,height:undefined}}});this.fireEvent("collapse",this)},expand:function(b){if(!this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforeexpand",this,b)===false){return}var a=b===true||(b!==false&&this.animCollapse);this.el.removeClass(this.collapsedCls);this.beforeEffect(a);this.onExpand(a,b);return this},onExpand:function(a,b){if(a){this[this.collapseEl].slideIn(this.slideAnchor,Ext.apply(this.createEffect(b||true,this.afterExpand,this),this.expandDefaults))}else{this[this.collapseEl].show(this.hideMode);this.afterExpand(false)}},afterExpand:function(a){this.collapsed=false;if(a!==false){this[this.collapseEl].show(this.hideMode)}this.afterEffect(a);if(this.deferLayout){delete this.deferLayout;this.doLayout(true)}this.fireEvent("expand",this)},toggleCollapse:function(a){this[this.collapsed?"expand":"collapse"](a);return this},onDisable:function(){if(this.rendered&&this.maskDisabled){this.el.mask()}Ext.Panel.superclass.onDisable.call(this)},onEnable:function(){if(this.rendered&&this.maskDisabled){this.el.unmask()}Ext.Panel.superclass.onEnable.call(this)},onResize:function(g,d,c,e){var a=g,b=d;if(Ext.isDefined(a)||Ext.isDefined(b)){if(!this.collapsed){if(Ext.isNumber(a)){this.body.setWidth(a=this.adjustBodyWidth(a-this.getFrameWidth()))}else{if(a=="auto"){a=this.body.setWidth("auto").dom.offsetWidth}else{a=this.body.dom.offsetWidth}}if(this.tbar){this.tbar.setWidth(a);if(this.topToolbar){this.topToolbar.setSize(a)}}if(this.bbar){this.bbar.setWidth(a);if(this.bottomToolbar){this.bottomToolbar.setSize(a);if(Ext.isIE9m){this.bbar.setStyle("position","static");this.bbar.setStyle("position","")}}}if(this.footer){this.footer.setWidth(a);if(this.fbar){this.fbar.setSize(Ext.isIE9m?(a-this.footer.getFrameWidth("lr")):"auto")}}if(Ext.isNumber(b)){b=Math.max(0,b-this.getFrameHeight());this.body.setHeight(b)}else{if(b=="auto"){this.body.setHeight(b)}}if(this.disabled&&this.el._mask){this.el._mask.setSize(this.el.dom.clientWidth,this.el.getHeight())}}else{this.queuedBodySize={width:a,height:b};if(!this.queuedExpand&&this.allowQueuedExpand!==false){this.queuedExpand=true;this.on("expand",function(){delete this.queuedExpand;this.onResize(this.queuedBodySize.width,this.queuedBodySize.height)},this,{single:true})}}this.onBodyResize(a,b)}this.syncShadow();Ext.Panel.superclass.onResize.call(this,g,d,c,e)},onBodyResize:function(a,b){this.fireEvent("bodyresize",this,a,b)},getToolbarHeight:function(){var a=0;if(this.rendered){Ext.each(this.toolbars,function(b){a+=b.getHeight()},this)}return a},adjustBodyHeight:function(a){return a},adjustBodyWidth:function(a){return a},onPosition:function(){this.syncShadow()},getFrameWidth:function(){var b=this.el.getFrameWidth("lr")+this.bwrap.getFrameWidth("lr");if(this.frame){var a=this.bwrap.dom.firstChild;b+=(Ext.fly(a).getFrameWidth("l")+Ext.fly(a.firstChild).getFrameWidth("r"));b+=this.mc.getFrameWidth("lr")}return b},getFrameHeight:function(){var a=this.el.getFrameWidth("tb")+this.bwrap.getFrameWidth("tb");a+=(this.tbar?this.tbar.getHeight():0)+(this.bbar?this.bbar.getHeight():0);if(this.frame){a+=this.el.dom.firstChild.offsetHeight+this.ft.dom.offsetHeight+this.mc.getFrameWidth("tb")}else{a+=(this.header?this.header.getHeight():0)+(this.footer?this.footer.getHeight():0)}return a},getInnerWidth:function(){return this.getSize().width-this.getFrameWidth()},getInnerHeight:function(){return this.body.getHeight()},syncShadow:function(){if(this.floating){this.el.sync(true)}},getLayoutTarget:function(){return this.body},getContentTarget:function(){return this.body},setTitle:function(b,a){this.title=b;if(this.header&&this.headerAsText){this.header.child("span").update(b)}if(a){this.setIconClass(a)}this.fireEvent("titlechange",this,b);return this},getUpdater:function(){return this.body.getUpdater()},load:function(){var a=this.body.getUpdater();a.update.apply(a,arguments);return this},beforeDestroy:function(){Ext.Panel.superclass.beforeDestroy.call(this);if(this.header){this.header.removeAllListeners()}if(this.tools){for(var a in this.tools){Ext.destroy(this.tools[a])}}if(this.toolbars.length>0){Ext.each(this.toolbars,function(b){b.un("afterlayout",this.syncHeight,this);b.un("remove",this.syncHeight,this)},this)}if(Ext.isArray(this.buttons)){while(this.buttons.length){Ext.destroy(this.buttons[0])}}if(this.rendered){Ext.destroy(this.ft,this.header,this.footer,this.tbar,this.bbar,this.body,this.mc,this.bwrap,this.dd);if(this.fbar){Ext.destroy(this.fbar,this.fbar.el)}}Ext.destroy(this.toolbars)},createClasses:function(){this.headerCls=this.baseCls+"-header";this.headerTextCls=this.baseCls+"-header-text";this.bwrapCls=this.baseCls+"-bwrap";this.tbarCls=this.baseCls+"-tbar";this.bodyCls=this.baseCls+"-body";this.bbarCls=this.baseCls+"-bbar";this.footerCls=this.baseCls+"-footer"},createGhost:function(a,e,b){var d=document.createElement("div");d.className="x-panel-ghost "+(a?a:"");if(this.header){d.appendChild(this.el.dom.firstChild.cloneNode(true))}Ext.fly(d.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight());d.style.width=this.el.dom.offsetWidth+"px";if(!b){this.container.dom.appendChild(d)}else{Ext.getDom(b).appendChild(d)}if(e!==false&&this.el.useShim!==false){var c=new Ext.Layer({shadow:false,useDisplay:true,constrain:false},d);c.show();return c}else{return new Ext.Element(d)}},doAutoLoad:function(){var a=this.body.getUpdater();if(this.renderer){a.setRenderer(this.renderer)}a.update(Ext.isObject(this.autoLoad)?this.autoLoad:{url:this.autoLoad})},getTool:function(a){return this.tools[a]}});Ext.reg("panel",Ext.Panel);Ext.Editor=function(b,a){if(b.field){this.field=Ext.create(b.field,"textfield");a=Ext.apply({},b);delete a.field}else{this.field=b}Ext.Editor.superclass.constructor.call(this,a)};Ext.extend(Ext.Editor,Ext.Component,{allowBlur:true,value:"",alignment:"c-c?",offsets:[0,0],shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:true,cancelOnEsc:true,updateEl:false,initComponent:function(){Ext.Editor.superclass.initComponent.call(this);this.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onRender:function(b,a){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:b,shim:this.shim,shadowOffset:this.shadowOffset||4,id:this.id,constrain:this.constrain});if(this.zIndex){this.el.setZIndex(this.zIndex)}this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!="title"){this.field.msgTarget="qtip"}this.field.inEditor=true;this.mon(this.field,{scope:this,blur:this.onBlur,specialkey:this.onSpecialKey});if(this.field.grow){this.mon(this.field,"autosize",this.el.sync,this.el,{delay:1})}this.field.render(this.el).show();this.field.getEl().dom.name="";if(this.swallowKeys){this.field.el.swallowEvent(["keypress","keydown"])}},onSpecialKey:function(g,d){var b=d.getKey(),a=this.completeOnEnter&&b==d.ENTER,c=this.cancelOnEsc&&b==d.ESC;if(a||c){d.stopEvent();if(a){this.completeEdit()}else{this.cancelEdit()}if(g.triggerBlur){g.triggerBlur()}}this.fireEvent("specialkey",g,d)},startEdit:function(b,c){if(this.editing){this.completeEdit()}this.boundEl=Ext.get(b);var a=c!==undefined?c:this.boundEl.dom.innerHTML;if(!this.rendered){this.render(this.parentEl||document.body)}if(this.fireEvent("beforestartedit",this,this.boundEl,a)!==false){this.startValue=a;this.field.reset();this.field.setValue(a);this.realign(true);this.editing=true;this.show()}},doAutoSize:function(){if(this.autoSize){var b=this.boundEl.getSize(),a=this.field.getSize();switch(this.autoSize){case"width":this.setSize(b.width,a.height);break;case"height":this.setSize(a.width,b.height);break;case"none":this.setSize(a.width,a.height);break;default:this.setSize(b.width,b.height)}}},setSize:function(a,b){delete this.field.lastSize;this.field.setSize(a,b);if(this.el){if(Ext.isGecko2||Ext.isOpera||(Ext.isIE7&&Ext.isStrict)){this.el.setSize(a,b)}this.el.sync()}},realign:function(a){if(a===true){this.doAutoSize()}this.el.alignTo(this.boundEl,this.alignment,this.offsets)},completeEdit:function(a){if(!this.editing){return}if(this.field.assertValue){this.field.assertValue()}var b=this.getValue();if(!this.field.isValid()){if(this.revertInvalid!==false){this.cancelEdit(a)}return}if(String(b)===String(this.startValue)&&this.ignoreNoChange){this.hideEdit(a);return}if(this.fireEvent("beforecomplete",this,b,this.startValue)!==false){b=this.getValue();if(this.updateEl&&this.boundEl){this.boundEl.update(b)}this.hideEdit(a);this.fireEvent("complete",this,b,this.startValue)}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide()}this.field.show().focus(false,true);this.fireEvent("startedit",this.boundEl,this.startValue)},cancelEdit:function(a){if(this.editing){var b=this.getValue();this.setValue(this.startValue);this.hideEdit(a);this.fireEvent("canceledit",this,b,this.startValue)}},hideEdit:function(a){if(a!==true){this.editing=false;this.hide()}},onBlur:function(){if(this.allowBlur===true&&this.editing&&this.selectSameEditor!==true){this.completeEdit()}},onHide:function(){if(this.editing){this.completeEdit();return}this.field.blur();if(this.field.collapse){this.field.collapse()}this.el.hide();if(this.hideEl!==false){this.boundEl.show()}},setValue:function(a){this.field.setValue(a)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){Ext.destroyMembers(this,"field");delete this.parentEl;delete this.boundEl}});Ext.reg("editor",Ext.Editor);Ext.ColorPalette=Ext.extend(Ext.Component,{itemCls:"x-color-palette",value:null,clickEvent:"click",ctype:"Ext.ColorPalette",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],initComponent:function(){Ext.ColorPalette.superclass.initComponent.call(this);this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope,true)}},onRender:function(b,a){this.autoEl={tag:"div",cls:this.itemCls};Ext.ColorPalette.superclass.onRender.call(this,b,a);var c=this.tpl||new Ext.XTemplate('<tpl for="."><a href="#" class="color-{.}" hidefocus="on"><em><span style="background:#{.}" class="x-unselectable" unselectable="on">&#160;</span></em></a></tpl>');c.overwrite(this.el,this.colors);this.mon(this.el,this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!="click"){this.mon(this.el,"click",Ext.emptyFn,this,{delegate:"a",preventDefault:true})}},afterRender:function(){Ext.ColorPalette.superclass.afterRender.call(this);if(this.value){var a=this.value;this.value=null;this.select(a,true)}},handleClick:function(b,a){b.preventDefault();if(!this.disabled){var d=a.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(d.toUpperCase())}},select:function(b,a){b=b.replace("#","");if(b!=this.value||this.allowReselect){var c=this.el;if(this.value){c.child("a.color-"+this.value).removeClass("x-color-palette-sel")}c.child("a.color-"+b).addClass("x-color-palette-sel");this.value=b;if(a!==true){this.fireEvent("select",this,b)}}}});Ext.reg("colorpalette",Ext.ColorPalette);Ext.DatePicker=Ext.extend(Ext.BoxComponent,{todayText:"Today",okText:"&#160;OK&#160;",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDaysText:"Disabled",disabledDatesText:"Disabled",monthNames:Date.monthNames,dayNames:Date.dayNames,nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",startDay:0,showToday:true,focusOnSelect:true,initHour:12,initComponent:function(){Ext.DatePicker.superclass.initComponent.call(this);this.value=this.value?this.value.clearTime(true):new Date().clearTime();this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope||this)}this.initDisabledDays()},initDisabledDays:function(){if(!this.disabledDatesRE&&this.disabledDates){var b=this.disabledDates,a=b.length-1,c="(?:";Ext.each(b,function(g,e){c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];if(e!=a){c+="|"}},this);this.disabledDatesRE=new RegExp(c+")")}},setDisabledDates:function(a){if(Ext.isArray(a)){this.disabledDates=a;this.disabledDatesRE=null}else{this.disabledDatesRE=a}this.initDisabledDays();this.update(this.value,true)},setDisabledDays:function(a){this.disabledDays=a;this.update(this.value,true)},setMinDate:function(a){this.minDate=a;this.update(this.value,true)},setMaxDate:function(a){this.maxDate=a;this.update(this.value,true)},setValue:function(a){this.value=a.clearTime(true);this.update(this.value)},getValue:function(){return this.value},focus:function(){this.update(this.activeDate)},onEnable:function(a){Ext.DatePicker.superclass.onEnable.call(this);this.doDisabled(false);this.update(a?this.value:this.activeDate);if(Ext.isIE9m){this.el.repaint()}},onDisable:function(){Ext.DatePicker.superclass.onDisable.call(this);this.doDisabled(true);if(Ext.isIE9m&&!Ext.isIE8){Ext.each([].concat(this.textNodes,this.el.query("th span")),function(a){Ext.fly(a).repaint()})}},doDisabled:function(a){this.keyNav.setDisabled(a);this.prevRepeater.setDisabled(a);this.nextRepeater.setDisabled(a);if(this.showToday){this.todayKeyListener.setDisabled(a);this.todayBtn.setDisabled(a)}},onRender:function(e,b){var a=['<table cellspacing="0">','<tr><td class="x-date-left"><a href="#" title="',this.prevText,'">&#160;</a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="',this.nextText,'">&#160;</a></td></tr>','<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'],c=this.dayNames,h;for(h=0;h<7;h++){var k=this.startDay+h;if(k>6){k=k-7}a.push("<th><span>",c[k].substr(0,1),"</span></th>")}a[a.length]="</tr></thead><tbody><tr>";for(h=0;h<42;h++){if(h%7===0&&h!==0){a[a.length]="</tr><tr>"}a[a.length]='<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>'}a.push("</tr></tbody></table></td></tr>",this.showToday?'<tr><td colspan="3" class="x-date-bottom" align="center"></td></tr>':"",'</table><div class="x-date-mp"></div>');var j=document.createElement("div");j.className="x-date-picker";j.innerHTML=a.join("");e.dom.insertBefore(j,b);this.el=Ext.get(j);this.eventEl=Ext.get(j.firstChild);this.prevRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});this.nextRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.monthPicker=this.el.down("div.x-date-mp");this.monthPicker.enableDisplayMode("block");this.keyNav=new Ext.KeyNav(this.eventEl,{left:function(d){if(d.ctrlKey){this.showPrevMonth()}else{this.update(this.activeDate.add("d",-1))}},right:function(d){if(d.ctrlKey){this.showNextMonth()}else{this.update(this.activeDate.add("d",1))}},up:function(d){if(d.ctrlKey){this.showNextYear()}else{this.update(this.activeDate.add("d",-7))}},down:function(d){if(d.ctrlKey){this.showPrevYear()}else{this.update(this.activeDate.add("d",7))}},pageUp:function(d){this.showNextMonth()},pageDown:function(d){this.showPrevMonth()},enter:function(d){d.stopPropagation();return true},scope:this});this.el.unselectable();this.cells=this.el.select("table.x-date-inner tbody td");this.textNodes=this.el.query("table.x-date-inner tbody span");this.mbtn=new Ext.Button({text:"&#160;",tooltip:this.monthYearText,renderTo:this.el.child("td.x-date-middle",true)});this.mbtn.el.child("em").addClass("x-btn-arrow");if(this.showToday){this.todayKeyListener=this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);var g=(new Date()).dateFormat(this.format);this.todayBtn=new Ext.Button({renderTo:this.el.child("td.x-date-bottom",true),text:String.format(this.todayText,g),tooltip:String.format(this.todayTip,g),handler:this.selectToday,scope:this})}this.mon(this.eventEl,"mousewheel",this.handleMouseWheel,this);this.mon(this.eventEl,"click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.mon(this.mbtn,"click",this.showMonthPicker,this);this.onEnable(true)},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var a=['<table border="0" cellspacing="0">'];for(var b=0;b<6;b++){a.push('<tr><td class="x-date-mp-month"><a href="#">',Date.getShortMonthName(b),"</a></td>",'<td class="x-date-mp-month x-date-mp-sep"><a href="#">',Date.getShortMonthName(b+6),"</a></td>",b===0?'<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td></tr>':'<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>')}a.push('<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">',this.okText,'</button><button type="button" class="x-date-mp-cancel">',this.cancelText,"</button></td></tr>","</table>");this.monthPicker.update(a.join(""));this.mon(this.monthPicker,"click",this.onMonthClick,this);this.mon(this.monthPicker,"dblclick",this.onMonthDblClick,this);this.mpMonths=this.monthPicker.select("td.x-date-mp-month");this.mpYears=this.monthPicker.select("td.x-date-mp-year");this.mpMonths.each(function(c,d,e){e+=1;if((e%2)===0){c.dom.xmonth=5+Math.round(e*0.5)}else{c.dom.xmonth=Math.round((e-1)*0.5)}})}},showMonthPicker:function(){if(!this.disabled){this.createMonthPicker();var a=this.el.getSize();this.monthPicker.setSize(a);this.monthPicker.child("table").setSize(a);this.mpSelMonth=(this.activeDate||this.value).getMonth();this.updateMPMonth(this.mpSelMonth);this.mpSelYear=(this.activeDate||this.value).getFullYear();this.updateMPYear(this.mpSelYear);this.monthPicker.slideIn("t",{duration:0.2})}},updateMPYear:function(e){this.mpyear=e;var c=this.mpYears.elements;for(var b=1;b<=10;b++){var d=c[b-1],a;if((b%2)===0){a=e+Math.round(b*0.5);d.firstChild.innerHTML=a;d.xyear=a}else{a=e-(5-Math.round(b*0.5));d.firstChild.innerHTML=a;d.xyear=a}this.mpYears.item(b-1)[a==this.mpSelYear?"addClass":"removeClass"]("x-date-mp-sel")}},updateMPMonth:function(a){this.mpMonths.each(function(b,c,d){b[b.dom.xmonth==a?"addClass":"removeClass"]("x-date-mp-sel")})},selectMPMonth:function(a){},onMonthClick:function(g,b){g.stopEvent();var c=new Ext.Element(b),a;if(c.is("button.x-date-mp-cancel")){this.hideMonthPicker()}else{if(c.is("button.x-date-mp-ok")){var h=new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate());if(h.getMonth()!=this.mpSelMonth){h=new Date(this.mpSelYear,this.mpSelMonth,1).getLastDateOfMonth()}this.update(h);this.hideMonthPicker()}else{if((a=c.up("td.x-date-mp-month",2))){this.mpMonths.removeClass("x-date-mp-sel");a.addClass("x-date-mp-sel");this.mpSelMonth=a.dom.xmonth}else{if((a=c.up("td.x-date-mp-year",2))){this.mpYears.removeClass("x-date-mp-sel");a.addClass("x-date-mp-sel");this.mpSelYear=a.dom.xyear}else{if(c.is("a.x-date-mp-prev")){this.updateMPYear(this.mpyear-10)}else{if(c.is("a.x-date-mp-next")){this.updateMPYear(this.mpyear+10)}}}}}}},onMonthDblClick:function(d,b){d.stopEvent();var c=new Ext.Element(b),a;if((a=c.up("td.x-date-mp-month",2))){this.update(new Date(this.mpSelYear,a.dom.xmonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}else{if((a=c.up("td.x-date-mp-year",2))){this.update(new Date(a.dom.xyear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}}},hideMonthPicker:function(a){if(this.monthPicker){if(a===true){this.monthPicker.hide()}else{this.monthPicker.slideOut("t",{duration:0.2})}}},showPrevMonth:function(a){this.update(this.activeDate.add("mo",-1))},showNextMonth:function(a){this.update(this.activeDate.add("mo",1))},showPrevYear:function(){this.update(this.activeDate.add("y",-1))},showNextYear:function(){this.update(this.activeDate.add("y",1))},handleMouseWheel:function(a){a.stopEvent();if(!this.disabled){var b=a.getWheelDelta();if(b>0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(b,a){b.stopEvent();if(!this.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasClass("x-date-disabled")){this.cancelFocus=this.focusOnSelect===false;this.setValue(new Date(a.dateValue));delete this.cancelFocus;this.fireEvent("select",this,this.value)}},selectToday:function(){if(this.todayBtn&&!this.todayBtn.disabled){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value)}},update:function(G,A){if(this.rendered){var a=this.activeDate,p=this.isVisible();this.activeDate=G;if(!A&&a&&this.el){var o=G.getTime();if(a.getMonth()==G.getMonth()&&a.getFullYear()==G.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(d){if(d.dom.firstChild.dateValue==o){d.addClass("x-date-selected");if(p&&!this.cancelFocus){Ext.fly(d.dom.firstChild).focus(50)}return false}},this);return}}var k=G.getDaysInMonth(),q=G.getFirstDateOfMonth(),g=q.getDay()-this.startDay;if(g<0){g+=7}k+=g;var B=G.add("mo",-1),h=B.getDaysInMonth()-g,e=this.cells.elements,r=this.textNodes,D=(new Date(B.getFullYear(),B.getMonth(),h,this.initHour)),C=new Date().clearTime().getTime(),v=G.clearTime(true).getTime(),u=this.minDate?this.minDate.clearTime(true):Number.NEGATIVE_INFINITY,y=this.maxDate?this.maxDate.clearTime(true):Number.POSITIVE_INFINITY,F=this.disabledDatesRE,s=this.disabledDatesText,I=this.disabledDays?this.disabledDays.join(""):false,E=this.disabledDaysText,z=this.format;if(this.showToday){var m=new Date().clearTime(),c=(m<u||m>y||(F&&z&&F.test(m.dateFormat(z)))||(I&&I.indexOf(m.getDay())!=-1));if(!this.disabled){this.todayBtn.setDisabled(c);this.todayKeyListener[c?"disable":"enable"]()}}var l=function(J,d){d.title="";var i=D.clearTime(true).getTime();d.firstChild.dateValue=i;if(i==C){d.className+=" x-date-today";d.title=J.todayText}if(i==v){d.className+=" x-date-selected";if(p){Ext.fly(d.firstChild).focus(50)}}if(i<u){d.className=" x-date-disabled";d.title=J.minText;return}if(i>y){d.className=" x-date-disabled";d.title=J.maxText;return}if(I){if(I.indexOf(D.getDay())!=-1){d.title=E;d.className=" x-date-disabled"}}if(F&&z){var w=D.dateFormat(z);if(F.test(w)){d.title=s.replace("%0",w);d.className=" x-date-disabled"}}};var x=0;for(;x<g;x++){r[x].innerHTML=(++h);D.setDate(D.getDate()+1);e[x].className="x-date-prevday";l(this,e[x])}for(;x<k;x++){var b=x-g+1;r[x].innerHTML=(b);D.setDate(D.getDate()+1);e[x].className="x-date-active";l(this,e[x])}var H=0;for(;x<42;x++){r[x].innerHTML=(++H);D.setDate(D.getDate()+1);e[x].className="x-date-nextday";l(this,e[x])}this.mbtn.setText(this.monthNames[G.getMonth()]+" "+G.getFullYear());if(!this.internalRender){var j=this.el.dom.firstChild,n=j.offsetWidth;this.el.setWidth(n+this.el.getBorderWidth("lr"));Ext.fly(j).setWidth(n);this.internalRender=true;if(Ext.isOpera&&!this.secondPass){j.rows[0].cells[1].style.width=(n-(j.rows[0].cells[0].offsetWidth+j.rows[0].cells[2].offsetWidth))+"px";this.secondPass=true;this.update.defer(10,this,[G])}}}},beforeDestroy:function(){if(this.rendered){Ext.destroy(this.keyNav,this.monthPicker,this.eventEl,this.mbtn,this.nextRepeater,this.prevRepeater,this.cells.el,this.todayBtn);delete this.textNodes;delete this.cells.elements}}});Ext.reg("datepicker",Ext.DatePicker);Ext.LoadMask=function(c,b){this.el=Ext.get(c);Ext.apply(this,b);if(this.store){this.store.on({scope:this,beforeload:this.onBeforeLoad,load:this.onLoad,exception:this.onLoad});this.removeMask=Ext.value(this.removeMask,false)}else{var a=this.el.getUpdater();a.showLoadIndicator=false;a.on({scope:this,beforeupdate:this.onBeforeLoad,update:this.onLoad,failure:this.onLoad});this.removeMask=Ext.value(this.removeMask,true)}};Ext.LoadMask.prototype={msg:"Loading...",msgCls:"x-mask-loading",disabled:false,disable:function(){this.disabled=true},enable:function(){this.disabled=false},onLoad:function(){this.el.unmask(this.removeMask)},onBeforeLoad:function(){if(!this.disabled){this.el.mask(this.msg,this.msgCls)}},show:function(){this.onBeforeLoad()},hide:function(){this.onLoad()},destroy:function(){if(this.store){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.onLoad,this)}else{var a=this.el.getUpdater();a.un("beforeupdate",this.onBeforeLoad,this);a.un("update",this.onLoad,this);a.un("failure",this.onLoad,this)}}};Ext.slider.Thumb=Ext.extend(Object,{dragging:false,constructor:function(a){Ext.apply(this,a||{},{cls:"x-slider-thumb",constrain:false});Ext.slider.Thumb.superclass.constructor.call(this,a);if(this.slider.vertical){Ext.apply(this,Ext.slider.Thumb.Vertical)}},render:function(){this.el=this.slider.innerEl.insertFirst({cls:this.cls});this.initEvents()},enable:function(){this.disabled=false;this.el.removeClass(this.slider.disabledClass)},disable:function(){this.disabled=true;this.el.addClass(this.slider.disabledClass)},initEvents:function(){var a=this.el;a.addClassOnOver("x-slider-thumb-over");this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeDragStart.createDelegate(this),onStart:this.onDragStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onDragEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(a)},onBeforeDragStart:function(a){if(this.disabled){return false}else{this.slider.promoteThumb(this);return true}},onDragStart:function(a){this.el.addClass("x-slider-thumb-drag");this.dragging=true;this.dragStartValue=this.value;this.slider.fireEvent("dragstart",this.slider,a,this)},onDrag:function(g){var c=this.slider,b=this.index,d=this.getNewValue();if(this.constrain){var a=c.thumbs[b+1],h=c.thumbs[b-1];if(h!=undefined&&d<=h.value){d=h.value}if(a!=undefined&&d>=a.value){d=a.value}}c.setValue(b,d,false);c.fireEvent("drag",c,g,this)},getNewValue:function(){var a=this.slider,b=a.innerEl.translatePoints(this.tracker.getXY());return Ext.util.Format.round(a.reverseValue(b.left),a.decimalPrecision)},onDragEnd:function(c){var a=this.slider,b=this.value;this.el.removeClass("x-slider-thumb-drag");this.dragging=false;a.fireEvent("dragend",a,c);if(this.dragStartValue!=b){a.fireEvent("changecomplete",a,b,this)}},destroy:function(){Ext.destroyMembers(this,"tracker","el")}});Ext.slider.MultiSlider=Ext.extend(Ext.BoxComponent,{vertical:false,minValue:0,maxValue:100,decimalPrecision:0,keyIncrement:1,increment:0,clickRange:[5,15],clickToChange:true,animate:true,constrainThumbs:true,topThumbZIndex:10000,initComponent:function(){if(!Ext.isDefined(this.value)){this.value=this.minValue}this.thumbs=[];Ext.slider.MultiSlider.superclass.initComponent.call(this);this.keyIncrement=Math.max(this.increment,this.keyIncrement);this.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");if(this.values==undefined||Ext.isEmpty(this.values)){this.values=[0]}var a=this.values;for(var b=0;b<a.length;b++){this.addThumb(a[b])}if(this.vertical){Ext.apply(this,Ext.slider.Vertical)}},addThumb:function(b){var a=new Ext.slider.Thumb({value:b,slider:this,index:this.thumbs.length,constrain:this.constrainThumbs});this.thumbs.push(a);if(this.rendered){a.render()}},promoteThumb:function(d){var a=this.thumbs,g,b;for(var e=0,c=a.length;e<c;e++){b=a[e];if(b==d){g=this.topThumbZIndex}else{g=""}b.el.setStyle("zIndex",g)}},onRender:function(){this.autoEl={cls:"x-slider "+(this.vertical?"x-slider-vert":"x-slider-horz"),cn:{cls:"x-slider-end",cn:{cls:"x-slider-inner",cn:[{tag:"a",cls:"x-slider-focus",href:"#",tabIndex:"-1",hidefocus:"on"}]}}};Ext.slider.MultiSlider.superclass.onRender.apply(this,arguments);this.endEl=this.el.first();this.innerEl=this.endEl.first();this.focusEl=this.innerEl.child(".x-slider-focus");for(var b=0;b<this.thumbs.length;b++){this.thumbs[b].render()}var a=this.innerEl.child(".x-slider-thumb");this.halfThumb=(this.vertical?a.getHeight():a.getWidth())/2;this.initEvents()},initEvents:function(){this.mon(this.el,{scope:this,mousedown:this.onMouseDown,keydown:this.onKeyDown});this.focusEl.swallowEvent("click",true)},onMouseDown:function(d){if(this.disabled){return}var c=false;for(var b=0;b<this.thumbs.length;b++){c=c||d.target==this.thumbs[b].el.dom}if(this.clickToChange&&!c){var a=this.innerEl.translatePoints(d.getXY());this.onClickChange(a)}this.focus()},onClickChange:function(c){if(c.top>this.clickRange[0]&&c.top<this.clickRange[1]){var a=this.getNearest(c,"left"),b=a.index;this.setValue(b,Ext.util.Format.round(this.reverseValue(c.left),this.decimalPrecision),undefined,true)}},getNearest:function(k,b){var m=b=="top"?this.innerEl.getHeight()-k[b]:k[b],g=this.reverseValue(m),j=(this.maxValue-this.minValue)+5,e=0,c=null;for(var d=0;d<this.thumbs.length;d++){var a=this.thumbs[d],l=a.value,h=Math.abs(l-g);if(Math.abs(h<=j)){c=a;e=d;j=h}}return c},onKeyDown:function(b){if(this.disabled||this.thumbs.length!==1){b.preventDefault();return}var a=b.getKey(),c;switch(a){case b.UP:case b.RIGHT:b.stopEvent();c=b.ctrlKey?this.maxValue:this.getValue(0)+this.keyIncrement;this.setValue(0,c,undefined,true);break;case b.DOWN:case b.LEFT:b.stopEvent();c=b.ctrlKey?this.minValue:this.getValue(0)-this.keyIncrement;this.setValue(0,c,undefined,true);break;default:b.preventDefault()}},doSnap:function(b){if(!(this.increment&&b)){return b}var d=b,c=this.increment,a=b%c;if(a!=0){d-=a;if(a*2>=c){d+=c}else{if(a*2<-c){d-=c}}}return d.constrain(this.minValue,this.maxValue)},afterRender:function(){Ext.slider.MultiSlider.superclass.afterRender.apply(this,arguments);for(var c=0;c<this.thumbs.length;c++){var b=this.thumbs[c];if(b.value!==undefined){var a=this.normalizeValue(b.value);if(a!==b.value){this.setValue(c,a,false)}else{this.moveThumb(c,this.translateValue(a),false)}}}},getRatio:function(){var a=this.innerEl.getWidth(),b=this.maxValue-this.minValue;return b==0?a:(a/b)},normalizeValue:function(a){a=this.doSnap(a);a=Ext.util.Format.round(a,this.decimalPrecision);a=a.constrain(this.minValue,this.maxValue);return a},setMinValue:function(e){this.minValue=e;var d=0,b=this.thumbs,a=b.length,c;for(;d<a;++d){c=b[d];c.value=c.value<e?e:c.value}this.syncThumb()},setMaxValue:function(e){this.maxValue=e;var d=0,b=this.thumbs,a=b.length,c;for(;d<a;++d){c=b[d];c.value=c.value>e?e:c.value}this.syncThumb()},setValue:function(d,c,b,g){var a=this.thumbs[d],e=a.el;c=this.normalizeValue(c);if(c!==a.value&&this.fireEvent("beforechange",this,c,a.value,a)!==false){a.value=c;if(this.rendered){this.moveThumb(d,this.translateValue(c),b!==false);this.fireEvent("change",this,c,a);if(g){this.fireEvent("changecomplete",this,c,a)}}}},translateValue:function(a){var b=this.getRatio();return(a*b)-(this.minValue*b)-this.halfThumb},reverseValue:function(b){var a=this.getRatio();return(b+(this.minValue*a))/a},moveThumb:function(d,c,b){var a=this.thumbs[d].el;if(!b||this.animate===false){a.setLeft(c)}else{a.shift({left:c,stopFx:true,duration:0.35})}},focus:function(){this.focusEl.focus(10)},onResize:function(c,e){var b=this.thumbs,a=b.length,d=0;for(;d<a;++d){b[d].el.stopFx()}if(Ext.isNumber(c)){this.innerEl.setWidth(c-(this.el.getPadding("l")+this.endEl.getPadding("r")))}this.syncThumb();Ext.slider.MultiSlider.superclass.onResize.apply(this,arguments)},onDisable:function(){Ext.slider.MultiSlider.superclass.onDisable.call(this);for(var b=0;b<this.thumbs.length;b++){var a=this.thumbs[b],c=a.el;a.disable();if(Ext.isIE){var d=c.getXY();c.hide();this.innerEl.addClass(this.disabledClass).dom.disabled=true;if(!this.thumbHolder){this.thumbHolder=this.endEl.createChild({cls:"x-slider-thumb "+this.disabledClass})}this.thumbHolder.show().setXY(d)}}},onEnable:function(){Ext.slider.MultiSlider.superclass.onEnable.call(this);for(var b=0;b<this.thumbs.length;b++){var a=this.thumbs[b],c=a.el;a.enable();if(Ext.isIE){this.innerEl.removeClass(this.disabledClass).dom.disabled=false;if(this.thumbHolder){this.thumbHolder.hide()}c.show();this.syncThumb()}}},syncThumb:function(){if(this.rendered){for(var a=0;a<this.thumbs.length;a++){this.moveThumb(a,this.translateValue(this.thumbs[a].value))}}},getValue:function(a){return this.thumbs[a].value},getValues:function(){var a=[];for(var b=0;b<this.thumbs.length;b++){a.push(this.thumbs[b].value)}return a},beforeDestroy:function(){var b=this.thumbs;for(var c=0,a=b.length;c<a;++c){b[c].destroy();b[c]=null}Ext.destroyMembers(this,"endEl","innerEl","focusEl","thumbHolder");Ext.slider.MultiSlider.superclass.beforeDestroy.call(this)}});Ext.reg("multislider",Ext.slider.MultiSlider);Ext.slider.SingleSlider=Ext.extend(Ext.slider.MultiSlider,{constructor:function(a){a=a||{};Ext.applyIf(a,{values:[a.value||0]});Ext.slider.SingleSlider.superclass.constructor.call(this,a)},getValue:function(){return Ext.slider.SingleSlider.superclass.getValue.call(this,0)},setValue:function(d,b){var c=Ext.toArray(arguments),a=c.length;if(a==1||(a<=3&&typeof arguments[1]!="number")){c.unshift(0)}return Ext.slider.SingleSlider.superclass.setValue.apply(this,c)},syncThumb:function(){return Ext.slider.SingleSlider.superclass.syncThumb.apply(this,[0].concat(arguments))},getNearest:function(){return this.thumbs[0]}});Ext.Slider=Ext.slider.SingleSlider;Ext.reg("slider",Ext.slider.SingleSlider);Ext.slider.Vertical={onResize:function(a,b){this.innerEl.setHeight(b-(this.el.getPadding("t")+this.endEl.getPadding("b")));this.syncThumb()},getRatio:function(){var b=this.innerEl.getHeight(),a=this.maxValue-this.minValue;return b/a},moveThumb:function(d,c,b){var a=this.thumbs[d],e=a.el;if(!b||this.animate===false){e.setBottom(c)}else{e.shift({bottom:c,stopFx:true,duration:0.35})}},onClickChange:function(c){if(c.left>this.clickRange[0]&&c.left<this.clickRange[1]){var a=this.getNearest(c,"top"),b=a.index,d=this.minValue+this.reverseValue(this.innerEl.getHeight()-c.top);this.setValue(b,Ext.util.Format.round(d,this.decimalPrecision),undefined,true)}}};Ext.slider.Thumb.Vertical={getNewValue:function(){var b=this.slider,c=b.innerEl,d=c.translatePoints(this.tracker.getXY()),a=c.getHeight()-d.top;return b.minValue+Ext.util.Format.round(a/b.getRatio(),b.decimalPrecision)}};Ext.ProgressBar=Ext.extend(Ext.BoxComponent,{baseCls:"x-progress",animate:false,waitTimer:null,initComponent:function(){Ext.ProgressBar.superclass.initComponent.call(this);this.addEvents("update")},onRender:function(d,a){var c=new Ext.Template('<div class="{cls}-wrap">','<div class="{cls}-inner">','<div class="{cls}-bar">','<div class="{cls}-text">',"<div>&#160;</div>","</div>","</div>",'<div class="{cls}-text {cls}-text-back">',"<div>&#160;</div>","</div>","</div>","</div>");this.el=a?c.insertBefore(a,{cls:this.baseCls},true):c.append(d,{cls:this.baseCls},true);if(this.id){this.el.dom.id=this.id}var b=this.el.dom.firstChild;this.progressBar=Ext.get(b.firstChild);if(this.textEl){this.textEl=Ext.get(this.textEl);delete this.textTopEl}else{this.textTopEl=Ext.get(this.progressBar.dom.firstChild);var e=Ext.get(b.childNodes[1]);this.textTopEl.setStyle("z-index",99).addClass("x-hidden");this.textEl=new Ext.CompositeElement([this.textTopEl.dom.firstChild,e.dom.firstChild]);this.textEl.setWidth(b.offsetWidth)}this.progressBar.setHeight(b.offsetHeight)},afterRender:function(){Ext.ProgressBar.superclass.afterRender.call(this);if(this.value){this.updateProgress(this.value,this.text)}else{this.updateText(this.text)}},updateProgress:function(c,d,b){this.value=c||0;if(d){this.updateText(d)}if(this.rendered&&!this.isDestroyed){var a=Math.floor(c*this.el.dom.firstChild.offsetWidth);this.progressBar.setWidth(a,b===true||(b!==false&&this.animate));if(this.textTopEl){this.textTopEl.removeClass("x-hidden").setWidth(a)}}this.fireEvent("update",this,c,d);return this},wait:function(b){if(!this.waitTimer){var a=this;b=b||{};this.updateText(b.text);this.waitTimer=Ext.TaskMgr.start({run:function(c){var d=b.increment||10;c-=1;this.updateProgress(((((c+d)%d)+1)*(100/d))*0.01,null,b.animate)},interval:b.interval||1000,duration:b.duration,onStop:function(){if(b.fn){b.fn.apply(b.scope||this)}this.reset()},scope:a})}return this},isWaiting:function(){return this.waitTimer!==null},updateText:function(a){this.text=a||"&#160;";if(this.rendered){this.textEl.update(this.text)}return this},syncProgressBar:function(){if(this.value){this.updateProgress(this.value,this.text)}return this},setSize:function(a,c){Ext.ProgressBar.superclass.setSize.call(this,a,c);if(this.textTopEl){var b=this.el.dom.firstChild;this.textEl.setSize(b.offsetWidth,b.offsetHeight)}this.syncProgressBar();return this},reset:function(a){this.updateProgress(0);if(this.textTopEl){this.textTopEl.addClass("x-hidden")}this.clearTimer();if(a===true){this.hide()}return this},clearTimer:function(){if(this.waitTimer){this.waitTimer.onStop=null;Ext.TaskMgr.stop(this.waitTimer);this.waitTimer=null}},onDestroy:function(){this.clearTimer();if(this.rendered){if(this.textEl.isComposite){this.textEl.clear()}Ext.destroyMembers(this,"textEl","progressBar","textTopEl")}Ext.ProgressBar.superclass.onDestroy.call(this)}});Ext.reg("progress",Ext.ProgressBar);(function(){var a=Ext.EventManager;var b=Ext.lib.Dom;Ext.dd.DragDrop=function(e,c,d){if(e){this.init(e,c,d)}};Ext.dd.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},moveOnly:false,unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(c,d){},startDrag:function(c,d){},b4Drag:function(c){},onDrag:function(c){},onDragEnter:function(c,d){},b4DragOver:function(c){},onDragOver:function(c,d){},b4DragOut:function(c){},onDragOut:function(c,d){},b4DragDrop:function(c){},onDragDrop:function(c,d){},onInvalidDrop:function(c){},b4EndDrag:function(c){},endDrag:function(c){},b4MouseDown:function(c){},onMouseDown:function(c){},onMouseUp:function(c){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(j,h,o){if(Ext.isNumber(h)){h={left:h,right:h,top:h,bottom:h}}h=h||this.defaultPadding;var l=Ext.get(this.getEl()).getBox(),d=Ext.get(j),n=d.getScroll(),k,e=d.dom;if(e==document.body){k={x:n.left,y:n.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()}}else{var m=d.getXY();k={x:m[0],y:m[1],width:e.clientWidth,height:e.clientHeight}}var i=l.y-k.y,g=l.x-k.x;this.resetConstraints();this.setXConstraint(g-(h.left||0),k.width-g-l.width-(h.right||0),this.xTickSize);this.setYConstraint(i-(h.top||0),k.height-i-l.height-(h.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(e,c,d){this.initTarget(e,c,d);a.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(e,c,d){this.config=d||{};this.DDM=Ext.dd.DDM;this.groups={};if(typeof e!=="string"){e=Ext.id(e)}this.id=e;this.addToGroup((c)?c:"default");this.handleElId=e;this.setDragElId(e);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(e,c,g,d){if(!c&&0!==c){this.padding=[e,e,e,e]}else{if(!g&&0!==g){this.padding=[e,c,e,c]}else{this.padding=[e,c,g,d]}}},setInitPosition:function(g,e){var h=this.getEl();if(!this.DDM.verifyEl(h)){return}var d=g||0;var c=e||0;var i=b.getXY(h);this.initPageX=i[0]-d;this.initPageY=i[1]-c;this.lastPageX=i[0];this.lastPageY=i[1];this.setStartPosition(i)},setStartPosition:function(d){var c=d||b.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=c[0];this.startPageY=c[1]},addToGroup:function(c){this.groups[c]=true;this.DDM.regDragDrop(this,c)},removeFromGroup:function(c){if(this.groups[c]){delete this.groups[c]}this.DDM.removeDDFromGroup(this,c)},setDragElId:function(c){this.dragElId=c},setHandleElId:function(c){if(typeof c!=="string"){c=Ext.id(c)}this.handleElId=c;this.DDM.regHandle(this.id,c)},setOuterHandleElId:function(c){if(typeof c!=="string"){c=Ext.id(c)}a.on(c,"mousedown",this.handleMouseDown,this);this.setHandleElId(c);this.hasOuterHandles=true},unreg:function(){a.un(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDM.isLocked()||this.locked)},handleMouseDown:function(g,d){if(this.primaryButtonOnly&&g.button!=0){return}if(this.isLocked()){return}this.DDM.refreshCache(this.groups);var c=new Ext.lib.Point(Ext.lib.Event.getPageX(g),Ext.lib.Event.getPageY(g));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(c,this)){}else{if(this.clickValidator(g)){this.setStartPosition();this.b4MouseDown(g);this.onMouseDown(g);this.DDM.handleMouseDown(g,this);if(this.preventDefault||this.stopPropagation){if(this.preventDefault){g.preventDefault()}if(this.stopPropagation){g.stopPropagation()}}else{this.DDM.stopEvent(g)}}else{}}},clickValidator:function(d){var c=d.getTarget();return(this.isValidHandleChild(c)&&(this.id==this.handleElId||this.DDM.handleWasClicked(c,this.id)))},addInvalidHandleType:function(c){var d=c.toUpperCase();this.invalidHandleTypes[d]=d},addInvalidHandleId:function(c){if(typeof c!=="string"){c=Ext.id(c)}this.invalidHandleIds[c]=c},addInvalidHandleClass:function(c){this.invalidHandleClasses.push(c)},removeInvalidHandleType:function(c){var d=c.toUpperCase();delete this.invalidHandleTypes[d]},removeInvalidHandleId:function(c){if(typeof c!=="string"){c=Ext.id(c)}delete this.invalidHandleIds[c]},removeInvalidHandleClass:function(d){for(var e=0,c=this.invalidHandleClasses.length;e<c;++e){if(this.invalidHandleClasses[e]==d){delete this.invalidHandleClasses[e]}}},isValidHandleChild:function(h){var g=true;var k;try{k=h.nodeName.toUpperCase()}catch(j){k=h.nodeName}g=g&&!this.invalidHandleTypes[k];g=g&&!this.invalidHandleIds[h.id];for(var d=0,c=this.invalidHandleClasses.length;g&&d<c;++d){g=!Ext.fly(h).hasClass(this.invalidHandleClasses[d])}return g},setXTicks:function(g,c){this.xTicks=[];this.xTickSize=c;var e={};for(var d=this.initPageX;d>=this.minX;d=d-c){if(!e[d]){this.xTicks[this.xTicks.length]=d;e[d]=true}}for(d=this.initPageX;d<=this.maxX;d=d+c){if(!e[d]){this.xTicks[this.xTicks.length]=d;e[d]=true}}this.xTicks.sort(this.DDM.numericSort)},setYTicks:function(g,c){this.yTicks=[];this.yTickSize=c;var e={};for(var d=this.initPageY;d>=this.minY;d=d-c){if(!e[d]){this.yTicks[this.yTicks.length]=d;e[d]=true}}for(d=this.initPageY;d<=this.maxY;d=d+c){if(!e[d]){this.yTicks[this.yTicks.length]=d;e[d]=true}}this.yTicks.sort(this.DDM.numericSort)},setXConstraint:function(e,d,c){this.leftConstraint=e;this.rightConstraint=d;this.minX=this.initPageX-e;this.maxX=this.initPageX+d;if(c){this.setXTicks(this.initPageX,c)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(c,e,d){this.topConstraint=c;this.bottomConstraint=e;this.minY=this.initPageY-c;this.maxY=this.initPageY+e;if(d){this.setYTicks(this.initPageY,d)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var d=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var c=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(d,c)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(k,g){if(!g){return k}else{if(g[0]>=k){return g[0]}else{for(var d=0,c=g.length;d<c;++d){var e=d+1;if(g[e]&&g[e]>=k){var j=k-g[d];var h=g[e]-k;return(h>j)?g[d]:g[e]}}return g[g.length-1]}}},toString:function(){return("DragDrop "+this.id)}}})();if(!Ext.dd.DragDropMgr){Ext.dd.DragDropMgr=function(){var a=Ext.EventManager;return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,notifyOccluded:false,_execOnAll:function(d,c){for(var e in this.ids){for(var b in this.ids[e]){var g=this.ids[e][b];if(!this.isTypeOfDD(g)){continue}g[d].apply(g,c)}}},_onLoad:function(){this.init();a.on(document,"mouseup",this.handleMouseUp,this,true);a.on(document,"mousemove",this.handleMouseMove,this,true);a.on(window,"unload",this._onUnload,this,true);a.on(window,"resize",this._onResize,this,true)},_onResize:function(b){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(c,b){if(!this.initialized){this.init()}if(!this.ids[b]){this.ids[b]={}}this.ids[b][c.id]=c},removeDDFromGroup:function(d,b){if(!this.ids[b]){this.ids[b]={}}var c=this.ids[b];if(c&&c[d.id]){delete c[d.id]}},_remove:function(c){for(var b in c.groups){if(b&&this.ids[b]&&this.ids[b][c.id]){delete this.ids[b][c.id]}}delete this.handleIds[c.id]},regHandle:function(c,b){if(!this.handleIds[c]){this.handleIds[c]={}}this.handleIds[c][b]=b},isDragDrop:function(b){return(this.getDDById(b))?true:false},getRelated:function(h,c){var g=[];for(var e in h.groups){for(var d in this.ids[e]){var b=this.ids[e][d];if(!this.isTypeOfDD(b)){continue}if(!c||b.isTarget){g[g.length]=b}}}return g},isLegalTarget:function(g,e){var c=this.getRelated(g,true);for(var d=0,b=c.length;d<b;++d){if(c[d].id==e.id){return true}}return false},isTypeOfDD:function(b){return(b&&b.__ygDragDrop)},isHandle:function(c,b){return(this.handleIds[c]&&this.handleIds[c][b])},getDDById:function(c){for(var b in this.ids){if(this.ids[b][c]){return this.ids[b][c]}}return null},handleMouseDown:function(d,c){if(Ext.QuickTips){Ext.QuickTips.ddDisable()}if(this.dragCurrent){this.handleMouseUp(d)}this.currentTarget=d.getTarget();this.dragCurrent=c;var b=c.getEl();this.startX=d.getPageX();this.startY=d.getPageY();this.deltaX=this.startX-b.offsetLeft;this.deltaY=this.startY-b.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var e=Ext.dd.DDM;e.startDrag(e.startX,e.startY)},this.clickTimeThresh)},startDrag:function(b,c){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(b,c);this.dragCurrent.startDrag(b,c)}this.dragThreshMet=true},handleMouseUp:function(b){if(Ext.QuickTips){Ext.QuickTips.ddEnable()}if(!this.dragCurrent){return}clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(b,true)}else{}this.stopDrag(b);this.stopEvent(b)},stopEvent:function(b){if(this.stopPropagation){b.stopPropagation()}if(this.preventDefault){b.preventDefault()}},stopDrag:function(b){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(b);this.dragCurrent.endDrag(b)}this.dragCurrent.onMouseUp(b)}this.dragCurrent=null;this.dragOvers={}},handleMouseMove:function(d){if(!this.dragCurrent){return true}if(Ext.isIE&&(d.button!==0&&d.button!==1&&d.button!==2)){this.stopEvent(d);return this.handleMouseUp(d)}if(!this.dragThreshMet){var c=Math.abs(this.startX-d.getPageX());var b=Math.abs(this.startY-d.getPageY());if(c>this.clickPixelThresh||b>this.clickPixelThresh){this.startDrag(this.startX,this.startY)}}if(this.dragThreshMet){this.dragCurrent.b4Drag(d);this.dragCurrent.onDrag(d);if(!this.dragCurrent.moveOnly){this.fireEvents(d,false)}}this.stopEvent(d);return true},fireEvents:function(o,r){var q=this,l=q.dragCurrent,s=o.getPoint(),c,u,g=[],b=[],h=[],m=[],k=[],d=[],p,j,n,t;if(!l||l.isLocked()){return}for(j in q.dragOvers){c=q.dragOvers[j];if(!q.isTypeOfDD(c)){continue}if(!this.isOverTarget(s,c,q.mode)){h.push(c)}b[j]=true;delete q.dragOvers[j]}for(t in l.groups){if("string"!=typeof t){continue}for(j in q.ids[t]){c=q.ids[t][j];if(q.isTypeOfDD(c)&&(u=c.getEl())&&(c.isTarget)&&(!c.isLocked())&&((c!=l)||(l.ignoreSelf===false))){if((c.zIndex=q.getZIndex(u))!==-1){p=true}g.push(c)}}}if(p){g.sort(q.byZIndex)}for(j=0,n=g.length;j<n;j++){c=g[j];if(q.isOverTarget(s,c,q.mode)){if(r){k.push(c)}else{if(!b[c.id]){d.push(c)}else{m.push(c)}q.dragOvers[c.id]=c}if(!q.notifyOccluded){break}}}if(q.mode){if(h.length){l.b4DragOut(o,h);l.onDragOut(o,h)}if(d.length){l.onDragEnter(o,d)}if(m.length){l.b4DragOver(o,m);l.onDragOver(o,m)}if(k.length){l.b4DragDrop(o,k);l.onDragDrop(o,k)}}else{for(j=0,n=h.length;j<n;++j){l.b4DragOut(o,h[j].id);l.onDragOut(o,h[j].id)}for(j=0,n=d.length;j<n;++j){l.onDragEnter(o,d[j].id)}for(j=0,n=m.length;j<n;++j){l.b4DragOver(o,m[j].id);l.onDragOver(o,m[j].id)}for(j=0,n=k.length;j<n;++j){l.b4DragDrop(o,k[j].id);l.onDragDrop(o,k[j].id)}}if(r&&!k.length){l.onInvalidDrop(o)}},getZIndex:function(c){var b=document.body,d,e=-1;c=Ext.getDom(c);while(c!==b){if(!isNaN(d=Number(Ext.fly(c).getStyle("zIndex")))){e=d}c=c.parentNode}return e},byZIndex:function(c,b){return c.zIndex<b.zIndex},getBestMatch:function(d){var g=null;var c=d.length;if(c==1){g=d[0]}else{for(var e=0;e<c;++e){var b=d[e];if(b.cursorIsOver){g=b;break}else{if(!g||g.overlap.getArea()<b.overlap.getArea()){g=b}}}}return g},refreshCache:function(c){for(var b in c){if("string"!=typeof b){continue}for(var d in this.ids[b]){var e=this.ids[b][d];if(this.isTypeOfDD(e)){var g=this.getLocation(e);if(g){this.locationCache[e.id]=g}else{delete this.locationCache[e.id]}}}}},verifyEl:function(c){if(c){var b;if(Ext.isIE){try{b=c.offsetParent}catch(d){}}else{b=c.offsetParent}if(b){return true}}return false},getLocation:function(j){if(!this.isTypeOfDD(j)){return null}var h=j.getEl(),o,g,d,q,p,s,c,n,i,m;try{o=Ext.lib.Dom.getXY(h)}catch(k){}if(!o){return null}g=o[0];d=g+h.offsetWidth;q=o[1];p=q+h.offsetHeight;s=q-j.padding[0];c=d+j.padding[1];n=p+j.padding[2];i=g-j.padding[3];return new Ext.lib.Region(s,c,n,i)},isOverTarget:function(k,b,d){var g=this.locationCache[b.id];if(!g||!this.useCache){g=this.getLocation(b);this.locationCache[b.id]=g}if(!g){return false}b.cursorIsOver=g.contains(k);var j=this.dragCurrent;if(!j||!j.getTargetCoord||(!d&&!j.constrainX&&!j.constrainY)){return b.cursorIsOver}b.overlap=null;var h=j.getTargetCoord(k.x,k.y);var c=j.getDragEl();var e=new Ext.lib.Region(h.y,h.x+c.offsetWidth,h.y+c.offsetHeight,h.x);var i=e.intersect(g);if(i){b.overlap=i;return(d)?true:b.cursorIsOver}else{return false}},_onUnload:function(c,b){a.removeListener(document,"mouseup",this.handleMouseUp,this);a.removeListener(document,"mousemove",this.handleMouseMove,this);a.removeListener(window,"resize",this._onResize,this);Ext.dd.DragDropMgr.unregAll()},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null}this._execOnAll("unreg",[]);for(var b in this.elementCache){delete this.elementCache[b]}this.elementCache={};this.ids={}},elementCache:{},getElWrapper:function(c){var b=this.elementCache[c];if(!b||!b.el){b=this.elementCache[c]=new this.ElementWrapper(Ext.getDom(c))}return b},getElement:function(b){return Ext.getDom(b)},getCss:function(c){var b=Ext.getDom(c);return(b)?b.style:null},ElementWrapper:function(b){this.el=b||null;this.id=this.el&&b.id;this.css=this.el&&b.style},getPosX:function(b){return Ext.lib.Dom.getX(b)},getPosY:function(b){return Ext.lib.Dom.getY(b)},swapNode:function(d,b){if(d.swapNode){d.swapNode(b)}else{var e=b.parentNode;var c=b.nextSibling;if(c==d){e.insertBefore(d,b)}else{if(b==d.nextSibling){e.insertBefore(b,d)}else{d.parentNode.replaceChild(b,d);e.insertBefore(d,c)}}}},getScroll:function(){var d,b,e=document.documentElement,c=document.body;if(e&&(e.scrollTop||e.scrollLeft)){d=e.scrollTop;b=e.scrollLeft}else{if(c){d=c.scrollTop;b=c.scrollLeft}else{}}return{top:d,left:b}},getStyle:function(c,b){return Ext.fly(c).getStyle(b)},getScrollTop:function(){return this.getScroll().top},getScrollLeft:function(){return this.getScroll().left},moveToEl:function(b,d){var c=Ext.lib.Dom.getXY(d);Ext.lib.Dom.setXY(b,c)},numericSort:function(d,c){return(d-c)},_timeoutCount:0,_addListeners:function(){var b=Ext.dd.DDM;if(Ext.lib.Event&&document){b._onLoad()}else{if(b._timeoutCount>2000){}else{setTimeout(b._addListeners,10);if(document&&document.body){b._timeoutCount+=1}}}},handleWasClicked:function(b,d){if(this.isHandle(d,b.id)){return true}else{var c=b.parentNode;while(c){if(this.isHandle(d,c.id)){return true}else{c=c.parentNode}}}return false}}}();Ext.dd.DDM=Ext.dd.DragDropMgr;Ext.dd.DDM._addListeners()}Ext.dd.DD=function(c,a,b){if(c){this.init(c,a,b)}};Ext.extend(Ext.dd.DD,Ext.dd.DragDrop,{scroll:true,autoOffset:function(c,b){var a=c-this.startPageX;var d=b-this.startPageY;this.setDelta(a,d)},setDelta:function(b,a){this.deltaX=b;this.deltaY=a},setDragElPos:function(c,b){var a=this.getDragEl();this.alignElWithMouse(a,c,b)},alignElWithMouse:function(c,h,g){var e=this.getTargetCoord(h,g);var b=c.dom?c:Ext.fly(c,"_dd");if(!this.deltaSetXY){var i=[e.x,e.y];b.setXY(i);var d=b.getLeft(true);var a=b.getTop(true);this.deltaSetXY=[d-e.x,a-e.y]}else{b.setLeftTop(e.x+this.deltaSetXY[0],e.y+this.deltaSetXY[1])}this.cachePosition(e.x,e.y);this.autoScroll(e.x,e.y,c.offsetHeight,c.offsetWidth);return e},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.lib.Dom.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(l,k,e,m){if(this.scroll){var n=Ext.lib.Dom.getViewHeight();var b=Ext.lib.Dom.getViewWidth();var p=this.DDM.getScrollTop();var d=this.DDM.getScrollLeft();var j=e+k;var o=m+l;var i=(n+p-k-this.deltaY);var g=(b+d-l-this.deltaX);var c=40;var a=(document.all)?80:30;if(j>n&&i<c){window.scrollTo(d,p+a)}if(k<p&&p>0&&k-p<c){window.scrollTo(d,p-a)}if(o>b&&g<c){window.scrollTo(d+a,p)}if(l<d&&d>0&&l-d<c){window.scrollTo(d-a,p)}}},getTargetCoord:function(c,b){var a=c-this.deltaX;var d=b-this.deltaY;if(this.constrainX){if(a<this.minX){a=this.minX}if(a>this.maxX){a=this.maxX}}if(this.constrainY){if(d<this.minY){d=this.minY}if(d>this.maxY){d=this.maxY}}a=this.getTick(a,this.xTicks);d=this.getTick(d,this.yTicks);return{x:a,y:d}},applyConfig:function(){Ext.dd.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false)},b4MouseDown:function(a){this.autoOffset(a.getPageX(),a.getPageY())},b4Drag:function(a){this.setDragElPos(a.getPageX(),a.getPageY())},toString:function(){return("DD "+this.id)}});Ext.dd.DDProxy=function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}};Ext.dd.DDProxy.dragElId="ygddfdiv";Ext.extend(Ext.dd.DDProxy,Ext.dd.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var b=this;var a=document.body;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}var d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;var c=d.style;c.position="absolute";c.visibility="hidden";c.cursor="move";c.border="2px solid #aaa";c.zIndex=999;a.insertBefore(d,a.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){Ext.dd.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(e,d){var c=this.getEl();var a=this.getDragEl();var b=a.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(b.width,10)/2),Math.round(parseInt(b.height,10)/2))}this.setDragElPos(e,d);Ext.fly(a).show()},_resizeProxy:function(){if(this.resizeFrame){var a=this.getEl();Ext.fly(this.getDragEl()).setSize(a.offsetWidth,a.offsetHeight)}},b4MouseDown:function(b){var a=b.getPageX();var c=b.getPageY();this.autoOffset(a,c);this.setDragElPos(a,c)},b4StartDrag:function(a,b){this.showFrame(a,b)},b4EndDrag:function(a){Ext.fly(this.getDragEl()).hide()},endDrag:function(c){var b=this.getEl();var a=this.getDragEl();a.style.visibility="";this.beforeMove();b.style.visibility="hidden";Ext.dd.DDM.moveToEl(b,a);a.style.visibility="hidden";b.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}});Ext.dd.DDTarget=function(c,a,b){if(c){this.initTarget(c,a,b)}};Ext.extend(Ext.dd.DDTarget,Ext.dd.DragDrop,{getDragEl:Ext.emptyFn,isValidHandleChild:Ext.emptyFn,startDrag:Ext.emptyFn,endDrag:Ext.emptyFn,onDrag:Ext.emptyFn,onDragDrop:Ext.emptyFn,onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,onDragOver:Ext.emptyFn,onInvalidDrop:Ext.emptyFn,onMouseDown:Ext.emptyFn,onMouseUp:Ext.emptyFn,setXConstraint:Ext.emptyFn,setYConstraint:Ext.emptyFn,resetConstraints:Ext.emptyFn,clearConstraints:Ext.emptyFn,clearTicks:Ext.emptyFn,setInitPosition:Ext.emptyFn,setDragElId:Ext.emptyFn,setHandleElId:Ext.emptyFn,setOuterHandleElId:Ext.emptyFn,addInvalidHandleClass:Ext.emptyFn,addInvalidHandleId:Ext.emptyFn,addInvalidHandleType:Ext.emptyFn,removeInvalidHandleClass:Ext.emptyFn,removeInvalidHandleId:Ext.emptyFn,removeInvalidHandleType:Ext.emptyFn,toString:function(){return("DDTarget "+this.id)}});Ext.dd.DragTracker=Ext.extend(Ext.util.Observable,{active:false,tolerance:5,autoStart:false,constructor:function(a){Ext.apply(this,a);this.addEvents("mousedown","mouseup","mousemove","dragstart","dragend","drag");this.dragRegion=new Ext.lib.Region(0,0,0,0);if(this.el){this.initEl(this.el)}Ext.dd.DragTracker.superclass.constructor.call(this,a)},initEl:function(a){this.el=Ext.get(a);a.on("mousedown",this.onMouseDown,this,this.delegate?{delegate:this.delegate}:undefined)},destroy:function(){this.el.un("mousedown",this.onMouseDown,this);delete this.el},onMouseDown:function(b,a){if(this.fireEvent("mousedown",this,b)!==false&&this.onBeforeStart(b)!==false){this.startXY=this.lastXY=b.getXY();this.dragTarget=this.delegate?a:this.el.dom;if(this.preventDefault!==false){b.preventDefault()}Ext.getDoc().on({scope:this,mouseup:this.onMouseUp,mousemove:this.onMouseMove,selectstart:this.stopSelect});if(this.autoStart){this.timer=this.triggerStart.defer(this.autoStart===true?1000:this.autoStart,this,[b])}}},onMouseMove:function(g,d){var b=Ext.isIE6||Ext.isIE7||Ext.isIE8;if(this.active&&b&&!g.browserEvent.button){g.preventDefault();this.onMouseUp(g);return}g.preventDefault();var c=g.getXY(),a=this.startXY;this.lastXY=c;if(!this.active){if(Math.abs(a[0]-c[0])>this.tolerance||Math.abs(a[1]-c[1])>this.tolerance){this.triggerStart(g)}else{return}}this.fireEvent("mousemove",this,g);this.onDrag(g);this.fireEvent("drag",this,g)},onMouseUp:function(c){var b=Ext.getDoc(),a=this.active;b.un("mousemove",this.onMouseMove,this);b.un("mouseup",this.onMouseUp,this);b.un("selectstart",this.stopSelect,this);c.preventDefault();this.clearStart();this.active=false;delete this.elRegion;this.fireEvent("mouseup",this,c);if(a){this.onEnd(c);this.fireEvent("dragend",this,c)}},triggerStart:function(a){this.clearStart();this.active=true;this.onStart(a);this.fireEvent("dragstart",this,a)},clearStart:function(){if(this.timer){clearTimeout(this.timer);delete this.timer}},stopSelect:function(a){a.stopEvent();return false},onBeforeStart:function(a){},onStart:function(a){},onDrag:function(a){},onEnd:function(a){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getXY:function(a){return a?this.constrainModes[a].call(this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[a[0]-b[0],a[1]-b[1]]},constrainModes:{point:function(b){if(!this.elRegion){this.elRegion=this.getDragCt().getRegion()}var a=this.dragRegion;a.left=b[0];a.top=b[1];a.right=b[0];a.bottom=b[1];a.constrainTo(this.elRegion);return[a.left,a.top]}}});Ext.dd.ScrollManager=function(){var c=Ext.dd.DragDropMgr;var e={};var b=null;var i={};var h=function(l){b=null;a()};var j=function(){if(c.dragCurrent){c.refreshCache(c.dragCurrent.groups)}};var d=function(){if(c.dragCurrent){var l=Ext.dd.ScrollManager;var m=i.el.ddScrollConfig?i.el.ddScrollConfig.increment:l.increment;if(!l.animate){if(i.el.scroll(i.dir,m)){j()}}else{i.el.scroll(i.dir,m,true,l.animDuration,j)}}};var a=function(){if(i.id){clearInterval(i.id)}i.id=0;i.el=null;i.dir=""};var g=function(m,l){a();i.el=m;i.dir=l;var o=m.ddScrollConfig?m.ddScrollConfig.ddGroup:undefined,n=(m.ddScrollConfig&&m.ddScrollConfig.frequency)?m.ddScrollConfig.frequency:Ext.dd.ScrollManager.frequency;if(o===undefined||c.dragCurrent.ddGroup==o){i.id=setInterval(d,n)}};var k=function(o,q){if(q||!c.dragCurrent){return}var s=Ext.dd.ScrollManager;if(!b||b!=c.dragCurrent){b=c.dragCurrent;s.refreshCache()}var t=Ext.lib.Event.getXY(o);var u=new Ext.lib.Point(t[0],t[1]);for(var m in e){var n=e[m],l=n._region;var p=n.ddScrollConfig?n.ddScrollConfig:s;if(l&&l.contains(u)&&n.isScrollable()){if(l.bottom-u.y<=p.vthresh){if(i.el!=n){g(n,"down")}return}else{if(l.right-u.x<=p.hthresh){if(i.el!=n){g(n,"left")}return}else{if(u.y-l.top<=p.vthresh){if(i.el!=n){g(n,"up")}return}else{if(u.x-l.left<=p.hthresh){if(i.el!=n){g(n,"right")}return}}}}}}a()};c.fireEvents=c.fireEvents.createSequence(k,c);c.stopDrag=c.stopDrag.createSequence(h,c);return{register:function(n){if(Ext.isArray(n)){for(var m=0,l=n.length;m<l;m++){this.register(n[m])}}else{n=Ext.get(n);e[n.id]=n}},unregister:function(n){if(Ext.isArray(n)){for(var m=0,l=n.length;m<l;m++){this.unregister(n[m])}}else{n=Ext.get(n);delete e[n.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,ddGroup:undefined,refreshCache:function(){for(var l in e){if(typeof e[l]=="object"){e[l]._region=e[l].getRegion()}}}}}();Ext.dd.Registry=function(){var d={};var b={};var a=0;var c=function(g,e){if(typeof g=="string"){return g}var h=g.id;if(!h&&e!==false){h="extdd-"+(++a);g.id=h}return h};return{register:function(j,k){k=k||{};if(typeof j=="string"){j=document.getElementById(j)}k.ddel=j;d[c(j)]=k;if(k.isHandle!==false){b[k.ddel.id]=k}if(k.handles){var h=k.handles;for(var g=0,e=h.length;g<e;g++){b[c(h[g])]=k}}},unregister:function(j){var l=c(j,false);var k=d[l];if(k){delete d[l];if(k.handles){var h=k.handles;for(var g=0,e=h.length;g<e;g++){delete b[c(h[g],false)]}}}},getHandle:function(e){if(typeof e!="string"){e=e.id}return b[e]},getHandleFromEvent:function(h){var g=Ext.lib.Event.getTarget(h);return g?b[g.id]:null},getTarget:function(e){if(typeof e!="string"){e=e.id}return d[e]},getTargetFromEvent:function(h){var g=Ext.lib.Event.getTarget(h);return g?d[g.id]||b[g.id]:null}}}();Ext.dd.StatusProxy=function(a){Ext.apply(this,a);this.id=this.id||Ext.id();this.el=new Ext.Layer({dh:{id:this.id,tag:"div",cls:"x-dd-drag-proxy "+this.dropNotAllowed,children:[{tag:"div",cls:"x-dd-drop-icon"},{tag:"div",cls:"x-dd-drag-ghost"}]},shadow:!a||a.shadow!==false});this.ghost=Ext.get(this.el.dom.childNodes[1]);this.dropStatus=this.dropNotAllowed};Ext.dd.StatusProxy.prototype={dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",setStatus:function(a){a=a||this.dropNotAllowed;if(this.dropStatus!=a){this.el.replaceClass(this.dropStatus,a);this.dropStatus=a}},reset:function(a){this.el.dom.className="x-dd-drag-proxy "+this.dropNotAllowed;this.dropStatus=this.dropNotAllowed;if(a){this.ghost.update("")}},update:function(a){if(typeof a=="string"){this.ghost.update(a)}else{this.ghost.update("");a.style.margin="0";this.ghost.dom.appendChild(a)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},getEl:function(){return this.el},getGhost:function(){return this.ghost},hide:function(a){this.el.hide();if(a){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},show:function(){this.el.show()},sync:function(){this.el.sync()},repair:function(b,c,a){this.callback=c;this.scope=a;if(b&&this.animRepair!==false){this.el.addClass("x-dd-drag-repair");this.el.hideUnders(true);this.anim=this.el.shift({duration:this.repairDuration||0.5,easing:"easeOut",xy:b,stopFx:true,callback:this.afterRepair,scope:this})}else{this.afterRepair()}},afterRepair:function(){this.hide(true);if(typeof this.callback=="function"){this.callback.call(this.scope||this)}this.callback=null;this.scope=null},destroy:function(){Ext.destroy(this.ghost,this.el)}};Ext.dd.DragSource=function(b,a){this.el=Ext.get(b);if(!this.dragData){this.dragData={}}Ext.apply(this,a);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy()}Ext.dd.DragSource.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true});this.dragging=false};Ext.extend(Ext.dd.DragSource,Ext.dd.DDProxy,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",getDragData:function(a){return this.dragData},onDragEnter:function(c,d){var b=Ext.dd.DragDropMgr.getDDById(d);this.cachedTarget=b;if(this.beforeDragEnter(b,c,d)!==false){if(b.isNotifyTarget){var a=b.notifyEnter(this,c,this.dragData);this.proxy.setStatus(a)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(b,c,d)}}},beforeDragEnter:function(b,a,c){return true},alignElWithMouse:function(){Ext.dd.DragSource.superclass.alignElWithMouse.apply(this,arguments);this.proxy.sync()},onDragOver:function(c,d){var b=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(d);if(this.beforeDragOver(b,c,d)!==false){if(b.isNotifyTarget){var a=b.notifyOver(this,c,this.dragData);this.proxy.setStatus(a)}if(this.afterDragOver){this.afterDragOver(b,c,d)}}},beforeDragOver:function(b,a,c){return true},onDragOut:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(c);if(this.beforeDragOut(a,b,c)!==false){if(a.isNotifyTarget){a.notifyOut(this,b,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(a,b,c)}}this.cachedTarget=null},beforeDragOut:function(b,a,c){return true},onDragDrop:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(c);if(this.beforeDragDrop(a,b,c)!==false){if(a.isNotifyTarget){if(a.notifyDrop(this,b,this.dragData)){this.onValidDrop(a,b,c)}else{this.onInvalidDrop(a,b,c)}}else{this.onValidDrop(a,b,c)}if(this.afterDragDrop){this.afterDragDrop(a,b,c)}}delete this.cachedTarget},beforeDragDrop:function(b,a,c){return true},onValidDrop:function(b,a,c){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(b,a,c)}},getRepairXY:function(b,a){return this.el.getXY()},onInvalidDrop:function(b,a,c){this.beforeInvalidDrop(b,a,c);if(this.cachedTarget){if(this.cachedTarget.isNotifyTarget){this.cachedTarget.notifyOut(this,a,this.dragData)}this.cacheTarget=null}this.proxy.repair(this.getRepairXY(a,this.dragData),this.afterRepair,this);if(this.afterInvalidDrop){this.afterInvalidDrop(a,c)}},afterRepair:function(){if(Ext.enableFx){this.el.highlight(this.hlColor||"c3daf9")}this.dragging=false},beforeInvalidDrop:function(b,a,c){return true},handleMouseDown:function(b){if(this.dragging){return}var a=this.getDragData(b);if(a&&this.onBeforeDrag(a,b)!==false){this.dragData=a;this.proxy.stop();Ext.dd.DragSource.superclass.handleMouseDown.apply(this,arguments)}},onBeforeDrag:function(a,b){return true},onStartDrag:Ext.emptyFn,startDrag:function(a,b){this.proxy.reset();this.dragging=true;this.proxy.update("");this.onInitDrag(a,b);this.proxy.show()},onInitDrag:function(a,c){var b=this.el.dom.cloneNode(true);b.id=Ext.id();this.proxy.update(b);this.onStartDrag(a,c);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(a){},endDrag:function(a){this.onEndDrag(this.dragData,a)},onEndDrag:function(a,b){},autoOffset:function(a,b){this.setDelta(-12,-20)},destroy:function(){Ext.dd.DragSource.superclass.destroy.call(this);Ext.destroy(this.proxy)}});Ext.dd.DropTarget=Ext.extend(Ext.dd.DDTarget,{constructor:function(b,a){this.el=Ext.get(b);Ext.apply(this,a);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}Ext.dd.DropTarget.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{isTarget:true})},dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(a,c,b){if(this.overClass){this.el.addClass(this.overClass)}return this.dropAllowed},notifyOver:function(a,c,b){return this.dropAllowed},notifyOut:function(a,c,b){if(this.overClass){this.el.removeClass(this.overClass)}},notifyDrop:function(a,c,b){return false},destroy:function(){Ext.dd.DropTarget.superclass.destroy.call(this);if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});Ext.dd.DragZone=Ext.extend(Ext.dd.DragSource,{constructor:function(b,a){Ext.dd.DragZone.superclass.constructor.call(this,b,a);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}},getDragData:function(a){return Ext.dd.Registry.getHandleFromEvent(a)},onInitDrag:function(a,b){this.proxy.update(this.dragData.ddel.cloneNode(true));this.onStartDrag(a,b);return true},afterRepair:function(){if(Ext.enableFx){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")}this.dragging=false},getRepairXY:function(a){return Ext.Element.fly(this.dragData.ddel).getXY()},destroy:function(){Ext.dd.DragZone.superclass.destroy.call(this);if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});Ext.dd.DropZone=function(b,a){Ext.dd.DropZone.superclass.constructor.call(this,b,a)};Ext.extend(Ext.dd.DropZone,Ext.dd.DropTarget,{getTargetFromEvent:function(a){return Ext.dd.Registry.getTargetFromEvent(a)},onNodeEnter:function(d,a,c,b){},onNodeOver:function(d,a,c,b){return this.dropAllowed},onNodeOut:function(d,a,c,b){},onNodeDrop:function(d,a,c,b){return false},onContainerOver:function(a,c,b){return this.dropNotAllowed},onContainerDrop:function(a,c,b){return false},notifyEnter:function(a,c,b){return this.dropNotAllowed},notifyOver:function(a,c,b){var d=this.getTargetFromEvent(c);if(!d){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b);this.lastOverNode=null}return this.onContainerOver(a,c,b)}if(this.lastOverNode!=d){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b)}this.onNodeEnter(d,a,c,b);this.lastOverNode=d}return this.onNodeOver(d,a,c,b)},notifyOut:function(a,c,b){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b);this.lastOverNode=null}},notifyDrop:function(a,c,b){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b);this.lastOverNode=null}var d=this.getTargetFromEvent(c);return d?this.onNodeDrop(d,a,c,b):this.onContainerDrop(a,c,b)},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)}});Ext.Element.addMethods({initDD:function(c,b,d){var a=new Ext.dd.DD(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDProxy:function(c,b,d){var a=new Ext.dd.DDProxy(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDTarget:function(c,b,d){var a=new Ext.dd.DDTarget(Ext.id(this.dom),c,b);return Ext.apply(a,d)}});Ext.data.Api=(function(){var a={};return{actions:{create:"create",read:"read",update:"update",destroy:"destroy"},restActions:{create:"POST",read:"GET",update:"PUT",destroy:"DELETE"},isAction:function(b){return(Ext.data.Api.actions[b])?true:false},getVerb:function(b){if(a[b]){return a[b]}for(var c in this.actions){if(this.actions[c]===b){a[b]=c;break}}return(a[b]!==undefined)?a[b]:null},isValid:function(b){var e=[];var d=this.actions;for(var c in b){if(!(c in d)){e.push(c)}}return(!e.length)?true:e},hasUniqueUrl:function(c,g){var b=(c.api[g])?c.api[g].url:null;var e=true;for(var d in c.api){if((e=(d===g)?true:(c.api[d].url!=b)?true:false)===false){break}}return e},prepare:function(b){if(!b.api){b.api={}}for(var d in this.actions){var c=this.actions[d];b.api[c]=b.api[c]||b.url||b.directFn;if(typeof(b.api[c])=="string"){b.api[c]={url:b.api[c],method:(b.restful===true)?Ext.data.Api.restActions[c]:undefined}}}},restify:function(b){b.restful=true;for(var c in this.restActions){b.api[this.actions[c]].method||(b.api[this.actions[c]].method=this.restActions[c])}b.onWrite=b.onWrite.createInterceptor(function(i,j,g,e){var d=j.reader;var h=new Ext.data.Response({action:i,raw:g});switch(g.status){case 200:return true;break;case 201:if(Ext.isEmpty(h.raw.responseText)){h.success=true}else{return true}break;case 204:h.success=true;h.data=null;break;default:return true;break}if(h.success===true){this.fireEvent("write",this,i,h.data,h,e,j.request.arg)}else{this.fireEvent("exception",this,"remote",i,j,h,e)}j.request.callback.call(j.request.scope,h.data,h,h.success);return false},b)}}})();Ext.data.Response=function(b,a){Ext.apply(this,b,{raw:a})};Ext.data.Response.prototype={message:null,success:false,status:null,root:null,raw:null,getMessage:function(){return this.message},getSuccess:function(){return this.success},getStatus:function(){return this.status},getRoot:function(){return this.root},getRawResponse:function(){return this.raw}};Ext.data.Api.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.Api"});Ext.apply(Ext.data.Api.Error.prototype,{lang:{"action-url-undefined":"No fallback url defined for this action. When defining a DataProxy api, please be sure to define an url for each CRUD action in Ext.data.Api.actions or define a default url in addition to your api-configuration.",invalid:"received an invalid API-configuration. Please ensure your proxy API-configuration contains only the actions defined in Ext.data.Api.actions","invalid-url":"Invalid url. Please review your proxy configuration.",execute:'Attempted to execute an unknown action. Valid API actions are defined in Ext.data.Api.actions"'}});Ext.data.SortTypes={none:function(a){return a},stripTagsRE:/<\/?[^>]+>/gi,asText:function(a){return String(a).replace(this.stripTagsRE,"")},asUCText:function(a){return String(a).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(a){return String(a).toUpperCase()},asDate:function(a){if(!a){return 0}if(Ext.isDate(a)){return a.getTime()}return Date.parse(String(a))},asFloat:function(a){var b=parseFloat(String(a).replace(/,/g,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}};Ext.data.Record=function(a,b){this.id=(b||b===0)?b:Ext.data.Record.id(this);this.data=a||{}};Ext.data.Record.create=function(e){var c=Ext.extend(Ext.data.Record,{});var d=c.prototype;d.fields=new Ext.util.MixedCollection(false,function(g){return g.name});for(var b=0,a=e.length;b<a;b++){d.fields.add(new Ext.data.Field(e[b]))}c.getField=function(g){return d.fields.get(g)};return c};Ext.data.Record.PREFIX="ext-record";Ext.data.Record.AUTO_ID=1;Ext.data.Record.EDIT="edit";Ext.data.Record.REJECT="reject";Ext.data.Record.COMMIT="commit";Ext.data.Record.id=function(a){a.phantom=true;return[Ext.data.Record.PREFIX,"-",Ext.data.Record.AUTO_ID++].join("")};Ext.data.Record.prototype={dirty:false,editing:false,error:null,modified:null,phantom:false,join:function(a){this.store=a},set:function(a,c){var b=Ext.isPrimitive(c)?String:Ext.encode;if(b(this.data[a])==b(c)){return}this.dirty=true;if(!this.modified){this.modified={}}if(this.modified[a]===undefined){this.modified[a]=this.data[a]}this.data[a]=c;if(!this.editing){this.afterEdit()}},afterEdit:function(){if(this.store!=undefined&&typeof this.store.afterEdit=="function"){this.store.afterEdit(this)}},afterReject:function(){if(this.store){this.store.afterReject(this)}},afterCommit:function(){if(this.store){this.store.afterCommit(this)}},get:function(a){return this.data[a]},beginEdit:function(){this.editing=true;this.modified=this.modified||{}},cancelEdit:function(){this.editing=false;delete this.modified},endEdit:function(){this.editing=false;if(this.dirty){this.afterEdit()}},reject:function(b){var a=this.modified;for(var c in a){if(typeof a[c]!="function"){this.data[c]=a[c]}}this.dirty=false;delete this.modified;this.editing=false;if(b!==true){this.afterReject()}},commit:function(a){this.dirty=false;delete this.modified;this.editing=false;if(a!==true){this.afterCommit()}},getChanges:function(){var a=this.modified,b={};for(var c in a){if(a.hasOwnProperty(c)){b[c]=this.data[c]}}return b},hasError:function(){return this.error!==null},clearError:function(){this.error=null},copy:function(a){return new this.constructor(Ext.apply({},this.data),a||this.id)},isModified:function(a){return !!(this.modified&&this.modified.hasOwnProperty(a))},isValid:function(){return this.fields.find(function(a){return(a.allowBlank===false&&Ext.isEmpty(this.data[a.name]))?true:false},this)?false:true},markDirty:function(){this.dirty=true;if(!this.modified){this.modified={}}this.fields.each(function(a){this.modified[a.name]=this.data[a.name]},this)}};Ext.StoreMgr=Ext.apply(new Ext.util.MixedCollection(),{register:function(){for(var a=0,b;(b=arguments[a]);a++){this.add(b)}},unregister:function(){for(var a=0,b;(b=arguments[a]);a++){this.remove(this.lookup(b))}},lookup:function(e){if(Ext.isArray(e)){var b=["field1"],d=!Ext.isArray(e[0]);if(!d){for(var c=2,a=e[0].length;c<=a;++c){b.push("field"+c)}}return new Ext.data.ArrayStore({fields:b,data:e,expandData:d,autoDestroy:true,autoCreated:true})}return Ext.isObject(e)?(e.events?e:Ext.create(e,"store")):this.get(e)},getKey:function(a){return a.storeId}});Ext.data.Store=Ext.extend(Ext.util.Observable,{writer:undefined,remoteSort:false,autoDestroy:false,pruneModifiedRecords:false,lastOptions:null,autoSave:true,batch:true,restful:false,paramNames:undefined,defaultParamNames:{start:"start",limit:"limit",sort:"sort",dir:"dir"},isDestroyed:false,hasMultiSort:false,batchKey:"_ext_batch_",constructor:function(a){this.data=new Ext.util.MixedCollection(false);this.data.getKey=function(b){return b.id};this.removed=[];if(a&&a.data){this.inlineData=a.data;delete a.data}Ext.apply(this,a);this.baseParams=Ext.isObject(this.baseParams)?this.baseParams:{};this.paramNames=Ext.applyIf(this.paramNames||{},this.defaultParamNames);if((this.url||this.api)&&!this.proxy){this.proxy=new Ext.data.HttpProxy({url:this.url,api:this.api})}if(this.restful===true&&this.proxy){this.batch=false;Ext.data.Api.restify(this.proxy)}if(this.reader){if(!this.recordType){this.recordType=this.reader.recordType}if(this.reader.onMetaChange){this.reader.onMetaChange=this.reader.onMetaChange.createSequence(this.onMetaChange,this)}if(this.writer){if(this.writer instanceof (Ext.data.DataWriter)===false){this.writer=this.buildWriter(this.writer)}this.writer.meta=this.reader.meta;this.pruneModifiedRecords=true}}if(this.recordType){this.fields=this.recordType.prototype.fields}this.modified=[];this.addEvents("datachanged","metachange","add","remove","update","clear","exception","beforeload","load","loadexception","beforewrite","write","beforesave","save");if(this.proxy){this.relayEvents(this.proxy,["loadexception","exception"])}if(this.writer){this.on({scope:this,add:this.createRecords,remove:this.destroyRecord,update:this.updateRecord,clear:this.onClear})}this.sortToggle={};if(this.sortField){this.setDefaultSort(this.sortField,this.sortDir)}else{if(this.sortInfo){this.setDefaultSort(this.sortInfo.field,this.sortInfo.direction)}}Ext.data.Store.superclass.constructor.call(this);if(this.id){this.storeId=this.id;delete this.id}if(this.storeId){Ext.StoreMgr.register(this)}if(this.inlineData){this.loadData(this.inlineData);delete this.inlineData}else{if(this.autoLoad){this.load.defer(10,this,[typeof this.autoLoad=="object"?this.autoLoad:undefined])}}this.batchCounter=0;this.batches={}},buildWriter:function(b){var a=undefined,c=(b.format||"json").toLowerCase();switch(c){case"json":a=Ext.data.JsonWriter;break;case"xml":a=Ext.data.XmlWriter;break;default:a=Ext.data.JsonWriter}return new a(b)},destroy:function(){if(!this.isDestroyed){if(this.storeId){Ext.StoreMgr.unregister(this)}this.clearData();this.data=null;Ext.destroy(this.proxy);this.reader=this.writer=null;this.purgeListeners();this.isDestroyed=true}},add:function(c){var e,a,b,d;c=[].concat(c);if(c.length<1){return}for(e=0,a=c.length;e<a;e++){b=c[e];b.join(this);if(b.dirty||b.phantom){this.modified.push(b)}}d=this.data.length;this.data.addAll(c);if(this.snapshot){this.snapshot.addAll(c)}this.fireEvent("add",this,c,d)},addSorted:function(a){var b=this.findInsertIndex(a);this.insert(b,a)},doUpdate:function(a){var b=a.id;this.getById(b).join(null);this.data.replace(b,a);if(this.snapshot){this.snapshot.replace(b,a)}a.join(this);this.fireEvent("update",this,a,Ext.data.Record.COMMIT)},remove:function(a){if(Ext.isArray(a)){Ext.each(a,function(c){this.remove(c)},this);return}var b=this.data.indexOf(a);if(b>-1){a.join(null);this.data.removeAt(b)}if(this.pruneModifiedRecords){this.modified.remove(a)}if(this.snapshot){this.snapshot.remove(a)}if(b>-1){this.fireEvent("remove",this,a,b)}},removeAt:function(a){this.remove(this.getAt(a))},removeAll:function(b){var a=[];this.each(function(c){a.push(c)});this.clearData();if(this.snapshot){this.snapshot.clear()}if(this.pruneModifiedRecords){this.modified=[]}if(b!==true){this.fireEvent("clear",this,a)}},onClear:function(b,a){Ext.each(a,function(d,c){this.destroyRecord(this,d,c)},this)},insert:function(d,c){var e,a,b;c=[].concat(c);for(e=0,a=c.length;e<a;e++){b=c[e];this.data.insert(d+e,b);b.join(this);if(b.dirty||b.phantom){this.modified.push(b)}}if(this.snapshot){this.snapshot.addAll(c)}this.fireEvent("add",this,c,d)},indexOf:function(a){return this.data.indexOf(a)},indexOfId:function(a){return this.data.indexOfKey(a)},getById:function(a){return(this.snapshot||this.data).key(a)},getAt:function(a){return this.data.itemAt(a)},getRange:function(b,a){return this.data.getRange(b,a)},storeOptions:function(a){a=Ext.apply({},a);delete a.callback;delete a.scope;this.lastOptions=a},clearData:function(){this.data.each(function(a){a.join(null)});this.data.clear()},load:function(b){b=Ext.apply({},b);this.storeOptions(b);if(this.sortInfo&&this.remoteSort){var a=this.paramNames;b.params=Ext.apply({},b.params);b.params[a.sort]=this.sortInfo.field;b.params[a.dir]=this.sortInfo.direction}try{return this.execute("read",null,b)}catch(c){this.handleException(c);return false}},updateRecord:function(b,a,c){if(c==Ext.data.Record.EDIT&&this.autoSave===true&&(!a.phantom||(a.phantom&&a.isValid()))){this.save()}},createRecords:function(c,b,e){var d=this.modified,h=b.length,a,g;for(g=0;g<h;g++){a=b[g];if(a.phantom&&a.isValid()){a.markDirty();if(d.indexOf(a)==-1){d.push(a)}}}if(this.autoSave===true){this.save()}},destroyRecord:function(b,a,c){if(this.modified.indexOf(a)!=-1){this.modified.remove(a)}if(!a.phantom){this.removed.push(a);a.lastIndex=c;if(this.autoSave===true){this.save()}}},execute:function(e,a,c,b){if(!Ext.data.Api.isAction(e)){throw new Ext.data.Api.Error("execute",e)}c=Ext.applyIf(c||{},{params:{}});if(b!==undefined){this.addToBatch(b)}var d=true;if(e==="read"){d=this.fireEvent("beforeload",this,c);Ext.applyIf(c.params,this.baseParams)}else{if(this.writer.listful===true&&this.restful!==true){a=(Ext.isArray(a))?a:[a]}else{if(Ext.isArray(a)&&a.length==1){a=a.shift()}}if((d=this.fireEvent("beforewrite",this,e,a,c))!==false){this.writer.apply(c.params,this.baseParams,e,a)}}if(d!==false){if(this.writer&&this.proxy.url&&!this.proxy.restful&&!Ext.data.Api.hasUniqueUrl(this.proxy,e)){c.params.xaction=e}this.proxy.request(Ext.data.Api.actions[e],a,c.params,this.reader,this.createCallback(e,a,b),this,c)}return d},save:function(){if(!this.writer){throw new Ext.data.Store.Error("writer-undefined")}var h=[],j,k,e,c={},d;if(this.removed.length){h.push(["destroy",this.removed])}var b=[].concat(this.getModifiedRecords());if(b.length){var g=[];for(d=b.length-1;d>=0;d--){if(b[d].phantom===true){var a=b.splice(d,1).shift();if(a.isValid()){g.push(a)}}else{if(!b[d].isValid()){b.splice(d,1)}}}if(g.length){h.push(["create",g])}if(b.length){h.push(["update",b])}}j=h.length;if(j){e=++this.batchCounter;for(d=0;d<j;++d){k=h[d];c[k[0]]=k[1]}if(this.fireEvent("beforesave",this,c)!==false){for(d=0;d<j;++d){k=h[d];this.doTransaction(k[0],k[1],e)}return e}}return -1},doTransaction:function(e,b,c){function g(h){try{this.execute(e,h,undefined,c)}catch(i){this.handleException(i)}}if(this.batch===false){for(var d=0,a=b.length;d<a;d++){g.call(this,b[d])}}else{g.call(this,b)}},addToBatch:function(c){var a=this.batches,d=this.batchKey+c,e=a[d];if(!e){a[d]=e={id:c,count:0,data:{}}}++e.count},removeFromBatch:function(d,h,g){var c=this.batches,e=this.batchKey+d,i=c[e],a;if(i){a=i.data[h]||[];i.data[h]=a.concat(g);if(i.count===1){g=i.data;delete c[e];this.fireEvent("save",this,d,g)}else{--i.count}}},createCallback:function(c,a,b){var d=Ext.data.Api.actions;return(c=="read")?this.loadRecords:function(g,e,h){this["on"+Ext.util.Format.capitalize(c)+"Records"](h,a,[].concat(g));if(h===true){this.fireEvent("write",this,c,g,e,a)}this.removeFromBatch(b,c,g)}},clearModified:function(a){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){this.modified.splice(this.modified.indexOf(a[b]),1)}}else{this.modified.splice(this.modified.indexOf(a),1)}},reMap:function(b){if(Ext.isArray(b)){for(var d=0,a=b.length;d<a;d++){this.reMap(b[d])}}else{delete this.data.map[b._phid];this.data.map[b.id]=b;var c=this.data.keys.indexOf(b._phid);this.data.keys.splice(c,1,b.id);delete b._phid}},onCreateRecords:function(d,a,b){if(d===true){try{this.reader.realize(a,b)}catch(c){this.handleException(c);if(Ext.isArray(a)){this.onCreateRecords(d,a,b)}}}},onUpdateRecords:function(d,a,b){if(d===true){try{this.reader.update(a,b)}catch(c){this.handleException(c);if(Ext.isArray(a)){this.onUpdateRecords(d,a,b)}}}},onDestroyRecords:function(e,b,d){b=(b instanceof Ext.data.Record)?[b]:[].concat(b);for(var c=0,a=b.length;c<a;c++){this.removed.splice(this.removed.indexOf(b[c]),1)}if(e===false){for(c=b.length-1;c>=0;c--){this.insert(b[c].lastIndex,b[c])}}},handleException:function(a){Ext.handleError(a)},reload:function(a){this.load(Ext.applyIf(a||{},this.lastOptions))},loadRecords:function(b,l,h){var e,g;if(this.isDestroyed===true){return}if(!b||h===false){if(h!==false){this.fireEvent("load",this,[],l)}if(l.callback){l.callback.call(l.scope||this,[],l,false,b)}return}var a=b.records,j=b.totalRecords||a.length;if(!l||l.add!==true){if(this.pruneModifiedRecords){this.modified=[]}for(e=0,g=a.length;e<g;e++){a[e].join(this)}if(this.snapshot){this.data=this.snapshot;delete this.snapshot}this.clearData();this.data.addAll(a);this.totalLength=j;this.applySort();this.fireEvent("datachanged",this)}else{var k=[],d,c=0;for(e=0,g=a.length;e<g;++e){d=a[e];if(this.indexOfId(d.id)>-1){this.doUpdate(d)}else{k.push(d);++c}}this.totalLength=Math.max(j,this.data.length+c);this.add(k)}this.fireEvent("load",this,a,l);if(l.callback){l.callback.call(l.scope||this,a,l,true)}},loadData:function(c,a){var b=this.reader.readRecords(c);this.loadRecords(b,{add:a},true)},getCount:function(){return this.data.length||0},getTotalCount:function(){return this.totalLength||0},getSortState:function(){return this.sortInfo},applySort:function(){if((this.sortInfo||this.multiSortInfo)&&!this.remoteSort){this.sortData()}},sortData:function(){var a=this.hasMultiSort?this.multiSortInfo:this.sortInfo,k=a.direction||"ASC",h=a.sorters,c=[];if(!this.hasMultiSort){h=[{direction:k,field:a.field}]}for(var d=0,b=h.length;d<b;d++){c.push(this.createSortFunction(h[d].field,h[d].direction))}if(c.length==0){return}var g=k.toUpperCase()=="DESC"?-1:1;var e=function(n,m){var l=c[0].call(this,n,m);if(c.length>1){for(var p=1,o=c.length;p<o;p++){l=l||c[p].call(this,n,m)}}return g*l};this.data.sort(k,e);if(this.snapshot&&this.snapshot!=this.data){this.snapshot.sort(k,e)}},createSortFunction:function(c,b){b=b||"ASC";var a=b.toUpperCase()=="DESC"?-1:1;var d=this.fields.get(c).sortType;return function(g,e){var i=d(g.data[c]),h=d(e.data[c]);return a*(i>h?1:(i<h?-1:0))}},setDefaultSort:function(b,a){a=a?a.toUpperCase():"ASC";this.sortInfo={field:b,direction:a};this.sortToggle[b]=a},sort:function(b,a){if(Ext.isArray(arguments[0])){return this.multiSort.call(this,b,a)}else{return this.singleSort(b,a)}},singleSort:function(g,c){var e=this.fields.get(g);if(!e){return false}var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;if(!c){if(a&&a.field==b){c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")}else{c=e.sortDir}}this.sortToggle[b]=c;this.sortInfo={field:b,direction:c};this.hasMultiSort=false;if(this.remoteSort){if(!this.load(this.lastOptions)){if(d){this.sortToggle[b]=d}if(a){this.sortInfo=a}}}else{this.applySort();this.fireEvent("datachanged",this)}return true},multiSort:function(b,a){this.hasMultiSort=true;a=a||"ASC";if(this.multiSortInfo&&a==this.multiSortInfo.direction){a=a.toggle("ASC","DESC")}this.multiSortInfo={sorters:b,direction:a};if(this.remoteSort){this.singleSort(b[0].field,b[0].direction)}else{this.applySort();this.fireEvent("datachanged",this)}},each:function(b,a){this.data.each(b,a)},getModifiedRecords:function(){return this.modified},sum:function(e,g,a){var c=this.data.items,b=0;g=g||0;a=(a||a===0)?a:c.length-1;for(var d=g;d<=a;d++){b+=(c[d].data[e]||0)}return b},createFilterFn:function(d,c,e,a,b){if(Ext.isEmpty(c,false)){return false}c=this.data.createValueMatcher(c,e,a,b);return function(g){return c.test(g.data[d])}},createMultipleFilterFn:function(a){return function(b){var k=true;for(var d=0,c=a.length;d<c;d++){var h=a[d],g=h.fn,e=h.scope;k=k&&g.call(e,b)}return k}},filter:function(n,m,h,k,e){var l;if(Ext.isObject(n)){n=[n]}if(Ext.isArray(n)){var b=[];for(var g=0,d=n.length;g<d;g++){var a=n[g],c=a.fn,o=a.scope||this;if(!Ext.isFunction(c)){c=this.createFilterFn(a.property,a.value,a.anyMatch,a.caseSensitive,a.exactMatch)}b.push({fn:c,scope:o})}l=this.createMultipleFilterFn(b)}else{l=this.createFilterFn(n,m,h,k,e)}return l?this.filterBy(l):this.clearFilter()},filterBy:function(b,a){this.snapshot=this.snapshot||this.data;this.data=this.queryBy(b,a||this);this.fireEvent("datachanged",this)},clearFilter:function(a){if(this.isFiltered()){this.data=this.snapshot;delete this.snapshot;if(a!==true){this.fireEvent("datachanged",this)}}},isFiltered:function(){return !!this.snapshot&&this.snapshot!=this.data},query:function(d,c,e,a){var b=this.createFilterFn(d,c,e,a);return b?this.queryBy(b):this.data.clone()},queryBy:function(b,a){var c=this.snapshot||this.data;return c.filterBy(b,a||this)},find:function(d,c,g,e,a){var b=this.createFilterFn(d,c,e,a);return b?this.data.findIndexBy(b,null,g):-1},findExact:function(b,a,c){return this.data.findIndexBy(function(d){return d.get(b)===a},this,c)},findBy:function(b,a,c){return this.data.findIndexBy(b,a,c)},collect:function(j,k,b){var h=(b===true&&this.snapshot)?this.snapshot.items:this.data.items;var m,n,a=[],c={};for(var e=0,g=h.length;e<g;e++){m=h[e].data[j];n=String(m);if((k||!Ext.isEmpty(m))&&!c[n]){c[n]=true;a[a.length]=m}}return a},afterEdit:function(a){if(this.modified.indexOf(a)==-1){this.modified.push(a)}this.fireEvent("update",this,a,Ext.data.Record.EDIT)},afterReject:function(a){this.modified.remove(a);this.fireEvent("update",this,a,Ext.data.Record.REJECT)},afterCommit:function(a){this.modified.remove(a);this.fireEvent("update",this,a,Ext.data.Record.COMMIT)},commitChanges:function(){var a=this.modified.slice(0),c=a.length,b;for(b=0;b<c;b++){a[b].commit()}this.modified=[];this.removed=[]},rejectChanges:function(){var a=this.modified.slice(0),e=this.removed.slice(0).reverse(),c=a.length,d=e.length,b;for(b=0;b<c;b++){a[b].reject()}for(b=0;b<d;b++){this.insert(e[b].lastIndex||0,e[b]);e[b].reject()}this.modified=[];this.removed=[]},onMetaChange:function(a){this.recordType=this.reader.recordType;this.fields=this.recordType.prototype.fields;delete this.snapshot;if(this.reader.meta.sortInfo){this.sortInfo=this.reader.meta.sortInfo}else{if(this.sortInfo&&!this.fields.get(this.sortInfo.field)){delete this.sortInfo}}if(this.writer){this.writer.meta=this.reader.meta}this.modified=[];this.fireEvent("metachange",this,this.reader.meta)},findInsertIndex:function(a){this.suspendEvents();var c=this.data.clone();this.data.add(a);this.applySort();var b=this.data.indexOf(a);this.data=c;this.resumeEvents();return b},setBaseParam:function(a,b){this.baseParams=this.baseParams||{};this.baseParams[a]=b}});Ext.reg("store",Ext.data.Store);Ext.data.Store.Error=Ext.extend(Ext.Error,{name:"Ext.data.Store"});Ext.apply(Ext.data.Store.Error.prototype,{lang:{"writer-undefined":"Attempted to execute a write-action without a DataWriter installed."}});Ext.data.Field=Ext.extend(Object,{constructor:function(b){if(Ext.isString(b)){b={name:b}}Ext.apply(this,b);var d=Ext.data.Types,a=this.sortType,c;if(this.type){if(Ext.isString(this.type)){this.type=Ext.data.Types[this.type.toUpperCase()]||d.AUTO}}else{this.type=d.AUTO}if(Ext.isString(a)){this.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){this.sortType=this.type.sortType}}if(!this.convert){this.convert=this.type.convert}},dateFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true});Ext.data.DataReader=function(a,b){this.meta=a;this.recordType=Ext.isArray(b)?Ext.data.Record.create(b):b;if(this.recordType){this.buildExtractors()}};Ext.data.DataReader.prototype={getTotal:Ext.emptyFn,getRoot:Ext.emptyFn,getMessage:Ext.emptyFn,getSuccess:Ext.emptyFn,getId:Ext.emptyFn,buildExtractors:Ext.emptyFn,extractValues:Ext.emptyFn,realize:function(a,c){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){if(Ext.isArray(c)){this.realize(a.splice(b,1).shift(),c.splice(b,1).shift())}else{this.realize(a.splice(b,1).shift(),c)}}}else{if(Ext.isArray(c)&&c.length==1){c=c.shift()}if(!this.isData(c)){throw new Ext.data.DataReader.Error("realize",a)}a.phantom=false;a._phid=a.id;a.id=this.getId(c);a.data=c;a.commit();a.store.reMap(a)}},update:function(a,c){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){if(Ext.isArray(c)){this.update(a.splice(b,1).shift(),c.splice(b,1).shift())}else{this.update(a.splice(b,1).shift(),c)}}}else{if(Ext.isArray(c)&&c.length==1){c=c.shift()}if(this.isData(c)){a.data=Ext.apply(a.data,c)}a.commit()}},extractData:function(k,a){var j=(this instanceof Ext.data.JsonReader)?"json":"node";var c=[];if(this.isData(k)&&!(this instanceof Ext.data.XmlReader)){k=[k]}var h=this.recordType.prototype.fields,o=h.items,m=h.length,c=[];if(a===true){var l=this.recordType;for(var e=0;e<k.length;e++){var b=k[e];var g=new l(this.extractValues(b,o,m),this.getId(b));g[j]=b;c.push(g)}}else{for(var e=0;e<k.length;e++){var d=this.extractValues(k[e],o,m);d[this.meta.idProperty]=this.getId(k[e]);c.push(d)}}return c},isData:function(a){return(a&&Ext.isObject(a)&&!Ext.isEmpty(this.getId(a)))?true:false},onMetaChange:function(a){delete this.ef;this.meta=a;this.recordType=Ext.data.Record.create(a.fields);this.buildExtractors()}};Ext.data.DataReader.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.DataReader"});Ext.apply(Ext.data.DataReader.Error.prototype,{lang:{update:"#update received invalid data from server. Please see docs for DataReader#update and review your DataReader configuration.",realize:"#realize was called with invalid remote-data. Please see the docs for DataReader#realize and review your DataReader configuration.","invalid-response":"#readResponse received an invalid response from the server."}});Ext.data.DataWriter=function(a){Ext.apply(this,a)};Ext.data.DataWriter.prototype={writeAllFields:false,listful:false,apply:function(e,g,d,a){var c=[],b=d+"Record";if(Ext.isArray(a)){Ext.each(a,function(h){c.push(this[b](h))},this)}else{if(a instanceof Ext.data.Record){c=this[b](a)}}this.render(e,g,c)},render:Ext.emptyFn,updateRecord:Ext.emptyFn,createRecord:Ext.emptyFn,destroyRecord:Ext.emptyFn,toHash:function(g,c){var e=g.fields.map,d={},b=(this.writeAllFields===false&&g.phantom===false)?g.getChanges():g.data,a;Ext.iterate(b,function(i,h){if((a=e[i])){d[a.mapping?a.mapping:a.name]=h}});if(g.phantom){if(g.fields.containsKey(this.meta.idProperty)&&Ext.isEmpty(g.data[this.meta.idProperty])){delete d[this.meta.idProperty]}}else{d[this.meta.idProperty]=g.id}return d},toArray:function(b){var a=[];Ext.iterate(b,function(d,c){a.push({name:d,value:c})},this);return a}};Ext.data.DataProxy=function(a){a=a||{};this.api=a.api;this.url=a.url;this.restful=a.restful;this.listeners=a.listeners;this.prettyUrls=a.prettyUrls;this.addEvents("exception","beforeload","load","loadexception","beforewrite","write");Ext.data.DataProxy.superclass.constructor.call(this);try{Ext.data.Api.prepare(this)}catch(b){if(b instanceof Ext.data.Api.Error){b.toConsole()}}Ext.data.DataProxy.relayEvents(this,["beforewrite","write","exception"])};Ext.extend(Ext.data.DataProxy,Ext.util.Observable,{restful:false,setApi:function(){if(arguments.length==1){var a=Ext.data.Api.isValid(arguments[0]);if(a===true){this.api=arguments[0]}else{throw new Ext.data.Api.Error("invalid",a)}}else{if(arguments.length==2){if(!Ext.data.Api.isAction(arguments[0])){throw new Ext.data.Api.Error("invalid",arguments[0])}this.api[arguments[0]]=arguments[1]}}Ext.data.Api.prepare(this)},isApiAction:function(a){return(this.api[a])?true:false},request:function(e,b,g,a,h,d,c){if(!this.api[e]&&!this.load){throw new Ext.data.DataProxy.Error("action-undefined",e)}g=g||{};if((e===Ext.data.Api.actions.read)?this.fireEvent("beforeload",this,g):this.fireEvent("beforewrite",this,e,b,g)!==false){this.doRequest.apply(this,arguments)}else{h.call(d||this,null,c,false)}},load:null,doRequest:function(e,b,g,a,h,d,c){this.load(g,a,h,d,c)},onRead:Ext.emptyFn,onWrite:Ext.emptyFn,buildUrl:function(d,b){b=b||null;var c=(this.conn&&this.conn.url)?this.conn.url:(this.api[d])?this.api[d].url:this.url;if(!c){throw new Ext.data.Api.Error("invalid-url",d)}var e=null;var a=c.match(/(.*)(\.json|\.xml|\.html)$/);if(a){e=a[2];c=a[1]}if((this.restful===true||this.prettyUrls===true)&&b instanceof Ext.data.Record&&!b.phantom){c+="/"+b.id}return(e===null)?c:c+e},destroy:function(){this.purgeListeners()}});Ext.apply(Ext.data.DataProxy,Ext.util.Observable.prototype);Ext.util.Observable.call(Ext.data.DataProxy);Ext.data.DataProxy.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.DataProxy"});Ext.apply(Ext.data.DataProxy.Error.prototype,{lang:{"action-undefined":"DataProxy attempted to execute an API-action but found an undefined url / function. Please review your Proxy url/api-configuration.","api-invalid":"Recieved an invalid API-configuration. Please ensure your proxy API-configuration contains only the actions from Ext.data.Api.actions."}});Ext.data.Request=function(a){Ext.apply(this,a)};Ext.data.Request.prototype={action:undefined,rs:undefined,params:undefined,callback:Ext.emptyFn,scope:undefined,reader:undefined};Ext.data.Response=function(a){Ext.apply(this,a)};Ext.data.Response.prototype={action:undefined,success:undefined,message:undefined,data:undefined,raw:undefined,records:undefined};Ext.data.ScriptTagProxy=function(a){Ext.apply(this,a);Ext.data.ScriptTagProxy.superclass.constructor.call(this,a);this.head=document.getElementsByTagName("head")[0]};Ext.data.ScriptTagProxy.TRANS_ID=1000;Ext.extend(Ext.data.ScriptTagProxy,Ext.data.DataProxy,{timeout:30000,callbackParam:"callback",nocache:true,doRequest:function(e,g,d,h,j,k,l){var c=Ext.urlEncode(Ext.apply(d,this.extraParams));var b=this.buildUrl(e,g);if(!b){throw new Ext.data.Api.Error("invalid-url",b)}b=Ext.urlAppend(b,c);if(this.nocache){b=Ext.urlAppend(b,"_dc="+(new Date().getTime()))}var a=++Ext.data.ScriptTagProxy.TRANS_ID;var m={id:a,action:e,cb:"stcCallback"+a,scriptId:"stcScript"+a,params:d,arg:l,url:b,callback:j,scope:k,reader:h};window[m.cb]=this.createCallback(e,g,m);b+=String.format("&{0}={1}",this.callbackParam,m.cb);if(this.autoAbort!==false){this.abort()}m.timeoutId=this.handleFailure.defer(this.timeout,this,[m]);var i=document.createElement("script");i.setAttribute("src",b);i.setAttribute("type","text/javascript");i.setAttribute("id",m.scriptId);this.head.appendChild(i);this.trans=m},createCallback:function(d,b,c){var a=this;return function(e){a.trans=false;a.destroyTrans(c,true);if(d===Ext.data.Api.actions.read){a.onRead.call(a,d,c,e)}else{a.onWrite.call(a,d,c,e,b)}}},onRead:function(d,c,b){var a;try{a=c.reader.readRecords(b)}catch(g){this.fireEvent("loadexception",this,c,b,g);this.fireEvent("exception",this,"response",d,c,b,g);c.callback.call(c.scope||window,null,c.arg,false);return}if(a.success===false){this.fireEvent("loadexception",this,c,b);this.fireEvent("exception",this,"remote",d,c,b,null)}else{this.fireEvent("load",this,b,c.arg)}c.callback.call(c.scope||window,a,c.arg,a.success)},onWrite:function(h,g,c,b){var a=g.reader;try{var d=a.readResponse(h,c)}catch(i){this.fireEvent("exception",this,"response",h,g,d,i);g.callback.call(g.scope||window,null,d,false);return}if(!d.success===true){this.fireEvent("exception",this,"remote",h,g,d,b);g.callback.call(g.scope||window,null,d,false);return}this.fireEvent("write",this,h,d.data,d,b,g.arg);g.callback.call(g.scope||window,d.data,d,true)},isLoading:function(){return this.trans?true:false},abort:function(){if(this.isLoading()){this.destroyTrans(this.trans)}},destroyTrans:function(b,a){this.head.removeChild(document.getElementById(b.scriptId));clearTimeout(b.timeoutId);if(a){window[b.cb]=undefined;try{delete window[b.cb]}catch(c){}}else{window[b.cb]=function(){window[b.cb]=undefined;try{delete window[b.cb]}catch(d){}}}},handleFailure:function(a){this.trans=false;this.destroyTrans(a,false);if(a.action===Ext.data.Api.actions.read){this.fireEvent("loadexception",this,null,a.arg)}this.fireEvent("exception",this,"response",a.action,{response:null,options:a.arg});a.callback.call(a.scope||window,null,a.arg,false)},destroy:function(){this.abort();Ext.data.ScriptTagProxy.superclass.destroy.call(this)}});Ext.data.HttpProxy=function(a){Ext.data.HttpProxy.superclass.constructor.call(this,a);this.conn=a;this.conn.url=null;this.useAjax=!a||!a.events;var c=Ext.data.Api.actions;this.activeRequest={};for(var b in c){this.activeRequest[c[b]]=undefined}};Ext.extend(Ext.data.HttpProxy,Ext.data.DataProxy,{getConnection:function(){return this.useAjax?Ext.Ajax:this.conn},setUrl:function(a,b){this.conn.url=a;if(b===true){this.url=a;this.api=null;Ext.data.Api.prepare(this)}},doRequest:function(g,d,i,c,b,e,a){var h={method:(this.api[g])?this.api[g]["method"]:undefined,request:{callback:b,scope:e,arg:a},reader:c,callback:this.createCallback(g,d),scope:this};if(i.jsonData){h.jsonData=i.jsonData}else{if(i.xmlData){h.xmlData=i.xmlData}else{h.params=i||{}}}this.conn.url=this.buildUrl(g,d);if(this.useAjax){Ext.applyIf(h,this.conn);if(g==Ext.data.Api.actions.read&&this.activeRequest[g]){Ext.Ajax.abort(this.activeRequest[g])}this.activeRequest[g]=Ext.Ajax.request(h)}else{this.conn.request(h)}this.conn.url=null},createCallback:function(b,a){return function(e,d,c){this.activeRequest[b]=undefined;if(!d){if(b===Ext.data.Api.actions.read){this.fireEvent("loadexception",this,e,c)}this.fireEvent("exception",this,"response",b,e,c);e.request.callback.call(e.request.scope,null,e.request.arg,false);return}if(b===Ext.data.Api.actions.read){this.onRead(b,e,c)}else{this.onWrite(b,e,c,a)}}},onRead:function(d,h,b){var a;try{a=h.reader.read(b)}catch(g){this.fireEvent("loadexception",this,h,b,g);this.fireEvent("exception",this,"response",d,h,b,g);h.request.callback.call(h.request.scope,null,h.request.arg,false);return}if(a.success===false){this.fireEvent("loadexception",this,h,b);var c=h.reader.readResponse(d,b);this.fireEvent("exception",this,"remote",d,h,c,null)}else{this.fireEvent("load",this,h,h.request.arg)}h.request.callback.call(h.request.scope,a,h.request.arg,a.success)},onWrite:function(g,i,c,b){var a=i.reader;var d;try{d=a.readResponse(g,c)}catch(h){this.fireEvent("exception",this,"response",g,i,c,h);i.request.callback.call(i.request.scope,null,i.request.arg,false);return}if(d.success===true){this.fireEvent("write",this,g,d.data,d,b,i.request.arg)}else{this.fireEvent("exception",this,"remote",g,i,d,b)}i.request.callback.call(i.request.scope,d.data,d,d.success)},destroy:function(){if(!this.useAjax){this.conn.abort()}else{if(this.activeRequest){var b=Ext.data.Api.actions;for(var a in b){if(this.activeRequest[b[a]]){Ext.Ajax.abort(this.activeRequest[b[a]])}}}}Ext.data.HttpProxy.superclass.destroy.call(this)}});Ext.data.MemoryProxy=function(b){var a={};a[Ext.data.Api.actions.read]=true;Ext.data.MemoryProxy.superclass.constructor.call(this,{api:a});this.data=b};Ext.extend(Ext.data.MemoryProxy,Ext.data.DataProxy,{doRequest:function(b,c,a,d,h,i,j){a=a||{};var k;try{k=d.readRecords(this.data)}catch(g){this.fireEvent("loadexception",this,null,j,g);this.fireEvent("exception",this,"response",b,j,null,g);h.call(i,null,j,false);return}h.call(i,k,j,true)}});Ext.data.Types=new function(){var a=Ext.data.SortTypes;Ext.apply(this,{stripRe:/[\$,%]/g,AUTO:{convert:function(b){return b},sortType:a.none,type:"auto"},STRING:{convert:function(b){return(b===undefined||b===null)?"":String(b)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){return b===true||b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateFormat;if(!c){return null}if(Ext.isDate(c)){return c}if(d){if(d=="timestamp"){return new Date(c*1000)}if(d=="time"){return new Date(parseInt(c,10))}return Date.parseDate(c,d)}var b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(this,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})};Ext.data.JsonWriter=Ext.extend(Ext.data.DataWriter,{encode:true,encodeDelete:false,constructor:function(a){Ext.data.JsonWriter.superclass.constructor.call(this,a)},render:function(c,d,b){if(this.encode===true){Ext.apply(c,d);c[this.meta.root]=Ext.encode(b)}else{var a=Ext.apply({},d);a[this.meta.root]=b;c.jsonData=a}},createRecord:function(a){return this.toHash(a)},updateRecord:function(a){return this.toHash(a)},destroyRecord:function(b){if(this.encodeDelete){var a={};a[this.meta.idProperty]=b.id;return a}else{return b.id}}});Ext.data.JsonReader=function(a,b){a=a||{};Ext.applyIf(a,{idProperty:"id",successProperty:"success",totalProperty:"total"});Ext.data.JsonReader.superclass.constructor.call(this,a,b||a.fields)};Ext.extend(Ext.data.JsonReader,Ext.data.DataReader,{read:function(a){var b=a.responseText;var c=Ext.decode(b);if(!c){throw {message:"JsonReader.read: Json object not found"}}return this.readRecords(c)},readResponse:function(e,b){var h=(b.responseText!==undefined)?Ext.decode(b.responseText):b;if(!h){throw new Ext.data.JsonReader.Error("response")}var a=this.getRoot(h),g=this.getSuccess(h);if(g&&e===Ext.data.Api.actions.create){var d=Ext.isDefined(a);if(d&&Ext.isEmpty(a)){throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)}else{if(!d){throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)}}}var c=new Ext.data.Response({action:e,success:g,data:(a)?this.extractData(a,false):[],message:this.getMessage(h),raw:h});if(Ext.isEmpty(c.success)){throw new Ext.data.JsonReader.Error("successProperty-response",this.meta.successProperty)}return c},readRecords:function(a){this.jsonData=a;if(a.metaData){this.onMetaChange(a.metaData)}var m=this.meta,h=this.recordType,b=h.prototype.fields,l=b.items,i=b.length,j;var g=this.getRoot(a),e=g.length,d=e,k=true;if(m.totalProperty){j=parseInt(this.getTotal(a),10);if(!isNaN(j)){d=j}}if(m.successProperty){j=this.getSuccess(a);if(j===false||j==="false"){k=false}}return{success:k,records:this.extractData(g,true),totalRecords:d}},buildExtractors:function(){if(this.ef){return}var l=this.meta,h=this.recordType,e=h.prototype.fields,k=e.items,j=e.length;if(l.totalProperty){this.getTotal=this.createAccessor(l.totalProperty)}if(l.successProperty){this.getSuccess=this.createAccessor(l.successProperty)}if(l.messageProperty){this.getMessage=this.createAccessor(l.messageProperty)}this.getRoot=l.root?this.createAccessor(l.root):function(g){return g};if(l.id||l.idProperty){var d=this.createAccessor(l.id||l.idProperty);this.getId=function(i){var g=d(i);return(g===undefined||g==="")?null:g}}else{this.getId=function(){return null}}var c=[];for(var b=0;b<j;b++){e=k[b];var a=(e.mapping!==undefined&&e.mapping!==null)?e.mapping:e.name;c.push(this.createAccessor(a))}this.ef=c},simpleAccess:function(b,a){return b[a]},createAccessor:function(){var a=/[\[\.]/;return function(c){if(Ext.isEmpty(c)){return Ext.emptyFn}if(Ext.isFunction(c)){return c}var b=String(c).search(a);if(b>=0){return new Function("obj","return obj"+(b>0?".":"")+c)}return function(d){return d[c]}}}(),extractValues:function(h,d,a){var g,c={};for(var e=0;e<a;e++){g=d[e];var b=this.ef[e](h);c[g.name]=g.convert((b!==undefined)?b:g.defaultValue,h)}return c}});Ext.data.JsonReader.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.JsonReader"});Ext.apply(Ext.data.JsonReader.Error.prototype,{lang:{response:"An error occurred while json-decoding your server response","successProperty-response":'Could not locate your "successProperty" in your server response. Please review your JsonReader config to ensure the config-property "successProperty" matches the property in your server-response. See the JsonReader docs.',"root-undefined-config":'Your JsonReader was configured without a "root" property. Please review your JsonReader config and make sure to define the root property. See the JsonReader docs.',"idProperty-undefined":'Your JsonReader was configured without an "idProperty" Please review your JsonReader configuration and ensure the "idProperty" is set (e.g.: "id"). See the JsonReader docs.',"root-empty":'Data was expected to be returned by the server in the "root" property of the response. Please review your JsonReader configuration to ensure the "root" property matches that returned in the server-response. See JsonReader docs.'}});Ext.data.ArrayReader=Ext.extend(Ext.data.JsonReader,{readRecords:function(r){this.arrayData=r;var l=this.meta,d=l?Ext.num(l.idIndex,l.id):null,b=this.recordType,q=b.prototype.fields,z=[],e=true,g;var u=this.getRoot(r);for(var y=0,A=u.length;y<A;y++){var t=u[y],a={},p=((d||d===0)&&t[d]!==undefined&&t[d]!==""?t[d]:null);for(var x=0,m=q.length;x<m;x++){var B=q.items[x],w=B.mapping!==undefined&&B.mapping!==null?B.mapping:x;g=t[w]!==undefined?t[w]:B.defaultValue;g=B.convert(g,t);a[B.name]=g}var c=new b(a,p);c.json=t;z[z.length]=c}var h=z.length;if(l.totalProperty){g=parseInt(this.getTotal(r),10);if(!isNaN(g)){h=g}}if(l.successProperty){g=this.getSuccess(r);if(g===false||g==="false"){e=false}}return{success:e,records:z,totalRecords:h}}});Ext.data.ArrayStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.ArrayStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.ArrayReader(a)}))},loadData:function(e,b){if(this.expandData===true){var d=[];for(var c=0,a=e.length;c<a;c++){d[d.length]=[e[c]]}e=d}Ext.data.ArrayStore.superclass.loadData.call(this,e,b)}});Ext.reg("arraystore",Ext.data.ArrayStore);Ext.data.SimpleStore=Ext.data.ArrayStore;Ext.reg("simplestore",Ext.data.SimpleStore);Ext.data.JsonStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.JsonStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.JsonReader(a)}))}});Ext.reg("jsonstore",Ext.data.JsonStore);Ext.data.XmlWriter=function(a){Ext.data.XmlWriter.superclass.constructor.apply(this,arguments);this.tpl=(typeof(this.tpl)==="string")?new Ext.XTemplate(this.tpl).compile():this.tpl.compile()};Ext.extend(Ext.data.XmlWriter,Ext.data.DataWriter,{documentRoot:"xrequest",forceDocumentRoot:false,root:"records",xmlVersion:"1.0",xmlEncoding:"ISO-8859-15",tpl:'<tpl for="."><\u003fxml version="{version}" encoding="{encoding}"\u003f><tpl if="documentRoot"><{documentRoot}><tpl for="baseParams"><tpl for="."><{name}>{value}</{name}></tpl></tpl></tpl><tpl if="records.length&gt;1"><{root}></tpl><tpl for="records"><{parent.record}><tpl for="."><{name}>{value}</{name}></tpl></{parent.record}></tpl><tpl if="records.length&gt;1"></{root}></tpl><tpl if="documentRoot"></{documentRoot}></tpl></tpl>',render:function(b,c,a){c=this.toArray(c);b.xmlData=this.tpl.applyTemplate({version:this.xmlVersion,encoding:this.xmlEncoding,documentRoot:(c.length>0||this.forceDocumentRoot===true)?this.documentRoot:false,record:this.meta.record,root:this.root,baseParams:c,records:(Ext.isArray(a[0]))?a:[a]})},createRecord:function(a){return this.toArray(this.toHash(a))},updateRecord:function(a){return this.toArray(this.toHash(a))},destroyRecord:function(b){var a={};a[this.meta.idProperty]=b.id;return this.toArray(a)}});Ext.data.XmlReader=function(a,b){a=a||{};Ext.applyIf(a,{idProperty:a.idProperty||a.idPath||a.id,successProperty:a.successProperty||a.success});Ext.data.XmlReader.superclass.constructor.call(this,a,b||a.fields)};Ext.extend(Ext.data.XmlReader,Ext.data.DataReader,{read:function(a){var b=a.responseXML;if(!b){throw {message:"XmlReader.read: XML Document not available"}}return this.readRecords(b)},readRecords:function(d){this.xmlData=d;var a=d.documentElement||d,c=Ext.DomQuery,g=0,e=true;if(this.meta.totalProperty){g=this.getTotal(a,0)}if(this.meta.successProperty){e=this.getSuccess(a)}var b=this.extractData(c.select(this.meta.record,a),true);return{success:e,records:b,totalRecords:g||b.length}},readResponse:function(g,b){var e=Ext.DomQuery,h=b.responseXML,a=h.documentElement||h;var c=new Ext.data.Response({action:g,success:this.getSuccess(a),message:this.getMessage(a),data:this.extractData(e.select(this.meta.record,a)||e.select(this.meta.root,a),false),raw:h});if(Ext.isEmpty(c.success)){throw new Ext.data.DataReader.Error("successProperty-response",this.meta.successProperty)}if(g===Ext.data.Api.actions.create){var d=Ext.isDefined(c.data);if(d&&Ext.isEmpty(c.data)){throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)}else{if(!d){throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)}}}return c},getSuccess:function(){return true},buildExtractors:function(){if(this.ef){return}var l=this.meta,h=this.recordType,e=h.prototype.fields,k=e.items,j=e.length;if(l.totalProperty){this.getTotal=this.createAccessor(l.totalProperty)}if(l.successProperty){this.getSuccess=this.createAccessor(l.successProperty)}if(l.messageProperty){this.getMessage=this.createAccessor(l.messageProperty)}this.getRoot=function(g){return(!Ext.isEmpty(g[this.meta.record]))?g[this.meta.record]:g[this.meta.root]};if(l.idPath||l.idProperty){var d=this.createAccessor(l.idPath||l.idProperty);this.getId=function(g){var i=d(g)||g.id;return(i===undefined||i==="")?null:i}}else{this.getId=function(){return null}}var c=[];for(var b=0;b<j;b++){e=k[b];var a=(e.mapping!==undefined&&e.mapping!==null)?e.mapping:e.name;c.push(this.createAccessor(a))}this.ef=c},createAccessor:function(){var a=Ext.DomQuery;return function(b){if(Ext.isFunction(b)){return b}switch(b){case this.meta.totalProperty:return function(c,d){return a.selectNumber(b,c,d)};break;case this.meta.successProperty:return function(d,e){var c=a.selectValue(b,d,true);var g=c!==false&&c!=="false";return g};break;default:return function(c,d){return a.selectValue(b,c,d)};break}}}(),extractValues:function(h,d,a){var g,c={};for(var e=0;e<a;e++){g=d[e];var b=this.ef[e](h);c[g.name]=g.convert((b!==undefined)?b:g.defaultValue,h)}return c}});Ext.data.XmlStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.XmlStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.XmlReader(a)}))}});Ext.reg("xmlstore",Ext.data.XmlStore);Ext.data.GroupingStore=Ext.extend(Ext.data.Store,{constructor:function(d){d=d||{};this.hasMultiSort=true;this.multiSortInfo=this.multiSortInfo||{sorters:[]};var e=this.multiSortInfo.sorters,c=d.groupField||this.groupField,b=d.sortInfo||this.sortInfo,a=d.groupDir||this.groupDir;if(c){e.push({field:c,direction:a})}if(b){e.push(b)}Ext.data.GroupingStore.superclass.constructor.call(this,d);this.addEvents("groupchange");this.applyGroupField()},remoteGroup:false,groupOnSort:false,groupDir:"ASC",clearGrouping:function(){this.groupField=false;if(this.remoteGroup){if(this.baseParams){delete this.baseParams.groupBy;delete this.baseParams.groupDir}var a=this.lastOptions;if(a&&a.params){delete a.params.groupBy;delete a.params.groupDir}this.reload()}else{this.sort();this.fireEvent("datachanged",this)}},groupBy:function(e,a,d){d=d?(String(d).toUpperCase()=="DESC"?"DESC":"ASC"):this.groupDir;if(this.groupField==e&&this.groupDir==d&&!a){return}var c=this.multiSortInfo.sorters;if(c.length>0&&c[0].field==this.groupField){c.shift()}this.groupField=e;this.groupDir=d;this.applyGroupField();var b=function(){this.fireEvent("groupchange",this,this.getGroupState())};if(this.groupOnSort){this.sort(e,d);b.call(this);return}if(this.remoteGroup){this.on("load",b,this,{single:true});this.reload()}else{this.sort(c);b.call(this)}},sort:function(h,c){if(this.remoteSort){return Ext.data.GroupingStore.superclass.sort.call(this,h,c)}var g=[];if(Ext.isArray(arguments[0])){g=arguments[0]}else{if(h==undefined){g=this.sortInfo?[this.sortInfo]:[]}else{var e=this.fields.get(h);if(!e){return false}var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;if(!c){if(a&&a.field==b){c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")}else{c=e.sortDir}}this.sortToggle[b]=c;this.sortInfo={field:b,direction:c};g=[this.sortInfo]}}if(this.groupField){g.unshift({direction:this.groupDir,field:this.groupField})}return this.multiSort.call(this,g,c)},applyGroupField:function(){if(this.remoteGroup){if(!this.baseParams){this.baseParams={}}Ext.apply(this.baseParams,{groupBy:this.groupField,groupDir:this.groupDir});var a=this.lastOptions;if(a&&a.params){a.params.groupDir=this.groupDir;delete a.params.groupBy}}},applyGrouping:function(a){if(this.groupField!==false){this.groupBy(this.groupField,true,this.groupDir);return true}else{if(a===true){this.fireEvent("datachanged",this)}return false}},getGroupState:function(){return this.groupOnSort&&this.groupField!==false?(this.sortInfo?this.sortInfo.field:undefined):this.groupField}});Ext.reg("groupingstore",Ext.data.GroupingStore);Ext.data.DirectProxy=function(a){Ext.apply(this,a);if(typeof this.paramOrder=="string"){this.paramOrder=this.paramOrder.split(/[\s,|]/)}Ext.data.DirectProxy.superclass.constructor.call(this,a)};Ext.extend(Ext.data.DirectProxy,Ext.data.DataProxy,{paramOrder:undefined,paramsAsHash:true,directFn:undefined,doRequest:function(b,c,a,e,k,l,n){var j=[],h=this.api[b]||this.directFn;switch(b){case Ext.data.Api.actions.create:j.push(a.jsonData);break;case Ext.data.Api.actions.read:if(h.directCfg.method.len>0){if(this.paramOrder){for(var d=0,g=this.paramOrder.length;d<g;d++){j.push(a[this.paramOrder[d]])}}else{if(this.paramsAsHash){j.push(a)}}}break;case Ext.data.Api.actions.update:j.push(a.jsonData);break;case Ext.data.Api.actions.destroy:j.push(a.jsonData);break}var m={params:a||{},request:{callback:k,scope:l,arg:n},reader:e};j.push(this.createCallback(b,c,m),this);h.apply(window,j)},createCallback:function(d,a,b){var c=this;return function(e,g){if(!g.status){if(d===Ext.data.Api.actions.read){c.fireEvent("loadexception",c,b,g,null)}c.fireEvent("exception",c,"remote",d,b,g,null);b.request.callback.call(b.request.scope,null,b.request.arg,false);return}if(d===Ext.data.Api.actions.read){c.onRead(d,b,e,g)}else{c.onWrite(d,b,e,g,a)}}},onRead:function(g,e,a,d){var b;try{b=e.reader.readRecords(a)}catch(c){this.fireEvent("loadexception",this,e,d,c);this.fireEvent("exception",this,"response",g,e,d,c);e.request.callback.call(e.request.scope,null,e.request.arg,false);return}this.fireEvent("load",this,d,e.request.arg);e.request.callback.call(e.request.scope,b,e.request.arg,true)},onWrite:function(g,d,a,c,b){var e=d.reader.extractData(d.reader.getRoot(a),false);var h=d.reader.getSuccess(a);h=(h!==false);if(h){this.fireEvent("write",this,g,e,c,b,d.request.arg)}else{this.fireEvent("exception",this,"remote",g,d,a,b)}d.request.callback.call(d.request.scope,e,c,h)}});Ext.data.DirectStore=Ext.extend(Ext.data.Store,{constructor:function(a){var b=Ext.apply({},{batchTransactions:false},a);Ext.data.DirectStore.superclass.constructor.call(this,Ext.apply(b,{proxy:Ext.isDefined(b.proxy)?b.proxy:new Ext.data.DirectProxy(Ext.copyTo({},b,"paramOrder,paramsAsHash,directFn,api")),reader:(!Ext.isDefined(b.reader)&&b.fields)?new Ext.data.JsonReader(Ext.copyTo({},b,"totalProperty,root,idProperty"),b.fields):b.reader}))}});Ext.reg("directstore",Ext.data.DirectStore);Ext.Direct=Ext.extend(Ext.util.Observable,{exceptions:{TRANSPORT:"xhr",PARSE:"parse",LOGIN:"login",SERVER:"exception"},constructor:function(){this.addEvents("event","exception");this.transactions={};this.providers={}},addProvider:function(e){var c=arguments;if(c.length>1){for(var d=0,b=c.length;d<b;d++){this.addProvider(c[d])}return}if(!e.events){e=new Ext.Direct.PROVIDERS[e.type](e)}e.id=e.id||Ext.id();this.providers[e.id]=e;e.on("data",this.onProviderData,this);e.on("exception",this.onProviderException,this);if(!e.isConnected()){e.connect()}return e},getProvider:function(a){return this.providers[a]},removeProvider:function(b){var a=b.id?b:this.providers[b];a.un("data",this.onProviderData,this);a.un("exception",this.onProviderException,this);delete this.providers[a.id];return a},addTransaction:function(a){this.transactions[a.tid]=a;return a},removeTransaction:function(a){delete this.transactions[a.tid||a];return a},getTransaction:function(a){return this.transactions[a.tid||a]},onProviderData:function(d,c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.onProviderData(d,c[b])}return}if(c.name&&c.name!="event"&&c.name!="exception"){this.fireEvent(c.name,c)}else{if(c.type=="exception"){this.fireEvent("exception",c)}}this.fireEvent("event",c,d)},createEvent:function(a,b){return new Ext.Direct.eventTypes[a.type](Ext.apply(a,b))}});Ext.Direct=new Ext.Direct();Ext.Direct.TID=1;Ext.Direct.PROVIDERS={};Ext.Direct.Transaction=function(a){Ext.apply(this,a);this.tid=++Ext.Direct.TID;this.retryCount=0};Ext.Direct.Transaction.prototype={send:function(){this.provider.queueTransaction(this)},retry:function(){this.retryCount++;this.send()},getProvider:function(){return this.provider}};Ext.Direct.Event=function(a){Ext.apply(this,a)};Ext.Direct.Event.prototype={status:true,getData:function(){return this.data}};Ext.Direct.RemotingEvent=Ext.extend(Ext.Direct.Event,{type:"rpc",getTransaction:function(){return this.transaction||Ext.Direct.getTransaction(this.tid)}});Ext.Direct.ExceptionEvent=Ext.extend(Ext.Direct.RemotingEvent,{status:false,type:"exception"});Ext.Direct.eventTypes={rpc:Ext.Direct.RemotingEvent,event:Ext.Direct.Event,exception:Ext.Direct.ExceptionEvent};Ext.direct.Provider=Ext.extend(Ext.util.Observable,{priority:1,constructor:function(a){Ext.apply(this,a);this.addEvents("connect","disconnect","data","exception");Ext.direct.Provider.superclass.constructor.call(this,a)},isConnected:function(){return false},connect:Ext.emptyFn,disconnect:Ext.emptyFn});Ext.direct.JsonProvider=Ext.extend(Ext.direct.Provider,{parseResponse:function(a){if(!Ext.isEmpty(a.responseText)){if(typeof a.responseText=="object"){return a.responseText}return Ext.decode(a.responseText)}return null},getEvents:function(j){var g=null;try{g=this.parseResponse(j)}catch(h){var d=new Ext.Direct.ExceptionEvent({data:h,xhr:j,code:Ext.Direct.exceptions.PARSE,message:"Error parsing json response: \n\n "+g});return[d]}var c=[];if(Ext.isArray(g)){for(var b=0,a=g.length;b<a;b++){c.push(Ext.Direct.createEvent(g[b]))}}else{c.push(Ext.Direct.createEvent(g))}return c}});Ext.direct.PollingProvider=Ext.extend(Ext.direct.JsonProvider,{priority:3,interval:3000,constructor:function(a){Ext.direct.PollingProvider.superclass.constructor.call(this,a);this.addEvents("beforepoll","poll")},isConnected:function(){return !!this.pollTask},connect:function(){if(this.url&&!this.pollTask){this.pollTask=Ext.TaskMgr.start({run:function(){if(this.fireEvent("beforepoll",this)!==false){if(typeof this.url=="function"){this.url(this.baseParams)}else{Ext.Ajax.request({url:this.url,callback:this.onData,scope:this,params:this.baseParams})}}},interval:this.interval,scope:this});this.fireEvent("connect",this)}else{if(!this.url){throw"Error initializing PollingProvider, no url configured."}}},disconnect:function(){if(this.pollTask){Ext.TaskMgr.stop(this.pollTask);delete this.pollTask;this.fireEvent("disconnect",this)}},onData:function(d,j,h){if(j){var c=this.getEvents(h);for(var b=0,a=c.length;b<a;b++){var g=c[b];this.fireEvent("data",this,g)}}else{var g=new Ext.Direct.ExceptionEvent({data:g,code:Ext.Direct.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:h});this.fireEvent("data",this,g)}}});Ext.Direct.PROVIDERS.polling=Ext.direct.PollingProvider;Ext.direct.RemotingProvider=Ext.extend(Ext.direct.JsonProvider,{enableBuffer:10,maxRetries:1,timeout:undefined,constructor:function(a){Ext.direct.RemotingProvider.superclass.constructor.call(this,a);this.addEvents("beforecall","call");this.namespace=(Ext.isString(this.namespace))?Ext.ns(this.namespace):this.namespace||window;this.transactions={};this.callBuffer=[]},initAPI:function(){var h=this.actions;for(var j in h){var d=this.namespace[j]||(this.namespace[j]={}),e=h[j];for(var g=0,b=e.length;g<b;g++){var a=e[g];d[a.name]=this.createMethod(j,a)}}},isConnected:function(){return !!this.connected},connect:function(){if(this.url){this.initAPI();this.connected=true;this.fireEvent("connect",this)}else{if(!this.url){throw"Error initializing RemotingProvider, no url configured."}}},disconnect:function(){if(this.connected){this.connected=false;this.fireEvent("disconnect",this)}},onData:function(a,h,j){if(h){var k=this.getEvents(j);for(var b=0,c=k.length;b<c;b++){var d=k[b],l=this.getTransaction(d);this.fireEvent("data",this,d);if(l){this.doCallback(l,d,true);Ext.Direct.removeTransaction(l)}}}else{var g=[].concat(a.ts);for(var b=0,c=g.length;b<c;b++){var l=this.getTransaction(g[b]);if(l&&l.retryCount<this.maxRetries){l.retry()}else{var d=new Ext.Direct.ExceptionEvent({data:d,transaction:l,code:Ext.Direct.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:j});this.fireEvent("data",this,d);if(l){this.doCallback(l,d,false);Ext.Direct.removeTransaction(l)}}}}},getCallData:function(a){return{action:a.action,method:a.method,data:a.data,type:"rpc",tid:a.tid}},doSend:function(d){var g={url:this.url,callback:this.onData,scope:this,ts:d,timeout:this.timeout},b;if(Ext.isArray(d)){b=[];for(var c=0,a=d.length;c<a;c++){b.push(this.getCallData(d[c]))}}else{b=this.getCallData(d)}if(this.enableUrlEncode){var e={};e[Ext.isString(this.enableUrlEncode)?this.enableUrlEncode:"data"]=Ext.encode(b);g.params=e}else{g.jsonData=b}Ext.Ajax.request(g)},combineAndSend:function(){var a=this.callBuffer.length;if(a>0){this.doSend(a==1?this.callBuffer[0]:this.callBuffer);this.callBuffer=[]}},queueTransaction:function(a){if(a.form){this.processForm(a);return}this.callBuffer.push(a);if(this.enableBuffer){if(!this.callTask){this.callTask=new Ext.util.DelayedTask(this.combineAndSend,this)}this.callTask.delay(Ext.isNumber(this.enableBuffer)?this.enableBuffer:10)}else{this.combineAndSend()}},doCall:function(i,a,b){var h=null,e=b[a.len],g=b[a.len+1];if(a.len!==0){h=b.slice(0,a.len)}var d=new Ext.Direct.Transaction({provider:this,args:b,action:i,method:a.name,data:h,cb:g&&Ext.isFunction(e)?e.createDelegate(g):e});if(this.fireEvent("beforecall",this,d,a)!==false){Ext.Direct.addTransaction(d);this.queueTransaction(d);this.fireEvent("call",this,d,a)}},doForm:function(j,b,g,i,e){var d=new Ext.Direct.Transaction({provider:this,action:j,method:b.name,args:[g,i,e],cb:e&&Ext.isFunction(i)?i.createDelegate(e):i,isForm:true});if(this.fireEvent("beforecall",this,d,b)!==false){Ext.Direct.addTransaction(d);var a=String(g.getAttribute("enctype")).toLowerCase()=="multipart/form-data",h={extTID:d.tid,extAction:j,extMethod:b.name,extType:"rpc",extUpload:String(a)};Ext.apply(d,{form:Ext.getDom(g),isUpload:a,params:i&&Ext.isObject(i.params)?Ext.apply(h,i.params):h});this.fireEvent("call",this,d,b);this.processForm(d)}},processForm:function(a){Ext.Ajax.request({url:this.url,params:a.params,callback:this.onData,scope:this,form:a.form,isUpload:a.isUpload,ts:a})},createMethod:function(d,a){var b;if(!a.formHandler){b=function(){this.doCall(d,a,Array.prototype.slice.call(arguments,0))}.createDelegate(this)}else{b=function(e,g,c){this.doForm(d,a,e,g,c)}.createDelegate(this)}b.directCfg={action:d,method:a};return b},getTransaction:function(a){return a&&a.tid?Ext.Direct.getTransaction(a.tid):null},doCallback:function(c,g){var d=g.status?"success":"failure";if(c&&c.cb){var b=c.cb,a=Ext.isDefined(g.result)?g.result:g.data;if(Ext.isFunction(b)){b(a,g)}else{Ext.callback(b[d],b.scope,[a,g]);Ext.callback(b.callback,b.scope,[a,g])}}}});Ext.Direct.PROVIDERS.remoting=Ext.direct.RemotingProvider;Ext.Resizable=Ext.extend(Ext.util.Observable,{constructor:function(d,e){this.el=Ext.get(d);if(e&&e.wrap){e.resizeChild=this.el;this.el=this.el.wrap(typeof e.wrap=="object"?e.wrap:{cls:"xresizable-wrap"});this.el.id=this.el.dom.id=e.resizeChild.id+"-rzwrap";this.el.setStyle("overflow","hidden");this.el.setPositioning(e.resizeChild.getPositioning());e.resizeChild.clearPositioning();if(!e.width||!e.height){var g=e.resizeChild.getSize();this.el.setSize(g.width,g.height)}if(e.pinned&&!e.adjustments){e.adjustments="auto"}}this.proxy=this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id+"-rzproxy"},Ext.getBody());this.proxy.unselectable();this.proxy.enableDisplayMode("block");Ext.apply(this,e);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned")}var k=this.el.getStyle("position");if(k!="absolute"&&k!="fixed"){this.el.setStyle("position","relative")}if(!this.handles){this.handles="s,e,se";if(this.multiDirectional){this.handles+=",n,w"}}if(this.handles=="all"){this.handles="n s e w ne nw se sw"}var o=this.handles.split(/\s*?[,;]\s*?| /);var c=Ext.Resizable.positions;for(var j=0,l=o.length;j<l;j++){if(o[j]&&c[o[j]]){var n=c[o[j]];this[n]=new Ext.Resizable.Handle(this,n,this.disableTrackOver,this.transparent,this.handleCls)}}this.corner=this.southeast;if(this.handles.indexOf("n")!=-1||this.handles.indexOf("w")!=-1){this.updateBox=true}this.activeHandle=null;if(this.resizeChild){if(typeof this.resizeChild=="boolean"){this.resizeChild=Ext.get(this.el.dom.firstChild,true)}else{this.resizeChild=Ext.get(this.resizeChild,true)}}if(this.adjustments=="auto"){var b=this.resizeChild;var m=this.west,h=this.east,a=this.north,o=this.south;if(b&&(m||a)){b.position("relative");b.setLeft(m?m.el.getWidth():0);b.setTop(a?a.el.getHeight():0)}this.adjustments=[(h?-h.el.getWidth():0)+(m?-m.el.getWidth():0),(a?-a.el.getHeight():0)+(o?-o.el.getHeight():0)-1]}if(this.draggable){this.dd=this.dynamic?this.el.initDD(null):this.el.initDDProxy(null,{dragElId:this.proxy.id});this.dd.setHandleElId(this.resizeChild?this.resizeChild.id:this.el.id);if(this.constrainTo){this.dd.constrainTo(this.constrainTo)}}this.addEvents("beforeresize","resize");if(this.width!==null&&this.height!==null){this.resizeTo(this.width,this.height)}else{this.updateChildSize()}if(Ext.isIE){this.el.dom.style.zoom=1}Ext.Resizable.superclass.constructor.call(this)},adjustments:[0,0],animate:false,disableTrackOver:false,draggable:false,duration:0.35,dynamic:false,easing:"easeOutStrong",enabled:true,handles:false,multiDirectional:false,height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:5,minWidth:5,maxHeight:10000,maxWidth:10000,minX:0,minY:0,pinned:false,preserveRatio:false,resizeChild:false,transparent:false,resizeTo:function(b,a){this.el.setSize(b,a);this.updateChildSize();this.fireEvent("resize",this,b,a,null)},startSizing:function(c,b){this.fireEvent("beforeresize",this,c);if(this.enabled){if(!this.overlay){this.overlay=this.el.createProxy({tag:"div",cls:"x-resizable-overlay",html:"&#160;"},Ext.getBody());this.overlay.unselectable();this.overlay.enableDisplayMode("block");this.overlay.on({scope:this,mousemove:this.onMouseMove,mouseup:this.onMouseUp})}this.overlay.setStyle("cursor",b.el.getStyle("cursor"));this.resizing=true;this.startBox=this.el.getBox();this.startPoint=c.getXY();this.offsets=[(this.startBox.x+this.startBox.width)-this.startPoint[0],(this.startBox.y+this.startBox.height)-this.startPoint[1]];this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();if(this.constrainTo){var a=Ext.get(this.constrainTo);this.resizeRegion=a.getRegion().adjust(a.getFrameWidth("t"),a.getFrameWidth("l"),-a.getFrameWidth("b"),-a.getFrameWidth("r"))}this.proxy.setStyle("visibility","hidden");this.proxy.show();this.proxy.setBox(this.startBox);if(!this.dynamic){this.proxy.setStyle("visibility","visible")}}},onMouseDown:function(a,b){if(this.enabled){b.stopEvent();this.activeHandle=a;this.startSizing(b,a)}},onMouseUp:function(b){this.activeHandle=null;var a=this.resizeElement();this.resizing=false;this.handleOut();this.overlay.hide();this.proxy.hide();this.fireEvent("resize",this,a.width,a.height,b)},updateChildSize:function(){if(this.resizeChild){var d=this.el;var e=this.resizeChild;var c=this.adjustments;if(d.dom.offsetWidth){var a=d.getSize(true);e.setSize(a.width+c[0],a.height+c[1])}if(Ext.isIE9m){setTimeout(function(){if(d.dom.offsetWidth){var g=d.getSize(true);e.setSize(g.width+c[0],g.height+c[1])}},10)}}},snap:function(c,e,b){if(!e||!c){return c}var d=c;var a=c%e;if(a>0){if(a>(e/2)){d=c+(e-a)}else{d=c-a}}return Math.max(b,d)},resizeElement:function(){var a=this.proxy.getBox();if(this.updateBox){this.el.setBox(a,false,this.animate,this.duration,null,this.easing)}else{this.el.setSize(a.width,a.height,this.animate,this.duration,null,this.easing)}this.updateChildSize();if(!this.dynamic){this.proxy.hide()}if(this.draggable&&this.constrainTo){this.dd.resetConstraints();this.dd.constrainTo(this.constrainTo)}return a},constrain:function(b,c,a,d){if(b-c<a){c=b-a}else{if(b-c>d){c=b-d}}return c},onMouseMove:function(z){if(this.enabled&&this.activeHandle){try{if(this.resizeRegion&&!this.resizeRegion.contains(z.getPoint())){return}var t=this.curSize||this.startBox,l=this.startBox.x,k=this.startBox.y,c=l,b=k,m=t.width,u=t.height,d=m,o=u,n=this.minWidth,A=this.minHeight,s=this.maxWidth,D=this.maxHeight,i=this.widthIncrement,a=this.heightIncrement,B=z.getXY(),r=-(this.startPoint[0]-Math.max(this.minX,B[0])),p=-(this.startPoint[1]-Math.max(this.minY,B[1])),j=this.activeHandle.position,E,g;switch(j){case"east":m+=r;m=Math.min(Math.max(n,m),s);break;case"south":u+=p;u=Math.min(Math.max(A,u),D);break;case"southeast":m+=r;u+=p;m=Math.min(Math.max(n,m),s);u=Math.min(Math.max(A,u),D);break;case"north":p=this.constrain(u,p,A,D);k+=p;u-=p;break;case"west":r=this.constrain(m,r,n,s);l+=r;m-=r;break;case"northeast":m+=r;m=Math.min(Math.max(n,m),s);p=this.constrain(u,p,A,D);k+=p;u-=p;break;case"northwest":r=this.constrain(m,r,n,s);p=this.constrain(u,p,A,D);k+=p;u-=p;l+=r;m-=r;break;case"southwest":r=this.constrain(m,r,n,s);u+=p;u=Math.min(Math.max(A,u),D);l+=r;m-=r;break}var q=this.snap(m,i,n);var C=this.snap(u,a,A);if(q!=m||C!=u){switch(j){case"northeast":k-=C-u;break;case"north":k-=C-u;break;case"southwest":l-=q-m;break;case"west":l-=q-m;break;case"northwest":l-=q-m;k-=C-u;break}m=q;u=C}if(this.preserveRatio){switch(j){case"southeast":case"east":u=o*(m/d);u=Math.min(Math.max(A,u),D);m=d*(u/o);break;case"south":m=d*(u/o);m=Math.min(Math.max(n,m),s);u=o*(m/d);break;case"northeast":m=d*(u/o);m=Math.min(Math.max(n,m),s);u=o*(m/d);break;case"north":E=m;m=d*(u/o);m=Math.min(Math.max(n,m),s);u=o*(m/d);l+=(E-m)/2;break;case"southwest":u=o*(m/d);u=Math.min(Math.max(A,u),D);E=m;m=d*(u/o);l+=E-m;break;case"west":g=u;u=o*(m/d);u=Math.min(Math.max(A,u),D);k+=(g-u)/2;E=m;m=d*(u/o);l+=E-m;break;case"northwest":E=m;g=u;u=o*(m/d);u=Math.min(Math.max(A,u),D);m=d*(u/o);k+=g-u;l+=E-m;break}}this.proxy.setBounds(l,k,m,u);if(this.dynamic){this.resizeElement()}}catch(v){}}},handleOver:function(){if(this.enabled){this.el.addClass("x-resizable-over")}},handleOut:function(){if(!this.resizing){this.el.removeClass("x-resizable-over")}},getEl:function(){return this.el},getResizeChild:function(){return this.resizeChild},destroy:function(b){Ext.destroy(this.dd,this.overlay,this.proxy);this.overlay=null;this.proxy=null;var c=Ext.Resizable.positions;for(var a in c){if(typeof c[a]!="function"&&this[c[a]]){this[c[a]].destroy()}}if(b){this.el.update("");Ext.destroy(this.el);this.el=null}this.purgeListeners()},syncHandleHeight:function(){var a=this.el.getHeight(true);if(this.west){this.west.el.setHeight(a)}if(this.east){this.east.el.setHeight(a)}}});Ext.Resizable.positions={n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};Ext.Resizable.Handle=Ext.extend(Object,{constructor:function(d,g,c,e,a){if(!this.tpl){var b=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});b.compile();Ext.Resizable.Handle.prototype.tpl=b}this.position=g;this.rz=d;this.el=this.tpl.append(d.el.dom,[this.position],true);this.el.unselectable();if(e){this.el.setOpacity(0)}if(!Ext.isEmpty(a)){this.el.addClass(a)}this.el.on("mousedown",this.onMouseDown,this);if(!c){this.el.on({scope:this,mouseover:this.onMouseOver,mouseout:this.onMouseOut})}},afterResize:function(a){},onMouseDown:function(a){this.rz.onMouseDown(this,a)},onMouseOver:function(a){this.rz.handleOver(this,a)},onMouseOut:function(a){this.rz.handleOut(this,a)},destroy:function(){Ext.destroy(this.el);this.el=null}});Ext.Window=Ext.extend(Ext.Panel,{baseCls:"x-window",resizable:true,draggable:true,closable:true,closeAction:"close",constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:100,minWidth:200,expandOnShow:true,showAnimDuration:0.25,hideAnimDuration:0.25,collapsible:false,initHidden:undefined,hidden:true,elements:"header,body",frame:true,floating:true,initComponent:function(){this.initTools();Ext.Window.superclass.initComponent.call(this);this.addEvents("resize","maximize","minimize","restore");if(Ext.isDefined(this.initHidden)){this.hidden=this.initHidden}if(this.hidden===false){this.hidden=true;this.show()}},getState:function(){return Ext.apply(Ext.Window.superclass.getState.call(this)||{},this.getBox(true))},onRender:function(b,a){Ext.Window.superclass.onRender.call(this,b,a);if(this.plain){this.el.addClass("x-window-plain")}this.focusEl=this.el.createChild({tag:"a",href:"#",cls:"x-dlg-focus",tabIndex:"-1",html:"&#160;"});this.focusEl.swallowEvent("click",true);this.proxy=this.el.createProxy("x-window-proxy");this.proxy.enableDisplayMode("block");if(this.modal){this.mask=this.container.createChild({cls:"ext-el-mask"},this.el.dom);this.mask.enableDisplayMode("block");this.mask.hide();this.mon(this.mask,"click",this.focus,this)}if(this.maximizable){this.mon(this.header,"dblclick",this.toggleMaximize,this)}},initEvents:function(){Ext.Window.superclass.initEvents.call(this);if(this.animateTarget){this.setAnimateTarget(this.animateTarget)}if(this.resizable){this.resizer=new Ext.Resizable(this.el,{minWidth:this.minWidth,minHeight:this.minHeight,handles:this.resizeHandles||"all",pinned:true,resizeElement:this.resizerAction,handleCls:"x-window-handle"});this.resizer.window=this;this.mon(this.resizer,"beforeresize",this.beforeResize,this)}if(this.draggable){this.header.addClass("x-window-draggable")}this.mon(this.el,"mousedown",this.toFront,this);this.manager=this.manager||Ext.WindowMgr;this.manager.register(this);if(this.maximized){this.maximized=false;this.maximize()}if(this.closable){var a=this.getKeyMap();a.on(27,this.onEsc,this);a.disable()}},initDraggable:function(){this.dd=new Ext.Window.DD(this)},onEsc:function(a,b){if(this.activeGhost){this.unghost()}b.stopEvent();this[this.closeAction]()},beforeDestroy:function(){if(this.rendered){this.hide();this.clearAnchor();Ext.destroy(this.focusEl,this.resizer,this.dd,this.proxy,this.mask)}Ext.Window.superclass.beforeDestroy.call(this)},onDestroy:function(){if(this.manager){this.manager.unregister(this)}Ext.Window.superclass.onDestroy.call(this)},initTools:function(){if(this.minimizable){this.addTool({id:"minimize",handler:this.minimize.createDelegate(this,[])})}if(this.maximizable){this.addTool({id:"maximize",handler:this.maximize.createDelegate(this,[])});this.addTool({id:"restore",handler:this.restore.createDelegate(this,[]),hidden:true})}if(this.closable){this.addTool({id:"close",handler:this[this.closeAction].createDelegate(this,[])})}},resizerAction:function(){var a=this.proxy.getBox();this.proxy.hide();this.window.handleResize(a);return a},beforeResize:function(){this.resizer.minHeight=Math.max(this.minHeight,this.getFrameHeight()+40);this.resizer.minWidth=Math.max(this.minWidth,this.getFrameWidth()+40);this.resizeBox=this.el.getBox()},updateHandles:function(){if(Ext.isIE9m&&this.resizer){this.resizer.syncHandleHeight();this.el.repaint()}},handleResize:function(b){var a=this.resizeBox;if(a.x!=b.x||a.y!=b.y){this.updateBox(b)}else{this.setSize(b);if(Ext.isIE6&&Ext.isStrict){this.doLayout()}}this.focus();this.updateHandles();this.saveState()},focus:function(){var e=this.focusEl,a=this.defaultButton,c=typeof a,d,b;if(Ext.isDefined(a)){if(Ext.isNumber(a)&&this.fbar){e=this.fbar.items.get(a)}else{if(Ext.isString(a)){e=Ext.getCmp(a)}else{e=a}}d=e.getEl();b=Ext.getDom(this.container);if(d&&b){if(b!=document.body&&!Ext.lib.Region.getRegion(b).contains(Ext.lib.Region.getRegion(d.dom))){return}}}e=e||this.focusEl;e.focus.defer(10,e)},setAnimateTarget:function(a){a=Ext.get(a);this.animateTarget=a},beforeShow:function(){delete this.el.lastXY;delete this.el.lastLT;if(this.x===undefined||this.y===undefined){var a=this.el.getAlignToXY(this.container,"c-c");var b=this.el.translatePoints(a[0],a[1]);this.x=this.x===undefined?b.left:this.x;this.y=this.y===undefined?b.top:this.y}this.el.setLeftTop(this.x,this.y);if(this.expandOnShow){this.expand(false)}if(this.modal){Ext.getBody().addClass("x-body-masked");this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.mask.show()}},show:function(c,a,b){if(!this.rendered){this.render(Ext.getBody())}if(this.hidden===false){this.toFront();return this}if(this.fireEvent("beforeshow",this)===false){return this}if(a){this.on("show",a,b,{single:true})}this.hidden=false;if(Ext.isDefined(c)){this.setAnimateTarget(c)}this.beforeShow();if(this.animateTarget){this.animShow()}else{this.afterShow()}return this},afterShow:function(b){if(this.isDestroyed){return false}this.proxy.hide();this.el.setStyle("display","block");this.el.show();if(this.maximized){this.fitContainer()}if(Ext.isMac&&Ext.isGecko2){this.cascade(this.setAutoScroll)}if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.onWindowResize(this.onWindowResize,this)}this.doConstrain();this.doLayout();if(this.keyMap){this.keyMap.enable()}this.toFront();this.updateHandles();if(b&&(Ext.isIE||Ext.isWebKit)){var a=this.getSize();this.onResize(a.width,a.height)}this.onShow();this.fireEvent("show",this)},animShow:function(){this.proxy.show();this.proxy.setBox(this.animateTarget.getBox());this.proxy.setOpacity(0);var a=this.getBox();this.el.setStyle("display","none");this.proxy.shift(Ext.apply(a,{callback:this.afterShow.createDelegate(this,[true],false),scope:this,easing:"easeNone",duration:this.showAnimDuration,opacity:0.5}))},hide:function(c,a,b){if(this.hidden||this.fireEvent("beforehide",this)===false){return this}if(a){this.on("hide",a,b,{single:true})}this.hidden=true;if(c!==undefined){this.setAnimateTarget(c)}if(this.modal){this.mask.hide();Ext.getBody().removeClass("x-body-masked")}if(this.animateTarget){this.animHide()}else{this.el.hide();this.afterHide()}return this},afterHide:function(){this.proxy.hide();if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.removeResizeListener(this.onWindowResize,this)}if(this.keyMap){this.keyMap.disable()}this.onHide();this.fireEvent("hide",this)},animHide:function(){this.proxy.setOpacity(0.5);this.proxy.show();var a=this.getBox(false);this.proxy.setBox(a);this.el.hide();this.proxy.shift(Ext.apply(this.animateTarget.getBox(),{callback:this.afterHide,scope:this,duration:this.hideAnimDuration,easing:"easeNone",opacity:0}))},onShow:Ext.emptyFn,onHide:Ext.emptyFn,onWindowResize:function(){if(this.maximized){this.fitContainer()}if(this.modal){this.mask.setSize("100%","100%");var a=this.mask.dom.offsetHeight;this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true))}this.doConstrain()},doConstrain:function(){if(this.constrain||this.constrainHeader){var b;if(this.constrain){b={right:this.el.shadowOffset,left:this.el.shadowOffset,bottom:this.el.shadowOffset}}else{var a=this.getSize();b={right:-(a.width-100),bottom:-(a.height-25+this.el.getConstrainOffset())}}var c=this.el.getConstrainToXY(this.container,true,b);if(c){this.setPosition(c[0],c[1])}}},ghost:function(a){var c=this.createGhost(a);var b=this.getBox(true);c.setLeftTop(b.x,b.y);c.setWidth(b.width);this.el.hide();this.activeGhost=c;return c},unghost:function(b,a){if(!this.activeGhost){return}if(b!==false){this.el.show();this.focus.defer(10,this);if(Ext.isMac&&Ext.isGecko2){this.cascade(this.setAutoScroll)}}if(a!==false){this.setPosition(this.activeGhost.getLeft(true),this.activeGhost.getTop(true))}this.activeGhost.hide();this.activeGhost.remove();delete this.activeGhost},minimize:function(){this.fireEvent("minimize",this);return this},close:function(){if(this.fireEvent("beforeclose",this)!==false){if(this.hidden){this.doClose()}else{this.hide(null,this.doClose,this)}}},doClose:function(){this.fireEvent("close",this);this.destroy()},maximize:function(){if(!this.maximized){this.expand(false);this.restoreSize=this.getSize();this.restorePos=this.getPosition(true);if(this.maximizable){this.tools.maximize.hide();this.tools.restore.show()}this.maximized=true;this.el.disableShadow();if(this.dd){this.dd.lock()}if(this.collapsible){this.tools.toggle.hide()}this.el.addClass("x-window-maximized");this.container.addClass("x-window-maximized-ct");this.setPosition(0,0);this.fitContainer();this.fireEvent("maximize",this)}return this},restore:function(){if(this.maximized){var a=this.tools;this.el.removeClass("x-window-maximized");if(a.restore){a.restore.hide()}if(a.maximize){a.maximize.show()}this.setPosition(this.restorePos[0],this.restorePos[1]);this.setSize(this.restoreSize.width,this.restoreSize.height);delete this.restorePos;delete this.restoreSize;this.maximized=false;this.el.enableShadow(true);if(this.dd){this.dd.unlock()}if(this.collapsible&&a.toggle){a.toggle.show()}this.container.removeClass("x-window-maximized-ct");this.doConstrain();this.fireEvent("restore",this)}return this},toggleMaximize:function(){return this[this.maximized?"restore":"maximize"]()},fitContainer:function(){var a=this.container.getViewSize(false);this.setSize(a.width,a.height)},setZIndex:function(a){if(this.modal){this.mask.setStyle("z-index",a)}this.el.setZIndex(++a);a+=5;if(this.resizer){this.resizer.proxy.setStyle("z-index",++a)}this.lastZIndex=a},alignTo:function(b,a,c){var d=this.el.getAlignToXY(b,a,c);this.setPagePosition(d[0],d[1]);return this},anchorTo:function(c,e,d,b){this.clearAnchor();this.anchorTarget={el:c,alignment:e,offsets:d};Ext.EventManager.onWindowResize(this.doAnchor,this);var a=typeof b;if(a!="undefined"){Ext.EventManager.on(window,"scroll",this.doAnchor,this,{buffer:a=="number"?b:50})}return this.doAnchor()},doAnchor:function(){var a=this.anchorTarget;this.alignTo(a.el,a.alignment,a.offsets);return this},clearAnchor:function(){if(this.anchorTarget){Ext.EventManager.removeResizeListener(this.doAnchor,this);Ext.EventManager.un(window,"scroll",this.doAnchor,this);delete this.anchorTarget}return this},toFront:function(a){if(this.manager.bringToFront(this)){if(!a||!a.getTarget().focus){this.focus()}}return this},setActive:function(a){if(a){if(!this.maximized){this.el.enableShadow(true)}this.fireEvent("activate",this)}else{this.el.disableShadow();this.fireEvent("deactivate",this)}},toBack:function(){this.manager.sendToBack(this);return this},center:function(){var a=this.el.getAlignToXY(this.container,"c-c");this.setPagePosition(a[0],a[1]);return this}});Ext.reg("window",Ext.Window);Ext.Window.DD=Ext.extend(Ext.dd.DD,{constructor:function(a){this.win=a;Ext.Window.DD.superclass.constructor.call(this,a.el.id,"WindowDD-"+a.id);this.setHandleElId(a.header.id);this.scroll=false},moveOnly:true,headerOffsets:[100,25],startDrag:function(){var a=this.win;this.proxy=a.ghost(a.initialConfig.cls);if(a.constrain!==false){var c=a.el.shadowOffset;this.constrainTo(a.container,{right:c,left:c,bottom:c})}else{if(a.constrainHeader!==false){var b=this.proxy.getSize();this.constrainTo(a.container,{right:-(b.width-this.headerOffsets[0]),bottom:-(b.height-this.headerOffsets[1])})}}},b4Drag:Ext.emptyFn,onDrag:function(a){this.alignElWithMouse(this.proxy,a.getPageX(),a.getPageY())},endDrag:function(a){this.win.unghost();this.win.saveState()}});Ext.WindowGroup=function(){var g={};var d=[];var e=null;var c=function(j,i){return(!j._lastAccess||j._lastAccess<i._lastAccess)?-1:1};var h=function(){var l=d,j=l.length;if(j>0){l.sort(c);var k=l[0].manager.zseed;for(var m=0;m<j;m++){var n=l[m];if(n&&!n.hidden){n.setZIndex(k+(m*10))}}}a()};var b=function(i){if(i!=e){if(e){e.setActive(false)}e=i;if(i){i.setActive(true)}}};var a=function(){for(var j=d.length-1;j>=0;--j){if(!d[j].hidden){b(d[j]);return}}b(null)};return{zseed:9000,register:function(i){if(i.manager){i.manager.unregister(i)}i.manager=this;g[i.id]=i;d.push(i);i.on("hide",a)},unregister:function(i){delete i.manager;delete g[i.id];i.un("hide",a);d.remove(i)},get:function(i){return typeof i=="object"?i:g[i]},bringToFront:function(i){i=this.get(i);if(i!=e){i._lastAccess=new Date().getTime();h();return true}return false},sendToBack:function(i){i=this.get(i);i._lastAccess=-(new Date().getTime());h();return i},hideAll:function(){for(var i in g){if(g[i]&&typeof g[i]!="function"&&g[i].isVisible()){g[i].hide()}}},getActive:function(){return e},getBy:function(l,k){var m=[];for(var j=d.length-1;j>=0;--j){var n=d[j];if(l.call(k||n,n)!==false){m.push(n)}}return m},each:function(j,i){for(var k in g){if(g[k]&&typeof g[k]!="function"){if(j.call(i||g[k],g[k])===false){return}}}}}};Ext.WindowMgr=new Ext.WindowGroup();Ext.MessageBox=function(){var u,b,q,t,h,l,s,a,n,p,j,g,r,v,o,i="",d="",m=["ok","yes","no","cancel"];var c=function(x){r[x].blur();if(u.isVisible()){u.hide();w();Ext.callback(b.fn,b.scope||window,[x,v.dom.value,b],1)}};var w=function(){if(b&&b.cls){u.el.removeClass(b.cls)}n.reset()};var e=function(z,x,y){if(b&&b.closable!==false){u.hide();w()}if(y){y.stopEvent()}};var k=function(x){var z=0,y;if(!x){Ext.each(m,function(A){r[A].hide()});return z}u.footer.dom.style.display="";Ext.iterate(r,function(A,B){y=x[A];if(y){B.show();B.setText(Ext.isString(y)?y:Ext.MessageBox.buttonText[A]);z+=B.getEl().getWidth()+15}else{B.hide()}});return z};return{getDialog:function(x){if(!u){var z=[];r={};Ext.each(m,function(A){z.push(r[A]=new Ext.Button({text:this.buttonText[A],handler:c.createCallback(A),hideMode:"offsets"}))},this);u=new Ext.Window({autoCreate:true,title:x,resizable:false,constrain:true,constrainHeader:true,minimizable:false,maximizable:false,stateful:false,modal:true,shim:true,buttonAlign:"center",width:400,height:100,minHeight:80,plain:true,footer:true,closable:true,close:function(){if(b&&b.buttons&&b.buttons.no&&!b.buttons.cancel){c("no")}else{c("cancel")}},fbar:new Ext.Toolbar({items:z,enableOverflow:false})});u.render(document.body);u.getEl().addClass("x-window-dlg");q=u.mask;h=u.body.createChild({html:'<div class="ext-mb-icon"></div><div class="ext-mb-content"><span class="ext-mb-text"></span><br /><div class="ext-mb-fix-cursor"><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea></div></div>'});j=Ext.get(h.dom.firstChild);var y=h.dom.childNodes[1];l=Ext.get(y.firstChild);s=Ext.get(y.childNodes[2].firstChild);s.enableDisplayMode();s.addKeyListener([10,13],function(){if(u.isVisible()&&b&&b.buttons){if(b.buttons.ok){c("ok")}else{if(b.buttons.yes){c("yes")}}}});a=Ext.get(y.childNodes[2].childNodes[1]);a.enableDisplayMode();n=new Ext.ProgressBar({renderTo:h});h.createChild({cls:"x-clear"})}return u},updateText:function(A){if(!u.isVisible()&&!b.width){u.setSize(this.maxWidth,100)}l.update(A?A+" ":"&#160;");var y=d!=""?(j.getWidth()+j.getMargins("lr")):0,C=l.getWidth()+l.getMargins("lr"),z=u.getFrameWidth("lr"),B=u.body.getFrameWidth("lr"),x;x=Math.max(Math.min(b.width||y+C+z+B,b.maxWidth||this.maxWidth),Math.max(b.minWidth||this.minWidth,o||0));if(b.prompt===true){v.setWidth(x-y-z-B)}if(b.progress===true||b.wait===true){n.setSize(x-y-z-B)}if(Ext.isIE9m&&x==o){x+=4}l.update(A||"&#160;");u.setSize(x,"auto").center();return this},updateProgress:function(y,x,z){n.updateProgress(y,x);if(z){this.updateText(z)}return this},isVisible:function(){return u&&u.isVisible()},hide:function(){var x=u?u.activeGhost:null;if(this.isVisible()||x){u.hide();w();if(x){u.unghost(false,false)}}return this},show:function(A){if(this.isVisible()){this.hide()}b=A;var B=this.getDialog(b.title||"&#160;");B.setTitle(b.title||"&#160;");var x=(b.closable!==false&&b.progress!==true&&b.wait!==true);B.tools.close.setDisplayed(x);v=s;b.prompt=b.prompt||(b.multiline?true:false);if(b.prompt){if(b.multiline){s.hide();a.show();a.setHeight(Ext.isNumber(b.multiline)?b.multiline:this.defaultTextHeight);v=a}else{s.show();a.hide()}}else{s.hide();a.hide()}v.dom.value=b.value||"";if(b.prompt){B.focusEl=v}else{var z=b.buttons;var y=null;if(z&&z.ok){y=r.ok}else{if(z&&z.yes){y=r.yes}}if(y){B.focusEl=y}}if(Ext.isDefined(b.iconCls)){B.setIconClass(b.iconCls)}this.setIcon(Ext.isDefined(b.icon)?b.icon:i);o=k(b.buttons);n.setVisible(b.progress===true||b.wait===true);this.updateProgress(0,b.progressText);this.updateText(b.msg);if(b.cls){B.el.addClass(b.cls)}B.proxyDrag=b.proxyDrag===true;B.modal=b.modal!==false;B.mask=b.modal!==false?q:false;if(!B.isVisible()){document.body.appendChild(u.el.dom);B.setAnimateTarget(b.animEl);B.on("show",function(){if(x===true){B.keyMap.enable()}else{B.keyMap.disable()}},this,{single:true});B.show(b.animEl)}if(b.wait===true){n.wait(b.waitConfig)}return this},setIcon:function(x){if(!u){i=x;return}i=undefined;if(x&&x!=""){j.removeClass("x-hidden");j.replaceClass(d,x);h.addClass("x-dlg-icon");d=x}else{j.replaceClass(d,"x-hidden");h.removeClass("x-dlg-icon");d=""}return this},progress:function(z,y,x){this.show({title:z,msg:y,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,progressText:x});return this},wait:function(z,y,x){this.show({title:y,msg:z,buttons:false,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:x});return this},alert:function(A,z,y,x){this.show({title:A,msg:z,buttons:this.OK,fn:y,scope:x,minWidth:this.minWidth});return this},confirm:function(A,z,y,x){this.show({title:A,msg:z,buttons:this.YESNO,fn:y,scope:x,icon:this.QUESTION,minWidth:this.minWidth});return this},prompt:function(C,B,z,y,x,A){this.show({title:C,msg:B,buttons:this.OKCANCEL,fn:z,minWidth:this.minPromptWidth,scope:y,prompt:true,multiline:x,value:A});return this},OK:{ok:true},CANCEL:{cancel:true},OKCANCEL:{ok:true,cancel:true},YESNO:{yes:true,no:true},YESNOCANCEL:{yes:true,no:true,cancel:true},INFO:"ext-mb-info",WARNING:"ext-mb-warning",QUESTION:"ext-mb-question",ERROR:"ext-mb-error",defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,minPromptWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}}}();Ext.Msg=Ext.MessageBox;Ext.dd.PanelProxy=Ext.extend(Object,{constructor:function(a,b){this.panel=a;this.id=this.panel.id+"-ddproxy";Ext.apply(this,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){if(this.ghost){if(this.proxy){this.proxy.remove();delete this.proxy}this.panel.el.dom.style.display="";this.ghost.remove();delete this.ghost}},show:function(){if(!this.ghost){this.ghost=this.panel.createGhost(this.panel.initialConfig.cls,undefined,Ext.getBody());this.ghost.setXY(this.panel.el.getXY());if(this.insertProxy){this.proxy=this.panel.el.insertSibling({cls:"x-panel-dd-spacer"});this.proxy.setSize(this.panel.getSize())}this.panel.el.dom.style.display="none"}},repair:function(b,c,a){this.hide();if(typeof c=="function"){c.call(a||this)}},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}});Ext.Panel.DD=Ext.extend(Ext.dd.DragSource,{constructor:function(b,a){this.panel=b;this.dragData={panel:b};this.proxy=new Ext.dd.PanelProxy(b,a);Ext.Panel.DD.superclass.constructor.call(this,b.el,a);var d=b.header,c=b.body;if(d){this.setHandleElId(d.id);c=b.header}c.setStyle("cursor","move");this.scroll=false},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.proxy.show()},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c)},onInitDrag:function(a,b){this.onStartDrag(a,b);return true},createFrame:Ext.emptyFn,getDragEl:function(a){return this.proxy.ghost.dom},endDrag:function(a){this.proxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)}});Ext.state.Provider=Ext.extend(Ext.util.Observable,{constructor:function(){this.addEvents("statechange");this.state={};Ext.state.Provider.superclass.constructor.call(this)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){delete this.state[a];this.fireEvent("statechange",this,a,null)},set:function(a,b){this.state[a]=b;this.fireEvent("statechange",this,a,b)},decodeValue:function(b){var e=/^(a|n|d|b|s|o|e)\:(.*)$/,h=e.exec(unescape(b)),d,c,a,g;if(!h||!h[1]){return}c=h[1];a=h[2];switch(c){case"e":return null;case"n":return parseFloat(a);case"d":return new Date(Date.parse(a));case"b":return(a=="1");case"a":d=[];if(a!=""){Ext.each(a.split("^"),function(i){d.push(this.decodeValue(i))},this)}return d;case"o":d={};if(a!=""){Ext.each(a.split("^"),function(i){g=i.split("=");d[g[0]]=this.decodeValue(g[1])},this)}return d;default:return a}},encodeValue:function(c){var b,g="",e=0,a,d;if(c==null){return"e:1"}else{if(typeof c=="number"){b="n:"+c}else{if(typeof c=="boolean"){b="b:"+(c?"1":"0")}else{if(Ext.isDate(c)){b="d:"+c.toGMTString()}else{if(Ext.isArray(c)){for(a=c.length;e<a;e++){g+=this.encodeValue(c[e]);if(e!=a-1){g+="^"}}b="a:"+g}else{if(typeof c=="object"){for(d in c){if(typeof c[d]!="function"&&c[d]!==undefined){g+=d+"="+this.encodeValue(c[d])+"^"}}b="o:"+g.substring(0,g.length-1)}else{b="s:"+c}}}}}}return escape(b)}});Ext.state.Manager=function(){var a=new Ext.state.Provider();return{setProvider:function(b){a=b},get:function(c,b){return a.get(c,b)},set:function(b,c){a.set(b,c)},clear:function(b){a.clear(b)},getProvider:function(){return a}}}();Ext.state.CookieProvider=Ext.extend(Ext.state.Provider,{constructor:function(a){Ext.state.CookieProvider.superclass.constructor.call(this);this.path="/";this.expires=new Date(new Date().getTime()+(1000*60*60*24*7));this.domain=null;this.secure=false;Ext.apply(this,a);this.state=this.readCookies()},set:function(a,b){if(typeof b=="undefined"||b===null){this.clear(a);return}this.setCookie(a,b);Ext.state.CookieProvider.superclass.set.call(this,a,b)},clear:function(a){this.clearCookie(a);Ext.state.CookieProvider.superclass.clear.call(this,a)},readCookies:function(){var d={},h=document.cookie+";",b=/\s?(.*?)=(.*?);/g,g,a,e;while((g=b.exec(h))!=null){a=g[1];e=g[2];if(a&&a.substring(0,3)=="ys-"){d[a.substr(3)]=this.decodeValue(e)}}return d},setCookie:function(a,b){document.cookie="ys-"+a+"="+this.encodeValue(b)+((this.expires==null)?"":("; expires="+this.expires.toGMTString()))+((this.path==null)?"":("; path="+this.path))+((this.domain==null)?"":("; domain="+this.domain))+((this.secure==true)?"; secure":"")},clearCookie:function(a){document.cookie="ys-"+a+"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"+((this.path==null)?"":("; path="+this.path))+((this.domain==null)?"":("; domain="+this.domain))+((this.secure==true)?"; secure":"")}});Ext.DataView=Ext.extend(Ext.BoxComponent,{selectedClass:"x-view-selected",emptyText:"",deferEmptyText:true,trackOver:false,blockRefresh:false,last:false,initComponent:function(){Ext.DataView.superclass.initComponent.call(this);if(Ext.isString(this.tpl)||Ext.isArray(this.tpl)){this.tpl=new Ext.XTemplate(this.tpl)}this.addEvents("beforeclick","click","mouseenter","mouseleave","containerclick","dblclick","contextmenu","containercontextmenu","selectionchange","beforeselect");this.store=Ext.StoreMgr.lookup(this.store);this.all=new Ext.CompositeElementLite();this.selected=new Ext.CompositeElementLite()},afterRender:function(){Ext.DataView.superclass.afterRender.call(this);this.mon(this.getTemplateTarget(),{click:this.onClick,dblclick:this.onDblClick,contextmenu:this.onContextMenu,scope:this});if(this.overClass||this.trackOver){this.mon(this.getTemplateTarget(),{mouseover:this.onMouseOver,mouseout:this.onMouseOut,scope:this})}if(this.store){this.bindStore(this.store,true)}},refresh:function(){this.clearSelections(false,true);var b=this.getTemplateTarget(),a=this.store.getRange();b.update("");if(a.length<1){if(!this.deferEmptyText||this.hasSkippedEmptyText){b.update(this.emptyText)}this.all.clear()}else{this.tpl.overwrite(b,this.collectData(a,0));this.all.fill(Ext.query(this.itemSelector,b.dom));this.updateIndexes(0)}this.hasSkippedEmptyText=true},getTemplateTarget:function(){return this.el},prepareData:function(a){return a},collectData:function(b,e){var d=[],c=0,a=b.length;for(;c<a;c++){d[d.length]=this.prepareData(b[c].data,e+c,b[c])}return d},bufferRender:function(a,b){var c=document.createElement("div");this.tpl.overwrite(c,this.collectData(a,b));return Ext.query(this.itemSelector,c)},onUpdate:function(g,a){var b=this.store.indexOf(a);if(b>-1){var e=this.isSelected(b),c=this.all.elements[b],d=this.bufferRender([a],b)[0];this.all.replaceElement(b,d,true);if(e){this.selected.replaceElement(c,d);this.all.item(b).addClass(this.selectedClass)}this.updateIndexes(b,b)}},onAdd:function(g,d,e){if(this.all.getCount()===0){this.refresh();return}var c=this.bufferRender(d,e),h,b=this.all.elements;if(e<this.all.getCount()){h=this.all.item(e).insertSibling(c,"before",true);b.splice.apply(b,[e,0].concat(c))}else{h=this.all.last().insertSibling(c,"after",true);b.push.apply(b,c)}this.updateIndexes(e)},onRemove:function(c,a,b){this.deselect(b);this.all.removeElement(b,true);this.updateIndexes(b);if(this.store.getCount()===0){this.refresh()}},refreshNode:function(a){this.onUpdate(this.store,this.store.getAt(a))},updateIndexes:function(d,c){var b=this.all.elements;d=d||0;c=c||((c===0)?0:(b.length-1));for(var a=d;a<=c;a++){b[a].viewIndex=a}},getStore:function(){return this.store},bindStore:function(a,b){if(!b&&this.store){if(a!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("datachanged",this.onDataChanged,this);this.store.un("add",this.onAdd,this);this.store.un("remove",this.onRemove,this);this.store.un("update",this.onUpdate,this);this.store.un("clear",this.refresh,this)}if(!a){this.store=null}}if(a){a=Ext.StoreMgr.lookup(a);a.on({scope:this,beforeload:this.onBeforeLoad,datachanged:this.onDataChanged,add:this.onAdd,remove:this.onRemove,update:this.onUpdate,clear:this.refresh})}this.store=a;if(a){this.refresh()}},onDataChanged:function(){if(this.blockRefresh!==true){this.refresh.apply(this,arguments)}},findItemFromChild:function(a){return Ext.fly(a).findParent(this.itemSelector,this.getTemplateTarget())},onClick:function(c){var b=c.getTarget(this.itemSelector,this.getTemplateTarget()),a;if(b){a=this.indexOf(b);if(this.onItemClick(b,a,c)!==false){this.fireEvent("click",this,a,b,c)}}else{if(this.fireEvent("containerclick",this,c)!==false){this.onContainerClick(c)}}},onContainerClick:function(a){this.clearSelections()},onContextMenu:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a){this.fireEvent("contextmenu",this,this.indexOf(a),a,b)}else{this.fireEvent("containercontextmenu",this,b)}},onDblClick:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a){this.fireEvent("dblclick",this,this.indexOf(a),a,b)}},onMouseOver:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a&&a!==this.lastItem){this.lastItem=a;Ext.fly(a).addClass(this.overClass);this.fireEvent("mouseenter",this,this.indexOf(a),a,b)}},onMouseOut:function(a){if(this.lastItem){if(!a.within(this.lastItem,true,true)){Ext.fly(this.lastItem).removeClass(this.overClass);this.fireEvent("mouseleave",this,this.indexOf(this.lastItem),this.lastItem,a);delete this.lastItem}}},onItemClick:function(b,a,c){if(this.fireEvent("beforeclick",this,a,b,c)===false){return false}if(this.multiSelect){this.doMultiSelection(b,a,c);c.preventDefault()}else{if(this.singleSelect){this.doSingleSelection(b,a,c);c.preventDefault()}}return true},doSingleSelection:function(b,a,c){if(c.ctrlKey&&this.isSelected(a)){this.deselect(a)}else{this.select(a,false)}},doMultiSelection:function(c,a,d){if(d.shiftKey&&this.last!==false){var b=this.last;this.selectRange(b,a,d.ctrlKey);this.last=b}else{if((d.ctrlKey||this.simpleSelect)&&this.isSelected(a)){this.deselect(a)}else{this.select(a,d.ctrlKey||d.shiftKey||this.simpleSelect)}}},getSelectionCount:function(){return this.selected.getCount()},getSelectedNodes:function(){return this.selected.elements},getSelectedIndexes:function(){var b=[],d=this.selected.elements,c=0,a=d.length;for(;c<a;c++){b.push(d[c].viewIndex)}return b},getSelectedRecords:function(){return this.getRecords(this.selected.elements)},getRecords:function(c){var b=[],d=0,a=c.length;for(;d<a;d++){b[b.length]=this.store.getAt(c[d].viewIndex)}return b},getRecord:function(a){return this.store.getAt(a.viewIndex)},clearSelections:function(a,b){if((this.multiSelect||this.singleSelect)&&this.selected.getCount()>0){if(!b){this.selected.removeClass(this.selectedClass)}this.selected.clear();this.last=false;if(!a){this.fireEvent("selectionchange",this,this.selected.elements)}}},isSelected:function(a){return this.selected.contains(this.getNode(a))},deselect:function(a){if(this.isSelected(a)){a=this.getNode(a);this.selected.removeElement(a);if(this.last==a.viewIndex){this.last=false}Ext.fly(a).removeClass(this.selectedClass);this.fireEvent("selectionchange",this,this.selected.elements)}},select:function(d,g,b){if(Ext.isArray(d)){if(!g){this.clearSelections(true)}for(var c=0,a=d.length;c<a;c++){this.select(d[c],true,true)}if(!b){this.fireEvent("selectionchange",this,this.selected.elements)}}else{var e=this.getNode(d);if(!g){this.clearSelections(true)}if(e&&!this.isSelected(e)){if(this.fireEvent("beforeselect",this,e,this.selected.elements)!==false){Ext.fly(e).addClass(this.selectedClass);this.selected.add(e);this.last=e.viewIndex;if(!b){this.fireEvent("selectionchange",this,this.selected.elements)}}}}},selectRange:function(c,a,b){if(!b){this.clearSelections(true)}this.select(this.getNodes(c,a),true)},getNode:function(b){if(Ext.isString(b)){return document.getElementById(b)}else{if(Ext.isNumber(b)){return this.all.elements[b]}else{if(b instanceof Ext.data.Record){var a=this.store.indexOf(b);return this.all.elements[a]}}}return b},getNodes:function(e,a){var d=this.all.elements,b=[],c;e=e||0;a=!Ext.isDefined(a)?Math.max(d.length-1,0):a;if(e<=a){for(c=e;c<=a&&d[c];c++){b.push(d[c])}}else{for(c=e;c>=a&&d[c];c--){b.push(d[c])}}return b},indexOf:function(a){a=this.getNode(a);if(Ext.isNumber(a.viewIndex)){return a.viewIndex}return this.all.indexOf(a)},onBeforeLoad:function(){if(this.loadingText){this.clearSelections(false,true);this.getTemplateTarget().update('<div class="loading-indicator">'+this.loadingText+"</div>");this.all.clear()}},onDestroy:function(){this.all.clear();this.selected.clear();Ext.DataView.superclass.onDestroy.call(this);this.bindStore(null)}});Ext.DataView.prototype.setStore=Ext.DataView.prototype.bindStore;Ext.reg("dataview",Ext.DataView);Ext.list.ListView=Ext.extend(Ext.DataView,{itemSelector:"dl",selectedClass:"x-list-selected",overClass:"x-list-over",scrollOffset:undefined,columnResize:true,columnSort:true,maxColumnWidth:Ext.isIE9m?99:100,initComponent:function(){if(this.columnResize){this.colResizer=new Ext.list.ColumnResizer(this.colResizer);this.colResizer.init(this)}if(this.columnSort){this.colSorter=new Ext.list.Sorter(this.columnSort);this.colSorter.init(this)}if(!this.internalTpl){this.internalTpl=new Ext.XTemplate('<div class="x-list-header"><div class="x-list-header-inner">','<tpl for="columns">','<div style="width:{[values.width*100]}%;text-align:{align};"><em class="x-unselectable" unselectable="on" id="',this.id,'-xlhd-{#}">',"{header}","</em></div>","</tpl>",'<div class="x-clear"></div>',"</div></div>",'<div class="x-list-body"><div class="x-list-body-inner">',"</div></div>")}if(!this.tpl){this.tpl=new Ext.XTemplate('<tpl for="rows">',"<dl>",'<tpl for="parent.columns">','<dt style="width:{[values.width*100]}%;text-align:{align};">','<em unselectable="on"<tpl if="cls"> class="{cls}</tpl>">',"{[values.tpl.apply(parent)]}","</em></dt>","</tpl>",'<div class="x-clear"></div>',"</dl>","</tpl>")}var l=this.columns,h=0,k=0,m=l.length,b=[];for(var g=0;g<m;g++){var n=l[g];if(!n.isColumn){n.xtype=n.xtype?(/^lv/.test(n.xtype)?n.xtype:"lv"+n.xtype):"lvcolumn";n=Ext.create(n)}if(n.width){h+=n.width*100;if(h>this.maxColumnWidth){n.width-=(h-this.maxColumnWidth)/100}k++}b.push(n)}l=this.columns=b;if(k<m){var d=m-k;if(h<this.maxColumnWidth){var a=((this.maxColumnWidth-h)/d)/100;for(var e=0;e<m;e++){var n=l[e];if(!n.width){n.width=a}}}}Ext.list.ListView.superclass.initComponent.call(this)},onRender:function(){this.autoEl={cls:"x-list-wrap"};Ext.list.ListView.superclass.onRender.apply(this,arguments);this.internalTpl.overwrite(this.el,{columns:this.columns});this.innerBody=Ext.get(this.el.dom.childNodes[1].firstChild);this.innerHd=Ext.get(this.el.dom.firstChild.firstChild);if(this.hideHeaders){this.el.dom.firstChild.style.display="none"}},getTemplateTarget:function(){return this.innerBody},collectData:function(){var a=Ext.list.ListView.superclass.collectData.apply(this,arguments);return{columns:this.columns,rows:a}},verifyInternalSize:function(){if(this.lastSize){this.onResize(this.lastSize.width,this.lastSize.height)}},onResize:function(c,e){var b=this.innerBody.dom,g=this.innerHd.dom,d=c-Ext.num(this.scrollOffset,Ext.getScrollBarWidth())+"px",a;if(!b){return}a=b.parentNode;if(Ext.isNumber(c)){if(this.reserveScrollOffset||((a.offsetWidth-a.clientWidth)>10)){b.style.width=d;g.style.width=d}else{b.style.width=c+"px";g.style.width=c+"px";setTimeout(function(){if((a.offsetWidth-a.clientWidth)>10){b.style.width=d;g.style.width=d}},10)}}if(Ext.isNumber(e)){a.style.height=Math.max(0,e-g.parentNode.offsetHeight)+"px"}},updateIndexes:function(){Ext.list.ListView.superclass.updateIndexes.apply(this,arguments);this.verifyInternalSize()},findHeaderIndex:function(g){g=g.dom||g;var a=g.parentNode,d=a.parentNode.childNodes,b=0,e;for(;e=d[b];b++){if(e==a){return b}}return -1},setHdWidths:function(){var d=this.innerHd.dom.getElementsByTagName("div"),c=0,b=this.columns,a=b.length;for(;c<a;c++){d[c].style.width=(b[c].width*100)+"%"}}});Ext.reg("listview",Ext.list.ListView);Ext.ListView=Ext.list.ListView;Ext.list.Column=Ext.extend(Object,{isColumn:true,align:"left",header:"",width:null,cls:"",constructor:function(a){if(!a.tpl){a.tpl=new Ext.XTemplate("{"+a.dataIndex+"}")}else{if(Ext.isString(a.tpl)){a.tpl=new Ext.XTemplate(a.tpl)}}Ext.apply(this,a)}});Ext.reg("lvcolumn",Ext.list.Column);Ext.list.NumberColumn=Ext.extend(Ext.list.Column,{format:"0,000.00",constructor:function(a){a.tpl=a.tpl||new Ext.XTemplate("{"+a.dataIndex+':number("'+(a.format||this.format)+'")}');Ext.list.NumberColumn.superclass.constructor.call(this,a)}});Ext.reg("lvnumbercolumn",Ext.list.NumberColumn);Ext.list.DateColumn=Ext.extend(Ext.list.Column,{format:"m/d/Y",constructor:function(a){a.tpl=a.tpl||new Ext.XTemplate("{"+a.dataIndex+':date("'+(a.format||this.format)+'")}');Ext.list.DateColumn.superclass.constructor.call(this,a)}});Ext.reg("lvdatecolumn",Ext.list.DateColumn);Ext.list.BooleanColumn=Ext.extend(Ext.list.Column,{trueText:"true",falseText:"false",undefinedText:"&#160;",constructor:function(e){e.tpl=e.tpl||new Ext.XTemplate("{"+e.dataIndex+":this.format}");var b=this.trueText,d=this.falseText,a=this.undefinedText;e.tpl.format=function(c){if(c===undefined){return a}if(!c||c==="false"){return d}return b};Ext.list.DateColumn.superclass.constructor.call(this,e)}});Ext.reg("lvbooleancolumn",Ext.list.BooleanColumn);Ext.list.ColumnResizer=Ext.extend(Ext.util.Observable,{minPct:0.05,constructor:function(a){Ext.apply(this,a);Ext.list.ColumnResizer.superclass.constructor.call(this)},init:function(a){this.view=a;a.on("render",this.initEvents,this)},initEvents:function(a){a.mon(a.innerHd,"mousemove",this.handleHdMove,this);this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeStart.createDelegate(this),onStart:this.onStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(a.innerHd);a.on("beforedestroy",this.tracker.destroy,this.tracker)},handleHdMove:function(i,d){var c=5,b=i.getPageX(),j=i.getTarget("em",3,true);if(j){var h=j.getRegion(),g=j.dom.style,a=j.dom.parentNode;if(b-h.left<=c&&a!=a.parentNode.firstChild){this.activeHd=Ext.get(a.previousSibling.firstChild);g.cursor=Ext.isWebKit?"e-resize":"col-resize"}else{if(h.right-b<=c&&a!=a.parentNode.lastChild.previousSibling){this.activeHd=j;g.cursor=Ext.isWebKit?"w-resize":"col-resize"}else{delete this.activeHd;g.cursor=""}}}},onBeforeStart:function(a){this.dragHd=this.activeHd;return !!this.dragHd},onStart:function(g){var d=this,b=d.view,c=d.dragHd,a=d.tracker.getXY()[0];d.proxy=b.el.createChild({cls:"x-list-resizer"});d.dragX=c.getX();d.headerIndex=b.findHeaderIndex(c);d.headersDisabled=b.disableHeaders;b.disableHeaders=true;d.proxy.setHeight(b.el.getHeight());d.proxy.setX(d.dragX);d.proxy.setWidth(a-d.dragX);this.setBoundaries()},setBoundaries:function(j){var k=this.view,h=this.headerIndex,c=k.innerHd.getWidth(),j=k.innerHd.getX(),b=Math.ceil(c*this.minPct),l=c-b,e=k.columns.length,d=k.innerHd.select("em",true),g=b+j,a=l+j,i;if(e==2){this.minX=g;this.maxX=a}else{i=d.item(h+2);this.minX=d.item(h).getX()+b;this.maxX=i?i.getX()-b:a;if(h==0){this.minX=g}else{if(h==e-2){this.maxX=a}}}},onDrag:function(c){var b=this,a=b.tracker.getXY()[0].constrain(b.minX,b.maxX);b.proxy.setWidth(a-this.dragX)},onEnd:function(i){var g=this.proxy.getWidth(),h=this.headerIndex,l=this.view,c=l.columns,b=l.innerHd.getWidth(),k=Math.ceil(g*l.maxColumnWidth/b)/100,d=this.headersDisabled,m=c[h],j=c[h+1],a=m.width+j.width;this.proxy.remove();m.width=k;j.width=a-k;delete this.dragHd;l.setHdWidths();l.refresh();setTimeout(function(){l.disableHeaders=d},100)}});Ext.ListView.ColumnResizer=Ext.list.ColumnResizer;Ext.list.Sorter=Ext.extend(Ext.util.Observable,{sortClasses:["sort-asc","sort-desc"],constructor:function(a){Ext.apply(this,a);Ext.list.Sorter.superclass.constructor.call(this)},init:function(a){this.view=a;a.on("render",this.initEvents,this)},initEvents:function(a){a.mon(a.innerHd,"click",this.onHdClick,this);a.innerHd.setStyle("cursor","pointer");a.mon(a.store,"datachanged",this.updateSortState,this);this.updateSortState.defer(10,this,[a.store])},updateSortState:function(c){var g=c.getSortState();if(!g){return}this.sortState=g;var e=this.view.columns,h=-1;for(var d=0,a=e.length;d<a;d++){if(e[d].dataIndex==g.field){h=d;break}}if(h!=-1){var b=g.direction;this.updateSortIcon(h,b)}},updateSortIcon:function(b,a){var d=this.sortClasses;var c=this.view.innerHd.select("em").removeClass(d);c.item(b).addClass(d[a=="DESC"?1:0])},onHdClick:function(c){var b=c.getTarget("em",3);if(b&&!this.view.disableHeaders){var a=this.view.findHeaderIndex(b);this.view.store.sort(this.view.columns[a].dataIndex)}}});Ext.ListView.Sorter=Ext.list.Sorter;Ext.TabPanel=Ext.extend(Ext.Panel,{deferredRender:true,tabWidth:120,minTabWidth:30,resizeTabs:false,enableTabScroll:false,scrollIncrement:0,scrollRepeatInterval:400,scrollDuration:0.35,animScroll:true,tabPosition:"top",baseCls:"x-tab-panel",autoTabs:false,autoTabSelector:"div.x-tab",activeTab:undefined,tabMargin:2,plain:false,wheelIncrement:20,idDelimiter:"__",itemCls:"x-tab-item",elements:"body",headerAsText:false,frame:false,hideBorders:true,initComponent:function(){this.frame=false;Ext.TabPanel.superclass.initComponent.call(this);this.addEvents("beforetabchange","tabchange","contextmenu");this.setLayout(new Ext.layout.CardLayout(Ext.apply({layoutOnCardChange:this.layoutOnTabChange,deferredRender:this.deferredRender},this.layoutConfig)));if(this.tabPosition=="top"){this.elements+=",header";this.stripTarget="header"}else{this.elements+=",footer";this.stripTarget="footer"}if(!this.stack){this.stack=Ext.TabPanel.AccessStack()}this.initItems()},onRender:function(c,a){Ext.TabPanel.superclass.onRender.call(this,c,a);if(this.plain){var g=this.tabPosition=="top"?"header":"footer";this[g].addClass("x-tab-panel-"+g+"-plain")}var b=this[this.stripTarget];this.stripWrap=b.createChild({cls:"x-tab-strip-wrap",cn:{tag:"ul",cls:"x-tab-strip x-tab-strip-"+this.tabPosition}});var e=(this.tabPosition=="bottom"?this.stripWrap:null);b.createChild({cls:"x-tab-strip-spacer"},e);this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:"li",cls:"x-tab-edge",cn:[{tag:"span",cls:"x-tab-strip-text",cn:"&#160;"}]});this.strip.createChild({cls:"x-clear"});this.body.addClass("x-tab-panel-body-"+this.tabPosition);if(!this.itemTpl){var d=new Ext.Template('<li class="{cls}" id="{id}"><a class="x-tab-strip-close"></a>','<a class="x-tab-right" href="#"><em class="x-tab-left">','<span class="x-tab-strip-inner"><span class="x-tab-strip-text {iconCls}">{text}</span></span>',"</em></a></li>");d.disableFormats=true;d.compile();Ext.TabPanel.prototype.itemTpl=d}this.items.each(this.initTab,this)},afterRender:function(){Ext.TabPanel.superclass.afterRender.call(this);if(this.autoTabs){this.readTabs(false)}if(this.activeTab!==undefined){var a=Ext.isObject(this.activeTab)?this.activeTab:this.items.get(this.activeTab);delete this.activeTab;this.setActiveTab(a)}},initEvents:function(){Ext.TabPanel.superclass.initEvents.call(this);this.mon(this.strip,{scope:this,mousedown:this.onStripMouseDown,contextmenu:this.onStripContextMenu});if(this.enableTabScroll){this.mon(this.strip,"mousewheel",this.onWheel,this)}},findTargets:function(c){var b=null,a=c.getTarget("li:not(.x-tab-edge)",this.strip);if(a){b=this.getComponent(a.id.split(this.idDelimiter)[1]);if(b.disabled){return{close:null,item:null,el:null}}}return{close:c.getTarget(".x-tab-strip-close",this.strip),item:b,el:a}},onStripMouseDown:function(b){if(b.button!==0){return}b.preventDefault();var a=this.findTargets(b);if(a.close){if(a.item.fireEvent("beforeclose",a.item)!==false){a.item.fireEvent("close",a.item);this.remove(a.item)}return}if(a.item&&a.item!=this.activeTab){this.setActiveTab(a.item)}},onStripContextMenu:function(b){b.preventDefault();var a=this.findTargets(b);if(a.item){this.fireEvent("contextmenu",this,a.item,b)}},readTabs:function(d){if(d===true){this.items.each(function(h){this.remove(h)},this)}var c=this.el.query(this.autoTabSelector);for(var b=0,a=c.length;b<a;b++){var e=c[b],g=e.getAttribute("title");e.removeAttribute("title");this.add({title:g,contentEl:e})}},initTab:function(d,b){var e=this.strip.dom.childNodes[b],g=this.getTemplateArgs(d),c=e?this.itemTpl.insertBefore(e,g):this.itemTpl.append(this.strip,g),a="x-tab-strip-over",h=Ext.get(c);h.hover(function(){if(!d.disabled){h.addClass(a)}},function(){h.removeClass(a)});if(d.tabTip){h.child("span.x-tab-strip-text",true).qtip=d.tabTip}d.tabEl=c;h.select("a").on("click",function(i){if(!i.getPageX()){this.onStripMouseDown(i)}},this,{preventDefault:true});d.on({scope:this,disable:this.onItemDisabled,enable:this.onItemEnabled,titlechange:this.onItemTitleChanged,iconchange:this.onItemIconChanged,beforeshow:this.onBeforeShowItem})},getTemplateArgs:function(b){var a=b.closable?"x-tab-strip-closable":"";if(b.disabled){a+=" x-item-disabled"}if(b.iconCls){a+=" x-tab-with-icon"}if(b.tabCls){a+=" "+b.tabCls}return{id:this.id+this.idDelimiter+b.getItemId(),text:b.title,cls:a,iconCls:b.iconCls||""}},onAdd:function(b){Ext.TabPanel.superclass.onAdd.call(this,b);if(this.rendered){var a=this.items;this.initTab(b,a.indexOf(b));this.delegateUpdates()}},onBeforeAdd:function(b){var a=b.events?(this.items.containsKey(b.getItemId())?b:null):this.items.get(b);if(a){this.setActiveTab(b);return false}Ext.TabPanel.superclass.onBeforeAdd.apply(this,arguments);var c=b.elements;b.elements=c?c.replace(",header",""):c;b.border=(b.border===true)},onRemove:function(d){var b=Ext.get(d.tabEl);if(b){b.select("a").removeAllListeners();Ext.destroy(b)}Ext.TabPanel.superclass.onRemove.call(this,d);this.stack.remove(d);delete d.tabEl;d.un("disable",this.onItemDisabled,this);d.un("enable",this.onItemEnabled,this);d.un("titlechange",this.onItemTitleChanged,this);d.un("iconchange",this.onItemIconChanged,this);d.un("beforeshow",this.onBeforeShowItem,this);if(d==this.activeTab){var a=this.stack.next();if(a){this.setActiveTab(a)}else{if(this.items.getCount()>0){this.setActiveTab(0)}else{this.setActiveTab(null)}}}if(!this.destroying){this.delegateUpdates()}},onBeforeShowItem:function(a){if(a!=this.activeTab){this.setActiveTab(a);return false}},onItemDisabled:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).addClass("x-item-disabled")}this.stack.remove(b)},onItemEnabled:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).removeClass("x-item-disabled")}},onItemTitleChanged:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).child("span.x-tab-strip-text",true).innerHTML=b.title;this.delegateUpdates()}},onItemIconChanged:function(d,a,c){var b=this.getTabEl(d);if(b){b=Ext.get(b);b.child("span.x-tab-strip-text").replaceClass(c,a);b[Ext.isEmpty(a)?"removeClass":"addClass"]("x-tab-with-icon");this.delegateUpdates()}},getTabEl:function(a){var b=this.getComponent(a);return b?b.tabEl:null},onResize:function(){Ext.TabPanel.superclass.onResize.apply(this,arguments);this.delegateUpdates()},beginUpdate:function(){this.suspendUpdates=true},endUpdate:function(){this.suspendUpdates=false;this.delegateUpdates()},hideTabStripItem:function(b){b=this.getComponent(b);var a=this.getTabEl(b);if(a){a.style.display="none";this.delegateUpdates()}this.stack.remove(b)},unhideTabStripItem:function(b){b=this.getComponent(b);var a=this.getTabEl(b);if(a){a.style.display="";this.delegateUpdates()}},delegateUpdates:function(){var a=this.rendered;if(this.suspendUpdates){return}if(this.resizeTabs&&a){this.autoSizeTabs()}if(this.enableTabScroll&&a){this.autoScrollTabs()}},autoSizeTabs:function(){var h=this.items.length,b=this.tabPosition!="bottom"?"header":"footer",c=this[b].dom.offsetWidth,a=this[b].dom.clientWidth;if(!this.resizeTabs||h<1||!a){return}var k=Math.max(Math.min(Math.floor((a-4)/h)-this.tabMargin,this.tabWidth),this.minTabWidth);this.lastTabWidth=k;var m=this.strip.query("li:not(.x-tab-edge)");for(var e=0,j=m.length;e<j;e++){var l=m[e],n=Ext.fly(l).child(".x-tab-strip-inner",true),g=l.offsetWidth,d=n.offsetWidth;n.style.width=(k-(g-d))+"px"}},adjustBodyWidth:function(a){if(this.header){this.header.setWidth(a)}if(this.footer){this.footer.setWidth(a)}return a},setActiveTab:function(c){c=this.getComponent(c);if(this.fireEvent("beforetabchange",this,c,this.activeTab)===false){return}if(!this.rendered){this.activeTab=c;return}if(this.activeTab!=c){if(this.activeTab){var a=this.getTabEl(this.activeTab);if(a){Ext.fly(a).removeClass("x-tab-strip-active")}}this.activeTab=c;if(c){var b=this.getTabEl(c);Ext.fly(b).addClass("x-tab-strip-active");this.stack.add(c);this.layout.setActiveItem(c);this.delegateUpdates();if(this.scrolling){this.scrollToTab(c,this.animScroll)}}this.fireEvent("tabchange",this,c)}},getActiveTab:function(){return this.activeTab||null},getItem:function(a){return this.getComponent(a)},autoScrollTabs:function(){this.pos=this.tabPosition=="bottom"?this.footer:this.header;var h=this.items.length,d=this.pos.dom.offsetWidth,c=this.pos.dom.clientWidth,g=this.stripWrap,e=g.dom,b=e.offsetWidth,i=this.getScrollPos(),a=this.edge.getOffsetsTo(this.stripWrap)[0]+i;if(!this.enableTabScroll||b<20){return}if(h==0||a<=c){e.scrollLeft=0;g.setWidth(c);if(this.scrolling){this.scrolling=false;this.pos.removeClass("x-tab-scrolling");this.scrollLeft.hide();this.scrollRight.hide();if(Ext.isAir||Ext.isWebKit){e.style.marginLeft="";e.style.marginRight=""}}}else{if(!this.scrolling){this.pos.addClass("x-tab-scrolling");if(Ext.isAir||Ext.isWebKit){e.style.marginLeft="18px";e.style.marginRight="18px"}}c-=g.getMargins("lr");g.setWidth(c>20?c:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(i>(a-c)){e.scrollLeft=a-c}else{this.scrollToTab(this.activeTab,false)}this.updateScrollButtons()}},createScrollers:function(){this.pos.addClass("x-tab-scrolling-"+this.tabPosition);var c=this.stripWrap.dom.offsetHeight;var a=this.pos.insertFirst({cls:"x-tab-scroller-left"});a.setHeight(c);a.addClassOnOver("x-tab-scroller-left-over");this.leftRepeater=new Ext.util.ClickRepeater(a,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=a;var b=this.pos.insertFirst({cls:"x-tab-scroller-right"});b.setHeight(c);b.addClassOnOver("x-tab-scroller-right-over");this.rightRepeater=new Ext.util.ClickRepeater(b,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=b},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},getScrollIncrement:function(){return this.scrollIncrement||(this.resizeTabs?this.lastTabWidth+2:100)},scrollToTab:function(e,a){if(!e){return}var c=this.getTabEl(e),h=this.getScrollPos(),d=this.getScrollArea(),g=Ext.fly(c).getOffsetsTo(this.stripWrap)[0]+h,b=g+c.offsetWidth;if(g<h){this.scrollTo(g,a)}else{if(b>(h+d)){this.scrollTo(b-d,a)}}},scrollTo:function(b,a){this.stripWrap.scrollTo("left",b,a?this.getScrollAnim():false);if(!a){this.updateScrollButtons()}},onWheel:function(g){var h=g.getWheelDelta()*this.wheelIncrement*-1;g.stopEvent();var i=this.getScrollPos(),c=i+h,a=this.getScrollWidth()-this.getScrollArea();var b=Math.max(0,Math.min(a,c));if(b!=i){this.scrollTo(b,false)}},onScrollRight:function(){var a=this.getScrollWidth()-this.getScrollArea(),c=this.getScrollPos(),b=Math.min(a,c+this.getScrollIncrement());if(b!=c){this.scrollTo(b,this.animScroll)}},onScrollLeft:function(){var b=this.getScrollPos(),a=Math.max(0,b-this.getScrollIncrement());if(a!=b){this.scrollTo(a,this.animScroll)}},updateScrollButtons:function(){var a=this.getScrollPos();this.scrollLeft[a===0?"addClass":"removeClass"]("x-tab-scroller-left-disabled");this.scrollRight[a>=(this.getScrollWidth()-this.getScrollArea())?"addClass":"removeClass"]("x-tab-scroller-right-disabled")},beforeDestroy:function(){Ext.destroy(this.leftRepeater,this.rightRepeater);this.deleteMembers("strip","edge","scrollLeft","scrollRight","stripWrap");this.activeTab=null;Ext.TabPanel.superclass.beforeDestroy.apply(this)}});Ext.reg("tabpanel",Ext.TabPanel);Ext.TabPanel.prototype.activate=Ext.TabPanel.prototype.setActiveTab;Ext.TabPanel.AccessStack=function(){var a=[];return{add:function(b){a.push(b);if(a.length>10){a.shift()}},remove:function(e){var d=[];for(var c=0,b=a.length;c<b;c++){if(a[c]!=e){d.push(a[c])}}a=d},next:function(){return a.pop()}}};Ext.Button=Ext.extend(Ext.BoxComponent,{hidden:false,disabled:false,pressed:false,enableToggle:false,menuAlign:"tl-bl?",type:"button",menuClassTarget:"tr:nth(2)",clickEvent:"click",handleMouseEvents:true,tooltipType:"qtip",buttonSelector:"button:first-child",scale:"small",iconAlign:"left",arrowAlign:"right",initComponent:function(){if(this.menu){if(Ext.isArray(this.menu)){this.menu={items:this.menu}}if(Ext.isObject(this.menu)){this.menu.ownerCt=this}this.menu=Ext.menu.MenuMgr.get(this.menu);this.menu.ownerCt=undefined}Ext.Button.superclass.initComponent.call(this);this.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout");if(Ext.isString(this.toggleGroup)){this.enableToggle=true}},getTemplateArgs:function(){return[this.type,"x-btn-"+this.scale+" x-btn-icon-"+this.scale+"-"+this.iconAlign,this.getMenuClass(),this.cls,this.id]},setButtonClass:function(){if(this.useSetClass){if(!Ext.isEmpty(this.oldCls)){this.el.removeClass([this.oldCls,"x-btn-pressed"])}this.oldCls=(this.iconCls||this.icon)?(this.text?"x-btn-text-icon":"x-btn-icon"):"x-btn-noicon";this.el.addClass([this.oldCls,this.pressed?"x-btn-pressed":null])}},getMenuClass:function(){return this.menu?(this.arrowAlign!="bottom"?"x-btn-arrow":"x-btn-arrow-bottom"):""},onRender:function(c,a){if(!this.template){if(!Ext.Button.buttonTemplate){Ext.Button.buttonTemplate=new Ext.Template('<table id="{4}" cellspacing="0" class="x-btn {3}"><tbody class="{1}">','<tr><td class="x-btn-tl"><i>&#160;</i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i>&#160;</i></td></tr>','<tr><td class="x-btn-ml"><i>&#160;</i></td><td class="x-btn-mc"><em class="{2} x-unselectable" unselectable="on"><button type="{0}"></button></em></td><td class="x-btn-mr"><i>&#160;</i></td></tr>','<tr><td class="x-btn-bl"><i>&#160;</i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i>&#160;</i></td></tr>',"</tbody></table>");Ext.Button.buttonTemplate.compile()}this.template=Ext.Button.buttonTemplate}var b,d=this.getTemplateArgs();if(a){b=this.template.insertBefore(a,d,true)}else{b=this.template.append(c,d,true)}this.btnEl=b.child(this.buttonSelector);this.mon(this.btnEl,{scope:this,focus:this.onFocus,blur:this.onBlur});this.initButtonEl(b,this.btnEl);Ext.ButtonToggleMgr.register(this)},initButtonEl:function(b,c){this.el=b;this.setIcon(this.icon);this.setText(this.text);this.setIconClass(this.iconCls);if(Ext.isDefined(this.tabIndex)){c.dom.tabIndex=this.tabIndex}if(this.tooltip){this.setTooltip(this.tooltip,true)}if(this.handleMouseEvents){this.mon(b,{scope:this,mouseover:this.onMouseOver,mousedown:this.onMouseDown})}if(this.menu){this.mon(this.menu,{scope:this,show:this.onMenuShow,hide:this.onMenuHide})}if(this.repeat){var a=new Ext.util.ClickRepeater(b,Ext.isObject(this.repeat)?this.repeat:{});this.mon(a,"click",this.onRepeatClick,this)}else{this.mon(b,this.clickEvent,this.onClick,this)}},afterRender:function(){Ext.Button.superclass.afterRender.call(this);this.useSetClass=true;this.setButtonClass();this.doc=Ext.getDoc();this.doAutoWidth()},setIconClass:function(a){this.iconCls=a;if(this.el){this.btnEl.dom.className="";this.btnEl.addClass(["x-btn-text",a||""]);this.setButtonClass()}return this},setTooltip:function(b,a){if(this.rendered){if(!a){this.clearTip()}if(Ext.isObject(b)){Ext.QuickTips.register(Ext.apply({target:this.btnEl.id},b));this.tooltip=b}else{this.btnEl.dom[this.tooltipType]=b}}else{this.tooltip=b}return this},clearTip:function(){if(Ext.isObject(this.tooltip)){Ext.QuickTips.unregister(this.btnEl)}},beforeDestroy:function(){if(this.rendered){this.clearTip()}if(this.menu&&this.destroyMenu!==false){Ext.destroy(this.btnEl,this.menu)}Ext.destroy(this.repeater)},onDestroy:function(){if(this.rendered){this.doc.un("mouseover",this.monitorMouseOver,this);this.doc.un("mouseup",this.onMouseUp,this);delete this.doc;delete this.btnEl;Ext.ButtonToggleMgr.unregister(this)}Ext.Button.superclass.onDestroy.call(this)},doAutoWidth:function(){if(this.autoWidth!==false&&this.el&&this.text&&this.width===undefined){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var a=this.btnEl;if(a&&a.getWidth()>20){a.clip();a.setWidth(Ext.util.TextMetrics.measure(a,this.text).width+a.getFrameWidth("lr"))}}if(this.minWidth){if(this.el.getWidth()<this.minWidth){this.el.setWidth(this.minWidth)}}}},setHandler:function(b,a){this.handler=b;this.scope=a;return this},setText:function(a){this.text=a;if(this.el){this.btnEl.update(a||"&#160;");this.setButtonClass()}this.doAutoWidth();return this},setIcon:function(a){this.icon=a;if(this.el){this.btnEl.setStyle("background-image",a?"url("+a+")":"");this.setButtonClass()}return this},getText:function(){return this.text},toggle:function(b,a){b=b===undefined?!this.pressed:!!b;if(b!=this.pressed){if(this.rendered){this.el[b?"addClass":"removeClass"]("x-btn-pressed")}this.pressed=b;if(!a){this.fireEvent("toggle",this,b);if(this.toggleHandler){this.toggleHandler.call(this.scope||this,this,b)}}}return this},onDisable:function(){this.onDisableChange(true)},onEnable:function(){this.onDisableChange(false)},onDisableChange:function(a){if(this.el){if(!Ext.isIE6||!this.text){this.el[a?"addClass":"removeClass"](this.disabledClass)}this.el.dom.disabled=a}this.disabled=a},showMenu:function(){if(this.rendered&&this.menu){if(this.tooltip){Ext.QuickTips.getQuickTip().cancelShow(this.btnEl)}if(this.menu.isVisible()){this.menu.hide()}this.menu.ownerCt=this;this.menu.show(this.el,this.menuAlign)}return this},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){return this.menu&&this.menu.ownerCt==this&&this.menu.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(a){if(a){a.preventDefault()}if(a.button!==0){return}if(!this.disabled){this.doToggle();if(this.menu&&!this.hasVisibleMenu()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("click",this,a);if(this.handler){this.handler.call(this.scope||this,this,a)}}},doToggle:function(){if(this.enableToggle&&(this.allowDepress!==false||!this.pressed)){this.toggle()}},isMenuTriggerOver:function(b,a){return this.menu&&!a},isMenuTriggerOut:function(b,a){return this.menu&&!a},onMouseOver:function(b){if(!this.disabled){var a=b.within(this.el,true);if(!a){this.el.addClass("x-btn-over");if(!this.monitoringMouseOver){this.doc.on("mouseover",this.monitorMouseOver,this);this.monitoringMouseOver=true}this.fireEvent("mouseover",this,b)}if(this.isMenuTriggerOver(b,a)){this.fireEvent("menutriggerover",this,this.menu,b)}}},monitorMouseOver:function(a){if(a.target!=this.el.dom&&!a.within(this.el)){if(this.monitoringMouseOver){this.doc.un("mouseover",this.monitorMouseOver,this);this.monitoringMouseOver=false}this.onMouseOut(a)}},onMouseOut:function(b){var a=b.within(this.el)&&b.target!=this.el.dom;this.el.removeClass("x-btn-over");this.fireEvent("mouseout",this,b);if(this.isMenuTriggerOut(b,a)){this.fireEvent("menutriggerout",this,this.menu,b)}},focus:function(){this.btnEl.focus()},blur:function(){this.btnEl.blur()},onFocus:function(a){if(!this.disabled){this.el.addClass("x-btn-focus")}},onBlur:function(a){this.el.removeClass("x-btn-focus")},getClickEl:function(b,a){return this.el},onMouseDown:function(a){if(!this.disabled&&a.button===0){this.getClickEl(a).addClass("x-btn-click");this.doc.on("mouseup",this.onMouseUp,this)}},onMouseUp:function(a){if(a.button===0){this.getClickEl(a,true).removeClass("x-btn-click");this.doc.un("mouseup",this.onMouseUp,this)}},onMenuShow:function(a){if(this.menu.ownerCt==this){this.menu.ownerCt=this;this.ignoreNextClick=0;this.el.addClass("x-btn-menu-active");this.fireEvent("menushow",this,this.menu)}},onMenuHide:function(a){if(this.menu.ownerCt==this){this.el.removeClass("x-btn-menu-active");this.ignoreNextClick=this.restoreClick.defer(250,this);this.fireEvent("menuhide",this,this.menu);delete this.menu.ownerCt}},restoreClick:function(){this.ignoreNextClick=0}});Ext.reg("button",Ext.Button);Ext.ButtonToggleMgr=function(){var a={};function b(e,j){if(j){var h=a[e.toggleGroup];for(var d=0,c=h.length;d<c;d++){if(h[d]!=e){h[d].toggle(false)}}}}return{register:function(c){if(!c.toggleGroup){return}var d=a[c.toggleGroup];if(!d){d=a[c.toggleGroup]=[]}d.push(c);c.on("toggle",b)},unregister:function(c){if(!c.toggleGroup){return}var d=a[c.toggleGroup];if(d){d.remove(c);c.un("toggle",b)}},getPressed:function(h){var e=a[h];if(e){for(var d=0,c=e.length;d<c;d++){if(e[d].pressed===true){return e[d]}}}return null}}}();Ext.SplitButton=Ext.extend(Ext.Button,{arrowSelector:"em",split:true,initComponent:function(){Ext.SplitButton.superclass.initComponent.call(this);this.addEvents("arrowclick")},onRender:function(){Ext.SplitButton.superclass.onRender.apply(this,arguments);if(this.arrowTooltip){this.el.child(this.arrowSelector).dom[this.tooltipType]=this.arrowTooltip}},setArrowHandler:function(b,a){this.arrowHandler=b;this.scope=a},getMenuClass:function(){return"x-btn-split"+(this.arrowAlign=="bottom"?"-bottom":"")},isClickOnArrow:function(c){if(this.arrowAlign!="bottom"){var b=this.el.child("em.x-btn-split");var a=b.getRegion().right-b.getPadding("r");return c.getPageX()>a}else{return c.getPageY()>this.btnEl.getRegion().bottom}},onClick:function(b,a){b.preventDefault();if(!this.disabled){if(this.isClickOnArrow(b)){if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("arrowclick",this,b);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,b)}}else{this.doToggle();this.fireEvent("click",this,b);if(this.handler){this.handler.call(this.scope||this,this,b)}}}},isMenuTriggerOver:function(a){return this.menu&&a.target.tagName==this.arrowSelector},isMenuTriggerOut:function(b,a){return this.menu&&b.target.tagName!=this.arrowSelector}});Ext.reg("splitbutton",Ext.SplitButton);Ext.CycleButton=Ext.extend(Ext.SplitButton,{getItemText:function(a){if(a&&this.showText===true){var b="";if(this.prependText){b+=this.prependText}b+=a.text;return b}return undefined},setActiveItem:function(c,a){if(!Ext.isObject(c)){c=this.menu.getComponent(c)}if(c){if(!this.rendered){this.text=this.getItemText(c);this.iconCls=c.iconCls}else{var b=this.getItemText(c);if(b){this.setText(b)}this.setIconClass(c.iconCls)}this.activeItem=c;if(!c.checked){c.setChecked(true,a)}if(this.forceIcon){this.setIconClass(this.forceIcon)}if(!a){this.fireEvent("change",this,c)}}},getActiveItem:function(){return this.activeItem},initComponent:function(){this.addEvents("change");if(this.changeHandler){this.on("change",this.changeHandler,this.scope||this);delete this.changeHandler}this.itemCount=this.items.length;this.menu={cls:"x-cycle-menu",items:[]};var a=0;Ext.each(this.items,function(c,b){Ext.apply(c,{group:c.group||this.id,itemIndex:b,checkHandler:this.checkHandler,scope:this,checked:c.checked||false});this.menu.items.push(c);if(c.checked){a=b}},this);Ext.CycleButton.superclass.initComponent.call(this);this.on("click",this.toggleSelected,this);this.setActiveItem(a,true)},checkHandler:function(a,b){if(b){this.setActiveItem(a)}},toggleSelected:function(){var a=this.menu;a.render();if(!a.hasLayout){a.doLayout()}var d,b;for(var c=1;c<this.itemCount;c++){d=(this.activeItem.itemIndex+c)%this.itemCount;b=a.items.itemAt(d);if(!b.disabled){b.setChecked(true);break}}}});Ext.reg("cycle",Ext.CycleButton);Ext.Toolbar=function(a){if(Ext.isArray(a)){a={items:a,layout:"toolbar"}}else{a=Ext.apply({layout:"toolbar"},a);if(a.buttons){a.items=a.buttons}}Ext.Toolbar.superclass.constructor.call(this,a)};(function(){var a=Ext.Toolbar;Ext.extend(a,Ext.Container,{defaultType:"button",enableOverflow:false,trackMenus:true,internalDefaults:{removeMode:"container",hideParent:true},toolbarCls:"x-toolbar",initComponent:function(){a.superclass.initComponent.call(this);this.addEvents("overflowchange")},onRender:function(c,b){if(!this.el){if(!this.autoCreate){this.autoCreate={cls:this.toolbarCls+" x-small-editor"}}this.el=c.createChild(Ext.apply({id:this.id},this.autoCreate),b);Ext.Toolbar.superclass.onRender.apply(this,arguments)}},lookupComponent:function(b){if(Ext.isString(b)){if(b=="-"){b=new a.Separator()}else{if(b==" "){b=new a.Spacer()}else{if(b=="->"){b=new a.Fill()}else{b=new a.TextItem(b)}}}this.applyDefaults(b)}else{if(b.isFormField||b.render){b=this.createComponent(b)}else{if(b.tag){b=new a.Item({autoEl:b})}else{if(b.tagName){b=new a.Item({el:b})}else{if(Ext.isObject(b)){b=b.xtype?this.createComponent(b):this.constructButton(b)}}}}}return b},applyDefaults:function(e){if(!Ext.isString(e)){e=Ext.Toolbar.superclass.applyDefaults.call(this,e);var b=this.internalDefaults;if(e.events){Ext.applyIf(e.initialConfig,b);Ext.apply(e,b)}else{Ext.applyIf(e,b)}}return e},addSeparator:function(){return this.add(new a.Separator())},addSpacer:function(){return this.add(new a.Spacer())},addFill:function(){this.add(new a.Fill())},addElement:function(b){return this.addItem(new a.Item({el:b}))},addItem:function(b){return this.add.apply(this,arguments)},addButton:function(c){if(Ext.isArray(c)){var e=[];for(var d=0,b=c.length;d<b;d++){e.push(this.addButton(c[d]))}return e}return this.add(this.constructButton(c))},addText:function(b){return this.addItem(new a.TextItem(b))},addDom:function(b){return this.add(new a.Item({autoEl:b}))},addField:function(b){return this.add(b)},insertButton:function(c,g){if(Ext.isArray(g)){var e=[];for(var d=0,b=g.length;d<b;d++){e.push(this.insertButton(c+d,g[d]))}return e}return Ext.Toolbar.superclass.insert.call(this,c,g)},trackMenu:function(c,b){if(this.trackMenus&&c.menu){var d=b?"mun":"mon";this[d](c,"menutriggerover",this.onButtonTriggerOver,this);this[d](c,"menushow",this.onButtonMenuShow,this);this[d](c,"menuhide",this.onButtonMenuHide,this)}},constructButton:function(d){var c=d.events?d:this.createComponent(d,d.split?"splitbutton":this.defaultType);return c},onAdd:function(b){Ext.Toolbar.superclass.onAdd.call(this);this.trackMenu(b);if(this.disabled){b.disable()}},onRemove:function(b){Ext.Toolbar.superclass.onRemove.call(this);if(b==this.activeMenuBtn){delete this.activeMenuBtn}this.trackMenu(b,true)},onDisable:function(){this.items.each(function(b){if(b.disable){b.disable()}})},onEnable:function(){this.items.each(function(b){if(b.enable){b.enable()}})},onButtonTriggerOver:function(b){if(this.activeMenuBtn&&this.activeMenuBtn!=b){this.activeMenuBtn.hideMenu();b.showMenu();this.activeMenuBtn=b}},onButtonMenuShow:function(b){this.activeMenuBtn=b},onButtonMenuHide:function(b){delete this.activeMenuBtn}});Ext.reg("toolbar",Ext.Toolbar);a.Item=Ext.extend(Ext.BoxComponent,{hideParent:true,enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbitem",a.Item);a.Separator=Ext.extend(a.Item,{onRender:function(c,b){this.el=c.createChild({tag:"span",cls:"xtb-sep"},b)}});Ext.reg("tbseparator",a.Separator);a.Spacer=Ext.extend(a.Item,{onRender:function(c,b){this.el=c.createChild({tag:"div",cls:"xtb-spacer",style:this.width?"width:"+this.width+"px":""},b)}});Ext.reg("tbspacer",a.Spacer);a.Fill=Ext.extend(a.Item,{render:Ext.emptyFn,isFill:true});Ext.reg("tbfill",a.Fill);a.TextItem=Ext.extend(a.Item,{constructor:function(b){a.TextItem.superclass.constructor.call(this,Ext.isString(b)?{text:b}:b)},onRender:function(c,b){this.autoEl={cls:"xtb-text",html:this.text||""};a.TextItem.superclass.onRender.call(this,c,b)},setText:function(b){if(this.rendered){this.el.update(b)}else{this.text=b}}});Ext.reg("tbtext",a.TextItem);a.Button=Ext.extend(Ext.Button,{});a.SplitButton=Ext.extend(Ext.SplitButton,{});Ext.reg("tbbutton",a.Button);Ext.reg("tbsplit",a.SplitButton)})();Ext.ButtonGroup=Ext.extend(Ext.Panel,{baseCls:"x-btn-group",layout:"table",defaultType:"button",frame:true,internalDefaults:{removeMode:"container",hideParent:true},initComponent:function(){this.layoutConfig=this.layoutConfig||{};Ext.applyIf(this.layoutConfig,{columns:this.columns});if(!this.title){this.addClass("x-btn-group-notitle")}this.on("afterlayout",this.onAfterLayout,this);Ext.ButtonGroup.superclass.initComponent.call(this)},applyDefaults:function(b){b=Ext.ButtonGroup.superclass.applyDefaults.call(this,b);var a=this.internalDefaults;if(b.events){Ext.applyIf(b.initialConfig,a);Ext.apply(b,a)}else{Ext.applyIf(b,a)}return b},onAfterLayout:function(){var a=this.body.getFrameWidth("lr")+this.body.dom.firstChild.offsetWidth;this.body.setWidth(a);this.el.setWidth(a+this.getFrameWidth())}});Ext.reg("buttongroup",Ext.ButtonGroup);(function(){var a=Ext.Toolbar;Ext.PagingToolbar=Ext.extend(Ext.Toolbar,{pageSize:20,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",initComponent:function(){var c=[this.first=new a.Button({tooltip:this.firstText,overflowText:this.firstText,iconCls:"x-tbar-page-first",disabled:true,handler:this.moveFirst,scope:this}),this.prev=new a.Button({tooltip:this.prevText,overflowText:this.prevText,iconCls:"x-tbar-page-prev",disabled:true,handler:this.movePrevious,scope:this}),"-",this.beforePageText,this.inputItem=new Ext.form.NumberField({cls:"x-tbar-page-number",allowDecimals:false,allowNegative:false,enableKeyEvents:true,selectOnFocus:true,submitValue:false,listeners:{scope:this,keydown:this.onPagingKeyDown,blur:this.onPagingBlur}}),this.afterTextItem=new a.TextItem({text:String.format(this.afterPageText,1)}),"-",this.next=new a.Button({tooltip:this.nextText,overflowText:this.nextText,iconCls:"x-tbar-page-next",disabled:true,handler:this.moveNext,scope:this}),this.last=new a.Button({tooltip:this.lastText,overflowText:this.lastText,iconCls:"x-tbar-page-last",disabled:true,handler:this.moveLast,scope:this}),"-",this.refresh=new a.Button({tooltip:this.refreshText,overflowText:this.refreshText,iconCls:"x-tbar-loading",handler:this.doRefresh,scope:this})];var b=this.items||this.buttons||[];if(this.prependButtons){this.items=b.concat(c)}else{this.items=c.concat(b)}delete this.buttons;if(this.displayInfo){this.items.push("->");this.items.push(this.displayItem=new a.TextItem({}))}Ext.PagingToolbar.superclass.initComponent.call(this);this.addEvents("change","beforechange");this.on("afterlayout",this.onFirstLayout,this,{single:true});this.cursor=0;this.bindStore(this.store,true)},onFirstLayout:function(){if(this.dsLoaded){this.onLoad.apply(this,this.dsLoaded)}},updateInfo:function(){if(this.displayItem){var b=this.store.getCount();var c=b==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+b,this.store.getTotalCount());this.displayItem.setText(c)}},onLoad:function(b,e,j){if(!this.rendered){this.dsLoaded=[b,e,j];return}var g=this.getParams();this.cursor=(j.params&&j.params[g.start])?j.params[g.start]:0;var i=this.getPageData(),c=i.activePage,h=i.pages;this.afterTextItem.setText(String.format(this.afterPageText,i.pages));this.inputItem.setValue(c);this.first.setDisabled(c==1);this.prev.setDisabled(c==1);this.next.setDisabled(c==h);this.last.setDisabled(c==h);this.refresh.enable();this.updateInfo();this.fireEvent("change",this,i)},getPageData:function(){var b=this.store.getTotalCount();return{total:b,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:b<this.pageSize?1:Math.ceil(b/this.pageSize)}},changePage:function(b){this.doLoad(((b-1)*this.pageSize).constrain(0,this.store.getTotalCount()))},onLoadError:function(){if(!this.rendered){return}this.refresh.enable()},readPage:function(e){var b=this.inputItem.getValue(),c;if(!b||isNaN(c=parseInt(b,10))){this.inputItem.setValue(e.activePage);return false}return c},onPagingFocus:function(){this.inputItem.select()},onPagingBlur:function(b){this.inputItem.setValue(this.getPageData().activePage)},onPagingKeyDown:function(i,h){var c=h.getKey(),j=this.getPageData(),g;if(c==h.RETURN){h.stopEvent();g=this.readPage(j);if(g!==false){g=Math.min(Math.max(1,g),j.pages)-1;this.doLoad(g*this.pageSize)}}else{if(c==h.HOME||c==h.END){h.stopEvent();g=c==h.HOME?1:j.pages;i.setValue(g)}else{if(c==h.UP||c==h.PAGEUP||c==h.DOWN||c==h.PAGEDOWN){h.stopEvent();if((g=this.readPage(j))){var b=h.shiftKey?10:1;if(c==h.DOWN||c==h.PAGEDOWN){b*=-1}g+=b;if(g>=1&g<=j.pages){i.setValue(g)}}}}}},getParams:function(){return this.paramNames||this.store.paramNames},beforeLoad:function(){if(this.rendered&&this.refresh){this.refresh.disable()}},doLoad:function(d){var c={},b=this.getParams();c[b.start]=d;c[b.limit]=this.pageSize;if(this.fireEvent("beforechange",this,c)!==false){this.store.load({params:c})}},moveFirst:function(){this.doLoad(0)},movePrevious:function(){this.doLoad(Math.max(0,this.cursor-this.pageSize))},moveNext:function(){this.doLoad(this.cursor+this.pageSize)},moveLast:function(){var c=this.store.getTotalCount(),b=c%this.pageSize;this.doLoad(b?(c-b):c-this.pageSize)},doRefresh:function(){this.doLoad(this.cursor)},bindStore:function(c,d){var b;if(!d&&this.store){if(c!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.beforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.onLoadError,this)}if(!c){this.store=null}}if(c){c=Ext.StoreMgr.lookup(c);c.on({scope:this,beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError});b=true}this.store=c;if(b){this.onLoad(c,null,{})}},unbind:function(b){this.bindStore(null)},bind:function(b){this.bindStore(b)},onDestroy:function(){this.bindStore(null);Ext.PagingToolbar.superclass.onDestroy.call(this)}})})();Ext.reg("paging",Ext.PagingToolbar);Ext.History=(function(){var e,c;var k=false;var d;function g(){var l=location.href,m=l.indexOf("#"),n=m>=0?l.substr(m+1):null;if(Ext.isGecko){n=decodeURIComponent(n)}return n}function a(){c.value=d}function h(l){d=l;Ext.History.fireEvent("change",l)}function i(m){var l=['<html><body><div id="state">',Ext.util.Format.htmlEncode(m),"</div></body></html>"].join("");try{var o=e.contentWindow.document;o.open();o.write(l);o.close();return true}catch(n){return false}}function b(){if(!e.contentWindow||!e.contentWindow.document){setTimeout(b,10);return}var o=e.contentWindow.document;var m=o.getElementById("state");var l=m?m.innerText:null;var n=g();setInterval(function(){o=e.contentWindow.document;m=o.getElementById("state");var q=m?m.innerText:null;var p=g();if(q!==l){l=q;h(l);location.hash=l;n=l;a()}else{if(p!==n){n=p;i(p)}}},50);k=true;Ext.History.fireEvent("ready",Ext.History)}function j(){d=c.value?c.value:g();if(Ext.isIE){b()}else{var l=g();setInterval(function(){var m=g();if(m!==l){l=m;h(l);a()}},50);k=true;Ext.History.fireEvent("ready",Ext.History)}}return{fieldId:"x-history-field",iframeId:"x-history-frame",events:{},init:function(m,l){if(k){Ext.callback(m,l,[this]);return}if(!Ext.isReady){Ext.onReady(function(){Ext.History.init(m,l)});return}c=Ext.getDom(Ext.History.fieldId);if(Ext.isIE){e=Ext.getDom(Ext.History.iframeId)}this.addEvents("ready","change");if(m){this.on("ready",m,l,{single:true})}j()},add:function(l,m){if(m!==false){if(this.getToken()==l){return true}}if(Ext.isIE){return i(l)}else{location.hash=l;return true}},back:function(){history.go(-1)},forward:function(){history.go(1)},getToken:function(){return k?d:g()}}})();Ext.apply(Ext.History,new Ext.util.Observable());Ext.Tip=Ext.extend(Ext.Panel,{minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",autoRender:true,quickShowInterval:250,frame:true,hidden:true,baseCls:"x-tip",floating:{shadow:true,shim:true,useDisplay:true,constrain:false},autoHeight:true,closeAction:"hide",initComponent:function(){Ext.Tip.superclass.initComponent.call(this);if(this.closable&&!this.title){this.elements+=",header"}},afterRender:function(){Ext.Tip.superclass.afterRender.call(this);if(this.closable){this.addTool({id:"close",handler:this[this.closeAction],scope:this})}},showAt:function(a){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){this.doAutoWidth()}if(this.constrainPosition){a=this.el.adjustForConstraints(a)}this.setPagePosition(a[0],a[1])},doAutoWidth:function(a){a=a||0;var b=this.body.getTextWidth();if(this.title){b=Math.max(b,this.header.child("span").getTextWidth(this.title))}b+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr")+a;this.setWidth(b.constrain(this.minWidth,this.maxWidth));if(Ext.isIE7&&!this.repainted){this.el.repaint();this.repainted=true}},showBy:function(a,b){if(!this.rendered){this.render(Ext.getBody())}this.showAt(this.el.getAlignToXY(a,b||this.defaultAlign))},initDraggable:function(){this.dd=new Ext.Tip.DD(this,typeof this.draggable=="boolean"?null:this.draggable);this.header.addClass("x-tip-draggable")}});Ext.reg("tip",Ext.Tip);Ext.Tip.DD=function(b,a){Ext.apply(this,a);this.tip=b;Ext.Tip.DD.superclass.constructor.call(this,b.el.id,"WindowDD-"+b.id);this.setHandleElId(b.header.id);this.scroll=false};Ext.extend(Ext.Tip.DD,Ext.dd.DD,{moveOnly:true,scroll:false,headerOffsets:[100,25],startDrag:function(){this.tip.el.disableShadow()},endDrag:function(a){this.tip.el.enableShadow(true)}});Ext.ToolTip=Ext.extend(Ext.Tip,{showDelay:500,hideDelay:200,dismissDelay:5000,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,constrainPosition:false,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget(this.target);this.origAnchor=this.anchor},onRender:function(b,a){Ext.ToolTip.superclass.onRender.call(this,b,a);this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl=this.el.createChild({cls:"x-tip-anchor "+this.anchorCls})},afterRender:function(){Ext.ToolTip.superclass.afterRender.call(this);this.anchorEl.setStyle("z-index",this.el.getZIndex()+1).setVisibilityMode(Ext.Element.DISPLAY)},initTarget:function(c){var a;if((a=Ext.get(c))){if(this.target){var b=Ext.get(this.target);this.mun(b,"mouseover",this.onTargetOver,this);this.mun(b,"mouseout",this.onTargetOut,this);this.mun(b,"mousemove",this.onMouseMove,this)}this.mon(a,{mouseover:this.onTargetOver,mouseout:this.onTargetOut,mousemove:this.onMouseMove,scope:this});this.target=a}if(this.anchor){this.anchorTarget=this.target}},onMouseMove:function(b){var a=this.delegate?b.getTarget(this.delegate):this.triggerElement=true;if(a){this.targetXY=b.getXY();if(a===this.triggerElement){if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}}else{this.hide();this.lastActive=new Date(0);this.onTargetOver(b)}}else{if(!this.closable&&this.isVisible()){this.hide()}}},getTargetXY:function(){if(this.delegate){this.anchorTarget=this.triggerElement}if(this.anchor){this.targetCounter++;var c=this.getOffsets(),l=(this.anchorToTarget&&!this.trackMouse)?this.el.getAlignToXY(this.anchorTarget,this.getAnchorAlign()):this.targetXY,a=Ext.lib.Dom.getViewWidth()-5,h=Ext.lib.Dom.getViewHeight()-5,i=document.documentElement,e=document.body,k=(i.scrollLeft||e.scrollLeft||0)+5,j=(i.scrollTop||e.scrollTop||0)+5,b=[l[0]+c[0],l[1]+c[1]],g=this.getSize();this.anchorEl.removeClass(this.anchorCls);if(this.targetCounter<2){if(b[0]<k){if(this.anchorToTarget){this.defaultAlign="l-r";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="left";return this.getTargetXY()}if(b[0]+g.width>a){if(this.anchorToTarget){this.defaultAlign="r-l";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="right";return this.getTargetXY()}if(b[1]<j){if(this.anchorToTarget){this.defaultAlign="t-b";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="top";return this.getTargetXY()}if(b[1]+g.height>h){if(this.anchorToTarget){this.defaultAlign="b-t";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="bottom";return this.getTargetXY()}}this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl.addClass(this.anchorCls);this.targetCounter=0;return b}else{var d=this.getMouseOffset();return[this.targetXY[0]+d[0],this.targetXY[1]+d[1]]}},getMouseOffset:function(){var a=this.anchor?[0,0]:[15,18];if(this.mouseOffset){a[0]+=this.mouseOffset[0];a[1]+=this.mouseOffset[1]}return a},getAnchorPosition:function(){if(this.anchor){this.tipAnchor=this.anchor.charAt(0)}else{var a=this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!a){throw"AnchorTip.defaultAlign is invalid"}this.tipAnchor=a[1].charAt(0)}switch(this.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var b,a=this.getAnchorPosition().charAt(0);if(this.anchorToTarget&&!this.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-this.anchorOffset,30];break;case"b":b=[-19-this.anchorOffset,-13-this.el.dom.offsetHeight];break;case"r":b=[-15-this.el.dom.offsetWidth,-13-this.anchorOffset];break;default:b=[25,-13-this.anchorOffset];break}}var c=this.getMouseOffset();b[0]+=c[0];b[1]+=c[1];return b},onTargetOver:function(b){if(this.disabled||b.within(this.target.dom,true)){return}var a=b.getTarget(this.delegate);if(a){this.triggerElement=a;this.clearTimer("hide");this.targetXY=b.getXY();this.delayShow()}},delayShow:function(){if(this.hidden&&!this.showTimer){if(this.lastActive.getElapsed()<this.quickShowInterval){this.show()}else{this.showTimer=this.show.defer(this.showDelay,this)}}else{if(!this.hidden&&this.autoHide!==false){this.show()}}},onTargetOut:function(a){if(this.disabled||a.within(this.target.dom,true)){return}this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},delayHide:function(){if(!this.hidden&&!this.hideTimer){this.hideTimer=this.hide.defer(this.hideDelay,this)}},hide:function(){this.clearTimer("dismiss");this.lastActive=new Date();if(this.anchorEl){this.anchorEl.hide()}Ext.ToolTip.superclass.hide.call(this);delete this.triggerElement},show:function(){if(this.anchor){this.showAt([-1000,-1000]);this.origConstrainPosition=this.constrainPosition;this.constrainPosition=false;this.anchor=this.origAnchor}this.showAt(this.getTargetXY());if(this.anchor){this.anchorEl.show();this.syncAnchor();this.constrainPosition=this.origConstrainPosition}else{this.anchorEl.hide()}},showAt:function(a){this.lastActive=new Date();this.clearTimers();Ext.ToolTip.superclass.showAt.call(this,a);if(this.dismissDelay&&this.autoHide!==false){this.dismissTimer=this.hide.defer(this.dismissDelay,this)}if(this.anchor&&!this.anchorEl.isVisible()){this.syncAnchor();this.anchorEl.show()}else{this.anchorEl.hide()}},syncAnchor:function(){var a,b,c;switch(this.tipAnchor.charAt(0)){case"t":a="b";b="tl";c=[20+this.anchorOffset,2];break;case"r":a="l";b="tr";c=[-2,11+this.anchorOffset];break;case"b":a="t";b="bl";c=[20+this.anchorOffset,-2];break;default:a="r";b="tl";c=[2,11+this.anchorOffset];break}this.anchorEl.alignTo(this.el,a+"-"+b,c)},setPagePosition:function(a,b){Ext.ToolTip.superclass.setPagePosition.call(this,a,b);if(this.anchor){this.syncAnchor()}},clearTimer:function(a){a=a+"Timer";clearTimeout(this[a]);delete this[a]},clearTimers:function(){this.clearTimer("show");this.clearTimer("dismiss");this.clearTimer("hide")},onShow:function(){Ext.ToolTip.superclass.onShow.call(this);Ext.getDoc().on("mousedown",this.onDocMouseDown,this)},onHide:function(){Ext.ToolTip.superclass.onHide.call(this);Ext.getDoc().un("mousedown",this.onDocMouseDown,this)},onDocMouseDown:function(a){if(this.autoHide!==true&&!this.closable&&!a.within(this.el.dom)){this.disable();this.doEnable.defer(100,this)}},doEnable:function(){if(!this.isDestroyed){this.enable()}},onDisable:function(){this.clearTimers();this.hide()},adjustPosition:function(a,d){if(this.constrainPosition){var c=this.targetXY[1],b=this.getSize().height;if(d<=c&&(d+b)>=c){d=c-b-5}}return{x:a,y:d}},beforeDestroy:function(){this.clearTimers();Ext.destroy(this.anchorEl);delete this.anchorEl;delete this.target;delete this.anchorTarget;delete this.triggerElement;Ext.ToolTip.superclass.beforeDestroy.call(this)},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);Ext.ToolTip.superclass.onDestroy.call(this)}});Ext.reg("tooltip",Ext.ToolTip);Ext.QuickTip=Ext.extend(Ext.ToolTip,{interceptTitles:false,tagConfig:{namespace:"ext",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(e){var h=Ext.isArray(e)?e:arguments;for(var g=0,a=h.length;g<a;g++){var l=h[g];var k=l.target;if(k){if(Ext.isArray(k)){for(var d=0,b=k.length;d<b;d++){this.targets[Ext.id(k[d])]=l}}else{this.targets[Ext.id(k)]=l}}}},unregister:function(a){delete this.targets[Ext.id(a)]},cancelShow:function(b){var a=this.activeTarget;b=Ext.get(b).dom;if(this.isVisible()){if(a&&a.el==b){this.hide()}}else{if(a&&a.el==b){this.clearTimer("show")}}},getTipCfg:function(d){var b=d.getTarget(),c,a;if(this.interceptTitles&&b.title&&Ext.isString(b.title)){c=b.title;b.qtip=c;b.removeAttribute("title");d.preventDefault()}else{a=this.tagConfig;c=b.qtip||Ext.fly(b).getAttribute(a.attribute,a.namespace)}return c},onTargetOver:function(i){if(this.disabled){return}this.targetXY=i.getXY();var c=i.getTarget();if(!c||c.nodeType!==1||c==document||c==document.body){return}if(this.activeTarget&&((c==this.activeTarget.el)||Ext.fly(this.activeTarget.el).contains(c))){this.clearTimer("hide");this.show();return}if(c&&this.targets[c.id]){this.activeTarget=this.targets[c.id];this.activeTarget.el=c;this.anchor=this.activeTarget.anchor;if(this.anchor){this.anchorTarget=c}this.delayShow();return}var g,h=Ext.fly(c),b=this.tagConfig,d=b.namespace;if(g=this.getTipCfg(i)){var a=h.getAttribute(b.hide,d);this.activeTarget={el:c,text:g,width:h.getAttribute(b.width,d),autoHide:a!="user"&&a!=="false",title:h.getAttribute(b.title,d),cls:h.getAttribute(b.cls,d),align:h.getAttribute(b.align,d)};this.anchor=h.getAttribute(b.anchor,d);if(this.anchor){this.anchorTarget=c}this.delayShow()}},onTargetOut:function(a){if(this.activeTarget&&a.within(this.activeTarget.el)&&!this.getTipCfg(a)){return}this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},showAt:function(b){var a=this.activeTarget;if(a){if(!this.rendered){this.render(Ext.getBody());this.activeTarget=a}if(a.width){this.setWidth(a.width);this.body.setWidth(this.adjustBodyWidth(a.width-this.getFrameWidth()));this.measureWidth=false}else{this.measureWidth=true}this.setTitle(a.title||"");this.body.update(a.text);this.autoHide=a.autoHide;this.dismissDelay=a.dismissDelay||this.dismissDelay;if(this.lastCls){this.el.removeClass(this.lastCls);delete this.lastCls}if(a.cls){this.el.addClass(a.cls);this.lastCls=a.cls}if(this.anchor){this.constrainPosition=false}else{if(a.align){b=this.el.getAlignToXY(a.el,a.align);this.constrainPosition=false}else{this.constrainPosition=true}}}Ext.QuickTip.superclass.showAt.call(this,b)},hide:function(){delete this.activeTarget;Ext.QuickTip.superclass.hide.call(this)}});Ext.reg("quicktip",Ext.QuickTip);Ext.QuickTips=function(){var b,a=false;return{init:function(c){if(!b){if(!Ext.isReady){Ext.onReady(function(){Ext.QuickTips.init(c)});return}b=new Ext.QuickTip({elements:"header,body",disabled:a});if(c!==false){b.render(Ext.getBody())}}},ddDisable:function(){if(b&&!a){b.disable()}},ddEnable:function(){if(b&&!a){b.enable()}},enable:function(){if(b){b.enable()}a=false},disable:function(){if(b){b.disable()}a=true},isEnabled:function(){return b!==undefined&&!b.disabled},getQuickTip:function(){return b},register:function(){b.register.apply(b,arguments)},unregister:function(){b.unregister.apply(b,arguments)},tips:function(){b.register.apply(b,arguments)}}}();Ext.slider.Tip=Ext.extend(Ext.Tip,{minWidth:10,offsets:[0,-10],init:function(a){a.on({scope:this,dragstart:this.onSlide,drag:this.onSlide,dragend:this.hide,destroy:this.destroy})},onSlide:function(b,c,a){this.show();this.body.update(this.getText(a));this.doAutoWidth();this.el.alignTo(a.el,"b-t?",this.offsets)},getText:function(a){return String(a.value)}});Ext.ux.SliderTip=Ext.slider.Tip;Ext.tree.TreePanel=Ext.extend(Ext.Panel,{rootVisible:true,animate:Ext.enableFx,lines:true,enableDD:false,hlDrop:Ext.enableFx,pathSeparator:"/",bubbleEvents:[],initComponent:function(){Ext.tree.TreePanel.superclass.initComponent.call(this);if(!this.eventModel){this.eventModel=new Ext.tree.TreeEventModel(this)}var a=this.loader;if(!a){a=new Ext.tree.TreeLoader({dataUrl:this.dataUrl,requestMethod:this.requestMethod})}else{if(Ext.isObject(a)&&!a.load){a=new Ext.tree.TreeLoader(a)}}this.loader=a;this.nodeHash={};if(this.root){var b=this.root;delete this.root;this.setRootNode(b)}this.addEvents("append","remove","movenode","insert","beforeappend","beforeremove","beforemovenode","beforeinsert","beforeload","load","textchange","beforeexpandnode","beforecollapsenode","expandnode","disabledchange","collapsenode","beforeclick","click","containerclick","checkchange","beforedblclick","dblclick","containerdblclick","contextmenu","containercontextmenu","beforechildrenrendered","startdrag","enddrag","dragdrop","beforenodedrop","nodedrop","nodedragover");if(this.singleExpand){this.on("beforeexpandnode",this.restrictExpand,this)}},proxyNodeEvent:function(c,b,a,h,g,e,d){if(c=="collapse"||c=="expand"||c=="beforecollapse"||c=="beforeexpand"||c=="move"||c=="beforemove"){c=c+"node"}return this.fireEvent(c,b,a,h,g,e,d)},getRootNode:function(){return this.root},setRootNode:function(b){this.destroyRoot();if(!b.render){b=this.loader.createNode(b)}this.root=b;b.ownerTree=this;b.isRoot=true;this.registerNode(b);if(!this.rootVisible){var a=b.attributes.uiProvider;b.ui=a?new a(b):new Ext.tree.RootTreeNodeUI(b)}if(this.innerCt){this.clearInnerCt();this.renderRoot()}return b},clearInnerCt:function(){this.innerCt.update("")},renderRoot:function(){this.root.render();if(!this.rootVisible){this.root.renderChildren()}},getNodeById:function(a){return this.nodeHash[a]},registerNode:function(a){this.nodeHash[a.id]=a},unregisterNode:function(a){delete this.nodeHash[a.id]},toString:function(){return"[Tree"+(this.id?" "+this.id:"")+"]"},restrictExpand:function(a){var b=a.parentNode;if(b){if(b.expandedChild&&b.expandedChild.parentNode==b){b.expandedChild.collapse()}b.expandedChild=a}},getChecked:function(b,c){c=c||this.root;var d=[];var e=function(){if(this.attributes.checked){d.push(!b?this:(b=="id"?this.id:this.attributes[b]))}};c.cascade(e);return d},getLoader:function(){return this.loader},expandAll:function(){this.root.expand(true)},collapseAll:function(){this.root.collapse(true)},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.tree.DefaultSelectionModel()}return this.selModel},expandPath:function(g,a,h){if(Ext.isEmpty(g)){if(h){h(false,undefined)}return}a=a||"id";var d=g.split(this.pathSeparator);var c=this.root;if(c.attributes[a]!=d[1]){if(h){h(false,null)}return}var b=1;var e=function(){if(++b==d.length){if(h){h(true,c)}return}var i=c.findChild(a,d[b]);if(!i){if(h){h(false,c)}return}c=i;i.expand(false,false,e)};c.expand(false,false,e)},selectPath:function(e,a,g){if(Ext.isEmpty(e)){if(g){g(false,undefined)}return}a=a||"id";var c=e.split(this.pathSeparator),b=c.pop();if(c.length>1){var d=function(i,h){if(i&&h){var j=h.findChild(a,b);if(j){j.select();if(g){g(true,j)}}else{if(g){g(false,j)}}}else{if(g){g(false,j)}}};this.expandPath(c.join(this.pathSeparator),a,d)}else{this.root.select();if(g){g(true,this.root)}}},getTreeEl:function(){return this.body},onRender:function(b,a){Ext.tree.TreePanel.superclass.onRender.call(this,b,a);this.el.addClass("x-tree");this.innerCt=this.body.createChild({tag:"ul",cls:"x-tree-root-ct "+(this.useArrows?"x-tree-arrows":this.lines?"x-tree-lines":"x-tree-no-lines")})},initEvents:function(){Ext.tree.TreePanel.superclass.initEvents.call(this);if(this.containerScroll){Ext.dd.ScrollManager.register(this.body)}if((this.enableDD||this.enableDrop)&&!this.dropZone){this.dropZone=new Ext.tree.TreeDropZone(this,this.dropConfig||{ddGroup:this.ddGroup||"TreeDD",appendOnly:this.ddAppendOnly===true})}if((this.enableDD||this.enableDrag)&&!this.dragZone){this.dragZone=new Ext.tree.TreeDragZone(this,this.dragConfig||{ddGroup:this.ddGroup||"TreeDD",scroll:this.ddScroll})}this.getSelectionModel().init(this)},afterRender:function(){Ext.tree.TreePanel.superclass.afterRender.call(this);this.renderRoot()},beforeDestroy:function(){if(this.rendered){Ext.dd.ScrollManager.unregister(this.body);Ext.destroy(this.dropZone,this.dragZone)}this.destroyRoot();Ext.destroy(this.loader);this.nodeHash=this.root=this.loader=null;Ext.tree.TreePanel.superclass.beforeDestroy.call(this)},destroyRoot:function(){if(this.root&&this.root.destroy){this.root.destroy(true)}}});Ext.tree.TreePanel.nodeTypes={};Ext.reg("treepanel",Ext.tree.TreePanel);Ext.tree.TreeEventModel=function(a){this.tree=a;this.tree.on("render",this.initEvents,this)};Ext.tree.TreeEventModel.prototype={initEvents:function(){var a=this.tree;if(a.trackMouseOver!==false){a.mon(a.innerCt,{scope:this,mouseover:this.delegateOver,mouseout:this.delegateOut})}a.mon(a.getTreeEl(),{scope:this,click:this.delegateClick,dblclick:this.delegateDblClick,contextmenu:this.delegateContextMenu})},getNode:function(b){var a;if(a=b.getTarget(".x-tree-node-el",10)){var c=Ext.fly(a,"_treeEvents").getAttribute("tree-node-id","ext");if(c){return this.tree.getNodeById(c)}}return null},getNodeTarget:function(b){var a=b.getTarget(".x-tree-node-icon",1);if(!a){a=b.getTarget(".x-tree-node-el",6)}return a},delegateOut:function(b,a){if(!this.beforeEvent(b)){return}if(b.getTarget(".x-tree-ec-icon",1)){var c=this.getNode(b);this.onIconOut(b,c);if(c==this.lastEcOver){delete this.lastEcOver}}if((a=this.getNodeTarget(b))&&!b.within(a,true)){this.onNodeOut(b,this.getNode(b))}},delegateOver:function(b,a){if(!this.beforeEvent(b)){return}if(Ext.isGecko&&!this.trackingDoc){Ext.getBody().on("mouseover",this.trackExit,this);this.trackingDoc=true}if(this.lastEcOver){this.onIconOut(b,this.lastEcOver);delete this.lastEcOver}if(b.getTarget(".x-tree-ec-icon",1)){this.lastEcOver=this.getNode(b);this.onIconOver(b,this.lastEcOver)}if(a=this.getNodeTarget(b)){this.onNodeOver(b,this.getNode(b))}},trackExit:function(a){if(this.lastOverNode){if(this.lastOverNode.ui&&!a.within(this.lastOverNode.ui.getEl())){this.onNodeOut(a,this.lastOverNode)}delete this.lastOverNode;Ext.getBody().un("mouseover",this.trackExit,this);this.trackingDoc=false}},delegateClick:function(b,a){if(this.beforeEvent(b)){if(b.getTarget("input[type=checkbox]",1)){this.onCheckboxClick(b,this.getNode(b))}else{if(b.getTarget(".x-tree-ec-icon",1)){this.onIconClick(b,this.getNode(b))}else{if(this.getNodeTarget(b)){this.onNodeClick(b,this.getNode(b))}}}}else{this.checkContainerEvent(b,"click")}},delegateDblClick:function(b,a){if(this.beforeEvent(b)){if(this.getNodeTarget(b)){this.onNodeDblClick(b,this.getNode(b))}}else{this.checkContainerEvent(b,"dblclick")}},delegateContextMenu:function(b,a){if(this.beforeEvent(b)){if(this.getNodeTarget(b)){this.onNodeContextMenu(b,this.getNode(b))}}else{this.checkContainerEvent(b,"contextmenu")}},checkContainerEvent:function(b,a){if(this.disabled){b.stopEvent();return false}this.onContainerEvent(b,a)},onContainerEvent:function(b,a){this.tree.fireEvent("container"+a,this.tree,b)},onNodeClick:function(b,a){a.ui.onClick(b)},onNodeOver:function(b,a){this.lastOverNode=a;a.ui.onOver(b)},onNodeOut:function(b,a){a.ui.onOut(b)},onIconOver:function(b,a){a.ui.addClass("x-tree-ec-over")},onIconOut:function(b,a){a.ui.removeClass("x-tree-ec-over")},onIconClick:function(b,a){a.ui.ecClick(b)},onCheckboxClick:function(b,a){a.ui.onCheckChange(b)},onNodeDblClick:function(b,a){a.ui.onDblClick(b)},onNodeContextMenu:function(b,a){a.ui.onContextMenu(b)},beforeEvent:function(b){var a=this.getNode(b);if(this.disabled||!a||!a.ui){b.stopEvent();return false}return true},disable:function(){this.disabled=true},enable:function(){this.disabled=false}};Ext.tree.DefaultSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(a){this.selNode=null;this.addEvents("selectionchange","beforeselect");Ext.apply(this,a);Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)},init:function(a){this.tree=a;a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);a.on("click",this.onNodeClick,this)},onNodeClick:function(a,b){this.select(a)},select:function(c,a){if(!Ext.fly(c.ui.wrap).isVisible()&&a){return a.call(this,c)}var b=this.selNode;if(c==b){c.ui.onSelectedChange(true)}else{if(this.fireEvent("beforeselect",this,c,b)!==false){if(b&&b.ui){b.ui.onSelectedChange(false)}this.selNode=c;c.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,c,b)}}return c},unselect:function(b,a){if(this.selNode==b){this.clearSelections(a)}},clearSelections:function(a){var b=this.selNode;if(b){b.ui.onSelectedChange(false);this.selNode=null;if(a!==true){this.fireEvent("selectionchange",this,null)}}return b},getSelectedNode:function(){return this.selNode},isSelected:function(a){return this.selNode==a},selectPrevious:function(a){if(!(a=a||this.selNode||this.lastSelNode)){return null}var c=a.previousSibling;if(c){if(!c.isExpanded()||c.childNodes.length<1){return this.select(c,this.selectPrevious)}else{var b=c.lastChild;while(b&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()&&b.childNodes.length>0){b=b.lastChild}return this.select(b,this.selectPrevious)}}else{if(a.parentNode&&(this.tree.rootVisible||!a.parentNode.isRoot)){return this.select(a.parentNode,this.selectPrevious)}}return null},selectNext:function(b){if(!(b=b||this.selNode||this.lastSelNode)){return null}if(b.firstChild&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()){return this.select(b.firstChild,this.selectNext)}else{if(b.nextSibling){return this.select(b.nextSibling,this.selectNext)}else{if(b.parentNode){var a=null;b.parentNode.bubble(function(){if(this.nextSibling){a=this.getOwnerTree().selModel.select(this.nextSibling,this.selectNext);return false}});return a}}}return null},onKeyDown:function(c){var b=this.selNode||this.lastSelNode;var d=this;if(!b){return}var a=c.getKey();switch(a){case c.DOWN:c.stopEvent();this.selectNext();break;case c.UP:c.stopEvent();this.selectPrevious();break;case c.RIGHT:c.preventDefault();if(b.hasChildNodes()){if(!b.isExpanded()){b.expand()}else{if(b.firstChild){this.select(b.firstChild,c)}}}break;case c.LEFT:c.preventDefault();if(b.hasChildNodes()&&b.isExpanded()){b.collapse()}else{if(b.parentNode&&(this.tree.rootVisible||b.parentNode!=this.tree.getRootNode())){this.select(b.parentNode,c)}}break}}});Ext.tree.MultiSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(a){this.selNodes=[];this.selMap={};this.addEvents("selectionchange");Ext.apply(this,a);Ext.tree.MultiSelectionModel.superclass.constructor.call(this)},init:function(a){this.tree=a;a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);a.on("click",this.onNodeClick,this)},onNodeClick:function(a,b){if(b.ctrlKey&&this.isSelected(a)){this.unselect(a)}else{this.select(a,b,b.ctrlKey)}},select:function(a,c,b){if(b!==true){this.clearSelections(true)}if(this.isSelected(a)){this.lastSelNode=a;return a}this.selNodes.push(a);this.selMap[a.id]=a;this.lastSelNode=a;a.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,this.selNodes);return a},unselect:function(b){if(this.selMap[b.id]){b.ui.onSelectedChange(false);var c=this.selNodes;var a=c.indexOf(b);if(a!=-1){this.selNodes.splice(a,1)}delete this.selMap[b.id];this.fireEvent("selectionchange",this,this.selNodes)}},clearSelections:function(b){var d=this.selNodes;if(d.length>0){for(var c=0,a=d.length;c<a;c++){d[c].ui.onSelectedChange(false)}this.selNodes=[];this.selMap={};if(b!==true){this.fireEvent("selectionchange",this,this.selNodes)}}},isSelected:function(a){return this.selMap[a.id]?true:false},getSelectedNodes:function(){return this.selNodes.concat([])},onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious});Ext.data.Tree=Ext.extend(Ext.util.Observable,{constructor:function(a){this.nodeHash={};this.root=null;if(a){this.setRootNode(a)}this.addEvents("append","remove","move","insert","beforeappend","beforeremove","beforemove","beforeinsert");Ext.data.Tree.superclass.constructor.call(this)},pathSeparator:"/",proxyNodeEvent:function(){return this.fireEvent.apply(this,arguments)},getRootNode:function(){return this.root},setRootNode:function(a){this.root=a;a.ownerTree=this;a.isRoot=true;this.registerNode(a);return a},getNodeById:function(a){return this.nodeHash[a]},registerNode:function(a){this.nodeHash[a.id]=a},unregisterNode:function(a){delete this.nodeHash[a.id]},toString:function(){return"[Tree"+(this.id?" "+this.id:"")+"]"}});Ext.data.Node=Ext.extend(Ext.util.Observable,{constructor:function(a){this.attributes=a||{};this.leaf=this.attributes.leaf;this.id=this.attributes.id;if(!this.id){this.id=Ext.id(null,"xnode-");this.attributes.id=this.id}this.childNodes=[];this.parentNode=null;this.firstChild=null;this.lastChild=null;this.previousSibling=null;this.nextSibling=null;this.addEvents({append:true,remove:true,move:true,insert:true,beforeappend:true,beforeremove:true,beforemove:true,beforeinsert:true});this.listeners=this.attributes.listeners;Ext.data.Node.superclass.constructor.call(this)},fireEvent:function(b){if(Ext.data.Node.superclass.fireEvent.apply(this,arguments)===false){return false}var a=this.getOwnerTree();if(a){if(a.proxyNodeEvent.apply(a,arguments)===false){return false}}return true},isLeaf:function(){return this.leaf===true},setFirstChild:function(a){this.firstChild=a},setLastChild:function(a){this.lastChild=a},isLast:function(){return(!this.parentNode?true:this.parentNode.lastChild==this)},isFirst:function(){return(!this.parentNode?true:this.parentNode.firstChild==this)},hasChildNodes:function(){return !this.isLeaf()&&this.childNodes.length>0},isExpandable:function(){return this.attributes.expandable||this.hasChildNodes()},appendChild:function(e){var g=false;if(Ext.isArray(e)){g=e}else{if(arguments.length>1){g=arguments}}if(g){for(var d=0,a=g.length;d<a;d++){this.appendChild(g[d])}}else{if(this.fireEvent("beforeappend",this.ownerTree,this,e)===false){return false}var b=this.childNodes.length;var c=e.parentNode;if(c){if(e.fireEvent("beforemove",e.getOwnerTree(),e,c,this,b)===false){return false}c.removeChild(e)}b=this.childNodes.length;if(b===0){this.setFirstChild(e)}this.childNodes.push(e);e.parentNode=this;var h=this.childNodes[b-1];if(h){e.previousSibling=h;h.nextSibling=e}else{e.previousSibling=null}e.nextSibling=null;this.setLastChild(e);e.setOwnerTree(this.getOwnerTree());this.fireEvent("append",this.ownerTree,this,e,b);if(c){e.fireEvent("move",this.ownerTree,e,c,this,b)}return e}},removeChild:function(c,b){var a=this.childNodes.indexOf(c);if(a==-1){return false}if(this.fireEvent("beforeremove",this.ownerTree,this,c)===false){return false}this.childNodes.splice(a,1);if(c.previousSibling){c.previousSibling.nextSibling=c.nextSibling}if(c.nextSibling){c.nextSibling.previousSibling=c.previousSibling}if(this.firstChild==c){this.setFirstChild(c.nextSibling)}if(this.lastChild==c){this.setLastChild(c.previousSibling)}this.fireEvent("remove",this.ownerTree,this,c);if(b){c.destroy(true)}else{c.clear()}return c},clear:function(a){this.setOwnerTree(null,a);this.parentNode=this.previousSibling=this.nextSibling=null;if(a){this.firstChild=this.lastChild=null}},destroy:function(a){if(a===true){this.purgeListeners();this.clear(true);Ext.each(this.childNodes,function(b){b.destroy(true)});this.childNodes=null}else{this.remove(true)}},insertBefore:function(d,a){if(!a){return this.appendChild(d)}if(d==a){return false}if(this.fireEvent("beforeinsert",this.ownerTree,this,d,a)===false){return false}var b=this.childNodes.indexOf(a);var c=d.parentNode;var e=b;if(c==this&&this.childNodes.indexOf(d)<b){e--}if(c){if(d.fireEvent("beforemove",d.getOwnerTree(),d,c,this,b,a)===false){return false}c.removeChild(d)}if(e===0){this.setFirstChild(d)}this.childNodes.splice(e,0,d);d.parentNode=this;var g=this.childNodes[e-1];if(g){d.previousSibling=g;g.nextSibling=d}else{d.previousSibling=null}d.nextSibling=a;a.previousSibling=d;d.setOwnerTree(this.getOwnerTree());this.fireEvent("insert",this.ownerTree,this,d,a);if(c){d.fireEvent("move",this.ownerTree,d,c,this,e,a)}return d},remove:function(a){if(this.parentNode){this.parentNode.removeChild(this,a)}return this},removeAll:function(a){var c=this.childNodes,b;while((b=c[0])){this.removeChild(b,a)}return this},item:function(a){return this.childNodes[a]},replaceChild:function(a,c){var b=c?c.nextSibling:null;this.removeChild(c);this.insertBefore(a,b);return c},indexOf:function(a){return this.childNodes.indexOf(a)},getOwnerTree:function(){if(!this.ownerTree){var a=this;while(a){if(a.ownerTree){this.ownerTree=a.ownerTree;break}a=a.parentNode}}return this.ownerTree},getDepth:function(){var b=0;var a=this;while(a.parentNode){++b;a=a.parentNode}return b},setOwnerTree:function(a,b){if(a!=this.ownerTree){if(this.ownerTree){this.ownerTree.unregisterNode(this)}this.ownerTree=a;if(b!==true){Ext.each(this.childNodes,function(c){c.setOwnerTree(a)})}if(a){a.registerNode(this)}}},setId:function(b){if(b!==this.id){var a=this.ownerTree;if(a){a.unregisterNode(this)}this.id=this.attributes.id=b;if(a){a.registerNode(this)}this.onIdChange(b)}},onIdChange:Ext.emptyFn,getPath:function(c){c=c||"id";var e=this.parentNode;var a=[this.attributes[c]];while(e){a.unshift(e.attributes[c]);e=e.parentNode}var d=this.getOwnerTree().pathSeparator;return d+a.join(d)},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.parentNode}},cascade:function(g,e,b){if(g.apply(e||this,b||[this])!==false){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){d[c].cascade(g,e,b)}}},eachChild:function(g,e,b){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){if(g.apply(e||d[c],b||[d[c]])===false){break}}},findChild:function(b,c,a){return this.findChildBy(function(){return this.attributes[b]==c},null,a)},findChildBy:function(h,g,b){var e=this.childNodes,a=e.length,d=0,j,c;for(;d<a;d++){j=e[d];if(h.call(g||j,j)===true){return j}else{if(b){c=j.findChildBy(h,g,b);if(c!=null){return c}}}}return null},sort:function(e,d){var c=this.childNodes;var a=c.length;if(a>0){var g=d?function(){e.apply(d,arguments)}:e;c.sort(g);for(var b=0;b<a;b++){var h=c[b];h.previousSibling=c[b-1];h.nextSibling=c[b+1];if(b===0){this.setFirstChild(h)}if(b==a-1){this.setLastChild(h)}}}},contains:function(a){return a.isAncestor(this)},isAncestor:function(a){var b=this.parentNode;while(b){if(b==a){return true}b=b.parentNode}return false},toString:function(){return"[Node"+(this.id?" "+this.id:"")+"]"}});Ext.tree.TreeNode=Ext.extend(Ext.data.Node,{constructor:function(a){a=a||{};if(Ext.isString(a)){a={text:a}}this.childrenRendered=false;this.rendered=false;Ext.tree.TreeNode.superclass.constructor.call(this,a);this.expanded=a.expanded===true;this.isTarget=a.isTarget!==false;this.draggable=a.draggable!==false&&a.allowDrag!==false;this.allowChildren=a.allowChildren!==false&&a.allowDrop!==false;this.text=a.text;this.disabled=a.disabled===true;this.hidden=a.hidden===true;this.addEvents("textchange","beforeexpand","beforecollapse","expand","disabledchange","collapse","beforeclick","click","checkchange","beforedblclick","dblclick","contextmenu","beforechildrenrendered");var b=this.attributes.uiProvider||this.defaultUI||Ext.tree.TreeNodeUI;this.ui=new b(this)},preventHScroll:true,isExpanded:function(){return this.expanded},getUI:function(){return this.ui},getLoader:function(){var a;return this.loader||((a=this.getOwnerTree())&&a.loader?a.loader:(this.loader=new Ext.tree.TreeLoader()))},setFirstChild:function(a){var b=this.firstChild;Ext.tree.TreeNode.superclass.setFirstChild.call(this,a);if(this.childrenRendered&&b&&a!=b){b.renderIndent(true,true)}if(this.rendered){this.renderIndent(true,true)}},setLastChild:function(b){var a=this.lastChild;Ext.tree.TreeNode.superclass.setLastChild.call(this,b);if(this.childrenRendered&&a&&b!=a){a.renderIndent(true,true)}if(this.rendered){this.renderIndent(true,true)}},appendChild:function(b){if(!b.render&&!Ext.isArray(b)){b=this.getLoader().createNode(b)}var a=Ext.tree.TreeNode.superclass.appendChild.call(this,b);if(a&&this.childrenRendered){a.render()}this.ui.updateExpandIcon();return a},removeChild:function(b,a){this.ownerTree.getSelectionModel().unselect(b);Ext.tree.TreeNode.superclass.removeChild.apply(this,arguments);if(!a){var c=b.ui.rendered;if(c){b.ui.remove()}if(c&&this.childNodes.length<1){this.collapse(false,false)}else{this.ui.updateExpandIcon()}if(!this.firstChild&&!this.isHiddenRoot()){this.childrenRendered=false}}return b},insertBefore:function(c,a){if(!c.render){c=this.getLoader().createNode(c)}var b=Ext.tree.TreeNode.superclass.insertBefore.call(this,c,a);if(b&&a&&this.childrenRendered){c.render()}this.ui.updateExpandIcon();return b},setText:function(b){var a=this.text;this.text=this.attributes.text=b;if(this.rendered){this.ui.onTextChange(this,b,a)}this.fireEvent("textchange",this,b,a)},setIconCls:function(b){var a=this.attributes.iconCls;this.attributes.iconCls=b;if(this.rendered){this.ui.onIconClsChange(this,b,a)}},setTooltip:function(a,b){this.attributes.qtip=a;this.attributes.qtipTitle=b;if(this.rendered){this.ui.onTipChange(this,a,b)}},setIcon:function(a){this.attributes.icon=a;if(this.rendered){this.ui.onIconChange(this,a)}},setHref:function(a,b){this.attributes.href=a;this.attributes.hrefTarget=b;if(this.rendered){this.ui.onHrefChange(this,a,b)}},setCls:function(b){var a=this.attributes.cls;this.attributes.cls=b;if(this.rendered){this.ui.onClsChange(this,b,a)}},select:function(){var a=this.getOwnerTree();if(a){a.getSelectionModel().select(this)}},unselect:function(a){var b=this.getOwnerTree();if(b){b.getSelectionModel().unselect(this,a)}},isSelected:function(){var a=this.getOwnerTree();return a?a.getSelectionModel().isSelected(this):false},expand:function(a,c,d,b){if(!this.expanded){if(this.fireEvent("beforeexpand",this,a,c)===false){return}if(!this.childrenRendered){this.renderChildren()}this.expanded=true;if(!this.isHiddenRoot()&&(this.getOwnerTree().animate&&c!==false)||c){this.ui.animExpand(function(){this.fireEvent("expand",this);this.runCallback(d,b||this,[this]);if(a===true){this.expandChildNodes(true,true)}}.createDelegate(this));return}else{this.ui.expand();this.fireEvent("expand",this);this.runCallback(d,b||this,[this])}}else{this.runCallback(d,b||this,[this])}if(a===true){this.expandChildNodes(true)}},runCallback:function(a,c,b){if(Ext.isFunction(a)){a.apply(c,b)}},isHiddenRoot:function(){return this.isRoot&&!this.getOwnerTree().rootVisible},collapse:function(b,g,h,e){if(this.expanded&&!this.isHiddenRoot()){if(this.fireEvent("beforecollapse",this,b,g)===false){return}this.expanded=false;if((this.getOwnerTree().animate&&g!==false)||g){this.ui.animCollapse(function(){this.fireEvent("collapse",this);this.runCallback(h,e||this,[this]);if(b===true){this.collapseChildNodes(true)}}.createDelegate(this));return}else{this.ui.collapse();this.fireEvent("collapse",this);this.runCallback(h,e||this,[this])}}else{if(!this.expanded){this.runCallback(h,e||this,[this])}}if(b===true){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){d[c].collapse(true,false)}}},delayedExpand:function(a){if(!this.expandProcId){this.expandProcId=this.expand.defer(a,this)}},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId)}this.expandProcId=false},toggle:function(){if(this.expanded){this.collapse()}else{this.expand()}},ensureVisible:function(c,b){var a=this.getOwnerTree();a.expandPath(this.parentNode?this.parentNode.getPath():this.getPath(),false,function(){var d=a.getNodeById(this.id);a.getTreeEl().scrollChildIntoView(d.ui.anchor);this.runCallback(c,b||this,[this])}.createDelegate(this))},expandChildNodes:function(b,e){var d=this.childNodes,c,a=d.length;for(c=0;c<a;c++){d[c].expand(b,e)}},collapseChildNodes:function(b){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){d[c].collapse(b)}},disable:function(){this.disabled=true;this.unselect();if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,true)}this.fireEvent("disabledchange",this,true)},enable:function(){this.disabled=false;if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,false)}this.fireEvent("disabledchange",this,false)},renderChildren:function(b){if(b!==false){this.fireEvent("beforechildrenrendered",this)}var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){d[c].render(true)}this.childrenRendered=true},sort:function(e,d){Ext.tree.TreeNode.superclass.sort.apply(this,arguments);if(this.childrenRendered){var c=this.childNodes;for(var b=0,a=c.length;b<a;b++){c[b].render(true)}}},render:function(a){this.ui.render(a);if(!this.rendered){this.getOwnerTree().registerNode(this);this.rendered=true;if(this.expanded){this.expanded=false;this.expand(false,false)}}},renderIndent:function(b,e){if(e){this.ui.childIndent=null}this.ui.renderIndent();if(b===true&&this.childrenRendered){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){d[c].renderIndent(true,e)}}},beginUpdate:function(){this.childrenRendered=false},endUpdate:function(){if(this.expanded&&this.rendered){this.renderChildren()}},destroy:function(a){if(a===true){this.unselect(true)}Ext.tree.TreeNode.superclass.destroy.call(this,a);Ext.destroy(this.ui,this.loader);this.ui=this.loader=null},onIdChange:function(a){this.ui.onIdChange(a)}});Ext.tree.TreePanel.nodeTypes.node=Ext.tree.TreeNode;Ext.tree.AsyncTreeNode=function(a){this.loaded=a&&a.loaded===true;this.loading=false;Ext.tree.AsyncTreeNode.superclass.constructor.apply(this,arguments);this.addEvents("beforeload","load")};Ext.extend(Ext.tree.AsyncTreeNode,Ext.tree.TreeNode,{expand:function(b,e,h,c){if(this.loading){var g;var d=function(){if(!this.loading){clearInterval(g);this.expand(b,e,h,c)}}.createDelegate(this);g=setInterval(d,200);return}if(!this.loaded){if(this.fireEvent("beforeload",this)===false){return}this.loading=true;this.ui.beforeLoad(this);var a=this.loader||this.attributes.loader||this.getOwnerTree().getLoader();if(a){a.load(this,this.loadComplete.createDelegate(this,[b,e,h,c]),this);return}}Ext.tree.AsyncTreeNode.superclass.expand.call(this,b,e,h,c)},isLoading:function(){return this.loading},loadComplete:function(a,c,d,b){this.loading=false;this.loaded=true;this.ui.afterLoad(this);this.fireEvent("load",this);this.expand(a,c,d,b)},isLoaded:function(){return this.loaded},hasChildNodes:function(){if(!this.isLeaf()&&!this.loaded){return true}else{return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this)}},reload:function(b,a){this.collapse(false,false);while(this.firstChild){this.removeChild(this.firstChild).destroy()}this.childrenRendered=false;this.loaded=false;if(this.isHiddenRoot()){this.expanded=false}this.expand(false,false,b,a)}});Ext.tree.TreePanel.nodeTypes.async=Ext.tree.AsyncTreeNode;Ext.tree.TreeNodeUI=Ext.extend(Object,{constructor:function(a){Ext.apply(this,{node:a,rendered:false,animating:false,wasLeaf:true,ecc:"x-tree-ec-icon x-tree-elbow",emptyIcon:Ext.BLANK_IMAGE_URL})},removeChild:function(a){if(this.rendered){this.ctNode.removeChild(a.ui.getEl())}},beforeLoad:function(){this.addClass("x-tree-node-loading")},afterLoad:function(){this.removeClass("x-tree-node-loading")},onTextChange:function(b,c,a){if(this.rendered){this.textNode.innerHTML=c}},onIconClsChange:function(c,a,b){if(this.rendered){Ext.fly(this.iconNode).replaceClass(b,a)}},onIconChange:function(b,a){if(this.rendered){var c=Ext.isEmpty(a);this.iconNode.src=c?this.emptyIcon:a;Ext.fly(this.iconNode)[c?"removeClass":"addClass"]("x-tree-node-inline-icon")}},onTipChange:function(b,c,d){if(this.rendered){var a=Ext.isDefined(d);if(this.textNode.setAttributeNS){this.textNode.setAttributeNS("ext","qtip",c);if(a){this.textNode.setAttributeNS("ext","qtitle",d)}}else{this.textNode.setAttribute("ext:qtip",c);if(a){this.textNode.setAttribute("ext:qtitle",d)}}}},onHrefChange:function(b,a,c){if(this.rendered){this.anchor.href=this.getHref(a);if(Ext.isDefined(c)){this.anchor.target=c}}},onClsChange:function(c,a,b){if(this.rendered){Ext.fly(this.elNode).replaceClass(b,a)}},onDisableChange:function(a,b){this.disabled=b;if(this.checkbox){this.checkbox.disabled=b}this[b?"addClass":"removeClass"]("x-tree-node-disabled")},onSelectedChange:function(a){if(a){this.focus();this.addClass("x-tree-selected")}else{this.removeClass("x-tree-selected")}},onMove:function(a,h,e,g,d,b){this.childIndent=null;if(this.rendered){var i=g.ui.getContainer();if(!i){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);return}var c=b?b.ui.getEl():null;if(c){i.insertBefore(this.wrap,c)}else{i.appendChild(this.wrap)}this.node.renderIndent(true,e!=g)}},addClass:function(a){if(this.elNode){Ext.fly(this.elNode).addClass(a)}},removeClass:function(a){if(this.elNode){Ext.fly(this.elNode).removeClass(a)}},remove:function(){if(this.rendered){this.holder=document.createElement("div");this.holder.appendChild(this.wrap)}},fireEvent:function(){return this.node.fireEvent.apply(this.node,arguments)},initEvents:function(){this.node.on("move",this.onMove,this);if(this.node.disabled){this.onDisableChange(this.node,true)}if(this.node.hidden){this.hide()}var b=this.node.getOwnerTree();var a=b.enableDD||b.enableDrag||b.enableDrop;if(a&&(!this.node.isRoot||b.rootVisible)){Ext.dd.Registry.register(this.elNode,{node:this.node,handles:this.getDDHandles(),isHandle:false})}},getDDHandles:function(){return[this.iconNode,this.textNode,this.elNode]},hide:function(){this.node.hidden=true;if(this.wrap){this.wrap.style.display="none"}},show:function(){this.node.hidden=false;if(this.wrap){this.wrap.style.display=""}},onContextMenu:function(a){if(this.node.hasListener("contextmenu")||this.node.getOwnerTree().hasListener("contextmenu")){a.preventDefault();this.focus();this.fireEvent("contextmenu",this.node,a)}},onClick:function(c){if(this.dropping){c.stopEvent();return}if(this.fireEvent("beforeclick",this.node,c)!==false){var b=c.getTarget("a");if(!this.disabled&&this.node.attributes.href&&b){this.fireEvent("click",this.node,c);return}else{if(b&&c.ctrlKey){c.stopEvent()}}c.preventDefault();if(this.disabled){return}if(this.node.attributes.singleClickExpand&&!this.animating&&this.node.isExpandable()){this.node.toggle()}this.fireEvent("click",this.node,c)}else{c.stopEvent()}},onDblClick:function(a){a.preventDefault();if(this.disabled){return}if(this.fireEvent("beforedblclick",this.node,a)!==false){if(this.checkbox){this.toggleCheck()}if(!this.animating&&this.node.isExpandable()){this.node.toggle()}this.fireEvent("dblclick",this.node,a)}},onOver:function(a){this.addClass("x-tree-node-over")},onOut:function(a){this.removeClass("x-tree-node-over")},onCheckChange:function(){var a=this.checkbox.checked;this.checkbox.defaultChecked=a;this.node.attributes.checked=a;this.fireEvent("checkchange",this.node,a)},ecClick:function(a){if(!this.animating&&this.node.isExpandable()){this.node.toggle()}},startDrop:function(){this.dropping=true},endDrop:function(){setTimeout(function(){this.dropping=false}.createDelegate(this),50)},expand:function(){this.updateExpandIcon();this.ctNode.style.display=""},focus:function(){if(!this.node.preventHScroll){try{this.anchor.focus()}catch(c){}}else{try{var b=this.node.getOwnerTree().getTreeEl().dom;var a=b.scrollLeft;this.anchor.focus();b.scrollLeft=a}catch(c){}}},toggleCheck:function(b){var a=this.checkbox;if(a){a.checked=(b===undefined?!a.checked:b);this.onCheckChange()}},blur:function(){try{this.anchor.blur()}catch(a){}},animExpand:function(b){var a=Ext.get(this.ctNode);a.stopFx();if(!this.node.isExpandable()){this.updateExpandIcon();this.ctNode.style.display="";Ext.callback(b);return}this.animating=true;this.updateExpandIcon();a.slideIn("t",{callback:function(){this.animating=false;Ext.callback(b)},scope:this,duration:this.node.ownerTree.duration||0.25})},highlight:function(){var a=this.node.getOwnerTree();Ext.fly(this.wrap).highlight(a.hlColor||"C3DAF9",{endColor:a.hlBaseColor})},collapse:function(){this.updateExpandIcon();this.ctNode.style.display="none"},animCollapse:function(b){var a=Ext.get(this.ctNode);a.enableDisplayMode("block");a.stopFx();this.animating=true;this.updateExpandIcon();a.slideOut("t",{callback:function(){this.animating=false;Ext.callback(b)},scope:this,duration:this.node.ownerTree.duration||0.25})},getContainer:function(){return this.ctNode},getEl:function(){return this.wrap},appendDDGhost:function(a){a.appendChild(this.elNode.cloneNode(true))},getDDRepairXY:function(){return Ext.lib.Dom.getXY(this.iconNode)},onRender:function(){this.render()},render:function(c){var e=this.node,b=e.attributes;var d=e.parentNode?e.parentNode.ui.getContainer():e.ownerTree.innerCt.dom;if(!this.rendered){this.rendered=true;this.renderElements(e,b,d,c);if(b.qtip){this.onTipChange(e,b.qtip,b.qtipTitle)}else{if(b.qtipCfg){b.qtipCfg.target=Ext.id(this.textNode);Ext.QuickTips.register(b.qtipCfg)}}this.initEvents();if(!this.node.expanded){this.updateExpandIcon(true)}}else{if(c===true){d.appendChild(this.wrap)}}},renderElements:function(e,k,j,l){this.indentMarkup=e.parentNode?e.parentNode.ui.getChildIndent():"";var g=Ext.isBoolean(k.checked),b,c=this.getHref(k.href),d=['<li class="x-tree-node"><div ext:tree-node-id="',e.id,'" class="x-tree-node-el x-tree-node-leaf x-unselectable ',k.cls,'" unselectable="on">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img alt="" src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow" />','<img alt="" src="',k.icon||this.emptyIcon,'" class="x-tree-node-icon',(k.icon?" x-tree-node-inline-icon":""),(k.iconCls?" "+k.iconCls:""),'" unselectable="on" />',g?('<input class="x-tree-node-cb" type="checkbox" '+(k.checked?'checked="checked" />':"/>")):"",'<a hidefocus="on" class="x-tree-node-anchor" href="',c,'" tabIndex="1" ',k.hrefTarget?' target="'+k.hrefTarget+'"':"",'><span unselectable="on">',e.text,"</span></a></div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"].join("");if(l!==true&&e.nextSibling&&(b=e.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",b,d)}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",j,d)}this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var i=this.elNode.childNodes;this.indentNode=i[0];this.ecNode=i[1];this.iconNode=i[2];var h=3;if(g){this.checkbox=i[3];this.checkbox.defaultChecked=this.checkbox.checked;h++}this.anchor=i[h];this.textNode=i[h].firstChild},getHref:function(a){return Ext.isEmpty(a)?(Ext.isGecko?"":"#"):a},getAnchor:function(){return this.anchor},getTextEl:function(){return this.textNode},getIconEl:function(){return this.iconNode},isChecked:function(){return this.checkbox?this.checkbox.checked:false},updateExpandIcon:function(){if(this.rendered){var g=this.node,d,c,a=g.isLast()?"x-tree-elbow-end":"x-tree-elbow",e=g.hasChildNodes();if(e||g.attributes.expandable){if(g.expanded){a+="-minus";d="x-tree-node-collapsed";c="x-tree-node-expanded"}else{a+="-plus";d="x-tree-node-expanded";c="x-tree-node-collapsed"}if(this.wasLeaf){this.removeClass("x-tree-node-leaf");this.wasLeaf=false}if(this.c1!=d||this.c2!=c){Ext.fly(this.elNode).replaceClass(d,c);this.c1=d;this.c2=c}}else{if(!this.wasLeaf){Ext.fly(this.elNode).replaceClass("x-tree-node-expanded","x-tree-node-collapsed");delete this.c1;delete this.c2;this.wasLeaf=true}}var b="x-tree-ec-icon "+a;if(this.ecc!=b){this.ecNode.className=b;this.ecc=b}}},onIdChange:function(a){if(this.rendered){this.elNode.setAttribute("ext:tree-node-id",a)}},getChildIndent:function(){if(!this.childIndent){var a=[],b=this.node;while(b){if(!b.isRoot||(b.isRoot&&b.ownerTree.rootVisible)){if(!b.isLast()){a.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-elbow-line" />')}else{a.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-icon" />')}}b=b.parentNode}this.childIndent=a.join("")}return this.childIndent},renderIndent:function(){if(this.rendered){var a="",b=this.node.parentNode;if(b){a=b.ui.getChildIndent()}if(this.indentMarkup!=a){this.indentNode.innerHTML=a;this.indentMarkup=a}this.updateExpandIcon()}},destroy:function(){if(this.elNode){Ext.dd.Registry.unregister(this.elNode.id)}Ext.each(["textnode","anchor","checkbox","indentNode","ecNode","iconNode","elNode","ctNode","wrap","holder"],function(a){if(this[a]){Ext.fly(this[a]).remove();delete this[a]}},this);delete this.node}});Ext.tree.RootTreeNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{render:function(){if(!this.rendered){var a=this.node.ownerTree.innerCt.dom;this.node.expanded=true;a.innerHTML='<div class="x-tree-root-node"></div>';this.wrap=this.ctNode=a.firstChild}},collapse:Ext.emptyFn,expand:Ext.emptyFn});Ext.tree.TreeLoader=function(a){this.baseParams={};Ext.apply(this,a);this.addEvents("beforeload","load","loadexception");Ext.tree.TreeLoader.superclass.constructor.call(this);if(Ext.isString(this.paramOrder)){this.paramOrder=this.paramOrder.split(/[\s,|]/)}};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,paramOrder:undefined,paramsAsHash:false,nodeParameter:"node",directFn:undefined,load:function(b,c,a){if(this.clearOnLoad){while(b.firstChild){b.removeChild(b.firstChild)}}if(this.doPreload(b)){this.runCallback(c,a||b,[b])}else{if(this.directFn||this.dataUrl||this.url){this.requestData(b,c,a||b)}}},doPreload:function(d){if(d.attributes.children){if(d.childNodes.length<1){var c=d.attributes.children;d.beginUpdate();for(var b=0,a=c.length;b<a;b++){var e=d.appendChild(this.createNode(c[b]));if(this.preloadChildren){this.doPreload(e)}}d.endUpdate()}return true}return false},getParams:function(g){var e=Ext.apply({},this.baseParams),h=this.nodeParameter,b=this.paramOrder;h&&(e[h]=g.id);if(this.directFn){var c=[g.id];if(b){if(h&&b.indexOf(h)>-1){c=[]}for(var d=0,a=b.length;d<a;d++){c.push(e[b[d]])}}else{if(this.paramsAsHash){c=[e]}}return c}else{return e}},requestData:function(c,d,b){if(this.fireEvent("beforeload",this,c,d)!==false){if(this.directFn){var a=this.getParams(c);a.push(this.processDirectResponse.createDelegate(this,[{callback:d,node:c,scope:b}],true));this.directFn.apply(window,a)}else{this.transId=Ext.Ajax.request({method:this.requestMethod,url:this.dataUrl||this.url,success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:d,node:c,scope:b},params:this.getParams(c)})}}else{this.runCallback(d,b||c,[])}},processDirectResponse:function(a,b,c){if(b.status){this.handleResponse({responseData:Ext.isArray(a)?a:null,responseText:a,argument:c})}else{this.handleFailure({argument:c})}},runCallback:function(a,c,b){if(Ext.isFunction(a)){a.apply(c,b)}},isLoading:function(){return !!this.transId},abort:function(){if(this.isLoading()){Ext.Ajax.abort(this.transId)}},createNode:function(attr){if(this.baseAttrs){Ext.applyIf(attr,this.baseAttrs)}if(this.applyLoader!==false&&!attr.loader){attr.loader=this}if(Ext.isString(attr.uiProvider)){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider)}if(attr.nodeType){return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr)}else{return attr.leaf?new Ext.tree.TreeNode(attr):new Ext.tree.AsyncTreeNode(attr)}},processResponse:function(d,c,k,l){var m=d.responseText;try{var a=d.responseData||Ext.decode(m);c.beginUpdate();for(var g=0,h=a.length;g<h;g++){var b=this.createNode(a[g]);if(b){c.appendChild(b)}}c.endUpdate();this.runCallback(k,l||c,[c])}catch(j){this.handleFailure(d)}},handleResponse:function(c){this.transId=false;var b=c.argument;this.processResponse(c,b.node,b.callback,b.scope);this.fireEvent("load",this,b.node,c)},handleFailure:function(c){this.transId=false;var b=c.argument;this.fireEvent("loadexception",this,b.node,c);this.runCallback(b.callback,b.scope||b.node,[b.node])},destroy:function(){this.abort();this.purgeListeners()}});Ext.tree.TreeFilter=function(a,b){this.tree=a;this.filtered={};Ext.apply(this,b)};Ext.tree.TreeFilter.prototype={clearBlank:false,reverse:false,autoClear:false,remove:false,filter:function(d,a,b){a=a||"text";var c;if(typeof d=="string"){var e=d.length;if(e==0&&this.clearBlank){this.clear();return}d=d.toLowerCase();c=function(g){return g.attributes[a].substr(0,e).toLowerCase()==d}}else{if(d.exec){c=function(g){return d.test(g.attributes[a])}}else{throw"Illegal filter type, must be string or regex"}}this.filterBy(c,null,b)},filterBy:function(d,c,b){b=b||this.tree.root;if(this.autoClear){this.clear()}var a=this.filtered,i=this.reverse;var e=function(k){if(k==b){return true}if(a[k.id]){return false}var j=d.call(c||k,k);if(!j||i){a[k.id]=k;k.ui.hide();return false}return true};b.cascade(e);if(this.remove){for(var h in a){if(typeof h!="function"){var g=a[h];if(g&&g.parentNode){g.parentNode.removeChild(g)}}}}},clear:function(){var b=this.tree;var a=this.filtered;for(var d in a){if(typeof d!="function"){var c=a[d];if(c){c.ui.show()}}}this.filtered={}}};Ext.tree.TreeSorter=Ext.extend(Object,{constructor:function(a,c){Ext.apply(this,c);a.on({scope:this,beforechildrenrendered:this.doSort,append:this.updateSort,insert:this.updateSort,textchange:this.updateSortParent});var e=this.dir&&this.dir.toLowerCase()=="desc",i=this.property||"text",d=this.sortType,h=this.folderSort,b=this.caseSensitive===true,g=this.leafAttr||"leaf";if(Ext.isString(d)){d=Ext.data.SortTypes[d]}this.sortFn=function(o,m){var k=o.attributes,j=m.attributes;if(h){if(k[g]&&!j[g]){return 1}if(!k[g]&&j[g]){return -1}}var n=k[i],l=j[i],q=d?d(n,o):(b?n:n.toUpperCase()),p=d?d(l,m):(b?l:l.toUpperCase());if(q<p){return e?1:-1}else{if(q>p){return e?-1:1}}return 0}},doSort:function(a){a.sort(this.sortFn)},updateSort:function(a,b){if(b.childrenRendered){this.doSort.defer(1,this,[b])}},updateSortParent:function(a){var b=a.parentNode;if(b&&b.childrenRendered){this.doSort.defer(1,this,[b])}}});if(Ext.dd.DropZone){Ext.tree.TreeDropZone=function(a,b){this.allowParentInsert=b.allowParentInsert||false;this.allowContainerDrop=b.allowContainerDrop||false;this.appendOnly=b.appendOnly||false;Ext.tree.TreeDropZone.superclass.constructor.call(this,a.getTreeEl(),b);this.tree=a;this.dragOverData={};this.lastInsertClass="x-tree-no-status"};Ext.extend(Ext.tree.TreeDropZone,Ext.dd.DropZone,{ddGroup:"TreeDD",expandDelay:1000,expandNode:function(a){if(a.hasChildNodes()&&!a.isExpanded()){a.expand(false,null,this.triggerCacheRefresh.createDelegate(this))}},queueExpand:function(a){this.expandProcId=this.expandNode.defer(this.expandDelay,this,[a])},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false}},isValidDropPoint:function(a,k,i,d,c){if(!a||!c){return false}var g=a.node;var h=c.node;if(!(g&&g.isTarget&&k)){return false}if(k=="append"&&g.allowChildren===false){return false}if((k=="above"||k=="below")&&(g.parentNode&&g.parentNode.allowChildren===false)){return false}if(h&&(g==h||h.contains(g))){return false}var b=this.dragOverData;b.tree=this.tree;b.target=g;b.data=c;b.point=k;b.source=i;b.rawEvent=d;b.dropNode=h;b.cancel=false;var j=this.tree.fireEvent("nodedragover",b);return b.cancel===false&&j!==false},getDropPoint:function(h,g,l){var m=g.node;if(m.isRoot){return m.allowChildren!==false?"append":false}var c=g.ddel;var o=Ext.lib.Dom.getY(c),j=o+c.offsetHeight;var i=Ext.lib.Event.getPageY(h);var k=m.allowChildren===false||m.isLeaf();if(this.appendOnly||m.parentNode.allowChildren===false){return k?false:"append"}var d=false;if(!this.allowParentInsert){d=m.hasChildNodes()&&m.isExpanded()}var a=(j-o)/(k?2:3);if(i>=o&&i<(o+a)){return"above"}else{if(!d&&(k||i>=j-a&&i<=j)){return"below"}else{return"append"}}},onNodeEnter:function(d,a,c,b){this.cancelExpand()},onContainerOver:function(a,c,b){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",a,c,b)){return this.dropAllowed}return this.dropNotAllowed},onNodeOver:function(b,i,h,g){var k=this.getDropPoint(h,b,i);var c=b.node;if(!this.expandProcId&&k=="append"&&c.hasChildNodes()&&!b.node.isExpanded()){this.queueExpand(c)}else{if(k!="append"){this.cancelExpand()}}var d=this.dropNotAllowed;if(this.isValidDropPoint(b,k,i,h,g)){if(k){var a=b.ddel;var j;if(k=="above"){d=b.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";j="x-tree-drag-insert-above"}else{if(k=="below"){d=b.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";j="x-tree-drag-insert-below"}else{d="x-tree-drop-ok-append";j="x-tree-drag-append"}}if(this.lastInsertClass!=j){Ext.fly(a).replaceClass(this.lastInsertClass,j);this.lastInsertClass=j}}}return d},onNodeOut:function(d,a,c,b){this.cancelExpand();this.removeDropIndicators(d)},onNodeDrop:function(i,b,h,d){var a=this.getDropPoint(h,i,b);var g=i.node;g.ui.startDrop();if(!this.isValidDropPoint(i,a,b,h,d)){g.ui.endDrop();return false}var c=d.node||(b.getTreeNode?b.getTreeNode(d,g,a,h):null);return this.processDrop(g,d,a,b,h,c)},onContainerDrop:function(a,g,c){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",a,g,c)){var d=this.tree.getRootNode();d.ui.startDrop();var b=c.node||(a.getTreeNode?a.getTreeNode(c,d,"append",g):null);return this.processDrop(d,c,"append",a,g,b)}return false},processDrop:function(j,h,b,a,i,d){var g={tree:this.tree,target:j,data:h,point:b,source:a,rawEvent:i,dropNode:d,cancel:!d,dropStatus:false};var c=this.tree.fireEvent("beforenodedrop",g);if(c===false||g.cancel===true||!g.dropNode){j.ui.endDrop();return g.dropStatus}j=g.target;if(b=="append"&&!j.isExpanded()){j.expand(false,null,function(){this.completeDrop(g)}.createDelegate(this))}else{this.completeDrop(g)}return true},completeDrop:function(h){var d=h.dropNode,e=h.point,c=h.target;if(!Ext.isArray(d)){d=[d]}var g;for(var b=0,a=d.length;b<a;b++){g=d[b];if(e=="above"){c.parentNode.insertBefore(g,c)}else{if(e=="below"){c.parentNode.insertBefore(g,c.nextSibling)}else{c.appendChild(g)}}}g.ui.focus();if(Ext.enableFx&&this.tree.hlDrop){g.ui.highlight()}c.ui.endDrop();this.tree.fireEvent("nodedrop",h)},afterNodeMoved:function(a,c,g,d,b){if(Ext.enableFx&&this.tree.hlDrop){b.ui.focus();b.ui.highlight()}this.tree.fireEvent("nodedrop",this.tree,d,c,a,g)},getTree:function(){return this.tree},removeDropIndicators:function(b){if(b&&b.ddel){var a=b.ddel;Ext.fly(a).removeClass(["x-tree-drag-insert-above","x-tree-drag-insert-below","x-tree-drag-append"]);this.lastInsertClass="_noclass"}},beforeDragDrop:function(b,a,c){this.cancelExpand();return true},afterRepair:function(a){if(a&&Ext.enableFx){a.node.ui.highlight()}this.hideProxy()}})}if(Ext.dd.DragZone){Ext.tree.TreeDragZone=function(a,b){Ext.tree.TreeDragZone.superclass.constructor.call(this,a.innerCt,b);this.tree=a};Ext.extend(Ext.tree.TreeDragZone,Ext.dd.DragZone,{ddGroup:"TreeDD",onBeforeDrag:function(a,b){var c=a.node;return c&&c.draggable&&!c.disabled},onInitDrag:function(b){var a=this.dragData;this.tree.getSelectionModel().select(a.node);this.tree.eventModel.disable();this.proxy.update("");a.node.ui.appendDDGhost(this.proxy.ghost.dom);this.tree.fireEvent("startdrag",this.tree,a.node,b)},getRepairXY:function(b,a){return a.node.ui.getDDRepairXY()},onEndDrag:function(a,b){this.tree.eventModel.enable.defer(100,this.tree.eventModel);this.tree.fireEvent("enddrag",this.tree,a.node,b)},onValidDrop:function(a,b,c){this.tree.fireEvent("dragdrop",this.tree,this.dragData.node,a,b);this.hideProxy()},beforeInvalidDrop:function(a,c){var b=this.tree.getSelectionModel();b.clearSelections();b.select(this.dragData.node)},afterRepair:function(){if(Ext.enableFx&&this.tree.hlDrop){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")}this.dragging=false}})}Ext.tree.TreeEditor=function(a,c,b){c=c||{};var d=c.events?c:new Ext.form.TextField(c);Ext.tree.TreeEditor.superclass.constructor.call(this,d,b);this.tree=a;if(!a.rendered){a.on("render",this.initEditor,this)}else{this.initEditor(a)}};Ext.extend(Ext.tree.TreeEditor,Ext.Editor,{alignment:"l-l",autoSize:false,hideEl:false,cls:"x-small-editor x-tree-editor",shim:false,shadow:"frame",maxWidth:250,editDelay:350,initEditor:function(a){a.on({scope:this,beforeclick:this.beforeNodeClick,dblclick:this.onNodeDblClick});this.on({scope:this,complete:this.updateNode,beforestartedit:this.fitToTree,specialkey:this.onSpecialKey});this.on("startedit",this.bindScroll,this,{delay:10})},fitToTree:function(b,c){var e=this.tree.getTreeEl().dom,d=c.dom;if(e.scrollLeft>d.offsetLeft){e.scrollLeft=d.offsetLeft}var a=Math.min(this.maxWidth,(e.clientWidth>20?e.clientWidth:e.offsetWidth)-Math.max(0,d.offsetLeft-e.scrollLeft)-5);this.setSize(a,"")},triggerEdit:function(a,c){this.completeEdit();if(a.attributes.editable!==false){this.editNode=a;if(this.tree.autoScroll){Ext.fly(a.ui.getEl()).scrollIntoView(this.tree.body)}var b=a.text||"";if(!Ext.isGecko&&Ext.isEmpty(a.text)){a.setText("&#160;")}this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[a.ui.textNode,b]);return false}},bindScroll:function(){this.tree.getTreeEl().on("scroll",this.cancelEdit,this)},beforeNodeClick:function(a,b){clearTimeout(this.autoEditTimer);if(this.tree.getSelectionModel().isSelected(a)){b.stopEvent();return this.triggerEdit(a)}},onNodeDblClick:function(a,b){clearTimeout(this.autoEditTimer)},updateNode:function(a,b){this.tree.getTreeEl().un("scroll",this.cancelEdit,this);this.editNode.setText(b)},onHide:function(){Ext.tree.TreeEditor.superclass.onHide.call(this);if(this.editNode){this.editNode.ui.focus.defer(50,this.editNode.ui)}},onSpecialKey:function(c,b){var a=b.getKey();if(a==b.ESC){b.stopEvent();this.cancelEdit()}else{if(a==b.ENTER&&!b.hasModifier()){b.stopEvent();this.completeEdit()}}},onDestroy:function(){clearTimeout(this.autoEditTimer);Ext.tree.TreeEditor.superclass.onDestroy.call(this);var a=this.tree;a.un("beforeclick",this.beforeNodeClick,this);a.un("dblclick",this.onNodeDblClick,this)}});var swfobject=function(){var E="undefined",s="object",T="Shockwave Flash",X="ShockwaveFlash.ShockwaveFlash",r="application/x-shockwave-flash",S="SWFObjectExprInst",y="onreadystatechange",P=window,k=document,u=navigator,U=false,V=[i],p=[],O=[],J=[],m,R,F,C,K=false,a=false,o,H,n=true,N=function(){var ab=typeof k.getElementById!=E&&typeof k.getElementsByTagName!=E&&typeof k.createElement!=E,ai=u.userAgent.toLowerCase(),Z=u.platform.toLowerCase(),af=Z?(/win/).test(Z):/win/.test(ai),ad=Z?(/mac/).test(Z):/mac/.test(ai),ag=/webkit/.test(ai)?parseFloat(ai.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,Y=!+"\v1",ah=[0,0,0],ac=null;if(typeof u.plugins!=E&&typeof u.plugins[T]==s){ac=u.plugins[T].description;if(ac&&!(typeof u.mimeTypes!=E&&u.mimeTypes[r]&&!u.mimeTypes[r].enabledPlugin)){U=true;Y=false;ac=ac.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ah[0]=parseInt(ac.replace(/^(.*)\..*$/,"$1"),10);ah[1]=parseInt(ac.replace(/^.*\.(.*)\s.*$/,"$1"),10);ah[2]=/[a-zA-Z]/.test(ac)?parseInt(ac.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof P.ActiveXObject!=E){try{var ae=new ActiveXObject(X);if(ae){ac=ae.GetVariable("$version");if(ac){Y=true;ac=ac.split(" ")[1].split(",");ah=[parseInt(ac[0],10),parseInt(ac[1],10),parseInt(ac[2],10)]}}}catch(aa){}}}return{w3:ab,pv:ah,wk:ag,ie:Y,win:af,mac:ad}}(),l=function(){if(!N.w3){return}if((typeof k.readyState!=E&&k.readyState=="complete")||(typeof k.readyState==E&&(k.getElementsByTagName("body")[0]||k.body))){g()}if(!K){if(typeof k.addEventListener!=E){k.addEventListener("DOMContentLoaded",g,false)}if(N.ie&&N.win){k.attachEvent(y,function(){if(k.readyState=="complete"){k.detachEvent(y,arguments.callee);g()}});if(P==top){(function(){if(K){return}try{k.documentElement.doScroll("left")}catch(Y){setTimeout(arguments.callee,0);return}g()})()}}if(N.wk){(function(){if(K){return}if(!(/loaded|complete/).test(k.readyState)){setTimeout(arguments.callee,0);return}g()})()}t(g)}}();function g(){if(K){return}try{var aa=k.getElementsByTagName("body")[0].appendChild(D("span"));aa.parentNode.removeChild(aa)}catch(ab){return}K=true;var Y=V.length;for(var Z=0;Z<Y;Z++){V[Z]()}}function L(Y){if(K){Y()}else{V[V.length]=Y}}function t(Z){if(typeof P.addEventListener!=E){P.addEventListener("load",Z,false)}else{if(typeof k.addEventListener!=E){k.addEventListener("load",Z,false)}else{if(typeof P.attachEvent!=E){j(P,"onload",Z)}else{if(typeof P.onload=="function"){var Y=P.onload;P.onload=function(){Y();Z()}}else{P.onload=Z}}}}}function i(){I()}function W(){var Y=k.getElementsByTagName("body")[0];var ab=D(s);ab.setAttribute("type",r);var aa=Y.appendChild(ab);if(aa){var Z=0;(function(){if(typeof aa.GetVariable!=E){var ac=aa.GetVariable("$version");if(ac){ac=ac.split(" ")[1].split(",");N.pv=[parseInt(ac[0],10),parseInt(ac[1],10),parseInt(ac[2],10)]}}else{if(Z<10){Z++;setTimeout(arguments.callee,10);return}}Y.removeChild(ab);aa=null;I()})()}else{I()}}function I(){var ah=p.length;if(ah>0){for(var ag=0;ag<ah;ag++){var Z=p[ag].id;var ac=p[ag].callbackFn;var ab={success:false,id:Z};if(N.pv[0]>0){var af=c(Z);if(af){if(G(p[ag].swfVersion)&&!(N.wk&&N.wk<312)){x(Z,true);if(ac){ab.success=true;ab.ref=A(Z);ac(ab)}}else{if(p[ag].expressInstall&&B()){var aj={};aj.data=p[ag].expressInstall;aj.width=af.getAttribute("width")||"0";aj.height=af.getAttribute("height")||"0";if(af.getAttribute("class")){aj.styleclass=af.getAttribute("class")}if(af.getAttribute("align")){aj.align=af.getAttribute("align")}var ai={};var Y=af.getElementsByTagName("param");var ad=Y.length;for(var ae=0;ae<ad;ae++){if(Y[ae].getAttribute("name").toLowerCase()!="movie"){ai[Y[ae].getAttribute("name")]=Y[ae].getAttribute("value")}}Q(aj,ai,Z,ac)}else{q(af);if(ac){ac(ab)}}}}}else{x(Z,true);if(ac){var aa=A(Z);if(aa&&typeof aa.SetVariable!=E){ab.success=true;ab.ref=aa}ac(ab)}}}}}function A(ab){var Y=null;var Z=c(ab);if(Z&&Z.nodeName=="OBJECT"){if(typeof Z.SetVariable!=E){Y=Z}else{var aa=Z.getElementsByTagName(s)[0];if(aa){Y=aa}}}return Y}function B(){return !a&&G("6.0.65")&&(N.win||N.mac)&&!(N.wk&&N.wk<312)}function Q(ab,ac,Y,aa){a=true;F=aa||null;C={success:false,id:Y};var af=c(Y);if(af){if(af.nodeName=="OBJECT"){m=h(af);R=null}else{m=af;R=Y}ab.id=S;if(typeof ab.width==E||(!(/%$/).test(ab.width)&&parseInt(ab.width,10)<310)){ab.width="310"}if(typeof ab.height==E||(!(/%$/).test(ab.height)&&parseInt(ab.height,10)<137)){ab.height="137"}k.title=k.title.slice(0,47)+" - Flash Player Installation";var ae=N.ie&&N.win?"ActiveX":"PlugIn",ad="MMredirectURL="+P.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ae+"&MMdoctitle="+k.title;if(typeof ac.flashvars!=E){ac.flashvars+="&"+ad}else{ac.flashvars=ad}if(N.ie&&N.win&&af.readyState!=4){var Z=D("div");Y+="SWFObjectNew";Z.setAttribute("id",Y);af.parentNode.insertBefore(Z,af);af.style.display="none";(function(){if(af.readyState==4){af.parentNode.removeChild(af)}else{setTimeout(arguments.callee,10)}})()}v(ab,ac,Y)}}function q(Z){if(N.ie&&N.win&&Z.readyState!=4){var Y=D("div");Z.parentNode.insertBefore(Y,Z);Y.parentNode.replaceChild(h(Z),Y);Z.style.display="none";(function(){if(Z.readyState==4){Z.parentNode.removeChild(Z)}else{setTimeout(arguments.callee,10)}})()}else{Z.parentNode.replaceChild(h(Z),Z)}}function h(ad){var ab=D("div");if(N.win&&N.ie){ab.innerHTML=ad.innerHTML}else{var Z=ad.getElementsByTagName(s)[0];if(Z){var ae=Z.childNodes;if(ae){var Y=ae.length;for(var aa=0;aa<Y;aa++){if(!(ae[aa].nodeType==1&&ae[aa].nodeName=="PARAM")&&!(ae[aa].nodeType==8)){ab.appendChild(ae[aa].cloneNode(true))}}}}}return ab}function v(aj,ah,Z){var Y,ab=c(Z);if(N.wk&&N.wk<312){return Y}if(ab){if(typeof aj.id==E){aj.id=Z}if(N.ie&&N.win){var ai="";for(var af in aj){if(aj[af]!=Object.prototype[af]){if(af.toLowerCase()=="data"){ah.movie=aj[af]}else{if(af.toLowerCase()=="styleclass"){ai+=' class="'+aj[af]+'"'}else{if(af.toLowerCase()!="classid"){ai+=" "+af+'="'+aj[af]+'"'}}}}}var ag="";for(var ae in ah){if(ah[ae]!=Object.prototype[ae]){ag+='<param name="'+ae+'" value="'+ah[ae]+'" />'}}ab.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ai+">"+ag+"</object>";O[O.length]=aj.id;Y=c(aj.id)}else{var aa=D(s);aa.setAttribute("type",r);for(var ad in aj){if(aj[ad]!=Object.prototype[ad]){if(ad.toLowerCase()=="styleclass"){aa.setAttribute("class",aj[ad])}else{if(ad.toLowerCase()!="classid"){aa.setAttribute(ad,aj[ad])}}}}for(var ac in ah){if(ah[ac]!=Object.prototype[ac]&&ac.toLowerCase()!="movie"){e(aa,ac,ah[ac])}}ab.parentNode.replaceChild(aa,ab);Y=aa}}return Y}function e(aa,Y,Z){var ab=D("param");ab.setAttribute("name",Y);ab.setAttribute("value",Z);aa.appendChild(ab)}function z(Z){var Y=c(Z);if(Y&&Y.nodeName=="OBJECT"){if(N.ie&&N.win){Y.style.display="none";(function(){if(Y.readyState==4){b(Z)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.removeChild(Y)}}}function b(aa){var Z=c(aa);if(Z){for(var Y in Z){if(typeof Z[Y]=="function"){Z[Y]=null}}Z.parentNode.removeChild(Z)}}function c(aa){var Y=null;try{Y=k.getElementById(aa)}catch(Z){}return Y}function D(Y){return k.createElement(Y)}function j(aa,Y,Z){aa.attachEvent(Y,Z);J[J.length]=[aa,Y,Z]}function G(aa){var Z=N.pv,Y=aa.split(".");Y[0]=parseInt(Y[0],10);Y[1]=parseInt(Y[1],10)||0;Y[2]=parseInt(Y[2],10)||0;return(Z[0]>Y[0]||(Z[0]==Y[0]&&Z[1]>Y[1])||(Z[0]==Y[0]&&Z[1]==Y[1]&&Z[2]>=Y[2]))?true:false}function w(ad,Z,ae,ac){if(N.ie&&N.mac){return}var ab=k.getElementsByTagName("head")[0];if(!ab){return}var Y=(ae&&typeof ae=="string")?ae:"screen";if(ac){o=null;H=null}if(!o||H!=Y){var aa=D("style");aa.setAttribute("type","text/css");aa.setAttribute("media",Y);o=ab.appendChild(aa);if(N.ie&&N.win&&typeof k.styleSheets!=E&&k.styleSheets.length>0){o=k.styleSheets[k.styleSheets.length-1]}H=Y}if(N.ie&&N.win){if(o&&typeof o.addRule==s){o.addRule(ad,Z)}}else{if(o&&typeof k.createTextNode!=E){o.appendChild(k.createTextNode(ad+" {"+Z+"}"))}}}function x(aa,Y){if(!n){return}var Z=Y?"visible":"hidden";if(K&&c(aa)){c(aa).style.visibility=Z}else{w("#"+aa,"visibility:"+Z)}}function M(Z){var aa=/[\\\"<>\.;]/;var Y=aa.exec(Z)!=null;return Y&&typeof encodeURIComponent!=E?encodeURIComponent(Z):Z}var d=function(){if(N.ie&&N.win){window.attachEvent("onunload",function(){var ad=J.length;for(var ac=0;ac<ad;ac++){J[ac][0].detachEvent(J[ac][1],J[ac][2])}var aa=O.length;for(var ab=0;ab<aa;ab++){z(O[ab])}for(var Z in N){N[Z]=null}N=null;for(var Y in swfobject){swfobject[Y]=null}swfobject=null;window.detachEvent("onunload",arguments.callee)})}}();return{registerObject:function(ac,Y,ab,aa){if(N.w3&&ac&&Y){var Z={};Z.id=ac;Z.swfVersion=Y;Z.expressInstall=ab;Z.callbackFn=aa;p[p.length]=Z;x(ac,false)}else{if(aa){aa({success:false,id:ac})}}},getObjectById:function(Y){if(N.w3){return A(Y)}},embedSWF:function(ac,ai,af,ah,Z,ab,aa,ae,ag,ad){var Y={success:false,id:ai};if(N.w3&&!(N.wk&&N.wk<312)&&ac&&ai&&af&&ah&&Z){x(ai,false);L(function(){af+="";ah+="";var ak={};if(ag&&typeof ag===s){for(var am in ag){ak[am]=ag[am]}}ak.data=ac;ak.width=af;ak.height=ah;var an={};if(ae&&typeof ae===s){for(var al in ae){an[al]=ae[al]}}if(aa&&typeof aa===s){for(var aj in aa){if(typeof an.flashvars!=E){an.flashvars+="&"+aj+"="+aa[aj]}else{an.flashvars=aj+"="+aa[aj]}}}if(G(Z)){var ao=v(ak,an,ai);if(ak.id==ai){x(ai,true)}Y.success=true;Y.ref=ao}else{if(ab&&B()){ak.data=ab;Q(ak,an,ai,ad);return}else{x(ai,true)}}if(ad){ad(Y)}})}else{if(ad){ad(Y)}}},switchOffAutoHideShow:function(){n=false},ua:N,getFlashPlayerVersion:function(){return{major:N.pv[0],minor:N.pv[1],release:N.pv[2]}},hasFlashPlayerVersion:G,createSWF:function(aa,Z,Y){if(N.w3){return v(aa,Z,Y)}else{return undefined}},showExpressInstall:function(aa,ab,Y,Z){if(N.w3&&B()){Q(aa,ab,Y,Z)}},removeSWF:function(Y){if(N.w3){z(Y)}},createCSS:function(ab,aa,Z,Y){if(N.w3){w(ab,aa,Z,Y)}},addDomLoadEvent:L,addLoadEvent:t,getQueryParamValue:function(ab){var aa=k.location.search||k.location.hash;if(aa){if(/\?/.test(aa)){aa=aa.split("?")[1]}if(ab==null){return M(aa)}var Z=aa.split("&");for(var Y=0;Y<Z.length;Y++){if(Z[Y].substring(0,Z[Y].indexOf("="))==ab){return M(Z[Y].substring((Z[Y].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var Y=c(S);if(Y&&m){Y.parentNode.replaceChild(m,Y);if(R){x(R,true);if(N.ie&&N.win){m.style.display="block"}}if(F){F(C)}}a=false}}}}();Ext.FlashComponent=Ext.extend(Ext.BoxComponent,{flashVersion:"9.0.115",backgroundColor:"#ffffff",wmode:"opaque",flashVars:undefined,flashParams:undefined,url:undefined,swfId:undefined,swfWidth:"100%",swfHeight:"100%",expressInstall:false,initComponent:function(){Ext.FlashComponent.superclass.initComponent.call(this);this.addEvents("initialize")},onRender:function(){Ext.FlashComponent.superclass.onRender.apply(this,arguments);var b=Ext.apply({allowScriptAccess:"always",bgcolor:this.backgroundColor,wmode:this.wmode},this.flashParams),a=Ext.apply({allowedDomain:document.location.hostname,YUISwfId:this.getId(),YUIBridgeCallback:"Ext.FlashEventProxy.onEvent"},this.flashVars);new swfobject.embedSWF(this.url,this.id,this.swfWidth,this.swfHeight,this.flashVersion,this.expressInstall?Ext.FlashComponent.EXPRESS_INSTALL_URL:undefined,a,b);this.swf=Ext.getDom(this.id);this.el=Ext.get(this.swf)},getSwfId:function(){return this.swfId||(this.swfId="extswf"+(++Ext.Component.AUTO_ID))},getId:function(){return this.id||(this.id="extflashcmp"+(++Ext.Component.AUTO_ID))},onFlashEvent:function(a){switch(a.type){case"swfReady":this.initSwf();return;case"log":return}a.component=this;this.fireEvent(a.type.toLowerCase().replace(/event$/,""),a)},initSwf:function(){this.onSwfReady(!!this.isInitialized);this.isInitialized=true;this.fireEvent("initialize",this)},beforeDestroy:function(){if(this.rendered){swfobject.removeSWF(this.swf.id)}Ext.FlashComponent.superclass.beforeDestroy.call(this)},onSwfReady:Ext.emptyFn});Ext.FlashComponent.EXPRESS_INSTALL_URL="http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf";Ext.reg("flash",Ext.FlashComponent);Ext.FlashEventProxy={onEvent:function(c,b){var a=Ext.getCmp(c);if(a){a.onFlashEvent(b)}else{arguments.callee.defer(10,this,[c,b])}}};Ext.chart.Chart=Ext.extend(Ext.FlashComponent,{refreshBuffer:100,chartStyle:{padding:10,animationEnabled:true,font:{name:"Tahoma",color:4473924,size:11},dataTip:{padding:5,border:{color:10075112,size:1},background:{color:14346230,alpha:0.9},font:{name:"Tahoma",color:1393291,size:10,bold:true}}},extraStyle:null,seriesStyles:null,disableCaching:Ext.isIE||Ext.isOpera,disableCacheParam:"_dc",initComponent:function(){Ext.chart.Chart.superclass.initComponent.call(this);if(!this.url){this.url=Ext.chart.Chart.CHART_URL}if(this.disableCaching){this.url=Ext.urlAppend(this.url,String.format("{0}={1}",this.disableCacheParam,new Date().getTime()))}this.addEvents("itemmouseover","itemmouseout","itemclick","itemdoubleclick","itemdragstart","itemdrag","itemdragend","beforerefresh","refresh");this.store=Ext.StoreMgr.lookup(this.store)},setStyle:function(a,b){this.swf.setStyle(a,Ext.encode(b))},setStyles:function(a){this.swf.setStyles(Ext.encode(a))},setSeriesStyles:function(b){this.seriesStyles=b;var a=[];Ext.each(b,function(c){a.push(Ext.encode(c))});this.swf.setSeriesStyles(a)},setCategoryNames:function(a){this.swf.setCategoryNames(a)},setLegendRenderer:function(c,b){var a=this;b=b||a;a.removeFnProxy(a.legendFnName);a.legendFnName=a.createFnProxy(function(d){return c.call(b,d)});a.swf.setLegendLabelFunction(a.legendFnName)},setTipRenderer:function(c,b){var a=this;b=b||a;a.removeFnProxy(a.tipFnName);a.tipFnName=a.createFnProxy(function(h,e,g){var d=a.store.getAt(e);return c.call(b,a,d,e,g)});a.swf.setDataTipFunction(a.tipFnName)},setSeries:function(a){this.series=a;this.refresh()},bindStore:function(a,b){if(!b&&this.store){if(a!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("datachanged",this.refresh,this);this.store.un("add",this.delayRefresh,this);this.store.un("remove",this.delayRefresh,this);this.store.un("update",this.delayRefresh,this);this.store.un("clear",this.refresh,this)}}if(a){a=Ext.StoreMgr.lookup(a);a.on({scope:this,datachanged:this.refresh,add:this.delayRefresh,remove:this.delayRefresh,update:this.delayRefresh,clear:this.refresh})}this.store=a;if(a&&!b){this.refresh()}},onSwfReady:function(b){Ext.chart.Chart.superclass.onSwfReady.call(this,b);var a;this.swf.setType(this.type);if(this.chartStyle){this.setStyles(Ext.apply({},this.extraStyle,this.chartStyle))}if(this.categoryNames){this.setCategoryNames(this.categoryNames)}if(this.tipRenderer){a=this.getFunctionRef(this.tipRenderer);this.setTipRenderer(a.fn,a.scope)}if(this.legendRenderer){a=this.getFunctionRef(this.legendRenderer);this.setLegendRenderer(a.fn,a.scope)}if(!b){this.bindStore(this.store,true)}this.refresh.defer(10,this)},delayRefresh:function(){if(!this.refreshTask){this.refreshTask=new Ext.util.DelayedTask(this.refresh,this)}this.refreshTask.delay(this.refreshBuffer)},refresh:function(){if(this.fireEvent("beforerefresh",this)!==false){var m=false;var k=[],c=this.store.data.items;for(var g=0,l=c.length;g<l;g++){k[g]=c[g].data}var e=[];var d=0;var n=null;var h=0;if(this.series){d=this.series.length;for(h=0;h<d;h++){n=this.series[h];var b={};for(var a in n){if(a=="style"&&n.style!==null){b.style=Ext.encode(n.style);m=true}else{b[a]=n[a]}}e.push(b)}}if(d>0){for(h=0;h<d;h++){n=e[h];if(!n.type){n.type=this.type}n.dataProvider=k}}else{e.push({type:this.type,dataProvider:k})}this.swf.setDataProvider(e);if(this.seriesStyles){this.setSeriesStyles(this.seriesStyles)}this.fireEvent("refresh",this)}},createFnProxy:function(a){var b="extFnProxy"+(++Ext.chart.Chart.PROXY_FN_ID);Ext.chart.Chart.proxyFunction[b]=a;return"Ext.chart.Chart.proxyFunction."+b},removeFnProxy:function(a){if(!Ext.isEmpty(a)){a=a.replace("Ext.chart.Chart.proxyFunction.","");delete Ext.chart.Chart.proxyFunction[a]}},getFunctionRef:function(a){if(Ext.isFunction(a)){return{fn:a,scope:this}}else{return{fn:a.fn,scope:a.scope||this}}},onDestroy:function(){if(this.refreshTask&&this.refreshTask.cancel){this.refreshTask.cancel()}Ext.chart.Chart.superclass.onDestroy.call(this);this.bindStore(null);this.removeFnProxy(this.tipFnName);this.removeFnProxy(this.legendFnName)}});Ext.reg("chart",Ext.chart.Chart);Ext.chart.Chart.PROXY_FN_ID=0;Ext.chart.Chart.proxyFunction={};Ext.chart.Chart.CHART_URL="http://yui.yahooapis.com/2.8.2/build/charts/assets/charts.swf";Ext.chart.PieChart=Ext.extend(Ext.chart.Chart,{type:"pie",onSwfReady:function(a){Ext.chart.PieChart.superclass.onSwfReady.call(this,a);this.setDataField(this.dataField);this.setCategoryField(this.categoryField)},setDataField:function(a){this.dataField=a;this.swf.setDataField(a)},setCategoryField:function(a){this.categoryField=a;this.swf.setCategoryField(a)}});Ext.reg("piechart",Ext.chart.PieChart);Ext.chart.CartesianChart=Ext.extend(Ext.chart.Chart,{onSwfReady:function(a){Ext.chart.CartesianChart.superclass.onSwfReady.call(this,a);this.labelFn=[];if(this.xField){this.setXField(this.xField)}if(this.yField){this.setYField(this.yField)}if(this.xAxis){this.setXAxis(this.xAxis)}if(this.xAxes){this.setXAxes(this.xAxes)}if(this.yAxis){this.setYAxis(this.yAxis)}if(this.yAxes){this.setYAxes(this.yAxes)}if(Ext.isDefined(this.constrainViewport)){this.swf.setConstrainViewport(this.constrainViewport)}},setXField:function(a){this.xField=a;this.swf.setHorizontalField(a)},setYField:function(a){this.yField=a;this.swf.setVerticalField(a)},setXAxis:function(a){this.xAxis=this.createAxis("xAxis",a);this.swf.setHorizontalAxis(this.xAxis)},setXAxes:function(c){var b;for(var a=0;a<c.length;a++){b=this.createAxis("xAxis"+a,c[a]);this.swf.setHorizontalAxis(b)}},setYAxis:function(a){this.yAxis=this.createAxis("yAxis",a);this.swf.setVerticalAxis(this.yAxis)},setYAxes:function(c){var b;for(var a=0;a<c.length;a++){b=this.createAxis("yAxis"+a,c[a]);this.swf.setVerticalAxis(b)}},createAxis:function(b,d){var e=Ext.apply({},d),c,a;if(this[b]){a=this[b].labelFunction;this.removeFnProxy(a);this.labelFn.remove(a)}if(e.labelRenderer){c=this.getFunctionRef(e.labelRenderer);e.labelFunction=this.createFnProxy(function(g){return c.fn.call(c.scope,g)});delete e.labelRenderer;this.labelFn.push(e.labelFunction)}if(b.indexOf("xAxis")>-1&&e.position=="left"){e.position="bottom"}return e},onDestroy:function(){Ext.chart.CartesianChart.superclass.onDestroy.call(this);Ext.each(this.labelFn,function(a){this.removeFnProxy(a)},this)}});Ext.reg("cartesianchart",Ext.chart.CartesianChart);Ext.chart.LineChart=Ext.extend(Ext.chart.CartesianChart,{type:"line"});Ext.reg("linechart",Ext.chart.LineChart);Ext.chart.ColumnChart=Ext.extend(Ext.chart.CartesianChart,{type:"column"});Ext.reg("columnchart",Ext.chart.ColumnChart);Ext.chart.StackedColumnChart=Ext.extend(Ext.chart.CartesianChart,{type:"stackcolumn"});Ext.reg("stackedcolumnchart",Ext.chart.StackedColumnChart);Ext.chart.BarChart=Ext.extend(Ext.chart.CartesianChart,{type:"bar"});Ext.reg("barchart",Ext.chart.BarChart);Ext.chart.StackedBarChart=Ext.extend(Ext.chart.CartesianChart,{type:"stackbar"});Ext.reg("stackedbarchart",Ext.chart.StackedBarChart);Ext.chart.Axis=function(a){Ext.apply(this,a)};Ext.chart.Axis.prototype={type:null,orientation:"horizontal",reverse:false,labelFunction:null,hideOverlappingLabels:true,labelSpacing:2};Ext.chart.NumericAxis=Ext.extend(Ext.chart.Axis,{type:"numeric",minimum:NaN,maximum:NaN,majorUnit:NaN,minorUnit:NaN,snapToUnits:true,alwaysShowZero:true,scale:"linear",roundMajorUnit:true,calculateByLabelSize:true,position:"left",adjustMaximumByMajorUnit:true,adjustMinimumByMajorUnit:true});Ext.chart.TimeAxis=Ext.extend(Ext.chart.Axis,{type:"time",minimum:null,maximum:null,majorUnit:NaN,majorTimeUnit:null,minorUnit:NaN,minorTimeUnit:null,snapToUnits:true,stackingEnabled:false,calculateByLabelSize:true});Ext.chart.CategoryAxis=Ext.extend(Ext.chart.Axis,{type:"category",categoryNames:null,calculateCategoryCount:false});Ext.chart.Series=function(a){Ext.apply(this,a)};Ext.chart.Series.prototype={type:null,displayName:null};Ext.chart.CartesianSeries=Ext.extend(Ext.chart.Series,{xField:null,yField:null,showInLegend:true,axis:"primary"});Ext.chart.ColumnSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"column"});Ext.chart.LineSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"line"});Ext.chart.BarSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"bar"});Ext.chart.PieSeries=Ext.extend(Ext.chart.Series,{type:"pie",dataField:null,categoryField:null});Ext.menu.Menu=Ext.extend(Ext.Container,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,ignoreParentClicks:false,enableScrolling:true,maxHeight:null,scrollIncrement:24,showSeparator:true,defaultOffsets:[0,0],plain:false,floating:true,zIndex:15000,hidden:true,layout:"menu",hideMode:"offsets",scrollerHeight:8,autoLayout:true,defaultType:"menuitem",bufferResize:false,initComponent:function(){if(Ext.isArray(this.initialConfig)){Ext.apply(this,{items:this.initialConfig})}this.addEvents("click","mouseover","mouseout","itemclick");Ext.menu.MenuMgr.register(this);if(this.floating){Ext.EventManager.onWindowResize(this.hide,this)}else{if(this.initialConfig.hidden!==false){this.hidden=false}this.internalDefaults={hideOnClick:false}}Ext.menu.Menu.superclass.initComponent.call(this);if(this.autoLayout){var a=this.doLayout.createDelegate(this,[]);this.on({add:a,remove:a})}},getLayoutTarget:function(){return this.ul},onRender:function(b,a){if(!b){b=Ext.getBody()}var c={id:this.getId(),cls:"x-menu "+((this.floating)?"x-menu-floating x-layer ":"")+(this.cls||"")+(this.plain?" x-menu-plain":"")+(this.showSeparator?"":" x-menu-nosep"),style:this.style,cn:[{tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"},{tag:"ul",cls:"x-menu-list"}]};if(this.floating){this.el=new Ext.Layer({shadow:this.shadow,dh:c,constrain:false,parentEl:b,zindex:this.zIndex})}else{this.el=b.createChild(c)}Ext.menu.Menu.superclass.onRender.call(this,b,a);if(!this.keyNav){this.keyNav=new Ext.menu.MenuNav(this)}this.focusEl=this.el.child("a.x-menu-focus");this.ul=this.el.child("ul.x-menu-list");this.mon(this.ul,{scope:this,click:this.onClick,mouseover:this.onMouseOver,mouseout:this.onMouseOut});if(this.enableScrolling){this.mon(this.el,{scope:this,delegate:".x-menu-scroller",click:this.onScroll,mouseover:this.deactivateActive})}},findTargetItem:function(b){var a=b.getTarget(".x-menu-list-item",this.ul,true);if(a&&a.menuItemId){return this.items.get(a.menuItemId)}},onClick:function(b){var a=this.findTargetItem(b);if(a){if(a.isFormField){this.setActiveItem(a)}else{if(a instanceof Ext.menu.BaseItem){if(a.menu&&this.ignoreParentClicks){a.expandMenu();b.preventDefault()}else{if(a.onClick){a.onClick(b);this.fireEvent("click",this,a,b)}}}}}},setActiveItem:function(a,b){if(a!=this.activeItem){this.deactivateActive();if((this.activeItem=a).isFormField){a.focus()}else{a.activate(b)}}else{if(b){a.expandMenu()}}},deactivateActive:function(){var b=this.activeItem;if(b){if(b.isFormField){if(b.collapse){b.collapse()}}else{b.deactivate()}delete this.activeItem}},tryActivate:function(g,e){var b=this.items;for(var c=g,a=b.length;c>=0&&c<a;c+=e){var d=b.get(c);if(d.isVisible()&&!d.disabled&&(d.canActivate||d.isFormField)){this.setActiveItem(d,false);return d}}return false},onMouseOver:function(b){var a=this.findTargetItem(b);if(a){if(a.canActivate&&!a.disabled){this.setActiveItem(a,true)}}this.over=true;this.fireEvent("mouseover",this,b,a)},onMouseOut:function(b){var a=this.findTargetItem(b);if(a){if(a==this.activeItem&&a.shouldDeactivate&&a.shouldDeactivate(b)){this.activeItem.deactivate();delete this.activeItem}}this.over=false;this.fireEvent("mouseout",this,b,a)},onScroll:function(d,b){if(d){d.stopEvent()}var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");a.scrollTop+=this.scrollIncrement*(c?-1:1);if(c?a.scrollTop<=0:a.scrollTop+this.activeMax>=a.scrollHeight){this.onScrollerOut(null,b)}},onScrollerIn:function(d,b){var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");if(c?a.scrollTop>0:a.scrollTop+this.activeMax<a.scrollHeight){Ext.fly(b).addClass(["x-menu-item-active","x-menu-scroller-active"])}},onScrollerOut:function(b,a){Ext.fly(a).removeClass(["x-menu-item-active","x-menu-scroller-active"])},show:function(b,c,a){if(this.floating){this.parentMenu=a;if(!this.el){this.render();this.doLayout(false,true)}this.showAt(this.el.getAlignToXY(b,c||this.defaultAlign,this.defaultOffsets),a)}else{Ext.menu.Menu.superclass.show.call(this)}},showAt:function(b,a){if(this.fireEvent("beforeshow",this)!==false){this.parentMenu=a;if(!this.el){this.render()}if(this.enableScrolling){this.el.setXY(b);b[1]=this.constrainScroll(b[1]);b=[this.el.adjustForConstraints(b)[0],b[1]]}else{b=this.el.adjustForConstraints(b)}this.el.setXY(b);this.el.show();Ext.menu.Menu.superclass.onShow.call(this);if(Ext.isIE9m){this.fireEvent("autosize",this);if(!Ext.isIE8){this.el.repaint()}}this.hidden=false;this.focus();this.fireEvent("show",this)}},constrainScroll:function(i){var b,d=this.ul.setHeight("auto").getHeight(),a=i,h,e,g,c;if(this.floating){e=Ext.fly(this.el.dom.parentNode);g=e.getScroll().top;c=e.getViewSize().height;h=i-g;b=this.maxHeight?this.maxHeight:c-h;if(d>c){b=c;a=i-h}else{if(b<d){a=i-(d-b);b=d}}}else{b=this.getHeight()}if(this.maxHeight){b=Math.min(this.maxHeight,b)}if(d>b&&b>0){this.activeMax=b-this.scrollerHeight*2-this.el.getFrameWidth("tb")-Ext.num(this.el.shadowOffset,0);this.ul.setHeight(this.activeMax);this.createScrollers();this.el.select(".x-menu-scroller").setDisplayed("")}else{this.ul.setHeight(d);this.el.select(".x-menu-scroller").setDisplayed("none")}this.ul.dom.scrollTop=0;return a},createScrollers:function(){if(!this.scroller){this.scroller={pos:0,top:this.el.insertFirst({tag:"div",cls:"x-menu-scroller x-menu-scroller-top",html:"&#160;"}),bottom:this.el.createChild({tag:"div",cls:"x-menu-scroller x-menu-scroller-bottom",html:"&#160;"})};this.scroller.top.hover(this.onScrollerIn,this.onScrollerOut,this);this.scroller.topRepeater=new Ext.util.ClickRepeater(this.scroller.top,{listeners:{click:this.onScroll.createDelegate(this,[null,this.scroller.top],false)}});this.scroller.bottom.hover(this.onScrollerIn,this.onScrollerOut,this);this.scroller.bottomRepeater=new Ext.util.ClickRepeater(this.scroller.bottom,{listeners:{click:this.onScroll.createDelegate(this,[null,this.scroller.bottom],false)}})}},onLayout:function(){if(this.isVisible()){if(this.enableScrolling){this.constrainScroll(this.el.getTop())}if(this.floating){this.el.sync()}}},focus:function(){if(!this.hidden){this.doFocus.defer(50,this)}},doFocus:function(){if(!this.hidden){this.focusEl.focus()}},hide:function(a){if(!this.isDestroyed){this.deepHide=a;Ext.menu.Menu.superclass.hide.call(this);delete this.deepHide}},onHide:function(){Ext.menu.Menu.superclass.onHide.call(this);this.deactivateActive();if(this.el&&this.floating){this.el.hide()}var a=this.parentMenu;if(this.deepHide===true&&a){if(a.floating){a.hide(true)}else{a.deactivateActive()}}},lookupComponent:function(a){if(Ext.isString(a)){a=(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.TextItem(a);this.applyDefaults(a)}else{if(Ext.isObject(a)){a=this.getMenuItem(a)}else{if(a.tagName||a.el){a=new Ext.BoxComponent({el:a})}}}return a},applyDefaults:function(b){if(!Ext.isString(b)){b=Ext.menu.Menu.superclass.applyDefaults.call(this,b);var a=this.internalDefaults;if(a){if(b.events){Ext.applyIf(b.initialConfig,a);Ext.apply(b,a)}else{Ext.applyIf(b,a)}}}return b},getMenuItem:function(a){a.ownerCt=this;if(!a.isXType){if(!a.xtype&&Ext.isBoolean(a.checked)){return new Ext.menu.CheckItem(a)}return Ext.create(a,this.defaultType)}return a},addSeparator:function(){return this.add(new Ext.menu.Separator())},addElement:function(a){return this.add(new Ext.menu.BaseItem({el:a}))},addItem:function(a){return this.add(a)},addMenuItem:function(a){return this.add(this.getMenuItem(a))},addText:function(a){return this.add(new Ext.menu.TextItem(a))},onDestroy:function(){Ext.EventManager.removeResizeListener(this.hide,this);var a=this.parentMenu;if(a&&a.activeChild==this){delete a.activeChild}delete this.parentMenu;Ext.menu.Menu.superclass.onDestroy.call(this);Ext.menu.MenuMgr.unregister(this);if(this.keyNav){this.keyNav.disable()}var b=this.scroller;if(b){Ext.destroy(b.topRepeater,b.bottomRepeater,b.top,b.bottom)}Ext.destroy(this.el,this.focusEl,this.ul)}});Ext.reg("menu",Ext.menu.Menu);Ext.menu.MenuNav=Ext.extend(Ext.KeyNav,function(){function a(d,c){if(!c.tryActivate(c.items.indexOf(c.activeItem)-1,-1)){c.tryActivate(c.items.length-1,-1)}}function b(d,c){if(!c.tryActivate(c.items.indexOf(c.activeItem)+1,1)){c.tryActivate(0,1)}}return{constructor:function(c){Ext.menu.MenuNav.superclass.constructor.call(this,c.el);this.scope=this.menu=c},doRelay:function(g,d){var c=g.getKey();if(this.menu.activeItem&&this.menu.activeItem.isFormField&&c!=g.TAB){return false}if(!this.menu.activeItem&&g.isNavKeyPress()&&c!=g.SPACE&&c!=g.RETURN){this.menu.tryActivate(0,1);return false}return d.call(this.scope||this,g,this.menu)},tab:function(d,c){d.stopEvent();if(d.shiftKey){a(d,c)}else{b(d,c)}},up:a,down:b,right:function(d,c){if(c.activeItem){c.activeItem.expandMenu(true)}},left:function(d,c){c.hide();if(c.parentMenu&&c.parentMenu.activeItem){c.parentMenu.activeItem.activate()}},enter:function(d,c){if(c.activeItem){d.stopPropagation();c.activeItem.onClick(d);c.fireEvent("click",this,c.activeItem);return true}}}}());Ext.menu.MenuMgr=function(){var h,e,b,d={},a=false,l=new Date();function n(){h={};e=new Ext.util.MixedCollection();b=Ext.getDoc().addKeyListener(27,j);b.disable()}function j(){if(e&&e.length>0){var o=e.clone();o.each(function(p){p.hide()});return true}return false}function g(o){e.remove(o);if(e.length<1){b.disable();Ext.getDoc().un("mousedown",m);a=false}}function k(o){var p=e.last();l=new Date();e.add(o);if(!a){b.enable();Ext.getDoc().on("mousedown",m);a=true}if(o.parentMenu){o.getEl().setZIndex(parseInt(o.parentMenu.getEl().getStyle("z-index"),10)+3);o.parentMenu.activeChild=o}else{if(p&&!p.isDestroyed&&p.isVisible()){o.getEl().setZIndex(parseInt(p.getEl().getStyle("z-index"),10)+3)}}}function c(o){if(o.activeChild){o.activeChild.hide()}if(o.autoHideTimer){clearTimeout(o.autoHideTimer);delete o.autoHideTimer}}function i(o){var p=o.parentMenu;if(!p&&!o.allowOtherMenus){j()}else{if(p&&p.activeChild){p.activeChild.hide()}}}function m(o){if(l.getElapsed()>50&&e.length>0&&!o.getTarget(".x-menu")){j()}}return{hideAll:function(){return j()},register:function(o){if(!h){n()}h[o.id]=o;o.on({beforehide:c,hide:g,beforeshow:i,show:k})},get:function(o){if(typeof o=="string"){if(!h){return null}return h[o]}else{if(o.events){return o}else{if(typeof o.length=="number"){return new Ext.menu.Menu({items:o})}else{return Ext.create(o,"menu")}}}},unregister:function(o){delete h[o.id];o.un("beforehide",c);o.un("hide",g);o.un("beforeshow",i);o.un("show",k)},registerCheckable:function(o){var p=o.group;if(p){if(!d[p]){d[p]=[]}d[p].push(o)}},unregisterCheckable:function(o){var p=o.group;if(p){d[p].remove(o)}},onCheckChange:function(q,r){if(q.group&&r){var t=d[q.group],p=0,o=t.length,s;for(;p<o;p++){s=t[p];if(s!=q){s.setChecked(false)}}}},getCheckedItem:function(q){var r=d[q];if(r){for(var p=0,o=r.length;p<o;p++){if(r[p].checked){return r[p]}}}return null},setCheckedItem:function(q,s){var r=d[q];if(r){for(var p=0,o=r.length;p<o;p++){if(r[p].id==s){r[p].setChecked(true)}}}return null}}}();Ext.menu.BaseItem=Ext.extend(Ext.Component,{canActivate:false,activeClass:"x-menu-item-active",hideOnClick:true,clickHideDelay:1,ctype:"Ext.menu.BaseItem",actionMode:"container",initComponent:function(){Ext.menu.BaseItem.superclass.initComponent.call(this);this.addEvents("click","activate","deactivate");if(this.handler){this.on("click",this.handler,this.scope)}},onRender:function(b,a){Ext.menu.BaseItem.superclass.onRender.apply(this,arguments);if(this.ownerCt&&this.ownerCt instanceof Ext.menu.Menu){this.parentMenu=this.ownerCt}else{this.container.addClass("x-menu-list-item");this.mon(this.el,{scope:this,click:this.onClick,mouseenter:this.activate,mouseleave:this.deactivate})}},setHandler:function(b,a){if(this.handler){this.un("click",this.handler,this.scope)}this.on("click",this.handler=b,this.scope=a)},onClick:function(a){if(!this.disabled&&this.fireEvent("click",this,a)!==false&&(this.parentMenu&&this.parentMenu.fireEvent("itemclick",this,a)!==false)){this.handleClick(a)}else{a.stopEvent()}},activate:function(){if(this.disabled){return false}var a=this.container;a.addClass(this.activeClass);this.region=a.getRegion().adjust(2,2,-2,-2);this.fireEvent("activate",this);return true},deactivate:function(){this.container.removeClass(this.activeClass);this.fireEvent("deactivate",this)},shouldDeactivate:function(a){return !this.region||!this.region.contains(a.getPoint())},handleClick:function(b){var a=this.parentMenu;if(this.hideOnClick){if(a.floating){this.clickHideDelayTimer=a.hide.defer(this.clickHideDelay,a,[true])}else{a.deactivateActive()}}},beforeDestroy:function(){clearTimeout(this.clickHideDelayTimer);Ext.menu.BaseItem.superclass.beforeDestroy.call(this)},expandMenu:Ext.emptyFn,hideMenu:Ext.emptyFn});Ext.reg("menubaseitem",Ext.menu.BaseItem);Ext.menu.TextItem=Ext.extend(Ext.menu.BaseItem,{hideOnClick:false,itemCls:"x-menu-text",constructor:function(a){if(typeof a=="string"){a={text:a}}Ext.menu.TextItem.superclass.constructor.call(this,a)},onRender:function(){var a=document.createElement("span");a.className=this.itemCls;a.innerHTML=this.text;this.el=a;Ext.menu.TextItem.superclass.onRender.apply(this,arguments)}});Ext.reg("menutextitem",Ext.menu.TextItem);Ext.menu.Separator=Ext.extend(Ext.menu.BaseItem,{itemCls:"x-menu-sep",hideOnClick:false,activeClass:"",onRender:function(a){var b=document.createElement("span");b.className=this.itemCls;b.innerHTML="&#160;";this.el=b;a.addClass("x-menu-sep-li");Ext.menu.Separator.superclass.onRender.apply(this,arguments)}});Ext.reg("menuseparator",Ext.menu.Separator);Ext.menu.Item=Ext.extend(Ext.menu.BaseItem,{itemCls:"x-menu-item",canActivate:true,showDelay:200,altText:"",hideDelay:200,ctype:"Ext.menu.Item",initComponent:function(){Ext.menu.Item.superclass.initComponent.call(this);if(this.menu){if(Ext.isArray(this.menu)){this.menu={items:this.menu}}if(Ext.isObject(this.menu)){this.menu.ownerCt=this}this.menu=Ext.menu.MenuMgr.get(this.menu);this.menu.ownerCt=undefined}},onRender:function(d,b){if(!this.itemTpl){this.itemTpl=Ext.menu.Item.prototype.itemTpl=new Ext.XTemplate('<a id="{id}" class="{cls} x-unselectable" hidefocus="true" unselectable="on" href="{href}"','<tpl if="hrefTarget">',' target="{hrefTarget}"',"</tpl>",">",'<img alt="{altText}" src="{icon}" class="x-menu-item-icon {iconCls}"/>','<span class="x-menu-item-text">{text}</span>',"</a>")}var c=this.getTemplateArgs();this.el=b?this.itemTpl.insertBefore(b,c,true):this.itemTpl.append(d,c,true);this.iconEl=this.el.child("img.x-menu-item-icon");this.textEl=this.el.child(".x-menu-item-text");if(!this.href){this.mon(this.el,"click",Ext.emptyFn,null,{preventDefault:true})}Ext.menu.Item.superclass.onRender.call(this,d,b)},getTemplateArgs:function(){return{id:this.id,cls:this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:""),href:this.href||"#",hrefTarget:this.hrefTarget,icon:this.icon||Ext.BLANK_IMAGE_URL,iconCls:this.iconCls||"",text:this.itemText||this.text||"&#160;",altText:this.altText||""}},setText:function(a){this.text=a||"&#160;";if(this.rendered){this.textEl.update(this.text);this.parentMenu.layout.doAutoSize()}},setIconClass:function(a){var b=this.iconCls;this.iconCls=a;if(this.rendered){this.iconEl.replaceClass(b,this.iconCls)}},beforeDestroy:function(){clearTimeout(this.showTimer);clearTimeout(this.hideTimer);if(this.menu){delete this.menu.ownerCt;this.menu.destroy()}Ext.menu.Item.superclass.beforeDestroy.call(this)},handleClick:function(a){if(!this.href){a.stopEvent()}Ext.menu.Item.superclass.handleClick.apply(this,arguments)},activate:function(a){if(Ext.menu.Item.superclass.activate.apply(this,arguments)){this.focus();if(a){this.expandMenu()}}return true},shouldDeactivate:function(a){if(Ext.menu.Item.superclass.shouldDeactivate.call(this,a)){if(this.menu&&this.menu.isVisible()){return !this.menu.getEl().getRegion().contains(a.getPoint())}return true}return false},deactivate:function(){Ext.menu.Item.superclass.deactivate.apply(this,arguments);this.hideMenu()},expandMenu:function(a){if(!this.disabled&&this.menu){clearTimeout(this.hideTimer);delete this.hideTimer;if(!this.menu.isVisible()&&!this.showTimer){this.showTimer=this.deferExpand.defer(this.showDelay,this,[a])}else{if(this.menu.isVisible()&&a){this.menu.tryActivate(0,1)}}}},deferExpand:function(a){delete this.showTimer;this.menu.show(this.container,this.parentMenu.subMenuAlign||"tl-tr?",this.parentMenu);if(a){this.menu.tryActivate(0,1)}},hideMenu:function(){clearTimeout(this.showTimer);delete this.showTimer;if(!this.hideTimer&&this.menu&&this.menu.isVisible()){this.hideTimer=this.deferHide.defer(this.hideDelay,this)}},deferHide:function(){delete this.hideTimer;if(this.menu.over){this.parentMenu.setActiveItem(this,false)}else{this.menu.hide()}}});Ext.reg("menuitem",Ext.menu.Item);Ext.menu.CheckItem=Ext.extend(Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",initComponent:function(){Ext.menu.CheckItem.superclass.initComponent.call(this);this.addEvents("beforecheckchange","checkchange");if(this.checkHandler){this.on("checkchange",this.checkHandler,this.scope)}Ext.menu.MenuMgr.registerCheckable(this)},onRender:function(a){Ext.menu.CheckItem.superclass.onRender.apply(this,arguments);if(this.group){this.el.addClass(this.groupClass)}if(this.checked){this.checked=false;this.setChecked(true,true)}},destroy:function(){Ext.menu.MenuMgr.unregisterCheckable(this);Ext.menu.CheckItem.superclass.destroy.apply(this,arguments)},setChecked:function(b,a){var c=a===true;if(this.checked!=b&&(c||this.fireEvent("beforecheckchange",this,b)!==false)){Ext.menu.MenuMgr.onCheckChange(this,b);if(this.container){this.container[b?"addClass":"removeClass"]("x-menu-item-checked")}this.checked=b;if(!c){this.fireEvent("checkchange",this,b)}}},handleClick:function(a){if(!this.disabled&&!(this.checked&&this.group)){this.setChecked(!this.checked)}Ext.menu.CheckItem.superclass.handleClick.apply(this,arguments)}});Ext.reg("menucheckitem",Ext.menu.CheckItem);Ext.menu.DateMenu=Ext.extend(Ext.menu.Menu,{enableScrolling:false,hideOnClick:true,pickerId:null,cls:"x-date-menu",initComponent:function(){this.on("beforeshow",this.onBeforeShow,this);if(this.strict=(Ext.isIE7&&Ext.isStrict)){this.on("show",this.onShow,this,{single:true,delay:20})}Ext.apply(this,{plain:true,showSeparator:false,items:this.picker=new Ext.DatePicker(Ext.applyIf({internalRender:this.strict||!Ext.isIE9m,ctCls:"x-menu-date-item",id:this.pickerId},this.initialConfig))});this.picker.purgeListeners();Ext.menu.DateMenu.superclass.initComponent.call(this);this.relayEvents(this.picker,["select"]);this.on("show",this.picker.focus,this.picker);this.on("select",this.menuHide,this);if(this.handler){this.on("select",this.handler,this.scope||this)}},menuHide:function(){if(this.hideOnClick){this.hide(true)}},onBeforeShow:function(){if(this.picker){this.picker.hideMonthPicker(true)}},onShow:function(){var a=this.picker.getEl();a.setWidth(a.getWidth())}});Ext.reg("datemenu",Ext.menu.DateMenu);Ext.menu.ColorMenu=Ext.extend(Ext.menu.Menu,{enableScrolling:false,hideOnClick:true,cls:"x-color-menu",paletteId:null,initComponent:function(){Ext.apply(this,{plain:true,showSeparator:false,items:this.palette=new Ext.ColorPalette(Ext.applyIf({id:this.paletteId},this.initialConfig))});this.palette.purgeListeners();Ext.menu.ColorMenu.superclass.initComponent.call(this);this.relayEvents(this.palette,["select"]);this.on("select",this.menuHide,this);if(this.handler){this.on("select",this.handler,this.scope||this)}},menuHide:function(){if(this.hideOnClick){this.hide(true)}}});Ext.reg("colormenu",Ext.menu.ColorMenu);Ext.form.Field=Ext.extend(Ext.BoxComponent,{invalidClass:"x-form-invalid",invalidText:"The value in this field is invalid",focusClass:"x-form-focus",validationEvent:"keyup",validateOnBlur:true,validationDelay:250,defaultAutoCreate:{tag:"input",type:"text",size:"20",autocomplete:"off"},fieldClass:"x-form-field",msgTarget:"qtip",msgFx:"normal",readOnly:false,disabled:false,submitValue:true,isFormField:true,msgDisplay:"",hasFocus:false,initComponent:function(){Ext.form.Field.superclass.initComponent.call(this);this.addEvents("focus","blur","specialkey","change","invalid","valid")},getName:function(){return this.rendered&&this.el.dom.name?this.el.dom.name:this.name||this.id||""},onRender:function(c,a){if(!this.el){var b=this.getAutoCreate();if(!b.name){b.name=this.name||this.id}if(this.inputType){b.type=this.inputType}this.autoEl=b}Ext.form.Field.superclass.onRender.call(this,c,a);if(this.submitValue===false){this.el.dom.removeAttribute("name")}var d=this.el.dom.type;if(d){if(d=="password"){d="text"}this.el.addClass("x-form-"+d)}if(this.readOnly){this.setReadOnly(true)}if(this.tabIndex!==undefined){this.el.dom.setAttribute("tabIndex",this.tabIndex)}this.el.addClass([this.fieldClass,this.cls])},getItemCt:function(){return this.itemCt},initValue:function(){if(this.value!==undefined){this.setValue(this.value)}else{if(!Ext.isEmpty(this.el.dom.value)&&this.el.dom.value!=this.emptyText){this.setValue(this.el.dom.value)}}this.originalValue=this.getValue()},isDirty:function(){if(this.disabled||!this.rendered){return false}return String(this.getValue())!==String(this.originalValue)},setReadOnly:function(a){if(this.rendered){this.el.dom.readOnly=a}this.readOnly=a},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents();this.initValue()},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,a)}},reset:function(){this.setValue(this.originalValue);this.clearInvalid()},initEvents:function(){this.mon(this.el,Ext.EventManager.getKeyEvent(),this.fireKey,this);this.mon(this.el,"focus",this.onFocus,this);this.mon(this.el,"blur",this.onBlur,this,this.inEditor?{buffer:10}:null)},preFocus:Ext.emptyFn,onFocus:function(){this.preFocus();if(this.focusClass){this.el.addClass(this.focusClass)}if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this)}},beforeBlur:Ext.emptyFn,onBlur:function(){this.beforeBlur();if(this.focusClass){this.el.removeClass(this.focusClass)}this.hasFocus=false;if(this.validationEvent!==false&&(this.validateOnBlur||this.validationEvent=="blur")){this.validate()}var a=this.getValue();if(String(a)!==String(this.startValue)){this.fireEvent("change",this,a,this.startValue)}this.fireEvent("blur",this);this.postBlur()},postBlur:Ext.emptyFn,isValid:function(a){if(this.disabled){return true}var c=this.preventMark;this.preventMark=a===true;var b=this.validateValue(this.processValue(this.getRawValue()),a);this.preventMark=c;return b},validate:function(){if(this.disabled||this.validateValue(this.processValue(this.getRawValue()))){this.clearInvalid();return true}return false},processValue:function(a){return a},validateValue:function(b){var a=this.getErrors(b)[0];if(a==undefined){return true}else{this.markInvalid(a);return false}},getErrors:function(){return[]},getActiveError:function(){return this.activeError||""},markInvalid:function(c){if(this.rendered&&!this.preventMark){c=c||this.invalidText;var a=this.getMessageHandler();if(a){a.mark(this,c)}else{if(this.msgTarget){this.el.addClass(this.invalidClass);var b=Ext.getDom(this.msgTarget);if(b){b.innerHTML=c;b.style.display=this.msgDisplay}}}}this.setActiveError(c)},clearInvalid:function(){if(this.rendered&&!this.preventMark){this.el.removeClass(this.invalidClass);var a=this.getMessageHandler();if(a){a.clear(this)}else{if(this.msgTarget){this.el.removeClass(this.invalidClass);var b=Ext.getDom(this.msgTarget);if(b){b.innerHTML="";b.style.display="none"}}}}this.unsetActiveError()},setActiveError:function(b,a){this.activeError=b;if(a!==true){this.fireEvent("invalid",this,b)}},unsetActiveError:function(a){delete this.activeError;if(a!==true){this.fireEvent("valid",this)}},getMessageHandler:function(){return Ext.form.MessageTargets[this.msgTarget]},getErrorCt:function(){return this.el.findParent(".x-form-element",5,true)||this.el.findParent(".x-form-field-wrap",5,true)},alignErrorEl:function(){this.errorEl.setWidth(this.getErrorCt().getWidth(true)-20)},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,"tl-tr",[2,0])},getRawValue:function(){var a=this.rendered?this.el.getValue():Ext.value(this.value,"");if(a===this.emptyText){a=""}return a},getValue:function(){if(!this.rendered){return this.value}var a=this.el.getValue();if(a===this.emptyText||a===undefined){a=""}return a},setRawValue:function(a){return this.rendered?(this.el.dom.value=(Ext.isEmpty(a)?"":a)):""},setValue:function(a){this.value=a;if(this.rendered){this.el.dom.value=(Ext.isEmpty(a)?"":a);this.validate()}return this},append:function(a){this.setValue([this.getValue(),a].join(""))}});Ext.form.MessageTargets={qtip:{mark:function(a,b){a.el.addClass(a.invalidClass);a.el.dom.qtip=b;a.el.dom.qclass="x-form-invalid-tip";if(Ext.QuickTips){Ext.QuickTips.enable()}},clear:function(a){a.el.removeClass(a.invalidClass);a.el.dom.qtip=""}},title:{mark:function(a,b){a.el.addClass(a.invalidClass);a.el.dom.title=b},clear:function(a){a.el.dom.title=""}},under:{mark:function(b,c){b.el.addClass(b.invalidClass);if(!b.errorEl){var a=b.getErrorCt();if(!a){b.el.dom.title=c;return}b.errorEl=a.createChild({cls:"x-form-invalid-msg"});b.on("resize",b.alignErrorEl,b);b.on("destroy",function(){Ext.destroy(this.errorEl)},b)}b.alignErrorEl();b.errorEl.update(c);Ext.form.Field.msgFx[b.msgFx].show(b.errorEl,b)},clear:function(a){a.el.removeClass(a.invalidClass);if(a.errorEl){Ext.form.Field.msgFx[a.msgFx].hide(a.errorEl,a)}else{a.el.dom.title=""}}},side:{mark:function(b,c){b.el.addClass(b.invalidClass);if(!b.errorIcon){var a=b.getErrorCt();if(!a){b.el.dom.title=c;return}b.errorIcon=a.createChild({cls:"x-form-invalid-icon"});if(b.ownerCt){b.ownerCt.on("afterlayout",b.alignErrorIcon,b);b.ownerCt.on("expand",b.alignErrorIcon,b)}b.on("resize",b.alignErrorIcon,b);b.on("destroy",function(){Ext.destroy(this.errorIcon)},b)}b.alignErrorIcon();b.errorIcon.dom.qtip=c;b.errorIcon.dom.qclass="x-form-invalid-tip";b.errorIcon.show()},clear:function(a){a.el.removeClass(a.invalidClass);if(a.errorIcon){a.errorIcon.dom.qtip="";a.errorIcon.hide()}else{a.el.dom.title=""}}}};Ext.form.Field.msgFx={normal:{show:function(a,b){a.setDisplayed("block")},hide:function(a,b){a.setDisplayed(false).update("")}},slide:{show:function(a,b){a.slideIn("t",{stopFx:true})},hide:function(a,b){a.slideOut("t",{stopFx:true,useDisplay:true})}},slideRight:{show:function(a,b){a.fixDisplay();a.alignTo(b.el,"tl-tr");a.slideIn("l",{stopFx:true})},hide:function(a,b){a.slideOut("l",{stopFx:true,useDisplay:true})}}};Ext.reg("field",Ext.form.Field);Ext.form.TextField=Ext.extend(Ext.form.Field,{grow:false,growMin:30,growMax:800,vtype:null,maskRe:null,disableKeyFilter:false,allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",selectOnFocus:false,blankText:"This field is required",validator:null,regex:null,regexText:"",emptyText:null,emptyClass:"x-form-empty-field",initComponent:function(){Ext.form.TextField.superclass.initComponent.call(this);this.addEvents("autosize","keydown","keyup","keypress")},initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=="keyup"){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.mon(this.el,"keyup",this.filterValidation,this)}else{if(this.validationEvent!==false&&this.validationEvent!="blur"){this.mon(this.el,this.validationEvent,this.validate,this,{buffer:this.validationDelay})}}if(this.selectOnFocus||this.emptyText){this.mon(this.el,"mousedown",this.onMouseDown,this);if(this.emptyText){this.applyEmptyText()}}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+"Mask"]))){this.mon(this.el,"keypress",this.filterKeys,this)}if(this.grow){this.mon(this.el,"keyup",this.onKeyUpBuffered,this,{buffer:50});this.mon(this.el,"click",this.autoSize,this)}if(this.enableKeyEvents){this.mon(this.el,{scope:this,keyup:this.onKeyUp,keydown:this.onKeyDown,keypress:this.onKeyPress})}},onMouseDown:function(a){if(!this.hasFocus){this.mon(this.el,"mouseup",Ext.emptyFn,this,{single:true,preventDefault:true})}},processValue:function(a){if(this.stripCharsRe){var b=a.replace(this.stripCharsRe,"");if(b!==a){this.setRawValue(b);return b}}return a},filterValidation:function(a){if(!a.isNavKeyPress()){this.validationTask.delay(this.validationDelay)}},onDisable:function(){Ext.form.TextField.superclass.onDisable.call(this);if(Ext.isIE){this.el.dom.unselectable="on"}},onEnable:function(){Ext.form.TextField.superclass.onEnable.call(this);if(Ext.isIE){this.el.dom.unselectable=""}},onKeyUpBuffered:function(a){if(this.doAutoSize(a)){this.autoSize()}},doAutoSize:function(a){return !a.isNavKeyPress()},onKeyUp:function(a){this.fireEvent("keyup",this,a)},onKeyDown:function(a){this.fireEvent("keydown",this,a)},onKeyPress:function(a){this.fireEvent("keypress",this,a)},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText()},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1&&!this.hasFocus){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass)}},preFocus:function(){var a=this.el,b;if(this.emptyText){if(a.dom.value==this.emptyText){this.setRawValue("");b=true}a.removeClass(this.emptyClass)}if(this.selectOnFocus||b){a.dom.select()}},postBlur:function(){this.applyEmptyText()},filterKeys:function(b){if(b.ctrlKey){return}var a=b.getKey();if(Ext.isGecko&&(b.isNavKeyPress()||a==b.BACKSPACE||(a==b.DELETE&&b.button==-1))){return}var c=String.fromCharCode(b.getCharCode());if(!Ext.isGecko&&b.isSpecialKey()&&!c){return}if(!this.maskRe.test(c)){b.stopEvent()}},setValue:function(a){if(this.emptyText&&this.el&&!Ext.isEmpty(a)){this.el.removeClass(this.emptyClass)}Ext.form.TextField.superclass.setValue.apply(this,arguments);this.applyEmptyText();this.autoSize();return this},getErrors:function(a){var d=Ext.form.TextField.superclass.getErrors.apply(this,arguments);a=Ext.isDefined(a)?a:this.processValue(this.getRawValue());if(Ext.isFunction(this.validator)){var c=this.validator(a);if(c!==true){d.push(c)}}if(a.length<1||a===this.emptyText){if(this.allowBlank){return d}else{d.push(this.blankText)}}if(!this.allowBlank&&(a.length<1||a===this.emptyText)){d.push(this.blankText)}if(a.length<this.minLength){d.push(String.format(this.minLengthText,this.minLength))}if(a.length>this.maxLength){d.push(String.format(this.maxLengthText,this.maxLength))}if(this.vtype){var b=Ext.form.VTypes;if(!b[this.vtype](a,this)){d.push(this.vtypeText||b[this.vtype+"Text"])}}if(this.regex&&!this.regex.test(a)){d.push(this.regexText)}return d},selectText:function(h,a){var c=this.getRawValue();var e=false;if(c.length>0){h=h===undefined?0:h;a=a===undefined?c.length:a;var g=this.el.dom;if(g.setSelectionRange){g.setSelectionRange(h,a)}else{if(g.createTextRange){var b=g.createTextRange();b.moveStart("character",h);b.moveEnd("character",a-c.length);b.select()}}e=Ext.isGecko||Ext.isOpera}else{e=true}if(e){this.focus()}},autoSize:function(){if(!this.grow||!this.rendered){return}if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el)}var c=this.el;var b=c.dom.value;var e=document.createElement("div");e.appendChild(document.createTextNode(b));b=e.innerHTML;Ext.removeNode(e);e=null;b+="&#160;";var a=Math.min(this.growMax,Math.max(this.metrics.getWidth(b)+10,this.growMin));this.el.setWidth(a);this.fireEvent("autosize",this,a)},onDestroy:function(){if(this.validationTask){this.validationTask.cancel();this.validationTask=null}Ext.form.TextField.superclass.onDestroy.call(this)}});Ext.reg("textfield",Ext.form.TextField);Ext.form.TriggerField=Ext.extend(Ext.form.TextField,{defaultAutoCreate:{tag:"input",type:"text",size:"16",autocomplete:"off"},hideTrigger:false,editable:true,readOnly:false,wrapFocusClass:"x-trigger-wrap-focus",autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,mimicing:false,actionMode:"wrap",defaultTriggerWidth:17,onResize:function(a,c){Ext.form.TriggerField.superclass.onResize.call(this,a,c);var b=this.getTriggerWidth();if(Ext.isNumber(a)){this.el.setWidth(a-b)}this.wrap.setWidth(this.el.getWidth()+b)},getTriggerWidth:function(){var a=this.trigger.getWidth();if(!this.hideTrigger&&!this.readOnly&&a===0){a=this.defaultTriggerWidth}return a},alignErrorIcon:function(){if(this.wrap){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])}},onRender:function(b,a){this.doc=Ext.isIE?Ext.getBody():Ext.getDoc();Ext.form.TriggerField.superclass.onRender.call(this,b,a);this.wrap=this.el.wrap({cls:"x-form-field-wrap x-form-field-trigger-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.triggerClass});this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())}this.resizeEl=this.positionEl=this.wrap},getWidth:function(){return(this.el.getWidth()+this.trigger.getWidth())},updateEditState:function(){if(this.rendered){if(this.readOnly){this.el.dom.readOnly=true;this.el.addClass("x-trigger-noedit");this.mun(this.el,"click",this.onTriggerClick,this);this.trigger.setDisplayed(false)}else{if(!this.editable){this.el.dom.readOnly=true;this.el.addClass("x-trigger-noedit");this.mon(this.el,"click",this.onTriggerClick,this)}else{this.el.dom.readOnly=false;this.el.removeClass("x-trigger-noedit");this.mun(this.el,"click",this.onTriggerClick,this)}this.trigger.setDisplayed(!this.hideTrigger)}this.onResize(this.width||this.wrap.getWidth())}},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateEditState()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateEditState()}},setReadOnly:function(a){if(a!=this.readOnly){this.readOnly=a;this.updateEditState()}},afterRender:function(){Ext.form.TriggerField.superclass.afterRender.call(this);this.updateEditState()},initTrigger:function(){this.mon(this.trigger,"click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver("x-form-trigger-over");this.trigger.addClassOnClick("x-form-trigger-click")},onDestroy:function(){Ext.destroy(this.trigger,this.wrap);if(this.mimicing){this.doc.un("mousedown",this.mimicBlur,this)}delete this.doc;Ext.form.TriggerField.superclass.onDestroy.call(this)},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass(this.wrapFocusClass);this.mimicing=true;this.doc.on("mousedown",this.mimicBlur,this,{delay:10});if(this.monitorTab){this.on("specialkey",this.checkTab,this)}}},checkTab:function(a,b){if(b.getKey()==b.TAB){this.triggerBlur()}},onBlur:Ext.emptyFn,mimicBlur:function(a){if(!this.isDestroyed&&!this.wrap.contains(a.target)&&this.validateBlur(a)){this.triggerBlur()}},triggerBlur:function(){this.mimicing=false;this.doc.un("mousedown",this.mimicBlur,this);if(this.monitorTab&&this.el){this.un("specialkey",this.checkTab,this)}Ext.form.TriggerField.superclass.onBlur.call(this);if(this.wrap){this.wrap.removeClass(this.wrapFocusClass)}},beforeBlur:Ext.emptyFn,validateBlur:function(a){return true},onTriggerClick:Ext.emptyFn});Ext.form.TwinTriggerField=Ext.extend(Ext.form.TriggerField,{initComponent:function(){Ext.form.TwinTriggerField.superclass.initComponent.call(this);this.triggerConfig={tag:"span",cls:"x-form-twin-triggers",cn:[{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.trigger2Class}]}},getTrigger:function(a){return this.triggers[a]},afterRender:function(){Ext.form.TwinTriggerField.superclass.afterRender.call(this);var c=this.triggers,b=0,a=c.length;for(;b<a;++b){if(this["hideTrigger"+(b+1)]){c[b].hide()}}},initTrigger:function(){var a=this.trigger.select(".x-form-trigger",true),b=this;a.each(function(d,g,c){var e="Trigger"+(c+1);d.hide=function(){var h=b.wrap.getWidth();this.dom.style.display="none";b.el.setWidth(h-b.trigger.getWidth());b["hidden"+e]=true};d.show=function(){var h=b.wrap.getWidth();this.dom.style.display="";b.el.setWidth(h-b.trigger.getWidth());b["hidden"+e]=false};this.mon(d,"click",this["on"+e+"Click"],this,{preventDefault:true});d.addClassOnOver("x-form-trigger-over");d.addClassOnClick("x-form-trigger-click")},this);this.triggers=a.elements},getTriggerWidth:function(){var a=0;Ext.each(this.triggers,function(d,c){var e="Trigger"+(c+1),b=d.getWidth();if(b===0&&!this["hidden"+e]){a+=this.defaultTriggerWidth}else{a+=b}},this);return a},onDestroy:function(){Ext.destroy(this.triggers);Ext.form.TwinTriggerField.superclass.onDestroy.call(this)},onTrigger1Click:Ext.emptyFn,onTrigger2Click:Ext.emptyFn});Ext.reg("trigger",Ext.form.TriggerField);Ext.reg("twintrigger",Ext.form.TwinTriggerField);Ext.form.TextArea=Ext.extend(Ext.form.TextField,{growMin:60,growMax:1000,growAppend:"&#160;\n&#160;",enterIsSpecial:false,preventScrollbars:false,onRender:function(b,a){if(!this.el){this.defaultAutoCreate={tag:"textarea",style:"width:100px;height:60px;",autocomplete:"off"}}Ext.form.TextArea.superclass.onRender.call(this,b,a);if(this.grow){this.textSizeEl=Ext.DomHelper.append(document.body,{tag:"pre",cls:"x-form-grow-sizer"});if(this.preventScrollbars){this.el.setStyle("overflow","hidden")}this.el.setHeight(this.growMin)}},onDestroy:function(){Ext.removeNode(this.textSizeEl);Ext.form.TextArea.superclass.onDestroy.call(this)},fireKey:function(a){if(a.isSpecialKey()&&(this.enterIsSpecial||(a.getKey()!=a.ENTER||a.hasModifier()))){this.fireEvent("specialkey",this,a)}},doAutoSize:function(a){return !a.isNavKeyPress()||a.getKey()==a.ENTER},filterValidation:function(a){if(!a.isNavKeyPress()||(!this.enterIsSpecial&&a.keyCode==a.ENTER)){this.validationTask.delay(this.validationDelay)}},autoSize:function(){if(!this.grow||!this.textSizeEl){return}var c=this.el,a=Ext.util.Format.htmlEncode(c.dom.value),d=this.textSizeEl,b;Ext.fly(d).setWidth(this.el.getWidth());if(a.length<1){a="&#160;&#160;"}else{a+=this.growAppend;if(Ext.isIE){a=a.replace(/\n/g,"&#160;<br />")}}d.innerHTML=a;b=Math.min(this.growMax,Math.max(d.offsetHeight,this.growMin));if(b!=this.lastHeight){this.lastHeight=b;this.el.setHeight(b);this.fireEvent("autosize",this,b)}}});Ext.reg("textarea",Ext.form.TextArea);Ext.form.NumberField=Ext.extend(Ext.form.TextField,{fieldClass:"x-form-field x-form-num-field",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,allowNegative:true,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",baseChars:"0123456789",autoStripChars:false,initEvents:function(){var a=this.baseChars+"";if(this.allowDecimals){a+=this.decimalSeparator}if(this.allowNegative){a+="-"}a=Ext.escapeRe(a);this.maskRe=new RegExp("["+a+"]");if(this.autoStripChars){this.stripCharsRe=new RegExp("[^"+a+"]","gi")}Ext.form.NumberField.superclass.initEvents.call(this)},getErrors:function(b){var c=Ext.form.NumberField.superclass.getErrors.apply(this,arguments);b=Ext.isDefined(b)?b:this.processValue(this.getRawValue());if(b.length<1){return c}b=String(b).replace(this.decimalSeparator,".");if(isNaN(b)){c.push(String.format(this.nanText,b))}var a=this.parseValue(b);if(a<this.minValue){c.push(String.format(this.minText,this.minValue))}if(a>this.maxValue){c.push(String.format(this.maxText,this.maxValue))}return c},getValue:function(){return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))},setValue:function(a){a=Ext.isNumber(a)?a:parseFloat(String(a).replace(this.decimalSeparator,"."));a=this.fixPrecision(a);a=isNaN(a)?"":String(a).replace(".",this.decimalSeparator);return Ext.form.NumberField.superclass.setValue.call(this,a)},setMinValue:function(a){this.minValue=Ext.num(a,Number.NEGATIVE_INFINITY)},setMaxValue:function(a){this.maxValue=Ext.num(a,Number.MAX_VALUE)},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?"":a},fixPrecision:function(b){var a=isNaN(b);if(!this.allowDecimals||this.decimalPrecision==-1||a||!b){return a?"":b}return parseFloat(parseFloat(b).toFixed(this.decimalPrecision))},beforeBlur:function(){var a=this.parseValue(this.getRawValue());if(!Ext.isEmpty(a)){this.setValue(a)}}});Ext.reg("numberfield",Ext.form.NumberField);Ext.form.DateField=Ext.extend(Ext.form.TriggerField,{format:"m/d/Y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:"x-form-date-trigger",showToday:true,startDay:0,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},initTime:"12",initTimeFormat:"H",safeParse:function(b,c){if(Date.formatContainsHourInfo(c)){return Date.parseDate(b,c)}else{var a=Date.parseDate(b+" "+this.initTime,c+" "+this.initTimeFormat);if(a){return a.clearTime()}}},initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);this.addEvents("select");if(Ext.isString(this.minValue)){this.minValue=this.parseDate(this.minValue)}if(Ext.isString(this.maxValue)){this.maxValue=this.parseDate(this.maxValue)}this.disabledDatesRE=null;this.initDisabledDays()},initEvents:function(){Ext.form.DateField.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{down:function(a){this.onTriggerClick()},scope:this,forceKeyDown:true})},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,c="(?:";Ext.each(b,function(g,e){c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];if(e!=a){c+="|"}},this);this.disabledDatesRE=new RegExp(c+")")}},setDisabledDates:function(a){this.disabledDates=a;this.initDisabledDays();if(this.menu){this.menu.picker.setDisabledDates(this.disabledDatesRE)}},setDisabledDays:function(a){this.disabledDays=a;if(this.menu){this.menu.picker.setDisabledDays(a)}},setMinValue:function(a){this.minValue=(Ext.isString(a)?this.parseDate(a):a);if(this.menu){this.menu.picker.setMinDate(this.minValue)}},setMaxValue:function(a){this.maxValue=(Ext.isString(a)?this.parseDate(a):a);if(this.menu){this.menu.picker.setMaxDate(this.maxValue)}},getErrors:function(e){var h=Ext.form.DateField.superclass.getErrors.apply(this,arguments);e=this.formatDate(e||this.processValue(this.getRawValue()));if(e.length<1){return h}var c=e;e=this.parseDate(e);if(!e){h.push(String.format(this.invalidText,c,this.format));return h}var g=e.getTime();if(this.minValue&&g<this.minValue.clearTime().getTime()){h.push(String.format(this.minText,this.formatDate(this.minValue)))}if(this.maxValue&&g>this.maxValue.clearTime().getTime()){h.push(String.format(this.maxText,this.formatDate(this.maxValue)))}if(this.disabledDays){var a=e.getDay();for(var b=0;b<this.disabledDays.length;b++){if(a===this.disabledDays[b]){h.push(this.disabledDaysText);break}}}var d=this.formatDate(e);if(this.disabledDatesRE&&this.disabledDatesRE.test(d)){h.push(String.format(this.disabledDatesText,d))}return h},validateBlur:function(){return !this.menu||!this.menu.isVisible()},getValue:function(){return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))||""},setValue:function(a){return Ext.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))},parseDate:function(g){if(!g||Ext.isDate(g)){return g}var b=this.safeParse(g,this.format),c=this.altFormats,e=this.altFormatsArray;if(!b&&c){e=e||c.split("|");for(var d=0,a=e.length;d<a&&!b;d++){b=this.safeParse(g,e[d])}}return b},onDestroy:function(){Ext.destroy(this.menu,this.keyNav);Ext.form.DateField.superclass.onDestroy.call(this)},formatDate:function(a){return Ext.isDate(a)?a.dateFormat(this.format):a},onTriggerClick:function(){if(this.disabled){return}if(this.menu==null){this.menu=new Ext.menu.DateMenu({hideOnClick:false,focusOnSelect:false})}this.onFocus();Ext.apply(this.menu.picker,{minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.disabledDatesRE,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.format,showToday:this.showToday,startDay:this.startDay,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))});this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?");this.menuEvents("on")},menuEvents:function(a){this.menu[a]("select",this.onSelect,this);this.menu[a]("hide",this.onMenuHide,this);this.menu[a]("show",this.onFocus,this)},onSelect:function(a,b){this.setValue(b);this.fireEvent("select",this,b);this.menu.hide()},onMenuHide:function(){this.focus(false,60);this.menuEvents("un")},beforeBlur:function(){var a=this.parseDate(this.getRawValue());if(a){this.setValue(a)}}});Ext.reg("datefield",Ext.form.DateField);Ext.form.DisplayField=Ext.extend(Ext.form.Field,{validationEvent:false,validateOnBlur:false,defaultAutoCreate:{tag:"div"},fieldClass:"x-form-display-field",htmlEncode:false,initEvents:Ext.emptyFn,isValid:function(){return true},validate:function(){return true},getRawValue:function(){var a=this.rendered?this.el.dom.innerHTML:Ext.value(this.value,"");if(a===this.emptyText){a=""}if(this.htmlEncode){a=Ext.util.Format.htmlDecode(a)}return a},getValue:function(){return this.getRawValue()},getName:function(){return this.name},setRawValue:function(a){if(this.htmlEncode){a=Ext.util.Format.htmlEncode(a)}return this.rendered?(this.el.dom.innerHTML=(Ext.isEmpty(a)?"":a)):(this.value=a)},setValue:function(a){this.setRawValue(a);return this}});Ext.reg("displayfield",Ext.form.DisplayField);Ext.form.ComboBox=Ext.extend(Ext.form.TriggerField,{defaultAutoCreate:{tag:"input",type:"text",size:"24",autocomplete:"off"},listClass:"",selectedClass:"x-combo-selected",listEmptyText:"",triggerClass:"x-form-arrow-trigger",shadow:"sides",listAlign:"tl-bl?",maxHeight:300,minHeight:90,triggerAction:"query",minChars:4,autoSelect:true,typeAhead:false,queryDelay:500,pageSize:0,selectOnFocus:false,queryParam:"query",loadingText:"Loading...",resizable:false,handleHeight:8,allQuery:"",mode:"remote",minListWidth:70,forceSelection:false,typeAheadDelay:250,lazyInit:true,clearFilterOnReset:true,submitValue:undefined,initComponent:function(){Ext.form.ComboBox.superclass.initComponent.call(this);this.addEvents("expand","collapse","beforeselect","select","beforequery");if(this.transform){var c=Ext.getDom(this.transform);if(!this.hiddenName){this.hiddenName=c.name}if(!this.store){this.mode="local";var j=[],e=c.options;for(var b=0,a=e.length;b<a;b++){var h=e[b],g=(h.hasAttribute?h.hasAttribute("value"):h.getAttributeNode("value").specified)?h.value:h.text;if(h.selected&&Ext.isEmpty(this.value,true)){this.value=g}j.push([g,h.text])}this.store=new Ext.data.ArrayStore({idIndex:0,fields:["value","text"],data:j,autoDestroy:true});this.valueField="value";this.displayField="text"}c.name=Ext.id();if(!this.lazyRender){this.target=true;this.el=Ext.DomHelper.insertBefore(c,this.autoCreate||this.defaultAutoCreate);this.render(this.el.parentNode,c)}Ext.removeNode(c)}else{if(this.store){this.store=Ext.StoreMgr.lookup(this.store);if(this.store.autoCreated){this.displayField=this.valueField="field1";if(!this.store.expandData){this.displayField="field2"}this.mode="local"}}}this.selectedIndex=-1;if(this.mode=="local"){if(!Ext.isDefined(this.initialConfig.queryDelay)){this.queryDelay=10}if(!Ext.isDefined(this.initialConfig.minChars)){this.minChars=0}}},onRender:function(b,a){if(this.hiddenName&&!Ext.isDefined(this.submitValue)){this.submitValue=false}Ext.form.ComboBox.superclass.onRender.call(this,b,a);if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:"input",type:"hidden",name:this.hiddenName,id:(this.hiddenId||Ext.id())},"before",true)}if(Ext.isGecko){this.el.dom.setAttribute("autocomplete","off")}if(!this.lazyInit){this.initList()}else{this.on("focus",this.initList,this,{single:true})}},initValue:function(){Ext.form.ComboBox.superclass.initValue.call(this);if(this.hiddenField){this.hiddenField.value=Ext.value(Ext.isDefined(this.hiddenValue)?this.hiddenValue:this.value,"")}},getParentZIndex:function(){var a;if(this.ownerCt){this.findParentBy(function(b){a=parseInt(b.getPositionEl().getStyle("z-index"),10);return !!a})}return a},getZIndex:function(b){b=b||Ext.getDom(this.getListParent()||Ext.getBody());var a=parseInt(Ext.fly(b).getStyle("z-index"),10);if(!a){a=this.getParentZIndex()}return(a||12000)+5},initList:function(){if(!this.list){var a="x-combo-list",c=Ext.getDom(this.getListParent()||Ext.getBody());this.list=new Ext.Layer({parentEl:c,shadow:this.shadow,cls:[a,this.listClass].join(" "),constrain:false,zindex:this.getZIndex(c)});var b=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);this.list.setSize(b,0);this.list.swallowEvent("mousewheel");this.assetHeight=0;if(this.syncFont!==false){this.list.setStyle("font-size",this.el.getStyle("font-size"))}if(this.title){this.header=this.list.createChild({cls:a+"-hd",html:this.title});this.assetHeight+=this.header.getHeight()}this.innerList=this.list.createChild({cls:a+"-inner"});this.mon(this.innerList,"mouseover",this.onViewOver,this);this.mon(this.innerList,"mousemove",this.onViewMove,this);this.innerList.setWidth(b-this.list.getFrameWidth("lr"));if(this.pageSize){this.footer=this.list.createChild({cls:a+"-ft"});this.pageTb=new Ext.PagingToolbar({store:this.store,pageSize:this.pageSize,renderTo:this.footer});this.assetHeight+=this.footer.getHeight()}if(!this.tpl){this.tpl='<tpl for="."><div class="'+a+'-item">{'+this.displayField+"}</div></tpl>"}this.view=new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector||"."+a+"-item",emptyText:this.listEmptyText,deferEmptyText:false});this.mon(this.view,{containerclick:this.onViewClick,click:this.onViewClick,scope:this});this.bindStore(this.store,true);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:"se"});this.mon(this.resizer,"resize",function(g,d,e){this.maxHeight=e-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;this.listWidth=d;this.innerList.setWidth(d-this.list.getFrameWidth("lr"));this.restrictHeight()},this);this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")}}},getListParent:function(){return document.body},getStore:function(){return this.store},bindStore:function(a,b){if(this.store&&!b){if(this.store!==a&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.collapse,this)}if(!a){this.store=null;if(this.view){this.view.bindStore(null)}if(this.pageTb){this.pageTb.bindStore(null)}}}if(a){if(!b){this.lastQuery=null;if(this.pageTb){this.pageTb.bindStore(a)}}this.store=Ext.StoreMgr.lookup(a);this.store.on({scope:this,beforeload:this.onBeforeLoad,load:this.onLoad,exception:this.collapse});if(this.view){this.view.bindStore(a)}}},reset:function(){if(this.clearFilterOnReset&&this.mode=="local"){this.store.clearFilter()}Ext.form.ComboBox.superclass.reset.call(this)},initEvents:function(){Ext.form.ComboBox.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{up:function(a){this.inKeyMode=true;this.selectPrev()},down:function(a){if(!this.isExpanded()){this.onTriggerClick()}else{this.inKeyMode=true;this.selectNext()}},enter:function(a){this.onViewClick()},esc:function(a){this.collapse()},tab:function(a){if(this.forceSelection===true){this.collapse()}else{this.onViewClick(false)}return true},scope:this,doRelay:function(c,b,a){if(a=="down"||this.scope.isExpanded()){var d=Ext.KeyNav.prototype.doRelay.apply(this,arguments);if((((Ext.isIE9&&Ext.isStrict)||Ext.isIE10p)||!Ext.isIE)&&Ext.EventManager.useKeydown){this.scope.fireKey(c)}return d}return true},forceKeyDown:true,defaultEventAction:"stopEvent"});this.queryDelay=Math.max(this.queryDelay||10,this.mode=="local"?10:250);this.dqTask=new Ext.util.DelayedTask(this.initQuery,this);if(this.typeAhead){this.taTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(!this.enableKeyEvents){this.mon(this.el,"keyup",this.onKeyUp,this)}},onDestroy:function(){if(this.dqTask){this.dqTask.cancel();this.dqTask=null}this.bindStore(null);Ext.destroy(this.resizer,this.view,this.pageTb,this.list);Ext.destroyMembers(this,"hiddenField");Ext.form.ComboBox.superclass.onDestroy.call(this)},fireKey:function(a){if(!this.isExpanded()){Ext.form.ComboBox.superclass.fireKey.call(this,a)}},onResize:function(a,b){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(!isNaN(a)&&this.isVisible()&&this.list){this.doResize(a)}else{this.bufferSize=a}},doResize:function(a){if(!Ext.isDefined(this.listWidth)){var b=Math.max(a,this.minListWidth);this.list.setWidth(b);this.innerList.setWidth(b-this.list.getFrameWidth("lr"))}},onEnable:function(){Ext.form.ComboBox.superclass.onEnable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=false}},onDisable:function(){Ext.form.ComboBox.superclass.onDisable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=true}},onBeforeLoad:function(){if(!this.hasFocus){return}this.innerList.update(this.loadingText?'<div class="loading-indicator">'+this.loadingText+"</div>":"");this.restrictHeight();this.selectedIndex=-1},onLoad:function(){if(!this.hasFocus){return}if(this.store.getCount()>0||this.listEmptyText){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select()}if(this.autoSelect!==false&&!this.selectByValue(this.value,true)){this.select(0,true)}}else{if(this.autoSelect!==false){this.selectNext()}if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay)}}}else{this.collapse()}},onTypeAhead:function(){if(this.store.getCount()>0){var b=this.store.getAt(0);var c=b.data[this.displayField];var a=c.length;var d=this.getRawValue().length;if(d!=a){this.setRawValue(c);this.selectText(d,c.length)}}},assertValue:function(){var b=this.getRawValue(),a;if(this.valueField&&Ext.isDefined(this.value)){a=this.findRecord(this.valueField,this.value)}if(!a||a.get(this.displayField)!=b){a=this.findRecord(this.displayField,b)}if(!a&&this.forceSelection){if(b.length>0&&b!=this.emptyText){this.el.dom.value=Ext.value(this.lastSelectionText,"");this.applyEmptyText()}else{this.clearValue()}}else{if(a&&this.valueField){if(this.value==b){return}b=a.get(this.valueField||this.displayField)}this.setValue(b)}},onSelect:function(a,b){if(this.fireEvent("beforeselect",this,a,b)!==false){this.setValue(a.data[this.valueField||this.displayField]);this.collapse();this.fireEvent("select",this,a,b)}},getName:function(){var a=this.hiddenField;return a&&a.name?a.name:this.hiddenName||Ext.form.ComboBox.superclass.getName.call(this)},getValue:function(){if(this.valueField){return Ext.isDefined(this.value)?this.value:""}else{return Ext.form.ComboBox.superclass.getValue.call(this)}},clearValue:function(){if(this.hiddenField){this.hiddenField.value=""}this.setRawValue("");this.lastSelectionText="";this.applyEmptyText();this.value=""},setValue:function(a){var c=a;if(this.valueField){var b=this.findRecord(this.valueField,a);if(b){c=b.data[this.displayField]}else{if(Ext.isDefined(this.valueNotFoundText)){c=this.valueNotFoundText}}}this.lastSelectionText=c;if(this.hiddenField){this.hiddenField.value=Ext.value(a,"")}Ext.form.ComboBox.superclass.setValue.call(this,c);this.value=a;return this},findRecord:function(c,b){var a;if(this.store.getCount()>0){this.store.each(function(d){if(d.data[c]==b){a=d;return false}})}return a},onViewMove:function(b,a){this.inKeyMode=false},onViewOver:function(d,b){if(this.inKeyMode){return}var c=this.view.findItemFromChild(b);if(c){var a=this.view.indexOf(c);this.select(a,false)}},onViewClick:function(b){var a=this.view.getSelectedIndexes()[0],c=this.store,d=c.getAt(a);if(d){this.onSelect(d,a)}else{this.collapse()}if(b!==false){this.el.focus()}},restrictHeight:function(){this.innerList.dom.style.height="";var b=this.innerList.dom,e=this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight,c=Math.max(b.clientHeight,b.offsetHeight,b.scrollHeight),a=this.getPosition()[1]-Ext.getBody().getScroll().top,g=Ext.lib.Dom.getViewHeight()-a-this.getSize().height,d=Math.max(a,g,this.minHeight||0)-this.list.shadowOffset-e-5;c=Math.min(c,d,this.maxHeight);this.innerList.setHeight(c);this.list.beginUpdate();this.list.setHeight(c+e);this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));this.list.endUpdate()},isExpanded:function(){return this.list&&this.list.isVisible()},selectByValue:function(a,c){if(!Ext.isEmpty(a,true)){var b=this.findRecord(this.valueField||this.displayField,a);if(b){this.select(this.store.indexOf(b),c);return true}}return false},select:function(a,c){this.selectedIndex=a;this.view.select(a);if(c!==false){var b=this.view.getNode(a);if(b){this.innerList.scrollChildIntoView(b,false)}}},selectNext:function(){var a=this.store.getCount();if(a>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex<a-1){this.select(this.selectedIndex+1)}}}},selectPrev:function(){var a=this.store.getCount();if(a>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex!==0){this.select(this.selectedIndex-1)}}}},onKeyUp:function(b){var a=b.getKey();if(this.editable!==false&&this.readOnly!==true&&(a==b.BACKSPACE||!b.isSpecialKey())){this.lastKey=a;this.dqTask.delay(this.queryDelay)}Ext.form.ComboBox.superclass.onKeyUp.call(this,b)},validateBlur:function(){return !this.list||!this.list.isVisible()},initQuery:function(){this.doQuery(this.getRawValue())},beforeBlur:function(){this.assertValue()},postBlur:function(){Ext.form.ComboBox.superclass.postBlur.call(this);this.collapse();this.inKeyMode=false},doQuery:function(c,b){c=Ext.isEmpty(c)?"":c;var a={query:c,forceAll:b,combo:this,cancel:false};if(this.fireEvent("beforequery",a)===false||a.cancel){return false}c=a.query;b=a.forceAll;if(b===true||(c.length>=this.minChars)){if(this.lastQuery!==c){this.lastQuery=c;if(this.mode=="local"){this.selectedIndex=-1;if(b){this.store.clearFilter()}else{this.store.filter(this.displayField,c)}this.onLoad()}else{this.store.baseParams[this.queryParam]=c;this.store.load({params:this.getParams(c)});this.expand()}}else{this.selectedIndex=-1;this.onLoad()}}},getParams:function(a){var b={},c=this.store.paramNames;if(this.pageSize){b[c.start]=0;b[c.limit]=this.pageSize}return b},collapse:function(){if(!this.isExpanded()){return}this.list.hide();Ext.getDoc().un("mousewheel",this.collapseIf,this);Ext.getDoc().un("mousedown",this.collapseIf,this);this.fireEvent("collapse",this)},collapseIf:function(a){if(!this.isDestroyed&&!a.within(this.wrap)&&!a.within(this.list)){this.collapse()}},expand:function(){if(this.isExpanded()||!this.hasFocus){return}if(this.title||this.pageSize){this.assetHeight=0;if(this.title){this.assetHeight+=this.header.getHeight()}if(this.pageSize){this.assetHeight+=this.footer.getHeight()}}if(this.bufferSize){this.doResize(this.bufferSize);delete this.bufferSize}this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));this.list.setZIndex(this.getZIndex());this.list.show();if(Ext.isGecko2){this.innerList.setOverflow("auto")}this.mon(Ext.getDoc(),{scope:this,mousewheel:this.collapseIf,mousedown:this.collapseIf});this.fireEvent("expand",this)},onTriggerClick:function(){if(this.readOnly||this.disabled){return}if(this.isExpanded()){this.collapse();this.el.focus()}else{this.onFocus({});if(this.triggerAction=="all"){this.doQuery(this.allQuery,true)}else{this.doQuery(this.getRawValue())}this.el.focus()}}});Ext.reg("combo",Ext.form.ComboBox);Ext.form.Checkbox=Ext.extend(Ext.form.Field,{focusClass:undefined,fieldClass:"x-form-field",checked:false,boxLabel:"&#160;",defaultAutoCreate:{tag:"input",type:"checkbox",autocomplete:"off"},actionMode:"wrap",initComponent:function(){Ext.form.Checkbox.superclass.initComponent.call(this);this.addEvents("check")},onResize:function(){Ext.form.Checkbox.superclass.onResize.apply(this,arguments);if(!this.boxLabel&&!this.fieldLabel){this.el.alignTo(this.wrap,"c-c")}},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.mon(this.el,{scope:this,click:this.onClick,change:this.onClick})},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,onRender:function(b,a){Ext.form.Checkbox.superclass.onRender.call(this,b,a);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue}this.wrap=this.el.wrap({cls:"x-form-check-wrap"});if(this.boxLabel){this.wrap.createChild({tag:"label",htmlFor:this.el.id,cls:"x-form-cb-label",html:this.boxLabel})}if(this.checked){this.setValue(true)}else{this.checked=this.el.dom.checked}if(Ext.isIEQuirks){this.wrap.repaint()}this.resizeEl=this.positionEl=this.wrap},onDestroy:function(){Ext.destroy(this.wrap);Ext.form.Checkbox.superclass.onDestroy.call(this)},initValue:function(){this.originalValue=this.getValue()},getValue:function(){if(this.rendered){return this.el.dom.checked}return this.checked},onClick:function(){if(this.el.dom.checked!=this.checked){this.setValue(this.el.dom.checked)}},setValue:function(a){var c=this.checked,b=this.inputValue;if(a===false){this.checked=false}else{this.checked=(a===true||a==="true"||a=="1"||(b?a==b:String(a).toLowerCase()=="on"))}if(this.rendered){this.el.dom.checked=this.checked;this.el.dom.defaultChecked=this.checked}if(c!=this.checked){this.fireEvent("check",this,this.checked);if(this.handler){this.handler.call(this.scope||this,this,this.checked)}}return this}});Ext.reg("checkbox",Ext.form.Checkbox);Ext.form.CheckboxGroup=Ext.extend(Ext.form.Field,{columns:"auto",vertical:false,allowBlank:true,blankText:"You must select at least one item in this group",defaultType:"checkbox",groupCls:"x-form-check-group",initComponent:function(){this.addEvents("change");this.on("change",this.validate,this);Ext.form.CheckboxGroup.superclass.initComponent.call(this)},onRender:function(j,g){if(!this.el){var p={autoEl:{id:this.id},cls:this.groupCls,layout:"column",renderTo:j,bufferResize:false};var a={xtype:"container",defaultType:this.defaultType,layout:"form",defaults:{hideLabel:true,anchor:"100%"}};if(this.items[0].items){Ext.apply(p,{layoutConfig:{columns:this.items.length},defaults:this.defaults,items:this.items});for(var e=0,m=this.items.length;e<m;e++){Ext.applyIf(this.items[e],a)}}else{var d,n=[];if(typeof this.columns=="string"){this.columns=this.items.length}if(!Ext.isArray(this.columns)){var k=[];for(var e=0;e<this.columns;e++){k.push((100/this.columns)*0.01)}this.columns=k}d=this.columns.length;for(var e=0;e<d;e++){var b=Ext.apply({items:[]},a);b[this.columns[e]<=1?"columnWidth":"width"]=this.columns[e];if(this.defaults){b.defaults=Ext.apply(b.defaults||{},this.defaults)}n.push(b)}if(this.vertical){var r=Math.ceil(this.items.length/d),o=0;for(var e=0,m=this.items.length;e<m;e++){if(e>0&&e%r==0){o++}if(this.items[e].fieldLabel){this.items[e].hideLabel=false}n[o].items.push(this.items[e])}}else{for(var e=0,m=this.items.length;e<m;e++){var q=e%d;if(this.items[e].fieldLabel){this.items[e].hideLabel=false}n[q].items.push(this.items[e])}}Ext.apply(p,{layoutConfig:{columns:d},items:n})}this.panel=new Ext.Container(p);this.panel.ownerCt=this;this.el=this.panel.getEl();if(this.forId&&this.itemCls){var c=this.el.up(this.itemCls).child("label",true);if(c){c.setAttribute("htmlFor",this.forId)}}var h=this.panel.findBy(function(i){return i.isFormField},this);this.items=new Ext.util.MixedCollection();this.items.addAll(h)}Ext.form.CheckboxGroup.superclass.onRender.call(this,j,g)},initValue:function(){if(this.value){this.setValue.apply(this,this.buffered?this.value:[this.value]);delete this.buffered;delete this.value}},afterRender:function(){Ext.form.CheckboxGroup.superclass.afterRender.call(this);this.eachItem(function(a){a.on("check",this.fireChecked,this);a.inGroup=true})},doLayout:function(){if(this.rendered){this.panel.forceLayout=this.ownerCt.forceLayout;this.panel.doLayout()}},fireChecked:function(){var a=[];this.eachItem(function(b){if(b.checked){a.push(b)}});this.fireEvent("change",this,a)},getErrors:function(){var b=Ext.form.CheckboxGroup.superclass.getErrors.apply(this,arguments);if(!this.allowBlank){var a=true;this.eachItem(function(c){if(c.checked){return(a=false)}});if(a){b.push(this.blankText)}}return b},isDirty:function(){if(this.disabled||!this.rendered){return false}var a=false;this.eachItem(function(b){if(b.isDirty()){a=true;return false}});return a},setReadOnly:function(a){if(this.rendered){this.eachItem(function(b){b.setReadOnly(a)})}this.readOnly=a},onDisable:function(){this.eachItem(function(a){a.disable()})},onEnable:function(){this.eachItem(function(a){a.enable()})},onResize:function(a,b){this.panel.setSize(a,b);this.panel.doLayout()},reset:function(){if(this.originalValue){this.eachItem(function(a){if(a.setValue){a.setValue(false);a.originalValue=a.getValue()}});this.resetOriginal=true;this.setValue(this.originalValue);delete this.resetOriginal}else{this.eachItem(function(a){if(a.reset){a.reset()}})}(function(){this.clearInvalid()}).defer(50,this)},setValue:function(){if(this.rendered){this.onSetValue.apply(this,arguments)}else{this.buffered=true;this.value=arguments}return this},onSetValue:function(d,c){if(arguments.length==1){if(Ext.isArray(d)){Ext.each(d,function(h,e){if(Ext.isObject(h)&&h.setValue){h.setValue(true);if(this.resetOriginal===true){h.originalValue=h.getValue()}}else{var g=this.items.itemAt(e);if(g){g.setValue(h)}}},this)}else{if(Ext.isObject(d)){for(var a in d){var b=this.getBox(a);if(b){b.setValue(d[a])}}}else{this.setValueForItem(d)}}}else{var b=this.getBox(d);if(b){b.setValue(c)}}},beforeDestroy:function(){Ext.destroy(this.panel);if(!this.rendered){Ext.destroy(this.items)}Ext.form.CheckboxGroup.superclass.beforeDestroy.call(this)},setValueForItem:function(a){a=String(a).split(",");this.eachItem(function(b){if(a.indexOf(b.inputValue)>-1){b.setValue(true)}})},getBox:function(b){var a=null;this.eachItem(function(c){if(b==c||c.dataIndex==b||c.id==b||c.getName()==b){a=c;return false}});return a},getValue:function(){var a=[];this.eachItem(function(b){if(b.checked){a.push(b)}});return a},eachItem:function(b,a){if(this.items&&this.items.each){this.items.each(b,a||this)}},getRawValue:Ext.emptyFn,setRawValue:Ext.emptyFn});Ext.reg("checkboxgroup",Ext.form.CheckboxGroup);Ext.form.CompositeField=Ext.extend(Ext.form.Field,{defaultMargins:"0 5 0 0",skipLastItemMargin:true,isComposite:true,combineErrors:true,labelConnector:", ",initComponent:function(){var g=[],b=this.items,e;for(var d=0,c=b.length;d<c;d++){e=b[d];if(!Ext.isEmpty(e.ref)){e.ref="../"+e.ref}g.push(e.fieldLabel);Ext.applyIf(e,this.defaults);if(!(d==c-1&&this.skipLastItemMargin)){Ext.applyIf(e,{margins:this.defaultMargins})}}this.fieldLabel=this.fieldLabel||this.buildLabel(g);this.fieldErrors=new Ext.util.MixedCollection(true,function(h){return h.field});this.fieldErrors.on({scope:this,add:this.updateInvalidMark,remove:this.updateInvalidMark,replace:this.updateInvalidMark});Ext.form.CompositeField.superclass.initComponent.apply(this,arguments);this.innerCt=new Ext.Container({layout:"hbox",items:this.items,cls:"x-form-composite",defaultMargins:"0 3 0 0",ownerCt:this});delete this.innerCt.ownerCt;var a=this.innerCt.findBy(function(h){return h.isFormField},this);this.items=new Ext.util.MixedCollection();this.items.addAll(a)},onRender:function(c,a){if(!this.el){var d=this.innerCt;d.render(c);this.innerCt.ownerCt=this;this.el=d.getEl();if(this.combineErrors){this.eachItem(function(e){Ext.apply(e,{markInvalid:this.onFieldMarkInvalid.createDelegate(this,[e],0),clearInvalid:this.onFieldClearInvalid.createDelegate(this,[e],0)})})}var b=this.el.parent().parent().child("label",true);if(b){b.setAttribute("for",this.items.items[0].id)}}Ext.form.CompositeField.superclass.onRender.apply(this,arguments)},onFieldMarkInvalid:function(d,c){var b=d.getName(),a={field:b,errorName:d.fieldLabel||b,error:c};this.fieldErrors.replace(b,a);if(!d.preventMark){d.el.addClass(d.invalidClass)}},onFieldClearInvalid:function(a){this.fieldErrors.removeKey(a.getName());a.el.removeClass(a.invalidClass)},updateInvalidMark:function(){var a=Ext.isIE6&&Ext.isStrict;if(this.fieldErrors.length==0){this.clearInvalid();if(a){this.clearInvalid.defer(50,this)}}else{var b=this.buildCombinedErrorMessage(this.fieldErrors.items);this.sortErrors();this.markInvalid(b);if(a){this.markInvalid(b)}}},validateValue:function(c,a){var b=true;this.eachItem(function(d){if(!d.isValid(a)){b=false}});return b},buildCombinedErrorMessage:function(e){var d=[],b;for(var c=0,a=e.length;c<a;c++){b=e[c];d.push(String.format("{0}: {1}",b.errorName,b.error))}return d.join("<br />")},sortErrors:function(){var a=this.items;this.fieldErrors.sort("ASC",function(g,d){var c=function(b){return function(i){return i.getName()==b}};var h=a.findIndexBy(c(g.field)),e=a.findIndexBy(c(d.field));return h<e?-1:1})},reset:function(){this.eachItem(function(a){a.reset()});(function(){this.clearInvalid()}).defer(50,this)},clearInvalidChildren:function(){this.eachItem(function(a){a.clearInvalid()})},buildLabel:function(a){return Ext.clean(a).join(this.labelConnector)},isDirty:function(){if(this.disabled||!this.rendered){return false}var a=false;this.eachItem(function(b){if(b.isDirty()){a=true;return false}});return a},eachItem:function(b,a){if(this.items&&this.items.each){this.items.each(b,a||this)}},onResize:function(e,c,a,d){var b=this.innerCt;if(this.rendered&&b.rendered){b.setSize(e,c)}Ext.form.CompositeField.superclass.onResize.apply(this,arguments)},doLayout:function(c,b){if(this.rendered){var a=this.innerCt;a.forceLayout=this.ownerCt.forceLayout;a.doLayout(c,b)}},beforeDestroy:function(){Ext.destroy(this.innerCt);Ext.form.CompositeField.superclass.beforeDestroy.call(this)},setReadOnly:function(a){if(a==undefined){a=true}a=!!a;if(this.rendered){this.eachItem(function(b){b.setReadOnly(a)})}this.readOnly=a},onShow:function(){Ext.form.CompositeField.superclass.onShow.call(this);this.doLayout()},onDisable:function(){this.eachItem(function(a){a.disable()})},onEnable:function(){this.eachItem(function(a){a.enable()})}});Ext.reg("compositefield",Ext.form.CompositeField);Ext.form.Radio=Ext.extend(Ext.form.Checkbox,{inputType:"radio",markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,getGroupValue:function(){var a=this.el.up("form")||Ext.getBody();var b=a.child('input[name="'+this.el.dom.name+'"]:checked',true);return b?b.value:null},setValue:function(b){var a,d,c;if(typeof b=="boolean"){Ext.form.Radio.superclass.setValue.call(this,b)}else{if(this.rendered){a=this.getCheckEl();c=a.child('input[name="'+this.el.dom.name+'"][value="'+b+'"]',true);if(c){Ext.getCmp(c.id).setValue(true)}}}if(this.rendered&&this.checked){a=a||this.getCheckEl();d=this.getCheckEl().select('input[name="'+this.el.dom.name+'"]');d.each(function(e){if(e.dom.id!=this.id){Ext.getCmp(e.dom.id).setValue(false)}},this)}return this},getCheckEl:function(){if(this.inGroup){return this.el.up(".x-form-radio-group")}return this.el.up("form")||Ext.getBody()}});Ext.reg("radio",Ext.form.Radio);Ext.form.RadioGroup=Ext.extend(Ext.form.CheckboxGroup,{allowBlank:true,blankText:"You must select one item in this group",defaultType:"radio",groupCls:"x-form-radio-group",getValue:function(){var a=null;this.eachItem(function(b){if(b.checked){a=b;return false}});return a},onSetValue:function(c,b){if(arguments.length>1){var a=this.getBox(c);if(a){a.setValue(b);if(a.checked){this.eachItem(function(d){if(d!==a){d.setValue(false)}})}}}else{this.setValueForItem(c)}},setValueForItem:function(a){a=String(a).split(",")[0];this.eachItem(function(b){b.setValue(a==b.inputValue)})},fireChecked:function(){if(!this.checkTask){this.checkTask=new Ext.util.DelayedTask(this.bufferChecked,this)}this.checkTask.delay(10)},bufferChecked:function(){var a=null;this.eachItem(function(b){if(b.checked){a=b;return false}});this.fireEvent("change",this,a)},onDestroy:function(){if(this.checkTask){this.checkTask.cancel();this.checkTask=null}Ext.form.RadioGroup.superclass.onDestroy.call(this)}});Ext.reg("radiogroup",Ext.form.RadioGroup);Ext.form.Hidden=Ext.extend(Ext.form.Field,{inputType:"hidden",shouldLayout:false,onRender:function(){Ext.form.Hidden.superclass.onRender.apply(this,arguments)},initEvents:function(){this.originalValue=this.getValue()},setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.reg("hidden",Ext.form.Hidden);Ext.form.BasicForm=Ext.extend(Ext.util.Observable,{constructor:function(b,a){Ext.apply(this,a);if(Ext.isString(this.paramOrder)){this.paramOrder=this.paramOrder.split(/[\s,|]/)}this.items=new Ext.util.MixedCollection(false,function(c){return c.getItemId()});this.addEvents("beforeaction","actionfailed","actioncomplete");if(b){this.initEl(b)}Ext.form.BasicForm.superclass.constructor.call(this)},timeout:30,paramOrder:undefined,paramsAsHash:false,waitTitle:"Please Wait...",activeAction:null,trackResetOnLoad:false,initEl:function(a){this.el=Ext.get(a);this.id=this.el.id||Ext.id();if(!this.standardSubmit){this.el.on("submit",this.onSubmit,this)}this.el.addClass("x-form")},getEl:function(){return this.el},onSubmit:function(a){a.stopEvent()},destroy:function(a){if(a!==true){this.items.each(function(b){Ext.destroy(b)});Ext.destroy(this.el)}this.items.clear();this.purgeListeners()},isValid:function(){var a=true;this.items.each(function(b){if(!b.validate()){a=false}});return a},isDirty:function(){var a=false;this.items.each(function(b){if(b.isDirty()){a=true;return false}});return a},doAction:function(b,a){if(Ext.isString(b)){b=new Ext.form.Action.ACTION_TYPES[b](this,a)}if(this.fireEvent("beforeaction",this,b)!==false){this.beforeAction(b);b.run.defer(100,b)}return this},submit:function(b){b=b||{};if(this.standardSubmit){var a=b.clientValidation===false||this.isValid();if(a){var c=this.el.dom;if(this.url&&Ext.isEmpty(c.action)){c.action=this.url}c.submit()}return a}var d=String.format("{0}submit",this.api?"direct":"");this.doAction(d,b);return this},load:function(a){var b=String.format("{0}load",this.api?"direct":"");this.doAction(b,a);return this},updateRecord:function(b){b.beginEdit();var a=b.fields,d,c;a.each(function(e){d=this.findField(e.name);if(d){c=d.getValue();if(Ext.type(c)!==false&&c.getGroupValue){c=c.getGroupValue()}else{if(d.eachItem){c=[];d.eachItem(function(g){c.push(g.getValue())})}}b.set(e.name,c)}},this);b.endEdit();return this},loadRecord:function(a){this.setValues(a.data);return this},beforeAction:function(a){this.items.each(function(c){if(c.isFormField&&c.syncValue){c.syncValue()}});var b=a.options;if(b.waitMsg){if(this.waitMsgTarget===true){this.el.mask(b.waitMsg,"x-mask-loading")}else{if(this.waitMsgTarget){this.waitMsgTarget=Ext.get(this.waitMsgTarget);this.waitMsgTarget.mask(b.waitMsg,"x-mask-loading")}else{Ext.MessageBox.wait(b.waitMsg,b.waitTitle||this.waitTitle)}}}},afterAction:function(a,c){this.activeAction=null;var b=a.options;if(b.waitMsg){if(this.waitMsgTarget===true){this.el.unmask()}else{if(this.waitMsgTarget){this.waitMsgTarget.unmask()}else{Ext.MessageBox.updateProgress(1);Ext.MessageBox.hide()}}}if(c){if(b.reset){this.reset()}Ext.callback(b.success,b.scope,[this,a]);this.fireEvent("actioncomplete",this,a)}else{Ext.callback(b.failure,b.scope,[this,a]);this.fireEvent("actionfailed",this,a)}},findField:function(c){var b=this.items.get(c);if(!Ext.isObject(b)){var a=function(d){if(d.isFormField){if(d.dataIndex==c||d.id==c||d.getName()==c){b=d;return false}else{if(d.isComposite){return d.items.each(a)}else{if(d instanceof Ext.form.CheckboxGroup&&d.rendered){return d.eachItem(a)}}}}};this.items.each(a)}return b||null},markInvalid:function(h){if(Ext.isArray(h)){for(var c=0,a=h.length;c<a;c++){var b=h[c];var d=this.findField(b.id);if(d){d.markInvalid(b.msg)}}}else{var e,g;for(g in h){if(!Ext.isFunction(h[g])&&(e=this.findField(g))){e.markInvalid(h[g])}}}return this},setValues:function(c){if(Ext.isArray(c)){for(var d=0,a=c.length;d<a;d++){var b=c[d];var e=this.findField(b.id);if(e){e.setValue(b.value);if(this.trackResetOnLoad){e.originalValue=e.getValue()}}}}else{var g,h;for(h in c){if(!Ext.isFunction(c[h])&&(g=this.findField(h))){g.setValue(c[h]);if(this.trackResetOnLoad){g.originalValue=g.getValue()}}}}return this},getValues:function(b){var a=Ext.lib.Ajax.serializeForm(this.el.dom);if(b===true){return a}return Ext.urlDecode(a)},getFieldValues:function(a){var d={},e,b,c;this.items.each(function(g){if(!g.disabled&&(a!==true||g.isDirty())){e=g.getName();b=d[e];c=g.getValue();if(Ext.isDefined(b)){if(Ext.isArray(b)){d[e].push(c)}else{d[e]=[b,c]}}else{d[e]=c}}});return d},clearInvalid:function(){this.items.each(function(a){a.clearInvalid()});return this},reset:function(){this.items.each(function(a){a.reset()});return this},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this},remove:function(a){this.items.remove(a);return this},cleanDestroyed:function(){this.items.filterBy(function(a){return !!a.isDestroyed}).each(this.remove,this)},render:function(){this.items.each(function(a){if(a.isFormField&&!a.rendered&&document.getElementById(a.id)){a.applyToMarkup(a.id)}});return this},applyToFields:function(a){this.items.each(function(b){Ext.apply(b,a)});return this},applyIfToFields:function(a){this.items.each(function(b){Ext.applyIf(b,a)});return this},callFieldMethod:function(b,a){a=a||[];this.items.each(function(c){if(Ext.isFunction(c[b])){c[b].apply(c,a)}});return this}});Ext.BasicForm=Ext.form.BasicForm;Ext.FormPanel=Ext.extend(Ext.Panel,{minButtonWidth:75,labelAlign:"left",monitorValid:false,monitorPoll:200,layout:"form",initComponent:function(){this.form=this.createForm();Ext.FormPanel.superclass.initComponent.call(this);this.bodyCfg={tag:"form",cls:this.baseCls+"-body",method:this.method||"POST",id:this.formId||Ext.id()};if(this.fileUpload){this.bodyCfg.enctype="multipart/form-data"}this.initItems();this.addEvents("clientvalidation");this.relayEvents(this.form,["beforeaction","actionfailed","actioncomplete"])},createForm:function(){var a=Ext.applyIf({listeners:{}},this.initialConfig);return new Ext.form.BasicForm(null,a)},initFields:function(){var c=this.form;var a=this;var b=function(d){if(a.isField(d)){c.add(d)}else{if(d.findBy&&d!=a){a.applySettings(d);if(d.items&&d.items.each){d.items.each(b,this)}}}};this.items.each(b,this)},applySettings:function(b){var a=b.ownerCt;Ext.applyIf(b,{labelAlign:a.labelAlign,labelWidth:a.labelWidth,itemCls:a.itemCls})},getLayoutTarget:function(){return this.form.el},getForm:function(){return this.form},onRender:function(b,a){this.initFields();Ext.FormPanel.superclass.onRender.call(this,b,a);this.form.initEl(this.body)},beforeDestroy:function(){this.stopMonitoring();this.form.destroy(true);Ext.FormPanel.superclass.beforeDestroy.call(this)},isField:function(a){return !!a.setValue&&!!a.getValue&&!!a.markInvalid&&!!a.clearInvalid},initEvents:function(){Ext.FormPanel.superclass.initEvents.call(this);this.on({scope:this,add:this.onAddEvent,remove:this.onRemoveEvent});if(this.monitorValid){this.startMonitoring()}},onAdd:function(a){Ext.FormPanel.superclass.onAdd.call(this,a);this.processAdd(a)},onAddEvent:function(a,b){if(a!==this){this.processAdd(b)}},processAdd:function(a){if(this.isField(a)){this.form.add(a)}else{if(a.findBy){this.applySettings(a);this.form.add.apply(this.form,a.findBy(this.isField))}}},onRemove:function(a){Ext.FormPanel.superclass.onRemove.call(this,a);this.processRemove(a)},onRemoveEvent:function(a,b){if(a!==this){this.processRemove(b)}},processRemove:function(a){if(!this.destroying){if(this.isField(a)){this.form.remove(a)}else{if(a.findBy){Ext.each(a.findBy(this.isField),this.form.remove,this.form);this.form.cleanDestroyed()}}}},startMonitoring:function(){if(!this.validTask){this.validTask=new Ext.util.TaskRunner();this.validTask.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this})}},stopMonitoring:function(){if(this.validTask){this.validTask.stopAll();this.validTask=null}},load:function(){this.form.load.apply(this.form,arguments)},onDisable:function(){Ext.FormPanel.superclass.onDisable.call(this);if(this.form){this.form.items.each(function(){this.disable()})}},onEnable:function(){Ext.FormPanel.superclass.onEnable.call(this);if(this.form){this.form.items.each(function(){this.enable()})}},bindHandler:function(){var e=true;this.form.items.each(function(g){if(!g.isValid(true)){e=false;return false}});if(this.fbar){var b=this.fbar.items.items;for(var d=0,a=b.length;d<a;d++){var c=b[d];if(c.formBind===true&&c.disabled===e){c.setDisabled(!e)}}}this.fireEvent("clientvalidation",this,e)}});Ext.reg("form",Ext.FormPanel);Ext.form.FormPanel=Ext.FormPanel;Ext.form.FieldSet=Ext.extend(Ext.Panel,{baseCls:"x-fieldset",layout:"form",animCollapse:false,onRender:function(b,a){if(!this.el){this.el=document.createElement("fieldset");this.el.id=this.id;if(this.title||this.header||this.checkboxToggle){this.el.appendChild(document.createElement("legend")).className=this.baseCls+"-header"}}Ext.form.FieldSet.superclass.onRender.call(this,b,a);if(this.checkboxToggle){var c=typeof this.checkboxToggle=="object"?this.checkboxToggle:{tag:"input",type:"checkbox",name:this.checkboxName||this.id+"-checkbox"};this.checkbox=this.header.insertFirst(c);this.checkbox.dom.checked=!this.collapsed;this.mon(this.checkbox,"click",this.onCheckClick,this)}},onCollapse:function(a,b){if(this.checkbox){this.checkbox.dom.checked=false}Ext.form.FieldSet.superclass.onCollapse.call(this,a,b)},onExpand:function(a,b){if(this.checkbox){this.checkbox.dom.checked=true}Ext.form.FieldSet.superclass.onExpand.call(this,a,b)},onCheckClick:function(){this[this.checkbox.dom.checked?"expand":"collapse"]()}});Ext.reg("fieldset",Ext.form.FieldSet);Ext.form.HtmlEditor=Ext.extend(Ext.form.Field,{enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,enableLinks:true,enableFont:true,createLinkText:"Please enter the URL for the link:",defaultLinkValue:"http://",fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],defaultFont:"tahoma",defaultValue:(Ext.isOpera||Ext.isIE6)?"&#160;":"&#8203;",actionMode:"wrap",validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Ext.emptyFn,iframePad:3,hideMode:"offsets",defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"off"},initComponent:function(){this.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange");Ext.form.HtmlEditor.superclass.initComponent.call(this)},createFontOptions:function(){var d=[],b=this.fontFamilies,c,g;for(var e=0,a=b.length;e<a;e++){c=b[e];g=c.toLowerCase();d.push('<option value="',g,'" style="font-family:',c,';"',(this.defaultFont==g?' selected="true">':">"),c,"</option>")}return d.join("")},createToolbar:function(e){var c=[];var a=Ext.QuickTips&&Ext.QuickTips.isEnabled();function d(j,h,i){return{itemId:j,cls:"x-btn-icon",iconCls:"x-edit-"+j,enableToggle:h!==false,scope:e,handler:i||e.relayBtnCmd,clickEvent:"mousedown",tooltip:a?e.buttonTips[j]||undefined:undefined,overflowText:e.buttonTips[j].title||undefined,tabIndex:-1}}if(this.enableFont&&!Ext.isSafari2){var g=new Ext.Toolbar.Item({autoEl:{tag:"select",cls:"x-font-select",html:this.createFontOptions()}});c.push(g,"-")}if(this.enableFormat){c.push(d("bold"),d("italic"),d("underline"))}if(this.enableFontSize){c.push("-",d("increasefontsize",false,this.adjustFont),d("decreasefontsize",false,this.adjustFont))}if(this.enableColors){c.push("-",{itemId:"forecolor",cls:"x-btn-icon",iconCls:"x-edit-forecolor",clickEvent:"mousedown",tooltip:a?e.buttonTips.forecolor||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,listeners:{scope:this,select:function(i,h){this.execCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+h:h);this.deferFocus()}},clickEvent:"mousedown"})},{itemId:"backcolor",cls:"x-btn-icon",iconCls:"x-edit-backcolor",clickEvent:"mousedown",tooltip:a?e.buttonTips.backcolor||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,listeners:{scope:this,select:function(i,h){if(Ext.isGecko){this.execCmd("useCSS",false);this.execCmd("hilitecolor",h);this.execCmd("useCSS",true);this.deferFocus()}else{this.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE?"#"+h:h);this.deferFocus()}}},clickEvent:"mousedown"})})}if(this.enableAlignments){c.push("-",d("justifyleft"),d("justifycenter"),d("justifyright"))}if(!Ext.isSafari2){if(this.enableLinks){c.push("-",d("createlink",false,this.createLink))}if(this.enableLists){c.push("-",d("insertorderedlist"),d("insertunorderedlist"))}if(this.enableSourceEdit){c.push("-",d("sourceedit",true,function(h){this.toggleSourceEdit(!this.sourceEditMode)}))}}var b=new Ext.Toolbar({renderTo:this.wrap.dom.firstChild,items:c});if(g){this.fontSelect=g.el;this.mon(this.fontSelect,"change",function(){var h=this.fontSelect.dom.value;this.relayCmd("fontname",h);this.deferFocus()},this)}this.mon(b.el,"click",function(h){h.preventDefault()});this.tb=b;this.tb.doLayout()},onDisable:function(){this.wrap.mask();Ext.form.HtmlEditor.superclass.onDisable.call(this)},onEnable:function(){this.wrap.unmask();Ext.form.HtmlEditor.superclass.onEnable.call(this)},setReadOnly:function(b){Ext.form.HtmlEditor.superclass.setReadOnly.call(this,b);if(this.initialized){if(Ext.isIE){this.getEditorBody().contentEditable=!b}else{this.setDesignMode(!b)}var a=this.getEditorBody();if(a){a.style.cursor=this.readOnly?"default":"text"}this.disableItems(b)}},getDocMarkup:function(){var a=Ext.fly(this.iframe).getHeight()-this.iframePad*2;return String.format('<html><head><style type="text/css">body{border: 0; margin: 0; padding: {0}px; height: {1}px; cursor: text}</style></head><body></body></html>',this.iframePad,a)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return Ext.isIE?this.getWin().document:(this.iframe.contentDocument||this.getWin().document)},getWin:function(){return Ext.isIE?this.iframe.contentWindow:window.frames[this.iframe.name]},onRender:function(b,a){Ext.form.HtmlEditor.superclass.onRender.call(this,b,a);this.el.dom.style.border="0 none";this.el.dom.setAttribute("tabIndex",-1);this.el.addClass("x-hidden");if(Ext.isIE){this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;")}this.wrap=this.el.wrap({cls:"x-html-editor-wrap",cn:{cls:"x-html-editor-tb"}});this.createToolbar(this);this.disableItems(true);this.tb.doLayout();this.createIFrame();if(!this.width){var c=this.el.getSize();this.setSize(c.width,this.height||c.height)}this.resizeEl=this.positionEl=this.wrap},createIFrame:function(){var a=document.createElement("iframe");a.name=Ext.id();a.frameBorder="0";a.style.overflow="auto";a.src=Ext.SSL_SECURE_URL;this.wrap.dom.appendChild(a);this.iframe=a;this.monitorTask=Ext.TaskMgr.start({run:this.checkDesignMode,scope:this,interval:100})},initFrame:function(){Ext.TaskMgr.stop(this.monitorTask);var a=this.getDoc();this.win=this.getWin();a.open();a.write(this.getDocMarkup());a.close();this.readyTask={run:function(){var b=this.getDoc();if(b.body||b.readyState=="complete"){Ext.TaskMgr.stop(this.readyTask);this.setDesignMode(true);this.initEditor.defer(10,this)}},interval:10,duration:10000,scope:this};Ext.TaskMgr.start(this.readyTask)},checkDesignMode:function(){if(this.wrap&&this.wrap.dom.offsetWidth){var a=this.getDoc();if(!a){return}if(!a.editorInitialized||this.getDesignMode()!="on"){this.initFrame()}}},setDesignMode:function(b){var a=this.getDoc();if(a){if(this.readOnly){b=false}a.designMode=(/on|true/i).test(String(b).toLowerCase())?"on":"off"}},getDesignMode:function(){var a=this.getDoc();if(!a){return""}return String(a.designMode).toLowerCase()},disableItems:function(a){if(this.fontSelect){this.fontSelect.dom.disabled=a}this.tb.items.each(function(b){if(b.getItemId()!="sourceedit"){b.setDisabled(a)}})},onResize:function(b,c){Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(Ext.isNumber(b)){var e=b-this.wrap.getFrameWidth("lr");this.el.setWidth(e);this.tb.setWidth(e);this.iframe.style.width=Math.max(e,0)+"px"}if(Ext.isNumber(c)){var a=c-this.wrap.getFrameWidth("tb")-this.tb.el.getHeight();this.el.setHeight(a);this.iframe.style.height=Math.max(a,0)+"px";var d=this.getEditorBody();if(d){d.style.height=Math.max((a-(this.iframePad*2)),0)+"px"}}}},toggleSourceEdit:function(b){var d,a;if(b===undefined){b=!this.sourceEditMode}this.sourceEditMode=b===true;var c=this.tb.getComponent("sourceedit");if(c.pressed!==this.sourceEditMode){c.toggle(this.sourceEditMode);if(!c.xtbHidden){return}}if(this.sourceEditMode){this.previousSize=this.getSize();d=Ext.get(this.iframe).getHeight();this.disableItems(true);this.syncValue();this.iframe.className="x-hidden";this.el.removeClass("x-hidden");this.el.dom.removeAttribute("tabIndex");this.el.focus();this.el.dom.style.height=d+"px"}else{a=parseInt(this.el.dom.style.height,10);if(this.initialized){this.disableItems(this.readOnly)}this.pushValue();this.iframe.className="";this.el.addClass("x-hidden");this.el.dom.setAttribute("tabIndex",-1);this.deferFocus();this.setSize(this.previousSize);delete this.previousSize;this.iframe.style.height=a+"px"}this.fireEvent("editmodechange",this,this.sourceEditMode)},createLink:function(){var a=prompt(this.createLinkText,this.defaultLinkValue);if(a&&a!="http://"){this.relayCmd("createlink",a)}},initEvents:function(){this.originalValue=this.getValue()},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,setValue:function(a){Ext.form.HtmlEditor.superclass.setValue.call(this,a);this.pushValue();return this},cleanHtml:function(a){a=String(a);if(Ext.isWebKit){a=a.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")}if(a.charCodeAt(0)==this.defaultValue.replace(/\D/g,"")){a=a.substring(1)}return a},syncValue:function(){if(this.initialized){var d=this.getEditorBody();var c=d.innerHTML;if(Ext.isWebKit){var b=d.getAttribute("style");var a=b.match(/text-align:(.*?);/i);if(a&&a[1]){c='<div style="'+a[0]+'">'+c+"</div>"}}c=this.cleanHtml(c);if(this.fireEvent("beforesync",this,c)!==false){this.el.dom.value=c;this.fireEvent("sync",this,c)}}},getValue:function(){this[this.sourceEditMode?"pushValue":"syncValue"]();return Ext.form.HtmlEditor.superclass.getValue.call(this)},pushValue:function(){if(this.initialized){var a=this.el.dom.value;if(!this.activated&&a.length<1){a=this.defaultValue}if(this.fireEvent("beforepush",this,a)!==false){this.getEditorBody().innerHTML=a;if(Ext.isGecko){this.setDesignMode(false);this.setDesignMode(true)}this.fireEvent("push",this,a)}}},deferFocus:function(){this.focus.defer(10,this)},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus()}else{this.el.focus()}},initEditor:function(){try{var c=this.getEditorBody(),a=this.el.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),g,b;a["background-attachment"]="fixed";c.bgProperties="fixed";Ext.DomHelper.applyStyles(c,a);g=this.getDoc();if(g){try{Ext.EventManager.removeAll(g)}catch(d){}}b=this.onEditorEvent.createDelegate(this);Ext.EventManager.on(g,{mousedown:b,dblclick:b,click:b,keyup:b,buffer:100});if(Ext.isGecko){Ext.EventManager.on(g,"keypress",this.applyCommand,this)}if(Ext.isIE||Ext.isWebKit||Ext.isOpera){Ext.EventManager.on(g,"keydown",this.fixKeys,this)}g.editorInitialized=true;this.initialized=true;this.pushValue();this.setReadOnly(this.readOnly);this.fireEvent("initialize",this)}catch(d){}},beforeDestroy:function(){if(this.monitorTask){Ext.TaskMgr.stop(this.monitorTask)}if(this.readyTask){Ext.TaskMgr.stop(this.readyTask)}if(this.rendered){Ext.destroy(this.tb);var b=this.getDoc();Ext.EventManager.removeFromSpecialCache(b);if(b){try{Ext.EventManager.removeAll(b);for(var c in b){delete b[c]}}catch(a){}}if(this.wrap){this.wrap.dom.innerHTML="";this.wrap.remove()}}Ext.form.HtmlEditor.superclass.beforeDestroy.call(this)},onFirstFocus:function(){this.activated=true;this.disableItems(this.readOnly);if(Ext.isGecko){this.win.focus();var a=this.win.getSelection();if(!a.focusNode||a.focusNode.nodeType!=3){var b=a.getRangeAt(0);b.selectNodeContents(this.getEditorBody());b.collapse(true);this.deferFocus()}try{this.execCmd("useCSS",true);this.execCmd("styleWithCSS",false)}catch(c){}}this.fireEvent("activate",this)},adjustFont:function(b){var d=b.getItemId()=="increasefontsize"?1:-1,c=this.getDoc(),a=parseInt(c.queryCommandValue("FontSize")||2,10);if((Ext.isSafari&&!Ext.isSafari2)||Ext.isChrome||Ext.isAir){if(a<=10){a=1+d}else{if(a<=13){a=2+d}else{if(a<=16){a=3+d}else{if(a<=18){a=4+d}else{if(a<=24){a=5+d}else{a=6+d}}}}}a=a.constrain(1,6)}else{if(Ext.isSafari){d*=2}a=Math.max(1,a+d)+(Ext.isSafari?"px":0)}this.execCmd("FontSize",a)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){if(this.readOnly){return}if(!this.activated){this.onFirstFocus();return}var b=this.tb.items.map,c=this.getDoc();if(this.enableFont&&!Ext.isSafari2){var a=(c.queryCommandValue("FontName")||this.defaultFont).toLowerCase();if(a!=this.fontSelect.dom.value){this.fontSelect.dom.value=a}}if(this.enableFormat){b.bold.toggle(c.queryCommandState("bold"));b.italic.toggle(c.queryCommandState("italic"));b.underline.toggle(c.queryCommandState("underline"))}if(this.enableAlignments){b.justifyleft.toggle(c.queryCommandState("justifyleft"));b.justifycenter.toggle(c.queryCommandState("justifycenter"));b.justifyright.toggle(c.queryCommandState("justifyright"))}if(!Ext.isSafari2&&this.enableLists){b.insertorderedlist.toggle(c.queryCommandState("insertorderedlist"));b.insertunorderedlist.toggle(c.queryCommandState("insertunorderedlist"))}Ext.menu.MenuMgr.hideAll();this.syncValue()},relayBtnCmd:function(a){this.relayCmd(a.getItemId())},relayCmd:function(b,a){(function(){this.focus();this.execCmd(b,a);this.updateToolbar()}).defer(10,this)},execCmd:function(b,a){var c=this.getDoc();c.execCommand(b,false,a===undefined?null:a);this.syncValue()},applyCommand:function(b){if(b.ctrlKey){var d=b.getCharCode(),a;if(d>0){d=String.fromCharCode(d);switch(d){case"b":a="bold";break;case"i":a="italic";break;case"u":a="underline";break}if(a){this.win.focus();this.execCmd(a);this.deferFocus();b.preventDefault()}}}},insertAtCursor:function(c){if(!this.activated){return}if(Ext.isIE){this.win.focus();var b=this.getDoc(),a=b.selection.createRange();if(a){a.pasteHTML(c);this.syncValue();this.deferFocus()}}else{this.win.focus();this.execCmd("InsertHTML",c);this.deferFocus()}},fixKeys:function(){if(Ext.isIE){return function(g){var a=g.getKey(),d=this.getDoc(),b;if(a==g.TAB){g.stopEvent();b=d.selection.createRange();if(b){b.collapse(true);b.pasteHTML("&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}else{if(a==g.ENTER){b=d.selection.createRange();if(b){var c=b.parentElement();if(!c||c.tagName.toLowerCase()!="li"){g.stopEvent();b.pasteHTML("<br />");b.collapse(false);b.select()}}}}}}else{if(Ext.isOpera){return function(b){var a=b.getKey();if(a==b.TAB){b.stopEvent();this.win.focus();this.execCmd("InsertHTML","&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}}else{if(Ext.isWebKit){return function(b){var a=b.getKey();if(a==b.TAB){b.stopEvent();this.execCmd("InsertText","\t");this.deferFocus()}else{if(a==b.ENTER){b.stopEvent();this.execCmd("InsertHtml","<br /><br />");this.deferFocus()}}}}}}}(),getToolbar:function(){return this.tb},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:"x-html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:"x-html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:"x-html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:"x-html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:"x-html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:"x-html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:"x-html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:"x-html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:"x-html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:"x-html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:"x-html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:"x-html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:"x-html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:"x-html-editor-tip"}}});Ext.reg("htmleditor",Ext.form.HtmlEditor);Ext.form.TimeField=Ext.extend(Ext.form.ComboBox,{minValue:undefined,maxValue:undefined,minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H|gi a|hi a|giA|hiA|gi A|hi A",increment:15,mode:"local",triggerAction:"all",typeAhead:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",initComponent:function(){if(Ext.isDefined(this.minValue)){this.setMinValue(this.minValue,true)}if(Ext.isDefined(this.maxValue)){this.setMaxValue(this.maxValue,true)}if(!this.store){this.generateStore(true)}Ext.form.TimeField.superclass.initComponent.call(this)},setMinValue:function(b,a){this.setLimit(b,true,a);return this},setMaxValue:function(b,a){this.setLimit(b,false,a);return this},generateStore:function(b){var c=this.minValue||new Date(this.initDate).clearTime(),a=this.maxValue||new Date(this.initDate).clearTime().add("mi",(24*60)-1),d=[];while(c<=a){d.push(c.dateFormat(this.format));c=c.add("mi",this.increment)}this.bindStore(d,b)},setLimit:function(b,g,a){var e;if(Ext.isString(b)){e=this.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){var c=new Date(this.initDate).clearTime();c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());this[g?"minValue":"maxValue"]=c;if(!a){this.generateStore()}}},getValue:function(){var a=Ext.form.TimeField.superclass.getValue.call(this);return this.formatDate(this.parseDate(a))||""},setValue:function(a){return Ext.form.TimeField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))},validateValue:Ext.form.DateField.prototype.validateValue,formatDate:Ext.form.DateField.prototype.formatDate,parseDate:function(h){if(!h||Ext.isDate(h)){return h}var j=this.initDate+" ",g=this.initDateFormat+" ",b=Date.parseDate(j+h,g+this.format),c=this.altFormats;if(!b&&c){if(!this.altFormatsArray){this.altFormatsArray=c.split("|")}for(var e=0,d=this.altFormatsArray,a=d.length;e<a&&!b;e++){b=Date.parseDate(j+h,g+d[e])}}return b}});Ext.reg("timefield",Ext.form.TimeField);Ext.form.SliderField=Ext.extend(Ext.form.Field,{useTips:true,tipText:null,actionMode:"wrap",initComponent:function(){var b=Ext.copyTo({id:this.id+"-slider"},this.initialConfig,["vertical","minValue","maxValue","decimalPrecision","keyIncrement","increment","clickToChange","animate"]);if(this.useTips){var a=this.tipText?{getText:this.tipText}:{};b.plugins=[new Ext.slider.Tip(a)]}this.slider=new Ext.Slider(b);Ext.form.SliderField.superclass.initComponent.call(this)},onRender:function(b,a){this.autoCreate={id:this.id,name:this.name,type:"hidden",tag:"input"};Ext.form.SliderField.superclass.onRender.call(this,b,a);this.wrap=this.el.wrap({cls:"x-form-field-wrap"});this.resizeEl=this.positionEl=this.wrap;this.slider.render(this.wrap)},onResize:function(b,c,d,a){Ext.form.SliderField.superclass.onResize.call(this,b,c,d,a);this.slider.setSize(b,c)},initEvents:function(){Ext.form.SliderField.superclass.initEvents.call(this);this.slider.on("change",this.onChange,this)},onChange:function(b,a){this.setValue(a,undefined,true)},onEnable:function(){Ext.form.SliderField.superclass.onEnable.call(this);this.slider.enable()},onDisable:function(){Ext.form.SliderField.superclass.onDisable.call(this);this.slider.disable()},beforeDestroy:function(){Ext.destroy(this.slider);Ext.form.SliderField.superclass.beforeDestroy.call(this)},alignErrorIcon:function(){this.errorIcon.alignTo(this.slider.el,"tl-tr",[2,0])},setMinValue:function(a){this.slider.setMinValue(a);return this},setMaxValue:function(a){this.slider.setMaxValue(a);return this},setValue:function(c,b,a){if(!a){this.slider.setValue(c,b)}return Ext.form.SliderField.superclass.setValue.call(this,this.slider.getValue())},getValue:function(){return this.slider.getValue()}});Ext.reg("sliderfield",Ext.form.SliderField);Ext.form.Label=Ext.extend(Ext.BoxComponent,{onRender:function(b,a){if(!this.el){this.el=document.createElement("label");this.el.id=this.getId();this.el.innerHTML=this.text?Ext.util.Format.htmlEncode(this.text):(this.html||"");if(this.forId){this.el.setAttribute("for",this.forId)}}Ext.form.Label.superclass.onRender.call(this,b,a)},setText:function(a,b){var c=b===false;this[!c?"text":"html"]=a;delete this[c?"text":"html"];if(this.rendered){this.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(a):a}return this}});Ext.reg("label",Ext.form.Label);Ext.form.Action=function(b,a){this.form=b;this.options=a||{}};Ext.form.Action.CLIENT_INVALID="client";Ext.form.Action.SERVER_INVALID="server";Ext.form.Action.CONNECT_FAILURE="connect";Ext.form.Action.LOAD_FAILURE="load";Ext.form.Action.prototype={type:"default",run:function(a){},success:function(a){},handleResponse:function(a){},failure:function(a){this.response=a;this.failureType=Ext.form.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(a){this.response=a;if(!a.responseText&&!a.responseXML){return true}this.result=this.handleResponse(a);return this.result},decodeResponse:function(a){try{return Ext.decode(a.responseText)}catch(b){return false}},getUrl:function(c){var a=this.options.url||this.form.url||this.form.el.dom.action;if(c){var b=this.getParams();if(b){a=Ext.urlAppend(a,b)}}return a},getMethod:function(){return(this.options.method||this.form.method||this.form.el.dom.method||"POST").toUpperCase()},getParams:function(){var a=this.form.baseParams;var b=this.options.params;if(b){if(typeof b=="object"){b=Ext.urlEncode(Ext.applyIf(b,a))}else{if(typeof b=="string"&&a){b+="&"+Ext.urlEncode(a)}}}else{if(a){b=Ext.urlEncode(a)}}return b},createCallback:function(a){var a=a||{};return{success:this.success,failure:this.failure,scope:this,timeout:(a.timeout*1000)||(this.form.timeout*1000),upload:this.form.fileUpload?this.success:undefined}}};Ext.form.Action.Submit=function(b,a){Ext.form.Action.Submit.superclass.constructor.call(this,b,a)};Ext.extend(Ext.form.Action.Submit,Ext.form.Action,{type:"submit",run:function(){var e=this.options,g=this.getMethod(),d=g=="GET";if(e.clientValidation===false||this.form.isValid()){if(e.submitEmptyText===false){var a=this.form.items,c=[],b=function(h){if(h.el.getValue()==h.emptyText){c.push(h);h.el.dom.value=""}if(h.isComposite&&h.rendered){h.items.each(b)}};a.each(b)}Ext.Ajax.request(Ext.apply(this.createCallback(e),{form:this.form.el.dom,url:this.getUrl(d),method:g,headers:e.headers,params:!d?this.getParams():null,isUpload:this.form.fileUpload}));if(e.submitEmptyText===false){Ext.each(c,function(h){if(h.applyEmptyText){h.applyEmptyText()}})}}else{if(e.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false)}}},success:function(b){var a=this.processResponse(b);if(a===true||a.success){this.form.afterAction(this,true);return}if(a.errors){this.form.markInvalid(a.errors)}this.failureType=Ext.form.Action.SERVER_INVALID;this.form.afterAction(this,false)},handleResponse:function(c){if(this.form.errorReader){var b=this.form.errorReader.read(c);var g=[];if(b.records){for(var d=0,a=b.records.length;d<a;d++){var e=b.records[d];g[d]=e.data}}if(g.length<1){g=null}return{success:b.success,errors:g}}return this.decodeResponse(c)}});Ext.form.Action.Load=function(b,a){Ext.form.Action.Load.superclass.constructor.call(this,b,a);this.reader=this.form.reader};Ext.extend(Ext.form.Action.Load,Ext.form.Action,{type:"load",run:function(){Ext.Ajax.request(Ext.apply(this.createCallback(this.options),{method:this.getMethod(),url:this.getUrl(false),headers:this.options.headers,params:this.getParams()}))},success:function(b){var a=this.processResponse(b);if(a===true||!a.success||!a.data){this.failureType=Ext.form.Action.LOAD_FAILURE;this.form.afterAction(this,false);return}this.form.clearInvalid();this.form.setValues(a.data);this.form.afterAction(this,true)},handleResponse:function(b){if(this.form.reader){var a=this.form.reader.read(b);var c=a.records&&a.records[0]?a.records[0].data:null;return{success:a.success,data:c}}return this.decodeResponse(b)}});Ext.form.Action.DirectLoad=Ext.extend(Ext.form.Action.Load,{constructor:function(b,a){Ext.form.Action.DirectLoad.superclass.constructor.call(this,b,a)},type:"directload",run:function(){var a=this.getParams();a.push(this.success,this);this.form.api.load.apply(window,a)},getParams:function(){var c=[],h={};var e=this.form.baseParams;var g=this.options.params;Ext.apply(h,g,e);var b=this.form.paramOrder;if(b){for(var d=0,a=b.length;d<a;d++){c.push(h[b[d]])}}else{if(this.form.paramsAsHash){c.push(h)}}return c},processResponse:function(a){this.result=a;return a},success:function(a,b){if(b.type==Ext.Direct.exceptions.SERVER){a={}}Ext.form.Action.DirectLoad.superclass.success.call(this,a)}});Ext.form.Action.DirectSubmit=Ext.extend(Ext.form.Action.Submit,{constructor:function(b,a){Ext.form.Action.DirectSubmit.superclass.constructor.call(this,b,a)},type:"directsubmit",run:function(){var a=this.options;if(a.clientValidation===false||this.form.isValid()){this.success.params=this.getParams();this.form.api.submit(this.form.el.dom,this.success,this)}else{if(a.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false)}}},getParams:function(){var c={};var a=this.form.baseParams;var b=this.options.params;Ext.apply(c,b,a);return c},processResponse:function(a){this.result=a;return a},success:function(a,b){if(b.type==Ext.Direct.exceptions.SERVER){a={}}Ext.form.Action.DirectSubmit.superclass.success.call(this,a)}});Ext.form.Action.ACTION_TYPES={load:Ext.form.Action.Load,submit:Ext.form.Action.Submit,directload:Ext.form.Action.DirectLoad,directsubmit:Ext.form.Action.DirectSubmit};Ext.form.VTypes=function(){var c=/^[a-zA-Z_]+$/,d=/^[a-zA-Z0-9_]+$/,b=/^(\w+)([\-+.\'][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,a=/(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;return{email:function(e){return b.test(e)},emailText:'This field should be an e-mail address in the format "user@example.com"',emailMask:/[a-z0-9_\.\-\+\'@]/i,url:function(e){return a.test(e)},urlText:'This field should be a URL in the format "http://www.example.com"',alpha:function(e){return c.test(e)},alphaText:"This field should only contain letters and _",alphaMask:/[a-z_]/i,alphanum:function(e){return d.test(e)},alphanumText:"This field should only contain letters, numbers and _",alphanumMask:/[a-z0-9_]/i}}();Ext.grid.GridPanel=Ext.extend(Ext.Panel,{autoExpandColumn:false,autoExpandMax:1000,autoExpandMin:50,columnLines:false,ddText:"{0} selected row{1}",deferRowRender:true,enableColumnHide:true,enableColumnMove:true,enableDragDrop:false,enableHdMenu:true,loadMask:false,minColumnWidth:25,stripeRows:false,trackMouseOver:true,stateEvents:["columnmove","columnresize","sortchange","groupchange"],view:null,bubbleEvents:[],rendered:false,viewReady:false,initComponent:function(){Ext.grid.GridPanel.superclass.initComponent.call(this);if(this.columnLines){this.cls=(this.cls||"")+" x-grid-with-col-lines"}this.autoScroll=false;this.autoWidth=false;if(Ext.isArray(this.columns)){this.colModel=new Ext.grid.ColumnModel(this.columns);delete this.columns}if(this.ds){this.store=this.ds;delete this.ds}if(this.cm){this.colModel=this.cm;delete this.cm}if(this.sm){this.selModel=this.sm;delete this.sm}this.store=Ext.StoreMgr.lookup(this.store);this.addEvents("click","dblclick","contextmenu","mousedown","mouseup","mouseover","mouseout","keypress","keydown","cellmousedown","rowmousedown","headermousedown","groupmousedown","rowbodymousedown","containermousedown","cellclick","celldblclick","rowclick","rowdblclick","headerclick","headerdblclick","groupclick","groupdblclick","containerclick","containerdblclick","rowbodyclick","rowbodydblclick","rowcontextmenu","cellcontextmenu","headercontextmenu","groupcontextmenu","containercontextmenu","rowbodycontextmenu","bodyscroll","columnresize","columnmove","sortchange","groupchange","reconfigure","viewready")},onRender:function(d,a){Ext.grid.GridPanel.superclass.onRender.apply(this,arguments);var e=this.getGridEl();this.el.addClass("x-grid-panel");this.mon(e,{scope:this,mousedown:this.onMouseDown,click:this.onClick,dblclick:this.onDblClick,contextmenu:this.onContextMenu});this.relayEvents(e,["mousedown","mouseup","mouseover","mouseout","keypress","keydown"]);var b=this.getView();b.init(this);b.render();this.getSelectionModel().init(this)},initEvents:function(){Ext.grid.GridPanel.superclass.initEvents.call(this);if(this.loadMask){this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({store:this.store},this.loadMask))}},initStateEvents:function(){Ext.grid.GridPanel.superclass.initStateEvents.call(this);this.mon(this.colModel,"hiddenchange",this.saveState,this,{delay:100})},applyState:function(a){var k=this.colModel,g=a.columns,j=this.store,m,h,l;if(g){for(var d=0,e=g.length;d<e;d++){m=g[d];h=k.getColumnById(m.id);if(h){l=k.getIndexById(m.id);k.setState(l,{hidden:m.hidden,width:m.width,sortable:h.sortable,editable:h.editable});if(l!=d){k.moveColumn(l,d)}}}}if(j){m=a.sort;if(m){j[j.remoteSort?"setDefaultSort":"sort"](m.field,m.direction)}m=a.group;if(j.groupBy){if(m){j.groupBy(m)}else{j.clearGrouping()}}}var b=Ext.apply({},a);delete b.columns;delete b.sort;Ext.grid.GridPanel.superclass.applyState.call(this,b)},getState:function(){var g={columns:[]},b=this.store,e,a;for(var d=0,h;(h=this.colModel.config[d]);d++){g.columns[d]={id:h.id,width:h.width};if(h.hidden){g.columns[d].hidden=true}}if(b){e=b.getSortState();if(e){g.sort=e}if(b.getGroupState){a=b.getGroupState();if(a){g.group=a}}}return g},afterRender:function(){Ext.grid.GridPanel.superclass.afterRender.call(this);var a=this.view;this.on("bodyresize",a.layout,a);a.layout(true);if(this.deferRowRender){if(!this.deferRowRenderTask){this.deferRowRenderTask=new Ext.util.DelayedTask(a.afterRender,this.view)}this.deferRowRenderTask.delay(10)}else{a.afterRender()}this.viewReady=true},reconfigure:function(a,b){var c=this.rendered;if(c){if(this.loadMask){this.loadMask.destroy();this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({},{store:a},this.initialConfig.loadMask))}}if(this.view){this.view.initData(a,b)}this.store=a;this.colModel=b;if(c){this.view.refresh(true)}this.fireEvent("reconfigure",this,a,b)},onDestroy:function(){if(this.deferRowRenderTask&&this.deferRowRenderTask.cancel){this.deferRowRenderTask.cancel()}if(this.rendered){Ext.destroy(this.view,this.loadMask)}else{if(this.store&&this.store.autoDestroy){this.store.destroy()}}Ext.destroy(this.colModel,this.selModel);this.store=this.selModel=this.colModel=this.view=this.loadMask=null;Ext.grid.GridPanel.superclass.onDestroy.call(this)},processEvent:function(a,b){this.view.processEvent(a,b)},onClick:function(a){this.processEvent("click",a)},onMouseDown:function(a){this.processEvent("mousedown",a)},onContextMenu:function(b,a){this.processEvent("contextmenu",b)},onDblClick:function(a){this.processEvent("dblclick",a)},walkCells:function(k,c,b,e,j){var i=this.colModel,g=i.getColumnCount(),a=this.store,h=a.getCount(),d=true;if(b<0){if(c<0){k--;d=false}while(k>=0){if(!d){c=g-1}d=false;while(c>=0){if(e.call(j||this,k,c,i)===true){return[k,c]}c--}k--}}else{if(c>=g){k++;d=false}while(k<h){if(!d){c=0}d=false;while(c<g){if(e.call(j||this,k,c,i)===true){return[k,c]}c++}k++}}return null},getGridEl:function(){return this.body},stopEditing:Ext.emptyFn,getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.grid.RowSelectionModel(this.disableSelection?{selectRow:Ext.emptyFn}:null)}return this.selModel},getStore:function(){return this.store},getColumnModel:function(){return this.colModel},getView:function(){if(!this.view){this.view=new Ext.grid.GridView(this.viewConfig)}return this.view},getDragDropText:function(){var a=this.selModel.getCount?this.selModel.getCount():1;return String.format(this.ddText,a,a==1?"":"s")}});Ext.reg("grid",Ext.grid.GridPanel);Ext.grid.PivotGrid=Ext.extend(Ext.grid.GridPanel,{aggregator:"sum",renderer:undefined,initComponent:function(){Ext.grid.PivotGrid.superclass.initComponent.apply(this,arguments);this.initAxes();this.enableColumnResize=false;this.viewConfig=Ext.apply(this.viewConfig||{},{forceFit:true});this.colModel=new Ext.grid.ColumnModel({})},getAggregator:function(){if(typeof this.aggregator=="string"){return Ext.grid.PivotAggregatorMgr.types[this.aggregator]}else{return this.aggregator}},setAggregator:function(a){this.aggregator=a},setMeasure:function(a){this.measure=a},setLeftAxis:function(b,a){this.leftAxis=b;if(a){this.view.refresh()}},setTopAxis:function(b,a){this.topAxis=b;if(a){this.view.refresh()}},initAxes:function(){var a=Ext.grid.PivotAxis;if(!(this.leftAxis instanceof a)){this.setLeftAxis(new a({orientation:"vertical",dimensions:this.leftAxis||[],store:this.store}))}if(!(this.topAxis instanceof a)){this.setTopAxis(new a({orientation:"horizontal",dimensions:this.topAxis||[],store:this.store}))}},extractData:function(){var c=this.store.data.items,s=c.length,q=[],h,g,e,d;if(s==0){return[]}var l=this.leftAxis.getTuples(),o=l.length,m=this.topAxis.getTuples(),a=m.length,b=this.getAggregator();for(g=0;g<s;g++){h=c[g];for(e=0;e<o;e++){q[e]=q[e]||[];if(l[e].matcher(h)===true){for(d=0;d<a;d++){q[e][d]=q[e][d]||[];if(m[d].matcher(h)){q[e][d].push(h)}}}}}var n=q.length,p,r;for(g=0;g<n;g++){r=q[g];p=r.length;for(e=0;e<p;e++){q[g][e]=b(q[g][e],this.measure)}}return q},getView:function(){if(!this.view){this.view=new Ext.grid.PivotGridView(this.viewConfig)}return this.view}});Ext.reg("pivotgrid",Ext.grid.PivotGrid);Ext.grid.PivotAggregatorMgr=new Ext.AbstractManager();Ext.grid.PivotAggregatorMgr.registerType("sum",function(a,c){var e=a.length,d=0,b;for(b=0;b<e;b++){d+=a[b].get(c)}return d});Ext.grid.PivotAggregatorMgr.registerType("avg",function(a,c){var e=a.length,d=0,b;for(b=0;b<e;b++){d+=a[b].get(c)}return(d/e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("min",function(a,c){var e=[],d=a.length,b;for(b=0;b<d;b++){e.push(a[b].get(c))}return Math.min.apply(this,e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("max",function(a,c){var e=[],d=a.length,b;for(b=0;b<d;b++){e.push(a[b].get(c))}return Math.max.apply(this,e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("count",function(a,b){return a.length});Ext.grid.GridView=Ext.extend(Ext.util.Observable,{deferEmptyText:true,scrollOffset:undefined,autoFill:false,forceFit:false,sortClasses:["sort-asc","sort-desc"],sortAscText:"Sort Ascending",sortDescText:"Sort Descending",hideSortIcons:false,columnsText:"Columns",selectedRowClass:"x-grid3-row-selected",borderWidth:2,tdClass:"x-grid3-cell",hdCls:"x-grid3-hd",markDirty:true,cellSelectorDepth:4,rowSelectorDepth:10,rowBodySelectorDepth:10,cellSelector:"td.x-grid3-cell",rowSelector:"div.x-grid3-row",rowBodySelector:"div.x-grid3-row-body",firstRowCls:"x-grid3-row-first",lastRowCls:"x-grid3-row-last",rowClsRe:/(?:^|\s+)x-grid3-row-(first|last|alt)(?:\s+|$)/g,headerMenuOpenCls:"x-grid3-hd-menu-open",rowOverCls:"x-grid3-row-over",constructor:function(a){Ext.apply(this,a);this.addEvents("beforerowremoved","beforerowsinserted","beforerefresh","rowremoved","rowsinserted","rowupdated","refresh");Ext.grid.GridView.superclass.constructor.call(this)},masterTpl:new Ext.Template('<div class="x-grid3" hidefocus="true">','<div class="x-grid3-viewport">','<div class="x-grid3-header">','<div class="x-grid3-header-inner">','<div class="x-grid3-header-offset" style="{ostyle}">{header}</div>',"</div>",'<div class="x-clear"></div>',"</div>",'<div class="x-grid3-scroller">','<div class="x-grid3-body" style="{bstyle}">{body}</div>','<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',"</div>","</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>"),headerTpl:new Ext.Template('<table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<thead>",'<tr class="x-grid3-hd-row">{cells}</tr>',"</thead>","</table>"),bodyTpl:new Ext.Template("{rows}"),cellTpl:new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}" tabIndex="0" {cellAttr}>','<div class="x-grid3-cell-inner x-grid3-col-{id} x-unselectable" unselectable="on" {attr}>{value}</div>',"</td>"),initTemplates:function(){var c=this.templates||{},d,b,g=new Ext.Template('<td class="x-grid3-hd x-grid3-cell x-grid3-td-{id} {css}" style="{style}">','<div {tooltip} {attr} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"","{value}",'<img alt="" class="x-grid3-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" />',"</div>","</td>"),a=['<tr class="x-grid3-row-body-tr" style="{bodyStyle}">','<td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on">','<div class="x-grid3-row-body">{body}</div>',"</td>","</tr>"].join(""),e=['<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<tbody>","<tr>{cells}</tr>",this.enableRowBody?a:"","</tbody>","</table>"].join("");Ext.applyIf(c,{hcell:g,cell:this.cellTpl,body:this.bodyTpl,header:this.headerTpl,master:this.masterTpl,row:new Ext.Template('<div class="x-grid3-row {alt}" style="{tstyle}">'+e+"</div>"),rowInner:new Ext.Template(e)});for(b in c){d=c[b];if(d&&Ext.isFunction(d.compile)&&!d.compiled){d.disableFormats=true;d.compile()}}this.templates=c;this.colRe=new RegExp("x-grid3-td-([^\\s]+)","")},fly:function(a){if(!this._flyweight){this._flyweight=new Ext.Element.Flyweight(document.body)}this._flyweight.dom=a;return this._flyweight},getEditorParent:function(){return this.scroller.dom},initElements:function(){var b=Ext.Element,d=Ext.get(this.grid.getGridEl().dom.firstChild),e=new b(d.child("div.x-grid3-viewport")),c=new b(e.child("div.x-grid3-header")),a=new b(e.child("div.x-grid3-scroller"));if(this.grid.hideHeaders){c.setDisplayed(false)}if(this.forceFit){a.setStyle("overflow-x","hidden")}Ext.apply(this,{el:d,mainWrap:e,scroller:a,mainHd:c,innerHd:c.child("div.x-grid3-header-inner").dom,mainBody:new b(b.fly(a).child("div.x-grid3-body")),focusEl:new b(b.fly(a).child("a")),resizeMarker:new b(d.child("div.x-grid3-resize-marker")),resizeProxy:new b(d.child("div.x-grid3-resize-proxy"))});this.focusEl.swallowEvent("click",true)},getRows:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},findCell:function(a){if(!a){return false}return this.fly(a).findParent(this.cellSelector,this.cellSelectorDepth)},findCellIndex:function(d,c){var b=this.findCell(d),a;if(b){a=this.fly(b).hasClass(c);if(!c||a){return this.getCellIndex(b)}}return false},getCellIndex:function(b){if(b){var a=b.className.match(this.colRe);if(a&&a[1]){return this.cm.getIndexById(a[1])}}return false},findHeaderCell:function(b){var a=this.findCell(b);return a&&this.fly(a).hasClass(this.hdCls)?a:null},findHeaderIndex:function(a){return this.findCellIndex(a,this.hdCls)},findRow:function(a){if(!a){return false}return this.fly(a).findParent(this.rowSelector,this.rowSelectorDepth)},findRowIndex:function(a){var b=this.findRow(a);return b?b.rowIndex:false},findRowBody:function(a){if(!a){return false}return this.fly(a).findParent(this.rowBodySelector,this.rowBodySelectorDepth)},getRow:function(a){return this.getRows()[a]},getCell:function(b,a){return Ext.fly(this.getRow(b)).query(this.cellSelector)[a]},getHeaderCell:function(a){return this.mainHd.dom.getElementsByTagName("td")[a]},addRowClass:function(b,a){var c=this.getRow(b);if(c){this.fly(c).addClass(a)}},removeRowClass:function(c,a){var b=this.getRow(c);if(b){this.fly(b).removeClass(a)}},removeRow:function(a){Ext.removeNode(this.getRow(a));this.syncFocusEl(a)},removeRows:function(c,a){var b=this.mainBody.dom,d;for(d=c;d<=a;d++){Ext.removeNode(b.childNodes[c])}this.syncFocusEl(c)},getScrollState:function(){var a=this.scroller.dom;return{left:a.scrollLeft,top:a.scrollTop}},restoreScroll:function(a){var b=this.scroller.dom;b.scrollLeft=a.left;b.scrollTop=a.top},scrollToTop:function(){var a=this.scroller.dom;a.scrollTop=0;a.scrollLeft=0},syncScroll:function(){this.syncHeaderScroll();var a=this.scroller.dom;this.grid.fireEvent("bodyscroll",a.scrollLeft,a.scrollTop)},syncHeaderScroll:function(){var a=this.innerHd,b=this.scroller.dom.scrollLeft;a.scrollLeft=b;a.scrollLeft=b},updateSortIcon:function(d,c){var a=this.sortClasses,b=a[c=="DESC"?1:0],e=this.mainHd.select("td").removeClass(a);e.item(d).addClass(b)},updateAllColumnWidths:function(){var e=this.getTotalWidth(),k=this.cm.getColumnCount(),m=this.getRows(),g=m.length,b=[],l,a,h,d,c;for(d=0;d<k;d++){b[d]=this.getColumnWidth(d);this.getHeaderCell(d).style.width=b[d]}this.updateHeaderWidth();for(d=0;d<g;d++){l=m[d];l.style.width=e;a=l.firstChild;if(a){a.style.width=e;h=a.rows[0];for(c=0;c<k;c++){h.childNodes[c].style.width=b[c]}}}this.onAllColumnWidthsUpdated(b,e)},updateColumnWidth:function(d,b){var c=this.getColumnWidth(d),j=this.getTotalWidth(),h=this.getHeaderCell(d),a=this.getRows(),e=a.length,l,g,k;this.updateHeaderWidth();h.style.width=c;for(g=0;g<e;g++){l=a[g];k=l.firstChild;l.style.width=j;if(k){k.style.width=j;k.rows[0].childNodes[d].style.width=c}}this.onColumnWidthUpdated(d,c,j)},updateColumnHidden:function(b,j){var h=this.getTotalWidth(),k=j?"none":"",g=this.getHeaderCell(b),a=this.getRows(),d=a.length,l,c,e;this.updateHeaderWidth();g.style.display=k;for(e=0;e<d;e++){l=a[e];l.style.width=h;c=l.firstChild;if(c){c.style.width=h;c.rows[0].childNodes[b].style.display=k}}this.onColumnHiddenUpdated(b,j,h);delete this.lastViewWidth;this.layout()},doRender:function(d,v,m,a,r,t){var h=this.templates,c=h.cell,y=h.row,o=r-1,b="width:"+this.getTotalWidth()+";",k=[],l=[],n={tstyle:b},q={},w=v.length,x,g,e,u,s,p;for(s=0;s<w;s++){e=v[s];l=[];p=s+a;for(u=0;u<r;u++){g=d[u];q.id=g.id;q.css=u===0?"x-grid3-cell-first ":(u==o?"x-grid3-cell-last ":"");q.attr=q.cellAttr="";q.style=g.style;q.value=g.renderer.call(g.scope,e.data[g.name],q,e,p,u,m);if(Ext.isEmpty(q.value)){q.value="&#160;"}if(this.markDirty&&e.dirty&&typeof e.modified[g.name]!="undefined"){q.css+=" x-grid3-dirty-cell"}l[l.length]=c.apply(q)}x=[];if(t&&((p+1)%2===0)){x[0]="x-grid3-row-alt"}if(e.dirty){x[1]=" x-grid3-dirty-row"}n.cols=r;if(this.getRowClass){x[2]=this.getRowClass(e,p,n,m)}n.alt=x.join(" ");n.cells=l.join("");k[k.length]=y.apply(n)}return k.join("")},processRows:function(a,g){if(!this.ds||this.ds.getCount()<1){return}var d=this.getRows(),c=d.length,e,b;g=g||!this.grid.stripeRows;a=a||0;for(b=0;b<c;b++){e=d[b];if(e){e.rowIndex=b;if(!g){e.className=e.className.replace(this.rowClsRe," ");if((b+1)%2===0){e.className+=" x-grid3-row-alt"}}}}if(a===0){Ext.fly(d[0]).addClass(this.firstRowCls)}Ext.fly(d[c-1]).addClass(this.lastRowCls)},afterRender:function(){if(!this.ds||!this.cm){return}this.mainBody.dom.innerHTML=this.renderBody()||"&#160;";this.processRows(0,true);if(this.deferEmptyText!==true){this.applyEmptyText()}this.grid.fireEvent("viewready",this.grid)},afterRenderUI:function(){var a=this.grid;this.initElements();Ext.fly(this.innerHd).on("click",this.handleHdDown,this);this.mainHd.on({scope:this,mouseover:this.handleHdOver,mouseout:this.handleHdOut,mousemove:this.handleHdMove});this.scroller.on("scroll",this.syncScroll,this);if(a.enableColumnResize!==false){this.splitZone=new Ext.grid.GridView.SplitDragZone(a,this.mainHd.dom)}if(a.enableColumnMove){this.columnDrag=new Ext.grid.GridView.ColumnDragZone(a,this.innerHd);this.columnDrop=new Ext.grid.HeaderDropZone(a,this.mainHd.dom)}if(a.enableHdMenu!==false){this.hmenu=new Ext.menu.Menu({id:a.id+"-hctx"});this.hmenu.add({itemId:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{itemId:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});if(a.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:a.id+"-hcols-menu"});this.colMenu.on({scope:this,beforeshow:this.beforeColMenuShow,itemclick:this.handleHdMenuClick});this.hmenu.add({itemId:"sortSep",xtype:"menuseparator"},{itemId:"columns",hideOnClick:false,text:this.columnsText,menu:this.colMenu,iconCls:"x-cols-icon"})}this.hmenu.on("itemclick",this.handleHdMenuClick,this)}if(a.trackMouseOver){this.mainBody.on({scope:this,mouseover:this.onRowOver,mouseout:this.onRowOut})}if(a.enableDragDrop||a.enableDrag){this.dragZone=new Ext.grid.GridDragZone(a,{ddGroup:a.ddGroup||"GridDD"})}this.updateHeaderSortState()},renderUI:function(){var a=this.templates;return a.master.apply({body:a.body.apply({rows:"&#160;"}),header:this.renderHeaders(),ostyle:"width:"+this.getOffsetWidth()+";",bstyle:"width:"+this.getTotalWidth()+";"})},processEvent:function(b,h){var i=h.getTarget(),a=this.grid,d=this.findHeaderIndex(i),k,j,c,g;a.fireEvent(b,h);if(d!==false){a.fireEvent("header"+b,a,d,h)}else{k=this.findRowIndex(i);if(k!==false){j=this.findCellIndex(i);if(j!==false){c=a.colModel.getColumnAt(j);if(a.fireEvent("cell"+b,a,k,j,h)!==false){if(!c||(c.processEvent&&(c.processEvent(b,h,a,k,j)!==false))){a.fireEvent("row"+b,a,k,h)}}}else{if(a.fireEvent("row"+b,a,k,h)!==false){(g=this.findRowBody(i))&&a.fireEvent("rowbody"+b,a,k,h)}}}else{a.fireEvent("container"+b,a,h)}}},layout:function(j){if(!this.mainBody){return}var a=this.grid,d=a.getGridEl(),c=d.getSize(true),i=c.width,b=c.height,h=this.scroller,g,e,k;if(i<20||b<20){return}if(a.autoHeight){g=h.dom.style;g.overflow="visible";if(Ext.isWebKit){g.position="static"}}else{this.el.setSize(i,b);e=this.mainHd.getHeight();k=b-e;h.setSize(i,k);if(this.innerHd){this.innerHd.style.width=(i)+"px"}}if(this.forceFit||(j===true&&this.autoFill)){if(this.lastViewWidth!=i){this.fitColumns(false,false);this.lastViewWidth=i}}else{this.autoExpand();this.syncHeaderScroll()}this.onLayout(i,k)},onLayout:function(a,b){},onColumnWidthUpdated:function(c,a,b){},onAllColumnWidthsUpdated:function(a,b){},onColumnHiddenUpdated:function(b,c,a){},updateColumnText:function(a,b){},afterMove:function(a){},init:function(a){this.grid=a;this.initTemplates();this.initData(a.store,a.colModel);this.initUI(a)},getColumnId:function(a){return this.cm.getColumnId(a)},getOffsetWidth:function(){return(this.cm.getTotalWidth()+this.getScrollOffset())+"px"},getScrollOffset:function(){return Ext.num(this.scrollOffset,Ext.getScrollBarWidth())},renderHeaders:function(){var e=this.cm,g=this.templates,a=g.hcell,d={},h=e.getColumnCount(),j=h-1,k=[],c,b;for(c=0;c<h;c++){if(c==0){b="x-grid3-cell-first "}else{b=c==j?"x-grid3-cell-last ":""}d={id:e.getColumnId(c),value:e.getColumnHeader(c)||"",style:this.getColumnStyle(c,true),css:b,tooltip:this.getColumnTooltip(c)};if(e.config[c].align=="right"){d.istyle="padding-right: 16px;"}else{delete d.istyle}k[c]=a.apply(d)}return g.header.apply({cells:k.join(""),tstyle:String.format("width: {0};",this.getTotalWidth())})},getColumnTooltip:function(a){var b=this.cm.getColumnTooltip(a);if(b){if(Ext.QuickTips.isEnabled()){return'ext:qtip="'+b+'"'}else{return'title="'+b+'"'}}return""},beforeUpdate:function(){this.grid.stopEditing(true)},updateHeaders:function(){this.innerHd.firstChild.innerHTML=this.renderHeaders();this.updateHeaderWidth(false)},updateHeaderWidth:function(c){var b=this.innerHd.firstChild,a=this.getTotalWidth();b.style.width=this.getOffsetWidth();b.firstChild.style.width=a;if(c!==false){this.mainBody.dom.style.width=a}},focusRow:function(a){this.focusCell(a,0,false)},focusCell:function(d,b,c){this.syncFocusEl(this.ensureVisible(d,b,c));var a=this.focusEl;if(Ext.isGecko){a.focus()}else{a.focus.defer(1,a)}},resolveCell:function(h,d,g){if(!Ext.isNumber(h)){h=h.rowIndex}if(!this.ds){return null}if(h<0||h>=this.ds.getCount()){return null}d=(d!==undefined?d:0);var c=this.getRow(h),b=this.cm,e=b.getColumnCount(),a;if(!(g===false&&d===0)){while(d<e&&b.isHidden(d)){d++}a=this.getCell(h,d)}return{row:c,cell:a}},getResolvedXY:function(b){if(!b){return null}var a=b.cell,c=b.row;if(a){return Ext.fly(a).getXY()}else{return[this.el.getX(),Ext.fly(c).getY()]}},syncFocusEl:function(d,a,c){var b=d;if(!Ext.isArray(b)){d=Math.min(d,Math.max(0,this.getRows().length-1));if(isNaN(d)){return}b=this.getResolvedXY(this.resolveCell(d,a,c))}this.focusEl.setXY(b||this.scroller.getXY())},ensureVisible:function(t,g,e){var r=this.resolveCell(t,g,e);if(!r||!r.row){return null}var k=r.row,h=r.cell,n=this.scroller.dom,d=k,s=0,o=this.el.dom;while(d&&d!=o){s+=d.offsetTop;d=d.offsetParent}s-=this.mainHd.dom.offsetHeight;o=parseInt(n.scrollTop,10);var q=s+k.offsetHeight,a=n.clientHeight,m=o+a;if(s<o){n.scrollTop=s}else{if(q>m){n.scrollTop=q-a}}if(e!==false){var l=parseInt(h.offsetLeft,10),j=l+h.offsetWidth,i=parseInt(n.scrollLeft,10),b=i+n.clientWidth;if(l<i){n.scrollLeft=l}else{if(j>b){n.scrollLeft=j-n.clientWidth}}}return this.getResolvedXY(r)},insertRows:function(a,i,e,h){var d=a.getCount()-1;if(!h&&i===0&&e>=d){this.fireEvent("beforerowsinserted",this,i,e);this.refresh();this.fireEvent("rowsinserted",this,i,e)}else{if(!h){this.fireEvent("beforerowsinserted",this,i,e)}var b=this.renderRows(i,e),g=this.getRow(i);if(g){if(i===0){Ext.fly(this.getRow(0)).removeClass(this.firstRowCls)}Ext.DomHelper.insertHtml("beforeBegin",g,b)}else{var c=this.getRow(d-1);if(c){Ext.fly(c).removeClass(this.lastRowCls)}Ext.DomHelper.insertHtml("beforeEnd",this.mainBody.dom,b)}if(!h){this.processRows(i);this.fireEvent("rowsinserted",this,i,e)}else{if(i===0||i>=d){Ext.fly(this.getRow(i)).addClass(i===0?this.firstRowCls:this.lastRowCls)}}}this.syncFocusEl(i)},deleteRows:function(a,c,b){if(a.getRowCount()<1){this.refresh()}else{this.fireEvent("beforerowsdeleted",this,c,b);this.removeRows(c,b);this.processRows(c);this.fireEvent("rowsdeleted",this,c,b)}},getColumnStyle:function(b,d){var a=this.cm,g=a.config,c=d?"":g[b].css||"",e=g[b].align;c+=String.format("width: {0};",this.getColumnWidth(b));if(a.isHidden(b)){c+="display: none; "}if(e){c+=String.format("text-align: {0};",e)}return c},getColumnWidth:function(b){var c=this.cm.getColumnWidth(b),a=this.borderWidth;if(Ext.isNumber(c)){if(Ext.isBorderBox){return c+"px"}else{return Math.max(c-a,0)+"px"}}else{return c}},getTotalWidth:function(){return this.cm.getTotalWidth()+"px"},fitColumns:function(g,j,h){var a=this.grid,l=this.cm,s=l.getTotalWidth(false),q=this.getGridInnerWidth(),r=q-s,c=[],o=0,n=0,u,d,p;if(q<20||r===0){return false}var e=l.getColumnCount(true),m=l.getColumnCount(false),b=e-(Ext.isNumber(h)?1:0);if(b===0){b=1;h=undefined}for(p=0;p<m;p++){if(!l.isFixed(p)&&p!==h){u=l.getColumnWidth(p);c.push(p,u);if(!l.isHidden(p)){o=p;n+=u}}}d=(q-l.getTotalWidth())/n;while(c.length){u=c.pop();p=c.pop();l.setColumnWidth(p,Math.max(a.minColumnWidth,Math.floor(u+u*d)),true)}s=l.getTotalWidth(false);if(s>q){var t=(b==e)?o:h,k=Math.max(1,l.getColumnWidth(t)-(s-q));l.setColumnWidth(t,k,true)}if(g!==true){this.updateAllColumnWidths()}return true},autoExpand:function(k){var a=this.grid,i=this.cm,e=this.getGridInnerWidth(),c=i.getTotalWidth(false),g=a.autoExpandColumn;if(!this.userResized&&g){if(e!=c){var j=i.getIndexById(g),b=i.getColumnWidth(j),h=e-c+b,d=Math.min(Math.max(h,a.autoExpandMin),a.autoExpandMax);if(b!=d){i.setColumnWidth(j,d,true);if(k!==true){this.updateColumnWidth(j,d)}}}}},getGridInnerWidth:function(){return this.grid.getGridEl().getWidth(true)-this.getScrollOffset()},getColumnData:function(){var e=[],c=this.cm,g=c.getColumnCount(),a=this.ds.fields,d,b;for(d=0;d<g;d++){b=c.getDataIndex(d);e[d]={name:Ext.isDefined(b)?b:(a.get(d)?a.get(d).name:undefined),renderer:c.getRenderer(d),scope:c.getRendererScope(d),id:c.getColumnId(d),style:this.getColumnStyle(d)}}return e},renderRows:function(i,c){var a=this.grid,g=a.store,j=a.stripeRows,e=a.colModel,h=e.getColumnCount(),d=g.getCount(),b;if(d<1){return""}i=i||0;c=Ext.isDefined(c)?c:d-1;b=g.getRange(i,c);return this.doRender(this.getColumnData(),b,g,i,h,j)},renderBody:function(){var a=this.renderRows()||"&#160;";return this.templates.body.apply({rows:a})},refreshRow:function(g){var l=this.ds,m=this.cm.getColumnCount(),c=this.getColumnData(),n=m-1,p=["x-grid3-row"],e={tstyle:String.format("width: {0};",this.getTotalWidth())},a=[],k=this.templates.cell,j,q,b,o,h,d;if(Ext.isNumber(g)){j=g;g=l.getAt(j)}else{j=l.indexOf(g)}if(!g||j<0){return}for(d=0;d<m;d++){b=c[d];if(d==0){h="x-grid3-cell-first"}else{h=(d==n)?"x-grid3-cell-last ":""}o={id:b.id,style:b.style,css:h,attr:"",cellAttr:""};o.value=b.renderer.call(b.scope,g.data[b.name],o,g,j,d,l);if(Ext.isEmpty(o.value)){o.value="&#160;"}if(this.markDirty&&g.dirty&&typeof g.modified[b.name]!="undefined"){o.css+=" x-grid3-dirty-cell"}a[d]=k.apply(o)}q=this.getRow(j);q.className="";if(this.grid.stripeRows&&((j+1)%2===0)){p.push("x-grid3-row-alt")}if(this.getRowClass){e.cols=m;p.push(this.getRowClass(g,j,e,l))}this.fly(q).addClass(p).setStyle(e.tstyle);e.cells=a.join("");q.innerHTML=this.templates.rowInner.apply(e);this.fireEvent("rowupdated",this,j,g)},refresh:function(b){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var a=this.renderBody();this.mainBody.update(a).setWidth(this.getTotalWidth());if(b===true){this.updateHeaders();this.updateHeaderSortState()}this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this)},applyEmptyText:function(){if(this.emptyText&&!this.hasRows()){this.mainBody.update('<div class="x-grid-empty">'+this.emptyText+"</div>")}},updateHeaderSortState:function(){var b=this.ds.getSortState();if(!b){return}if(!this.sortState||(this.sortState.field!=b.field||this.sortState.direction!=b.direction)){this.grid.fireEvent("sortchange",this.grid,b)}this.sortState=b;var c=this.cm.findColumnIndex(b.field);if(c!=-1){var a=b.direction;this.updateSortIcon(c,a)}},clearHeaderSortState:function(){if(!this.sortState){return}this.grid.fireEvent("sortchange",this.grid,null);this.mainHd.select("td").removeClass(this.sortClasses);delete this.sortState},destroy:function(){var j=this,a=j.grid,d=a.getGridEl(),i=j.dragZone,g=j.splitZone,h=j.columnDrag,e=j.columnDrop,k=j.scrollToTopTask,c,b;if(k&&k.cancel){k.cancel()}Ext.destroyMembers(j,"colMenu","hmenu");j.initData(null,null);j.purgeListeners();Ext.fly(j.innerHd).un("click",j.handleHdDown,j);if(a.enableColumnMove){c=h.dragData;b=h.proxy;Ext.destroy(h.el,b.ghost,b.el,e.el,e.proxyTop,e.proxyBottom,c.ddel,c.header);if(b.anim){Ext.destroy(b.anim)}delete b.ghost;delete c.ddel;delete c.header;h.destroy();delete Ext.dd.DDM.locationCache[h.id];delete h._domRef;delete e.proxyTop;delete e.proxyBottom;e.destroy();delete Ext.dd.DDM.locationCache["gridHeader"+d.id];delete e._domRef;delete Ext.dd.DDM.ids[e.ddGroup]}if(g){g.destroy();delete g._domRef;delete Ext.dd.DDM.ids["gridSplitters"+d.id]}Ext.fly(j.innerHd).removeAllListeners();Ext.removeNode(j.innerHd);delete j.innerHd;Ext.destroy(j.el,j.mainWrap,j.mainHd,j.scroller,j.mainBody,j.focusEl,j.resizeMarker,j.resizeProxy,j.activeHdBtn,j._flyweight,i,g);delete a.container;if(i){i.destroy()}Ext.dd.DDM.currentTarget=null;delete Ext.dd.DDM.locationCache[d.id];Ext.EventManager.removeResizeListener(j.onWindowResize,j)},onDenyColumnHide:function(){},render:function(){if(this.autoFill){var a=this.grid.ownerCt;if(a&&a.getLayout()){a.on("afterlayout",function(){this.fitColumns(true,true);this.updateHeaders();this.updateHeaderSortState()},this,{single:true})}}else{if(this.forceFit){this.fitColumns(true,false)}else{if(this.grid.autoExpandColumn){this.autoExpand(true)}}}this.grid.getGridEl().dom.innerHTML=this.renderUI();this.afterRenderUI()},initData:function(a,e){var b=this;if(b.ds){var d=b.ds;d.un("add",b.onAdd,b);d.un("load",b.onLoad,b);d.un("clear",b.onClear,b);d.un("remove",b.onRemove,b);d.un("update",b.onUpdate,b);d.un("datachanged",b.onDataChange,b);if(d!==a&&d.autoDestroy){d.destroy()}}if(a){a.on({scope:b,load:b.onLoad,add:b.onAdd,remove:b.onRemove,update:b.onUpdate,clear:b.onClear,datachanged:b.onDataChange})}if(b.cm){var c=b.cm;c.un("configchange",b.onColConfigChange,b);c.un("widthchange",b.onColWidthChange,b);c.un("headerchange",b.onHeaderChange,b);c.un("hiddenchange",b.onHiddenChange,b);c.un("columnmoved",b.onColumnMove,b)}if(e){delete b.lastViewWidth;e.on({scope:b,configchange:b.onColConfigChange,widthchange:b.onColWidthChange,headerchange:b.onHeaderChange,hiddenchange:b.onHiddenChange,columnmoved:b.onColumnMove})}b.ds=a;b.cm=e},onDataChange:function(){this.refresh(true);this.updateHeaderSortState();this.syncFocusEl(0)},onClear:function(){this.refresh();this.syncFocusEl(0)},onUpdate:function(b,a){this.refreshRow(a)},onAdd:function(b,a,c){this.insertRows(b,c,c+(a.length-1))},onRemove:function(b,a,c,d){if(d!==true){this.fireEvent("beforerowremoved",this,c,a)}this.removeRow(c);if(d!==true){this.processRows(c);this.applyEmptyText();this.fireEvent("rowremoved",this,c,a)}},onLoad:function(){if(Ext.isGecko){if(!this.scrollToTopTask){this.scrollToTopTask=new Ext.util.DelayedTask(this.scrollToTop,this)}this.scrollToTopTask.delay(1)}else{this.scrollToTop()}},onColWidthChange:function(a,b,c){this.updateColumnWidth(b,c)},onHeaderChange:function(a,b,c){this.updateHeaders()},onHiddenChange:function(a,b,c){this.updateColumnHidden(b,c)},onColumnMove:function(a,c,b){this.indexMap=null;this.refresh(true);this.restoreScroll(this.getScrollState());this.afterMove(b);this.grid.fireEvent("columnmove",c,b)},onColConfigChange:function(){delete this.lastViewWidth;this.indexMap=null;this.refresh(true)},initUI:function(a){a.on("headerclick",this.onHeaderClick,this)},initEvents:Ext.emptyFn,onHeaderClick:function(b,a){if(this.headersDisabled||!this.cm.isSortable(a)){return}b.stopEditing(true);b.store.sort(this.cm.getDataIndex(a))},onRowOver:function(b,a){var c=this.findRowIndex(a);if(c!==false){this.addRowClass(c,this.rowOverCls)}},onRowOut:function(b,a){var c=this.findRowIndex(a);if(c!==false&&!b.within(this.getRow(c),true)){this.removeRowClass(c,this.rowOverCls)}},onRowSelect:function(a){this.addRowClass(a,this.selectedRowClass)},onRowDeselect:function(a){this.removeRowClass(a,this.selectedRowClass)},onCellSelect:function(c,b){var a=this.getCell(c,b);if(a){this.fly(a).addClass("x-grid3-cell-selected")}},onCellDeselect:function(c,b){var a=this.getCell(c,b);if(a){this.fly(a).removeClass("x-grid3-cell-selected")}},handleWheel:function(a){a.stopPropagation()},onColumnSplitterMoved:function(a,b){this.userResized=true;this.grid.colModel.setColumnWidth(a,b,true);if(this.forceFit){this.fitColumns(true,false,a);this.updateAllColumnWidths()}else{this.updateColumnWidth(a,b);this.syncHeaderScroll()}this.grid.fireEvent("columnresize",a,b)},beforeColMenuShow:function(){var b=this.cm,d=b.getColumnCount(),a=this.colMenu,c;a.removeAll();for(c=0;c<d;c++){if(b.config[c].hideable!==false){a.add(new Ext.menu.CheckItem({text:b.getColumnHeader(c),itemId:"col-"+b.getColumnId(c),checked:!b.isHidden(c),disabled:b.config[c].hideable===false,hideOnClick:false}))}}},handleHdMenuClick:function(c){var a=this.ds,b=this.cm.getDataIndex(this.hdCtxIndex);switch(c.getItemId()){case"asc":a.sort(b,"ASC");break;case"desc":a.sort(b,"DESC");break;default:this.handleHdMenuClickDefault(c)}return true},handleHdMenuClickDefault:function(c){var b=this.cm,d=c.getItemId(),a=b.getIndexById(d.substr(4));if(a!=-1){if(c.checked&&b.getColumnsBy(this.isHideableColumn,this).length<=1){this.onDenyColumnHide();return}b.setHidden(a,c.checked)}},handleHdDown:function(i,j){if(Ext.fly(j).hasClass("x-grid3-hd-btn")){i.stopEvent();var k=this.cm,g=this.findHeaderCell(j),h=this.getCellIndex(g),d=k.isSortable(h),c=this.hmenu,b=c.items,a=this.headerMenuOpenCls,l;this.hdCtxIndex=h;Ext.fly(g).addClass(a);if(this.hideSortIcons){b.get("asc").setVisible(d);b.get("desc").setVisible(d);l=b.get("sortSep");if(l){l.setVisible(d)}}else{b.get("asc").setDisabled(!d);b.get("desc").setDisabled(!d)}c.on("hide",function(){Ext.fly(g).removeClass(a)},this,{single:true});c.show(j,"tl-bl?")}},handleHdMove:function(k){var i=this.findHeaderCell(this.activeHdRef);if(i&&!this.headersDisabled){var l=this.splitHandleWidth||5,j=this.activeHdRegion,p=i.style,m=this.cm,o="",g=k.getPageX();if(this.grid.enableColumnResize!==false){var a=this.activeHdIndex,b=this.getPreviousVisible(a),n=m.isResizable(a),c=b&&m.isResizable(b),d=g-j.left<=l,h=j.right-g<=(!this.activeHdBtn?l:2);if(d&&c){o=Ext.isAir?"move":Ext.isWebKit?"e-resize":"col-resize"}else{if(h&&n){o=Ext.isAir?"move":Ext.isWebKit?"w-resize":"col-resize"}}}p.cursor=o}},getPreviousVisible:function(a){while(a>0){if(!this.cm.isHidden(a-1)){return a}a--}return undefined},handleHdOver:function(c,b){var d=this.findHeaderCell(b);if(d&&!this.headersDisabled){var a=this.fly(d);this.activeHdRef=b;this.activeHdIndex=this.getCellIndex(d);this.activeHdRegion=a.getRegion();if(!this.isMenuDisabled(this.activeHdIndex,a)){a.addClass("x-grid3-hd-over");this.activeHdBtn=a.child(".x-grid3-hd-btn");if(this.activeHdBtn){this.activeHdBtn.dom.style.height=(d.firstChild.offsetHeight-1)+"px"}}}},handleHdOut:function(b,a){var c=this.findHeaderCell(a);if(c&&(!Ext.isIE9m||!b.within(c,true))){this.activeHdRef=null;this.fly(c).removeClass("x-grid3-hd-over");c.style.cursor=""}},isMenuDisabled:function(a,b){return this.cm.isMenuDisabled(a)},hasRows:function(){var a=this.mainBody.dom.firstChild;return a&&a.nodeType==1&&a.className!="x-grid-empty"},isHideableColumn:function(a){return !a.hidden},bind:function(a,b){this.initData(a,b)}});Ext.grid.GridView.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{constructor:function(a,b){this.grid=a;this.view=a.getView();this.marker=this.view.resizeMarker;this.proxy=this.view.resizeProxy;Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this,b,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.scroll=false;this.hw=this.view.splitHandleWidth||5},b4StartDrag:function(a,e){this.dragHeadersDisabled=this.view.headersDisabled;this.view.headersDisabled=true;var d=this.view.mainWrap.getHeight();this.marker.setHeight(d);this.marker.show();this.marker.alignTo(this.view.getHeaderCell(this.cellIndex),"tl-tl",[-2,0]);this.proxy.setHeight(d);var b=this.cm.getColumnWidth(this.cellIndex),c=Math.max(b-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(c,1000);this.setYConstraint(0,0);this.minX=a-c;this.maxX=a+1000;this.startPos=a;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,a,e)},allowHeaderDrag:function(a){return true},handleMouseDown:function(a){var h=this.view.findHeaderCell(a.getTarget());if(h&&this.allowHeaderDrag(a)){var k=this.view.fly(h).getXY(),c=k[0],i=a.getXY(),b=i[0],g=h.offsetWidth,d=false;if((b-c)<=this.hw){d=-1}else{if((c+g)-b<=this.hw){d=0}}if(d!==false){this.cm=this.grid.colModel;var j=this.view.getCellIndex(h);if(d==-1){if(j+d<0){return}while(this.cm.isHidden(j+d)){--d;if(j+d<0){return}}}this.cellIndex=j+d;this.split=h.dom;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)}}else{if(this.view.columnDrag){this.view.columnDrag.callHandleMouseDown(a)}}}},endDrag:function(g){this.marker.hide();var a=this.view,c=Math.max(this.minX,g.getPageX()),d=c-this.startPos,b=this.dragHeadersDisabled;a.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+d);setTimeout(function(){a.headersDisabled=b},50)},autoOffset:function(){this.setDelta(0,0)}});Ext.grid.PivotGridView=Ext.extend(Ext.grid.GridView,{colHeaderCellCls:"grid-hd-group-cell",title:"",getColumnHeaders:function(){return this.grid.topAxis.buildHeaders()},getRowHeaders:function(){return this.grid.leftAxis.buildHeaders()},renderRows:function(a,t){var b=this.grid,o=b.extractData(),p=o.length,g=this.templates,s=b.renderer,h=typeof s=="function",w=this.getCellCls,n=typeof w=="function",d=g.cell,x=g.row,k=[],q={},c="width:"+this.getGridInnerWidth()+"px;",l,r,e,v,m;a=a||0;t=Ext.isDefined(t)?t:p-1;for(v=0;v<p;v++){m=o[v];r=m.length;l=[];for(var u=0;u<r;u++){q.id=v+"-"+u;q.css=u===0?"x-grid3-cell-first ":(u==(r-1)?"x-grid3-cell-last ":"");q.attr=q.cellAttr="";q.value=m[u];if(Ext.isEmpty(q.value)){q.value="&#160;"}if(h){q.value=s(q.value)}if(n){q.css+=w(q.value)+" "}l[l.length]=d.apply(q)}k[k.length]=x.apply({tstyle:c,cols:r,cells:l.join(""),alt:""})}return k.join("")},masterTpl:new Ext.Template('<div class="x-grid3 x-pivotgrid" hidefocus="true">','<div class="x-grid3-viewport">','<div class="x-grid3-header">','<div class="x-grid3-header-title"><span>{title}</span></div>','<div class="x-grid3-header-inner">','<div class="x-grid3-header-offset" style="{ostyle}"></div>',"</div>",'<div class="x-clear"></div>',"</div>",'<div class="x-grid3-scroller">','<div class="x-grid3-row-headers"></div>','<div class="x-grid3-body" style="{bstyle}">{body}</div>','<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',"</div>","</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>"),initTemplates:function(){Ext.grid.PivotGridView.superclass.initTemplates.apply(this,arguments);var a=this.templates||{};if(!a.gcell){a.gcell=new Ext.XTemplate('<td class="x-grid3-hd x-grid3-gcell x-grid3-td-{id} ux-grid-hd-group-row-{row} '+this.colHeaderCellCls+'" style="{style}">','<div {tooltip} class="x-grid3-hd-inner x-grid3-hd-{id} x-unselectable" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"","{value}","</div>","</td>")}this.templates=a;this.hrowRe=new RegExp("ux-grid-hd-group-row-(\\d+)","")},initElements:function(){Ext.grid.PivotGridView.superclass.initElements.apply(this,arguments);this.rowHeadersEl=new Ext.Element(this.scroller.child("div.x-grid3-row-headers"));this.headerTitleEl=new Ext.Element(this.mainHd.child("div.x-grid3-header-title"))},getGridInnerWidth:function(){var a=Ext.grid.PivotGridView.superclass.getGridInnerWidth.apply(this,arguments);return a-this.getTotalRowHeaderWidth()},getTotalRowHeaderWidth:function(){var d=this.getRowHeaders(),c=d.length,b=0,a;for(a=0;a<c;a++){b+=d[a].width}return b},getTotalColumnHeaderHeight:function(){return this.getColumnHeaders().length*21},getCellIndex:function(b){if(b){var a=b.className.match(this.colRe),c;if(a&&(c=a[1])){return parseInt(c.split("-")[1],10)}}return false},renderUI:function(){var b=this.templates,a=this.getGridInnerWidth();return b.master.apply({body:b.body.apply({rows:"&#160;"}),ostyle:"width:"+a+"px",bstyle:"width:"+a+"px"})},onLayout:function(b,a){Ext.grid.PivotGridView.superclass.onLayout.apply(this,arguments);var b=this.getGridInnerWidth();this.resizeColumnHeaders(b);this.resizeAllRows(b)},refresh:function(b){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var a=this.renderBody();this.mainBody.update(a).setWidth(this.getGridInnerWidth());if(b===true){this.updateHeaders();this.updateHeaderSortState()}this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this)},renderHeaders:Ext.emptyFn,fitColumns:Ext.emptyFn,resizeColumnHeaders:function(b){var a=this.grid.topAxis;if(a.rendered){a.el.setWidth(b)}},resizeRowHeaders:function(){var a=this.getTotalRowHeaderWidth(),b=String.format("margin-left: {0}px;",a);this.rowHeadersEl.setWidth(a);this.mainBody.applyStyles(b);Ext.fly(this.innerHd).applyStyles(b);this.headerTitleEl.setWidth(a);this.headerTitleEl.setHeight(this.getTotalColumnHeaderHeight())},resizeAllRows:function(b){var d=this.getRows(),c=d.length,a;for(a=0;a<c;a++){Ext.fly(d[a]).setWidth(b);Ext.fly(d[a]).child("table").setWidth(b)}},updateHeaders:function(){this.renderGroupRowHeaders();this.renderGroupColumnHeaders()},renderGroupRowHeaders:function(){var a=this.grid.leftAxis;this.resizeRowHeaders();a.rendered=false;a.render(this.rowHeadersEl);this.setTitle(this.title)},setTitle:function(a){this.headerTitleEl.child("span").dom.innerHTML=a},renderGroupColumnHeaders:function(){var a=this.grid.topAxis;a.rendered=false;a.render(this.innerHd.firstChild)},isMenuDisabled:function(a,b){return true}});Ext.grid.PivotAxis=Ext.extend(Ext.Component,{orientation:"horizontal",defaultHeaderWidth:80,paddingWidth:7,setDimensions:function(a){this.dimensions=a},onRender:function(b,a){var c=this.orientation=="horizontal"?this.renderHorizontalRows():this.renderVerticalRows();this.el=Ext.DomHelper.overwrite(b.dom,{tag:"table",cn:c},true)},renderHorizontalRows:function(){var k=this.buildHeaders(),a=k.length,g=[],c,h,e,d,b;for(d=0;d<a;d++){c=[];h=k[d].items;e=h.length;for(b=0;b<e;b++){c.push({tag:"td",html:h[b].header,colspan:h[b].span})}g[d]={tag:"tr",cn:c}}return g},renderVerticalRows:function(){var b=this.buildHeaders(),k=b.length,a=[],m=[],h,c,l,g,e,d;for(e=0;e<k;e++){c=b[e];g=c.width||80;h=c.items.length;for(d=0;d<h;d++){l=c.items[d];a[l.start]=a[l.start]||[];a[l.start].push({tag:"td",html:l.header,rowspan:l.span,width:Ext.isBorderBox?g:g-this.paddingWidth})}}h=a.length;for(e=0;e<h;e++){m[e]={tag:"tr",cn:a[e]}}return m},getTuples:function(){var b=new Ext.data.Store({});b.data=this.store.data.clone();b.fields=this.store.fields;var l=[],a=this.dimensions,c=a.length,j;for(j=0;j<c;j++){l.push({field:a[j].dataIndex,direction:a[j].direction||"ASC"})}b.sort(l);var e=b.data.items,n=[],k=[],o,h,d,g,m;c=e.length;for(j=0;j<c;j++){d=this.getRecordInfo(e[j]);g=d.data;h="";for(m in g){h+=g[m]+"---"}if(n.indexOf(h)==-1){n.push(h);k.push(d)}}b.destroy();return k},getRecordInfo:function(a){var e=this.dimensions,d=e.length,h={},j,c,b;for(b=0;b<d;b++){j=e[b];c=j.dataIndex;h[c]=a.get(c)}var g=function(i){return function(k){for(var l in i){if(k.get(l)!=i[l]){return false}}return true}};return{data:h,matcher:g(h)}},buildHeaders:function(){var l=this.getTuples(),m=l.length,a=this.dimensions,e,r=a.length,c=[],o,s,n,q,p,b,k,h,g,d;for(g=0;g<r;g++){e=a[g];s=[];p=0;b=0;for(d=0;d<m;d++){o=l[d];k=d==(m-1);n=o.data[e.dataIndex];h=q!=undefined&&q!=n;if(g>0&&d>0){h=h||o.data[a[g-1].dataIndex]!=l[d-1].data[a[g-1].dataIndex]}if(h){s.push({header:q,span:p,start:b});b+=p;p=0}if(k){s.push({header:n,span:p+1,start:b});b+=p;p=0}q=n;p++}c.push({items:s,width:e.width||this.defaultHeaderWidth});q=undefined}return c}});Ext.grid.HeaderDragZone=Ext.extend(Ext.dd.DragZone,{maxDragWidth:120,constructor:function(a,c,b){this.grid=a;this.view=a.getView();this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDragZone.superclass.constructor.call(this,c);if(b){this.setHandleElId(Ext.id(c));this.setOuterHandleElId(Ext.id(b))}this.scroll=false},getDragData:function(c){var a=Ext.lib.Event.getTarget(c),b=this.view.findHeaderCell(a);if(b){return{ddel:b.firstChild,header:b}}return false},onInitDrag:function(a){this.dragHeadersDisabled=this.view.headersDisabled;this.view.headersDisabled=true;var b=this.dragData.ddel.cloneNode(true);b.id=Ext.id();b.style.width=Math.min(this.dragData.header.offsetWidth,this.maxDragWidth)+"px";this.proxy.update(b);return true},afterValidDrop:function(){this.completeDrop()},afterInvalidDrop:function(){this.completeDrop()},completeDrop:function(){var a=this.view,b=this.dragHeadersDisabled;setTimeout(function(){a.headersDisabled=b},50)}});Ext.grid.HeaderDropZone=Ext.extend(Ext.dd.DropZone,{proxyOffsets:[-4,-9],fly:Ext.Element.fly,constructor:function(a,c,b){this.grid=a;this.view=a.getView();this.proxyTop=Ext.DomHelper.append(document.body,{cls:"col-move-top",html:"&#160;"},true);this.proxyBottom=Ext.DomHelper.append(document.body,{cls:"col-move-bottom",html:"&#160;"},true);this.proxyTop.hide=this.proxyBottom.hide=function(){this.setLeftTop(-100,-100);this.setStyle("visibility","hidden")};this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDropZone.superclass.constructor.call(this,a.getGridEl().dom)},getTargetFromEvent:function(c){var a=Ext.lib.Event.getTarget(c),b=this.view.findCellIndex(a);if(b!==false){return this.view.getHeaderCell(b)}},nextVisible:function(c){var b=this.view,a=this.grid.colModel;c=c.nextSibling;while(c){if(!a.isHidden(b.getCellIndex(c))){return c}c=c.nextSibling}return null},prevVisible:function(c){var b=this.view,a=this.grid.colModel;c=c.prevSibling;while(c){if(!a.isHidden(b.getCellIndex(c))){return c}c=c.prevSibling}return null},positionIndicator:function(d,k,j){var a=Ext.lib.Event.getPageX(j),g=Ext.lib.Dom.getRegion(k.firstChild),c,i,b=g.top+this.proxyOffsets[1];if((g.right-a)<=(g.right-g.left)/2){c=g.right+this.view.borderWidth;i="after"}else{c=g.left;i="before"}if(this.grid.colModel.isFixed(this.view.getCellIndex(k))){return false}c+=this.proxyOffsets[0];this.proxyTop.setLeftTop(c,b);this.proxyTop.show();if(!this.bottomOffset){this.bottomOffset=this.view.mainHd.getHeight()}this.proxyBottom.setLeftTop(c,b+this.proxyTop.dom.offsetHeight+this.bottomOffset);this.proxyBottom.show();return i},onNodeEnter:function(d,a,c,b){if(b.header!=d){this.positionIndicator(b.header,d,c)}},onNodeOver:function(g,b,d,c){var a=false;if(c.header!=g){a=this.positionIndicator(c.header,g,d)}if(!a){this.proxyTop.hide();this.proxyBottom.hide()}return a?this.dropAllowed:this.dropNotAllowed},onNodeOut:function(d,a,c,b){this.proxyTop.hide();this.proxyBottom.hide()},onNodeDrop:function(b,m,g,c){var d=c.header;if(d!=b){var k=this.grid.colModel,j=Ext.lib.Event.getPageX(g),a=Ext.lib.Dom.getRegion(b.firstChild),o=(a.right-j)<=((a.right-a.left)/2)?"after":"before",i=this.view.getCellIndex(d),l=this.view.getCellIndex(b);if(o=="after"){l++}if(i<l){l--}k.moveColumn(i,l);return true}return false}});Ext.grid.GridView.ColumnDragZone=Ext.extend(Ext.grid.HeaderDragZone,{constructor:function(a,b){Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this,a,b,null);this.proxy.el.addClass("x-grid3-col-dd")},handleMouseDown:function(a){},callHandleMouseDown:function(a){Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this,a)}});Ext.grid.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{fly:Ext.Element.fly,constructor:function(a,c,b){this.grid=a;this.view=a.getView();this.proxy=this.view.resizeProxy;Ext.grid.SplitDragZone.superclass.constructor.call(this,c,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.setHandleElId(Ext.id(c));this.setOuterHandleElId(Ext.id(b));this.scroll=false},b4StartDrag:function(a,d){this.view.headersDisabled=true;this.proxy.setHeight(this.view.mainWrap.getHeight());var b=this.cm.getColumnWidth(this.cellIndex);var c=Math.max(b-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(c,1000);this.setYConstraint(0,0);this.minX=a-c;this.maxX=a+1000;this.startPos=a;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,a,d)},handleMouseDown:function(c){var b=Ext.EventObject.setEvent(c);var a=this.fly(b.getTarget());if(a.hasClass("x-grid-split")){this.cellIndex=this.view.getCellIndex(a.dom);this.split=a.dom;this.cm=this.grid.colModel;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)}}},endDrag:function(c){this.view.headersDisabled=false;var a=Math.max(this.minX,Ext.lib.Event.getPageX(c));var b=a-this.startPos;this.view.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+b)},autoOffset:function(){this.setDelta(0,0)}});Ext.grid.GridDragZone=function(b,a){this.view=b.getView();Ext.grid.GridDragZone.superclass.constructor.call(this,this.view.mainBody.dom,a);this.scroll=false;this.grid=b;this.ddel=document.createElement("div");this.ddel.className="x-grid-dd-wrap";this.preventDefault=true};Ext.extend(Ext.grid.GridDragZone,Ext.dd.DragZone,{ddGroup:"GridDD",getDragData:function(g){var c=Ext.lib.Event.getTarget(g),i,h=this.view.findRowIndex(c),b,a,d;if(h!==false){i=this.grid.selModel;if(i.getSelectedCell){b=this.view.findCellIndex(c);a=i.getSelectedCell();if(!a||a[0]!==h||a[1]!==b){i.handleMouseDown(this.grid,h,b,g)}if(this.grid.dragCell){d=i.getSelectedCell();if(!this.grid.hasOwnProperty("ddText")){this.grid.ddText="{0} selected cell{1}"}}else{d=[this.grid.store.getAt(h)]}}else{if(!i.isSelected(h)||g.hasModifier()){i.handleMouseDown(this.grid,h,g)}d=i.getSelections()}return{grid:this.grid,ddel:this.ddel,rowIndex:h,selections:d}}return false},onInitDrag:function(b){var a=this.dragData;this.ddel.innerHTML=this.grid.getDragDropText();this.proxy.update(this.ddel)},afterRepair:function(){this.dragging=false},getRepairXY:function(b,a){return false},onEndDrag:function(a,b){},onValidDrop:function(a,b,c){this.hideProxy()},beforeInvalidDrop:function(a,b){}});Ext.grid.ColumnModel=Ext.extend(Ext.util.Observable,{defaultWidth:100,defaultSortable:false,constructor:function(a){if(a.columns){Ext.apply(this,a);this.setConfig(a.columns,true)}else{this.setConfig(a,true)}this.addEvents("widthchange","headerchange","hiddenchange","columnmoved","configchange");Ext.grid.ColumnModel.superclass.constructor.call(this)},getColumnId:function(a){return this.config[a].id},getColumnAt:function(a){return this.config[a]},setConfig:function(d,b){var e,h,a;if(!b){delete this.totalWidth;for(e=0,a=this.config.length;e<a;e++){h=this.config[e];if(h.setEditor){h.setEditor(null)}}}this.defaults=Ext.apply({width:this.defaultWidth,sortable:this.defaultSortable},this.defaults);this.config=d;this.lookup={};for(e=0,a=d.length;e<a;e++){h=Ext.applyIf(d[e],this.defaults);if(Ext.isEmpty(h.id)){h.id=e}if(!h.isColumn){var g=Ext.grid.Column.types[h.xtype||"gridcolumn"];h=new g(h);d[e]=h}this.lookup[h.id]=h}if(!b){this.fireEvent("configchange",this)}},getColumnById:function(a){return this.lookup[a]},getIndexById:function(c){for(var b=0,a=this.config.length;b<a;b++){if(this.config[b].id==c){return b}}return -1},moveColumn:function(e,b){var a=this.config,d=a[e];a.splice(e,1);a.splice(b,0,d);this.dataMap=null;this.fireEvent("columnmoved",this,e,b)},getColumnCount:function(b){var d=this.config.length,e=0,a;if(b===true){for(a=0;a<d;a++){if(!this.isHidden(a)){e++}}return e}return d},getColumnsBy:function(g,e){var b=this.config,h=b.length,a=[],d,j;for(d=0;d<h;d++){j=b[d];if(g.call(e||this,j,d)===true){a[a.length]=j}}return a},isSortable:function(a){return !!this.config[a].sortable},isMenuDisabled:function(a){return !!this.config[a].menuDisabled},getRenderer:function(a){return this.config[a].renderer||Ext.grid.ColumnModel.defaultRenderer},getRendererScope:function(a){return this.config[a].scope},setRenderer:function(a,b){this.config[a].renderer=b},getColumnWidth:function(a){var b=this.config[a].width;if(typeof b!="number"){b=this.defaultWidth}return b},setColumnWidth:function(b,c,a){this.config[b].width=c;this.totalWidth=null;if(!a){this.fireEvent("widthchange",this,b,c)}},getTotalWidth:function(b){if(!this.totalWidth){this.totalWidth=0;for(var c=0,a=this.config.length;c<a;c++){if(b||!this.isHidden(c)){this.totalWidth+=this.getColumnWidth(c)}}}return this.totalWidth},getColumnHeader:function(a){return this.config[a].header},setColumnHeader:function(a,b){this.config[a].header=b;this.fireEvent("headerchange",this,a,b)},getColumnTooltip:function(a){return this.config[a].tooltip},setColumnTooltip:function(a,b){this.config[a].tooltip=b},getDataIndex:function(a){return this.config[a].dataIndex},setDataIndex:function(a,b){this.config[a].dataIndex=b},findColumnIndex:function(d){var e=this.config;for(var b=0,a=e.length;b<a;b++){if(e[b].dataIndex==d){return b}}return -1},isCellEditable:function(b,e){var d=this.config[b],a=d.editable;return !!(a||(!Ext.isDefined(a)&&d.editor))},getCellEditor:function(a,b){return this.config[a].getCellEditor(b)},setEditable:function(a,b){this.config[a].editable=b},isHidden:function(a){return !!this.config[a].hidden},isFixed:function(a){return !!this.config[a].fixed},isResizable:function(a){return a>=0&&this.config[a].resizable!==false&&this.config[a].fixed!==true},setHidden:function(a,b){var d=this.config[a];if(d.hidden!==b){d.hidden=b;this.totalWidth=null;this.fireEvent("hiddenchange",this,a,b)}},setEditor:function(a,b){this.config[a].setEditor(b)},destroy:function(){var b=this.config.length,a=0;for(;a<b;a++){this.config[a].destroy()}delete this.config;delete this.lookup;this.purgeListeners()},setState:function(a,b){b=Ext.applyIf(b,this.defaults);Ext.apply(this.config[a],b)}});Ext.grid.ColumnModel.defaultRenderer=function(a){if(typeof a=="string"&&a.length<1){return"&#160;"}return a};Ext.grid.AbstractSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(){this.locked=false;Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)},init:function(a){this.grid=a;if(this.lockOnInit){delete this.lockOnInit;this.locked=false;this.lock()}this.initEvents()},lock:function(){if(!this.locked){this.locked=true;var a=this.grid;if(a){a.getView().on({scope:this,beforerefresh:this.sortUnLock,refresh:this.sortLock})}else{this.lockOnInit=true}}},sortLock:function(){this.locked=true},sortUnLock:function(){this.locked=false},unlock:function(){if(this.locked){this.locked=false;var a=this.grid,b;if(a){b=a.getView();b.un("beforerefresh",this.sortUnLock,this);b.un("refresh",this.sortLock,this)}else{delete this.lockOnInit}}},isLocked:function(){return this.locked},destroy:function(){this.unlock();this.purgeListeners()}});Ext.grid.RowSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{singleSelect:false,constructor:function(a){Ext.apply(this,a);this.selections=new Ext.util.MixedCollection(false,function(b){return b.id});this.last=false;this.lastActive=false;this.addEvents("selectionchange","beforerowselect","rowselect","rowdeselect");Ext.grid.RowSelectionModel.superclass.constructor.call(this)},initEvents:function(){if(!this.grid.enableDragDrop&&!this.grid.enableDrag){this.grid.on("rowmousedown",this.handleMouseDown,this)}this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{up:this.onKeyPress,down:this.onKeyPress,scope:this});this.grid.getView().on({scope:this,refresh:this.onRefresh,rowupdated:this.onRowUpdated,rowremoved:this.onRemove})},onKeyPress:function(g,b){var a=b=="up",h=a?"selectPrevious":"selectNext",d=a?-1:1,c;if(!g.shiftKey||this.singleSelect){this[h](false)}else{if(this.last!==false&&this.lastActive!==false){c=this.last;this.selectRange(this.last,this.lastActive+d);this.grid.getView().focusRow(this.lastActive);if(c!==false){this.last=c}}else{this.selectFirstRow()}}},onRefresh:function(){var g=this.grid.store,d=this.getSelections(),c=0,a=d.length,b,e;this.silent=true;this.clearSelections(true);for(;c<a;c++){e=d[c];if((b=g.indexOfId(e.id))!=-1){this.selectRow(b,true)}}if(d.length!=this.selections.getCount()){this.fireEvent("selectionchange",this)}this.silent=false},onRemove:function(a,b,c){if(this.selections.remove(c)!==false){this.fireEvent("selectionchange",this)}},onRowUpdated:function(a,b,c){if(this.isSelected(c)){a.onRowSelect(b)}},selectRecords:function(b,e){if(!e){this.clearSelections()}var d=this.grid.store,c=0,a=b.length;for(;c<a;c++){this.selectRow(d.indexOf(b[c]),true)}},getCount:function(){return this.selections.length},selectFirstRow:function(){this.selectRow(0)},selectLastRow:function(a){this.selectRow(this.grid.store.getCount()-1,a)},selectNext:function(a){if(this.hasNext()){this.selectRow(this.last+1,a);this.grid.getView().focusRow(this.last);return true}return false},selectPrevious:function(a){if(this.hasPrevious()){this.selectRow(this.last-1,a);this.grid.getView().focusRow(this.last);return true}return false},hasNext:function(){return this.last!==false&&(this.last+1)<this.grid.store.getCount()},hasPrevious:function(){return !!this.last},getSelections:function(){return[].concat(this.selections.items)},getSelected:function(){return this.selections.itemAt(0)},each:function(e,d){var c=this.getSelections(),b=0,a=c.length;for(;b<a;b++){if(e.call(d||this,c[b],b)===false){return false}}return true},clearSelections:function(a){if(this.isLocked()){return}if(a!==true){var c=this.grid.store,b=this.selections;b.each(function(d){this.deselectRow(c.indexOfId(d.id))},this);b.clear()}else{this.selections.clear()}this.last=false},selectAll:function(){if(this.isLocked()){return}this.selections.clear();for(var b=0,a=this.grid.store.getCount();b<a;b++){this.selectRow(b,true)}},hasSelection:function(){return this.selections.length>0},isSelected:function(a){var b=Ext.isNumber(a)?this.grid.store.getAt(a):a;return(b&&this.selections.key(b.id)?true:false)},isIdSelected:function(a){return(this.selections.key(a)?true:false)},handleMouseDown:function(d,i,h){if(h.button!==0||this.isLocked()){return}var a=this.grid.getView();if(h.shiftKey&&!this.singleSelect&&this.last!==false){var c=this.last;this.selectRange(c,i,h.ctrlKey);this.last=c;a.focusRow(i)}else{var b=this.isSelected(i);if(h.ctrlKey&&b){this.deselectRow(i)}else{if(!b||this.getCount()>1){this.selectRow(i,h.ctrlKey||h.shiftKey);a.focusRow(i)}}}},selectRows:function(c,d){if(!d){this.clearSelections()}for(var b=0,a=c.length;b<a;b++){this.selectRow(c[b],true)}},selectRange:function(b,a,d){var c;if(this.isLocked()){return}if(!d){this.clearSelections()}if(b<=a){for(c=b;c<=a;c++){this.selectRow(c,true)}}else{for(c=b;c>=a;c--){this.selectRow(c,true)}}},deselectRange:function(c,b,a){if(this.isLocked()){return}for(var d=c;d<=b;d++){this.deselectRow(d,a)}},selectRow:function(b,d,a){if(this.isLocked()||(b<0||b>=this.grid.store.getCount())||(d&&this.isSelected(b))){return}var c=this.grid.store.getAt(b);if(c&&this.fireEvent("beforerowselect",this,b,d,c)!==false){if(!d||this.singleSelect){this.clearSelections()}this.selections.add(c);this.last=this.lastActive=b;if(!a){this.grid.getView().onRowSelect(b)}if(!this.silent){this.fireEvent("rowselect",this,b,c);this.fireEvent("selectionchange",this)}}},deselectRow:function(b,a){if(this.isLocked()){return}if(this.last==b){this.last=false}if(this.lastActive==b){this.lastActive=false}var c=this.grid.store.getAt(b);if(c){this.selections.remove(c);if(!a){this.grid.getView().onRowDeselect(b)}this.fireEvent("rowdeselect",this,b,c);this.fireEvent("selectionchange",this)}},acceptsNav:function(c,b,a){return !a.isHidden(b)&&a.isCellEditable(b,c)},onEditorKey:function(n,l){var d=l.getKey(),h,i=this.grid,p=i.lastEdit,j=i.activeEditor,b=l.shiftKey,o,p,a,m;if(d==l.TAB){l.stopEvent();j.completeEdit();if(b){h=i.walkCells(j.row,j.col-1,-1,this.acceptsNav,this)}else{h=i.walkCells(j.row,j.col+1,1,this.acceptsNav,this)}}else{if(d==l.ENTER){if(this.moveEditorOnEnter!==false){if(b){h=i.walkCells(p.row-1,p.col,-1,this.acceptsNav,this)}else{h=i.walkCells(p.row+1,p.col,1,this.acceptsNav,this)}}}}if(h){a=h[0];m=h[1];this.onEditorSelect(a,p.row);if(i.isEditor&&i.editing){o=i.activeEditor;if(o&&o.field.triggerBlur){o.field.triggerBlur()}}i.startEditing(a,m)}},onEditorSelect:function(b,a){if(a!=b){this.selectRow(b)}},destroy:function(){Ext.destroy(this.rowNav);this.rowNav=null;Ext.grid.RowSelectionModel.superclass.destroy.call(this)}});Ext.grid.Column=Ext.extend(Ext.util.Observable,{isColumn:true,constructor:function(b){Ext.apply(this,b);if(Ext.isString(this.renderer)){this.renderer=Ext.util.Format[this.renderer]}else{if(Ext.isObject(this.renderer)){this.scope=this.renderer.scope;this.renderer=this.renderer.fn}}if(!this.scope){this.scope=this}var a=this.editor;delete this.editor;this.setEditor(a);this.addEvents("click","contextmenu","dblclick","mousedown");Ext.grid.Column.superclass.constructor.call(this)},processEvent:function(b,d,c,g,a){return this.fireEvent(b,this,c,g,d)},destroy:function(){if(this.setEditor){this.setEditor(null)}this.purgeListeners()},renderer:function(a){return a},getEditor:function(a){return this.editable!==false?this.editor:null},setEditor:function(b){var a=this.editor;if(a){if(a.gridEditor){a.gridEditor.destroy();delete a.gridEditor}else{a.destroy()}}this.editor=null;if(b){if(!b.isXType){b=Ext.create(b,"textfield")}this.editor=b}},getCellEditor:function(b){var a=this.getEditor(b);if(a){if(!a.startEdit){if(!a.gridEditor){a.gridEditor=new Ext.grid.GridEditor(a)}a=a.gridEditor}}return a}});Ext.grid.BooleanColumn=Ext.extend(Ext.grid.Column,{trueText:"true",falseText:"false",undefinedText:"&#160;",constructor:function(a){Ext.grid.BooleanColumn.superclass.constructor.call(this,a);var c=this.trueText,d=this.falseText,b=this.undefinedText;this.renderer=function(e){if(e===undefined){return b}if(!e||e==="false"){return d}return c}}});Ext.grid.NumberColumn=Ext.extend(Ext.grid.Column,{format:"0,000.00",constructor:function(a){Ext.grid.NumberColumn.superclass.constructor.call(this,a);this.renderer=Ext.util.Format.numberRenderer(this.format)}});Ext.grid.DateColumn=Ext.extend(Ext.grid.Column,{format:"m/d/Y",constructor:function(a){Ext.grid.DateColumn.superclass.constructor.call(this,a);this.renderer=Ext.util.Format.dateRenderer(this.format)}});Ext.grid.TemplateColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){Ext.grid.TemplateColumn.superclass.constructor.call(this,a);var b=(!Ext.isPrimitive(this.tpl)&&this.tpl.compile)?this.tpl:new Ext.XTemplate(this.tpl);this.renderer=function(d,e,c){return b.apply(c.data)};this.tpl=b}});Ext.grid.ActionColumn=Ext.extend(Ext.grid.Column,{header:"&#160;",actionIdRe:/x-action-col-(\d+)/,altText:"",constructor:function(b){var g=this,c=b.items||(g.items=[g]),a=c.length,d,e;Ext.grid.ActionColumn.superclass.constructor.call(g,b);g.renderer=function(h,i){h=Ext.isFunction(b.renderer)?b.renderer.apply(this,arguments)||"":"";i.css+=" x-action-col-cell";for(d=0;d<a;d++){e=c[d];h+='<img alt="'+(e.altText||g.altText)+'" src="'+(e.icon||Ext.BLANK_IMAGE_URL)+'" class="x-action-col-icon x-action-col-'+String(d)+" "+(e.iconCls||"")+" "+(Ext.isFunction(e.getClass)?e.getClass.apply(e.scope||this.scope||this,arguments):"")+'"'+((e.tooltip)?' ext:qtip="'+e.tooltip+'"':"")+" />"}return h}},destroy:function(){delete this.items;delete this.renderer;return Ext.grid.ActionColumn.superclass.destroy.apply(this,arguments)},processEvent:function(c,i,d,j,b){var a=i.getTarget().className.match(this.actionIdRe),h,g;if(a&&(h=this.items[parseInt(a[1],10)])){if(c=="click"){(g=h.handler||this.handler)&&g.call(h.scope||this.scope||this,d,j,b,h,i)}else{if((c=="mousedown")&&(h.stopSelection!==false)){return false}}}return Ext.grid.ActionColumn.superclass.processEvent.apply(this,arguments)}});Ext.grid.Column.types={gridcolumn:Ext.grid.Column,booleancolumn:Ext.grid.BooleanColumn,numbercolumn:Ext.grid.NumberColumn,datecolumn:Ext.grid.DateColumn,templatecolumn:Ext.grid.TemplateColumn,actioncolumn:Ext.grid.ActionColumn};Ext.grid.RowNumberer=Ext.extend(Object,{header:"",width:23,sortable:false,constructor:function(a){Ext.apply(this,a);if(this.rowspan){this.renderer=this.renderer.createDelegate(this)}},fixed:true,hideable:false,menuDisabled:true,dataIndex:"",id:"numberer",rowspan:undefined,renderer:function(b,c,a,d){if(this.rowspan){c.cellAttr='rowspan="'+this.rowspan+'"'}return d+1}});Ext.grid.CheckboxSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,{header:'<div class="x-grid3-hd-checker">&#160;</div>',width:20,sortable:false,menuDisabled:true,fixed:true,hideable:false,dataIndex:"",id:"checker",isColumn:true,constructor:function(){Ext.grid.CheckboxSelectionModel.superclass.constructor.apply(this,arguments);if(this.checkOnly){this.handleMouseDown=Ext.emptyFn}},initEvents:function(){Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on("render",function(){Ext.fly(this.grid.getView().innerHd).on("mousedown",this.onHdMouseDown,this)},this)},processEvent:function(b,d,c,g,a){if(b=="mousedown"){this.onMouseDown(d,d.getTarget());return false}else{return Ext.grid.Column.prototype.processEvent.apply(this,arguments)}},onMouseDown:function(c,b){if(c.button===0&&b.className=="x-grid3-row-checker"){c.stopEvent();var d=c.getTarget(".x-grid3-row");if(d){var a=d.rowIndex;if(this.isSelected(a)){this.deselectRow(a)}else{this.selectRow(a,true);this.grid.getView().focusRow(a)}}}},onHdMouseDown:function(c,a){if(a.className=="x-grid3-hd-checker"){c.stopEvent();var b=Ext.fly(a.parentNode);var d=b.hasClass("x-grid3-hd-checker-on");if(d){b.removeClass("x-grid3-hd-checker-on");this.clearSelections()}else{b.addClass("x-grid3-hd-checker-on");this.selectAll()}}},renderer:function(b,c,a){return'<div class="x-grid3-row-checker">&#160;</div>'},onEditorSelect:function(b,a){if(a!=b&&!this.checkOnly){this.selectRow(b)}}});Ext.grid.CellSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{constructor:function(a){Ext.apply(this,a);this.selection=null;this.addEvents("beforecellselect","cellselect","selectionchange");Ext.grid.CellSelectionModel.superclass.constructor.call(this)},initEvents:function(){this.grid.on("cellmousedown",this.handleMouseDown,this);this.grid.on(Ext.EventManager.getKeyEvent(),this.handleKeyDown,this);this.grid.getView().on({scope:this,refresh:this.onViewChange,rowupdated:this.onRowUpdated,beforerowremoved:this.clearSelections,beforerowsinserted:this.clearSelections});if(this.grid.isEditor){this.grid.on("beforeedit",this.beforeEdit,this)}},beforeEdit:function(a){this.select(a.row,a.column,false,true,a.record)},onRowUpdated:function(a,b,c){if(this.selection&&this.selection.record==c){a.onCellSelect(b,this.selection.cell[1])}},onViewChange:function(){this.clearSelections(true)},getSelectedCell:function(){return this.selection?this.selection.cell:null},clearSelections:function(b){var a=this.selection;if(a){if(b!==true){this.grid.view.onCellDeselect(a.cell[0],a.cell[1])}this.selection=null;this.fireEvent("selectionchange",this,null)}},hasSelection:function(){return this.selection?true:false},handleMouseDown:function(b,d,a,c){if(c.button!==0||this.isLocked()){return}this.select(d,a)},select:function(g,c,b,e,d){if(this.fireEvent("beforecellselect",this,g,c)!==false){this.clearSelections();d=d||this.grid.store.getAt(g);this.selection={record:d,cell:[g,c]};if(!b){var a=this.grid.getView();a.onCellSelect(g,c);if(e!==true){a.focusCell(g,c)}}this.fireEvent("cellselect",this,g,c);this.fireEvent("selectionchange",this,this.selection)}},isSelectable:function(c,b,a){return !a.isHidden(b)},onEditorKey:function(b,a){if(a.getKey()==a.TAB){this.handleKeyDown(a)}},handleKeyDown:function(j){if(!j.isNavKeyPress()){return}var d=j.getKey(),i=this.grid,p=this.selection,b=this,m=function(g,c,e){return i.walkCells(g,c,e,i.isEditor&&i.editing?b.acceptsNav:b.isSelectable,b)},o,h,a,l,n;switch(d){case j.ESC:case j.PAGE_UP:case j.PAGE_DOWN:break;default:j.stopEvent();break}if(!p){o=m(0,0,1);if(o){this.select(o[0],o[1])}return}o=p.cell;a=o[0];l=o[1];switch(d){case j.TAB:if(j.shiftKey){h=m(a,l-1,-1)}else{h=m(a,l+1,1)}break;case j.DOWN:h=m(a+1,l,1);break;case j.UP:h=m(a-1,l,-1);break;case j.RIGHT:h=m(a,l+1,1);break;case j.LEFT:h=m(a,l-1,-1);break;case j.ENTER:if(i.isEditor&&!i.editing){i.startEditing(a,l);return}break}if(h){a=h[0];l=h[1];this.select(a,l);if(i.isEditor&&i.editing){n=i.activeEditor;if(n&&n.field.triggerBlur){n.field.triggerBlur()}i.startEditing(a,l)}}},acceptsNav:function(c,b,a){return !a.isHidden(b)&&a.isCellEditable(b,c)}});Ext.grid.EditorGridPanel=Ext.extend(Ext.grid.GridPanel,{clicksToEdit:2,forceValidation:false,isEditor:true,detectEdit:false,autoEncode:false,trackMouseOver:false,initComponent:function(){Ext.grid.EditorGridPanel.superclass.initComponent.call(this);if(!this.selModel){this.selModel=new Ext.grid.CellSelectionModel()}this.activeEditor=null;this.addEvents("beforeedit","afteredit","validateedit")},initEvents:function(){Ext.grid.EditorGridPanel.superclass.initEvents.call(this);this.getGridEl().on("mousewheel",this.stopEditing.createDelegate(this,[true]),this);this.on("columnresize",this.stopEditing,this,[true]);if(this.clicksToEdit==1){this.on("cellclick",this.onCellDblClick,this)}else{var a=this.getView();if(this.clicksToEdit=="auto"&&a.mainBody){a.mainBody.on("mousedown",this.onAutoEditClick,this)}this.on("celldblclick",this.onCellDblClick,this)}},onResize:function(){Ext.grid.EditorGridPanel.superclass.onResize.apply(this,arguments);var a=this.activeEditor;if(this.editing&&a){a.realign(true)}},onCellDblClick:function(b,c,a){this.startEditing(c,a)},onAutoEditClick:function(c,b){if(c.button!==0){return}var g=this.view.findRowIndex(b),a=this.view.findCellIndex(b);if(g!==false&&a!==false){this.stopEditing();if(this.selModel.getSelectedCell){var d=this.selModel.getSelectedCell();if(d&&d[0]===g&&d[1]===a){this.startEditing(g,a)}}else{if(this.selModel.isSelected(g)){this.startEditing(g,a)}}}},onEditComplete:function(b,d,a){this.editing=false;this.lastActiveEditor=this.activeEditor;this.activeEditor=null;var c=b.record,h=this.colModel.getDataIndex(b.col);d=this.postEditValue(d,a,c,h);if(this.forceValidation===true||String(d)!==String(a)){var g={grid:this,record:c,field:h,originalValue:a,value:d,row:b.row,column:b.col,cancel:false};if(this.fireEvent("validateedit",g)!==false&&!g.cancel&&String(d)!==String(a)){c.set(h,g.value);delete g.cancel;this.fireEvent("afteredit",g)}}this.view.focusCell(b.row,b.col)},startEditing:function(i,c){this.stopEditing();if(this.colModel.isCellEditable(c,i)){this.view.ensureVisible(i,c,true);var d=this.store.getAt(i),h=this.colModel.getDataIndex(c),g={grid:this,record:d,field:h,value:d.data[h],row:i,column:c,cancel:false};if(this.fireEvent("beforeedit",g)!==false&&!g.cancel){this.editing=true;var b=this.colModel.getCellEditor(c,i);if(!b){return}if(!b.rendered){b.parentEl=this.view.getEditorParent(b);b.on({scope:this,render:{fn:function(e){e.field.focus(false,true)},single:true,scope:this},specialkey:function(k,j){this.getSelectionModel().onEditorKey(k,j)},complete:this.onEditComplete,canceledit:this.stopEditing.createDelegate(this,[true])})}Ext.apply(b,{row:i,col:c,record:d});this.lastEdit={row:i,col:c};this.activeEditor=b;if(b.field.isXType("checkbox")){b.allowBlur=false;this.setupCheckbox(b.field)}b.selectSameEditor=(this.activeEditor==this.lastActiveEditor);var a=this.preEditValue(d,h);b.startEdit(this.view.getCell(i,c).firstChild,Ext.isDefined(a)?a:"");(function(){delete b.selectSameEditor}).defer(50)}}},setupCheckbox:function(c){var b=this,a=function(){c.el.on("click",b.onCheckClick,b,{single:true})};if(c.rendered){a()}else{c.on("render",a,null,{single:true})}},onCheckClick:function(){var a=this.activeEditor;a.allowBlur=true;a.field.focus(false,10)},preEditValue:function(a,c){var b=a.data[c];return this.autoEncode&&Ext.isString(b)?Ext.util.Format.htmlDecode(b):b},postEditValue:function(c,a,b,d){return this.autoEncode&&Ext.isString(c)?Ext.util.Format.htmlEncode(c):c},stopEditing:function(b){if(this.editing){var a=this.lastActiveEditor=this.activeEditor;if(a){a[b===true?"cancelEdit":"completeEdit"]();this.view.focusCell(a.row,a.col)}this.activeEditor=null}this.editing=false}});Ext.reg("editorgrid",Ext.grid.EditorGridPanel);Ext.grid.GridEditor=function(b,a){Ext.grid.GridEditor.superclass.constructor.call(this,b,a);b.monitorTab=false};Ext.extend(Ext.grid.GridEditor,Ext.Editor,{alignment:"tl-tl",autoSize:"width",hideEl:false,cls:"x-small-editor x-grid-editor",shim:false,shadow:false});Ext.grid.PropertyRecord=Ext.data.Record.create([{name:"name",type:"string"},"value"]);Ext.grid.PropertyStore=Ext.extend(Ext.util.Observable,{constructor:function(a,b){this.grid=a;this.store=new Ext.data.Store({recordType:Ext.grid.PropertyRecord});this.store.on("update",this.onUpdate,this);if(b){this.setSource(b)}Ext.grid.PropertyStore.superclass.constructor.call(this)},setSource:function(c){this.source=c;this.store.removeAll();var b=[];for(var a in c){if(this.isEditableValue(c[a])){b.push(new Ext.grid.PropertyRecord({name:a,value:c[a]},a))}}this.store.loadRecords({records:b},{},true)},onUpdate:function(e,a,d){if(d==Ext.data.Record.EDIT){var b=a.data.value;var c=a.modified.value;if(this.grid.fireEvent("beforepropertychange",this.source,a.id,b,c)!==false){this.source[a.id]=b;a.commit();this.grid.fireEvent("propertychange",this.source,a.id,b,c)}else{a.reject()}}},getProperty:function(a){return this.store.getAt(a)},isEditableValue:function(a){return Ext.isPrimitive(a)||Ext.isDate(a)},setValue:function(d,c,a){var b=this.getRec(d);if(b){b.set("value",c);this.source[d]=c}else{if(a){this.source[d]=c;b=new Ext.grid.PropertyRecord({name:d,value:c},d);this.store.add(b)}}},remove:function(b){var a=this.getRec(b);if(a){this.store.remove(a);delete this.source[b]}},getRec:function(a){return this.store.getById(a)},getSource:function(){return this.source}});Ext.grid.PropertyColumnModel=Ext.extend(Ext.grid.ColumnModel,{nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",trueText:"true",falseText:"false",constructor:function(c,b){var d=Ext.grid,e=Ext.form;this.grid=c;d.PropertyColumnModel.superclass.constructor.call(this,[{header:this.nameText,width:50,sortable:true,dataIndex:"name",id:"name",menuDisabled:true},{header:this.valueText,width:50,resizable:false,dataIndex:"value",id:"value",menuDisabled:true}]);this.store=b;var a=new e.Field({autoCreate:{tag:"select",children:[{tag:"option",value:"true",html:this.trueText},{tag:"option",value:"false",html:this.falseText}]},getValue:function(){return this.el.dom.value=="true"}});this.editors={date:new d.GridEditor(new e.DateField({selectOnFocus:true})),string:new d.GridEditor(new e.TextField({selectOnFocus:true})),number:new d.GridEditor(new e.NumberField({selectOnFocus:true,style:"text-align:left;"})),"boolean":new d.GridEditor(a,{autoSize:"both"})};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this)},renderDate:function(a){return a.dateFormat(this.dateFormat)},renderBool:function(a){return this[a?"trueText":"falseText"]},isCellEditable:function(a,b){return a==1},getRenderer:function(a){return a==1?this.renderCellDelegate:this.renderPropDelegate},renderProp:function(a){return this.getPropertyName(a)},renderCell:function(d,b,c){var a=this.grid.customRenderers[c.get("name")];if(a){return a.apply(this,arguments)}var e=d;if(Ext.isDate(d)){e=this.renderDate(d)}else{if(typeof d=="boolean"){e=this.renderBool(d)}}return Ext.util.Format.htmlEncode(e)},getPropertyName:function(b){var a=this.grid.propertyNames;return a&&a[b]?a[b]:b},getCellEditor:function(a,e){var b=this.store.getProperty(e),d=b.data.name,c=b.data.value;if(this.grid.customEditors[d]){return this.grid.customEditors[d]}if(Ext.isDate(c)){return this.editors.date}else{if(typeof c=="number"){return this.editors.number}else{if(typeof c=="boolean"){return this.editors["boolean"]}else{return this.editors.string}}}},destroy:function(){Ext.grid.PropertyColumnModel.superclass.destroy.call(this);this.destroyEditors(this.editors);this.destroyEditors(this.grid.customEditors)},destroyEditors:function(b){for(var a in b){Ext.destroy(b[a])}}});Ext.grid.PropertyGrid=Ext.extend(Ext.grid.EditorGridPanel,{enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,viewConfig:{forceFit:true},initComponent:function(){this.customRenderers=this.customRenderers||{};this.customEditors=this.customEditors||{};this.lastEditRow=null;var b=new Ext.grid.PropertyStore(this);this.propStore=b;var a=new Ext.grid.PropertyColumnModel(this,b);b.store.sort("name","ASC");this.addEvents("beforepropertychange","propertychange");this.cm=a;this.ds=b.store;Ext.grid.PropertyGrid.superclass.initComponent.call(this);this.mon(this.selModel,"beforecellselect",function(e,d,c){if(c===0){this.startEditing.defer(200,this,[d,1]);return false}},this)},onRender:function(){Ext.grid.PropertyGrid.superclass.onRender.apply(this,arguments);this.getGridEl().addClass("x-props-grid")},afterRender:function(){Ext.grid.PropertyGrid.superclass.afterRender.apply(this,arguments);if(this.source){this.setSource(this.source)}},setSource:function(a){this.propStore.setSource(a)},getSource:function(){return this.propStore.getSource()},setProperty:function(c,b,a){this.propStore.setValue(c,b,a)},removeProperty:function(a){this.propStore.remove(a)}});Ext.reg("propertygrid",Ext.grid.PropertyGrid);Ext.grid.GroupingView=Ext.extend(Ext.grid.GridView,{groupByText:"Group By This Field",showGroupsText:"Show in Groups",hideGroupedColumn:false,showGroupName:true,startCollapsed:false,enableGrouping:true,enableGroupingMenu:true,enableNoGroups:true,emptyGroupText:"(None)",ignoreAdd:false,groupTextTpl:"{text}",groupMode:"value",cancelEditOnToggle:true,initTemplates:function(){Ext.grid.GroupingView.superclass.initTemplates.call(this);this.state={};var a=this.grid.getSelectionModel();a.on(a.selectRow?"beforerowselect":"beforecellselect",this.onBeforeRowSelect,this);if(!this.startGroup){this.startGroup=new Ext.XTemplate('<div id="{groupId}" class="x-grid-group {cls}">','<div id="{groupId}-hd" class="x-grid-group-hd" style="{style}"><div class="x-grid-group-title">',this.groupTextTpl,"</div></div>",'<div id="{groupId}-bd" class="x-grid-group-body">')}this.startGroup.compile();if(!this.endGroup){this.endGroup="</div></div>"}},findGroup:function(a){return Ext.fly(a).up(".x-grid-group",this.mainBody.dom)},getGroups:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},onAdd:function(d,a,b){if(this.canGroup()&&!this.ignoreAdd){var c=this.getScrollState();this.fireEvent("beforerowsinserted",d,b,b+(a.length-1));this.refresh();this.restoreScroll(c);this.fireEvent("rowsinserted",d,b,b+(a.length-1))}else{if(!this.canGroup()){Ext.grid.GroupingView.superclass.onAdd.apply(this,arguments)}}},onRemove:function(e,a,b,d){Ext.grid.GroupingView.superclass.onRemove.apply(this,arguments);var c=document.getElementById(a._groupId);if(c&&c.childNodes[1].childNodes.length<1){Ext.removeNode(c)}this.applyEmptyText()},refreshRow:function(a){if(this.ds.getCount()==1){this.refresh()}else{this.isUpdating=true;Ext.grid.GroupingView.superclass.refreshRow.apply(this,arguments);this.isUpdating=false}},beforeMenuShow:function(){var c,a=this.hmenu.items,b=this.cm.config[this.hdCtxIndex].groupable===false;if((c=a.get("groupBy"))){c.setDisabled(b)}if((c=a.get("showGroups"))){c.setDisabled(b);c.setChecked(this.canGroup(),true)}},renderUI:function(){var a=Ext.grid.GroupingView.superclass.renderUI.call(this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{itemId:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({itemId:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}return a},processEvent:function(b,i){Ext.grid.GroupingView.superclass.processEvent.call(this,b,i);var h=i.getTarget(".x-grid-group-hd",this.mainBody);if(h){var g=this.getGroupField(),d=this.getPrefix(g),a=h.id.substring(d.length),c=new RegExp("gp-"+Ext.escapeRe(g)+"--hd");a=a.substr(0,a.length-3);if(a||c.test(h.id)){this.grid.fireEvent("group"+b,this.grid,g,a,i)}if(b=="mousedown"&&i.button==0){this.toggleGroup(h.parentNode)}}},onGroupByClick:function(){var a=this.grid;this.enableGrouping=true;a.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));a.fireEvent("groupchange",a,a.store.getGroupState());this.beforeMenuShow();this.refresh()},onShowGroupsClick:function(a,b){this.enableGrouping=b;if(b){this.onGroupByClick()}else{this.grid.store.clearGrouping();this.grid.fireEvent("groupchange",this,null)}},toggleRowIndex:function(c,a){if(!this.canGroup()){return}var b=this.getRow(c);if(b){this.toggleGroup(this.findGroup(b),a)}},toggleGroup:function(c,b){var a=Ext.get(c),d=Ext.util.Format.htmlEncode(a.id);b=Ext.isDefined(b)?b:a.hasClass("x-grid-group-collapsed");if(this.state[d]!==b){if(this.cancelEditOnToggle!==false){this.grid.stopEditing(true)}this.state[d]=b;a[b?"removeClass":"addClass"]("x-grid-group-collapsed")}},toggleAllGroups:function(c){var b=this.getGroups();for(var d=0,a=b.length;d<a;d++){this.toggleGroup(b[d],c)}},expandAllGroups:function(){this.toggleAllGroups(true)},collapseAllGroups:function(){this.toggleAllGroups(false)},getGroup:function(a,e,i,j,b,h){var c=this.cm.config[b],d=i?i.call(c.scope,a,{},e,j,b,h):String(a);if(d===""||d==="&#160;"){d=c.emptyGroupText||this.emptyGroupText}return d},getGroupField:function(){return this.grid.store.getGroupState()},afterRender:function(){if(!this.ds||!this.cm){return}Ext.grid.GroupingView.superclass.afterRender.call(this);if(this.grid.deferRowRender){this.updateGroupWidths()}},afterRenderUI:function(){Ext.grid.GroupingView.superclass.afterRenderUI.call(this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{itemId:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({itemId:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}},renderRows:function(){var a=this.getGroupField();var e=!!a;if(this.hideGroupedColumn){var b=this.cm.findColumnIndex(a),d=Ext.isDefined(this.lastGroupField);if(!e&&d){this.mainBody.update("");this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField),false);delete this.lastGroupField}else{if(e&&!d){this.lastGroupField=a;this.cm.setHidden(b,true)}else{if(e&&d&&a!==this.lastGroupField){this.mainBody.update("");var c=this.cm.findColumnIndex(this.lastGroupField);this.cm.setHidden(c,false);this.lastGroupField=a;this.cm.setHidden(b,true)}}}}return Ext.grid.GroupingView.superclass.renderRows.apply(this,arguments)},doRender:function(c,h,q,a,p,s){if(h.length<1){return""}if(!this.canGroup()||this.isUpdating){return Ext.grid.GroupingView.superclass.doRender.apply(this,arguments)}var z=this.getGroupField(),o=this.cm.findColumnIndex(z),w,j="width:"+this.getTotalWidth()+";",e=this.cm.config[o],b=e.groupRenderer||e.renderer,t=this.showGroupName?(e.groupName||e.header)+": ":"",y=[],l,u,v,n;for(u=0,v=h.length;u<v;u++){var k=a+u,m=h[u],d=m.data[z];w=this.getGroup(d,m,b,k,o,q);if(!l||l.group!=w){n=this.constructId(d,z,o);this.state[n]=!(Ext.isDefined(this.state[n])?!this.state[n]:this.startCollapsed);l={group:w,gvalue:d,text:t+w,groupId:n,startRow:k,rs:[m],cls:this.state[n]?"":"x-grid-group-collapsed",style:j};y.push(l)}else{l.rs.push(m)}m._groupId=n}var x=[];for(u=0,v=y.length;u<v;u++){w=y[u];this.doGroupStart(x,w,c,q,p);x[x.length]=Ext.grid.GroupingView.superclass.doRender.call(this,c,w.rs,q,w.startRow,p,s);this.doGroupEnd(x,w,c,q,p)}return x.join("")},getGroupId:function(a){var b=this.getGroupField();return this.constructId(a,b,this.cm.findColumnIndex(b))},constructId:function(c,e,a){var b=this.cm.config[a],d=b.groupRenderer||b.renderer,g=(this.groupMode=="value")?c:this.getGroup(c,{data:{}},d,0,a,this.ds);return this.getPrefix(e)+Ext.util.Format.htmlEncode(g)},canGroup:function(){return this.enableGrouping&&!!this.getGroupField()},getPrefix:function(a){return this.grid.getGridEl().id+"-gp-"+a+"-"},doGroupStart:function(a,d,b,e,c){a[a.length]=this.startGroup.apply(d)},doGroupEnd:function(a,d,b,e,c){a[a.length]=this.endGroup},getRows:function(){if(!this.canGroup()){return Ext.grid.GroupingView.superclass.getRows.call(this)}var k=[],c=this.getGroups(),h,e=0,a=c.length,d,b;for(;e<a;++e){h=c[e].childNodes[1];if(h){h=h.childNodes;for(d=0,b=h.length;d<b;++d){k[k.length]=h[d]}}}return k},updateGroupWidths:function(){if(!this.canGroup()||!this.hasRows()){return}var c=Math.max(this.cm.getTotalWidth(),this.el.dom.offsetWidth-this.getScrollOffset())+"px";var b=this.getGroups();for(var d=0,a=b.length;d<a;d++){b[d].firstChild.style.width=c}},onColumnWidthUpdated:function(c,a,b){Ext.grid.GroupingView.superclass.onColumnWidthUpdated.call(this,c,a,b);this.updateGroupWidths()},onAllColumnWidthsUpdated:function(a,b){Ext.grid.GroupingView.superclass.onAllColumnWidthsUpdated.call(this,a,b);this.updateGroupWidths()},onColumnHiddenUpdated:function(b,c,a){Ext.grid.GroupingView.superclass.onColumnHiddenUpdated.call(this,b,c,a);this.updateGroupWidths()},onLayout:function(){this.updateGroupWidths()},onBeforeRowSelect:function(b,a){this.toggleRowIndex(a,true)}});Ext.grid.GroupingView.GROUP_ID=1000; \ No newline at end of file
diff --git a/deluge/ui/web/js/extjs/ext-base-debug.js b/deluge/ui/web/js/extjs/ext-base-debug.js
new file mode 100644
index 0000000..7b20934
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-base-debug.js
@@ -0,0 +1,3352 @@
+/*
+This file is part of Ext JS 3.4
+
+Copyright (c) 2011-2013 Sencha Inc
+
+Contact: http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2013-04-03 15:07:25
+*/
+// for old browsers
+window.undefined = window.undefined;
+
+/**
+ * @class Ext
+ * Ext core utilities and functions.
+ * @singleton
+ */
+
+Ext = {
+ /**
+ * The version of the framework
+ * @type String
+ */
+ version : '3.4.1.1',
+ versionDetail : {
+ major : 3,
+ minor : 4,
+ patch : 1.1
+ }
+};
+
+/**
+ * Copies all the properties of config to obj.
+ * @param {Object} obj The receiver of the properties
+ * @param {Object} config The source of the properties
+ * @param {Object} defaults A different object that will also be applied for default values
+ * @return {Object} returns obj
+ * @member Ext apply
+ */
+Ext.apply = function(o, c, defaults){
+ // no "this" reference for friendly out of scope calls
+ if(defaults){
+ Ext.apply(o, defaults);
+ }
+ if(o && c && typeof c == 'object'){
+ for(var p in c){
+ o[p] = c[p];
+ }
+ }
+ return o;
+};
+
+(function(){
+ var idSeed = 0,
+ toString = Object.prototype.toString,
+ ua = navigator.userAgent.toLowerCase(),
+ check = function(r){
+ return r.test(ua);
+ },
+ DOC = document,
+ docMode = DOC.documentMode,
+ isStrict = DOC.compatMode == "CSS1Compat",
+ isOpera = check(/opera/),
+ isChrome = check(/\bchrome\b/),
+ isWebKit = check(/webkit/),
+ isSafari = !isChrome && check(/safari/),
+ isSafari2 = isSafari && check(/applewebkit\/4/), // unique to Safari 2
+ isSafari3 = isSafari && check(/version\/3/),
+ isSafari4 = isSafari && check(/version\/4/),
+ isIE = !isOpera && check(/msie/),
+ isIE7 = isIE && ((check(/msie 7/) && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 7),
+ isIE8 = isIE && ((check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10) || docMode == 8),
+ isIE9 = isIE && ((check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10) || docMode == 9),
+ isIE10 = isIE && ((check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9) || docMode == 10),
+ isIE6 = isIE && check(/msie 6/),
+ isIE9m = isIE && (isIE6 || isIE7 || isIE8 || isIE9),
+ isGecko = !isWebKit && check(/gecko/),
+ isGecko2 = isGecko && check(/rv:1\.8/),
+ isGecko3 = isGecko && check(/rv:1\.9/),
+ isBorderBox = isIE9m && !isStrict,
+ isWindows = check(/windows|win32/),
+ isMac = check(/macintosh|mac os x/),
+ isAir = check(/adobeair/),
+ isLinux = check(/linux/),
+ isSecure = /^https/i.test(window.location.protocol),
+ noArgs = [],
+ nonEnumerables = [],
+ emptyFn = Ext.emptyFn,
+ t = Ext.apply({}, {
+ constructor: emptyFn,
+ toString: emptyFn,
+ valueOf: emptyFn
+ }),
+ callOverrideParent = function () {
+ var method = callOverrideParent.caller.caller; // skip callParent (our caller)
+ return method.$owner.prototype[method.$name].apply(this, arguments);
+ };
+
+ if (t.constructor !== emptyFn) {
+ nonEnumerables.push('constructor');
+ }
+ if (t.toString !== emptyFn) {
+ nonEnumerables.push('toString');
+ }
+ if (t.valueOf !== emptyFn) {
+ nonEnumerables.push('valueOf');
+ }
+ if (!nonEnumerables.length) {
+ nonEnumerables = null;
+ }
+
+ // Create the abstract Base class to provide an empty constructor and callParent implementations
+ function Base () {
+ //
+ }
+
+ Ext.apply(Base, {
+ $isClass: true,
+
+ callParent: function (args) {
+ var method;
+
+ // This code is intentionally inlined for the least number of debugger stepping
+ return (method = this.callParent.caller) && (method.$previous ||
+ ((method = method.$owner ? method : method.caller) &&
+ method.$owner.superclass.self[method.$name])).apply(this, args || noArgs);
+ }
+ });
+
+ Base.prototype = {
+ constructor: function() {
+ },
+ callParent: function(args) {
+ // NOTE: this code is deliberately as few expressions (and no function calls)
+ // as possible so that a debugger can skip over this noise with the minimum number
+ // of steps. Basically, just hit Step Into until you are where you really wanted
+ // to be.
+ var method,
+ superMethod = (method = this.callParent.caller) && (method.$previous ||
+ ((method = method.$owner ? method : method.caller) &&
+ method.$owner.superclass[method.$name]));
+
+ return superMethod.apply(this, args || noArgs);
+ }
+ };
+
+ // remove css image flicker
+ if(isIE6){
+ try{
+ DOC.execCommand("BackgroundImageCache", false, true);
+ }catch(e){}
+ }
+
+ Ext.apply(Ext, {
+ /**
+ * URL to a blank file used by Ext when in secure mode for iframe src and onReady src to prevent
+ * the IE insecure content warning (<tt>'about:blank'</tt>, except for IE in secure mode, which is <tt>'javascript:""'</tt>).
+ * @type String
+ */
+ SSL_SECURE_URL : isSecure && isIE ? 'javascript:""' : 'about:blank',
+ /**
+ * True if the browser is in strict (standards-compliant) mode, as opposed to quirks mode
+ * @type Boolean
+ */
+ isStrict : isStrict,
+ /**
+ * True if the page is running over SSL
+ * @type Boolean
+ */
+ isSecure : isSecure,
+ /**
+ * True when the document is fully initialized and ready for action
+ * @type Boolean
+ */
+ isReady : false,
+
+ /**
+ * True if the {@link Ext.Fx} Class is available
+ * @type Boolean
+ * @property enableFx
+ */
+
+ /**
+ * HIGHLY EXPERIMENTAL
+ * True to force css based border-box model override and turning off javascript based adjustments. This is a
+ * runtime configuration and must be set before onReady.
+ * @type Boolean
+ */
+ enableForcedBoxModel : false,
+
+ /**
+ * True to automatically uncache orphaned Ext.Elements periodically (defaults to true)
+ * @type Boolean
+ */
+ enableGarbageCollector : true,
+
+ /**
+ * True to automatically purge event listeners during garbageCollection (defaults to false).
+ * @type Boolean
+ */
+ enableListenerCollection : false,
+
+ /**
+ * EXPERIMENTAL - True to cascade listener removal to child elements when an element is removed.
+ * Currently not optimized for performance.
+ * @type Boolean
+ */
+ enableNestedListenerRemoval : false,
+
+ /**
+ * Indicates whether to use native browser parsing for JSON methods.
+ * This option is ignored if the browser does not support native JSON methods.
+ * <b>Note: Native JSON methods will not work with objects that have functions.
+ * Also, property names must be quoted, otherwise the data will not parse.</b> (Defaults to false)
+ * @type Boolean
+ */
+ USE_NATIVE_JSON : false,
+
+ /**
+ * Copies all the properties of config to obj if they don't already exist.
+ * @param {Object} obj The receiver of the properties
+ * @param {Object} config The source of the properties
+ * @return {Object} returns obj
+ */
+ applyIf : function(o, c){
+ if(o){
+ for(var p in c){
+ if(!Ext.isDefined(o[p])){
+ o[p] = c[p];
+ }
+ }
+ }
+ return o;
+ },
+
+ /**
+ * Generates unique ids. If the element already has an id, it is unchanged
+ * @param {Mixed} el (optional) The element to generate an id for
+ * @param {String} prefix (optional) Id prefix (defaults "ext-gen")
+ * @return {String} The generated Id.
+ */
+ id : function(el, prefix){
+ el = Ext.getDom(el, true) || {};
+ if (!el.id) {
+ el.id = (prefix || "ext-gen") + (++idSeed);
+ }
+ return el.id;
+ },
+
+ /**
+ * <p>Extends one class to create a subclass and optionally overrides members with the passed literal. This method
+ * also adds the function "override()" to the subclass that can be used to override members of the class.</p>
+ * For example, to create a subclass of Ext GridPanel:
+ * <pre><code>
+MyGridPanel = Ext.extend(Ext.grid.GridPanel, {
+ constructor: function(config) {
+
+// Create configuration for this Grid.
+ var store = new Ext.data.Store({...});
+ var colModel = new Ext.grid.ColumnModel({...});
+
+// Create a new config object containing our computed properties
+// *plus* whatever was in the config parameter.
+ config = Ext.apply({
+ store: store,
+ colModel: colModel
+ }, config);
+
+ MyGridPanel.superclass.constructor.call(this, config);
+
+// Your postprocessing here
+ },
+
+ yourMethod: function() {
+ // etc.
+ }
+});
+</code></pre>
+ *
+ * <p>This function also supports a 3-argument call in which the subclass's constructor is
+ * passed as an argument. In this form, the parameters are as follows:</p>
+ * <div class="mdetail-params"><ul>
+ * <li><code>subclass</code> : Function <div class="sub-desc">The subclass constructor.</div></li>
+ * <li><code>superclass</code> : Function <div class="sub-desc">The constructor of class being extended</div></li>
+ * <li><code>overrides</code> : Object <div class="sub-desc">A literal with members which are copied into the subclass's
+ * prototype, and are therefore shared among all instances of the new class.</div></li>
+ * </ul></div>
+ *
+ * @param {Function} superclass The constructor of class being extended.
+ * @param {Object} overrides <p>A literal with members which are copied into the subclass's
+ * prototype, and are therefore shared between all instances of the new class.</p>
+ * <p>This may contain a special member named <tt><b>constructor</b></tt>. This is used
+ * to define the constructor of the new class, and is returned. If this property is
+ * <i>not</i> specified, a constructor is generated and returned which just calls the
+ * superclass's constructor passing on its parameters.</p>
+ * <p><b>It is essential that you call the superclass constructor in any provided constructor. See example code.</b></p>
+ * @return {Function} The subclass constructor from the <code>overrides</code> parameter, or a generated one if not provided.
+ */
+ extend : function(){
+ // inline overrides
+ var io = function(o){
+ for(var m in o){
+ this[m] = o[m];
+ }
+ };
+ var oc = Object.prototype.constructor;
+
+ return function(sb, sp, overrides){
+ if(typeof sp == 'object'){
+ overrides = sp;
+ sp = sb;
+ sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
+ }
+ var F = function(){},
+ sbp,
+ spp = sp.prototype;
+
+ F.prototype = spp;
+ sbp = sb.prototype = new F();
+ sbp.constructor=sb;
+ sb.superclass=spp;
+ if(spp.constructor == oc){
+ spp.constructor=sp;
+ }
+ sb.override = function(o){
+ Ext.override(sb, o);
+ };
+ sbp.superclass = sbp.supr = (function(){
+ return spp;
+ });
+ sbp.override = io;
+ Ext.override(sb, overrides);
+ sb.extend = function(o){return Ext.extend(sb, o);};
+ return sb;
+ };
+ }(),
+
+ global: (function () {
+ return this;
+ })(),
+
+ Base: Base,
+
+ namespaceCache: {},
+
+ createNamespace: function (namespaceOrClass, isClass) {
+ var cache = Ext.namespaceCache,
+ namespace = isClass ? namespaceOrClass.substring(0, namespaceOrClass.lastIndexOf('.'))
+ : namespaceOrClass,
+ ns = cache[namespace],
+ i, n, part, parts, partials;
+
+ if (!ns) {
+ ns = Ext.global;
+ if (namespace) {
+ partials = [];
+ parts = namespace.split('.');
+
+ for (i = 0, n = parts.length; i < n; ++i) {
+ part = parts[i];
+
+ ns = ns[part] || (ns[part] = {});
+ partials.push(part);
+
+ cache[partials.join('.')] = ns; // build up prefixes as we go
+ }
+ }
+ }
+
+ return ns;
+ },
+
+ getClassByName: function (className) {
+ var parts = className.split('.'),
+ cls = Ext.global,
+ n = parts.length,
+ i;
+
+ for (i = 0; cls && i < n; ++i) {
+ cls = cls[parts[i]];
+ }
+
+ return cls || null;
+ },
+
+ addMembers: function (cls, target, members, handleNonEnumerables) {
+ var i, name, member;
+
+ for (name in members) {
+ if (members.hasOwnProperty(name)) {
+ member = members[name];
+ if (typeof member == 'function') {
+ member.$owner = cls;
+ member.$name = name;
+ }
+
+ target[name] = member;
+ }
+ }
+
+ if (handleNonEnumerables && nonEnumerables) {
+ for (i = nonEnumerables.length; i-- > 0; ) {
+ name = nonEnumerables[i];
+ if (members.hasOwnProperty(name)) {
+ member = members[name];
+ if (typeof member == 'function') {
+ member.$owner = cls;
+ member.$name = name;
+ }
+
+ target[name] = member;
+ }
+ }
+ }
+ },
+
+ /**
+ * @method
+ * Defines a class or override. A basic class is defined like this:
+ *
+ * Ext.define('My.awesome.Class', {
+ * someProperty: 'something',
+ *
+ * someMethod: function(s) {
+ * alert(s + this.someProperty);
+ * }
+ *
+ * ...
+ * });
+ *
+ * var obj = new My.awesome.Class();
+ *
+ * obj.someMethod('Say '); // alerts 'Say something'
+ *
+ * To create an anonymous class, pass `null` for the `className`:
+ *
+ * Ext.define(null, {
+ * constructor: function () {
+ * // ...
+ * }
+ * });
+ *
+ * In some cases, it is helpful to create a nested scope to contain some private
+ * properties. The best way to do this is to pass a function instead of an object
+ * as the second parameter. This function will be called to produce the class
+ * body:
+ *
+ * Ext.define('MyApp.foo.Bar', function () {
+ * var id = 0;
+ *
+ * return {
+ * nextId: function () {
+ * return ++id;
+ * }
+ * };
+ * });
+ *
+ * When using this form of `Ext.define`, the function is passed a reference to its
+ * class. This can be used as an efficient way to access any static properties you
+ * may have:
+ *
+ * Ext.define('MyApp.foo.Bar', function (Bar) {
+ * return {
+ * statics: {
+ * staticMethod: function () {
+ * // ...
+ * }
+ * },
+ *
+ * method: function () {
+ * return Bar.staticMethod();
+ * }
+ * };
+ * });
+ *
+ * To define an override, include the `override` property. The content of an
+ * override is aggregated with the specified class in order to extend or modify
+ * that class. This can be as simple as setting default property values or it can
+ * extend and/or replace methods. This can also extend the statics of the class.
+ *
+ * One use for an override is to break a large class into manageable pieces.
+ *
+ * // File: /src/app/Panel.js
+ *
+ * Ext.define('My.app.Panel', {
+ * extend: 'Ext.panel.Panel',
+ *
+ * constructor: function (config) {
+ * this.callParent(arguments); // calls Ext.panel.Panel's constructor
+ * //...
+ * },
+ *
+ * statics: {
+ * method: function () {
+ * return 'abc';
+ * }
+ * }
+ * });
+ *
+ * // File: /src/app/PanelPart2.js
+ * Ext.define('My.app.PanelPart2', {
+ * override: 'My.app.Panel',
+ *
+ * constructor: function (config) {
+ * this.callParent(arguments); // calls My.app.Panel's constructor
+ * //...
+ * }
+ * });
+ *
+ * Another use of overrides is to provide optional parts of classes that can be
+ * independently required. In this case, the class may even be unaware of the
+ * override altogether.
+ *
+ * Ext.define('My.ux.CoolTip', {
+ * override: 'Ext.tip.ToolTip',
+ *
+ * constructor: function (config) {
+ * this.callParent(arguments); // calls Ext.tip.ToolTip's constructor
+ * //...
+ * }
+ * });
+ *
+ * Overrides can also contain statics:
+ *
+ * Ext.define('My.app.BarMod', {
+ * override: 'Ext.foo.Bar',
+ *
+ * statics: {
+ * method: function (x) {
+ * return this.callParent([x * 2]); // call Ext.foo.Bar.method
+ * }
+ * }
+ * });
+ *
+ * @param {String} className The class name to create in string dot-namespaced format, for example:
+ * 'My.very.awesome.Class', 'FeedViewer.plugin.CoolPager'
+ * It is highly recommended to follow this simple convention:
+ * - The root and the class name are 'CamelCased'
+ * - Everything else is lower-cased
+ * Pass `null` to create an anonymous class.
+ * @param {Object} data The key - value pairs of properties to apply to this class. Property names can be of any valid
+ * strings, except those in the reserved listed below:
+ * - `mixins`
+ * - `statics`
+ * - `config`
+ * - `alias`
+ * - `self`
+ * - `singleton`
+ * - `alternateClassName`
+ * - `override`
+ *
+ * @param {Function} createdFn Optional callback to execute after the class is created, the execution scope of which
+ * (`this`) will be the newly created class itself.
+ * @return {Ext.Base}
+ * @markdown
+ * @member Ext
+ * @method define
+ */
+ define: function (className, body, createdFn) {
+ var override = body.override,
+ cls, extend, name, namespace;
+
+ if (override) {
+ delete body.override;
+ cls = Ext.getClassByName(override);
+ Ext.override(cls, body);
+ } else {
+ if (className) {
+ namespace = Ext.createNamespace(className, true);
+ name = className.substring(className.lastIndexOf('.')+1);
+ }
+
+ cls = function ctor () {
+ this.constructor.apply(this, arguments);
+ }
+
+ if (className) {
+ cls.displayName = className;
+ }
+ cls.$isClass = true;
+ cls.callParent = Ext.Base.callParent;
+
+ if (typeof body == 'function') {
+ body = body(cls);
+ }
+
+ extend = body.extend;
+ if (extend) {
+ delete body.extend;
+ if (typeof extend == 'string') {
+ extend = Ext.getClassByName(extend);
+ }
+ } else {
+ extend = Base;
+ }
+
+ Ext.extend(cls, extend, body);
+ if (cls.prototype.constructor === cls) {
+ delete cls.prototype.constructor;
+ }
+
+ // Not extending a class which derives from Base...
+ if (!cls.prototype.$isClass) {
+ Ext.applyIf(cls.prototype, Base.prototype);
+ }
+ cls.prototype.self = cls;
+
+ if (body.xtype) {
+ Ext.reg(body.xtype, cls);
+ }
+ cls = body.singleton ? new cls() : cls;
+ if (className) {
+ namespace[name] = cls;
+ }
+ }
+
+ if (createdFn) {
+ createdFn.call(cls);
+ }
+
+ return cls;
+ },
+
+ /**
+ * Overrides members of the specified `target` with the given values.
+ *
+ * If the `target` is a function, it is assumed to be a constructor and the contents
+ * of `overrides` are applied to its `prototype` using {@link Ext#apply Ext.apply}.
+ *
+ * If the `target` is an instance of a class created using {@link #define},
+ * the `overrides` are applied to only that instance. In this case, methods are
+ * specially processed to allow them to use {@link Ext.Base#callParent}.
+ *
+ * var panel = new Ext.Panel({ ... });
+ *
+ * Ext.override(panel, {
+ * initComponent: function () {
+ * // extra processing...
+ *
+ * this.callParent();
+ * }
+ * });
+ *
+ * If the `target` is none of these, the `overrides` are applied to the `target`
+ * using {@link Ext#apply Ext.apply}.
+ *
+ * Please refer to {@link Ext#define Ext.define} for further details.
+ *
+ * @param {Object} target The target to override.
+ * @param {Object} overrides The properties to add or replace on `target`.
+ * @method override
+ */
+ override: function (target, overrides) {
+ var proto, statics;
+
+ if (overrides) {
+ if (target.$isClass) {
+ statics = overrides.statics;
+ if (statics) {
+ delete overrides.statics;
+ }
+
+ Ext.addMembers(target, target.prototype, overrides, true);
+ if (statics) {
+ Ext.addMembers(target, target, statics);
+ }
+ } else if (typeof target == 'function') {
+ proto = target.prototype;
+ Ext.apply(proto, overrides);
+ if(Ext.isIE && overrides.hasOwnProperty('toString')){
+ proto.toString = overrides.toString;
+ }
+ } else {
+ var owner = target.self,
+ name, value;
+
+ if (owner && owner.$isClass) {
+ for (name in overrides) {
+ if (overrides.hasOwnProperty(name)) {
+ value = overrides[name];
+
+ if (typeof value == 'function') {
+ //<debug>
+ if (owner.$className) {
+ value.displayName = owner.$className + '#' + name;
+ }
+ //</debug>
+
+ value.$name = name;
+ value.$owner = owner;
+ value.$previous = target.hasOwnProperty(name)
+ ? target[name] // already hooked, so call previous hook
+ : callOverrideParent; // calls by name on prototype
+ }
+
+ target[name] = value;
+ }
+ }
+ } else {
+ Ext.apply(target, overrides);
+
+ if (!target.constructor.$isClass) {
+ target.constructor.prototype.callParent = Base.prototype.callParent;
+ target.constructor.callParent = Base.callParent;
+ }
+ }
+ }
+ }
+ },
+
+ /**
+ * Creates namespaces to be used for scoping variables and classes so that they are not global.
+ * Specifying the last node of a namespace implicitly creates all other nodes. Usage:
+ * <pre><code>
+Ext.namespace('Company', 'Company.data');
+Ext.namespace('Company.data'); // equivalent and preferable to above syntax
+Company.Widget = function() { ... }
+Company.data.CustomStore = function(config) { ... }
+</code></pre>
+ * @param {String} namespace1
+ * @param {String} namespace2
+ * @param {String} etc
+ * @return {Object} The namespace object. (If multiple arguments are passed, this will be the last namespace created)
+ * @method namespace
+ */
+ namespace : function(){
+ var len1 = arguments.length,
+ i = 0,
+ len2,
+ j,
+ main,
+ ns,
+ sub,
+ current;
+
+ for(; i < len1; ++i) {
+ main = arguments[i];
+ ns = arguments[i].split('.');
+ current = window[ns[0]];
+ if (current === undefined) {
+ current = window[ns[0]] = {};
+ }
+ sub = ns.slice(1);
+ len2 = sub.length;
+ for(j = 0; j < len2; ++j) {
+ current = current[sub[j]] = current[sub[j]] || {};
+ }
+ }
+ return current;
+ },
+
+ /**
+ * Takes an object and converts it to an encoded URL. e.g. Ext.urlEncode({foo: 1, bar: 2}); would return "foo=1&bar=2". Optionally, property values can be arrays, instead of keys and the resulting string that's returned will contain a name/value pair for each array value.
+ * @param {Object} o
+ * @param {String} pre (optional) A prefix to add to the url encoded string
+ * @return {String}
+ */
+ urlEncode : function(o, pre){
+ var empty,
+ buf = [],
+ e = encodeURIComponent;
+
+ Ext.iterate(o, function(key, item){
+ empty = Ext.isEmpty(item);
+ Ext.each(empty ? key : item, function(val){
+ buf.push('&', e(key), '=', (!Ext.isEmpty(val) && (val != key || !empty)) ? (Ext.isDate(val) ? Ext.encode(val).replace(/"/g, '') : e(val)) : '');
+ });
+ });
+ if(!pre){
+ buf.shift();
+ pre = '';
+ }
+ return pre + buf.join('');
+ },
+
+ /**
+ * Takes an encoded URL and and converts it to an object. Example: <pre><code>
+Ext.urlDecode("foo=1&bar=2"); // returns {foo: "1", bar: "2"}
+Ext.urlDecode("foo=1&bar=2&bar=3&bar=4", false); // returns {foo: "1", bar: ["2", "3", "4"]}
+</code></pre>
+ * @param {String} string
+ * @param {Boolean} overwrite (optional) Items of the same name will overwrite previous values instead of creating an an array (Defaults to false).
+ * @return {Object} A literal with members
+ */
+ urlDecode : function(string, overwrite){
+ if(Ext.isEmpty(string)){
+ return {};
+ }
+ var obj = {},
+ pairs = string.split('&'),
+ d = decodeURIComponent,
+ name,
+ value;
+ Ext.each(pairs, function(pair) {
+ pair = pair.split('=');
+ name = d(pair[0]);
+ value = d(pair[1]);
+ obj[name] = overwrite || !obj[name] ? value :
+ [].concat(obj[name]).concat(value);
+ });
+ return obj;
+ },
+
+ /**
+ * Appends content to the query string of a URL, handling logic for whether to place
+ * a question mark or ampersand.
+ * @param {String} url The URL to append to.
+ * @param {String} s The content to append to the URL.
+ * @return (String) The resulting URL
+ */
+ urlAppend : function(url, s){
+ if(!Ext.isEmpty(s)){
+ return url + (url.indexOf('?') === -1 ? '?' : '&') + s;
+ }
+ return url;
+ },
+
+ /**
+ * Converts any iterable (numeric indices and a length property) into a true array
+ * Don't use this on strings. IE doesn't support "abc"[0] which this implementation depends on.
+ * For strings, use this instead: "abc".match(/./g) => [a,b,c];
+ * @param {Iterable} the iterable object to be turned into a true Array.
+ * @return (Array) array
+ */
+ toArray : function(){
+ return isIE ?
+ function(a, i, j, res){
+ res = [];
+ for(var x = 0, len = a.length; x < len; x++) {
+ res.push(a[x]);
+ }
+ return res.slice(i || 0, j || res.length);
+ } :
+ function(a, i, j){
+ return Array.prototype.slice.call(a, i || 0, j || a.length);
+ };
+ }(),
+
+ isIterable : function(v){
+ //check for array or arguments
+ if(Ext.isArray(v) || v.callee){
+ return true;
+ }
+ //check for node list type
+ if(/NodeList|HTMLCollection/.test(toString.call(v))){
+ return true;
+ }
+ //NodeList has an item and length property
+ //IXMLDOMNodeList has nextNode method, needs to be checked first.
+ return ((typeof v.nextNode != 'undefined' || v.item) && Ext.isNumber(v.length));
+ },
+
+ /**
+ * Iterates an array calling the supplied function.
+ * @param {Array/NodeList/Mixed} array The array to be iterated. If this
+ * argument is not really an array, the supplied function is called once.
+ * @param {Function} fn The function to be called with each item. If the
+ * supplied function returns false, iteration stops and this method returns
+ * the current <code>index</code>. This function is called with
+ * the following arguments:
+ * <div class="mdetail-params"><ul>
+ * <li><code>item</code> : <i>Mixed</i>
+ * <div class="sub-desc">The item at the current <code>index</code>
+ * in the passed <code>array</code></div></li>
+ * <li><code>index</code> : <i>Number</i>
+ * <div class="sub-desc">The current index within the array</div></li>
+ * <li><code>allItems</code> : <i>Array</i>
+ * <div class="sub-desc">The <code>array</code> passed as the first
+ * argument to <code>Ext.each</code>.</div></li>
+ * </ul></div>
+ * @param {Object} scope The scope (<code>this</code> reference) in which the specified function is executed.
+ * Defaults to the <code>item</code> at the current <code>index</code>
+ * within the passed <code>array</code>.
+ * @return See description for the fn parameter.
+ */
+ each : function(array, fn, scope){
+ if(Ext.isEmpty(array, true)){
+ return;
+ }
+ if(!Ext.isIterable(array) || Ext.isPrimitive(array)){
+ array = [array];
+ }
+ for(var i = 0, len = array.length; i < len; i++){
+ if(fn.call(scope || array[i], array[i], i, array) === false){
+ return i;
+ };
+ }
+ },
+
+ /**
+ * Iterates either the elements in an array, or each of the properties in an object.
+ * <b>Note</b>: If you are only iterating arrays, it is better to call {@link #each}.
+ * @param {Object/Array} object The object or array to be iterated
+ * @param {Function} fn The function to be called for each iteration.
+ * The iteration will stop if the supplied function returns false, or
+ * all array elements / object properties have been covered. The signature
+ * varies depending on the type of object being interated:
+ * <div class="mdetail-params"><ul>
+ * <li>Arrays : <tt>(Object item, Number index, Array allItems)</tt>
+ * <div class="sub-desc">
+ * When iterating an array, the supplied function is called with each item.</div></li>
+ * <li>Objects : <tt>(String key, Object value, Object)</tt>
+ * <div class="sub-desc">
+ * When iterating an object, the supplied function is called with each key-value pair in
+ * the object, and the iterated object</div></li>
+ * </ul></div>
+ * @param {Object} scope The scope (<code>this</code> reference) in which the specified function is executed. Defaults to
+ * the <code>object</code> being iterated.
+ */
+ iterate : function(obj, fn, scope){
+ if(Ext.isEmpty(obj)){
+ return;
+ }
+ if(Ext.isIterable(obj)){
+ Ext.each(obj, fn, scope);
+ return;
+ }else if(typeof obj == 'object'){
+ for(var prop in obj){
+ if(obj.hasOwnProperty(prop)){
+ if(fn.call(scope || obj, prop, obj[prop], obj) === false){
+ return;
+ };
+ }
+ }
+ }
+ },
+
+ /**
+ * Return the dom node for the passed String (id), dom node, or Ext.Element.
+ * Optional 'strict' flag is needed for IE since it can return 'name' and
+ * 'id' elements by using getElementById.
+ * Here are some examples:
+ * <pre><code>
+// gets dom node based on id
+var elDom = Ext.getDom('elId');
+// gets dom node based on the dom node
+var elDom1 = Ext.getDom(elDom);
+
+// If we don&#39;t know if we are working with an
+// Ext.Element or a dom node use Ext.getDom
+function(el){
+ var dom = Ext.getDom(el);
+ // do something with the dom node
+}
+ * </code></pre>
+ * <b>Note</b>: the dom node to be found actually needs to exist (be rendered, etc)
+ * when this method is called to be successful.
+ * @param {Mixed} el
+ * @return HTMLElement
+ */
+ getDom : function(el, strict){
+ if(!el || !DOC){
+ return null;
+ }
+ if (el.dom){
+ return el.dom;
+ } else {
+ if (typeof el == 'string') {
+ var e = DOC.getElementById(el);
+ // IE returns elements with the 'name' and 'id' attribute.
+ // we do a strict check to return the element with only the id attribute
+ if (e && isIE && strict) {
+ if (el == e.getAttribute('id')) {
+ return e;
+ } else {
+ return null;
+ }
+ }
+ return e;
+ } else {
+ return el;
+ }
+ }
+ },
+
+ /**
+ * Returns the current document body as an {@link Ext.Element}.
+ * @return Ext.Element The document body
+ */
+ getBody : function(){
+ return Ext.get(DOC.body || DOC.documentElement);
+ },
+
+ /**
+ * Returns the current document body as an {@link Ext.Element}.
+ * @return Ext.Element The document body
+ * @method
+ */
+ getHead : function() {
+ var head;
+
+ return function() {
+ if (head == undefined) {
+ head = Ext.get(DOC.getElementsByTagName("head")[0]);
+ }
+
+ return head;
+ };
+ }(),
+
+ /**
+ * <p>Removes this element from the document, removes all DOM event listeners, and deletes the cache reference.
+ * All DOM event listeners are removed from this element. If {@link Ext#enableNestedListenerRemoval} is
+ * <code>true</code>, then DOM event listeners are also removed from all child nodes. The body node
+ * will be ignored if passed in.</p>
+ * @param {HTMLElement} node The node to remove
+ * @method
+ */
+ removeNode : isIE && !isIE8 ? function(){
+ var d;
+ return function(n){
+ if(n && n.tagName != 'BODY'){
+ (Ext.enableNestedListenerRemoval) ? Ext.EventManager.purgeElement(n, true) : Ext.EventManager.removeAll(n);
+ d = d || DOC.createElement('div');
+ d.appendChild(n);
+ d.innerHTML = '';
+ delete Ext.elCache[n.id];
+ }
+ };
+ }() : function(n){
+ if(n && n.parentNode && n.tagName != 'BODY'){
+ (Ext.enableNestedListenerRemoval) ? Ext.EventManager.purgeElement(n, true) : Ext.EventManager.removeAll(n);
+ n.parentNode.removeChild(n);
+ delete Ext.elCache[n.id];
+ }
+ },
+
+ /**
+ * <p>Returns true if the passed value is empty.</p>
+ * <p>The value is deemed to be empty if it is<div class="mdetail-params"><ul>
+ * <li>null</li>
+ * <li>undefined</li>
+ * <li>an empty array</li>
+ * <li>a zero length string (Unless the <tt>allowBlank</tt> parameter is <tt>true</tt>)</li>
+ * </ul></div>
+ * @param {Mixed} value The value to test
+ * @param {Boolean} allowBlank (optional) true to allow empty strings (defaults to false)
+ * @return {Boolean}
+ */
+ isEmpty : function(v, allowBlank){
+ return v === null || v === undefined || ((Ext.isArray(v) && !v.length)) || (!allowBlank ? v === '' : false);
+ },
+
+ /**
+ * Returns true if the passed value is a JavaScript array, otherwise false.
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isArray : function(v){
+ return toString.apply(v) === '[object Array]';
+ },
+
+ /**
+ * Returns true if the passed object is a JavaScript date object, otherwise false.
+ * @param {Object} object The object to test
+ * @return {Boolean}
+ */
+ isDate : function(v){
+ return toString.apply(v) === '[object Date]';
+ },
+
+ /**
+ * Returns true if the passed value is a JavaScript Object, otherwise false.
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isObject : function(v){
+ return !!v && Object.prototype.toString.call(v) === '[object Object]';
+ },
+
+ /**
+ * Returns true if the passed value is a JavaScript 'primitive', a string, number or boolean.
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isPrimitive : function(v){
+ return Ext.isString(v) || Ext.isNumber(v) || Ext.isBoolean(v);
+ },
+
+ /**
+ * Returns true if the passed value is a JavaScript Function, otherwise false.
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isFunction : function(v){
+ return toString.apply(v) === '[object Function]';
+ },
+
+ /**
+ * Returns true if the passed value is a number. Returns false for non-finite numbers.
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isNumber : function(v){
+ return typeof v === 'number' && isFinite(v);
+ },
+
+ /**
+ * Returns true if the passed value is a string.
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isString : function(v){
+ return typeof v === 'string';
+ },
+
+ /**
+ * Returns true if the passed value is a boolean.
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isBoolean : function(v){
+ return typeof v === 'boolean';
+ },
+
+ /**
+ * Returns true if the passed value is an HTMLElement
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isElement : function(v) {
+ return v ? !!v.tagName : false;
+ },
+
+ /**
+ * Returns true if the passed value is not undefined.
+ * @param {Mixed} value The value to test
+ * @return {Boolean}
+ */
+ isDefined : function(v){
+ return typeof v !== 'undefined';
+ },
+
+ /**
+ * True if the detected browser is Opera.
+ * @type Boolean
+ */
+ isOpera : isOpera,
+ /**
+ * True if the detected browser uses WebKit.
+ * @type Boolean
+ */
+ isWebKit : isWebKit,
+ /**
+ * True if the detected browser is Chrome.
+ * @type Boolean
+ */
+ isChrome : isChrome,
+ /**
+ * True if the detected browser is Safari.
+ * @type Boolean
+ */
+ isSafari : isSafari,
+ /**
+ * True if the detected browser is Safari 3.x.
+ * @type Boolean
+ */
+ isSafari3 : isSafari3,
+ /**
+ * True if the detected browser is Safari 4.x.
+ * @type Boolean
+ */
+ isSafari4 : isSafari4,
+ /**
+ * True if the detected browser is Safari 2.x.
+ * @type Boolean
+ */
+ isSafari2 : isSafari2,
+ /**
+ * True if the detected browser is Internet Explorer.
+ * @type Boolean
+ */
+ isIE : isIE,
+ /**
+ * True if the detected browser is Internet Explorer 6.x.
+ * @type Boolean
+ */
+ isIE6 : isIE6,
+ /**
+ * True if the detected browser is Internet Explorer 7.x.
+ * @type Boolean
+ */
+ isIE7 : isIE7,
+ /**
+ * True if the detected browser is Internet Explorer 8.x.
+ * @type Boolean
+ */
+ isIE8 : isIE8,
+ /**
+ * True if the detected browser is Internet Explorer 9.x.
+ * @type Boolean
+ */
+ isIE9 : isIE9,
+
+ /**
+ * True if the detected browser is Internet Explorer 10.x
+ * @type Boolean
+ */
+ isIE10 : isIE10,
+
+ /**
+ * True if the detected browser is Internet Explorer 9.x or lower
+ * @type Boolean
+ */
+ isIE9m : isIE9m,
+
+ /**
+ * True if the detected browser is Internet Explorer 10.x or higher
+ * @type Boolean
+ */
+ isIE10p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9),
+
+ // IE10 quirks behaves like Gecko/WebKit quirks, so don't include it here
+ // Used internally
+ isIEQuirks: isIE && (!isStrict && (isIE6 || isIE7 || isIE8 || isIE9)),
+
+ /**
+ * True if the detected browser uses the Gecko layout engine (e.g. Mozilla, Firefox).
+ * @type Boolean
+ */
+ isGecko : isGecko,
+ /**
+ * True if the detected browser uses a pre-Gecko 1.9 layout engine (e.g. Firefox 2.x).
+ * @type Boolean
+ */
+ isGecko2 : isGecko2,
+ /**
+ * True if the detected browser uses a Gecko 1.9+ layout engine (e.g. Firefox 3.x).
+ * @type Boolean
+ */
+ isGecko3 : isGecko3,
+ /**
+ * True if the detected browser is Internet Explorer running in non-strict mode.
+ * @type Boolean
+ */
+ isBorderBox : isBorderBox,
+ /**
+ * True if the detected platform is Linux.
+ * @type Boolean
+ */
+ isLinux : isLinux,
+ /**
+ * True if the detected platform is Windows.
+ * @type Boolean
+ */
+ isWindows : isWindows,
+ /**
+ * True if the detected platform is Mac OS.
+ * @type Boolean
+ */
+ isMac : isMac,
+ /**
+ * True if the detected platform is Adobe Air.
+ * @type Boolean
+ */
+ isAir : isAir
+ });
+
+ /**
+ * Creates namespaces to be used for scoping variables and classes so that they are not global.
+ * Specifying the last node of a namespace implicitly creates all other nodes. Usage:
+ * <pre><code>
+Ext.namespace('Company', 'Company.data');
+Ext.namespace('Company.data'); // equivalent and preferable to above syntax
+Company.Widget = function() { ... }
+Company.data.CustomStore = function(config) { ... }
+</code></pre>
+ * @param {String} namespace1
+ * @param {String} namespace2
+ * @param {String} etc
+ * @return {Object} The namespace object. (If multiple arguments are passed, this will be the last namespace created)
+ * @method ns
+ */
+ Ext.ns = Ext.namespace;
+})();
+
+Ext.ns('Ext.util', 'Ext.lib', 'Ext.data', 'Ext.supports');
+
+Ext.elCache = {};
+
+/**
+ * @class Function
+ * These functions are available on every Function object (any JavaScript function).
+ */
+Ext.apply(Function.prototype, {
+ /**
+ * Creates an interceptor function. The passed function is called before the original one. If it returns false,
+ * the original one is not called. The resulting function returns the results of the original function.
+ * The passed function is called with the parameters of the original function. Example usage:
+ * <pre><code>
+var sayHi = function(name){
+ alert('Hi, ' + name);
+}
+
+sayHi('Fred'); // alerts "Hi, Fred"
+
+// create a new function that validates input without
+// directly modifying the original function:
+var sayHiToFriend = sayHi.createInterceptor(function(name){
+ return name == 'Brian';
+});
+
+sayHiToFriend('Fred'); // no alert
+sayHiToFriend('Brian'); // alerts "Hi, Brian"
+</code></pre>
+ * @param {Function} fcn The function to call before the original
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the passed function is executed.
+ * <b>If omitted, defaults to the scope in which the original function is called or the browser window.</b>
+ * @return {Function} The new function
+ */
+ createInterceptor : function(fcn, scope){
+ var method = this;
+ return !Ext.isFunction(fcn) ?
+ this :
+ function() {
+ var me = this,
+ args = arguments;
+ fcn.target = me;
+ fcn.method = method;
+ return (fcn.apply(scope || me || window, args) !== false) ?
+ method.apply(me || window, args) :
+ null;
+ };
+ },
+
+ /**
+ * Creates a callback that passes arguments[0], arguments[1], arguments[2], ...
+ * Call directly on any function. Example: <code>myFunction.createCallback(arg1, arg2)</code>
+ * Will create a function that is bound to those 2 args. <b>If a specific scope is required in the
+ * callback, use {@link #createDelegate} instead.</b> The function returned by createCallback always
+ * executes in the window scope.
+ * <p>This method is required when you want to pass arguments to a callback function. If no arguments
+ * are needed, you can simply pass a reference to the function as a callback (e.g., callback: myFn).
+ * However, if you tried to pass a function with arguments (e.g., callback: myFn(arg1, arg2)) the function
+ * would simply execute immediately when the code is parsed. Example usage:
+ * <pre><code>
+var sayHi = function(name){
+ alert('Hi, ' + name);
+}
+
+// clicking the button alerts "Hi, Fred"
+new Ext.Button({
+ text: 'Say Hi',
+ renderTo: Ext.getBody(),
+ handler: sayHi.createCallback('Fred')
+});
+</code></pre>
+ * @return {Function} The new function
+ */
+ createCallback : function(/*args...*/){
+ // make args available, in function below
+ var args = arguments,
+ method = this;
+ return function() {
+ return method.apply(window, args);
+ };
+ },
+
+ /**
+ * Creates a delegate (callback) that sets the scope to obj.
+ * Call directly on any function. Example: <code>this.myFunction.createDelegate(this, [arg1, arg2])</code>
+ * Will create a function that is automatically scoped to obj so that the <tt>this</tt> variable inside the
+ * callback points to obj. Example usage:
+ * <pre><code>
+var sayHi = function(name){
+ // Note this use of "this.text" here. This function expects to
+ // execute within a scope that contains a text property. In this
+ // example, the "this" variable is pointing to the btn object that
+ // was passed in createDelegate below.
+ alert('Hi, ' + name + '. You clicked the "' + this.text + '" button.');
+}
+
+var btn = new Ext.Button({
+ text: 'Say Hi',
+ renderTo: Ext.getBody()
+});
+
+// This callback will execute in the scope of the
+// button instance. Clicking the button alerts
+// "Hi, Fred. You clicked the "Say Hi" button."
+btn.on('click', sayHi.createDelegate(btn, ['Fred']));
+</code></pre>
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the function is executed.
+ * <b>If omitted, defaults to the browser window.</b>
+ * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
+ * if a number the args are inserted at the specified position
+ * @return {Function} The new function
+ */
+ createDelegate : function(obj, args, appendArgs){
+ var method = this;
+ return function() {
+ var callArgs = args || arguments;
+ if (appendArgs === true){
+ callArgs = Array.prototype.slice.call(arguments, 0);
+ callArgs = callArgs.concat(args);
+ }else if (Ext.isNumber(appendArgs)){
+ callArgs = Array.prototype.slice.call(arguments, 0); // copy arguments first
+ var applyArgs = [appendArgs, 0].concat(args); // create method call params
+ Array.prototype.splice.apply(callArgs, applyArgs); // splice them in
+ }
+ return method.apply(obj || window, callArgs);
+ };
+ },
+
+ /**
+ * Calls this function after the number of millseconds specified, optionally in a specific scope. Example usage:
+ * <pre><code>
+var sayHi = function(name){
+ alert('Hi, ' + name);
+}
+
+// executes immediately:
+sayHi('Fred');
+
+// executes after 2 seconds:
+sayHi.defer(2000, this, ['Fred']);
+
+// this syntax is sometimes useful for deferring
+// execution of an anonymous function:
+(function(){
+ alert('Anonymous');
+}).defer(100);
+</code></pre>
+ * @param {Number} millis The number of milliseconds for the setTimeout call (if less than or equal to 0 the function is executed immediately)
+ * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the function is executed.
+ * <b>If omitted, defaults to the browser window.</b>
+ * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
+ * if a number the args are inserted at the specified position
+ * @return {Number} The timeout id that can be used with clearTimeout
+ */
+ defer : function(millis, obj, args, appendArgs){
+ var fn = this.createDelegate(obj, args, appendArgs);
+ if(millis > 0){
+ return setTimeout(fn, millis);
+ }
+ fn();
+ return 0;
+ }
+});
+
+/**
+ * @class String
+ * These functions are available on every String object.
+ */
+Ext.applyIf(String, {
+ /**
+ * Allows you to define a tokenized string and pass an arbitrary number of arguments to replace the tokens. Each
+ * token must be unique, and must increment in the format {0}, {1}, etc. Example usage:
+ * <pre><code>
+var cls = 'my-class', text = 'Some text';
+var s = String.format('&lt;div class="{0}">{1}&lt;/div>', cls, text);
+// s now contains the string: '&lt;div class="my-class">Some text&lt;/div>'
+ * </code></pre>
+ * @param {String} string The tokenized string to be formatted
+ * @param {String} value1 The value to replace token {0}
+ * @param {String} value2 Etc...
+ * @return {String} The formatted string
+ * @static
+ */
+ format : function(format){
+ var args = Ext.toArray(arguments, 1);
+ return format.replace(/\{(\d+)\}/g, function(m, i){
+ return args[i];
+ });
+ }
+});
+
+/**
+ * @class Array
+ */
+Ext.applyIf(Array.prototype, {
+ /**
+ * Checks whether or not the specified object exists in the array.
+ * @param {Object} o The object to check for
+ * @param {Number} from (Optional) The index at which to begin the search
+ * @return {Number} The index of o in the array (or -1 if it is not found)
+ */
+ indexOf : function(o, from){
+ var len = this.length;
+ from = from || 0;
+ from += (from < 0) ? len : 0;
+ for (; from < len; ++from){
+ if(this[from] === o){
+ return from;
+ }
+ }
+ return -1;
+ },
+
+ /**
+ * Removes the specified object from the array. If the object is not found nothing happens.
+ * @param {Object} o The object to remove
+ * @return {Array} this array
+ */
+ remove : function(o){
+ var index = this.indexOf(o);
+ if(index != -1){
+ this.splice(index, 1);
+ }
+ return this;
+ }
+});
+/**
+ * @class Ext.util.TaskRunner
+ * Provides the ability to execute one or more arbitrary tasks in a multithreaded
+ * manner. Generally, you can use the singleton {@link Ext.TaskMgr} instead, but
+ * if needed, you can create separate instances of TaskRunner. Any number of
+ * separate tasks can be started at any time and will run independently of each
+ * other. Example usage:
+ * <pre><code>
+// Start a simple clock task that updates a div once per second
+var updateClock = function(){
+ Ext.fly('clock').update(new Date().format('g:i:s A'));
+}
+var task = {
+ run: updateClock,
+ interval: 1000 //1 second
+}
+var runner = new Ext.util.TaskRunner();
+runner.start(task);
+
+// equivalent using TaskMgr
+Ext.TaskMgr.start({
+ run: updateClock,
+ interval: 1000
+});
+
+ * </code></pre>
+ * <p>See the {@link #start} method for details about how to configure a task object.</p>
+ * Also see {@link Ext.util.DelayedTask}.
+ *
+ * @constructor
+ * @param {Number} interval (optional) The minimum precision in milliseconds supported by this TaskRunner instance
+ * (defaults to 10)
+ */
+Ext.util.TaskRunner = function(interval){
+ interval = interval || 10;
+ var tasks = [],
+ removeQueue = [],
+ id = 0,
+ running = false,
+
+ // private
+ stopThread = function(){
+ running = false;
+ clearInterval(id);
+ id = 0;
+ },
+
+ // private
+ startThread = function(){
+ if(!running){
+ running = true;
+ id = setInterval(runTasks, interval);
+ }
+ },
+
+ // private
+ removeTask = function(t){
+ removeQueue.push(t);
+ if(t.onStop){
+ t.onStop.apply(t.scope || t);
+ }
+ },
+
+ // private
+ runTasks = function(){
+ var rqLen = removeQueue.length,
+ now = new Date().getTime();
+
+ if(rqLen > 0){
+ for(var i = 0; i < rqLen; i++){
+ tasks.remove(removeQueue[i]);
+ }
+ removeQueue = [];
+ if(tasks.length < 1){
+ stopThread();
+ return;
+ }
+ }
+ for(var i = 0, t, itime, rt, len = tasks.length; i < len; ++i){
+ t = tasks[i];
+ itime = now - t.taskRunTime;
+ if(t.interval <= itime){
+ rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]);
+ t.taskRunTime = now;
+ if(rt === false || t.taskRunCount === t.repeat){
+ removeTask(t);
+ return;
+ }
+ }
+ if(t.duration && t.duration <= (now - t.taskStartTime)){
+ removeTask(t);
+ }
+ }
+ };
+
+ /**
+ * Starts a new task.
+ * @method start
+ * @param {Object} task <p>A config object that supports the following properties:<ul>
+ * <li><code>run</code> : Function<div class="sub-desc"><p>The function to execute each time the task is invoked. The
+ * function will be called at each interval and passed the <code>args</code> argument if specified, and the
+ * current invocation count if not.</p>
+ * <p>If a particular scope (<code>this</code> reference) is required, be sure to specify it using the <code>scope</code> argument.</p>
+ * <p>Return <code>false</code> from this function to terminate the task.</p></div></li>
+ * <li><code>interval</code> : Number<div class="sub-desc">The frequency in milliseconds with which the task
+ * should be invoked.</div></li>
+ * <li><code>args</code> : Array<div class="sub-desc">(optional) An array of arguments to be passed to the function
+ * specified by <code>run</code>. If not specified, the current invocation count is passed.</div></li>
+ * <li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<tt>this</tt> reference) in which to execute the
+ * <code>run</code> function. Defaults to the task config object.</div></li>
+ * <li><code>duration</code> : Number<div class="sub-desc">(optional) The length of time in milliseconds to invoke
+ * the task before stopping automatically (defaults to indefinite).</div></li>
+ * <li><code>repeat</code> : Number<div class="sub-desc">(optional) The number of times to invoke the task before
+ * stopping automatically (defaults to indefinite).</div></li>
+ * </ul></p>
+ * <p>Before each invocation, Ext injects the property <code>taskRunCount</code> into the task object so
+ * that calculations based on the repeat count can be performed.</p>
+ * @return {Object} The task
+ */
+ this.start = function(task){
+ tasks.push(task);
+ task.taskStartTime = new Date().getTime();
+ task.taskRunTime = 0;
+ task.taskRunCount = 0;
+ startThread();
+ return task;
+ };
+
+ /**
+ * Stops an existing running task.
+ * @method stop
+ * @param {Object} task The task to stop
+ * @return {Object} The task
+ */
+ this.stop = function(task){
+ removeTask(task);
+ return task;
+ };
+
+ /**
+ * Stops all tasks that are currently running.
+ * @method stopAll
+ */
+ this.stopAll = function(){
+ stopThread();
+ for(var i = 0, len = tasks.length; i < len; i++){
+ if(tasks[i].onStop){
+ tasks[i].onStop();
+ }
+ }
+ tasks = [];
+ removeQueue = [];
+ };
+};
+
+/**
+ * @class Ext.TaskMgr
+ * @extends Ext.util.TaskRunner
+ * A static {@link Ext.util.TaskRunner} instance that can be used to start and stop arbitrary tasks. See
+ * {@link Ext.util.TaskRunner} for supported methods and task config properties.
+ * <pre><code>
+// Start a simple clock task that updates a div once per second
+var task = {
+ run: function(){
+ Ext.fly('clock').update(new Date().format('g:i:s A'));
+ },
+ interval: 1000 //1 second
+}
+Ext.TaskMgr.start(task);
+</code></pre>
+ * <p>See the {@link #start} method for details about how to configure a task object.</p>
+ * @singleton
+ */
+Ext.TaskMgr = new Ext.util.TaskRunner();(function(){
+ var libFlyweight;
+
+ function fly(el) {
+ if (!libFlyweight) {
+ libFlyweight = new Ext.Element.Flyweight();
+ }
+ libFlyweight.dom = el;
+ return libFlyweight;
+ }
+
+ (function(){
+ var doc = document,
+ isCSS1 = doc.compatMode == "CSS1Compat",
+ MAX = Math.max,
+ ROUND = Math.round,
+ PARSEINT = parseInt;
+
+ Ext.lib.Dom = {
+ isAncestor : function(p, c) {
+ var ret = false;
+
+ p = Ext.getDom(p);
+ c = Ext.getDom(c);
+ if (p && c) {
+ if (p.contains) {
+ return p.contains(c);
+ } else if (p.compareDocumentPosition) {
+ return !!(p.compareDocumentPosition(c) & 16);
+ } else {
+ while (c = c.parentNode) {
+ ret = c == p || ret;
+ }
+ }
+ }
+ return ret;
+ },
+
+ getViewWidth : function(full) {
+ return full ? this.getDocumentWidth() : this.getViewportWidth();
+ },
+
+ getViewHeight : function(full) {
+ return full ? this.getDocumentHeight() : this.getViewportHeight();
+ },
+
+ getDocumentHeight: function() {
+ return MAX(!isCSS1 ? doc.body.scrollHeight : doc.documentElement.scrollHeight, this.getViewportHeight());
+ },
+
+ getDocumentWidth: function() {
+ return MAX(!isCSS1 ? doc.body.scrollWidth : doc.documentElement.scrollWidth, this.getViewportWidth());
+ },
+
+ getViewportHeight: function(){
+ return Ext.isIE9m ?
+ (Ext.isStrict ? doc.documentElement.clientHeight : doc.body.clientHeight) :
+ self.innerHeight;
+ },
+
+ getViewportWidth : function() {
+ return !Ext.isStrict && !Ext.isOpera ? doc.body.clientWidth :
+ Ext.isIE9m ? doc.documentElement.clientWidth : self.innerWidth;
+ },
+
+ getY : function(el) {
+ return this.getXY(el)[1];
+ },
+
+ getX : function(el) {
+ return this.getXY(el)[0];
+ },
+
+ getXY : function(el) {
+ var p,
+ pe,
+ b,
+ bt,
+ bl,
+ dbd,
+ x = 0,
+ y = 0,
+ scroll,
+ hasAbsolute,
+ bd = (doc.body || doc.documentElement),
+ ret = [0,0];
+
+ el = Ext.getDom(el);
+
+ if(el != bd){
+ if (el.getBoundingClientRect) {
+ b = el.getBoundingClientRect();
+ scroll = fly(document).getScroll();
+ ret = [ROUND(b.left + scroll.left), ROUND(b.top + scroll.top)];
+ } else {
+ p = el;
+ hasAbsolute = fly(el).isStyle("position", "absolute");
+
+ while (p) {
+ pe = fly(p);
+ x += p.offsetLeft;
+ y += p.offsetTop;
+
+ hasAbsolute = hasAbsolute || pe.isStyle("position", "absolute");
+
+ if (Ext.isGecko) {
+ y += bt = PARSEINT(pe.getStyle("borderTopWidth"), 10) || 0;
+ x += bl = PARSEINT(pe.getStyle("borderLeftWidth"), 10) || 0;
+
+ if (p != el && !pe.isStyle('overflow','visible')) {
+ x += bl;
+ y += bt;
+ }
+ }
+ p = p.offsetParent;
+ }
+
+ if (Ext.isSafari && hasAbsolute) {
+ x -= bd.offsetLeft;
+ y -= bd.offsetTop;
+ }
+
+ if (Ext.isGecko && !hasAbsolute) {
+ dbd = fly(bd);
+ x += PARSEINT(dbd.getStyle("borderLeftWidth"), 10) || 0;
+ y += PARSEINT(dbd.getStyle("borderTopWidth"), 10) || 0;
+ }
+
+ p = el.parentNode;
+ while (p && p != bd) {
+ if (!Ext.isOpera || (p.tagName != 'TR' && !fly(p).isStyle("display", "inline"))) {
+ x -= p.scrollLeft;
+ y -= p.scrollTop;
+ }
+ p = p.parentNode;
+ }
+ ret = [x,y];
+ }
+ }
+ return ret;
+ },
+
+ setXY : function(el, xy) {
+ (el = Ext.fly(el, '_setXY')).position();
+
+ var pts = el.translatePoints(xy),
+ style = el.dom.style,
+ pos;
+
+ for (pos in pts) {
+ if (!isNaN(pts[pos])) {
+ style[pos] = pts[pos] + "px";
+ }
+ }
+ },
+
+ setX : function(el, x) {
+ this.setXY(el, [x, false]);
+ },
+
+ setY : function(el, y) {
+ this.setXY(el, [false, y]);
+ }
+ };
+})();Ext.lib.Event = function() {
+ var loadComplete = false,
+ unloadListeners = {},
+ retryCount = 0,
+ onAvailStack = [],
+ _interval,
+ locked = false,
+ win = window,
+ doc = document,
+
+ // constants
+ POLL_RETRYS = 200,
+ POLL_INTERVAL = 20,
+ TYPE = 0,
+ FN = 1,
+ OBJ = 2,
+ ADJ_SCOPE = 3,
+ SCROLLLEFT = 'scrollLeft',
+ SCROLLTOP = 'scrollTop',
+ UNLOAD = 'unload',
+ MOUSEOVER = 'mouseover',
+ MOUSEOUT = 'mouseout',
+ // private
+ doAdd = function() {
+ var ret;
+ if (win.addEventListener) {
+ ret = function(el, eventName, fn, capture) {
+ if (eventName == 'mouseenter') {
+ fn = fn.createInterceptor(checkRelatedTarget);
+ el.addEventListener(MOUSEOVER, fn, (capture));
+ } else if (eventName == 'mouseleave') {
+ fn = fn.createInterceptor(checkRelatedTarget);
+ el.addEventListener(MOUSEOUT, fn, (capture));
+ } else {
+ el.addEventListener(eventName, fn, (capture));
+ }
+ return fn;
+ };
+ } else if (win.attachEvent) {
+ ret = function(el, eventName, fn, capture) {
+ el.attachEvent("on" + eventName, fn);
+ return fn;
+ };
+ } else {
+ ret = function(){};
+ }
+ return ret;
+ }(),
+ // private
+ doRemove = function(){
+ var ret;
+ if (win.removeEventListener) {
+ ret = function (el, eventName, fn, capture) {
+ if (eventName == 'mouseenter') {
+ eventName = MOUSEOVER;
+ } else if (eventName == 'mouseleave') {
+ eventName = MOUSEOUT;
+ }
+ el.removeEventListener(eventName, fn, (capture));
+ };
+ } else if (win.detachEvent) {
+ ret = function (el, eventName, fn) {
+ el.detachEvent("on" + eventName, fn);
+ };
+ } else {
+ ret = function(){};
+ }
+ return ret;
+ }();
+
+ function checkRelatedTarget(e) {
+ return !elContains(e.currentTarget, pub.getRelatedTarget(e));
+ }
+
+ function elContains(parent, child) {
+ if(parent && parent.firstChild){
+ while(child) {
+ if(child === parent) {
+ return true;
+ }
+ child = child.parentNode;
+ if(child && (child.nodeType != 1)) {
+ child = null;
+ }
+ }
+ }
+ return false;
+ }
+
+ // private
+ function _tryPreloadAttach() {
+ var ret = false,
+ notAvail = [],
+ element, i, v, override,
+ tryAgain = !loadComplete || (retryCount > 0);
+
+ if(!locked){
+ locked = true;
+
+ for(i = 0; i < onAvailStack.length; ++i){
+ v = onAvailStack[i];
+ if(v && (element = doc.getElementById(v.id))){
+ if(!v.checkReady || loadComplete || element.nextSibling || (doc && doc.body)) {
+ override = v.override;
+ element = override ? (override === true ? v.obj : override) : element;
+ v.fn.call(element, v.obj);
+ onAvailStack.remove(v);
+ --i;
+ }else{
+ notAvail.push(v);
+ }
+ }
+ }
+
+ retryCount = (notAvail.length === 0) ? 0 : retryCount - 1;
+
+ if (tryAgain) {
+ startInterval();
+ } else {
+ clearInterval(_interval);
+ _interval = null;
+ }
+ ret = !(locked = false);
+ }
+ return ret;
+ }
+
+ // private
+ function startInterval() {
+ if(!_interval){
+ var callback = function() {
+ _tryPreloadAttach();
+ };
+ _interval = setInterval(callback, POLL_INTERVAL);
+ }
+ }
+
+ // private
+ function getScroll() {
+ var dd = doc.documentElement,
+ db = doc.body;
+ if(dd && (dd[SCROLLTOP] || dd[SCROLLLEFT])){
+ return [dd[SCROLLLEFT], dd[SCROLLTOP]];
+ }else if(db){
+ return [db[SCROLLLEFT], db[SCROLLTOP]];
+ }else{
+ return [0, 0];
+ }
+ }
+
+ // private
+ function getPageCoord (ev, xy) {
+ ev = ev.browserEvent || ev;
+ var coord = ev['page' + xy];
+ if (!coord && coord !== 0) {
+ coord = ev['client' + xy] || 0;
+
+ if (Ext.isIE) {
+ coord += getScroll()[xy == "X" ? 0 : 1];
+ }
+ }
+
+ return coord;
+ }
+
+ var pub = {
+ extAdapter: true,
+ onAvailable : function(p_id, p_fn, p_obj, p_override) {
+ onAvailStack.push({
+ id: p_id,
+ fn: p_fn,
+ obj: p_obj,
+ override: p_override,
+ checkReady: false });
+
+ retryCount = POLL_RETRYS;
+ startInterval();
+ },
+
+ // This function should ALWAYS be called from Ext.EventManager
+ addListener: function(el, eventName, fn) {
+ el = Ext.getDom(el);
+ if (el && fn) {
+ if (eventName == UNLOAD) {
+ if (unloadListeners[el.id] === undefined) {
+ unloadListeners[el.id] = [];
+ }
+ unloadListeners[el.id].push([eventName, fn]);
+ return fn;
+ }
+ return doAdd(el, eventName, fn, false);
+ }
+ return false;
+ },
+
+ // This function should ALWAYS be called from Ext.EventManager
+ removeListener: function(el, eventName, fn) {
+ el = Ext.getDom(el);
+ var i, len, li, lis;
+ if (el && fn) {
+ if(eventName == UNLOAD){
+ if((lis = unloadListeners[el.id]) !== undefined){
+ for(i = 0, len = lis.length; i < len; i++){
+ if((li = lis[i]) && li[TYPE] == eventName && li[FN] == fn){
+ unloadListeners[el.id].splice(i, 1);
+ }
+ }
+ }
+ return;
+ }
+ doRemove(el, eventName, fn, false);
+ }
+ },
+
+ getTarget : function(ev) {
+ ev = ev.browserEvent || ev;
+ return this.resolveTextNode(ev.target || ev.srcElement);
+ },
+
+ resolveTextNode : Ext.isGecko ? function(node){
+ if(!node){
+ return;
+ }
+ // work around firefox bug, https://bugzilla.mozilla.org/show_bug.cgi?id=101197
+ var s = HTMLElement.prototype.toString.call(node);
+ if(s == '[xpconnect wrapped native prototype]' || s == '[object XULElement]'){
+ return;
+ }
+ return node.nodeType == 3 ? node.parentNode : node;
+ } : function(node){
+ return node && node.nodeType == 3 ? node.parentNode : node;
+ },
+
+ getRelatedTarget : function(ev) {
+ ev = ev.browserEvent || ev;
+ return this.resolveTextNode(ev.relatedTarget ||
+ (/(mouseout|mouseleave)/.test(ev.type) ? ev.toElement :
+ /(mouseover|mouseenter)/.test(ev.type) ? ev.fromElement : null));
+ },
+
+ getPageX : function(ev) {
+ return getPageCoord(ev, "X");
+ },
+
+ getPageY : function(ev) {
+ return getPageCoord(ev, "Y");
+ },
+
+
+ getXY : function(ev) {
+ return [this.getPageX(ev), this.getPageY(ev)];
+ },
+
+ stopEvent : function(ev) {
+ this.stopPropagation(ev);
+ this.preventDefault(ev);
+ },
+
+ stopPropagation : function(ev) {
+ ev = ev.browserEvent || ev;
+ if (ev.stopPropagation) {
+ ev.stopPropagation();
+ } else {
+ ev.cancelBubble = true;
+ }
+ },
+
+ preventDefault : function(ev) {
+ ev = ev.browserEvent || ev;
+ if (ev.preventDefault) {
+ ev.preventDefault();
+ } else {
+ if (ev.keyCode) {
+ ev.keyCode = 0;
+ }
+ ev.returnValue = false;
+ }
+ },
+
+ getEvent : function(e) {
+ e = e || win.event;
+ if (!e) {
+ var c = this.getEvent.caller;
+ while (c) {
+ e = c.arguments[0];
+ if (e && Event == e.constructor) {
+ break;
+ }
+ c = c.caller;
+ }
+ }
+ return e;
+ },
+
+ getCharCode : function(ev) {
+ ev = ev.browserEvent || ev;
+ return ev.charCode || ev.keyCode || 0;
+ },
+
+ //clearCache: function() {},
+ // deprecated, call from EventManager
+ getListeners : function(el, eventName) {
+ Ext.EventManager.getListeners(el, eventName);
+ },
+
+ // deprecated, call from EventManager
+ purgeElement : function(el, recurse, eventName) {
+ Ext.EventManager.purgeElement(el, recurse, eventName);
+ },
+
+ _load : function(e) {
+ loadComplete = true;
+
+ if (Ext.isIE9m && e !== true) {
+ // IE8 complains that _load is null or not an object
+ // so lets remove self via arguments.callee
+ doRemove(win, "load", arguments.callee);
+ }
+ },
+
+ _unload : function(e) {
+ var EU = Ext.lib.Event,
+ i, v, ul, id, len, scope;
+
+ for (id in unloadListeners) {
+ ul = unloadListeners[id];
+ for (i = 0, len = ul.length; i < len; i++) {
+ v = ul[i];
+ if (v) {
+ try{
+ scope = v[ADJ_SCOPE] ? (v[ADJ_SCOPE] === true ? v[OBJ] : v[ADJ_SCOPE]) : win;
+ v[FN].call(scope, EU.getEvent(e), v[OBJ]);
+ }catch(ex){}
+ }
+ }
+ };
+
+ Ext.EventManager._unload();
+
+ doRemove(win, UNLOAD, EU._unload);
+ }
+ };
+
+ // Initialize stuff.
+ pub.on = pub.addListener;
+ pub.un = pub.removeListener;
+ if (doc && doc.body) {
+ pub._load(true);
+ } else {
+ doAdd(win, "load", pub._load);
+ }
+ doAdd(win, UNLOAD, pub._unload);
+ _tryPreloadAttach();
+
+ return pub;
+}();
+/*
+* Portions of this file are based on pieces of Yahoo User Interface Library
+* Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+* YUI licensed under the BSD License:
+* http://developer.yahoo.net/yui/license.txt
+*/
+Ext.lib.Ajax = function() {
+ var activeX = ['Msxml2.XMLHTTP.3.0',
+ 'Msxml2.XMLHTTP'],
+ CONTENTTYPE = 'Content-Type';
+
+ // private
+ function setHeader(o) {
+ var conn = o.conn,
+ prop,
+ headers = {};
+
+ function setTheHeaders(conn, headers){
+ for (prop in headers) {
+ if (headers.hasOwnProperty(prop)) {
+ conn.setRequestHeader(prop, headers[prop]);
+ }
+ }
+ }
+
+ Ext.apply(headers, pub.headers, pub.defaultHeaders);
+ setTheHeaders(conn, headers);
+ delete pub.headers;
+ }
+
+ // private
+ function createExceptionObject(tId, callbackArg, isAbort, isTimeout) {
+ return {
+ tId : tId,
+ status : isAbort ? -1 : 0,
+ statusText : isAbort ? 'transaction aborted' : 'communication failure',
+ isAbort: isAbort,
+ isTimeout: isTimeout,
+ argument : callbackArg
+ };
+ }
+
+ // private
+ function initHeader(label, value) {
+ (pub.headers = pub.headers || {})[label] = value;
+ }
+
+ // private
+ function createResponseObject(o, callbackArg) {
+ var headerObj = {},
+ headerStr,
+ conn = o.conn,
+ t,
+ s,
+ // see: https://prototype.lighthouseapp.com/projects/8886/tickets/129-ie-mangles-http-response-status-code-204-to-1223
+ isBrokenStatus = conn.status == 1223;
+
+ try {
+ headerStr = o.conn.getAllResponseHeaders();
+ Ext.each(headerStr.replace(/\r\n/g, '\n').split('\n'), function(v){
+ t = v.indexOf(':');
+ if(t >= 0){
+ s = v.substr(0, t).toLowerCase();
+ if(v.charAt(t + 1) == ' '){
+ ++t;
+ }
+ headerObj[s] = v.substr(t + 1);
+ }
+ });
+ } catch(e) {}
+
+ return {
+ tId : o.tId,
+ // Normalize the status and statusText when IE returns 1223, see the above link.
+ status : isBrokenStatus ? 204 : conn.status,
+ statusText : isBrokenStatus ? 'No Content' : conn.statusText,
+ getResponseHeader : function(header){return headerObj[header.toLowerCase()];},
+ getAllResponseHeaders : function(){return headerStr;},
+ responseText : conn.responseText,
+ responseXML : conn.responseXML,
+ argument : callbackArg
+ };
+ }
+
+ // private
+ function releaseObject(o) {
+ if (o.tId) {
+ pub.conn[o.tId] = null;
+ }
+ o.conn = null;
+ o = null;
+ }
+
+ // private
+ function handleTransactionResponse(o, callback, isAbort, isTimeout) {
+ if (!callback) {
+ releaseObject(o);
+ return;
+ }
+
+ var httpStatus, responseObject;
+
+ try {
+ if (o.conn.status !== undefined && o.conn.status != 0) {
+ httpStatus = o.conn.status;
+ }
+ else {
+ httpStatus = 13030;
+ }
+ }
+ catch(e) {
+ httpStatus = 13030;
+ }
+
+ if ((httpStatus >= 200 && httpStatus < 300) || (Ext.isIE && httpStatus == 1223)) {
+ responseObject = createResponseObject(o, callback.argument);
+ if (callback.success) {
+ if (!callback.scope) {
+ callback.success(responseObject);
+ }
+ else {
+ callback.success.apply(callback.scope, [responseObject]);
+ }
+ }
+ }
+ else {
+ switch (httpStatus) {
+ case 12002:
+ case 12029:
+ case 12030:
+ case 12031:
+ case 12152:
+ case 13030:
+ responseObject = createExceptionObject(o.tId, callback.argument, (isAbort ? isAbort : false), isTimeout);
+ if (callback.failure) {
+ if (!callback.scope) {
+ callback.failure(responseObject);
+ }
+ else {
+ callback.failure.apply(callback.scope, [responseObject]);
+ }
+ }
+ break;
+ default:
+ responseObject = createResponseObject(o, callback.argument);
+ if (callback.failure) {
+ if (!callback.scope) {
+ callback.failure(responseObject);
+ }
+ else {
+ callback.failure.apply(callback.scope, [responseObject]);
+ }
+ }
+ }
+ }
+
+ releaseObject(o);
+ responseObject = null;
+ }
+
+ function checkResponse(o, callback, conn, tId, poll, cbTimeout){
+ if (conn && conn.readyState == 4) {
+ clearInterval(poll[tId]);
+ poll[tId] = null;
+
+ if (cbTimeout) {
+ clearTimeout(pub.timeout[tId]);
+ pub.timeout[tId] = null;
+ }
+ handleTransactionResponse(o, callback);
+ }
+ }
+
+ function checkTimeout(o, callback){
+ pub.abort(o, callback, true);
+ }
+
+
+ // private
+ function handleReadyState(o, callback){
+ callback = callback || {};
+ var conn = o.conn,
+ tId = o.tId,
+ poll = pub.poll,
+ cbTimeout = callback.timeout || null;
+
+ if (cbTimeout) {
+ pub.conn[tId] = conn;
+ pub.timeout[tId] = setTimeout(checkTimeout.createCallback(o, callback), cbTimeout);
+ }
+ poll[tId] = setInterval(checkResponse.createCallback(o, callback, conn, tId, poll, cbTimeout), pub.pollInterval);
+ }
+
+ // private
+ function asyncRequest(method, uri, callback, postData) {
+ var o = getConnectionObject() || null;
+
+ if (o) {
+ o.conn.open(method, uri, true);
+
+ if (pub.useDefaultXhrHeader) {
+ initHeader('X-Requested-With', pub.defaultXhrHeader);
+ }
+
+ if(postData && pub.useDefaultHeader && (!pub.headers || !pub.headers[CONTENTTYPE])){
+ initHeader(CONTENTTYPE, pub.defaultPostHeader);
+ }
+
+ if (pub.defaultHeaders || pub.headers) {
+ setHeader(o);
+ }
+
+ handleReadyState(o, callback);
+ o.conn.send(postData || null);
+ }
+ return o;
+ }
+
+ // private
+ function getConnectionObject() {
+ var o;
+
+ try {
+ if (o = createXhrObject(pub.transactionId)) {
+ pub.transactionId++;
+ }
+ } catch(e) {
+ } finally {
+ return o;
+ }
+ }
+
+ // private
+ function createXhrObject(transactionId) {
+ var http;
+
+ try {
+ http = new XMLHttpRequest();
+ } catch(e) {
+ for (var i = Ext.isIE6 ? 1 : 0; i < activeX.length; ++i) {
+ try {
+ http = new ActiveXObject(activeX[i]);
+ break;
+ } catch(e) {}
+ }
+ } finally {
+ return {conn : http, tId : transactionId};
+ }
+ }
+
+ var pub = {
+ request : function(method, uri, cb, data, options) {
+ if(options){
+ var me = this,
+ xmlData = options.xmlData,
+ jsonData = options.jsonData,
+ hs;
+
+ Ext.applyIf(me, options);
+
+ if(xmlData || jsonData){
+ hs = me.headers;
+ if(!hs || !hs[CONTENTTYPE]){
+ initHeader(CONTENTTYPE, xmlData ? 'text/xml' : 'application/json');
+ }
+ data = xmlData || (!Ext.isPrimitive(jsonData) ? Ext.encode(jsonData) : jsonData);
+ }
+ }
+ return asyncRequest(method || options.method || "POST", uri, cb, data);
+ },
+
+ serializeForm : function(form) {
+ var fElements = form.elements || (document.forms[form] || Ext.getDom(form)).elements,
+ hasSubmit = false,
+ encoder = encodeURIComponent,
+ name,
+ data = '',
+ type,
+ hasValue;
+
+ Ext.each(fElements, function(element){
+ name = element.name;
+ type = element.type;
+
+ if (!element.disabled && name) {
+ if (/select-(one|multiple)/i.test(type)) {
+ Ext.each(element.options, function(opt){
+ if (opt.selected) {
+ hasValue = opt.hasAttribute ? opt.hasAttribute('value') : opt.getAttributeNode('value').specified;
+ data += String.format("{0}={1}&", encoder(name), encoder(hasValue ? opt.value : opt.text));
+ }
+ });
+ } else if (!(/file|undefined|reset|button/i.test(type))) {
+ if (!(/radio|checkbox/i.test(type) && !element.checked) && !(type == 'submit' && hasSubmit)) {
+ data += encoder(name) + '=' + encoder(element.value) + '&';
+ hasSubmit = /submit/i.test(type);
+ }
+ }
+ }
+ });
+ return data.substr(0, data.length - 1);
+ },
+
+ useDefaultHeader : true,
+ defaultPostHeader : 'application/x-www-form-urlencoded; charset=UTF-8',
+ useDefaultXhrHeader : true,
+ defaultXhrHeader : 'XMLHttpRequest',
+ poll : {},
+ timeout : {},
+ conn: {},
+ pollInterval : 50,
+ transactionId : 0,
+
+// This is never called - Is it worth exposing this?
+// setProgId : function(id) {
+// activeX.unshift(id);
+// },
+
+// This is never called - Is it worth exposing this?
+// setDefaultPostHeader : function(b) {
+// this.useDefaultHeader = b;
+// },
+
+// This is never called - Is it worth exposing this?
+// setDefaultXhrHeader : function(b) {
+// this.useDefaultXhrHeader = b;
+// },
+
+// This is never called - Is it worth exposing this?
+// setPollingInterval : function(i) {
+// if (typeof i == 'number' && isFinite(i)) {
+// this.pollInterval = i;
+// }
+// },
+
+// This is never called - Is it worth exposing this?
+// resetDefaultHeaders : function() {
+// this.defaultHeaders = null;
+// },
+
+ abort : function(o, callback, isTimeout) {
+ var me = this,
+ tId = o.tId,
+ isAbort = false;
+
+ if (me.isCallInProgress(o)) {
+ o.conn.abort();
+ clearInterval(me.poll[tId]);
+ me.poll[tId] = null;
+ clearTimeout(pub.timeout[tId]);
+ me.timeout[tId] = null;
+
+ handleTransactionResponse(o, callback, (isAbort = true), isTimeout);
+ }
+ return isAbort;
+ },
+
+ isCallInProgress : function(o) {
+ // if there is a connection and readyState is not 0 or 4
+ return o.conn && !{0:true,4:true}[o.conn.readyState];
+ }
+ };
+ return pub;
+}();(function(){
+ var EXTLIB = Ext.lib,
+ noNegatives = /width|height|opacity|padding/i,
+ offsetAttribute = /^((width|height)|(top|left))$/,
+ defaultUnit = /width|height|top$|bottom$|left$|right$/i,
+ offsetUnit = /\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i,
+ isset = function(v){
+ return typeof v !== 'undefined';
+ },
+ now = function(){
+ return new Date();
+ };
+
+ EXTLIB.Anim = {
+ motion : function(el, args, duration, easing, cb, scope) {
+ return this.run(el, args, duration, easing, cb, scope, Ext.lib.Motion);
+ },
+
+ run : function(el, args, duration, easing, cb, scope, type) {
+ type = type || Ext.lib.AnimBase;
+ if (typeof easing == "string") {
+ easing = Ext.lib.Easing[easing];
+ }
+ var anim = new type(el, args, duration, easing);
+ anim.animateX(function() {
+ if(Ext.isFunction(cb)){
+ cb.call(scope);
+ }
+ });
+ return anim;
+ }
+ };
+
+ EXTLIB.AnimBase = function(el, attributes, duration, method) {
+ if (el) {
+ this.init(el, attributes, duration, method);
+ }
+ };
+
+ EXTLIB.AnimBase.prototype = {
+ doMethod: function(attr, start, end) {
+ var me = this;
+ return me.method(me.curFrame, start, end - start, me.totalFrames);
+ },
+
+
+ setAttr: function(attr, val, unit) {
+ if (noNegatives.test(attr) && val < 0) {
+ val = 0;
+ }
+ Ext.fly(this.el, '_anim').setStyle(attr, val + unit);
+ },
+
+
+ getAttr: function(attr) {
+ var el = Ext.fly(this.el),
+ val = el.getStyle(attr),
+ a = offsetAttribute.exec(attr) || [];
+
+ if (val !== 'auto' && !offsetUnit.test(val)) {
+ return parseFloat(val);
+ }
+
+ return (!!(a[2]) || (el.getStyle('position') == 'absolute' && !!(a[3]))) ? el.dom['offset' + a[0].charAt(0).toUpperCase() + a[0].substr(1)] : 0;
+ },
+
+
+ getDefaultUnit: function(attr) {
+ return defaultUnit.test(attr) ? 'px' : '';
+ },
+
+ animateX : function(callback, scope) {
+ var me = this,
+ f = function() {
+ me.onComplete.removeListener(f);
+ if (Ext.isFunction(callback)) {
+ callback.call(scope || me, me);
+ }
+ };
+ me.onComplete.addListener(f, me);
+ me.animate();
+ },
+
+
+ setRunAttr: function(attr) {
+ var me = this,
+ a = this.attributes[attr],
+ to = a.to,
+ by = a.by,
+ from = a.from,
+ unit = a.unit,
+ ra = (this.runAttrs[attr] = {}),
+ end;
+
+ if (!isset(to) && !isset(by)){
+ return false;
+ }
+
+ var start = isset(from) ? from : me.getAttr(attr);
+ if (isset(to)) {
+ end = to;
+ }else if(isset(by)) {
+ if (Ext.isArray(start)){
+ end = [];
+ for(var i=0,len=start.length; i<len; i++) {
+ end[i] = start[i] + by[i];
+ }
+ }else{
+ end = start + by;
+ }
+ }
+
+ Ext.apply(ra, {
+ start: start,
+ end: end,
+ unit: isset(unit) ? unit : me.getDefaultUnit(attr)
+ });
+ },
+
+
+ init: function(el, attributes, duration, method) {
+ var me = this,
+ actualFrames = 0,
+ mgr = EXTLIB.AnimMgr;
+
+ Ext.apply(me, {
+ isAnimated: false,
+ startTime: null,
+ el: Ext.getDom(el),
+ attributes: attributes || {},
+ duration: duration || 1,
+ method: method || EXTLIB.Easing.easeNone,
+ useSec: true,
+ curFrame: 0,
+ totalFrames: mgr.fps,
+ runAttrs: {},
+ animate: function(){
+ var me = this,
+ d = me.duration;
+
+ if(me.isAnimated){
+ return false;
+ }
+
+ me.curFrame = 0;
+ me.totalFrames = me.useSec ? Math.ceil(mgr.fps * d) : d;
+ mgr.registerElement(me);
+ },
+
+ stop: function(finish){
+ var me = this;
+
+ if(finish){
+ me.curFrame = me.totalFrames;
+ me._onTween.fire();
+ }
+ mgr.stop(me);
+ }
+ });
+
+ var onStart = function(){
+ var me = this,
+ attr;
+
+ me.onStart.fire();
+ me.runAttrs = {};
+ for(attr in this.attributes){
+ this.setRunAttr(attr);
+ }
+
+ me.isAnimated = true;
+ me.startTime = now();
+ actualFrames = 0;
+ };
+
+
+ var onTween = function(){
+ var me = this;
+
+ me.onTween.fire({
+ duration: now() - me.startTime,
+ curFrame: me.curFrame
+ });
+
+ var ra = me.runAttrs;
+ for (var attr in ra) {
+ this.setAttr(attr, me.doMethod(attr, ra[attr].start, ra[attr].end), ra[attr].unit);
+ }
+
+ ++actualFrames;
+ };
+
+ var onComplete = function() {
+ var me = this,
+ actual = (now() - me.startTime) / 1000,
+ data = {
+ duration: actual,
+ frames: actualFrames,
+ fps: actualFrames / actual
+ };
+
+ me.isAnimated = false;
+ actualFrames = 0;
+ me.onComplete.fire(data);
+ };
+
+ me.onStart = new Ext.util.Event(me);
+ me.onTween = new Ext.util.Event(me);
+ me.onComplete = new Ext.util.Event(me);
+ (me._onStart = new Ext.util.Event(me)).addListener(onStart);
+ (me._onTween = new Ext.util.Event(me)).addListener(onTween);
+ (me._onComplete = new Ext.util.Event(me)).addListener(onComplete);
+ }
+ };
+
+
+ Ext.lib.AnimMgr = new function() {
+ var me = this,
+ thread = null,
+ queue = [],
+ tweenCount = 0;
+
+
+ Ext.apply(me, {
+ fps: 1000,
+ delay: 1,
+ registerElement: function(tween){
+ queue.push(tween);
+ ++tweenCount;
+ tween._onStart.fire();
+ me.start();
+ },
+
+ unRegister: function(tween, index){
+ tween._onComplete.fire();
+ index = index || getIndex(tween);
+ if (index != -1) {
+ queue.splice(index, 1);
+ }
+
+ if (--tweenCount <= 0) {
+ me.stop();
+ }
+ },
+
+ start: function(){
+ if(thread === null){
+ thread = setInterval(me.run, me.delay);
+ }
+ },
+
+ stop: function(tween){
+ if(!tween){
+ clearInterval(thread);
+ for(var i = 0, len = queue.length; i < len; ++i){
+ if(queue[0].isAnimated){
+ me.unRegister(queue[0], 0);
+ }
+ }
+
+ queue = [];
+ thread = null;
+ tweenCount = 0;
+ }else{
+ me.unRegister(tween);
+ }
+ },
+
+ run: function(){
+ var tf, i, len, tween;
+ for(i = 0, len = queue.length; i<len; i++) {
+ tween = queue[i];
+ if(tween && tween.isAnimated){
+ tf = tween.totalFrames;
+ if(tween.curFrame < tf || tf === null){
+ ++tween.curFrame;
+ if(tween.useSec){
+ correctFrame(tween);
+ }
+ tween._onTween.fire();
+ }else{
+ me.stop(tween);
+ }
+ }
+ }
+ }
+ });
+
+ var getIndex = function(anim) {
+ var i, len;
+ for(i = 0, len = queue.length; i<len; i++) {
+ if(queue[i] === anim) {
+ return i;
+ }
+ }
+ return -1;
+ };
+
+ var correctFrame = function(tween) {
+ var frames = tween.totalFrames,
+ frame = tween.curFrame,
+ duration = tween.duration,
+ expected = (frame * duration * 1000 / frames),
+ elapsed = (now() - tween.startTime),
+ tweak = 0;
+
+ if(elapsed < duration * 1000){
+ tweak = Math.round((elapsed / expected - 1) * frame);
+ }else{
+ tweak = frames - (frame + 1);
+ }
+ if(tweak > 0 && isFinite(tweak)){
+ if(tween.curFrame + tweak >= frames){
+ tweak = frames - (frame + 1);
+ }
+ tween.curFrame += tweak;
+ }
+ };
+ };
+
+ EXTLIB.Bezier = new function() {
+
+ this.getPosition = function(points, t) {
+ var n = points.length,
+ tmp = [],
+ c = 1 - t,
+ i,
+ j;
+
+ for (i = 0; i < n; ++i) {
+ tmp[i] = [points[i][0], points[i][1]];
+ }
+
+ for (j = 1; j < n; ++j) {
+ for (i = 0; i < n - j; ++i) {
+ tmp[i][0] = c * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];
+ tmp[i][1] = c * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1];
+ }
+ }
+
+ return [ tmp[0][0], tmp[0][1] ];
+
+ };
+ };
+
+
+ EXTLIB.Easing = {
+ easeNone: function (t, b, c, d) {
+ return c * t / d + b;
+ },
+
+
+ easeIn: function (t, b, c, d) {
+ return c * (t /= d) * t + b;
+ },
+
+
+ easeOut: function (t, b, c, d) {
+ return -c * (t /= d) * (t - 2) + b;
+ }
+ };
+
+ (function() {
+ EXTLIB.Motion = function(el, attributes, duration, method) {
+ if (el) {
+ EXTLIB.Motion.superclass.constructor.call(this, el, attributes, duration, method);
+ }
+ };
+
+ Ext.extend(EXTLIB.Motion, Ext.lib.AnimBase);
+
+ var superclass = EXTLIB.Motion.superclass,
+ pointsRe = /^points$/i;
+
+ Ext.apply(EXTLIB.Motion.prototype, {
+ setAttr: function(attr, val, unit){
+ var me = this,
+ setAttr = superclass.setAttr;
+
+ if (pointsRe.test(attr)) {
+ unit = unit || 'px';
+ setAttr.call(me, 'left', val[0], unit);
+ setAttr.call(me, 'top', val[1], unit);
+ } else {
+ setAttr.call(me, attr, val, unit);
+ }
+ },
+
+ getAttr: function(attr){
+ var me = this,
+ getAttr = superclass.getAttr;
+
+ return pointsRe.test(attr) ? [getAttr.call(me, 'left'), getAttr.call(me, 'top')] : getAttr.call(me, attr);
+ },
+
+ doMethod: function(attr, start, end){
+ var me = this;
+
+ return pointsRe.test(attr)
+ ? EXTLIB.Bezier.getPosition(me.runAttrs[attr], me.method(me.curFrame, 0, 100, me.totalFrames) / 100)
+ : superclass.doMethod.call(me, attr, start, end);
+ },
+
+ setRunAttr: function(attr){
+ if(pointsRe.test(attr)){
+
+ var me = this,
+ el = this.el,
+ points = this.attributes.points,
+ control = points.control || [],
+ from = points.from,
+ to = points.to,
+ by = points.by,
+ DOM = EXTLIB.Dom,
+ start,
+ i,
+ end,
+ len,
+ ra;
+
+
+ if(control.length > 0 && !Ext.isArray(control[0])){
+ control = [control];
+ }else{
+ /*
+ var tmp = [];
+ for (i = 0,len = control.length; i < len; ++i) {
+ tmp[i] = control[i];
+ }
+ control = tmp;
+ */
+ }
+
+ Ext.fly(el, '_anim').position();
+ DOM.setXY(el, isset(from) ? from : DOM.getXY(el));
+ start = me.getAttr('points');
+
+
+ if(isset(to)){
+ end = translateValues.call(me, to, start);
+ for (i = 0,len = control.length; i < len; ++i) {
+ control[i] = translateValues.call(me, control[i], start);
+ }
+ } else if (isset(by)) {
+ end = [start[0] + by[0], start[1] + by[1]];
+
+ for (i = 0,len = control.length; i < len; ++i) {
+ control[i] = [ start[0] + control[i][0], start[1] + control[i][1] ];
+ }
+ }
+
+ ra = this.runAttrs[attr] = [start];
+ if (control.length > 0) {
+ ra = ra.concat(control);
+ }
+
+ ra[ra.length] = end;
+ }else{
+ superclass.setRunAttr.call(this, attr);
+ }
+ }
+ });
+
+ var translateValues = function(val, start) {
+ var pageXY = EXTLIB.Dom.getXY(this.el);
+ return [val[0] - pageXY[0] + start[0], val[1] - pageXY[1] + start[1]];
+ };
+ })();
+})();// Easing functions
+(function(){
+ // shortcuts to aid compression
+ var abs = Math.abs,
+ pi = Math.PI,
+ asin = Math.asin,
+ pow = Math.pow,
+ sin = Math.sin,
+ EXTLIB = Ext.lib;
+
+ Ext.apply(EXTLIB.Easing, {
+
+ easeBoth: function (t, b, c, d) {
+ return ((t /= d / 2) < 1) ? c / 2 * t * t + b : -c / 2 * ((--t) * (t - 2) - 1) + b;
+ },
+
+ easeInStrong: function (t, b, c, d) {
+ return c * (t /= d) * t * t * t + b;
+ },
+
+ easeOutStrong: function (t, b, c, d) {
+ return -c * ((t = t / d - 1) * t * t * t - 1) + b;
+ },
+
+ easeBothStrong: function (t, b, c, d) {
+ return ((t /= d / 2) < 1) ? c / 2 * t * t * t * t + b : -c / 2 * ((t -= 2) * t * t * t - 2) + b;
+ },
+
+ elasticIn: function (t, b, c, d, a, p) {
+ if (t == 0 || (t /= d) == 1) {
+ return t == 0 ? b : b + c;
+ }
+ p = p || (d * .3);
+
+ var s;
+ if (a >= abs(c)) {
+ s = p / (2 * pi) * asin(c / a);
+ } else {
+ a = c;
+ s = p / 4;
+ }
+
+ return -(a * pow(2, 10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p)) + b;
+
+ },
+
+ elasticOut: function (t, b, c, d, a, p) {
+ if (t == 0 || (t /= d) == 1) {
+ return t == 0 ? b : b + c;
+ }
+ p = p || (d * .3);
+
+ var s;
+ if (a >= abs(c)) {
+ s = p / (2 * pi) * asin(c / a);
+ } else {
+ a = c;
+ s = p / 4;
+ }
+
+ return a * pow(2, -10 * t) * sin((t * d - s) * (2 * pi) / p) + c + b;
+ },
+
+ elasticBoth: function (t, b, c, d, a, p) {
+ if (t == 0 || (t /= d / 2) == 2) {
+ return t == 0 ? b : b + c;
+ }
+
+ p = p || (d * (.3 * 1.5));
+
+ var s;
+ if (a >= abs(c)) {
+ s = p / (2 * pi) * asin(c / a);
+ } else {
+ a = c;
+ s = p / 4;
+ }
+
+ return t < 1 ?
+ -.5 * (a * pow(2, 10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p)) + b :
+ a * pow(2, -10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p) * .5 + c + b;
+ },
+
+ backIn: function (t, b, c, d, s) {
+ s = s || 1.70158;
+ return c * (t /= d) * t * ((s + 1) * t - s) + b;
+ },
+
+
+ backOut: function (t, b, c, d, s) {
+ if (!s) {
+ s = 1.70158;
+ }
+ return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
+ },
+
+
+ backBoth: function (t, b, c, d, s) {
+ s = s || 1.70158;
+
+ return ((t /= d / 2 ) < 1) ?
+ c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b :
+ c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
+ },
+
+
+ bounceIn: function (t, b, c, d) {
+ return c - EXTLIB.Easing.bounceOut(d - t, 0, c, d) + b;
+ },
+
+
+ bounceOut: function (t, b, c, d) {
+ if ((t /= d) < (1 / 2.75)) {
+ return c * (7.5625 * t * t) + b;
+ } else if (t < (2 / 2.75)) {
+ return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
+ } else if (t < (2.5 / 2.75)) {
+ return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
+ }
+ return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
+ },
+
+
+ bounceBoth: function (t, b, c, d) {
+ return (t < d / 2) ?
+ EXTLIB.Easing.bounceIn(t * 2, 0, c, d) * .5 + b :
+ EXTLIB.Easing.bounceOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
+ }
+ });
+})();
+
+(function() {
+ var EXTLIB = Ext.lib;
+ // Color Animation
+ EXTLIB.Anim.color = function(el, args, duration, easing, cb, scope) {
+ return EXTLIB.Anim.run(el, args, duration, easing, cb, scope, EXTLIB.ColorAnim);
+ };
+
+ EXTLIB.ColorAnim = function(el, attributes, duration, method) {
+ EXTLIB.ColorAnim.superclass.constructor.call(this, el, attributes, duration, method);
+ };
+
+ Ext.extend(EXTLIB.ColorAnim, EXTLIB.AnimBase);
+
+ var superclass = EXTLIB.ColorAnim.superclass,
+ colorRE = /color$/i,
+ transparentRE = /^transparent|rgba\(0, 0, 0, 0\)$/,
+ rgbRE = /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,
+ hexRE= /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,
+ hex3RE = /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,
+ isset = function(v){
+ return typeof v !== 'undefined';
+ };
+
+ // private
+ function parseColor(s) {
+ var pi = parseInt,
+ base,
+ out = null,
+ c;
+
+ if (s.length == 3) {
+ return s;
+ }
+
+ Ext.each([hexRE, rgbRE, hex3RE], function(re, idx){
+ base = (idx % 2 == 0) ? 16 : 10;
+ c = re.exec(s);
+ if(c && c.length == 4){
+ out = [pi(c[1], base), pi(c[2], base), pi(c[3], base)];
+ return false;
+ }
+ });
+ return out;
+ }
+
+ Ext.apply(EXTLIB.ColorAnim.prototype, {
+ getAttr : function(attr) {
+ var me = this,
+ el = me.el,
+ val;
+ if(colorRE.test(attr)){
+ while(el && transparentRE.test(val = Ext.fly(el).getStyle(attr))){
+ el = el.parentNode;
+ val = "fff";
+ }
+ }else{
+ val = superclass.getAttr.call(me, attr);
+ }
+ return val;
+ },
+
+ doMethod : function(attr, start, end) {
+ var me = this,
+ val,
+ floor = Math.floor,
+ i,
+ len,
+ v;
+
+ if(colorRE.test(attr)){
+ val = [];
+ end = end || [];
+
+ for(i = 0, len = start.length; i < len; i++) {
+ v = start[i];
+ val[i] = superclass.doMethod.call(me, attr, v, end[i]);
+ }
+ val = 'rgb(' + floor(val[0]) + ',' + floor(val[1]) + ',' + floor(val[2]) + ')';
+ }else{
+ val = superclass.doMethod.call(me, attr, start, end);
+ }
+ return val;
+ },
+
+ setRunAttr : function(attr) {
+ var me = this,
+ a = me.attributes[attr],
+ to = a.to,
+ by = a.by,
+ ra;
+
+ superclass.setRunAttr.call(me, attr);
+ ra = me.runAttrs[attr];
+ if(colorRE.test(attr)){
+ var start = parseColor(ra.start),
+ end = parseColor(ra.end);
+
+ if(!isset(to) && isset(by)){
+ end = parseColor(by);
+ for(var i=0,len=start.length; i<len; i++) {
+ end[i] = start[i] + end[i];
+ }
+ }
+ ra.start = start;
+ ra.end = end;
+ }
+ }
+ });
+})();
+
+
+(function() {
+ // Scroll Animation
+ var EXTLIB = Ext.lib;
+ EXTLIB.Anim.scroll = function(el, args, duration, easing, cb, scope) {
+ return EXTLIB.Anim.run(el, args, duration, easing, cb, scope, EXTLIB.Scroll);
+ };
+
+ EXTLIB.Scroll = function(el, attributes, duration, method) {
+ if(el){
+ EXTLIB.Scroll.superclass.constructor.call(this, el, attributes, duration, method);
+ }
+ };
+
+ Ext.extend(EXTLIB.Scroll, EXTLIB.ColorAnim);
+
+ var superclass = EXTLIB.Scroll.superclass,
+ SCROLL = 'scroll';
+
+ Ext.apply(EXTLIB.Scroll.prototype, {
+
+ doMethod : function(attr, start, end) {
+ var val,
+ me = this,
+ curFrame = me.curFrame,
+ totalFrames = me.totalFrames;
+
+ if(attr == SCROLL){
+ val = [me.method(curFrame, start[0], end[0] - start[0], totalFrames),
+ me.method(curFrame, start[1], end[1] - start[1], totalFrames)];
+ }else{
+ val = superclass.doMethod.call(me, attr, start, end);
+ }
+ return val;
+ },
+
+ getAttr : function(attr) {
+ var me = this;
+
+ if (attr == SCROLL) {
+ return [me.el.scrollLeft, me.el.scrollTop];
+ }else{
+ return superclass.getAttr.call(me, attr);
+ }
+ },
+
+ setAttr : function(attr, val, unit) {
+ var me = this;
+
+ if(attr == SCROLL){
+ me.el.scrollLeft = val[0];
+ me.el.scrollTop = val[1];
+ }else{
+ superclass.setAttr.call(me, attr, val, unit);
+ }
+ }
+ });
+})();
+ if (Ext.isIE9m) {
+ function fnCleanUp() {
+ var p = Function.prototype;
+ delete p.createSequence;
+ delete p.defer;
+ delete p.createDelegate;
+ delete p.createCallback;
+ delete p.createInterceptor;
+
+ window.detachEvent("onunload", fnCleanUp);
+ }
+ window.attachEvent("onunload", fnCleanUp);
+ }
+})();
diff --git a/deluge/ui/web/js/extjs/ext-base.js b/deluge/ui/web/js/extjs/ext-base.js
new file mode 100644
index 0000000..29047a7
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-base.js
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 3.4
+
+Copyright (c) 2011-2013 Sencha Inc
+
+Contact: http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2013-04-03 15:07:25
+*/
+window.undefined=window.undefined;Ext={version:"3.4.1.1",versionDetail:{major:3,minor:4,patch:1.1}};Ext.apply=function(d,e,b){if(b){Ext.apply(d,b)}if(d&&e&&typeof e=="object"){for(var a in e){d[a]=e[a]}}return d};(function(){var g=0,f=Object.prototype.toString,y=navigator.userAgent.toLowerCase(),n=function(e){return e.test(y)},s=document,q=s.documentMode,u=s.compatMode=="CSS1Compat",a=n(/opera/),H=n(/\bchrome\b/),z=n(/webkit/),d=!H&&n(/safari/),F=d&&n(/applewebkit\/4/),D=d&&n(/version\/3/),B=d&&n(/version\/4/),j=!a&&n(/msie/),G=j&&((n(/msie 7/)&&q!=8&&q!=9&&q!=10)||q==7),E=j&&((n(/msie 8/)&&q!=7&&q!=9&&q!=10)||q==8),C=j&&((n(/msie 9/)&&q!=7&&q!=8&&q!=10)||q==9),i=j&&((n(/msie 10/)&&q!=7&&q!=8&&q!=9)||q==10),J=j&&n(/msie 6/),K=j&&(J||G||E||C),c=!z&&n(/gecko/),M=c&&n(/rv:1\.8/),L=c&&n(/rv:1\.9/),m=K&&!u,h=n(/windows|win32/),A=n(/macintosh|mac os x/),p=n(/adobeair/),v=n(/linux/),r=/^https/i.test(window.location.protocol),b=[],w=[],o=Ext.emptyFn,x=Ext.apply({},{constructor:o,toString:o,valueOf:o}),l=function(){var e=l.caller.caller;return e.$owner.prototype[e.$name].apply(this,arguments)};if(x.constructor!==o){w.push("constructor")}if(x.toString!==o){w.push("toString")}if(x.valueOf!==o){w.push("valueOf")}if(!w.length){w=null}function k(){}Ext.apply(k,{$isClass:true,callParent:function(e){var t;return(t=this.callParent.caller)&&(t.$previous||((t=t.$owner?t:t.caller)&&t.$owner.superclass.self[t.$name])).apply(this,e||b)}});k.prototype={constructor:function(){},callParent:function(t){var N,e=(N=this.callParent.caller)&&(N.$previous||((N=N.$owner?N:N.caller)&&N.$owner.superclass[N.$name]));return e.apply(this,t||b)}};if(J){try{s.execCommand("BackgroundImageCache",false,true)}catch(I){}}Ext.apply(Ext,{SSL_SECURE_URL:r&&j?'javascript:""':"about:blank",isStrict:u,isSecure:r,isReady:false,enableForcedBoxModel:false,enableGarbageCollector:true,enableListenerCollection:false,enableNestedListenerRemoval:false,USE_NATIVE_JSON:false,applyIf:function(t,N){if(t){for(var e in N){if(!Ext.isDefined(t[e])){t[e]=N[e]}}}return t},id:function(e,t){e=Ext.getDom(e,true)||{};if(!e.id){e.id=(t||"ext-gen")+(++g)}return e.id},extend:function(){var t=function(O){for(var N in O){this[N]=O[N]}};var e=Object.prototype.constructor;return function(S,P,R){if(typeof P=="object"){R=P;P=S;S=R.constructor!=e?R.constructor:function(){P.apply(this,arguments)}}var O=function(){},Q,N=P.prototype;O.prototype=N;Q=S.prototype=new O();Q.constructor=S;S.superclass=N;if(N.constructor==e){N.constructor=P}S.override=function(T){Ext.override(S,T)};Q.superclass=Q.supr=(function(){return N});Q.override=t;Ext.override(S,R);S.extend=function(T){return Ext.extend(S,T)};return S}}(),global:(function(){return this})(),Base:k,namespaceCache:{},createNamespace:function(R,O){var e=Ext.namespaceCache,P=O?R.substring(0,R.lastIndexOf(".")):R,U=e[P],S,N,t,Q,T;if(!U){U=Ext.global;if(P){T=[];Q=P.split(".");for(S=0,N=Q.length;S<N;++S){t=Q[S];U=U[t]||(U[t]={});T.push(t);e[T.join(".")]=U}}}return U},getClassByName:function(N){var O=N.split("."),e=Ext.global,P=O.length,t;for(t=0;e&&t<P;++t){e=e[O[t]]}return e||null},addMembers:function(t,Q,N,e){var P,O,R;for(O in N){if(N.hasOwnProperty(O)){R=N[O];if(typeof R=="function"){R.$owner=t;R.$name=O}Q[O]=R}}if(e&&w){for(P=w.length;P-->0;){O=w[P];if(N.hasOwnProperty(O)){R=N[O];if(typeof R=="function"){R.$owner=t;R.$name=O}Q[O]=R}}}},define:function(R,P,N){var t=P.override,T,Q,e,O;if(t){delete P.override;T=Ext.getClassByName(t);Ext.override(T,P)}else{if(R){O=Ext.createNamespace(R,true);e=R.substring(R.lastIndexOf(".")+1)}T=function S(){this.constructor.apply(this,arguments)};if(R){T.displayName=R}T.$isClass=true;T.callParent=Ext.Base.callParent;if(typeof P=="function"){P=P(T)}Q=P.extend;if(Q){delete P.extend;if(typeof Q=="string"){Q=Ext.getClassByName(Q)}}else{Q=k}Ext.extend(T,Q,P);if(T.prototype.constructor===T){delete T.prototype.constructor}if(!T.prototype.$isClass){Ext.applyIf(T.prototype,k.prototype)}T.prototype.self=T;if(P.xtype){Ext.reg(P.xtype,T)}T=P.singleton?new T():T;if(R){O[e]=T}}if(N){N.call(T)}return T},override:function(P,R){var N,Q;if(R){if(P.$isClass){Q=R.statics;if(Q){delete R.statics}Ext.addMembers(P,P.prototype,R,true);if(Q){Ext.addMembers(P,P,Q)}}else{if(typeof P=="function"){N=P.prototype;Ext.apply(N,R);if(Ext.isIE&&R.hasOwnProperty("toString")){N.toString=R.toString}}else{var e=P.self,t,O;if(e&&e.$isClass){for(t in R){if(R.hasOwnProperty(t)){O=R[t];if(typeof O=="function"){if(e.$className){O.displayName=e.$className+"#"+t}O.$name=t;O.$owner=e;O.$previous=P.hasOwnProperty(t)?P[t]:l}P[t]=O}}}else{Ext.apply(P,R);if(!P.constructor.$isClass){P.constructor.prototype.callParent=k.prototype.callParent;P.constructor.callParent=k.callParent}}}}}},namespace:function(){var O=arguments.length,P=0,t,N,e,R,Q,S;for(;P<O;++P){e=arguments[P];R=arguments[P].split(".");S=window[R[0]];if(S===undefined){S=window[R[0]]={}}Q=R.slice(1);t=Q.length;for(N=0;N<t;++N){S=S[Q[N]]=S[Q[N]]||{}}}return S},urlEncode:function(Q,P){var N,t=[],O=encodeURIComponent;Ext.iterate(Q,function(e,R){N=Ext.isEmpty(R);Ext.each(N?e:R,function(S){t.push("&",O(e),"=",(!Ext.isEmpty(S)&&(S!=e||!N))?(Ext.isDate(S)?Ext.encode(S).replace(/"/g,""):O(S)):"")})});if(!P){t.shift();P=""}return P+t.join("")},urlDecode:function(N,t){if(Ext.isEmpty(N)){return{}}var Q={},P=N.split("&"),R=decodeURIComponent,e,O;Ext.each(P,function(S){S=S.split("=");e=R(S[0]);O=R(S[1]);Q[e]=t||!Q[e]?O:[].concat(Q[e]).concat(O)});return Q},urlAppend:function(e,t){if(!Ext.isEmpty(t)){return e+(e.indexOf("?")===-1?"?":"&")+t}return e},toArray:function(){return j?function(N,Q,O,P){P=[];for(var t=0,e=N.length;t<e;t++){P.push(N[t])}return P.slice(Q||0,O||P.length)}:function(e,N,t){return Array.prototype.slice.call(e,N||0,t||e.length)}}(),isIterable:function(e){if(Ext.isArray(e)||e.callee){return true}if(/NodeList|HTMLCollection/.test(f.call(e))){return true}return((typeof e.nextNode!="undefined"||e.item)&&Ext.isNumber(e.length))},each:function(P,O,N){if(Ext.isEmpty(P,true)){return}if(!Ext.isIterable(P)||Ext.isPrimitive(P)){P=[P]}for(var t=0,e=P.length;t<e;t++){if(O.call(N||P[t],P[t],t,P)===false){return t}}},iterate:function(N,t,e){if(Ext.isEmpty(N)){return}if(Ext.isIterable(N)){Ext.each(N,t,e);return}else{if(typeof N=="object"){for(var O in N){if(N.hasOwnProperty(O)){if(t.call(e||N,O,N[O],N)===false){return}}}}}},getDom:function(N,t){if(!N||!s){return null}if(N.dom){return N.dom}else{if(typeof N=="string"){var O=s.getElementById(N);if(O&&j&&t){if(N==O.getAttribute("id")){return O}else{return null}}return O}else{return N}}},getBody:function(){return Ext.get(s.body||s.documentElement)},getHead:function(){var e;return function(){if(e==undefined){e=Ext.get(s.getElementsByTagName("head")[0])}return e}}(),removeNode:j&&!E?function(){var e;return function(t){if(t&&t.tagName!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(t,true):Ext.EventManager.removeAll(t);e=e||s.createElement("div");e.appendChild(t);e.innerHTML="";delete Ext.elCache[t.id]}}}():function(e){if(e&&e.parentNode&&e.tagName!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(e,true):Ext.EventManager.removeAll(e);e.parentNode.removeChild(e);delete Ext.elCache[e.id]}},isEmpty:function(t,e){return t===null||t===undefined||((Ext.isArray(t)&&!t.length))||(!e?t==="":false)},isArray:function(e){return f.apply(e)==="[object Array]"},isDate:function(e){return f.apply(e)==="[object Date]"},isObject:function(e){return !!e&&Object.prototype.toString.call(e)==="[object Object]"},isPrimitive:function(e){return Ext.isString(e)||Ext.isNumber(e)||Ext.isBoolean(e)},isFunction:function(e){return f.apply(e)==="[object Function]"},isNumber:function(e){return typeof e==="number"&&isFinite(e)},isString:function(e){return typeof e==="string"},isBoolean:function(e){return typeof e==="boolean"},isElement:function(e){return e?!!e.tagName:false},isDefined:function(e){return typeof e!=="undefined"},isOpera:a,isWebKit:z,isChrome:H,isSafari:d,isSafari3:D,isSafari4:B,isSafari2:F,isIE:j,isIE6:J,isIE7:G,isIE8:E,isIE9:C,isIE10:i,isIE9m:K,isIE10p:j&&!(J||G||E||C),isIEQuirks:j&&(!u&&(J||G||E||C)),isGecko:c,isGecko2:M,isGecko3:L,isBorderBox:m,isLinux:v,isWindows:h,isMac:A,isAir:p});Ext.ns=Ext.namespace})();Ext.ns("Ext.util","Ext.lib","Ext.data","Ext.supports");Ext.elCache={};Ext.apply(Function.prototype,{createInterceptor:function(b,a){var c=this;return !Ext.isFunction(b)?this:function(){var e=this,d=arguments;b.target=e;b.method=c;return(b.apply(a||e||window,d)!==false)?c.apply(e||window,d):null}},createCallback:function(){var a=arguments,b=this;return function(){return b.apply(window,a)}},createDelegate:function(c,b,a){var d=this;return function(){var f=b||arguments;if(a===true){f=Array.prototype.slice.call(arguments,0);f=f.concat(b)}else{if(Ext.isNumber(a)){f=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(f,e)}}return d.apply(c||window,f)}},defer:function(c,e,b,a){var d=this.createDelegate(e,b,a);if(c>0){return setTimeout(d,c)}d();return 0}});Ext.applyIf(String,{format:function(b){var a=Ext.toArray(arguments,1);return b.replace(/\{(\d+)\}/g,function(c,d){return a[d]})}});Ext.applyIf(Array.prototype,{indexOf:function(b,c){var a=this.length;c=c||0;c+=(c<0)?a:0;for(;c<a;++c){if(this[c]===b){return c}}return -1},remove:function(b){var a=this.indexOf(b);if(a!=-1){this.splice(a,1)}return this}});Ext.util.TaskRunner=function(e){e=e||10;var f=[],a=[],b=0,g=false,d=function(){g=false;clearInterval(b);b=0},h=function(){if(!g){g=true;b=setInterval(i,e)}},c=function(j){a.push(j);if(j.onStop){j.onStop.apply(j.scope||j)}},i=function(){var l=a.length,n=new Date().getTime();if(l>0){for(var p=0;p<l;p++){f.remove(a[p])}a=[];if(f.length<1){d();return}}for(var p=0,o,k,m,j=f.length;p<j;++p){o=f[p];k=n-o.taskRunTime;if(o.interval<=k){m=o.run.apply(o.scope||o,o.args||[++o.taskRunCount]);o.taskRunTime=n;if(m===false||o.taskRunCount===o.repeat){c(o);return}}if(o.duration&&o.duration<=(n-o.taskStartTime)){c(o)}}};this.start=function(j){f.push(j);j.taskStartTime=new Date().getTime();j.taskRunTime=0;j.taskRunCount=0;h();return j};this.stop=function(j){c(j);return j};this.stopAll=function(){d();for(var k=0,j=f.length;k<j;k++){if(f[k].onStop){f[k].onStop()}}f=[];a=[]}};Ext.TaskMgr=new Ext.util.TaskRunner();(function(){var b;function c(d){if(!b){b=new Ext.Element.Flyweight()}b.dom=d;return b}(function(){var g=document,e=g.compatMode=="CSS1Compat",f=Math.max,d=Math.round,h=parseInt;Ext.lib.Dom={isAncestor:function(j,k){var i=false;j=Ext.getDom(j);k=Ext.getDom(k);if(j&&k){if(j.contains){return j.contains(k)}else{if(j.compareDocumentPosition){return !!(j.compareDocumentPosition(k)&16)}else{while(k=k.parentNode){i=k==j||i}}}}return i},getViewWidth:function(i){return i?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(i){return i?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){return f(!e?g.body.scrollHeight:g.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return f(!e?g.body.scrollWidth:g.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?(Ext.isStrict?g.documentElement.clientHeight:g.body.clientHeight):self.innerHeight},getViewportWidth:function(){return !Ext.isStrict&&!Ext.isOpera?g.body.clientWidth:Ext.isIE9m?g.documentElement.clientWidth:self.innerWidth},getY:function(i){return this.getXY(i)[1]},getX:function(i){return this.getXY(i)[0]},getXY:function(k){var j,q,s,v,l,m,u=0,r=0,t,i,n=(g.body||g.documentElement),o=[0,0];k=Ext.getDom(k);if(k!=n){if(k.getBoundingClientRect){s=k.getBoundingClientRect();t=c(document).getScroll();o=[d(s.left+t.left),d(s.top+t.top)]}else{j=k;i=c(k).isStyle("position","absolute");while(j){q=c(j);u+=j.offsetLeft;r+=j.offsetTop;i=i||q.isStyle("position","absolute");if(Ext.isGecko){r+=v=h(q.getStyle("borderTopWidth"),10)||0;u+=l=h(q.getStyle("borderLeftWidth"),10)||0;if(j!=k&&!q.isStyle("overflow","visible")){u+=l;r+=v}}j=j.offsetParent}if(Ext.isSafari&&i){u-=n.offsetLeft;r-=n.offsetTop}if(Ext.isGecko&&!i){m=c(n);u+=h(m.getStyle("borderLeftWidth"),10)||0;r+=h(m.getStyle("borderTopWidth"),10)||0}j=k.parentNode;while(j&&j!=n){if(!Ext.isOpera||(j.tagName!="TR"&&!c(j).isStyle("display","inline"))){u-=j.scrollLeft;r-=j.scrollTop}j=j.parentNode}o=[u,r]}}return o},setXY:function(j,k){(j=Ext.fly(j,"_setXY")).position();var l=j.translatePoints(k),i=j.dom.style,m;for(m in l){if(!isNaN(l[m])){i[m]=l[m]+"px"}}},setX:function(j,i){this.setXY(j,[i,false])},setY:function(i,j){this.setXY(i,[false,j])}}})();Ext.lib.Event=function(){var v=false,f={},z=0,o=[],d,A=false,k=window,E=document,l=200,r=20,p=0,i=1,s=2,w=3,t="scrollLeft",q="scrollTop",g="unload",y="mouseover",D="mouseout",e=function(){var F;if(k.addEventListener){F=function(J,H,I,G){if(H=="mouseenter"){I=I.createInterceptor(n);J.addEventListener(y,I,(G))}else{if(H=="mouseleave"){I=I.createInterceptor(n);J.addEventListener(D,I,(G))}else{J.addEventListener(H,I,(G))}}return I}}else{if(k.attachEvent){F=function(J,H,I,G){J.attachEvent("on"+H,I);return I}}else{F=function(){}}}return F}(),h=function(){var F;if(k.removeEventListener){F=function(J,H,I,G){if(H=="mouseenter"){H=y}else{if(H=="mouseleave"){H=D}}J.removeEventListener(H,I,(G))}}else{if(k.detachEvent){F=function(I,G,H){I.detachEvent("on"+G,H)}}else{F=function(){}}}return F}();function n(F){return !u(F.currentTarget,x.getRelatedTarget(F))}function u(F,G){if(F&&F.firstChild){while(G){if(G===F){return true}G=G.parentNode;if(G&&(G.nodeType!=1)){G=null}}}return false}function B(){var G=false,L=[],J,I,F,H,K=!v||(z>0);if(!A){A=true;for(I=0;I<o.length;++I){F=o[I];if(F&&(J=E.getElementById(F.id))){if(!F.checkReady||v||J.nextSibling||(E&&E.body)){H=F.override;J=H?(H===true?F.obj:H):J;F.fn.call(J,F.obj);o.remove(F);--I}else{L.push(F)}}}z=(L.length===0)?0:z-1;if(K){m()}else{clearInterval(d);d=null}G=!(A=false)}return G}function m(){if(!d){var F=function(){B()};d=setInterval(F,r)}}function C(){var F=E.documentElement,G=E.body;if(F&&(F[q]||F[t])){return[F[t],F[q]]}else{if(G){return[G[t],G[q]]}else{return[0,0]}}}function j(F,G){F=F.browserEvent||F;var H=F["page"+G];if(!H&&H!==0){H=F["client"+G]||0;if(Ext.isIE){H+=C()[G=="X"?0:1]}}return H}var x={extAdapter:true,onAvailable:function(H,F,I,G){o.push({id:H,fn:F,obj:I,override:G,checkReady:false});z=l;m()},addListener:function(H,F,G){H=Ext.getDom(H);if(H&&G){if(F==g){if(f[H.id]===undefined){f[H.id]=[]}f[H.id].push([F,G]);return G}return e(H,F,G,false)}return false},removeListener:function(L,H,K){L=Ext.getDom(L);var J,G,F,I;if(L&&K){if(H==g){if((I=f[L.id])!==undefined){for(J=0,G=I.length;J<G;J++){if((F=I[J])&&F[p]==H&&F[i]==K){f[L.id].splice(J,1)}}}return}h(L,H,K,false)}},getTarget:function(F){F=F.browserEvent||F;return this.resolveTextNode(F.target||F.srcElement)},resolveTextNode:Ext.isGecko?function(G){if(!G){return}var F=HTMLElement.prototype.toString.call(G);if(F=="[xpconnect wrapped native prototype]"||F=="[object XULElement]"){return}return G.nodeType==3?G.parentNode:G}:function(F){return F&&F.nodeType==3?F.parentNode:F},getRelatedTarget:function(F){F=F.browserEvent||F;return this.resolveTextNode(F.relatedTarget||(/(mouseout|mouseleave)/.test(F.type)?F.toElement:/(mouseover|mouseenter)/.test(F.type)?F.fromElement:null))},getPageX:function(F){return j(F,"X")},getPageY:function(F){return j(F,"Y")},getXY:function(F){return[this.getPageX(F),this.getPageY(F)]},stopEvent:function(F){this.stopPropagation(F);this.preventDefault(F)},stopPropagation:function(F){F=F.browserEvent||F;if(F.stopPropagation){F.stopPropagation()}else{F.cancelBubble=true}},preventDefault:function(F){F=F.browserEvent||F;if(F.preventDefault){F.preventDefault()}else{if(F.keyCode){F.keyCode=0}F.returnValue=false}},getEvent:function(F){F=F||k.event;if(!F){var G=this.getEvent.caller;while(G){F=G.arguments[0];if(F&&Event==F.constructor){break}G=G.caller}}return F},getCharCode:function(F){F=F.browserEvent||F;return F.charCode||F.keyCode||0},getListeners:function(G,F){Ext.EventManager.getListeners(G,F)},purgeElement:function(G,H,F){Ext.EventManager.purgeElement(G,H,F)},_load:function(F){v=true;if(Ext.isIE9m&&F!==true){h(k,"load",arguments.callee)}},_unload:function(J){var G=Ext.lib.Event,H,M,K,F,I,N;for(F in f){K=f[F];for(H=0,I=K.length;H<I;H++){M=K[H];if(M){try{N=M[w]?(M[w]===true?M[s]:M[w]):k;M[i].call(N,G.getEvent(J),M[s])}catch(L){}}}}Ext.EventManager._unload();h(k,g,G._unload)}};x.on=x.addListener;x.un=x.removeListener;if(E&&E.body){x._load(true)}else{e(k,"load",x._load)}e(k,g,x._unload);B();return x}();Ext.lib.Ajax=function(){var g=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"],d="Content-Type";function h(v){var t=v.conn,w,u={};function s(x,y){for(w in y){if(y.hasOwnProperty(w)){x.setRequestHeader(w,y[w])}}}Ext.apply(u,k.headers,k.defaultHeaders);s(t,u);delete k.headers}function e(v,u,t,s){return{tId:v,status:t?-1:0,statusText:t?"transaction aborted":"communication failure",isAbort:t,isTimeout:s,argument:u}}function j(s,t){(k.headers=k.headers||{})[s]=t}function p(u,y){var C={},x,w=u.conn,A,B,v=w.status==1223;try{x=u.conn.getAllResponseHeaders();Ext.each(x.replace(/\r\n/g,"\n").split("\n"),function(s){A=s.indexOf(":");if(A>=0){B=s.substr(0,A).toLowerCase();if(s.charAt(A+1)==" "){++A}C[B]=s.substr(A+1)}})}catch(z){}return{tId:u.tId,status:v?204:w.status,statusText:v?"No Content":w.statusText,getResponseHeader:function(s){return C[s.toLowerCase()]},getAllResponseHeaders:function(){return x},responseText:w.responseText,responseXML:w.responseXML,argument:y}}function o(s){if(s.tId){k.conn[s.tId]=null}s.conn=null;s=null}function f(x,y,t,s){if(!y){o(x);return}var v,u;try{if(x.conn.status!==undefined&&x.conn.status!=0){v=x.conn.status}else{v=13030}}catch(w){v=13030}if((v>=200&&v<300)||(Ext.isIE&&v==1223)){u=p(x,y.argument);if(y.success){if(!y.scope){y.success(u)}else{y.success.apply(y.scope,[u])}}}else{switch(v){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:u=e(x.tId,y.argument,(t?t:false),s);if(y.failure){if(!y.scope){y.failure(u)}else{y.failure.apply(y.scope,[u])}}break;default:u=p(x,y.argument);if(y.failure){if(!y.scope){y.failure(u)}else{y.failure.apply(y.scope,[u])}}}}o(x);u=null}function m(u,x,s,w,t,v){if(s&&s.readyState==4){clearInterval(t[w]);t[w]=null;if(v){clearTimeout(k.timeout[w]);k.timeout[w]=null}f(u,x)}}function r(s,t){k.abort(s,t,true)}function n(u,x){x=x||{};var s=u.conn,w=u.tId,t=k.poll,v=x.timeout||null;if(v){k.conn[w]=s;k.timeout[w]=setTimeout(r.createCallback(u,x),v)}t[w]=setInterval(m.createCallback(u,x,s,w,t,v),k.pollInterval)}function i(w,t,v,s){var u=l()||null;if(u){u.conn.open(w,t,true);if(k.useDefaultXhrHeader){j("X-Requested-With",k.defaultXhrHeader)}if(s&&k.useDefaultHeader&&(!k.headers||!k.headers[d])){j(d,k.defaultPostHeader)}if(k.defaultHeaders||k.headers){h(u)}n(u,v);u.conn.send(s||null)}return u}function l(){var t;try{if(t=q(k.transactionId)){k.transactionId++}}catch(s){}finally{return t}}function q(v){var s;try{s=new XMLHttpRequest()}catch(u){for(var t=Ext.isIE6?1:0;t<g.length;++t){try{s=new ActiveXObject(g[t]);break}catch(u){}}}finally{return{conn:s,tId:v}}}var k={request:function(s,u,v,w,A){if(A){var x=this,t=A.xmlData,y=A.jsonData,z;Ext.applyIf(x,A);if(t||y){z=x.headers;if(!z||!z[d]){j(d,t?"text/xml":"application/json")}w=t||(!Ext.isPrimitive(y)?Ext.encode(y):y)}}return i(s||A.method||"POST",u,v,w)},serializeForm:function(y){var x=y.elements||(document.forms[y]||Ext.getDom(y)).elements,s=false,w=encodeURIComponent,t,z="",v,u;Ext.each(x,function(A){t=A.name;v=A.type;if(!A.disabled&&t){if(/select-(one|multiple)/i.test(v)){Ext.each(A.options,function(B){if(B.selected){u=B.hasAttribute?B.hasAttribute("value"):B.getAttributeNode("value").specified;z+=String.format("{0}={1}&",w(t),w(u?B.value:B.text))}})}else{if(!(/file|undefined|reset|button/i.test(v))){if(!(/radio|checkbox/i.test(v)&&!A.checked)&&!(v=="submit"&&s)){z+=w(t)+"="+w(A.value)+"&";s=/submit/i.test(v)}}}}});return z.substr(0,z.length-1)},useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",poll:{},timeout:{},conn:{},pollInterval:50,transactionId:0,abort:function(v,x,s){var u=this,w=v.tId,t=false;if(u.isCallInProgress(v)){v.conn.abort();clearInterval(u.poll[w]);u.poll[w]=null;clearTimeout(k.timeout[w]);u.timeout[w]=null;f(v,x,(t=true),s)}return t},isCallInProgress:function(s){return s.conn&&!{0:true,4:true}[s.conn.readyState]}};return k}();(function(){var g=Ext.lib,i=/width|height|opacity|padding/i,f=/^((width|height)|(top|left))$/,d=/width|height|top$|bottom$|left$|right$/i,h=/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i,j=function(k){return typeof k!=="undefined"},e=function(){return new Date()};g.Anim={motion:function(n,l,o,p,k,m){return this.run(n,l,o,p,k,m,Ext.lib.Motion)},run:function(o,l,q,r,k,n,m){m=m||Ext.lib.AnimBase;if(typeof r=="string"){r=Ext.lib.Easing[r]}var p=new m(o,l,q,r);p.animateX(function(){if(Ext.isFunction(k)){k.call(n)}});return p}};g.AnimBase=function(l,k,m,n){if(l){this.init(l,k,m,n)}};g.AnimBase.prototype={doMethod:function(k,n,l){var m=this;return m.method(m.curFrame,n,l-n,m.totalFrames)},setAttr:function(k,m,l){if(i.test(k)&&m<0){m=0}Ext.fly(this.el,"_anim").setStyle(k,m+l)},getAttr:function(k){var m=Ext.fly(this.el),n=m.getStyle(k),l=f.exec(k)||[];if(n!=="auto"&&!h.test(n)){return parseFloat(n)}return(!!(l[2])||(m.getStyle("position")=="absolute"&&!!(l[3])))?m.dom["offset"+l[0].charAt(0).toUpperCase()+l[0].substr(1)]:0},getDefaultUnit:function(k){return d.test(k)?"px":""},animateX:function(n,k){var l=this,m=function(){l.onComplete.removeListener(m);if(Ext.isFunction(n)){n.call(k||l,l)}};l.onComplete.addListener(m,l);l.animate()},setRunAttr:function(p){var r=this,s=this.attributes[p],t=s.to,q=s.by,u=s.from,v=s.unit,l=(this.runAttrs[p]={}),m;if(!j(t)&&!j(q)){return false}var k=j(u)?u:r.getAttr(p);if(j(t)){m=t}else{if(j(q)){if(Ext.isArray(k)){m=[];for(var n=0,o=k.length;n<o;n++){m[n]=k[n]+q[n]}}else{m=k+q}}}Ext.apply(l,{start:k,end:m,unit:j(v)?v:r.getDefaultUnit(p)})},init:function(l,p,o,k){var r=this,n=0,s=g.AnimMgr;Ext.apply(r,{isAnimated:false,startTime:null,el:Ext.getDom(l),attributes:p||{},duration:o||1,method:k||g.Easing.easeNone,useSec:true,curFrame:0,totalFrames:s.fps,runAttrs:{},animate:function(){var u=this,v=u.duration;if(u.isAnimated){return false}u.curFrame=0;u.totalFrames=u.useSec?Math.ceil(s.fps*v):v;s.registerElement(u)},stop:function(u){var v=this;if(u){v.curFrame=v.totalFrames;v._onTween.fire()}s.stop(v)}});var t=function(){var v=this,u;v.onStart.fire();v.runAttrs={};for(u in this.attributes){this.setRunAttr(u)}v.isAnimated=true;v.startTime=e();n=0};var q=function(){var v=this;v.onTween.fire({duration:e()-v.startTime,curFrame:v.curFrame});var w=v.runAttrs;for(var u in w){this.setAttr(u,v.doMethod(u,w[u].start,w[u].end),w[u].unit)}++n};var m=function(){var u=this,w=(e()-u.startTime)/1000,v={duration:w,frames:n,fps:n/w};u.isAnimated=false;n=0;u.onComplete.fire(v)};r.onStart=new Ext.util.Event(r);r.onTween=new Ext.util.Event(r);r.onComplete=new Ext.util.Event(r);(r._onStart=new Ext.util.Event(r)).addListener(t);(r._onTween=new Ext.util.Event(r)).addListener(q);(r._onComplete=new Ext.util.Event(r)).addListener(m)}};Ext.lib.AnimMgr=new function(){var o=this,m=null,l=[],k=0;Ext.apply(o,{fps:1000,delay:1,registerElement:function(q){l.push(q);++k;q._onStart.fire();o.start()},unRegister:function(r,q){r._onComplete.fire();q=q||p(r);if(q!=-1){l.splice(q,1)}if(--k<=0){o.stop()}},start:function(){if(m===null){m=setInterval(o.run,o.delay)}},stop:function(s){if(!s){clearInterval(m);for(var r=0,q=l.length;r<q;++r){if(l[0].isAnimated){o.unRegister(l[0],0)}}l=[];m=null;k=0}else{o.unRegister(s)}},run:function(){var t,s,q,r;for(s=0,q=l.length;s<q;s++){r=l[s];if(r&&r.isAnimated){t=r.totalFrames;if(r.curFrame<t||t===null){++r.curFrame;if(r.useSec){n(r)}r._onTween.fire()}else{o.stop(r)}}}}});var p=function(s){var r,q;for(r=0,q=l.length;r<q;r++){if(l[r]===s){return r}}return -1};var n=function(r){var v=r.totalFrames,u=r.curFrame,t=r.duration,s=(u*t*1000/v),q=(e()-r.startTime),w=0;if(q<t*1000){w=Math.round((q/s-1)*u)}else{w=v-(u+1)}if(w>0&&isFinite(w)){if(r.curFrame+w>=v){w=v-(u+1)}r.curFrame+=w}}};g.Bezier=new function(){this.getPosition=function(p,o){var r=p.length,m=[],q=1-o,l,k;for(l=0;l<r;++l){m[l]=[p[l][0],p[l][1]]}for(k=1;k<r;++k){for(l=0;l<r-k;++l){m[l][0]=q*m[l][0]+o*m[parseInt(l+1,10)][0];m[l][1]=q*m[l][1]+o*m[parseInt(l+1,10)][1]}}return[m[0][0],m[0][1]]}};g.Easing={easeNone:function(l,k,n,m){return n*l/m+k},easeIn:function(l,k,n,m){return n*(l/=m)*l+k},easeOut:function(l,k,n,m){return -n*(l/=m)*(l-2)+k}};(function(){g.Motion=function(o,n,p,q){if(o){g.Motion.superclass.constructor.call(this,o,n,p,q)}};Ext.extend(g.Motion,Ext.lib.AnimBase);var m=g.Motion.superclass,l=/^points$/i;Ext.apply(g.Motion.prototype,{setAttr:function(n,r,q){var p=this,o=m.setAttr;if(l.test(n)){q=q||"px";o.call(p,"left",r[0],q);o.call(p,"top",r[1],q)}else{o.call(p,n,r,q)}},getAttr:function(n){var p=this,o=m.getAttr;return l.test(n)?[o.call(p,"left"),o.call(p,"top")]:o.call(p,n)},doMethod:function(n,q,o){var p=this;return l.test(n)?g.Bezier.getPosition(p.runAttrs[n],p.method(p.curFrame,0,100,p.totalFrames)/100):m.doMethod.call(p,n,q,o)},setRunAttr:function(u){if(l.test(u)){var w=this,p=this.el,z=this.attributes.points,s=z.control||[],x=z.from,y=z.to,v=z.by,A=g.Dom,o,r,q,t,n;if(s.length>0&&!Ext.isArray(s[0])){s=[s]}else{}Ext.fly(p,"_anim").position();A.setXY(p,j(x)?x:A.getXY(p));o=w.getAttr("points");if(j(y)){q=k.call(w,y,o);for(r=0,t=s.length;r<t;++r){s[r]=k.call(w,s[r],o)}}else{if(j(v)){q=[o[0]+v[0],o[1]+v[1]];for(r=0,t=s.length;r<t;++r){s[r]=[o[0]+s[r][0],o[1]+s[r][1]]}}}n=this.runAttrs[u]=[o];if(s.length>0){n=n.concat(s)}n[n.length]=q}else{m.setRunAttr.call(this,u)}}});var k=function(n,p){var o=g.Dom.getXY(this.el);return[n[0]-o[0]+p[0],n[1]-o[1]+p[1]]}})()})();(function(){var d=Math.abs,i=Math.PI,h=Math.asin,g=Math.pow,e=Math.sin,f=Ext.lib;Ext.apply(f.Easing,{easeBoth:function(k,j,m,l){return((k/=l/2)<1)?m/2*k*k+j:-m/2*((--k)*(k-2)-1)+j},easeInStrong:function(k,j,m,l){return m*(k/=l)*k*k*k+j},easeOutStrong:function(k,j,m,l){return -m*((k=k/l-1)*k*k*k-1)+j},easeBothStrong:function(k,j,m,l){return((k/=l/2)<1)?m/2*k*k*k*k+j:-m/2*((k-=2)*k*k*k-2)+j},elasticIn:function(l,j,q,o,k,n){if(l==0||(l/=o)==1){return l==0?j:j+q}n=n||(o*0.3);var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return -(k*g(2,10*(l-=1))*e((l*o-m)*(2*i)/n))+j},elasticOut:function(l,j,q,o,k,n){if(l==0||(l/=o)==1){return l==0?j:j+q}n=n||(o*0.3);var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return k*g(2,-10*l)*e((l*o-m)*(2*i)/n)+q+j},elasticBoth:function(l,j,q,o,k,n){if(l==0||(l/=o/2)==2){return l==0?j:j+q}n=n||(o*(0.3*1.5));var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return l<1?-0.5*(k*g(2,10*(l-=1))*e((l*o-m)*(2*i)/n))+j:k*g(2,-10*(l-=1))*e((l*o-m)*(2*i)/n)*0.5+q+j},backIn:function(k,j,n,m,l){l=l||1.70158;return n*(k/=m)*k*((l+1)*k-l)+j},backOut:function(k,j,n,m,l){if(!l){l=1.70158}return n*((k=k/m-1)*k*((l+1)*k+l)+1)+j},backBoth:function(k,j,n,m,l){l=l||1.70158;return((k/=m/2)<1)?n/2*(k*k*(((l*=(1.525))+1)*k-l))+j:n/2*((k-=2)*k*(((l*=(1.525))+1)*k+l)+2)+j},bounceIn:function(k,j,m,l){return m-f.Easing.bounceOut(l-k,0,m,l)+j},bounceOut:function(k,j,m,l){if((k/=l)<(1/2.75)){return m*(7.5625*k*k)+j}else{if(k<(2/2.75)){return m*(7.5625*(k-=(1.5/2.75))*k+0.75)+j}else{if(k<(2.5/2.75)){return m*(7.5625*(k-=(2.25/2.75))*k+0.9375)+j}}}return m*(7.5625*(k-=(2.625/2.75))*k+0.984375)+j},bounceBoth:function(k,j,m,l){return(k<l/2)?f.Easing.bounceIn(k*2,0,m,l)*0.5+j:f.Easing.bounceOut(k*2-l,0,m,l)*0.5+m*0.5+j}})})();(function(){var h=Ext.lib;h.Anim.color=function(p,n,q,r,m,o){return h.Anim.run(p,n,q,r,m,o,h.ColorAnim)};h.ColorAnim=function(n,m,o,p){h.ColorAnim.superclass.constructor.call(this,n,m,o,p)};Ext.extend(h.ColorAnim,h.AnimBase);var j=h.ColorAnim.superclass,i=/color$/i,f=/^transparent|rgba\(0, 0, 0, 0\)$/,l=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,d=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,e=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,g=function(m){return typeof m!=="undefined"};function k(n){var p=parseInt,o,m=null,q;if(n.length==3){return n}Ext.each([d,l,e],function(s,r){o=(r%2==0)?16:10;q=s.exec(n);if(q&&q.length==4){m=[p(q[1],o),p(q[2],o),p(q[3],o)];return false}});return m}Ext.apply(h.ColorAnim.prototype,{getAttr:function(m){var o=this,n=o.el,p;if(i.test(m)){while(n&&f.test(p=Ext.fly(n).getStyle(m))){n=n.parentNode;p="fff"}}else{p=j.getAttr.call(o,m)}return p},doMethod:function(s,m,o){var t=this,n,q=Math.floor,p,r,u;if(i.test(s)){n=[];o=o||[];for(p=0,r=m.length;p<r;p++){u=m[p];n[p]=j.doMethod.call(t,s,u,o[p])}n="rgb("+q(n[0])+","+q(n[1])+","+q(n[2])+")"}else{n=j.doMethod.call(t,s,m,o)}return n},setRunAttr:function(r){var t=this,u=t.attributes[r],v=u.to,s=u.by,n;j.setRunAttr.call(t,r);n=t.runAttrs[r];if(i.test(r)){var m=k(n.start),o=k(n.end);if(!g(v)&&g(s)){o=k(s);for(var p=0,q=m.length;p<q;p++){o[p]=m[p]+o[p]}}n.start=m;n.end=o}}})})();(function(){var d=Ext.lib;d.Anim.scroll=function(j,h,k,l,g,i){return d.Anim.run(j,h,k,l,g,i,d.Scroll)};d.Scroll=function(h,g,i,j){if(h){d.Scroll.superclass.constructor.call(this,h,g,i,j)}};Ext.extend(d.Scroll,d.ColorAnim);var f=d.Scroll.superclass,e="scroll";Ext.apply(d.Scroll.prototype,{doMethod:function(g,m,h){var k,j=this,l=j.curFrame,i=j.totalFrames;if(g==e){k=[j.method(l,m[0],h[0]-m[0],i),j.method(l,m[1],h[1]-m[1],i)]}else{k=f.doMethod.call(j,g,m,h)}return k},getAttr:function(g){var h=this;if(g==e){return[h.el.scrollLeft,h.el.scrollTop]}else{return f.getAttr.call(h,g)}},setAttr:function(g,j,i){var h=this;if(g==e){h.el.scrollLeft=j[0];h.el.scrollTop=j[1]}else{f.setAttr.call(h,g,j,i)}}})})();if(Ext.isIE9m){function a(){var d=Function.prototype;delete d.createSequence;delete d.defer;delete d.createDelegate;delete d.createCallback;delete d.createInterceptor;window.detachEvent("onunload",a)}window.attachEvent("onunload",a)}})(); \ No newline at end of file
diff --git a/deluge/ui/web/js/extjs/ext-extensions/JSLoader.js b/deluge/ui/web/js/extjs/ext-extensions/JSLoader.js
new file mode 100644
index 0000000..e4691b0
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/JSLoader.js
@@ -0,0 +1,40 @@
+Ext.ux.JSLoader = function (options) {
+ Ext.ux.JSLoader.scripts[++Ext.ux.JSLoader.index] = {
+ url: options.url,
+ success: true,
+ jsLoadObj: null,
+ options: options,
+ onLoad: options.onLoad || Ext.emptyFn,
+ onError: options.onError || Ext.ux.JSLoader.stdError,
+ scope: options.scope || this,
+ };
+
+ Ext.Ajax.request({
+ url: options.url,
+ scriptIndex: Ext.ux.JSLoader.index,
+ success: function (response, options) {
+ var script = Ext.ux.JSLoader.scripts[options.scriptIndex];
+ try {
+ eval(response.responseText);
+ } catch (e) {
+ script.success = false;
+ script.onError(script.options, e);
+ }
+ if (script.success) {
+ script.onLoad.call(script.scope, script.options);
+ }
+ },
+ failure: function (response, options) {
+ var script = Ext.ux.JSLoader.scripts[options.scriptIndex];
+ script.success = false;
+ script.onError(script.options, response.status);
+ },
+ });
+};
+Ext.ux.JSLoader.index = 0;
+Ext.ux.JSLoader.scripts = [];
+Ext.ux.JSLoader.stdError = function (options, e) {
+ window.alert(
+ 'Error loading script:\n\n' + options.url + '\n\nstatus: ' + e
+ );
+};
diff --git a/deluge/ui/web/js/extjs/ext-extensions/Spinner.js b/deluge/ui/web/js/extjs/ext-extensions/Spinner.js
new file mode 100644
index 0000000..ccef895
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/Spinner.js
@@ -0,0 +1,474 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/**
+ * @class Ext.ux.Spinner
+ * @extends Ext.util.Observable
+ * Creates a Spinner control utilized by Ext.ux.form.SpinnerField
+ */
+Ext.ux.Spinner = Ext.extend(Ext.util.Observable, {
+ incrementValue: 1,
+ alternateIncrementValue: 5,
+ triggerClass: 'x-form-spinner-trigger',
+ splitterClass: 'x-form-spinner-splitter',
+ alternateKey: Ext.EventObject.shiftKey,
+ defaultValue: 0,
+ accelerate: false,
+
+ constructor: function (config) {
+ Ext.ux.Spinner.superclass.constructor.call(this, config);
+ Ext.apply(this, config);
+ this.mimicing = false;
+ },
+
+ init: function (field) {
+ this.field = field;
+
+ field.afterMethod('onRender', this.doRender, this);
+ field.afterMethod('onEnable', this.doEnable, this);
+ field.afterMethod('onDisable', this.doDisable, this);
+ field.afterMethod('afterRender', this.doAfterRender, this);
+ field.afterMethod('onResize', this.doResize, this);
+ field.afterMethod('onFocus', this.doFocus, this);
+ field.beforeMethod('onDestroy', this.doDestroy, this);
+ },
+
+ doRender: function (ct, position) {
+ var el = (this.el = this.field.getEl());
+ var f = this.field;
+
+ if (!f.wrap) {
+ f.wrap = this.wrap = el.wrap({
+ cls: 'x-form-field-wrap',
+ });
+ } else {
+ this.wrap = f.wrap.addClass('x-form-field-wrap');
+ }
+
+ this.trigger = this.wrap.createChild({
+ tag: 'img',
+ src: Ext.BLANK_IMAGE_URL,
+ cls: 'x-form-trigger ' + this.triggerClass,
+ });
+
+ if (!f.width) {
+ this.wrap.setWidth(el.getWidth() + this.trigger.getWidth());
+ }
+
+ this.splitter = this.wrap.createChild({
+ tag: 'div',
+ cls: this.splitterClass,
+ style: 'width:13px; height:2px;',
+ });
+ this.splitter
+ .setRight(Ext.isIE ? 1 : 2)
+ .setTop(10)
+ .show();
+
+ this.proxy = this.trigger.createProxy('', this.splitter, true);
+ this.proxy.addClass('x-form-spinner-proxy');
+ this.proxy.setStyle('left', '0px');
+ this.proxy.setSize(14, 1);
+ this.proxy.hide();
+ this.dd = new Ext.dd.DDProxy(this.splitter.dom.id, 'SpinnerDrag', {
+ dragElId: this.proxy.id,
+ });
+
+ this.initTrigger();
+ this.initSpinner();
+ },
+
+ doAfterRender: function () {
+ var y;
+ if (Ext.isIE && this.el.getY() != (y = this.trigger.getY())) {
+ this.el.position();
+ this.el.setY(y);
+ }
+ },
+
+ doEnable: function () {
+ if (this.wrap) {
+ this.disabled = false;
+ this.wrap.removeClass(this.field.disabledClass);
+ }
+ },
+
+ doDisable: function () {
+ if (this.wrap) {
+ this.disabled = true;
+ this.wrap.addClass(this.field.disabledClass);
+ this.el.removeClass(this.field.disabledClass);
+ }
+ },
+
+ doResize: function (w, h) {
+ if (typeof w == 'number') {
+ this.el.setWidth(w - this.trigger.getWidth());
+ }
+ this.wrap.setWidth(this.el.getWidth() + this.trigger.getWidth());
+ },
+
+ doFocus: function () {
+ if (!this.mimicing) {
+ this.wrap.addClass('x-trigger-wrap-focus');
+ this.mimicing = true;
+ Ext.get(Ext.isIE ? document.body : document).on(
+ 'mousedown',
+ this.mimicBlur,
+ this,
+ {
+ delay: 10,
+ }
+ );
+ this.el.on('keydown', this.checkTab, this);
+ }
+ },
+
+ // private
+ checkTab: function (e) {
+ if (e.getKey() == e.TAB) {
+ this.triggerBlur();
+ }
+ },
+
+ // private
+ mimicBlur: function (e) {
+ if (!this.wrap.contains(e.target) && this.field.validateBlur(e)) {
+ this.triggerBlur();
+ }
+ },
+
+ // private
+ triggerBlur: function () {
+ this.mimicing = false;
+ Ext.get(Ext.isIE ? document.body : document).un(
+ 'mousedown',
+ this.mimicBlur,
+ this
+ );
+ this.el.un('keydown', this.checkTab, this);
+ this.field.beforeBlur();
+ this.wrap.removeClass('x-trigger-wrap-focus');
+ this.field.onBlur.call(this.field);
+ },
+
+ initTrigger: function () {
+ this.trigger.addClassOnOver('x-form-trigger-over');
+ this.trigger.addClassOnClick('x-form-trigger-click');
+ },
+
+ initSpinner: function () {
+ this.field.addEvents({
+ spin: true,
+ spinup: true,
+ spindown: true,
+ });
+
+ this.keyNav = new Ext.KeyNav(this.el, {
+ up: function (e) {
+ e.preventDefault();
+ this.onSpinUp();
+ },
+
+ down: function (e) {
+ e.preventDefault();
+ this.onSpinDown();
+ },
+
+ pageUp: function (e) {
+ e.preventDefault();
+ this.onSpinUpAlternate();
+ },
+
+ pageDown: function (e) {
+ e.preventDefault();
+ this.onSpinDownAlternate();
+ },
+
+ scope: this,
+ });
+
+ this.repeater = new Ext.util.ClickRepeater(this.trigger, {
+ accelerate: this.accelerate,
+ });
+ this.field.mon(this.repeater, 'click', this.onTriggerClick, this, {
+ preventDefault: true,
+ });
+
+ this.field.mon(this.trigger, {
+ mouseover: this.onMouseOver,
+ mouseout: this.onMouseOut,
+ mousemove: this.onMouseMove,
+ mousedown: this.onMouseDown,
+ mouseup: this.onMouseUp,
+ scope: this,
+ preventDefault: true,
+ });
+
+ this.field.mon(this.wrap, 'mousewheel', this.handleMouseWheel, this);
+
+ this.dd.setXConstraint(0, 0, 10);
+ this.dd.setYConstraint(1500, 1500, 10);
+ this.dd.endDrag = this.endDrag.createDelegate(this);
+ this.dd.startDrag = this.startDrag.createDelegate(this);
+ this.dd.onDrag = this.onDrag.createDelegate(this);
+ },
+
+ onMouseOver: function () {
+ if (this.disabled) {
+ return;
+ }
+ var middle = this.getMiddle();
+ this.tmpHoverClass =
+ Ext.EventObject.getPageY() < middle
+ ? 'x-form-spinner-overup'
+ : 'x-form-spinner-overdown';
+ this.trigger.addClass(this.tmpHoverClass);
+ },
+
+ //private
+ onMouseOut: function () {
+ this.trigger.removeClass(this.tmpHoverClass);
+ },
+
+ //private
+ onMouseMove: function () {
+ if (this.disabled) {
+ return;
+ }
+ var middle = this.getMiddle();
+ if (
+ (Ext.EventObject.getPageY() > middle &&
+ this.tmpHoverClass == 'x-form-spinner-overup') ||
+ (Ext.EventObject.getPageY() < middle &&
+ this.tmpHoverClass == 'x-form-spinner-overdown')
+ ) {
+ }
+ },
+
+ //private
+ onMouseDown: function () {
+ if (this.disabled) {
+ return;
+ }
+ var middle = this.getMiddle();
+ this.tmpClickClass =
+ Ext.EventObject.getPageY() < middle
+ ? 'x-form-spinner-clickup'
+ : 'x-form-spinner-clickdown';
+ this.trigger.addClass(this.tmpClickClass);
+ },
+
+ //private
+ onMouseUp: function () {
+ this.trigger.removeClass(this.tmpClickClass);
+ },
+
+ //private
+ onTriggerClick: function () {
+ if (this.disabled || this.el.dom.readOnly) {
+ return;
+ }
+ var middle = this.getMiddle();
+ var ud = Ext.EventObject.getPageY() < middle ? 'Up' : 'Down';
+ this['onSpin' + ud]();
+ },
+
+ //private
+ getMiddle: function () {
+ var t = this.trigger.getTop();
+ var h = this.trigger.getHeight();
+ var middle = t + h / 2;
+ return middle;
+ },
+
+ //private
+ //checks if control is allowed to spin
+ isSpinnable: function () {
+ if (this.disabled || this.el.dom.readOnly) {
+ Ext.EventObject.preventDefault(); //prevent scrolling when disabled/readonly
+ return false;
+ }
+ return true;
+ },
+
+ handleMouseWheel: function (e) {
+ //disable scrolling when not focused
+ if (this.wrap.hasClass('x-trigger-wrap-focus') == false) {
+ return;
+ }
+
+ var delta = e.getWheelDelta();
+ if (delta > 0) {
+ this.onSpinUp();
+ e.stopEvent();
+ } else if (delta < 0) {
+ this.onSpinDown();
+ e.stopEvent();
+ }
+ },
+
+ //private
+ startDrag: function () {
+ this.proxy.show();
+ this._previousY = Ext.fly(this.dd.getDragEl()).getTop();
+ },
+
+ //private
+ endDrag: function () {
+ this.proxy.hide();
+ },
+
+ //private
+ onDrag: function () {
+ if (this.disabled) {
+ return;
+ }
+ var y = Ext.fly(this.dd.getDragEl()).getTop();
+ var ud = '';
+
+ if (this._previousY > y) {
+ ud = 'Up';
+ } //up
+ if (this._previousY < y) {
+ ud = 'Down';
+ } //down
+ if (ud != '') {
+ this['onSpin' + ud]();
+ }
+
+ this._previousY = y;
+ },
+
+ //private
+ onSpinUp: function () {
+ if (this.isSpinnable() == false) {
+ return;
+ }
+ if (Ext.EventObject.shiftKey == true) {
+ this.onSpinUpAlternate();
+ return;
+ } else {
+ this.spin(false, false);
+ }
+ this.field.fireEvent('spin', this);
+ this.field.fireEvent('spinup', this);
+ },
+
+ //private
+ onSpinDown: function () {
+ if (this.isSpinnable() == false) {
+ return;
+ }
+ if (Ext.EventObject.shiftKey == true) {
+ this.onSpinDownAlternate();
+ return;
+ } else {
+ this.spin(true, false);
+ }
+ this.field.fireEvent('spin', this);
+ this.field.fireEvent('spindown', this);
+ },
+
+ //private
+ onSpinUpAlternate: function () {
+ if (this.isSpinnable() == false) {
+ return;
+ }
+ this.spin(false, true);
+ this.field.fireEvent('spin', this);
+ this.field.fireEvent('spinup', this);
+ },
+
+ //private
+ onSpinDownAlternate: function () {
+ if (this.isSpinnable() == false) {
+ return;
+ }
+ this.spin(true, true);
+ this.field.fireEvent('spin', this);
+ this.field.fireEvent('spindown', this);
+ },
+
+ spin: function (down, alternate) {
+ var v = parseFloat(this.field.getValue());
+ var incr =
+ alternate == true
+ ? this.alternateIncrementValue
+ : this.incrementValue;
+ down == true ? (v -= incr) : (v += incr);
+
+ v = isNaN(v) ? this.defaultValue : v;
+ v = this.fixBoundries(v);
+ this.field.setRawValue(v);
+ },
+
+ fixBoundries: function (value) {
+ var v = value;
+
+ if (this.field.minValue != undefined && v < this.field.minValue) {
+ v = this.field.minValue;
+ }
+ if (this.field.maxValue != undefined && v > this.field.maxValue) {
+ v = this.field.maxValue;
+ }
+
+ return this.fixPrecision(v);
+ },
+
+ // private
+ fixPrecision: function (value) {
+ var nan = isNaN(value);
+ if (
+ !this.field.allowDecimals ||
+ this.field.decimalPrecision == -1 ||
+ nan ||
+ !value
+ ) {
+ return nan ? '' : value;
+ }
+ return parseFloat(
+ parseFloat(value).toFixed(this.field.decimalPrecision)
+ );
+ },
+
+ doDestroy: function () {
+ if (this.trigger) {
+ this.trigger.remove();
+ }
+ if (this.wrap) {
+ this.wrap.remove();
+ delete this.field.wrap;
+ }
+
+ if (this.splitter) {
+ this.splitter.remove();
+ }
+
+ if (this.dd) {
+ this.dd.unreg();
+ this.dd = null;
+ }
+
+ if (this.proxy) {
+ this.proxy.remove();
+ }
+
+ if (this.repeater) {
+ this.repeater.purgeListeners();
+ }
+ if (this.mimicing) {
+ Ext.get(Ext.isIE ? document.body : document).un(
+ 'mousedown',
+ this.mimicBlur,
+ this
+ );
+ }
+ },
+});
+
+//backwards compat
+Ext.form.Spinner = Ext.ux.Spinner;
diff --git a/deluge/ui/web/js/extjs/ext-extensions/StatusBar.js b/deluge/ui/web/js/extjs/ext-extensions/StatusBar.js
new file mode 100644
index 0000000..1f6a5f0
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/StatusBar.js
@@ -0,0 +1,422 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/**
+ * @class Ext.ux.StatusBar
+ * <p>Basic status bar component that can be used as the bottom toolbar of any {@link Ext.Panel}. In addition to
+ * supporting the standard {@link Ext.Toolbar} interface for adding buttons, menus and other items, the StatusBar
+ * provides a greedy status element that can be aligned to either side and has convenient methods for setting the
+ * status text and icon. You can also indicate that something is processing using the {@link #showBusy} method.</p>
+ * <pre><code>
+new Ext.Panel({
+ title: 'StatusBar',
+ // etc.
+ bbar: new Ext.ux.StatusBar({
+ id: 'my-status',
+
+ // defaults to use when the status is cleared:
+ defaultText: 'Default status text',
+ defaultIconCls: 'default-icon',
+
+ // values to set initially:
+ text: 'Ready',
+ iconCls: 'ready-icon',
+
+ // any standard Toolbar items:
+ items: [{
+ text: 'A Button'
+ }, '-', 'Plain Text']
+ })
+});
+
+// Update the status bar later in code:
+var sb = Ext.getCmp('my-status');
+sb.setStatus({
+ text: 'OK',
+ iconCls: 'ok-icon',
+ clear: true // auto-clear after a set interval
+});
+
+// Set the status bar to show that something is processing:
+sb.showBusy();
+
+// processing....
+
+sb.clearStatus(); // once completeed
+</code></pre>
+ * @extends Ext.Toolbar
+ * @constructor
+ * Creates a new StatusBar
+ * @param {Object/Array} config A config object
+ */
+Ext.ux.StatusBar = Ext.extend(Ext.Toolbar, {
+ /**
+ * @cfg {String} statusAlign
+ * The alignment of the status element within the overall StatusBar layout. When the StatusBar is rendered,
+ * it creates an internal div containing the status text and icon. Any additional Toolbar items added in the
+ * StatusBar's {@link #items} config, or added via {@link #add} or any of the supported add* methods, will be
+ * rendered, in added order, to the opposite side. The status element is greedy, so it will automatically
+ * expand to take up all sapce left over by any other items. Example usage:
+ * <pre><code>
+// Create a left-aligned status bar containing a button,
+// separator and text item that will be right-aligned (default):
+new Ext.Panel({
+ title: 'StatusBar',
+ // etc.
+ bbar: new Ext.ux.StatusBar({
+ defaultText: 'Default status text',
+ id: 'status-id',
+ items: [{
+ text: 'A Button'
+ }, '-', 'Plain Text']
+ })
+});
+
+// By adding the statusAlign config, this will create the
+// exact same toolbar, except the status and toolbar item
+// layout will be reversed from the previous example:
+new Ext.Panel({
+ title: 'StatusBar',
+ // etc.
+ bbar: new Ext.ux.StatusBar({
+ defaultText: 'Default status text',
+ id: 'status-id',
+ statusAlign: 'right',
+ items: [{
+ text: 'A Button'
+ }, '-', 'Plain Text']
+ })
+});
+</code></pre>
+ */
+ /**
+ * @cfg {String} defaultText
+ * The default {@link #text} value. This will be used anytime the status bar is cleared with the
+ * <tt>useDefaults:true</tt> option (defaults to '').
+ */
+ /**
+ * @cfg {String} defaultIconCls
+ * The default {@link #iconCls} value (see the iconCls docs for additional details about customizing the icon).
+ * This will be used anytime the status bar is cleared with the <tt>useDefaults:true</tt> option (defaults to '').
+ */
+ /**
+ * @cfg {String} text
+ * A string that will be <b>initially</b> set as the status message. This string
+ * will be set as innerHTML (html tags are accepted) for the toolbar item.
+ * If not specified, the value set for <code>{@link #defaultText}</code>
+ * will be used.
+ */
+ /**
+ * @cfg {String} iconCls
+ * A CSS class that will be <b>initially</b> set as the status bar icon and is
+ * expected to provide a background image (defaults to '').
+ * Example usage:<pre><code>
+// Example CSS rule:
+.x-statusbar .x-status-custom {
+ padding-left: 25px;
+ background: transparent url(images/custom-icon.gif) no-repeat 3px 2px;
+}
+
+// Setting a default icon:
+var sb = new Ext.ux.StatusBar({
+ defaultIconCls: 'x-status-custom'
+});
+
+// Changing the icon:
+sb.setStatus({
+ text: 'New status',
+ iconCls: 'x-status-custom'
+});
+</code></pre>
+ */
+
+ /**
+ * @cfg {String} cls
+ * The base class applied to the containing element for this component on render (defaults to 'x-statusbar')
+ */
+ cls: 'x-statusbar',
+ /**
+ * @cfg {String} busyIconCls
+ * The default <code>{@link #iconCls}</code> applied when calling
+ * <code>{@link #showBusy}</code> (defaults to <tt>'x-status-busy'</tt>).
+ * It can be overridden at any time by passing the <code>iconCls</code>
+ * argument into <code>{@link #showBusy}</code>.
+ */
+ busyIconCls: 'x-status-busy',
+ /**
+ * @cfg {String} busyText
+ * The default <code>{@link #text}</code> applied when calling
+ * <code>{@link #showBusy}</code> (defaults to <tt>'Loading...'</tt>).
+ * It can be overridden at any time by passing the <code>text</code>
+ * argument into <code>{@link #showBusy}</code>.
+ */
+ busyText: 'Loading...',
+ /**
+ * @cfg {Number} autoClear
+ * The number of milliseconds to wait after setting the status via
+ * <code>{@link #setStatus}</code> before automatically clearing the status
+ * text and icon (defaults to <tt>5000</tt>). Note that this only applies
+ * when passing the <tt>clear</tt> argument to <code>{@link #setStatus}</code>
+ * since that is the only way to defer clearing the status. This can
+ * be overridden by specifying a different <tt>wait</tt> value in
+ * <code>{@link #setStatus}</code>. Calls to <code>{@link #clearStatus}</code>
+ * always clear the status bar immediately and ignore this value.
+ */
+ autoClear: 5000,
+
+ /**
+ * @cfg {String} emptyText
+ * The text string to use if no text has been set. Defaults to
+ * <tt>'&nbsp;'</tt>). If there are no other items in the toolbar using
+ * an empty string (<tt>''</tt>) for this value would end up in the toolbar
+ * height collapsing since the empty string will not maintain the toolbar
+ * height. Use <tt>''</tt> if the toolbar should collapse in height
+ * vertically when no text is specified and there are no other items in
+ * the toolbar.
+ */
+ emptyText: '&nbsp;',
+
+ // private
+ activeThreadId: 0,
+
+ // private
+ initComponent: function () {
+ if (this.statusAlign == 'right') {
+ this.cls += ' x-status-right';
+ }
+ Ext.ux.StatusBar.superclass.initComponent.call(this);
+ },
+
+ // private
+ afterRender: function () {
+ Ext.ux.StatusBar.superclass.afterRender.call(this);
+
+ var right = this.statusAlign == 'right';
+ this.currIconCls = this.iconCls || this.defaultIconCls;
+ this.statusEl = new Ext.Toolbar.TextItem({
+ cls: 'x-status-text ' + (this.currIconCls || ''),
+ text: this.text || this.defaultText || '',
+ });
+
+ if (right) {
+ this.add('->');
+ this.add(this.statusEl);
+ } else {
+ this.insert(0, this.statusEl);
+ this.insert(1, '->');
+ }
+ this.doLayout();
+ },
+
+ /**
+ * Sets the status {@link #text} and/or {@link #iconCls}. Also supports automatically clearing the
+ * status that was set after a specified interval.
+ * @param {Object/String} config A config object specifying what status to set, or a string assumed
+ * to be the status text (and all other options are defaulted as explained below). A config
+ * object containing any or all of the following properties can be passed:<ul>
+ * <li><tt>text</tt> {String} : (optional) The status text to display. If not specified, any current
+ * status text will remain unchanged.</li>
+ * <li><tt>iconCls</tt> {String} : (optional) The CSS class used to customize the status icon (see
+ * {@link #iconCls} for details). If not specified, any current iconCls will remain unchanged.</li>
+ * <li><tt>clear</tt> {Boolean/Number/Object} : (optional) Allows you to set an internal callback that will
+ * automatically clear the status text and iconCls after a specified amount of time has passed. If clear is not
+ * specified, the new status will not be auto-cleared and will stay until updated again or cleared using
+ * {@link #clearStatus}. If <tt>true</tt> is passed, the status will be cleared using {@link #autoClear},
+ * {@link #defaultText} and {@link #defaultIconCls} via a fade out animation. If a numeric value is passed,
+ * it will be used as the callback interval (in milliseconds), overriding the {@link #autoClear} value.
+ * All other options will be defaulted as with the boolean option. To customize any other options,
+ * you can pass an object in the format:<ul>
+ * <li><tt>wait</tt> {Number} : (optional) The number of milliseconds to wait before clearing
+ * (defaults to {@link #autoClear}).</li>
+ * <li><tt>anim</tt> {Number} : (optional) False to clear the status immediately once the callback
+ * executes (defaults to true which fades the status out).</li>
+ * <li><tt>useDefaults</tt> {Number} : (optional) False to completely clear the status text and iconCls
+ * (defaults to true which uses {@link #defaultText} and {@link #defaultIconCls}).</li>
+ * </ul></li></ul>
+ * Example usage:<pre><code>
+// Simple call to update the text
+statusBar.setStatus('New status');
+
+// Set the status and icon, auto-clearing with default options:
+statusBar.setStatus({
+ text: 'New status',
+ iconCls: 'x-status-custom',
+ clear: true
+});
+
+// Auto-clear with custom options:
+statusBar.setStatus({
+ text: 'New status',
+ iconCls: 'x-status-custom',
+ clear: {
+ wait: 8000,
+ anim: false,
+ useDefaults: false
+ }
+});
+</code></pre>
+ * @return {Ext.ux.StatusBar} this
+ */
+ setStatus: function (o) {
+ o = o || {};
+
+ if (typeof o == 'string') {
+ o = { text: o };
+ }
+ if (o.text !== undefined) {
+ this.setText(o.text);
+ }
+ if (o.iconCls !== undefined) {
+ this.setIcon(o.iconCls);
+ }
+
+ if (o.clear) {
+ var c = o.clear,
+ wait = this.autoClear,
+ defaults = { useDefaults: true, anim: true };
+
+ if (typeof c == 'object') {
+ c = Ext.applyIf(c, defaults);
+ if (c.wait) {
+ wait = c.wait;
+ }
+ } else if (typeof c == 'number') {
+ wait = c;
+ c = defaults;
+ } else if (typeof c == 'boolean') {
+ c = defaults;
+ }
+
+ c.threadId = this.activeThreadId;
+ this.clearStatus.defer(wait, this, [c]);
+ }
+ return this;
+ },
+
+ /**
+ * Clears the status {@link #text} and {@link #iconCls}. Also supports clearing via an optional fade out animation.
+ * @param {Object} config (optional) A config object containing any or all of the following properties. If this
+ * object is not specified the status will be cleared using the defaults below:<ul>
+ * <li><tt>anim</tt> {Boolean} : (optional) True to clear the status by fading out the status element (defaults
+ * to false which clears immediately).</li>
+ * <li><tt>useDefaults</tt> {Boolean} : (optional) True to reset the text and icon using {@link #defaultText} and
+ * {@link #defaultIconCls} (defaults to false which sets the text to '' and removes any existing icon class).</li>
+ * </ul>
+ * @return {Ext.ux.StatusBar} this
+ */
+ clearStatus: function (o) {
+ o = o || {};
+
+ if (o.threadId && o.threadId !== this.activeThreadId) {
+ // this means the current call was made internally, but a newer
+ // thread has set a message since this call was deferred. Since
+ // we don't want to overwrite a newer message just ignore.
+ return this;
+ }
+
+ var text = o.useDefaults ? this.defaultText : this.emptyText,
+ iconCls = o.useDefaults
+ ? this.defaultIconCls
+ ? this.defaultIconCls
+ : ''
+ : '';
+
+ if (o.anim) {
+ // animate the statusEl Ext.Element
+ this.statusEl.el.fadeOut({
+ remove: false,
+ useDisplay: true,
+ scope: this,
+ callback: function () {
+ this.setStatus({
+ text: text,
+ iconCls: iconCls,
+ });
+
+ this.statusEl.el.show();
+ },
+ });
+ } else {
+ // hide/show the el to avoid jumpy text or icon
+ this.statusEl.hide();
+ this.setStatus({
+ text: text,
+ iconCls: iconCls,
+ });
+ this.statusEl.show();
+ }
+ return this;
+ },
+
+ /**
+ * Convenience method for setting the status text directly. For more flexible options see {@link #setStatus}.
+ * @param {String} text (optional) The text to set (defaults to '')
+ * @return {Ext.ux.StatusBar} this
+ */
+ setText: function (text) {
+ this.activeThreadId++;
+ this.text = text || '';
+ if (this.rendered) {
+ this.statusEl.setText(this.text);
+ }
+ return this;
+ },
+
+ /**
+ * Returns the current status text.
+ * @return {String} The status text
+ */
+ getText: function () {
+ return this.text;
+ },
+
+ /**
+ * Convenience method for setting the status icon directly. For more flexible options see {@link #setStatus}.
+ * See {@link #iconCls} for complete details about customizing the icon.
+ * @param {String} iconCls (optional) The icon class to set (defaults to '', and any current icon class is removed)
+ * @return {Ext.ux.StatusBar} this
+ */
+ setIcon: function (cls) {
+ this.activeThreadId++;
+ cls = cls || '';
+
+ if (this.rendered) {
+ if (this.currIconCls) {
+ this.statusEl.removeClass(this.currIconCls);
+ this.currIconCls = null;
+ }
+ if (cls.length > 0) {
+ this.statusEl.addClass(cls);
+ this.currIconCls = cls;
+ }
+ } else {
+ this.currIconCls = cls;
+ }
+ return this;
+ },
+
+ /**
+ * Convenience method for setting the status text and icon to special values that are pre-configured to indicate
+ * a "busy" state, usually for loading or processing activities.
+ * @param {Object/String} config (optional) A config object in the same format supported by {@link #setStatus}, or a
+ * string to use as the status text (in which case all other options for setStatus will be defaulted). Use the
+ * <tt>text</tt> and/or <tt>iconCls</tt> properties on the config to override the default {@link #busyText}
+ * and {@link #busyIconCls} settings. If the config argument is not specified, {@link #busyText} and
+ * {@link #busyIconCls} will be used in conjunction with all of the default options for {@link #setStatus}.
+ * @return {Ext.ux.StatusBar} this
+ */
+ showBusy: function (o) {
+ if (typeof o == 'string') {
+ o = { text: o };
+ }
+ o = Ext.applyIf(o || {}, {
+ text: this.busyText,
+ iconCls: this.busyIconCls,
+ });
+ return this.setStatus(o);
+ },
+});
+Ext.reg('statusbar', Ext.ux.StatusBar);
diff --git a/deluge/ui/web/js/extjs/ext-extensions/form/FileUploadField.js b/deluge/ui/web/js/extjs/ext-extensions/form/FileUploadField.js
new file mode 100644
index 0000000..3ab2347
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/form/FileUploadField.js
@@ -0,0 +1,208 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+Ext.ns('Ext.ux.form');
+
+/**
+ * @class Ext.ux.form.FileUploadField
+ * @extends Ext.form.TextField
+ * Creates a file upload field.
+ * @xtype fileuploadfield
+ */
+Ext.ux.form.FileUploadField = Ext.extend(Ext.form.TextField, {
+ /**
+ * @cfg {String} buttonText The button text to display on the upload button (defaults to
+ * 'Browse...'). Note that if you supply a value for {@link #buttonCfg}, the buttonCfg.text
+ * value will be used instead if available.
+ */
+ buttonText: 'Browse...',
+ /**
+ * @cfg {Boolean} buttonOnly True to display the file upload field as a button with no visible
+ * text field (defaults to false). If true, all inherited TextField members will still be available.
+ */
+ buttonOnly: false,
+ /**
+ * @cfg {Number} buttonOffset The number of pixels of space reserved between the button and the text field
+ * (defaults to 3). Note that this only applies if {@link #buttonOnly} = false.
+ */
+ buttonOffset: 3,
+
+ /**
+ * @cfg {Boolean} multiple True to select more than one file. (defaults to false).
+ * Note that this only applies if the HTML doc is using HTML5.
+ */
+ multiple: false,
+
+ /**
+ * @cfg {Object} buttonCfg A standard {@link Ext.Button} config object.
+ */
+
+ // private
+ readOnly: true,
+
+ /**
+ * @hide
+ * @method autoSize
+ */
+ autoSize: Ext.emptyFn,
+
+ // private
+ initComponent: function () {
+ Ext.ux.form.FileUploadField.superclass.initComponent.call(this);
+
+ this.addEvents(
+ /**
+ * @event fileselected
+ * Fires when the underlying file input field's value has changed from the user
+ * selecting a new file from the system file selection dialog.
+ * @param {Ext.ux.form.FileUploadField} this
+ * @param {String} value The file value returned by the underlying file input field
+ */
+ 'fileselected'
+ );
+ },
+
+ // private
+ onRender: function (ct, position) {
+ Ext.ux.form.FileUploadField.superclass.onRender.call(
+ this,
+ ct,
+ position
+ );
+
+ this.wrap = this.el.wrap({ cls: 'x-form-field-wrap x-form-file-wrap' });
+ this.el.addClass('x-form-file-text');
+ this.el.dom.removeAttribute('name');
+ this.createFileInput();
+
+ var btnCfg = Ext.applyIf(this.buttonCfg || {}, {
+ text: this.buttonText,
+ });
+ this.button = new Ext.Button(
+ Ext.apply(btnCfg, {
+ renderTo: this.wrap,
+ cls: 'x-form-file-btn' + (btnCfg.iconCls ? ' x-btn-icon' : ''),
+ })
+ );
+
+ if (this.buttonOnly) {
+ this.el.hide();
+ this.wrap.setWidth(this.button.getEl().getWidth());
+ }
+
+ this.bindListeners();
+ this.resizeEl = this.positionEl = this.wrap;
+ },
+
+ bindListeners: function () {
+ this.fileInput.on({
+ scope: this,
+ mouseenter: function () {
+ this.button.addClass(['x-btn-over', 'x-btn-focus']);
+ },
+ mouseleave: function () {
+ this.button.removeClass([
+ 'x-btn-over',
+ 'x-btn-focus',
+ 'x-btn-click',
+ ]);
+ },
+ mousedown: function () {
+ this.button.addClass('x-btn-click');
+ },
+ mouseup: function () {
+ this.button.removeClass([
+ 'x-btn-over',
+ 'x-btn-focus',
+ 'x-btn-click',
+ ]);
+ },
+ change: function () {
+ var value = this.fileInput.dom.files;
+ // Fallback to value.
+ if (!value) value = this.fileInput.dom.value;
+ this.setValue(value);
+ this.fireEvent('fileselected', this, value);
+ },
+ });
+ },
+
+ createFileInput: function () {
+ this.fileInput = this.wrap.createChild({
+ id: this.getFileInputId(),
+ name: this.name || this.getId(),
+ cls: 'x-form-file',
+ tag: 'input',
+ type: 'file',
+ size: 1,
+ });
+ this.fileInput.dom.multiple = this.multiple;
+ },
+
+ reset: function () {
+ if (this.rendered) {
+ this.fileInput.remove();
+ this.createFileInput();
+ this.bindListeners();
+ }
+ Ext.ux.form.FileUploadField.superclass.reset.call(this);
+ },
+
+ // private
+ getFileInputId: function () {
+ return this.id + '-file';
+ },
+
+ // private
+ onResize: function (w, h) {
+ Ext.ux.form.FileUploadField.superclass.onResize.call(this, w, h);
+
+ this.wrap.setWidth(w);
+
+ if (!this.buttonOnly) {
+ var w =
+ this.wrap.getWidth() -
+ this.button.getEl().getWidth() -
+ this.buttonOffset;
+ this.el.setWidth(w);
+ }
+ },
+
+ // private
+ onDestroy: function () {
+ Ext.ux.form.FileUploadField.superclass.onDestroy.call(this);
+ Ext.destroy(this.fileInput, this.button, this.wrap);
+ },
+
+ onDisable: function () {
+ Ext.ux.form.FileUploadField.superclass.onDisable.call(this);
+ this.doDisable(true);
+ },
+
+ onEnable: function () {
+ Ext.ux.form.FileUploadField.superclass.onEnable.call(this);
+ this.doDisable(false);
+ },
+
+ // private
+ doDisable: function (disabled) {
+ this.fileInput.dom.disabled = disabled;
+ this.button.setDisabled(disabled);
+ },
+
+ // private
+ preFocus: Ext.emptyFn,
+
+ // private
+ alignErrorIcon: function () {
+ this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]);
+ },
+});
+
+Ext.reg('fileuploadfield', Ext.ux.form.FileUploadField);
+
+// backwards compat
+Ext.form.FileUploadField = Ext.ux.form.FileUploadField;
diff --git a/deluge/ui/web/js/extjs/ext-extensions/form/RadioGroupFix.js b/deluge/ui/web/js/extjs/ext-extensions/form/RadioGroupFix.js
new file mode 100644
index 0000000..416c098
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/form/RadioGroupFix.js
@@ -0,0 +1,50 @@
+/**
+ * Ext.ux.form.RadioGroup.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+// Allow radiogroups to be treated as a single form element.
+Ext.override(Ext.form.RadioGroup, {
+ afterRender: function () {
+ this.items.each(function (i) {
+ this.relayEvents(i, ['check']);
+ }, this);
+ if (this.lazyValue) {
+ this.setValue(this.value);
+ delete this.value;
+ delete this.lazyValue;
+ }
+ Ext.form.RadioGroup.superclass.afterRender.call(this);
+ },
+
+ getName: function () {
+ return this.items.first().getName();
+ },
+
+ getValue: function () {
+ return this.items.first().getGroupValue();
+ },
+
+ setValue: function (v) {
+ if (!this.items.each) {
+ this.value = v;
+ this.lazyValue = true;
+ return;
+ }
+ this.items.each(function (item) {
+ if (item.rendered) {
+ var checked = item.el.getValue() == String(v);
+ item.el.dom.checked = checked;
+ item.el.dom.defaultChecked = checked;
+ item.wrap[checked ? 'addClass' : 'removeClass'](
+ item.checkedCls
+ );
+ }
+ });
+ },
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerField.js b/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerField.js
new file mode 100644
index 0000000..890fb5b
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerField.js
@@ -0,0 +1,68 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+Ext.ns('Ext.ux.form');
+
+/**
+ * @class Ext.ux.form.SpinnerField
+ * @extends Ext.form.NumberField
+ * Creates a field utilizing Ext.ux.Spinner
+ * @xtype spinnerfield
+ */
+Ext.ux.form.SpinnerField = Ext.extend(Ext.form.NumberField, {
+ actionMode: 'wrap',
+ deferHeight: true,
+ autoSize: Ext.emptyFn,
+ onBlur: Ext.emptyFn,
+ adjustSize: Ext.BoxComponent.prototype.adjustSize,
+
+ constructor: function (config) {
+ var spinnerConfig = Ext.copyTo(
+ {},
+ config,
+ 'incrementValue,alternateIncrementValue,accelerate,defaultValue,triggerClass,splitterClass'
+ );
+
+ var spl = (this.spinner = new Ext.ux.Spinner(spinnerConfig));
+
+ var plugins = config.plugins
+ ? Ext.isArray(config.plugins)
+ ? config.plugins.push(spl)
+ : [config.plugins, spl]
+ : spl;
+
+ Ext.ux.form.SpinnerField.superclass.constructor.call(
+ this,
+ Ext.apply(config, { plugins: plugins })
+ );
+ },
+
+ // private
+ getResizeEl: function () {
+ return this.wrap;
+ },
+
+ // private
+ getPositionEl: function () {
+ return this.wrap;
+ },
+
+ // private
+ alignErrorIcon: function () {
+ if (this.wrap) {
+ this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]);
+ }
+ },
+
+ validateBlur: function () {
+ return true;
+ },
+});
+
+Ext.reg('spinnerfield', Ext.ux.form.SpinnerField);
+
+//backwards compat
+Ext.form.SpinnerField = Ext.ux.form.SpinnerField;
diff --git a/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerFieldFix.js b/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerFieldFix.js
new file mode 100644
index 0000000..6784ae0
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerFieldFix.js
@@ -0,0 +1,13 @@
+/**
+ * Ext.ux.form.SpinnerField.js
+ *
+ * Copyright (c) Damien Churchill 2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.override(Ext.ux.form.SpinnerField, {
+ onBlur: Ext.form.Field.prototype.onBlur,
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerGroup.js b/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerGroup.js
new file mode 100644
index 0000000..ee761aa
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/form/SpinnerGroup.js
@@ -0,0 +1,205 @@
+/**
+ * Ext.ux.form.SpinnerGroup.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.ns('Ext.ux.form');
+
+/**
+ *
+ */
+Ext.ux.form.SpinnerGroup = Ext.extend(Ext.form.CheckboxGroup, {
+ // private
+ defaultType: 'spinnerfield',
+ anchor: '98%',
+
+ // private
+ groupCls: 'x-form-spinner-group',
+
+ colCfg: {},
+
+ // private
+ onRender: function (ct, position) {
+ if (!this.el) {
+ var panelCfg = {
+ cls: this.groupCls,
+ layout: 'column',
+ border: false,
+ renderTo: ct,
+ };
+ var colCfg = Ext.apply(
+ {
+ defaultType: this.defaultType,
+ layout: 'form',
+ border: false,
+ labelWidth: 60,
+ defaults: {
+ hideLabel: true,
+ anchor: '60%',
+ },
+ },
+ this.colCfg
+ );
+
+ if (this.items[0].items) {
+ // The container has standard ColumnLayout configs, so pass them in directly
+
+ Ext.apply(panelCfg, {
+ layoutConfig: { columns: this.items.length },
+ defaults: this.defaults,
+ items: this.items,
+ });
+ for (var i = 0, len = this.items.length; i < len; i++) {
+ Ext.applyIf(this.items[i], colCfg);
+ }
+ } else {
+ // The container has field item configs, so we have to generate the column
+ // panels first then move the items into the columns as needed.
+
+ var numCols,
+ cols = [];
+
+ if (typeof this.columns == 'string') {
+ // 'auto' so create a col per item
+ this.columns = this.items.length;
+ }
+ if (!Ext.isArray(this.columns)) {
+ var cs = [];
+ for (var i = 0; i < this.columns; i++) {
+ cs.push((100 / this.columns) * 0.01); // distribute by even %
+ }
+ this.columns = cs;
+ }
+
+ numCols = this.columns.length;
+
+ // Generate the column configs with the correct width setting
+ for (var i = 0; i < numCols; i++) {
+ var cc = Ext.apply({ items: [] }, colCfg);
+ cc[this.columns[i] <= 1 ? 'columnWidth' : 'width'] =
+ this.columns[i];
+ if (this.defaults) {
+ cc.defaults = Ext.apply(
+ cc.defaults || {},
+ this.defaults
+ );
+ }
+ cols.push(cc);
+ }
+
+ // Distribute the original items into the columns
+ if (this.vertical) {
+ var rows = Math.ceil(this.items.length / numCols),
+ ri = 0;
+ for (var i = 0, len = this.items.length; i < len; i++) {
+ if (i > 0 && i % rows == 0) {
+ ri++;
+ }
+ if (this.items[i].fieldLabel) {
+ this.items[i].hideLabel = false;
+ }
+ cols[ri].items.push(this.items[i]);
+ }
+ } else {
+ for (var i = 0, len = this.items.length; i < len; i++) {
+ var ci = i % numCols;
+ if (this.items[i].fieldLabel) {
+ this.items[i].hideLabel = false;
+ }
+ cols[ci].items.push(this.items[i]);
+ }
+ }
+
+ Ext.apply(panelCfg, {
+ layoutConfig: { columns: numCols },
+ items: cols,
+ });
+ }
+
+ this.panel = new Ext.Panel(panelCfg);
+ this.el = this.panel.getEl();
+
+ if (this.forId && this.itemCls) {
+ var l = this.el.up(this.itemCls).child('label', true);
+ if (l) {
+ l.setAttribute('htmlFor', this.forId);
+ }
+ }
+
+ var fields = this.panel.findBy(function (c) {
+ return c.isFormField;
+ }, this);
+
+ this.items = new Ext.util.MixedCollection();
+ this.items.addAll(fields);
+
+ this.items.each(function (field) {
+ field.on('spin', this.onFieldChange, this);
+ field.on('change', this.onFieldChange, this);
+ }, this);
+
+ if (this.lazyValueSet) {
+ this.setValue(this.value);
+ delete this.value;
+ delete this.lazyValueSet;
+ }
+
+ if (this.lazyRawValueSet) {
+ this.setRawValue(this.rawValue);
+ delete this.rawValue;
+ delete this.lazyRawValueSet;
+ }
+ }
+
+ Ext.ux.form.SpinnerGroup.superclass.onRender.call(this, ct, position);
+ },
+
+ onFieldChange: function (spinner) {
+ this.fireEvent('change', this, this.getValue());
+ },
+
+ initValue: Ext.emptyFn,
+
+ getValue: function () {
+ var value = [this.items.getCount()];
+ this.items.each(function (item, i) {
+ value[i] = Number(item.getValue());
+ });
+ return value;
+ },
+
+ getRawValue: function () {
+ var value = [this.items.getCount()];
+ this.items.each(function (item, i) {
+ value[i] = Number(item.getRawValue());
+ });
+ return value;
+ },
+
+ setValue: function (value) {
+ if (!this.rendered) {
+ this.value = value;
+ this.lazyValueSet = true;
+ } else {
+ this.items.each(function (item, i) {
+ item.setValue(value[i]);
+ });
+ }
+ },
+
+ setRawValue: function (value) {
+ if (!this.rendered) {
+ this.rawValue = value;
+ this.lazyRawValueSet = true;
+ } else {
+ this.items.each(function (item, i) {
+ item.setRawValue(value[i]);
+ });
+ }
+ },
+});
+Ext.reg('spinnergroup', Ext.ux.form.SpinnerGroup);
diff --git a/deluge/ui/web/js/extjs/ext-extensions/form/ToggleField.js b/deluge/ui/web/js/extjs/ext-extensions/form/ToggleField.js
new file mode 100644
index 0000000..eb60c3b
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/form/ToggleField.js
@@ -0,0 +1,72 @@
+/**
+ * Ext.ux.form.ToggleField.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+Ext.namespace('Ext.ux.form');
+
+/**
+ * Ext.ux.form.ToggleField class
+ *
+ * @author Damien Churchill
+ * @version v0.1
+ *
+ * @class Ext.ux.form.ToggleField
+ * @extends Ext.form.TriggerField
+ */
+Ext.ux.form.ToggleField = Ext.extend(Ext.form.Field, {
+ cls: 'x-toggle-field',
+
+ initComponent: function () {
+ Ext.ux.form.ToggleField.superclass.initComponent.call(this);
+
+ this.toggle = new Ext.form.Checkbox();
+ this.toggle.on('check', this.onToggleCheck, this);
+
+ this.input = new Ext.form.TextField({
+ disabled: true,
+ });
+ },
+
+ onRender: function (ct, position) {
+ if (!this.el) {
+ this.panel = new Ext.Panel({
+ cls: this.groupCls,
+ layout: 'table',
+ layoutConfig: {
+ columns: 2,
+ },
+ border: false,
+ renderTo: ct,
+ });
+ this.panel.ownerCt = this;
+ this.el = this.panel.getEl();
+
+ this.panel.add(this.toggle);
+ this.panel.add(this.input);
+ this.panel.doLayout();
+
+ this.toggle.getEl().parent().setStyle('padding-right', '10px');
+ }
+ Ext.ux.form.ToggleField.superclass.onRender.call(this, ct, position);
+ },
+
+ // private
+ onResize: function (w, h) {
+ this.panel.setSize(w, h);
+ this.panel.doLayout();
+
+ // we substract 10 for the padding :-)
+ var inputWidth = w - this.toggle.getSize().width - 25;
+ this.input.setSize(inputWidth, h);
+ },
+
+ onToggleCheck: function (toggle, checked) {
+ this.input.setDisabled(!checked);
+ },
+});
+Ext.reg('togglefield', Ext.ux.form.ToggleField);
diff --git a/deluge/ui/web/js/extjs/ext-extensions/grid/BufferView.js b/deluge/ui/web/js/extjs/ext-extensions/grid/BufferView.js
new file mode 100644
index 0000000..0fce3b4
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/grid/BufferView.js
@@ -0,0 +1,270 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+Ext.ns('Ext.ux.grid');
+
+/**
+ * @class Ext.ux.grid.BufferView
+ * @extends Ext.grid.GridView
+ * A custom GridView which renders rows on an as-needed basis.
+ */
+Ext.ux.grid.BufferView = Ext.extend(Ext.grid.GridView, {
+ /**
+ * @cfg {Number} rowHeight
+ * The height of a row in the grid.
+ */
+ rowHeight: 19,
+
+ /**
+ * @cfg {Number} borderHeight
+ * The combined height of border-top and border-bottom of a row.
+ */
+ borderHeight: 2,
+
+ /**
+ * @cfg {Boolean/Number} scrollDelay
+ * The number of milliseconds before rendering rows out of the visible
+ * viewing area. Defaults to 100. Rows will render immediately with a config
+ * of false.
+ */
+ scrollDelay: 100,
+
+ /**
+ * @cfg {Number} cacheSize
+ * The number of rows to look forward and backwards from the currently viewable
+ * area. The cache applies only to rows that have been rendered already.
+ */
+ cacheSize: 20,
+
+ /**
+ * @cfg {Number} cleanDelay
+ * The number of milliseconds to buffer cleaning of extra rows not in the
+ * cache.
+ */
+ cleanDelay: 500,
+
+ initTemplates: function () {
+ Ext.ux.grid.BufferView.superclass.initTemplates.call(this);
+ var ts = this.templates;
+ // empty div to act as a place holder for a row
+ ts.rowHolder = new Ext.Template(
+ '<div class="x-grid3-row {alt}" style="{tstyle}"></div>'
+ );
+ ts.rowHolder.disableFormats = true;
+ ts.rowHolder.compile();
+
+ ts.rowBody = new Ext.Template(
+ '<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',
+ '<tbody><tr>{cells}</tr>',
+ this.enableRowBody
+ ? '<tr class="x-grid3-row-body-tr" style="{bodyStyle}"><td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on"><div class="x-grid3-row-body">{body}</div></td></tr>'
+ : '',
+ '</tbody></table>'
+ );
+ ts.rowBody.disableFormats = true;
+ ts.rowBody.compile();
+ },
+
+ getStyleRowHeight: function () {
+ return Ext.isBorderBox
+ ? this.rowHeight + this.borderHeight
+ : this.rowHeight;
+ },
+
+ getCalculatedRowHeight: function () {
+ return this.rowHeight + this.borderHeight;
+ },
+
+ getVisibleRowCount: function () {
+ var rh = this.getCalculatedRowHeight(),
+ visibleHeight = this.scroller.dom.clientHeight;
+ return visibleHeight < 1 ? 0 : Math.ceil(visibleHeight / rh);
+ },
+
+ getVisibleRows: function () {
+ var count = this.getVisibleRowCount(),
+ sc = this.scroller.dom.scrollTop,
+ start =
+ sc === 0
+ ? 0
+ : Math.floor(sc / this.getCalculatedRowHeight()) - 1;
+ return {
+ first: Math.max(start, 0),
+ last: Math.min(start + count + 2, this.ds.getCount() - 1),
+ };
+ },
+
+ doRender: function (cs, rs, ds, startRow, colCount, stripe, onlyBody) {
+ var ts = this.templates,
+ ct = ts.cell,
+ rt = ts.row,
+ rb = ts.rowBody,
+ last = colCount - 1,
+ rh = this.getStyleRowHeight(),
+ vr = this.getVisibleRows(),
+ tstyle = 'width:' + this.getTotalWidth() + ';height:' + rh + 'px;',
+ // buffers
+ buf = [],
+ cb,
+ c,
+ p = {},
+ rp = { tstyle: tstyle },
+ r;
+ for (var j = 0, len = rs.length; j < len; j++) {
+ r = rs[j];
+ cb = [];
+ var rowIndex = j + startRow,
+ visible = rowIndex >= vr.first && rowIndex <= vr.last;
+ if (visible) {
+ for (var i = 0; i < colCount; i++) {
+ c = cs[i];
+ p.id = c.id;
+ p.css =
+ i === 0
+ ? 'x-grid3-cell-first '
+ : i == last
+ ? 'x-grid3-cell-last '
+ : '';
+ p.attr = p.cellAttr = '';
+ p.value = c.renderer(r.data[c.name], p, r, rowIndex, i, ds);
+ p.style = c.style;
+ if (p.value === undefined || p.value === '') {
+ p.value = '&#160;';
+ }
+ if (r.dirty && typeof r.modified[c.name] !== 'undefined') {
+ p.css += ' x-grid3-dirty-cell';
+ }
+ cb[cb.length] = ct.apply(p);
+ }
+ }
+ var alt = [];
+ if (stripe && (rowIndex + 1) % 2 === 0) {
+ alt[0] = 'x-grid3-row-alt';
+ }
+ if (r.dirty) {
+ alt[1] = ' x-grid3-dirty-row';
+ }
+ rp.cols = colCount;
+ if (this.getRowClass) {
+ alt[2] = this.getRowClass(r, rowIndex, rp, ds);
+ }
+ rp.alt = alt.join(' ');
+ rp.cells = cb.join('');
+ buf[buf.length] = !visible
+ ? ts.rowHolder.apply(rp)
+ : onlyBody
+ ? rb.apply(rp)
+ : rt.apply(rp);
+ }
+ return buf.join('');
+ },
+
+ isRowRendered: function (index) {
+ var row = this.getRow(index);
+ return row && row.childNodes.length > 0;
+ },
+
+ syncScroll: function () {
+ Ext.ux.grid.BufferView.superclass.syncScroll.apply(this, arguments);
+ this.update();
+ },
+
+ // a (optionally) buffered method to update contents of gridview
+ update: function () {
+ if (this.scrollDelay) {
+ if (!this.renderTask) {
+ this.renderTask = new Ext.util.DelayedTask(this.doUpdate, this);
+ }
+ this.renderTask.delay(this.scrollDelay);
+ } else {
+ this.doUpdate();
+ }
+ },
+
+ onRemove: function (ds, record, index, isUpdate) {
+ Ext.ux.grid.BufferView.superclass.onRemove.apply(this, arguments);
+ if (isUpdate !== true) {
+ this.update();
+ }
+ },
+
+ doUpdate: function () {
+ if (this.getVisibleRowCount() > 0) {
+ var g = this.grid,
+ cm = g.colModel,
+ ds = g.store,
+ cs = this.getColumnData(),
+ vr = this.getVisibleRows(),
+ row;
+ for (var i = vr.first; i <= vr.last; i++) {
+ // if row is NOT rendered and is visible, render it
+ if (!this.isRowRendered(i) && (row = this.getRow(i))) {
+ var html = this.doRender(
+ cs,
+ [ds.getAt(i)],
+ ds,
+ i,
+ cm.getColumnCount(),
+ g.stripeRows,
+ true
+ );
+ row.innerHTML = html;
+ }
+ }
+ this.clean();
+ }
+ },
+
+ // a buffered method to clean rows
+ clean: function () {
+ if (!this.cleanTask) {
+ this.cleanTask = new Ext.util.DelayedTask(this.doClean, this);
+ }
+ this.cleanTask.delay(this.cleanDelay);
+ },
+
+ doClean: function () {
+ if (this.getVisibleRowCount() > 0) {
+ var vr = this.getVisibleRows();
+ vr.first -= this.cacheSize;
+ vr.last += this.cacheSize;
+
+ var i = 0,
+ rows = this.getRows();
+ // if first is less than 0, all rows have been rendered
+ // so lets clean the end...
+ if (vr.first <= 0) {
+ i = vr.last + 1;
+ }
+ for (var len = this.ds.getCount(); i < len; i++) {
+ // if current row is outside of first and last and
+ // has content, update the innerHTML to nothing
+ if ((i < vr.first || i > vr.last) && rows[i].innerHTML) {
+ rows[i].innerHTML = '';
+ }
+ }
+ }
+ },
+
+ removeTask: function (name) {
+ var task = this[name];
+ if (task && task.cancel) {
+ task.cancel();
+ this[name] = null;
+ }
+ },
+
+ destroy: function () {
+ this.removeTask('cleanTask');
+ this.removeTask('renderTask');
+ Ext.ux.grid.BufferView.superclass.destroy.call(this);
+ },
+
+ layout: function () {
+ Ext.ux.grid.BufferView.superclass.layout.call(this);
+ this.update();
+ },
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/layout/FormLayoutFix.js b/deluge/ui/web/js/extjs/ext-extensions/layout/FormLayoutFix.js
new file mode 100644
index 0000000..3ccce2b
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/layout/FormLayoutFix.js
@@ -0,0 +1,39 @@
+/**
+ * Ext.ux.layout.FormLayoutFix.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+// Taken from http://extjs.com/forum/showthread.php?t=75273
+// remove spaces for hidden elements and make show(), hide(), enable() and disable() act on
+// the label. don't use hideLabel with this.
+Ext.override(Ext.layout.FormLayout, {
+ renderItem: function (c, position, target) {
+ if (
+ c &&
+ !c.rendered &&
+ (c.isFormField || c.fieldLabel) &&
+ c.inputType != 'hidden'
+ ) {
+ var args = this.getTemplateArgs(c);
+ if (typeof position == 'number') {
+ position = target.dom.childNodes[position] || null;
+ }
+ if (position) {
+ c.formItem = this.fieldTpl.insertBefore(position, args, true);
+ } else {
+ c.formItem = this.fieldTpl.append(target, args, true);
+ }
+ c.actionMode = 'formItem';
+ c.render('x-form-el-' + c.id);
+ c.container = c.formItem;
+ c.actionMode = 'container';
+ } else {
+ Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments);
+ }
+ },
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/MultiSelectionModelFix.js b/deluge/ui/web/js/extjs/ext-extensions/tree/MultiSelectionModelFix.js
new file mode 100644
index 0000000..ba26a72
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/MultiSelectionModelFix.js
@@ -0,0 +1,68 @@
+/**
+ * Ext.ux.tree.MultiSelectionModelFix.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+/**
+ * This enhances the MSM to allow for shift selecting in tree grids etc.
+ * @author Damien Churchill <damoxc@gmail.com>
+ */
+Ext.override(Ext.tree.MultiSelectionModel, {
+ onNodeClick: function (node, e) {
+ if (e.ctrlKey && this.isSelected(node)) {
+ this.unselect(node);
+ } else if (e.shiftKey && !this.isSelected(node)) {
+ var parentNode = node.parentNode;
+ // We can only shift select files in the same node
+ if (this.lastSelNode.parentNode.id != parentNode.id) return;
+
+ // Get the node indexes
+ var fi = parentNode.indexOf(node),
+ li = parentNode.indexOf(this.lastSelNode);
+
+ // Select the last clicked node and wipe old selections
+ this.select(this.lastSelNode, e, false, true);
+
+ // Swap the values if required
+ if (fi > li) {
+ (fi = fi + li), (li = fi - li), (fi = fi - li);
+ }
+
+ // Select all the nodes
+ parentNode.eachChild(function (n) {
+ var i = parentNode.indexOf(n);
+ if (fi < i && i < li) {
+ this.select(n, e, true, true);
+ }
+ }, this);
+
+ // Select the clicked node
+ this.select(node, e, true);
+ } else {
+ this.select(node, e, e.ctrlKey);
+ }
+ },
+
+ select: function (node, e, keepExisting, suppressEvent) {
+ if (keepExisting !== true) {
+ this.clearSelections(true);
+ }
+ if (this.isSelected(node)) {
+ this.lastSelNode = node;
+ return node;
+ }
+ this.selNodes.push(node);
+ this.selMap[node.id] = node;
+ this.lastSelNode = node;
+ node.ui.onSelectedChange(true);
+ if (suppressEvent !== true) {
+ this.fireEvent('selectionchange', this, this.selNodes);
+ }
+ return node;
+ },
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGrid.js b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGrid.js
new file mode 100644
index 0000000..7a74360
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGrid.js
@@ -0,0 +1,468 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+Ext.ns('Ext.ux.tree');
+
+/**
+ * @class Ext.ux.tree.TreeGrid
+ * @extends Ext.tree.TreePanel
+ *
+ * @xtype treegrid
+ */
+Ext.ux.tree.TreeGrid = Ext.extend(Ext.tree.TreePanel, {
+ rootVisible: false,
+ useArrows: true,
+ lines: false,
+ borderWidth: Ext.isBorderBox ? 0 : 2, // the combined left/right border for each cell
+ cls: 'x-treegrid',
+
+ columnResize: true,
+ enableSort: true,
+ reserveScrollOffset: true,
+ enableHdMenu: true,
+
+ columnsText: 'Columns',
+
+ initComponent: function () {
+ if (!this.root) {
+ this.root = new Ext.tree.AsyncTreeNode({ text: 'Root' });
+ }
+
+ // initialize the loader
+ var l = this.loader;
+ if (!l) {
+ l = new Ext.ux.tree.TreeGridLoader({
+ dataUrl: this.dataUrl,
+ requestMethod: this.requestMethod,
+ store: this.store,
+ });
+ } else if (Ext.isObject(l) && !l.load) {
+ l = new Ext.ux.tree.TreeGridLoader(l);
+ }
+ this.loader = l;
+
+ Ext.ux.tree.TreeGrid.superclass.initComponent.call(this);
+
+ this.initColumns();
+
+ if (this.enableSort) {
+ this.treeGridSorter = new Ext.ux.tree.TreeGridSorter(
+ this,
+ this.enableSort
+ );
+ }
+
+ if (this.columnResize) {
+ this.colResizer = new Ext.tree.ColumnResizer(this.columnResize);
+ this.colResizer.init(this);
+ }
+
+ var c = this.columns;
+ if (!this.internalTpl) {
+ this.internalTpl = new Ext.XTemplate(
+ '<div class="x-grid3-header">',
+ '<div class="x-treegrid-header-inner">',
+ '<div class="x-grid3-header-offset">',
+ '<table style="table-layout: fixed;" cellspacing="0" cellpadding="0" border="0"><colgroup><tpl for="columns"><col /></tpl></colgroup>',
+ '<thead><tr class="x-grid3-hd-row">',
+ '<tpl for="columns">',
+ '<td class="x-grid3-hd x-grid3-cell x-treegrid-hd" style="text-align: {align};" id="',
+ this.id,
+ '-xlhd-{#}">',
+ '<div class="x-grid3-hd-inner x-treegrid-hd-inner" unselectable="on">',
+ this.enableHdMenu
+ ? '<a class="x-grid3-hd-btn" href="#"></a>'
+ : '',
+ '{header}<img class="x-grid3-sort-icon" src="',
+ Ext.BLANK_IMAGE_URL,
+ '" />',
+ '</div>',
+ '</td></tpl>',
+ '</tr></thead>',
+ '</table>',
+ '</div></div>',
+ '</div>',
+ '<div class="x-treegrid-root-node">',
+ '<table class="x-treegrid-root-table" cellpadding="0" cellspacing="0" style="table-layout: fixed;"></table>',
+ '</div>'
+ );
+ }
+
+ if (!this.colgroupTpl) {
+ this.colgroupTpl = new Ext.XTemplate(
+ '<colgroup><tpl for="columns"><col style="width: {width}px"/></tpl></colgroup>'
+ );
+ }
+ },
+
+ initColumns: function () {
+ var cs = this.columns,
+ len = cs.length,
+ columns = [],
+ i,
+ c;
+
+ for (i = 0; i < len; i++) {
+ c = cs[i];
+ if (!c.isColumn) {
+ c.xtype = c.xtype
+ ? /^tg/.test(c.xtype)
+ ? c.xtype
+ : 'tg' + c.xtype
+ : 'tgcolumn';
+ c = Ext.create(c);
+ }
+ c.init(this);
+ columns.push(c);
+
+ if (this.enableSort !== false && c.sortable !== false) {
+ c.sortable = true;
+ this.enableSort = true;
+ }
+ }
+
+ this.columns = columns;
+ },
+
+ onRender: function () {
+ Ext.tree.TreePanel.superclass.onRender.apply(this, arguments);
+
+ this.el.addClass('x-treegrid');
+
+ this.outerCt = this.body.createChild({
+ cls:
+ 'x-tree-root-ct x-treegrid-ct ' +
+ (this.useArrows
+ ? 'x-tree-arrows'
+ : this.lines
+ ? 'x-tree-lines'
+ : 'x-tree-no-lines'),
+ });
+
+ this.internalTpl.overwrite(this.outerCt, { columns: this.columns });
+
+ this.mainHd = Ext.get(this.outerCt.dom.firstChild);
+ this.innerHd = Ext.get(this.mainHd.dom.firstChild);
+ this.innerBody = Ext.get(this.outerCt.dom.lastChild);
+ this.innerCt = Ext.get(this.innerBody.dom.firstChild);
+
+ this.colgroupTpl.insertFirst(this.innerCt, { columns: this.columns });
+
+ if (this.hideHeaders) {
+ this.el.child('.x-grid3-header').setDisplayed('none');
+ } else if (this.enableHdMenu !== false) {
+ this.hmenu = new Ext.menu.Menu({ id: this.id + '-hctx' });
+ if (this.enableColumnHide !== false) {
+ this.colMenu = new Ext.menu.Menu({
+ id: this.id + '-hcols-menu',
+ });
+ this.colMenu.on({
+ scope: this,
+ beforeshow: this.beforeColMenuShow,
+ itemclick: this.handleHdMenuClick,
+ });
+ this.hmenu.add({
+ itemId: 'columns',
+ hideOnClick: false,
+ text: this.columnsText,
+ menu: this.colMenu,
+ iconCls: 'x-cols-icon',
+ });
+ }
+ this.hmenu.on('itemclick', this.handleHdMenuClick, this);
+ }
+ },
+
+ setRootNode: function (node) {
+ node.attributes.uiProvider = Ext.ux.tree.TreeGridRootNodeUI;
+ node = Ext.ux.tree.TreeGrid.superclass.setRootNode.call(this, node);
+ if (this.innerCt) {
+ this.colgroupTpl.insertFirst(this.innerCt, {
+ columns: this.columns,
+ });
+ }
+ return node;
+ },
+
+ clearInnerCt: function () {
+ if (Ext.isIE) {
+ var dom = this.innerCt.dom;
+ while (dom.firstChild) {
+ dom.removeChild(dom.firstChild);
+ }
+ } else {
+ Ext.ux.tree.TreeGrid.superclass.clearInnerCt.call(this);
+ }
+ },
+
+ initEvents: function () {
+ Ext.ux.tree.TreeGrid.superclass.initEvents.apply(this, arguments);
+
+ this.mon(this.innerBody, 'scroll', this.syncScroll, this);
+ this.mon(this.innerHd, 'click', this.handleHdDown, this);
+ this.mon(this.mainHd, {
+ scope: this,
+ mouseover: this.handleHdOver,
+ mouseout: this.handleHdOut,
+ });
+ },
+
+ onResize: function (w, h) {
+ Ext.ux.tree.TreeGrid.superclass.onResize.apply(this, arguments);
+
+ var bd = this.innerBody.dom;
+ var hd = this.innerHd.dom;
+
+ if (!bd) {
+ return;
+ }
+
+ if (Ext.isNumber(h)) {
+ bd.style.height =
+ this.body.getHeight(true) - hd.offsetHeight + 'px';
+ }
+
+ if (Ext.isNumber(w)) {
+ var sw = Ext.num(this.scrollOffset, Ext.getScrollBarWidth());
+ if (
+ this.reserveScrollOffset ||
+ bd.offsetWidth - bd.clientWidth > 10
+ ) {
+ this.setScrollOffset(sw);
+ } else {
+ var me = this;
+ setTimeout(function () {
+ me.setScrollOffset(
+ bd.offsetWidth - bd.clientWidth > 10 ? sw : 0
+ );
+ }, 10);
+ }
+ }
+ },
+
+ updateColumnWidths: function () {
+ var cols = this.columns,
+ colCount = cols.length,
+ groups = this.outerCt.query('colgroup'),
+ groupCount = groups.length,
+ c,
+ g,
+ i,
+ j;
+
+ for (i = 0; i < colCount; i++) {
+ c = cols[i];
+ for (j = 0; j < groupCount; j++) {
+ g = groups[j];
+ g.childNodes[i].style.width = (c.hidden ? 0 : c.width) + 'px';
+ }
+ }
+
+ for (
+ i = 0, groups = this.innerHd.query('td'), len = groups.length;
+ i < len;
+ i++
+ ) {
+ c = Ext.fly(groups[i]);
+ if (cols[i] && cols[i].hidden) {
+ c.addClass('x-treegrid-hd-hidden');
+ } else {
+ c.removeClass('x-treegrid-hd-hidden');
+ }
+ }
+
+ var tcw = this.getTotalColumnWidth();
+ Ext.fly(this.innerHd.dom.firstChild).setWidth(
+ tcw + (this.scrollOffset || 0)
+ );
+ this.outerCt.select('table').setWidth(tcw);
+ this.syncHeaderScroll();
+ },
+
+ getVisibleColumns: function () {
+ var columns = [],
+ cs = this.columns,
+ len = cs.length,
+ i;
+
+ for (i = 0; i < len; i++) {
+ if (!cs[i].hidden) {
+ columns.push(cs[i]);
+ }
+ }
+ return columns;
+ },
+
+ getTotalColumnWidth: function () {
+ var total = 0;
+ for (
+ var i = 0, cs = this.getVisibleColumns(), len = cs.length;
+ i < len;
+ i++
+ ) {
+ total += cs[i].width;
+ }
+ return total;
+ },
+
+ setScrollOffset: function (scrollOffset) {
+ this.scrollOffset = scrollOffset;
+ this.updateColumnWidths();
+ },
+
+ // private
+ handleHdDown: function (e, t) {
+ var hd = e.getTarget('.x-treegrid-hd');
+
+ if (hd && Ext.fly(t).hasClass('x-grid3-hd-btn')) {
+ var ms = this.hmenu.items,
+ cs = this.columns,
+ index = this.findHeaderIndex(hd),
+ c = cs[index],
+ sort = c.sortable;
+
+ e.stopEvent();
+ Ext.fly(hd).addClass('x-grid3-hd-menu-open');
+ this.hdCtxIndex = index;
+
+ this.fireEvent('headerbuttonclick', ms, c, hd, index);
+
+ this.hmenu.on(
+ 'hide',
+ function () {
+ Ext.fly(hd).removeClass('x-grid3-hd-menu-open');
+ },
+ this,
+ { single: true }
+ );
+
+ this.hmenu.show(t, 'tl-bl?');
+ } else if (hd) {
+ var index = this.findHeaderIndex(hd);
+ this.fireEvent('headerclick', this.columns[index], hd, index);
+ }
+ },
+
+ // private
+ handleHdOver: function (e, t) {
+ var hd = e.getTarget('.x-treegrid-hd');
+ if (hd && !this.headersDisabled) {
+ index = this.findHeaderIndex(hd);
+ this.activeHdRef = t;
+ this.activeHdIndex = index;
+ var el = Ext.get(hd);
+ this.activeHdRegion = el.getRegion();
+ el.addClass('x-grid3-hd-over');
+ this.activeHdBtn = el.child('.x-grid3-hd-btn');
+ if (this.activeHdBtn) {
+ this.activeHdBtn.dom.style.height =
+ hd.firstChild.offsetHeight - 1 + 'px';
+ }
+ }
+ },
+
+ // private
+ handleHdOut: function (e, t) {
+ var hd = e.getTarget('.x-treegrid-hd');
+ if (hd && (!Ext.isIE || !e.within(hd, true))) {
+ this.activeHdRef = null;
+ Ext.fly(hd).removeClass('x-grid3-hd-over');
+ hd.style.cursor = '';
+ }
+ },
+
+ findHeaderIndex: function (hd) {
+ hd = hd.dom || hd;
+ var cs = hd.parentNode.childNodes;
+ for (var i = 0, c; (c = cs[i]); i++) {
+ if (c == hd) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ // private
+ beforeColMenuShow: function () {
+ var cols = this.columns,
+ colCount = cols.length,
+ i,
+ c;
+ this.colMenu.removeAll();
+ for (i = 1; i < colCount; i++) {
+ c = cols[i];
+ if (c.hideable !== false) {
+ this.colMenu.add(
+ new Ext.menu.CheckItem({
+ itemId: 'col-' + i,
+ text: c.header,
+ checked: !c.hidden,
+ hideOnClick: false,
+ disabled: c.hideable === false,
+ })
+ );
+ }
+ }
+ },
+
+ // private
+ handleHdMenuClick: function (item) {
+ var index = this.hdCtxIndex,
+ id = item.getItemId();
+
+ if (
+ this.fireEvent(
+ 'headermenuclick',
+ this.columns[index],
+ id,
+ index
+ ) !== false
+ ) {
+ index = id.substr(4);
+ if (index > 0 && this.columns[index]) {
+ this.setColumnVisible(index, !item.checked);
+ }
+ }
+
+ return true;
+ },
+
+ setColumnVisible: function (index, visible) {
+ this.columns[index].hidden = !visible;
+ this.updateColumnWidths();
+ },
+
+ /**
+ * Scrolls the grid to the top
+ */
+ scrollToTop: function () {
+ this.innerBody.dom.scrollTop = 0;
+ this.innerBody.dom.scrollLeft = 0;
+ },
+
+ // private
+ syncScroll: function () {
+ this.syncHeaderScroll();
+ var mb = this.innerBody.dom;
+ this.fireEvent('bodyscroll', mb.scrollLeft, mb.scrollTop);
+ },
+
+ // private
+ syncHeaderScroll: function () {
+ var mb = this.innerBody.dom;
+ this.innerHd.dom.scrollLeft = mb.scrollLeft;
+ this.innerHd.dom.scrollLeft = mb.scrollLeft; // second time for IE (1/2 time first fails, other browsers ignore)
+ },
+
+ registerNode: function (n) {
+ Ext.ux.tree.TreeGrid.superclass.registerNode.call(this, n);
+ if (!n.uiProvider && !n.isRoot && !n.ui.isTreeGridNodeUI) {
+ n.ui = new Ext.ux.tree.TreeGridNodeUI(n);
+ }
+ },
+});
+
+Ext.reg('treegrid', Ext.ux.tree.TreeGrid);
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridColumnResizer.js b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridColumnResizer.js
new file mode 100644
index 0000000..de73608
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridColumnResizer.js
@@ -0,0 +1,123 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/**
+ * @class Ext.tree.ColumnResizer
+ * @extends Ext.util.Observable
+ */
+Ext.tree.ColumnResizer = Ext.extend(Ext.util.Observable, {
+ /**
+ * @cfg {Number} minWidth The minimum width the column can be dragged to.
+ * Defaults to <tt>14</tt>.
+ */
+ minWidth: 14,
+
+ constructor: function (config) {
+ Ext.apply(this, config);
+ Ext.tree.ColumnResizer.superclass.constructor.call(this);
+ },
+
+ init: function (tree) {
+ this.tree = tree;
+ tree.on('render', this.initEvents, this);
+ },
+
+ initEvents: function (tree) {
+ tree.mon(tree.innerHd, 'mousemove', this.handleHdMove, this);
+ this.tracker = new Ext.dd.DragTracker({
+ onBeforeStart: this.onBeforeStart.createDelegate(this),
+ onStart: this.onStart.createDelegate(this),
+ onDrag: this.onDrag.createDelegate(this),
+ onEnd: this.onEnd.createDelegate(this),
+ tolerance: 3,
+ autoStart: 300,
+ });
+ this.tracker.initEl(tree.innerHd);
+ tree.on('beforedestroy', this.tracker.destroy, this.tracker);
+ },
+
+ handleHdMove: function (e, t) {
+ var hw = 5,
+ x = e.getPageX(),
+ hd = e.getTarget('.x-treegrid-hd', 3, true);
+
+ if (hd) {
+ var r = hd.getRegion(),
+ ss = hd.dom.style,
+ pn = hd.dom.parentNode;
+
+ if (x - r.left <= hw && hd.dom !== pn.firstChild) {
+ var ps = hd.dom.previousSibling;
+ while (ps && Ext.fly(ps).hasClass('x-treegrid-hd-hidden')) {
+ ps = ps.previousSibling;
+ }
+ if (ps) {
+ this.activeHd = Ext.get(ps);
+ ss.cursor = Ext.isWebKit ? 'e-resize' : 'col-resize';
+ }
+ } else if (r.right - x <= hw) {
+ var ns = hd.dom;
+ while (ns && Ext.fly(ns).hasClass('x-treegrid-hd-hidden')) {
+ ns = ns.previousSibling;
+ }
+ if (ns) {
+ this.activeHd = Ext.get(ns);
+ ss.cursor = Ext.isWebKit ? 'w-resize' : 'col-resize';
+ }
+ } else {
+ delete this.activeHd;
+ ss.cursor = '';
+ }
+ }
+ },
+
+ onBeforeStart: function (e) {
+ this.dragHd = this.activeHd;
+ return !!this.dragHd;
+ },
+
+ onStart: function (e) {
+ this.dragHeadersDisabled = this.tree.headersDisabled;
+ this.tree.headersDisabled = true;
+ this.proxy = this.tree.body.createChild({ cls: 'x-treegrid-resizer' });
+ this.proxy.setHeight(this.tree.body.getHeight());
+
+ var x = this.tracker.getXY()[0];
+
+ this.hdX = this.dragHd.getX();
+ this.hdIndex = this.tree.findHeaderIndex(this.dragHd);
+
+ this.proxy.setX(this.hdX);
+ this.proxy.setWidth(x - this.hdX);
+
+ this.maxWidth =
+ this.tree.outerCt.getWidth() -
+ this.tree.innerBody.translatePoints(this.hdX).left;
+ },
+
+ onDrag: function (e) {
+ var cursorX = this.tracker.getXY()[0];
+ this.proxy.setWidth(
+ (cursorX - this.hdX).constrain(this.minWidth, this.maxWidth)
+ );
+ },
+
+ onEnd: function (e) {
+ var nw = this.proxy.getWidth(),
+ tree = this.tree,
+ disabled = this.dragHeadersDisabled;
+
+ this.proxy.remove();
+ delete this.dragHd;
+
+ tree.columns[this.hdIndex].width = nw;
+ tree.updateColumnWidths();
+
+ setTimeout(function () {
+ tree.headersDisabled = disabled;
+ }, 100);
+ },
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridColumns.js b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridColumns.js
new file mode 100644
index 0000000..0c88f17
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridColumns.js
@@ -0,0 +1,40 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+(function () {
+ Ext.override(Ext.list.Column, {
+ init: function () {
+ var types = Ext.data.Types,
+ st = this.sortType;
+
+ if (this.type) {
+ if (Ext.isString(this.type)) {
+ this.type =
+ Ext.data.Types[this.type.toUpperCase()] || types.AUTO;
+ }
+ } else {
+ this.type = types.AUTO;
+ }
+
+ // named sortTypes are supported, here we look them up
+ if (Ext.isString(st)) {
+ this.sortType = Ext.data.SortTypes[st];
+ } else if (Ext.isEmpty(st)) {
+ this.sortType = this.type.sortType;
+ }
+ },
+ });
+
+ Ext.tree.Column = Ext.extend(Ext.list.Column, {});
+ Ext.tree.NumberColumn = Ext.extend(Ext.list.NumberColumn, {});
+ Ext.tree.DateColumn = Ext.extend(Ext.list.DateColumn, {});
+ Ext.tree.BooleanColumn = Ext.extend(Ext.list.BooleanColumn, {});
+
+ Ext.reg('tgcolumn', Ext.tree.Column);
+ Ext.reg('tgnumbercolumn', Ext.tree.NumberColumn);
+ Ext.reg('tgdatecolumn', Ext.tree.DateColumn);
+ Ext.reg('tgbooleancolumn', Ext.tree.BooleanColumn);
+})();
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridLoader.js b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridLoader.js
new file mode 100644
index 0000000..db14848
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridLoader.js
@@ -0,0 +1,18 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/**
+ * @class Ext.ux.tree.TreeGridLoader
+ * @extends Ext.tree.TreeLoader
+ */
+Ext.ux.tree.TreeGridLoader = Ext.extend(Ext.tree.TreeLoader, {
+ createNode: function (attr) {
+ if (!attr.uiProvider) {
+ attr.uiProvider = Ext.ux.tree.TreeGridNodeUI;
+ }
+ return Ext.tree.TreeLoader.prototype.createNode.call(this, attr);
+ },
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridNodeUI.js b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridNodeUI.js
new file mode 100644
index 0000000..09b1718
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridNodeUI.js
@@ -0,0 +1,149 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/**
+ * @class Ext.ux.tree.TreeGridNodeUI
+ * @extends Ext.tree.TreeNodeUI
+ */
+Ext.ux.tree.TreeGridNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
+ isTreeGridNodeUI: true,
+
+ renderElements: function (n, a, targetNode, bulkRender) {
+ var t = n.getOwnerTree(),
+ cols = t.columns,
+ c = cols[0],
+ i,
+ buf,
+ len;
+
+ this.indentMarkup = n.parentNode
+ ? n.parentNode.ui.getChildIndent()
+ : '';
+
+ buf = [
+ '<tbody class="x-tree-node">',
+ '<tr ext:tree-node-id="',
+ n.id,
+ '" class="x-tree-node-el x-tree-node-leaf ',
+ a.cls,
+ '">',
+ '<td class="x-treegrid-col">',
+ '<span class="x-tree-node-indent">',
+ this.indentMarkup,
+ '</span>',
+ '<img src="',
+ this.emptyIcon,
+ '" class="x-tree-ec-icon x-tree-elbow" />',
+ '<img src="',
+ a.icon || this.emptyIcon,
+ '" class="x-tree-node-icon',
+ a.icon ? ' x-tree-node-inline-icon' : '',
+ a.iconCls ? ' ' + a.iconCls : '',
+ '" unselectable="on" />',
+ '<a hidefocus="on" class="x-tree-node-anchor" href="',
+ a.href ? a.href : '#',
+ '" tabIndex="1" ',
+ a.hrefTarget ? ' target="' + a.hrefTarget + '"' : '',
+ '>',
+ '<span unselectable="on">',
+ c.tpl ? c.tpl.apply(a) : a[c.dataIndex] || c.text,
+ '</span></a>',
+ '</td>',
+ ];
+
+ for (i = 1, len = cols.length; i < len; i++) {
+ c = cols[i];
+ buf.push(
+ '<td class="x-treegrid-col ',
+ c.cls ? c.cls : '',
+ '">',
+ '<div unselectable="on" class="x-treegrid-text"',
+ c.align ? ' style="text-align: ' + c.align + ';"' : '',
+ '>',
+ c.tpl ? c.tpl.apply(a) : a[c.dataIndex],
+ '</div>',
+ '</td>'
+ );
+ }
+
+ buf.push(
+ '</tr><tr class="x-tree-node-ct"><td colspan="',
+ cols.length,
+ '">',
+ '<table class="x-treegrid-node-ct-table" cellpadding="0" cellspacing="0" style="table-layout: fixed; display: none; width: ',
+ t.innerCt.getWidth(),
+ 'px;"><colgroup>'
+ );
+ for (i = 0, len = cols.length; i < len; i++) {
+ buf.push(
+ '<col style="width: ',
+ cols[i].hidden ? 0 : cols[i].width,
+ 'px;" />'
+ );
+ }
+ buf.push('</colgroup></table></td></tr></tbody>');
+
+ if (bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()) {
+ this.wrap = Ext.DomHelper.insertHtml(
+ 'beforeBegin',
+ n.nextSibling.ui.getEl(),
+ buf.join('')
+ );
+ } else {
+ this.wrap = Ext.DomHelper.insertHtml(
+ 'beforeEnd',
+ targetNode,
+ buf.join('')
+ );
+ }
+
+ this.elNode = this.wrap.childNodes[0];
+ this.ctNode = this.wrap.childNodes[1].firstChild.firstChild;
+ var cs = this.elNode.firstChild.childNodes;
+ this.indentNode = cs[0];
+ this.ecNode = cs[1];
+ this.iconNode = cs[2];
+ this.anchor = cs[3];
+ this.textNode = cs[3].firstChild;
+ },
+
+ // private
+ animExpand: function (cb) {
+ this.ctNode.style.display = '';
+ Ext.ux.tree.TreeGridNodeUI.superclass.animExpand.call(this, cb);
+ },
+});
+
+Ext.ux.tree.TreeGridRootNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
+ isTreeGridNodeUI: true,
+
+ // private
+ render: function () {
+ if (!this.rendered) {
+ this.wrap = this.ctNode = this.node.ownerTree.innerCt.dom;
+ this.node.expanded = true;
+ }
+
+ if (Ext.isWebKit) {
+ // weird table-layout: fixed issue in webkit
+ var ct = this.ctNode;
+ ct.style.tableLayout = null;
+ (function () {
+ ct.style.tableLayout = 'fixed';
+ }.defer(1));
+ }
+ },
+
+ destroy: function () {
+ if (this.elNode) {
+ Ext.dd.Registry.unregister(this.elNode.id);
+ }
+ delete this.node;
+ },
+
+ collapse: Ext.emptyFn,
+ expand: Ext.emptyFn,
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridNodeUIFix.js b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridNodeUIFix.js
new file mode 100644
index 0000000..7708bd7
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridNodeUIFix.js
@@ -0,0 +1,33 @@
+/**
+ * Ext.ux.tree.TreeGridNodeUIFix.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+ * the additional special exception to link portions of this program with the OpenSSL library.
+ * See LICENSE for more details.
+ */
+
+Ext.override(Ext.ux.tree.TreeGridNodeUI, {
+ updateColumns: function () {
+ if (!this.rendered) return;
+
+ var a = this.node.attributes,
+ t = this.node.getOwnerTree(),
+ cols = t.columns,
+ c = cols[0];
+
+ // Update the first column
+ this.anchor.firstChild.innerHTML = c.tpl
+ ? c.tpl.apply(a)
+ : a[c.dataIndex] || c.text;
+
+ // Update the remaining columns
+ for (i = 1, len = cols.length; i < len; i++) {
+ c = cols[i];
+ this.elNode.childNodes[i].firstChild.innerHTML = c.tpl
+ ? c.tpl.apply(a)
+ : a[c.dataIndex] || c.text;
+ }
+ },
+});
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridRenderColumn.js b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridRenderColumn.js
new file mode 100644
index 0000000..ed95d95
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridRenderColumn.js
@@ -0,0 +1,9 @@
+Ext.tree.RenderColumn = Ext.extend(Ext.tree.Column, {
+ constructor: function (c) {
+ c.tpl = c.tpl || new Ext.XTemplate('{' + c.dataIndex + ':this.format}');
+ c.tpl.format = c.renderer;
+ c.tpl.col = this;
+ Ext.tree.RenderColumn.superclass.constructor.call(this, c);
+ },
+});
+Ext.reg('tgrendercolumn', Ext.tree.RenderColumn);
diff --git a/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridSorter.js b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridSorter.js
new file mode 100644
index 0000000..fdf1f38
--- /dev/null
+++ b/deluge/ui/web/js/extjs/ext-extensions/tree/TreeGridSorter.js
@@ -0,0 +1,158 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+Ext.ns('Ext.ux.tree');
+
+/**
+ * @class Ext.ux.tree.TreeGridSorter
+ * @extends Ext.tree.TreeSorter
+ * Provides sorting of nodes in a {@link Ext.ux.tree.TreeGrid}. The TreeGridSorter automatically monitors events on the
+ * associated TreeGrid that might affect the tree's sort order (beforechildrenrendered, append, insert and textchange).
+ * Example usage:<br />
+ * <pre><code>
+ new Ext.ux.tree.TreeGridSorter(myTreeGrid, {
+ folderSort: true,
+ dir: "desc",
+ sortType: function(node) {
+ // sort by a custom, typed attribute:
+ return parseInt(node.id, 10);
+ }
+ });
+ </code></pre>
+ * @constructor
+ * @param {TreeGrid} tree
+ * @param {Object} config
+ */
+Ext.ux.tree.TreeGridSorter = Ext.extend(Ext.tree.TreeSorter, {
+ /**
+ * @cfg {Array} sortClasses The CSS classes applied to a header when it is sorted. (defaults to <tt>['sort-asc', 'sort-desc']</tt>)
+ */
+ sortClasses: ['sort-asc', 'sort-desc'],
+ /**
+ * @cfg {String} sortAscText The text displayed in the 'Sort Ascending' menu item (defaults to <tt>'Sort Ascending'</tt>)
+ */
+ sortAscText: 'Sort Ascending',
+ /**
+ * @cfg {String} sortDescText The text displayed in the 'Sort Descending' menu item (defaults to <tt>'Sort Descending'</tt>)
+ */
+ sortDescText: 'Sort Descending',
+
+ constructor: function (tree, config) {
+ if (!Ext.isObject(config)) {
+ config = {
+ property: tree.columns[0].dataIndex || 'text',
+ folderSort: true,
+ };
+ }
+
+ Ext.ux.tree.TreeGridSorter.superclass.constructor.apply(
+ this,
+ arguments
+ );
+
+ this.tree = tree;
+ tree.on('headerclick', this.onHeaderClick, this);
+ tree.ddAppendOnly = true;
+
+ var me = this;
+ this.defaultSortFn = function (n1, n2) {
+ var desc = me.dir && me.dir.toLowerCase() == 'desc',
+ prop = me.property || 'text',
+ sortType = me.sortType,
+ caseSensitive = me.caseSensitive === true,
+ leafAttr = me.leafAttr || 'leaf',
+ attr1 = n1.attributes,
+ attr2 = n2.attributes;
+
+ if (me.folderSort) {
+ if (attr1[leafAttr] && !attr2[leafAttr]) {
+ return 1;
+ }
+ if (!attr1[leafAttr] && attr2[leafAttr]) {
+ return -1;
+ }
+ }
+ var prop1 = attr1[prop],
+ prop2 = attr2[prop],
+ v1 = sortType
+ ? sortType(prop1)
+ : caseSensitive
+ ? prop1
+ : prop1.toUpperCase();
+ v2 = sortType
+ ? sortType(prop2)
+ : caseSensitive
+ ? prop2
+ : prop2.toUpperCase();
+
+ if (v1 < v2) {
+ return desc ? +1 : -1;
+ } else if (v1 > v2) {
+ return desc ? -1 : +1;
+ } else {
+ return 0;
+ }
+ };
+
+ tree.on('afterrender', this.onAfterTreeRender, this, { single: true });
+ tree.on('headermenuclick', this.onHeaderMenuClick, this);
+ },
+
+ onAfterTreeRender: function () {
+ if (this.tree.hmenu) {
+ this.tree.hmenu.insert(
+ 0,
+ {
+ itemId: 'asc',
+ text: this.sortAscText,
+ cls: 'xg-hmenu-sort-asc',
+ },
+ {
+ itemId: 'desc',
+ text: this.sortDescText,
+ cls: 'xg-hmenu-sort-desc',
+ }
+ );
+ }
+ this.updateSortIcon(0, 'asc');
+ },
+
+ onHeaderMenuClick: function (c, id, index) {
+ if (id === 'asc' || id === 'desc') {
+ this.onHeaderClick(c, null, index);
+ return false;
+ }
+ },
+
+ onHeaderClick: function (c, el, i) {
+ if (c && !this.tree.headersDisabled) {
+ var me = this;
+
+ me.property = c.dataIndex;
+ me.dir = c.dir = c.dir === 'desc' ? 'asc' : 'desc';
+ me.sortType = c.sortType;
+ me.caseSensitive === Ext.isBoolean(c.caseSensitive)
+ ? c.caseSensitive
+ : this.caseSensitive;
+ me.sortFn = c.sortFn || this.defaultSortFn;
+
+ this.tree.root.cascade(function (n) {
+ if (!n.isLeaf()) {
+ me.updateSort(me.tree, n);
+ }
+ });
+
+ this.updateSortIcon(i, c.dir);
+ }
+ },
+
+ // private
+ updateSortIcon: function (col, dir) {
+ var sc = this.sortClasses,
+ hds = this.tree.innerHd.select('td').removeClass(sc);
+ hds.item(col).addClass(sc[dir == 'desc' ? 1 : 0]);
+ },
+});
diff --git a/deluge/ui/web/json_api.py b/deluge/ui/web/json_api.py
new file mode 100644
index 0000000..5f4b3dc
--- /dev/null
+++ b/deluge/ui/web/json_api.py
@@ -0,0 +1,1022 @@
+#
+# Copyright (C) 2009-2010 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import cgi
+import json
+import logging
+import os
+import shutil
+import tempfile
+from base64 import b64encode
+from types import FunctionType
+
+from twisted.internet import defer, reactor
+from twisted.internet.defer import Deferred, DeferredList
+from twisted.web import http, resource, server
+
+from deluge import component, httpdownloader
+from deluge.common import AUTH_LEVEL_DEFAULT, get_magnet_info, is_magnet
+from deluge.configmanager import get_config_dir
+from deluge.error import NotAuthorizedError
+from deluge.i18n import get_languages
+from deluge.ui.client import Client, client
+from deluge.ui.common import FileTree2, TorrentInfo
+from deluge.ui.coreconfig import CoreConfig
+from deluge.ui.hostlist import HostList
+from deluge.ui.sessionproxy import SessionProxy
+from deluge.ui.web.common import _
+
+log = logging.getLogger(__name__)
+
+
+class JSONComponent(component.Component):
+ def __init__(self, name, interval=1, depend=None):
+ super().__init__(name, interval, depend)
+ self._json = component.get('JSON')
+ self._json.register_object(self, name)
+
+
+def export(auth_level=AUTH_LEVEL_DEFAULT):
+ """
+ Decorator function to register an object's method as a RPC. The object
+ will need to be registered with a `:class:JSON` to be effective.
+
+ :param func: the function to export
+ :type func: function
+ :param auth_level: the auth level required to call this method
+ :type auth_level: int
+
+ """
+
+ def wrap(func, *args, **kwargs):
+ func._json_export = True
+ func._json_auth_level = auth_level
+ return func
+
+ if isinstance(auth_level, FunctionType):
+ func = auth_level
+ auth_level = AUTH_LEVEL_DEFAULT
+ return wrap(func)
+ else:
+ return wrap
+
+
+class JSONException(Exception):
+ def __init__(self, inner_exception):
+ self.inner_exception = inner_exception
+ Exception.__init__(self, str(inner_exception))
+
+
+class JSON(resource.Resource, component.Component):
+ """
+ A Twisted Web resource that exposes a JSON-RPC interface for web clients \
+ to use.
+ """
+
+ def __init__(self):
+ resource.Resource.__init__(self)
+ component.Component.__init__(self, 'JSON')
+ self._remote_methods = []
+ self._local_methods = {}
+ if client.is_standalone():
+ self.get_remote_methods()
+
+ def get_remote_methods(self, result=None):
+ """
+ Updates remote methods from the daemon.
+
+ Returns:
+ t.i.d.Deferred: A deferred returning the available remote methods
+ """
+
+ def on_get_methods(methods):
+ self._remote_methods = methods
+ return methods
+
+ return client.daemon.get_method_list().addCallback(on_get_methods)
+
+ def _exec_local(self, method, params, request):
+ """
+ Handles executing all local methods.
+ """
+ if method == 'system.listMethods':
+ d = Deferred()
+ methods = list(self._remote_methods)
+ methods.extend(self._local_methods)
+ d.callback(methods)
+ return d
+ elif method in self._local_methods:
+ # This will eventually process methods that the server adds
+ # and any plugins.
+ meth = self._local_methods[method]
+ meth.__globals__['__request__'] = request
+ component.get('Auth').check_request(request, meth)
+ return meth(*params)
+ raise JSONException('Unknown system method')
+
+ def _exec_remote(self, method, params, request):
+ """
+ Executes methods using the Deluge client.
+ """
+ component.get('Auth').check_request(request, level=AUTH_LEVEL_DEFAULT)
+ core_component, method = method.split('.')
+ return getattr(getattr(client, core_component), method)(*params)
+
+ def _handle_request(self, request):
+ """
+ Takes some json data as a string and attempts to decode it, and process
+ the rpc object that should be contained, returning a deferred for all
+ procedure calls and the request id.
+ """
+ try:
+ request_data = json.loads(request.json.decode())
+ except (ValueError, TypeError):
+ raise JSONException('JSON not decodable')
+
+ try:
+ method = request_data['method']
+ params = request_data['params']
+ request_id = request_data['id']
+ except KeyError as ex:
+ message = 'Invalid JSON request, missing param {} in {}'.format(
+ ex,
+ request_data,
+ )
+ raise JSONException(message)
+
+ result = None
+ error = None
+
+ try:
+ if method.startswith('system.') or method in self._local_methods:
+ result = self._exec_local(method, params, request)
+ elif method in self._remote_methods:
+ result = self._exec_remote(method, params, request)
+ else:
+ error = {'message': 'Unknown method', 'code': 2}
+ except NotAuthorizedError:
+ error = {'message': 'Not authenticated', 'code': 1}
+ except Exception as ex:
+ log.error('Error calling method `%s`: %s', method, ex)
+ log.exception(ex)
+ error = {'message': f'{ex.__class__.__name__}: {str(ex)}', 'code': 3}
+
+ return request_id, result, error
+
+ def _on_rpc_request_finished(self, result, response, request):
+ """
+ Sends the response of any rpc calls back to the json-rpc client.
+ """
+ response['result'] = result
+ return self._send_response(request, response)
+
+ def _on_rpc_request_failed(self, reason, response, request):
+ """
+ Handles any failures that occurred while making an rpc call.
+ """
+ log.error(reason)
+ response['error'] = {
+ 'message': f'{reason.__class__.__name__}: {str(reason)}',
+ 'code': 4,
+ }
+ return self._send_response(request, response)
+
+ def _on_json_request(self, request):
+ """
+ Handler to take the json data as a string and pass it on to the
+ _handle_request method for further processing.
+ """
+ content_type, _ = cgi.parse_header(request.getHeader(b'content-type').decode())
+ if content_type != 'application/json':
+ message = 'Invalid JSON request content-type: %s' % content_type
+ raise JSONException(message)
+
+ log.debug('json-request: %s', request.json)
+ response = {'result': None, 'error': None, 'id': None}
+ response['id'], d, response['error'] = self._handle_request(request)
+
+ if isinstance(d, Deferred):
+ d.addCallback(self._on_rpc_request_finished, response, request)
+ d.addErrback(self._on_rpc_request_failed, response, request)
+ return d
+ else:
+ response['result'] = d
+ return self._send_response(request, response)
+
+ def _on_json_request_failed(self, reason, request):
+ """
+ Returns the error in json response.
+ """
+ log.error(reason)
+ response = {
+ 'result': None,
+ 'id': None,
+ 'error': {
+ 'code': 5,
+ 'message': f'{reason.__class__.__name__}: {str(reason)}',
+ },
+ }
+ return self._send_response(request, response)
+
+ def _send_response(self, request, response):
+ if request._disconnected:
+ return ''
+ response = json.dumps(response)
+ request.setHeader(b'content-type', b'application/json')
+ request.write(response.encode())
+ request.finish()
+ return server.NOT_DONE_YET
+
+ def render(self, request):
+ """
+ Handles all the POST requests made to the /json controller.
+ """
+ if request.method != b'POST':
+ request.setResponseCode(http.NOT_ALLOWED)
+ request.finish()
+ return server.NOT_DONE_YET
+
+ try:
+ request.content.seek(0)
+ request.json = request.content.read()
+ self._on_json_request(request)
+ return server.NOT_DONE_YET
+ except Exception as ex:
+ return self._on_json_request_failed(ex, request)
+
+ def register_object(self, obj, name=None):
+ """Registers an object to export it's rpc methods.
+
+ These methods should be exported with the export decorator prior
+ to registering the object.
+
+ Args:
+ obj (object): The object that we want to export.
+ name (str): The name to use. If None, uses the object class name.
+
+ """
+ name = name or obj.__class__.__name__
+ name = name.lower()
+
+ for d in dir(obj):
+ if d[0] == '_':
+ continue
+ if getattr(getattr(obj, d), '_json_export', False):
+ log.debug('Registering method: %s', name + '.' + d)
+ self._local_methods[name + '.' + d] = getattr(obj, d)
+
+ def deregister_object(self, obj):
+ """Deregisters an objects exported rpc methods.
+
+ Args:
+ obj (object): The object that was previously registered.
+
+ """
+ for key, value in self._local_methods.items():
+ if value.__self__ == obj:
+ del self._local_methods[key]
+
+
+FILES_KEYS = ['files', 'file_progress', 'file_priorities']
+
+
+class EventQueue:
+ """
+ This class subscribes to events from the core and stores them until all
+ the subscribed listeners have received the events.
+ """
+
+ def __init__(self):
+ self.__events = {}
+ self.__handlers = {}
+ self.__queue = {}
+ self.__requests = {}
+
+ def add_listener(self, listener_id, event):
+ """
+ Add a listener to the event queue.
+
+ :param listener_id: A unique id for the listener
+ :type listener_id: string
+ :param event: The event name
+ :type event: string
+ """
+ if event not in self.__events:
+
+ def on_event(*args):
+ for listener in self.__events[event]:
+ if listener not in self.__queue:
+ self.__queue[listener] = []
+ self.__queue[listener].append((event, args))
+
+ client.register_event_handler(event, on_event)
+ self.__handlers[event] = on_event
+ self.__events[event] = [listener_id]
+ elif listener_id not in self.__events[event]:
+ self.__events[event].append(listener_id)
+
+ def get_events(self, listener_id):
+ """
+ Retrieve the pending events for the listener.
+
+ :param listener_id: A unique id for the listener
+ :type listener_id: string
+ """
+
+ # Check to see if we have anything to return immediately
+ if listener_id in self.__queue:
+ queue = self.__queue[listener_id]
+ del self.__queue[listener_id]
+ return queue
+
+ # Create a deferred to and check again in 100ms
+ d = Deferred()
+ reactor.callLater(0.1, self._get_events, listener_id, 0, d)
+ return d
+
+ def _get_events(self, listener_id, count, d):
+ if listener_id in self.__queue:
+ queue = self.__queue[listener_id]
+ del self.__queue[listener_id]
+ d.callback(queue)
+ else:
+ # Prevent this loop going on indefinitely incase a client leaves
+ # the page or disconnects uncleanly.
+ if count >= 50:
+ d.callback(None)
+ else:
+ reactor.callLater(0.1, self._get_events, listener_id, count + 1, d)
+
+ def remove_listener(self, listener_id, event):
+ """
+ Remove a listener from the event queue.
+
+ :param listener_id: The unique id for the listener
+ :type listener_id: string
+ :param event: The event name
+ :type event: string
+ """
+ self.__events[event].remove(listener_id)
+ if not self.__events[event]:
+ client.deregister_event_handler(event, self.__handlers[event])
+ del self.__events[event]
+ del self.__handlers[event]
+
+
+class WebApi(JSONComponent):
+ """
+ The component that implements all the methods required for managing
+ the web interface. The complete web json interface also exposes all the
+ methods available from the core RPC.
+ """
+
+ def __init__(self):
+ super().__init__('Web', depend=['SessionProxy'])
+ self.hostlist = HostList()
+ self.core_config = CoreConfig()
+ self.event_queue = EventQueue()
+ try:
+ self.sessionproxy = component.get('SessionProxy')
+ except KeyError:
+ self.sessionproxy = SessionProxy()
+
+ def disable(self):
+ client.deregister_event_handler(
+ 'PluginEnabledEvent', self._json.get_remote_methods
+ )
+ client.deregister_event_handler(
+ 'PluginDisabledEvent', self._json.get_remote_methods
+ )
+
+ if client.is_standalone():
+ component.get('Web.PluginManager').stop()
+ else:
+ client.disconnect()
+ client.set_disconnect_callback(None)
+
+ def enable(self):
+ client.register_event_handler(
+ 'PluginEnabledEvent', self._json.get_remote_methods
+ )
+ client.register_event_handler(
+ 'PluginDisabledEvent', self._json.get_remote_methods
+ )
+
+ if client.is_standalone():
+ component.get('Web.PluginManager').start()
+ else:
+ client.set_disconnect_callback(self._on_client_disconnect)
+ default_host_id = component.get('DelugeWeb').config['default_daemon']
+ if default_host_id:
+ return self.connect(default_host_id)
+
+ return defer.succeed(True)
+
+ def _on_client_connect(self, *args):
+ """Handles client successfully connecting to the daemon.
+
+ Invokes retrieving the method names and starts webapi and plugins.
+
+ """
+ d_methods = self._json.get_remote_methods()
+ component.get('Web.PluginManager').start()
+ self.start()
+ return d_methods
+
+ def _on_client_connect_fail(self, result, host_id):
+ log.error(
+ 'Unable to connect to daemon, check host_id "%s" is correct.', host_id
+ )
+
+ def _on_client_disconnect(self, *args):
+ component.get('Web.PluginManager').stop()
+ return self.stop()
+
+ def start(self):
+ self.core_config.start()
+ return self.sessionproxy.start()
+
+ def stop(self):
+ self.core_config.stop()
+ self.sessionproxy.stop()
+ return defer.succeed(True)
+
+ @export
+ def connect(self, host_id):
+ """Connect the web client to a daemon.
+
+ Args:
+ host_id (str): The id of the daemon in the host list.
+
+ Returns:
+ Deferred: List of methods the daemon supports.
+ """
+ d = self.hostlist.connect_host(host_id)
+ d.addCallback(self._on_client_connect)
+ d.addErrback(self._on_client_connect_fail, host_id)
+ return d
+
+ @export
+ def connected(self):
+ """
+ The current connection state.
+
+ :returns: True if the client is connected
+ :rtype: boolean
+ """
+ return client.connected()
+
+ @export
+ def disconnect(self):
+ """
+ Disconnect the web interface from the connected daemon.
+ """
+ d = client.disconnect()
+
+ def on_disconnect(reason):
+ return str(reason)
+
+ d.addCallback(on_disconnect)
+ return d
+
+ @export
+ def update_ui(self, keys, filter_dict):
+ """
+ Gather the information required for updating the web interface.
+
+ :param keys: the information about the torrents to gather
+ :type keys: list
+ :param filter_dict: the filters to apply when selecting torrents.
+ :type filter_dict: dictionary
+ :returns: The torrent and UI information.
+ :rtype: dictionary
+ """
+ d = Deferred()
+ ui_info = {
+ 'connected': client.connected(),
+ 'torrents': None,
+ 'filters': None,
+ 'stats': {
+ 'max_download': self.core_config.get('max_download_speed'),
+ 'max_upload': self.core_config.get('max_upload_speed'),
+ 'max_num_connections': self.core_config.get('max_connections_global'),
+ },
+ }
+
+ if not client.connected():
+ d.callback(ui_info)
+ return d
+
+ def got_stats(stats):
+ ui_info['stats']['num_connections'] = stats['peer.num_peers_connected']
+ ui_info['stats']['upload_rate'] = stats['payload_upload_rate']
+ ui_info['stats']['download_rate'] = stats['payload_download_rate']
+ ui_info['stats']['download_protocol_rate'] = (
+ stats['download_rate'] - stats['payload_download_rate']
+ )
+ ui_info['stats']['upload_protocol_rate'] = (
+ stats['upload_rate'] - stats['payload_upload_rate']
+ )
+ ui_info['stats']['dht_nodes'] = stats['dht.dht_nodes']
+ ui_info['stats']['has_incoming_connections'] = stats[
+ 'net.has_incoming_connections'
+ ]
+
+ def got_filters(filters):
+ ui_info['filters'] = filters
+
+ def got_free_space(free_space):
+ ui_info['stats']['free_space'] = free_space
+
+ def got_external_ip(external_ip):
+ ui_info['stats']['external_ip'] = external_ip
+
+ def got_torrents(torrents):
+ ui_info['torrents'] = torrents
+
+ def on_complete(result):
+ d.callback(ui_info)
+
+ d1 = component.get('SessionProxy').get_torrents_status(filter_dict, keys)
+ d1.addCallback(got_torrents)
+
+ d2 = client.core.get_filter_tree()
+ d2.addCallback(got_filters)
+
+ d3 = client.core.get_session_status(
+ [
+ 'peer.num_peers_connected',
+ 'payload_download_rate',
+ 'payload_upload_rate',
+ 'download_rate',
+ 'upload_rate',
+ 'dht.dht_nodes',
+ 'net.has_incoming_connections',
+ ]
+ )
+ d3.addCallback(got_stats)
+
+ d4 = client.core.get_free_space(self.core_config.get('download_location'))
+ d4.addCallback(got_free_space)
+
+ d5 = client.core.get_external_ip()
+ d5.addCallback(got_external_ip)
+
+ dl = DeferredList([d1, d2, d3, d4, d5], consumeErrors=True)
+ dl.addCallback(on_complete)
+ return d
+
+ def _on_got_files(self, torrent, d):
+ files = torrent.get('files')
+ file_progress = torrent.get('file_progress')
+ file_priorities = torrent.get('file_priorities')
+
+ paths = []
+ info = {}
+ for index, torrent_file in enumerate(files):
+ path = torrent_file['path']
+ paths.append(path)
+ torrent_file['progress'] = file_progress[index]
+ torrent_file['priority'] = file_priorities[index]
+ torrent_file['index'] = index
+ torrent_file['path'] = path
+ info[path] = torrent_file
+
+ # update the directory info
+ dirname = os.path.dirname(path)
+ while dirname:
+ dirinfo = info.setdefault(dirname, {})
+ dirinfo['size'] = dirinfo.get('size', 0) + torrent_file['size']
+ if 'priority' not in dirinfo:
+ dirinfo['priority'] = torrent_file['priority']
+ else:
+ if dirinfo['priority'] != torrent_file['priority']:
+ dirinfo['priority'] = 9
+
+ progresses = dirinfo.setdefault('progresses', [])
+ progresses.append(torrent_file['size'] * torrent_file['progress'] / 100)
+ if dirinfo['size'] > 0:
+ dirinfo['progress'] = sum(progresses) / dirinfo['size'] * 100
+ else:
+ dirinfo['progress'] = 100
+ dirinfo['path'] = dirname
+ dirname = os.path.dirname(dirname)
+
+ def walk(path, item):
+ if item['type'] == 'dir':
+ item.update(info[path])
+ return item
+ else:
+ item.update(info[path])
+ return item
+
+ file_tree = FileTree2(paths)
+ file_tree.walk(walk)
+ d.callback(file_tree.get_tree())
+
+ @export
+ def get_torrent_status(self, torrent_id, keys):
+ """Get the status for a torrent, filtered by status keys."""
+ return component.get('SessionProxy').get_torrent_status(torrent_id, keys)
+
+ @export
+ def get_torrent_files(self, torrent_id):
+ """
+ Gets the files for a torrent in tree format
+
+ :param torrent_id: the id of the torrent to retrieve.
+ :type torrent_id: string
+ :returns: The torrents files in a tree
+ :rtype: dictionary
+ """
+ main_deferred = Deferred()
+ d = component.get('SessionProxy').get_torrent_status(torrent_id, FILES_KEYS)
+ d.addCallback(self._on_got_files, main_deferred)
+ return main_deferred
+
+ @export
+ def download_torrent_from_url(self, url, cookie=None):
+ """
+ Download a torrent file from a URL to a temporary directory.
+
+ :param url: the URL of the torrent
+ :type url: string
+ :returns: the temporary file name of the torrent file
+ :rtype: string
+ """
+
+ def on_download_success(result):
+ log.debug('Successfully downloaded %s to %s', url, result)
+ return result
+
+ def on_download_fail(result):
+ log.error('Failed to add torrent from url %s', url)
+ return result
+
+ tempdir = tempfile.mkdtemp(prefix='delugeweb-')
+ tmp_file = os.path.join(tempdir, url.split('/')[-1])
+ log.debug('filename: %s', tmp_file)
+ headers = {}
+ if cookie:
+ headers['Cookie'] = cookie
+ log.debug('cookie: %s', cookie)
+ d = httpdownloader.download_file(url, tmp_file, headers=headers)
+ d.addCallbacks(on_download_success, on_download_fail)
+ return d
+
+ @export
+ def get_torrent_info(self, filename):
+ """
+ Return information about a torrent on the filesystem.
+
+ :param filename: the path to the torrent
+ :type filename: string
+
+ :returns: information about the torrent:
+
+ ::
+
+ {
+ "name": the torrent name,
+ "files_tree": the files the torrent contains,
+ "info_hash" the torrents info_hash
+ }
+
+ :rtype: dictionary
+ """
+ try:
+ torrent_info = TorrentInfo(filename.strip(), 2)
+ return torrent_info.as_dict('name', 'info_hash', 'files_tree')
+ except Exception as ex:
+ log.error(ex)
+ return False
+
+ @export
+ def get_magnet_info(self, uri):
+ """Parse a magnet URI for hash and name."""
+ return get_magnet_info(uri)
+
+ @export
+ def add_torrents(self, torrents):
+ """
+ Add torrents by file
+
+ :param torrents: A list of dictionaries containing the torrent \
+ path and torrent options to add with.
+ :type torrents: list
+
+ ::
+
+ json_api.web.add_torrents([{
+ "path": "/tmp/deluge-web/some-torrent-file.torrent",
+ "options": {"download_location": "/home/deluge/"}
+ }])
+
+ """
+ deferreds = []
+
+ for torrent in torrents:
+ if is_magnet(torrent['path']):
+ log.info(
+ 'Adding torrent from magnet uri `%s` with options `%r`',
+ torrent['path'],
+ torrent['options'],
+ )
+ d = client.core.add_torrent_magnet(torrent['path'], torrent['options'])
+ deferreds.append(d)
+ else:
+ filename = os.path.basename(torrent['path'])
+ with open(torrent['path'], 'rb') as _file:
+ fdump = b64encode(_file.read())
+ log.info(
+ 'Adding torrent from file `%s` with options `%r`',
+ filename,
+ torrent['options'],
+ )
+ d = client.core.add_torrent_file_async(
+ filename, fdump, torrent['options']
+ )
+ deferreds.append(d)
+ return DeferredList(deferreds, consumeErrors=False)
+
+ def _get_host(self, host_id):
+ """Information about a host from supplied host id.
+
+ Args:
+ host_id (str): The id of the host.
+
+ Returns:
+ list: The host information, empty list if not found.
+
+ """
+ return list(self.hostlist.get_host_info(host_id))
+
+ @export
+ def get_hosts(self):
+ """
+ Return the hosts in the hostlist.
+ """
+ log.debug('get_hosts called')
+ return self.hostlist.get_hosts_info()
+
+ @export
+ def get_host_status(self, host_id):
+ """
+ Returns the current status for the specified host.
+
+ :param host_id: the hash id of the host
+ :type host_id: string
+
+ """
+
+ def response(result):
+ return result
+
+ return self.hostlist.get_host_status(host_id).addCallback(response)
+
+ @export
+ def add_host(self, host, port, username='', password=''):
+ """Adds a host to the list.
+
+ Args:
+ host (str): The IP or hostname of the deluge daemon.
+ port (int): The port of the deluge daemon.
+ username (str): The username to login to the daemon with.
+ password (str): The password to login to the daemon with.
+
+ Returns:
+ tuple: A tuple of (bool, str). If True will contain the host_id, otherwise
+ if False will contain the error message.
+ """
+ try:
+ host_id = self.hostlist.add_host(host, port, username, password)
+ except ValueError as ex:
+ return False, str(ex)
+ else:
+ return True, host_id
+
+ @export
+ def edit_host(self, host_id, host, port, username='', password=''):
+ """Edit host details in the hostlist.
+
+ Args:
+ host_id (str): The host identifying hash.
+ host (str): The IP or hostname of the deluge daemon.
+ port (int): The port of the deluge daemon.
+ username (str): The username to login to the daemon with.
+ password (str): The password to login to the daemon with.
+
+ Returns:
+ bool: True if successful, False otherwise.
+
+ """
+ return self.hostlist.update_host(host_id, host, port, username, password)
+
+ @export
+ def remove_host(self, host_id):
+ """Removes a host from the hostlist.
+
+ Args:
+ host_id (str): The host identifying hash.
+
+ Returns:
+ bool: True if successful, False otherwise.
+
+ """
+ return self.hostlist.remove_host(host_id)
+
+ @export
+ def start_daemon(self, port):
+ """
+ Starts a local daemon.
+ """
+ client.start_daemon(port, get_config_dir())
+
+ @export
+ def stop_daemon(self, host_id):
+ """
+ Stops a running daemon.
+
+ :param host_id: the hash id of the host
+ :type host_id: string
+ """
+ main_deferred = Deferred()
+ host = self._get_host(host_id)
+ if not host:
+ main_deferred.callback((False, _('Daemon does not exist')))
+ return main_deferred
+
+ try:
+
+ def on_connect(connected, c):
+ if not connected:
+ main_deferred.callback((False, _('Daemon not running')))
+ return
+ c.daemon.shutdown()
+ main_deferred.callback((True,))
+
+ def on_connect_failed(reason):
+ main_deferred.callback((False, reason))
+
+ host, port, user, password = host[1:5]
+ c = Client()
+ d = c.connect(host, port, user, password)
+ d.addCallback(on_connect, c)
+ d.addErrback(on_connect_failed)
+ except Exception:
+ main_deferred.callback((False, 'An error occurred'))
+ return main_deferred
+
+ @export
+ def get_config(self):
+ """
+ Get the configuration dictionary for the web interface.
+
+ :rtype: dictionary
+ :returns: the configuration
+ """
+ config = component.get('DelugeWeb').config.config.copy()
+ del config['sessions']
+ del config['pwd_salt']
+ del config['pwd_sha1']
+ return config
+
+ @export
+ def set_config(self, config):
+ """
+ Sets the configuration dictionary for the web interface.
+
+ :param config: The configuration options to update
+ :type config: dictionary
+ """
+ web_config = component.get('DelugeWeb').config
+ for key in config:
+ if key in ['sessions', 'pwd_salt', 'pwd_sha1']:
+ log.warning('Ignored attempt to overwrite web config key: %s', key)
+ continue
+ web_config[key] = config[key]
+
+ @export
+ def get_plugins(self):
+ """All available and enabled plugins within WebUI.
+
+ Note:
+ This does not represent all plugins from deluge.client.core.
+
+ Returns:
+ dict: A dict containing 'available_plugins' and 'enabled_plugins' lists.
+
+ """
+
+ return {
+ 'enabled_plugins': list(component.get('Web.PluginManager').plugins),
+ 'available_plugins': component.get('Web.PluginManager').available_plugins,
+ }
+
+ @export
+ def get_plugin_info(self, name):
+ """Get the details for a plugin."""
+ return component.get('Web.PluginManager').get_plugin_info(name)
+
+ @export
+ def get_plugin_resources(self, name):
+ """Get the resource data files for a plugin."""
+ return component.get('Web.PluginManager').get_plugin_resources(name)
+
+ @export
+ def upload_plugin(self, filename, path):
+ """Upload a plugin to config."""
+ main_deferred = Deferred()
+
+ shutil.copyfile(path, os.path.join(get_config_dir(), 'plugins', filename))
+ component.get('Web.PluginManager').scan_for_plugins()
+
+ if client.is_localhost():
+ client.core.rescan_plugins()
+ return True
+ with open(path, 'rb') as _file:
+ plugin_data = b64encode(_file.read())
+
+ def on_upload_complete(*args):
+ client.core.rescan_plugins()
+ component.get('Web.PluginManager').scan_for_plugins()
+ main_deferred.callback(True)
+
+ def on_upload_error(*args):
+ main_deferred.callback(False)
+
+ d = client.core.upload_plugin(filename, plugin_data)
+ d.addCallback(on_upload_complete)
+ d.addErrback(on_upload_error)
+ return main_deferred
+
+ @export
+ def register_event_listener(self, event):
+ """
+ Add a listener to the event queue.
+
+ :param event: The event name
+ :type event: string
+ """
+ self.event_queue.add_listener(__request__.session_id, event)
+
+ @export
+ def deregister_event_listener(self, event):
+ """
+ Remove an event listener from the event queue.
+
+ :param event: The event name
+ :type event: string
+ """
+ self.event_queue.remove_listener(__request__.session_id, event)
+
+ @export
+ def get_events(self):
+ """
+ Retrieve the pending events for the session.
+ """
+ return self.event_queue.get_events(__request__.session_id)
+
+ @export
+ def set_theme(self, theme):
+ """
+ Sets a new Theme to the WebUI
+
+ Args:
+ theme (str): the theme to apply
+ """
+ component.get('DelugeWeb').set_theme(theme)
+
+
+class WebUtils(JSONComponent):
+ """
+ Utility functions for the Web UI that do not fit in the WebApi.
+ """
+
+ def __init__(self):
+ super().__init__('WebUtils')
+
+ @export
+ def get_languages(self):
+ """
+ Get the available translated languages
+
+ Returns:
+ list: of tuples ``[(lang-id, language-name), ...]``
+ """
+ return get_languages()
+
+ @export
+ def get_themes(self):
+ """
+ Get the available themes
+
+ Returns:
+ list: of themes ``[theme1, theme2, ...]``
+ """
+ return component.get('DelugeWeb').get_themes()
diff --git a/deluge/ui/web/pluginmanager.py b/deluge/ui/web/pluginmanager.py
new file mode 100644
index 0000000..2da5b61
--- /dev/null
+++ b/deluge/ui/web/pluginmanager.py
@@ -0,0 +1,153 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+import os
+
+from deluge import component
+from deluge.configmanager import ConfigManager
+from deluge.pluginmanagerbase import PluginManagerBase
+from deluge.ui.client import client
+
+log = logging.getLogger(__name__)
+
+
+def gather_info(plugin):
+ # Get the scripts for the plugin
+ scripts = getattr(plugin, 'scripts', ())
+ debug_scripts = getattr(plugin, 'debug_scripts') or scripts
+
+ directories = []
+ for script in scripts + debug_scripts:
+ if os.path.dirname(script) not in directories:
+ directories.append(os.path.dirname(script))
+
+ return {
+ 'scripts': scripts,
+ 'debug_scripts': debug_scripts,
+ 'script_directories': directories,
+ }
+
+
+class PluginManager(PluginManagerBase, component.Component):
+ def __init__(self):
+ component.Component.__init__(self, 'Web.PluginManager')
+ self.config = ConfigManager('web.conf')
+ PluginManagerBase.__init__(self, 'web.conf', 'deluge.plugin.web')
+
+ client.register_event_handler(
+ 'PluginEnabledEvent', self._on_plugin_enabled_event
+ )
+ client.register_event_handler(
+ 'PluginDisabledEvent', self._on_plugin_disabled_event
+ )
+
+ def _on_get_enabled_plugins(self, plugins):
+ for plugin in plugins:
+ self.enable_plugin(plugin)
+
+ def _on_plugin_enabled_event(self, name):
+ self.enable_plugin(name)
+
+ def _on_plugin_disabled_event(self, name):
+ self.disable_plugin(name)
+
+ def disable_plugin(self, name):
+ # Get the plugin instance
+ try:
+ plugin = component.get('WebPlugin.' + name)
+ except KeyError:
+ log.debug(
+ '%s plugin contains no WebUI code, ignoring WebUI disable call.', name
+ )
+ return
+
+ info = gather_info(plugin)
+
+ scripts = component.get('Scripts')
+ for script in info['scripts']:
+ scripts.remove_script(f'{name.lower()}/{os.path.basename(script).lower()}')
+
+ for script in info['debug_scripts']:
+ scripts.remove_script(
+ f'{name.lower()}/{os.path.basename(script).lower()}', 'debug'
+ )
+ scripts.remove_script(
+ f'{name.lower()}/{os.path.basename(script).lower()}', 'dev'
+ )
+
+ super().disable_plugin(name)
+
+ def enable_plugin(self, name):
+ super().enable_plugin(name)
+
+ # Get the plugin instance
+ try:
+ plugin = component.get('WebPlugin.' + name)
+ except KeyError:
+ log.info(
+ '%s plugin contains no WebUI code, ignoring WebUI enable call.', name
+ )
+ return
+
+ info = gather_info(plugin)
+
+ scripts = component.get('Scripts')
+ for script in info['scripts']:
+ log.debug('adding script %s for %s', name, os.path.basename(script))
+ scripts.add_script(f'{name.lower()}/{os.path.basename(script)}', script)
+
+ for script in info['debug_scripts']:
+ log.debug('adding debug script %s for %s', name, os.path.basename(script))
+ scripts.add_script(
+ f'{name.lower()}/{os.path.basename(script)}', script, 'debug'
+ )
+ scripts.add_script(
+ f'{name.lower()}/{os.path.basename(script)}', script, 'dev'
+ )
+
+ def start(self):
+ """
+ Start up the plugin manager
+ """
+ # Update the enabled plugins from the core
+ d = client.core.get_enabled_plugins()
+ d.addCallback(self._on_get_enabled_plugins)
+
+ def stop(self):
+ """
+ Stop the plugin manager
+ """
+ self.disable_plugins()
+ client.deregister_event_handler(
+ 'PluginEnabledEvent', self._on_plugin_enabled_event
+ )
+ client.deregister_event_handler(
+ 'PluginDisabledEvent', self._on_plugin_disabled_event
+ )
+
+ def update(self):
+ pass
+
+ def get_plugin_resources(self, name):
+ # Get the plugin instance
+ try:
+ plugin = component.get('WebPlugin.' + name)
+ except KeyError:
+ log.info('Plugin has no web ui')
+ return
+ info = gather_info(plugin)
+ info['name'] = name
+ info['scripts'] = [
+ f'js/{name.lower()}/{os.path.basename(s)}' for s in info['scripts']
+ ]
+ info['debug_scripts'] = [
+ f'js/{name.lower()}/{os.path.basename(s)}' for s in info['debug_scripts']
+ ]
+ del info['script_directories']
+ return info
diff --git a/deluge/ui/web/render/404.html b/deluge/ui/web/render/404.html
new file mode 100644
index 0000000..8624de4
--- /dev/null
+++ b/deluge/ui/web/render/404.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Deluge: Web UI ${version}</title>
+ </head>
+ <body>
+ <h1>Error 404 - Page Not Found</h1>
+ <b>The requested template file was not found.</b>
+ </body>
+</html>
diff --git a/deluge/ui/web/render/tab_status.html b/deluge/ui/web/render/tab_status.html
new file mode 100644
index 0000000..deed7d6
--- /dev/null
+++ b/deluge/ui/web/render/tab_status.html
@@ -0,0 +1,29 @@
+<dl>
+ <dt class="downloaded">${_("Downloaded:")}</dt><dd class="downloaded"/>
+ <dt class="uploaded">${_("Uploaded:")}</dt><dd class="uploaded"/>
+ <dt class="share">${_("Share Ratio:")}</dt><dd class="share"/>
+ <dt class="announce">${_("Next Announce:")}</dt><dd class="announce"/>
+ <dt class="tracker">${_("Tracker Status:")}</dt><dd class="tracker_status"/>
+</dl>
+<dl>
+ <dt class="downspeed">${_("Down Speed:")}</dt><dd class="downspeed"/>
+ <dt class="upspeed">${_("Up Speed:")}</dt><dd class="upspeed"/>
+ <dt class="eta">${_("ETA:")}</dt><dd class="eta"/>
+ <dt class="pieces">${_("Pieces:")}</dt><dd class="pieces"/>
+ <dt class="time_since_transfer">${_("Last Transfer:")}</dt><dd class="time_since_transfer"/>
+</dl>
+<dl>
+ <dt class="seeds">${_("Seeds:")}</dt><dd class="seeds"/>
+ <dt class="peers">${_("Peers:")}</dt><dd class="peers"/>
+ <dt class="avail">${_("Availability:")}</dt><dd class="avail"/>
+ <dt class="auto_managed">${_("Auto Managed:")}</dt><dd class="auto_managed"/>
+ <dt class="last_seen_complete">${_("Complete Seen:")}</dt><dd class="last_seen_complete"/>
+</dl>
+<dl>
+ <dt class="active_time">${_("Active Time:")}</dt><dd class="active_time"/>
+ <dt class="seeding_time">${_("Seeding Time:")}</dt><dd class="seeding_time"/>
+ <dt class="seed_rank">${_("Seed Rank:")}</dt><dd class="seed_rank"/>
+ <dt class="time_rank">${_("Date Added:")}</dt><dd class="time_added"/>
+ <dt class="completed_time">${_("Completed:")}</dt><dd class="completed_time"/>
+</dl>
+<br style="clear: both;" />
diff --git a/deluge/ui/web/server.py b/deluge/ui/web/server.py
new file mode 100644
index 0000000..5fbdd4e
--- /dev/null
+++ b/deluge/ui/web/server.py
@@ -0,0 +1,823 @@
+#
+# Copyright (C) 2009-2010 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import fnmatch
+import json
+import logging
+import mimetypes
+import os
+import tempfile
+from pathlib import Path
+
+from twisted.application import internet, service
+from twisted.internet import defer, reactor
+from twisted.web import http, resource, server, static
+from twisted.web.resource import EncodingResourceWrapper
+
+from deluge import common, component, configmanager
+from deluge.common import is_ipv6
+from deluge.crypto_utils import check_ssl_keys, get_context_factory
+from deluge.i18n import set_language, setup_translation
+from deluge.ui.tracker_icons import TrackerIcons
+from deluge.ui.web.auth import Auth
+from deluge.ui.web.common import Template
+from deluge.ui.web.json_api import JSON, WebApi, WebUtils
+from deluge.ui.web.pluginmanager import PluginManager
+
+log = logging.getLogger(__name__)
+
+CONFIG_DEFAULTS = {
+ # Misc Settings
+ 'enabled_plugins': [],
+ 'default_daemon': '',
+ # Auth Settings
+ 'pwd_salt': 'c26ab3bbd8b137f99cd83c2c1c0963bcc1a35cad',
+ 'pwd_sha1': '2ce1a410bcdcc53064129b6d950f2e9fee4edc1e',
+ 'session_timeout': 3600,
+ 'sessions': {},
+ # UI Settings
+ 'sidebar_show_zero': False,
+ 'sidebar_multiple_filters': True,
+ 'show_session_speed': False,
+ 'show_sidebar': True,
+ 'theme': 'gray',
+ 'first_login': True,
+ 'language': '',
+ # Server Settings
+ 'base': '/',
+ 'interface': '0.0.0.0',
+ 'port': 8112,
+ 'https': False,
+ 'pkey': 'ssl/daemon.pkey',
+ 'cert': 'ssl/daemon.cert',
+}
+
+UI_CONFIG_KEYS = (
+ 'theme',
+ 'sidebar_show_zero',
+ 'sidebar_multiple_filters',
+ 'show_session_speed',
+ 'base',
+ 'first_login',
+)
+
+
+def rpath(*paths):
+ """Convert a relative path into an absolute path relative to the location
+ of this script.
+ """
+ return common.resource_filename('deluge.ui.web', os.path.join(*paths))
+
+
+def absolute_base_url(base):
+ """Returns base as absolute URL for links"""
+ if not base:
+ base = '/'
+
+ if not base.startswith('/'):
+ base = '/' + base
+
+ if not base.endswith('/'):
+ base += '/'
+
+ return base
+
+
+class GetText(resource.Resource):
+ def render(self, request):
+ request.setHeader(b'content-type', b'text/javascript; encoding=utf-8')
+ template = Template(filename=rpath('js', 'gettext.js'))
+ return template.render()
+
+
+class MockGetText(resource.Resource):
+ """GetText Mocking class
+
+ This class will mock the file `gettext.js` in case it does not exists.
+ It will be used to define the `_` (underscore) function for translations,
+ and will return the string to translate, as is.
+ """
+
+ def render(self, request):
+ request.setHeader(b'content-type', b'text/javascript; encoding=utf-8')
+ return b'function _(string) { return string; }'
+
+
+class Upload(resource.Resource):
+ """
+ Twisted Web resource to handle file uploads
+ """
+
+ def render(self, request):
+ """
+ Saves all uploaded files to the disk and returns a list of filenames,
+ each on a new line.
+ """
+
+ # Block all other HTTP methods.
+ if request.method != b'POST':
+ request.setResponseCode(http.NOT_ALLOWED)
+ request.finish()
+ return server.NOT_DONE_YET
+
+ files = request.args.get(b'file', [])
+ filenames = []
+
+ if files:
+ tempdir = tempfile.mkdtemp(prefix='delugeweb-')
+ log.debug('uploading files to %s', tempdir)
+
+ for upload in files:
+ fd, fn = tempfile.mkstemp('.torrent', dir=tempdir)
+ os.write(fd, upload)
+ os.close(fd)
+ filenames.append(fn)
+
+ log.debug('uploaded %d file(s)', len(filenames))
+
+ request.setHeader(b'content-type', b'text/html')
+ request.setResponseCode(http.OK)
+ return json.dumps({'success': bool(filenames), 'files': filenames}).encode()
+
+
+class Render(resource.Resource):
+ def __init__(self):
+ super().__init__()
+ # Make a list of all the template files to check requests against.
+ self.template_files = fnmatch.filter(os.listdir(rpath('render')), '*.html')
+
+ def getChild(self, path, request): # NOQA: N802
+ request.render_file = path
+ return EncodingResourceWrapper(self, [server.GzipEncoderFactory()])
+
+ def render(self, request):
+ log.debug('Render template file: %s', request.render_file)
+ if not hasattr(request, 'render_file'):
+ request.setResponseCode(http.INTERNAL_SERVER_ERROR)
+ return ''
+
+ request.setHeader(b'content-type', b'text/html')
+
+ tpl_file = request.render_file.decode()
+ if tpl_file in self.template_files:
+ request.setResponseCode(http.OK)
+ else:
+ request.setResponseCode(http.NOT_FOUND)
+ tpl_file = '404.html'
+
+ template = Template(filename=rpath(os.path.join('render', tpl_file)))
+ return template.render()
+
+
+class Tracker(resource.Resource):
+ def __init__(self):
+ super().__init__()
+ try:
+ self.tracker_icons = component.get('TrackerIcons')
+ except KeyError:
+ self.tracker_icons = TrackerIcons()
+
+ def getChild(self, path, request): # NOQA: N802
+ request.tracker_name = path
+ return self
+
+ def on_got_icon(self, icon, request):
+ if icon:
+ request.setHeader(
+ b'cache-control', b'public, must-revalidate, max-age=86400'
+ )
+ request.setHeader(b'content-type', icon.get_mimetype().encode())
+ request.setResponseCode(http.OK)
+ request.write(icon.get_data())
+ request.finish()
+ else:
+ request.setResponseCode(http.NOT_FOUND)
+ request.finish()
+
+ def render(self, request):
+ d = self.tracker_icons.fetch(request.tracker_name.decode())
+ d.addCallback(self.on_got_icon, request)
+ return server.NOT_DONE_YET
+
+
+class Flag(resource.Resource):
+ def getChild(self, path, request): # NOQA: N802
+ request.country = path
+ return self
+
+ def render(self, request):
+ flag = request.country.decode().lower() + '.png'
+ path = ('ui', 'data', 'pixmaps', 'flags', flag)
+ filename = common.resource_filename('deluge', os.path.join(*path))
+ if os.path.exists(filename):
+ request.setHeader(
+ b'cache-control', b'public, must-revalidate, max-age=86400'
+ )
+ request.setHeader(b'content-type', b'image/png')
+ with open(filename, 'rb') as _file:
+ data = _file.read()
+ request.setResponseCode(http.OK)
+ return data
+ else:
+ request.setResponseCode(http.NOT_FOUND)
+ return ''
+
+
+class LookupResource(resource.Resource, component.Component):
+ def __init__(self, name, *directories):
+ resource.Resource.__init__(self)
+ component.Component.__init__(self, name)
+
+ self.__paths = {}
+ for directory in directories:
+ self.add_directory(directory)
+
+ def add_directory(self, directory, path=''):
+ log.debug('Adding directory `%s` with path `%s`', directory, path)
+ paths = self.__paths.setdefault(path, [])
+ paths.append(directory)
+
+ def remove_directory(self, directory, path=''):
+ log.debug('Removing directory `%s`', directory)
+ self.__paths[path].remove(directory)
+
+ def getChild(self, path, request): # NOQA: N802
+ if hasattr(request, 'lookup_path'):
+ request.lookup_path = os.path.join(request.lookup_path, path)
+ else:
+ request.lookup_path = path
+
+ if request.uri.endswith(b'css'):
+ return EncodingResourceWrapper(self, [server.GzipEncoderFactory()])
+ else:
+ return self
+
+ def render(self, request):
+ log.debug('Requested path: %s', request.lookup_path)
+ path = os.path.dirname(request.lookup_path).decode()
+
+ if path in self.__paths:
+ filename = os.path.basename(request.path).decode()
+ for directory in self.__paths[path]:
+ path = os.path.join(directory, filename)
+ if os.path.isfile(path):
+ log.debug('Serving path: %s', path)
+ mime_type = mimetypes.guess_type(path)
+ request.setHeader(b'content-type', mime_type[0].encode())
+ with open(path, 'rb') as _file:
+ data = _file.read()
+ return data
+
+ request.setResponseCode(http.NOT_FOUND)
+ request.setHeader(b'content-type', b'text/html')
+ template = Template(filename=rpath(os.path.join('render', '404.html')))
+ return template.render()
+
+
+class ScriptResource(resource.Resource, component.Component):
+ def __init__(self):
+ resource.Resource.__init__(self)
+ component.Component.__init__(self, 'Scripts')
+ self.__scripts = {}
+ for script_type in ['normal', 'debug', 'dev']:
+ self.__scripts[script_type] = {
+ 'scripts': {},
+ 'order': [],
+ 'files_exist': True,
+ }
+
+ def has_script_type_files(self, script_type):
+ """Returns whether all the script files exist for this script type.
+
+ Args:
+ script_type (str): The script type to check (normal, debug, dev).
+
+ Returns:
+ bool: True if the files for this script type exist, otherwise False.
+
+ """
+ return self.__scripts[script_type]['files_exist']
+
+ def add_script(self, path, filepath, script_type=None):
+ """
+ Adds a script or scripts to the script resource.
+
+ :param path: The path of the script (this supports globbing)
+ :type path: string
+ :param filepath: The physical location of the script
+ :type filepath: string
+ :param script_type: The type of script to add (normal, debug, dev)
+ :param script_type: string
+ """
+ if script_type not in ('dev', 'debug', 'normal'):
+ script_type = 'normal'
+
+ self.__scripts[script_type]['scripts'][path] = filepath
+ self.__scripts[script_type]['order'].append(path)
+ if not os.path.isfile(filepath):
+ self.__scripts[script_type]['files_exist'] = False
+
+ def add_script_folder(self, path, filepath, script_type=None, recurse=True):
+ """
+ Adds a folder of scripts to the script resource.
+
+ :param path: The path of the folder
+ :type path: string
+ :param filepath: The physical location of the script
+ :type filepath: string
+ :param script_type: The type of script to add (normal, debug, dev)
+ :param script_type: string
+ :param recurse: Whether or not to recurse into other folders
+ :param recurse: bool
+ """
+ if script_type not in ('dev', 'debug', 'normal'):
+ script_type = 'normal'
+
+ self.__scripts[script_type]['scripts'][path] = (filepath, recurse)
+ self.__scripts[script_type]['order'].append(path)
+ if not os.path.isdir(filepath):
+ self.__scripts[script_type]['files_exist'] = False
+
+ def remove_script(self, path, script_type=None):
+ """
+ Removes a script or folder of scripts from the script resource.
+
+ :param path: The path of the folder
+ :type path: string
+ :param script_type: The type of script to add (normal, debug, dev)
+ :param script_type: string
+ """
+ if script_type not in ('dev', 'debug', 'normal'):
+ script_type = 'normal'
+
+ del self.__scripts[script_type]['scripts'][path]
+ self.__scripts[script_type]['order'].remove(path)
+
+ def get_scripts(self, script_type=None):
+ """
+ Returns a list of the scripts that can be used for producing
+ script tags.
+
+ :param script_type: The type of scripts to get (normal, debug, dev)
+ :param script_type: string
+ """
+ if script_type not in ('dev', 'debug', 'normal'):
+ script_type = 'normal'
+
+ _scripts = self.__scripts[script_type]['scripts']
+ _order = self.__scripts[script_type]['order']
+
+ scripts = []
+ for path in _order:
+ # Index for grouping the scripts when inserting.
+ script_idx = len(scripts)
+ # A folder resource is enclosed in a tuple.
+ if isinstance(_scripts[path], tuple):
+ filepath, recurse = _scripts[path]
+ for root, dirnames, filenames in os.walk(filepath):
+ dirnames.sort(reverse=True)
+ files = sorted(fnmatch.filter(filenames, '*.js'))
+
+ order_file = os.path.join(root, '.order')
+ if os.path.isfile(order_file):
+ with open(order_file) as _file:
+ for line in _file:
+ if line.startswith('+ '):
+ order_filename = line.split()[1]
+ files.pop(files.index(order_filename))
+ files.insert(0, order_filename)
+
+ # Ensure sub-directory scripts are top of list with root directory scripts bottom.
+ if dirnames:
+ scripts.extend(
+ ['js/' + os.path.basename(root) + '/' + f for f in files]
+ )
+ else:
+ dirpath = (
+ os.path.basename(os.path.dirname(root))
+ + '/'
+ + os.path.basename(root)
+ )
+ for filename in reversed(files):
+ scripts.insert(script_idx, 'js/' + dirpath + '/' + filename)
+
+ if not recurse:
+ break
+ else:
+ scripts.append('js/' + path)
+ return scripts
+
+ def getChild(self, path, request): # NOQA: N802
+ if hasattr(request, 'lookup_path'):
+ request.lookup_path += b'/' + path
+ else:
+ request.lookup_path = path
+ return EncodingResourceWrapper(self, [server.GzipEncoderFactory()])
+
+ def render(self, request):
+ log.debug('Requested path: %s', request.lookup_path)
+ lookup_path = request.lookup_path.decode()
+ for script_type in ('dev', 'debug', 'normal'):
+ scripts = self.__scripts[script_type]['scripts']
+ for pattern in scripts:
+ if not lookup_path.startswith(pattern):
+ continue
+
+ filepath = scripts[pattern]
+ if isinstance(filepath, tuple):
+ filepath = filepath[0]
+
+ path = filepath + lookup_path[len(pattern) :]
+
+ if not os.path.isfile(path):
+ continue
+
+ log.debug('Serving path: %s', path)
+ mime_type = mimetypes.guess_type(path)
+ request.setHeader(b'content-type', mime_type[0].encode())
+ with open(path, 'rb') as _file:
+ data = _file.read()
+ return data
+
+ request.setResponseCode(http.NOT_FOUND)
+ request.setHeader(b'content-type', b'text/html')
+ template = Template(filename=rpath(os.path.join('render', '404.html')))
+ return template.render()
+
+
+class Themes(static.File):
+ def getChild(self, path, request): # NOQA: N802
+ child = static.File.getChild(self, path, request)
+ if request.uri.endswith(b'css'):
+ return EncodingResourceWrapper(child, [server.GzipEncoderFactory()])
+ else:
+ return child
+
+
+class TopLevel(resource.Resource):
+ __stylesheets = [
+ 'css/ext-all-notheme.css',
+ 'css/ext-extensions.css',
+ 'css/deluge.css',
+ ]
+
+ def __init__(self):
+ super().__init__()
+
+ self.putChild(b'css', LookupResource('Css', rpath('css')))
+ if os.path.isfile(rpath('js', 'gettext.js')):
+ self.putChild(
+ b'gettext.js',
+ EncodingResourceWrapper(GetText(), [server.GzipEncoderFactory()]),
+ )
+ else:
+ log.warning(
+ 'Cannot find "gettext.js" translation file!'
+ ' Text will only be available in English.'
+ )
+ self.putChild(b'gettext.js', MockGetText())
+ self.putChild(b'flag', Flag())
+ self.putChild(b'icons', LookupResource('Icons', rpath('icons')))
+ self.putChild(b'images', LookupResource('Images', rpath('images')))
+ self.putChild(
+ b'ui_images',
+ LookupResource(
+ 'UI_Images',
+ common.resource_filename('deluge.ui', os.path.join('data', 'pixmaps')),
+ ),
+ )
+
+ js = ScriptResource()
+
+ # configure the dev scripts
+ js.add_script(
+ 'ext-base-debug.js', rpath('js', 'extjs', 'ext-base-debug.js'), 'dev'
+ )
+ js.add_script(
+ 'ext-all-debug.js', rpath('js', 'extjs', 'ext-all-debug.js'), 'dev'
+ )
+ js.add_script_folder(
+ 'ext-extensions', rpath('js', 'extjs', 'ext-extensions'), 'dev'
+ )
+ js.add_script_folder('deluge-all', rpath('js', 'deluge-all'), 'dev')
+
+ # configure the debug scripts
+ js.add_script(
+ 'ext-base-debug.js', rpath('js', 'extjs', 'ext-base-debug.js'), 'debug'
+ )
+ js.add_script(
+ 'ext-all-debug.js', rpath('js', 'extjs', 'ext-all-debug.js'), 'debug'
+ )
+ js.add_script(
+ 'ext-extensions-debug.js',
+ rpath('js', 'extjs', 'ext-extensions-debug.js'),
+ 'debug',
+ )
+ js.add_script(
+ 'deluge-all-debug.js', rpath('js', 'deluge-all-debug.js'), 'debug'
+ )
+
+ # configure the normal scripts
+ js.add_script('ext-base.js', rpath('js', 'extjs', 'ext-base.js'))
+ js.add_script('ext-all.js', rpath('js', 'extjs', 'ext-all.js'))
+ js.add_script('ext-extensions.js', rpath('js', 'extjs', 'ext-extensions.js'))
+ js.add_script('deluge-all.js', rpath('js', 'deluge-all.js'))
+
+ self.js = js
+ self.putChild(b'js', js)
+ self.putChild(
+ b'json', EncodingResourceWrapper(JSON(), [server.GzipEncoderFactory()])
+ )
+ self.putChild(
+ b'upload', EncodingResourceWrapper(Upload(), [server.GzipEncoderFactory()])
+ )
+ self.putChild(b'render', Render())
+ self.putChild(b'themes', Themes(rpath('themes')))
+ self.putChild(b'tracker', Tracker())
+
+ @property
+ def stylesheets(self):
+ return self.__stylesheets
+
+ def get_themes(self):
+ themes_dir = Path(rpath('themes', 'css'))
+ themes = [
+ theme.stem.split('xtheme-')[1] for theme in themes_dir.glob('xtheme-*.css')
+ ]
+ themes = [(theme, _(theme.capitalize())) for theme in themes]
+ return themes
+
+ def set_theme(self, theme: str):
+ if not os.path.isfile(rpath('themes', 'css', f'xtheme-{theme}.css')):
+ theme = CONFIG_DEFAULTS.get('theme')
+ self.__theme = f'themes/css/xtheme-{theme}.css'
+
+ # Only one xtheme CSS, ordered last to override other styles.
+ if 'xtheme-' in self.stylesheets[-1]:
+ self.__stylesheets.pop()
+ self.__stylesheets.append(self.__theme)
+
+ def add_script(self, script):
+ """
+ Adds a script to the server so it is included in the <head> element
+ of the index page.
+
+ :param script: The path to the script
+ :type script: string
+ """
+
+ self.__scripts.append(script)
+ self.__debug_scripts.append(script)
+
+ def remove_script(self, script):
+ """
+ Removes a script from the server.
+
+ :param script: The path to the script
+ :type script: string
+ """
+ self.__scripts.remove(script)
+ self.__debug_scripts.remove(script)
+
+ def getChildWithDefault(self, path, request): # NOQA: N802
+ # Calculate the request base
+ header = request.getHeader('x-deluge-base')
+ config_base = component.get('DelugeWeb').base
+ base = header if header else config_base
+
+ first_request = not hasattr(request, 'base')
+ request.base = absolute_base_url(base).encode()
+
+ base_resource = first_request and path.decode() == config_base.strip('/')
+
+ if not path or base_resource:
+ return self
+
+ return super().getChildWithDefault(path, request)
+
+ def render(self, request):
+ uri_true = ('true', 'yes', 'on', '1')
+ uri_false = ('false', 'no', 'off', '0')
+
+ debug_arg = None
+ req_dbg_arg = request.args.get(b'debug', [b''])[-1].decode().lower()
+ if req_dbg_arg in uri_true:
+ debug_arg = True
+ elif req_dbg_arg in uri_false:
+ debug_arg = False
+
+ dev_arg = request.args.get(b'dev', [b''])[-1].decode().lower() in uri_true
+ dev_ver = 'dev' in common.get_version()
+
+ script_type = 'normal'
+ if debug_arg is not None:
+ # Use debug arg to force switching to normal script type.
+ script_type = 'debug' if debug_arg else 'normal'
+ elif dev_arg or dev_ver:
+ # Also use dev files if development version.
+ script_type = 'dev'
+
+ if not self.js.has_script_type_files(script_type):
+ if not dev_ver:
+ log.warning(
+ 'Failed to enable WebUI "%s" mode, script files are missing!',
+ script_type,
+ )
+ # Fallback to checking other types in order and selecting first with
+ # files available. Ordered to start with dev files lookup.
+ for alt_script_type in [
+ x for x in ['dev', 'debug', 'normal'] if x != script_type
+ ]:
+ if self.js.has_script_type_files(alt_script_type):
+ script_type = alt_script_type
+ if not dev_ver:
+ log.warning('WebUI falling back to "%s" mode.', script_type)
+ break
+
+ scripts = component.get('Scripts').get_scripts(script_type)
+ scripts.insert(0, 'gettext.js')
+
+ template = Template(filename=rpath('index.html'))
+ request.setHeader(b'content-type', b'text/html; charset=utf-8')
+
+ web_config = component.get('Web').get_config()
+ web_config['base'] = request.base.decode()
+ config = {key: web_config[key] for key in UI_CONFIG_KEYS}
+ js_config = json.dumps(config)
+ # Insert the values into 'index.html' and return.
+ return template.render(
+ scripts=scripts,
+ stylesheets=self.stylesheets,
+ debug=str(bool(debug_arg)).lower(),
+ base=web_config['base'],
+ js_config=js_config,
+ )
+
+
+class DelugeWeb(component.Component):
+ def __init__(self, options=None, daemon=True):
+ """
+ Setup the DelugeWeb server.
+
+ Args:
+ options (argparse.Namespace): The web server options.
+ daemon (bool): If True run web server as a separate daemon process (starts a twisted
+ reactor). If False shares the process and twisted reactor from WebUI plugin or tests.
+
+ """
+ super().__init__('DelugeWeb', depend=['Web'])
+ self.config = configmanager.ConfigManager(
+ 'web.conf', defaults=CONFIG_DEFAULTS, file_version=2
+ )
+ self.config.run_converter((0, 1), 2, self._migrate_config_1_to_2)
+ self.config.register_set_function('language', self._on_language_changed)
+ self.socket = None
+ self.top_level = TopLevel()
+
+ self.interface = self.config['interface']
+ self.port = self.config['port']
+ self.https = self.config['https']
+ self.pkey = self.config['pkey']
+ self.cert = self.config['cert']
+ self.base = self.config['base']
+
+ if options:
+ self.interface = (
+ options.interface if options.interface is not None else self.interface
+ )
+ self.port = options.port if options.port else self.port
+ self.base = options.base if options.base else self.base
+ if options.ssl:
+ self.https = True
+ elif options.no_ssl:
+ self.https = False
+
+ self.top_level.set_theme(self.config['theme'])
+
+ setup_translation()
+
+ # Remove twisted version number from 'server' http-header for security reasons
+ server.version = 'TwistedWeb'
+ self.site = server.Site(self.top_level)
+ self.web_api = WebApi()
+ self.web_utils = WebUtils()
+
+ self.auth = Auth(self.config)
+ self.daemon = daemon
+ # Initialize the plugins
+ self.plugins = PluginManager()
+
+ def _on_language_changed(self, key, value):
+ log.debug('Setting UI language %s', value)
+ set_language(value)
+
+ def install_signal_handlers(self):
+ # Since twisted assigns itself all the signals may as well make
+ # use of it.
+ reactor.addSystemEventTrigger('after', 'shutdown', self.shutdown)
+
+ # Twisted doesn't handle windows specific signals so we still
+ # need to attach to those to handle the close correctly.
+ if common.windows_check():
+ from win32api import SetConsoleCtrlHandler
+ from win32con import CTRL_CLOSE_EVENT, CTRL_SHUTDOWN_EVENT
+
+ def win_handler(ctrl_type):
+ log.debug('ctrl type: %s', ctrl_type)
+ if ctrl_type == CTRL_CLOSE_EVENT or ctrl_type == CTRL_SHUTDOWN_EVENT:
+ self.shutdown()
+ return 1
+
+ SetConsoleCtrlHandler(win_handler)
+
+ def start(self):
+ """
+ Start the DelugeWeb server
+ """
+ if self.socket:
+ log.warning('DelugeWeb is already running and cannot be started')
+ return
+
+ log.info('Starting webui server at PID %s', os.getpid())
+ if self.https:
+ self.start_ssl()
+ else:
+ self.start_normal()
+
+ component.get('Web').enable()
+
+ if self.daemon:
+ reactor.run()
+
+ def start_normal(self):
+ self.socket = reactor.listenTCP(self.port, self.site, interface=self.interface)
+ ip = self.socket.getHost().host
+ ip = f'[{ip}]' if is_ipv6(ip) else ip
+ log.info(f'Serving at http://{ip}:{self.port}{self.base}')
+
+ def start_ssl(self):
+ check_ssl_keys()
+ log.debug('Enabling SSL with PKey: %s, Cert: %s', self.pkey, self.cert)
+
+ cert = configmanager.get_config_dir(self.cert)
+ pkey = configmanager.get_config_dir(self.pkey)
+
+ self.socket = reactor.listenSSL(
+ self.port,
+ self.site,
+ get_context_factory(cert, pkey),
+ interface=self.interface,
+ )
+ ip = self.socket.getHost().host
+ ip = f'[{ip}]' if is_ipv6(ip) else ip
+ log.info(f'Serving at https://{ip}:{self.port}{self.base}')
+
+ def stop(self):
+ log.info('Shutting down webserver')
+ try:
+ component.get('Web').disable()
+ except KeyError:
+ pass
+
+ self.plugins.disable_plugins()
+ log.debug('Saving configuration file')
+ self.config.save()
+
+ if self.socket:
+ d = self.socket.stopListening()
+ self.socket = None
+ else:
+ d = defer.Deferred()
+ d.callback(False)
+ return d
+
+ def shutdown(self, *args):
+ self.stop()
+ if self.daemon and reactor.running:
+ reactor.stop()
+
+ def _migrate_config_1_to_2(self, config):
+ config['language'] = CONFIG_DEFAULTS['language']
+ return config
+
+ def get_themes(self):
+ return self.top_level.get_themes()
+
+ def set_theme(self, theme: str):
+ self.top_level.set_theme(theme)
+
+
+if __name__ == '__builtin__':
+ deluge_web = DelugeWeb()
+ application = service.Application('DelugeWeb')
+ sc = service.IServiceCollection(application)
+ i = internet.TCPServer(deluge_web.port, deluge_web.site)
+ i.setServiceParent(sc)
+elif __name__ == '__main__':
+ deluge_web = DelugeWeb()
+ deluge_web.start()
diff --git a/deluge/ui/web/themes/css/xtheme-access.css b/deluge/ui/web/themes/css/xtheme-access.css
new file mode 100644
index 0000000..4ade3d9
--- /dev/null
+++ b/deluge/ui/web/themes/css/xtheme-access.css
@@ -0,0 +1,1933 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+body {
+ background-color: #16181a;
+ color: #fcfcfc;
+}
+
+.ext-el-mask {
+ background-color: #ccc;
+}
+
+.ext-el-mask-msg {
+ border-color: #223;
+ background-color: #3f4757;
+ background-image: url(../images/access/box/tb-blue.gif);
+}
+.ext-el-mask-msg div {
+ background-color: #232d38;
+ border-color: #556;
+ color: #fff;
+ font: normal 14px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-mask-loading div {
+ background-color: #232d38;
+ background-image: url(../images/access/grid/loading.gif);
+}
+
+.x-item-disabled {
+ color: #ddd;
+}
+
+.x-item-disabled * {
+ color: #ddd !important;
+}
+
+.x-splitbar-proxy {
+ background-color: #aaa;
+}
+
+.x-color-palette a {
+ border-color: #fff;
+}
+
+.x-color-palette a:hover,
+.x-color-palette a.x-color-palette-sel {
+ border-color: #8bb8f3;
+ background-color: #deecfd;
+}
+
+.x-color-palette em {
+ border-color: #aca899;
+}
+
+.x-ie-shadow {
+ background-color: #777;
+}
+
+.x-shadow .xsmc {
+ background-image: url(../images/default/shadow-c.png);
+}
+
+.x-shadow .xsml,
+.x-shadow .xsmr {
+ background-image: url(../images/default/shadow-lr.png);
+}
+
+.x-shadow .xstl,
+.x-shadow .xstc,
+.x-shadow .xstr,
+.x-shadow .xsbl,
+.x-shadow .xsbc,
+.x-shadow .xsbr {
+ background-image: url(../images/default/shadow.png);
+}
+
+.loading-indicator {
+ font-size: 14px;
+ background-image: url(../images/access/grid/loading.gif);
+}
+
+.x-spotlight {
+ background-color: #ccc;
+}
+.x-tab-panel-header,
+.x-tab-panel-footer {
+ background-color: #e18325;
+ border-color: #8db2e3;
+ overflow: hidden;
+ zoom: 1;
+}
+
+.x-tab-panel-header,
+.x-tab-panel-footer {
+ border-color: #222;
+}
+
+ul.x-tab-strip-top {
+ background-color: #343843;
+ background-image: url(../images/access/tabs/tab-strip-bg.gif);
+ border-bottom-color: #343d4e;
+}
+
+ul.x-tab-strip-bottom {
+ background-color: #343843;
+ background-image: url(../images/access/tabs/tab-strip-btm-bg.gif);
+ border-top-color: #343843;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer,
+.x-tab-panel-footer-plain .x-tab-strip-spacer {
+ border-color: #222;
+ background-color: #e18325;
+}
+
+.x-tab-strip span.x-tab-strip-text {
+ font: normal 14px tahoma, arial, helvetica;
+ color: #fff;
+}
+
+.x-tab-strip-over span.x-tab-strip-text {
+ color: #fff;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+ color: #fff;
+ font-weight: bold;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+ color: #aaaaaa;
+}
+
+.x-tab-strip-top .x-tab-right,
+.x-tab-strip-top .x-tab-left,
+.x-tab-strip-top .x-tab-strip-inner {
+ background-image: url(../images/access/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ background-image: url(../images/access/tabs/tab-btm-inactive-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background-image: url(../images/access/tabs/tab-btm-inactive-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background-image: url(../images/access/tabs/tab-btm-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background-image: url(../images/access/tabs/tab-btm-left-bg.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ background-image: url(../images/access/tabs/tab-close.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover {
+ background-image: url(../images/access/tabs/tab-close.gif);
+}
+
+.x-tab-panel-body {
+ border-color: #18181a;
+ background-color: #fff;
+}
+
+.x-tab-panel-body-top {
+ border-top: 0 none;
+}
+
+.x-tab-panel-body-bottom {
+ border-bottom: 0 none;
+}
+
+.x-tab-scroller-left {
+ background-image: url(../images/access/tabs/scroll-left.gif);
+ border-bottom-color: #8db2e3;
+}
+
+.x-tab-scroller-left-over {
+ background-position: 0 0;
+}
+
+.x-tab-scroller-left-disabled {
+ background-position: -18px 0;
+ opacity: 0.5;
+ -moz-opacity: 0.5;
+ filter: alpha(opacity=50);
+ cursor: default;
+}
+
+.x-tab-scroller-right {
+ background-image: url(../images/access/tabs/scroll-right.gif);
+ border-bottom-color: #8db2e3;
+}
+
+.x-tab-panel-bbar .x-toolbar,
+.x-tab-panel-tbar .x-toolbar {
+ border-color: #99bbe8;
+}
+.x-form-field {
+ font: normal 15px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-text,
+textarea.x-form-field {
+ color: #ffffff;
+ background-color: #33373d;
+ background-image: url(../images/access/form/text-bg.gif);
+ border-color: #737b8c;
+ border-width: 2px;
+}
+
+.ext-webkit .x-form-text,
+.ext-webkit textarea.x-form-field {
+ border-width: 2px;
+}
+
+.x-form-text,
+.ext-ie .x-form-file {
+ height: 26px;
+}
+
+.ext-strict .x-form-text {
+ height: 20px;
+}
+
+.x-form-select-one {
+ background-color: #fff;
+ border-color: #b5b8c8;
+}
+
+.x-form-check-group-label {
+ border-bottom: 1px solid #99bbe8;
+ color: #fff;
+}
+
+.x-editor .x-form-check-wrap {
+ background-color: #fff;
+}
+
+.x-form-field-wrap .x-form-trigger {
+ background-image: url(../images/access/form/trigger.gif);
+ border-bottom-color: #737b8c;
+ border-bottom-width: 2px;
+ height: 24px;
+ width: 20px;
+}
+
+.x-form-field-wrap .x-form-trigger.x-form-trigger-over {
+ border-bottom-color: #d97e27;
+}
+
+.x-form-field-wrap .x-form-trigger.x-form-trigger-click {
+ border-bottom-color: #c86e19;
+}
+
+.x-small-editor .x-form-field-wrap .x-form-trigger {
+ height: 24px;
+}
+
+.x-form-field-wrap .x-form-trigger-over {
+ background-position: -20px 0;
+}
+
+.x-form-field-wrap .x-form-trigger-click {
+ background-position: -40px 0;
+}
+
+.x-trigger-wrap-focus .x-form-trigger {
+ background-position: -60px 0;
+}
+
+.x-trigger-wrap-focus .x-form-trigger-over {
+ background-position: -80px 0;
+}
+
+.x-trigger-wrap-focus .x-form-trigger-click {
+ background-position: -100px 0;
+}
+
+.x-form-field-wrap .x-form-date-trigger {
+ background-image: url(../images/access/form/date-trigger.gif);
+}
+
+.x-form-field-wrap .x-form-clear-trigger {
+ background-image: url(../images/access/form/clear-trigger.gif);
+}
+
+.x-form-field-wrap .x-form-search-trigger {
+ background-image: url(../images/access/form/search-trigger.gif);
+}
+
+.x-trigger-wrap-focus .x-form-trigger {
+ border-bottom-color: #737b8c;
+}
+
+.x-item-disabled .x-form-trigger-over {
+ border-bottom-color: #b5b8c8;
+}
+
+.x-item-disabled .x-form-trigger-click {
+ border-bottom-color: #b5b8c8;
+}
+
+.x-form-focus,
+textarea.x-form-focus {
+ border-color: #ff9c33;
+}
+
+.x-form-invalid,
+textarea.x-form-invalid,
+.ext-webkit .x-form-invalid,
+.ext-webkit textarea.x-form-invalid {
+ background-color: #15171a;
+ background-image: url(../images/access/grid/invalid_line.gif);
+ border-color: #c30;
+}
+
+/*
+.ext-safari .x-form-invalid{
+ background-color:#fee;
+ border-color:#ff7870;
+}
+*/
+
+.x-form-inner-invalid,
+textarea.x-form-inner-invalid {
+ background-color: #fff;
+ background-image: url(../images/access/grid/invalid_line.gif);
+}
+
+.x-form-grow-sizer {
+ font: normal 15px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-item {
+ font: normal 15px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-invalid-msg {
+ color: #c0272b;
+ font: normal 14px tahoma, arial, helvetica, sans-serif;
+ background-image: url(../images/default/shared/warning.gif);
+}
+
+.x-form-empty-field {
+ color: #dadadd;
+}
+
+.x-small-editor .x-form-text {
+ height: 26px;
+}
+
+.x-small-editor .x-form-field {
+ font: normal 14px arial, tahoma, helvetica, sans-serif;
+}
+
+.ext-safari .x-small-editor .x-form-field {
+ font: normal 15px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-form-invalid-icon {
+ background-image: url(../images/access/form/exclamation.gif);
+ height: 25px;
+ width: 19px;
+ background-position: center right;
+}
+
+.x-fieldset {
+ border-color: #737b8c;
+}
+
+.x-fieldset legend {
+ font: bold 14px tahoma, arial, helvetica, sans-serif;
+ color: #fff;
+}
+.x-btn {
+ font: normal 14px tahoma, verdana, helvetica;
+}
+
+.x-btn button {
+ font: normal 14px arial, tahoma, verdana, helvetica;
+ color: #fffffa;
+ padding-left: 6px !important;
+ padding-right: 6px !important;
+}
+
+.x-btn-over .x-btn button {
+ color: #fff;
+}
+
+.x-btn-noicon .x-btn-small .x-btn-text,
+.x-btn-text-icon .x-btn-icon-small-left .x-btn-text,
+.x-btn-icon .x-btn-small .x-btn-text,
+.x-btn-text-icon .x-btn-icon-small-right .x-btn-text {
+ height: 18px;
+}
+
+.x-btn-icon .x-btn-small .x-btn-text {
+ width: 18px;
+}
+
+.x-btn-text-icon .x-btn-icon-small-left .x-btn-text {
+ padding-left: 21px !important;
+}
+
+.x-btn-text-icon .x-btn-icon-small-right .x-btn-text {
+ padding-right: 21px !important;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-left .x-btn-text {
+ padding-left: 29px !important;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-right .x-btn-text {
+ padding-right: 29px !important;
+}
+
+.x-btn-text-icon .x-btn-icon-large-left .x-btn-text {
+ padding-left: 37px !important;
+}
+
+.x-btn-text-icon .x-btn-icon-large-right .x-btn-text {
+ padding-right: 37px !important;
+}
+
+.x-btn em {
+ font-style: normal;
+ font-weight: normal;
+}
+
+.x-btn-tl,
+.x-btn-tr,
+.x-btn-tc,
+.x-btn-ml,
+.x-btn-mr,
+.x-btn-mc,
+.x-btn-bl,
+.x-btn-br,
+.x-btn-bc {
+ background-image: url(../images/access/button/btn.gif);
+}
+
+.x-btn-click .x-btn-text,
+.x-btn-menu-active .x-btn-text,
+.x-btn-pressed .x-btn-text {
+ color: #fff;
+}
+
+.x-btn-disabled * {
+ color: #eee !important;
+}
+
+.x-btn-mc em.x-btn-arrow {
+ background-image: url(../images/access/button/arrow.gif);
+ padding-right: 13px;
+}
+
+.x-btn-mc em.x-btn-split {
+ background-image: url(../images/access/button/s-arrow.gif);
+ padding-right: 20px;
+}
+
+.x-btn-over .x-btn-mc em.x-btn-split,
+.x-btn-click .x-btn-mc em.x-btn-split,
+.x-btn-menu-active .x-btn-mc em.x-btn-split,
+.x-btn-pressed .x-btn-mc em.x-btn-split {
+ background-image: url(../images/access/button/s-arrow-o.gif);
+}
+
+.x-btn-mc em.x-btn-arrow-bottom {
+ background-image: url(../images/access/button/s-arrow-b-noline.gif);
+}
+
+.x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/access/button/s-arrow-b.gif);
+}
+
+.x-btn-over .x-btn-mc em.x-btn-split-bottom,
+.x-btn-click .x-btn-mc em.x-btn-split-bottom,
+.x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,
+.x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/access/button/s-arrow-bo.gif);
+}
+
+.x-btn-group-header {
+ color: #d2d2d2;
+}
+
+.x-btn-group-tc {
+ background-image: url(../images/access/button/group-tb.gif);
+}
+
+.x-btn-group-tl {
+ background-image: url(../images/access/button/group-cs.gif);
+}
+
+.x-btn-group-tr {
+ background-image: url(../images/access/button/group-cs.gif);
+}
+
+.x-btn-group-bc {
+ background-image: url(../images/access/button/group-tb.gif);
+}
+
+.x-btn-group-bl {
+ background-image: url(../images/access/button/group-cs.gif);
+}
+
+.x-btn-group-br {
+ background-image: url(../images/access/button/group-cs.gif);
+}
+
+.x-btn-group-ml {
+ background-image: url(../images/access/button/group-lr.gif);
+}
+
+.x-btn-group-mr {
+ background-image: url(../images/access/button/group-lr.gif);
+}
+
+.x-btn-group-notitle .x-btn-group-tc {
+ background-image: url(../images/access/button/group-tb.gif);
+}
+.x-toolbar {
+ border-color: #18181a;
+ background-color: #393d4e;
+ background-image: url(../images/access/toolbar/bg.gif);
+}
+
+.x-toolbar td,
+.x-toolbar span,
+.x-toolbar input,
+.x-toolbar div,
+.x-toolbar select,
+.x-toolbar label {
+ font: normal 14px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-toolbar .x-item-disabled {
+ color: gray;
+}
+
+.x-toolbar .x-item-disabled * {
+ color: gray;
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split {
+ background-image: url(../images/access/button/s-arrow-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split {
+ background-image: url(../images/access/button/s-arrow-o.gif);
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/access/button/s-arrow-b-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/access/button/s-arrow-bo.gif);
+}
+
+.x-toolbar .xtb-sep {
+ background-image: url(../images/access/grid/grid-blue-split.gif);
+}
+
+.x-toolbar .x-btn {
+ padding-left: 3px;
+ padding-right: 3px;
+}
+
+.x-toolbar .x-btn-mc em.x-btn-arrow {
+ padding-right: 10px;
+}
+
+.x-toolbar .x-btn-text-icon .x-btn-icon-small-left .x-btn-text {
+ padding-left: 18px !important;
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split {
+ padding-right: 14px;
+}
+
+.x-tbar-page-first {
+ background-image: url(../images/access/grid/page-first.gif) !important;
+}
+
+.x-tbar-loading {
+ background-image: url(../images/access/grid/refresh.gif) !important;
+}
+
+.x-tbar-page-last {
+ background-image: url(../images/access/grid/page-last.gif) !important;
+}
+
+.x-tbar-page-next {
+ background-image: url(../images/access/grid/page-next.gif) !important;
+}
+
+.x-tbar-page-prev {
+ background-image: url(../images/access/grid/page-prev.gif) !important;
+}
+
+.x-item-disabled .x-tbar-loading {
+ background-image: url(../images/access/grid/loading.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-first {
+ background-image: url(../images/access/grid/page-first-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-last {
+ background-image: url(../images/access/grid/page-last-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-next {
+ background-image: url(../images/access/grid/page-next-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-prev {
+ background-image: url(../images/access/grid/page-prev-disabled.gif) !important;
+}
+
+.x-paging-info {
+ color: #444;
+}
+
+.x-toolbar-more-icon {
+ background-image: url(../images/access/toolbar/more.gif) !important;
+}
+
+.x-statusbar .x-status-busy {
+ background-image: url(../images/access/grid/loading.gif);
+}
+
+.x-statusbar .x-status-text-panel {
+ border-color: #99bbe8 #fff #fff #99bbe8;
+}
+.x-resizable-handle {
+ background-color: #fff;
+ color: #000;
+}
+
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-west {
+ background-image: url(../images/access/sizer/e-handle.gif);
+}
+
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-north {
+ background-image: url(../images/access/sizer/s-handle.gif);
+}
+
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-north {
+ background-image: url(../images/access/sizer/s-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+ background-image: url(../images/access/sizer/se-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+ background-image: url(../images/access/sizer/nw-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+ background-image: url(../images/access/sizer/ne-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+ background-image: url(../images/access/sizer/sw-handle.gif);
+}
+.x-resizable-proxy {
+ border-color: #3b5a82;
+}
+.x-resizable-overlay {
+ background-color: #fff;
+}
+.x-grid3 {
+ background-color: #1f2933;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+ border-color: #223;
+}
+
+.x-grid3-hd-row td,
+.x-grid3-row td,
+.x-grid3-summary-row td {
+ font: normal 14px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-hd-row td {
+ border-left-color: #556;
+ border-right-color: #223;
+}
+
+.x-grid-row-loading {
+ background-color: #fff;
+ background-image: url(../images/default/shared/loading-balls.gif);
+}
+
+.x-grid3-row {
+ border: 0 none;
+ border-bottom: 1px solid #111;
+ border-right: 1px solid #1a1a1c;
+}
+
+.x-grid3-row-alt {
+ background-color: #1b232b;
+}
+
+.x-grid3-row-over {
+ background-color: #7e5530;
+}
+
+.x-grid3-resize-proxy {
+ background-color: #777;
+}
+
+.x-grid3-resize-marker {
+ background-color: #777;
+}
+
+.x-grid3-header {
+ background-color: #3b3f50;
+ background-image: url(../images/access/grid/grid3-hrow.gif);
+}
+
+.x-grid3-header-pop {
+ border-left-color: #d0d0d0;
+}
+
+.x-grid3-header-pop-inner {
+ border-left-color: #eee;
+ background-image: url(../images/default/grid/hd-pop.gif);
+}
+
+td.x-grid3-hd-over,
+td.sort-desc,
+td.sort-asc,
+td.x-grid3-hd-menu-open {
+ border-left-color: #889;
+ border-right-color: #445;
+}
+
+td.x-grid3-hd-over .x-grid3-hd-inner,
+td.sort-desc .x-grid3-hd-inner,
+td.sort-asc .x-grid3-hd-inner,
+td.x-grid3-hd-menu-open .x-grid3-hd-inner {
+ background-color: #4e628a;
+ background-image: url(../images/access/grid/grid3-hrow-over.gif);
+}
+
+.x-grid3-cell-inner,
+.x-grid3-hd-inner {
+ color: #fff;
+}
+
+.sort-asc .x-grid3-sort-icon {
+ background-image: url(../images/access/grid/sort_asc.gif);
+ width: 15px;
+ height: 9px;
+ margin-left: 5px;
+}
+
+.sort-desc .x-grid3-sort-icon {
+ background-image: url(../images/access/grid/sort_desc.gif);
+ width: 15px;
+ height: 9px;
+ margin-left: 5px;
+}
+
+.x-grid3-cell-text,
+.x-grid3-hd-text {
+ color: #fff;
+}
+
+.x-grid3-split {
+ background-image: url(../images/default/grid/grid-split.gif);
+}
+
+.x-grid3-hd-text {
+ color: #fff;
+}
+
+.x-dd-drag-proxy .x-grid3-hd-inner {
+ background-color: #ebf3fd;
+ background-image: url(../images/access/grid/grid3-hrow-over.gif);
+ border-color: #aaccf6;
+}
+
+.col-move-top {
+ background-image: url(../images/default/grid/col-move-top.gif);
+}
+
+.col-move-bottom {
+ background-image: url(../images/default/grid/col-move-bottom.gif);
+}
+
+.x-grid3-row-selected {
+ background-color: #e5872c !important;
+ background-image: none;
+ border-style: solid;
+}
+
+.x-grid3-row-selected .x-grid3-cell {
+ color: #fff;
+}
+
+.x-grid3-cell-selected {
+ background-color: #ffa340 !important;
+ color: #fff;
+}
+
+.x-grid3-cell-selected span {
+ color: #fff !important;
+}
+
+.x-grid3-cell-selected .x-grid3-cell-text {
+ color: #fff;
+}
+
+.x-grid3-locked td.x-grid3-row-marker,
+.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker {
+ background-color: #ebeadb !important;
+ background-image: url(../images/default/grid/grid-hrow.gif) !important;
+ color: #fff;
+ border-top-color: #fff;
+ border-right-color: #6fa0df !important;
+}
+
+.x-grid3-locked td.x-grid3-row-marker div,
+.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div {
+ color: #fff !important;
+}
+
+.x-grid3-dirty-cell {
+ background-image: url(../images/access/grid/dirty.gif);
+}
+
+.x-grid3-topbar,
+.x-grid3-bottombar {
+ font: normal 14px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-bottombar .x-toolbar {
+ border-top-color: #a9bfd3;
+}
+
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner {
+ background-image: url(../images/access/grid/grid3-special-col-bg.gif) !important;
+ color: #fff !important;
+}
+.x-props-grid .x-grid3-td-value {
+ color: #fff !important;
+}
+
+.x-props-grid .x-grid3-body .x-grid3-td-name {
+ background-color: #263240 !important;
+ border-right-color: #223;
+}
+
+.xg-hmenu-sort-asc .x-menu-item-icon {
+ background-image: url(../images/access/grid/hmenu-asc.gif);
+}
+
+.xg-hmenu-sort-desc .x-menu-item-icon {
+ background-image: url(../images/access/grid/hmenu-desc.gif);
+}
+
+.xg-hmenu-lock .x-menu-item-icon {
+ background-image: url(../images/access/grid/hmenu-lock.gif);
+}
+
+.xg-hmenu-unlock .x-menu-item-icon {
+ background-image: url(../images/access/grid/hmenu-unlock.gif);
+}
+
+.x-grid3-hd-btn {
+ background-color: #c2c9d0;
+ background-image: url(../images/access/grid/grid3-hd-btn.gif);
+}
+
+.x-grid3-body .x-grid3-td-expander {
+ background-image: url(../images/access/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-row-expander {
+ background-image: url(../images/access/grid/row-expand-sprite.gif);
+}
+
+.x-grid3-body .x-grid3-td-checker {
+ background-image: url(../images/access/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-row-checker,
+.x-grid3-hd-checker {
+ background-image: url(../images/default/grid/row-check-sprite.gif);
+}
+
+.x-grid3-body .x-grid3-td-numberer {
+ background-image: url(../images/access/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
+ color: #fff;
+}
+
+.x-grid3-body .x-grid3-td-row-icon {
+ background-image: url(../images/access/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander {
+ background-image: url(../images/access/grid/grid3-special-col-sel-bg.gif);
+}
+
+.x-grid3-check-col {
+ background-image: url(../images/default/menu/unchecked.gif);
+}
+
+.x-grid3-check-col-on {
+ background-image: url(../images/default/menu/checked.gif);
+}
+
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+ zoom: 1;
+}
+
+.x-grid-group-hd {
+ border-bottom-color: #4e628a;
+}
+
+.x-grid-group-hd div.x-grid-group-title {
+ background-image: url(../images/access/grid/group-collapse.gif);
+ background-position: 3px 6px;
+ color: #ffd;
+ font: bold 14px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title {
+ background-image: url(../images/access/grid/group-expand.gif);
+}
+
+.x-group-by-icon {
+ background-image: url(../images/default/grid/group-by.gif);
+}
+
+.x-cols-icon {
+ background-image: url(../images/default/grid/columns.gif);
+}
+
+.x-show-groups-icon {
+ background-image: url(../images/default/grid/group-by.gif);
+}
+
+.x-grid-empty {
+ color: gray;
+ font: normal 14px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell {
+ border-right-color: #ededed;
+}
+
+.x-grid-with-col-lines .x-grid3-row {
+ border-top-color: #ededed;
+}
+
+.x-grid-with-col-lines .x-grid3-row-selected {
+ border-top-color: #a3bae9;
+}
+.x-dd-drag-ghost {
+ color: #000;
+ font: normal 14px arial, helvetica, sans-serif;
+ border-color: #ddd #bbb #bbb #ddd;
+ background-color: #fff;
+}
+
+.x-dd-drop-nodrop .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-no.gif);
+}
+
+.x-dd-drop-ok .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-yes.gif);
+}
+
+.x-dd-drop-ok-add .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-add.gif);
+}
+
+.x-view-selector {
+ background-color: #c3daf9;
+ border-color: #3399bb;
+}
+.x-tree-node-expanded .x-tree-node-icon {
+ background-image: url(../images/access/tree/folder-open.gif);
+}
+
+.x-tree-node-leaf .x-tree-node-icon {
+ background-image: url(../images/default/tree/leaf.gif);
+}
+
+.x-tree-node-collapsed .x-tree-node-icon {
+ background-image: url(../images/access/tree/folder.gif);
+}
+
+.x-tree-node-loading .x-tree-node-icon {
+ background-image: url(../images/default/tree/loading.gif) !important;
+}
+
+.x-tree-node .x-tree-node-inline-icon {
+ background-image: none;
+}
+
+.x-tree-node-loading a span {
+ font-style: italic;
+ color: #444444;
+}
+
+.ext-ie .x-tree-node-el input {
+ width: 14px;
+ height: 14px;
+}
+
+.x-tree-lines .x-tree-elbow {
+ background-image: url(../images/access/tree/elbow.gif);
+}
+
+.x-tree-lines .x-tree-elbow-plus {
+ background-image: url(../images/access/tree/elbow-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-minus {
+ background-image: url(../images/access/tree/elbow-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end {
+ background-image: url(../images/access/tree/elbow-end.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-plus {
+ background-image: url(../images/access/tree/elbow-end-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-minus {
+ background-image: url(../images/access/tree/elbow-end-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-line {
+ background-image: url(../images/access/tree/elbow-line.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-plus {
+ background-image: url(../images/access/tree/elbow-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-minus {
+ background-image: url(../images/access/tree/elbow-minus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-plus {
+ background-image: url(../images/access/tree/elbow-end-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-minus {
+ background-image: url(../images/access/tree/elbow-end-minus-nl.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-plus {
+ background-image: url(../images/access/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-minus {
+ background-image: url(../images/access/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-plus {
+ background-image: url(../images/access/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-minus {
+ background-image: url(../images/access/tree/arrows.gif);
+}
+
+.x-tree-node {
+ color: #000;
+ font: normal 14px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-tree-node a,
+.x-dd-drag-ghost a {
+ color: #fff;
+}
+
+.x-tree-node a span,
+.x-dd-drag-ghost a span {
+ color: #fff;
+}
+
+.x-tree-node .x-tree-selected a,
+.x-dd-drag-ghost a {
+ color: #fff;
+}
+
+.x-tree-node .x-tree-selected a span,
+.x-dd-drag-ghost a span {
+ color: #fff;
+}
+
+.x-tree-node .x-tree-node-disabled a span {
+ color: gray !important;
+}
+
+.x-tree-node div.x-tree-drag-insert-below {
+ border-bottom-color: #36c;
+}
+
+.x-tree-node div.x-tree-drag-insert-above {
+ border-top-color: #36c;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a {
+ border-bottom-color: #36c;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a {
+ border-top-color: #36c;
+}
+
+.x-tree-node .x-tree-drag-append a span {
+ background-color: #ddd;
+ border-color: gray;
+}
+
+.x-tree-node .x-tree-node-over {
+ background-color: #7e5530;
+}
+
+.x-tree-node .x-tree-selected {
+ background-color: #e5872c;
+}
+
+.x-tree-drop-ok-append .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-add.gif);
+}
+
+.x-tree-drop-ok-above .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-over.gif);
+}
+
+.x-tree-drop-ok-below .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-under.gif);
+}
+
+.x-tree-drop-ok-between .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-between.gif);
+}
+.x-date-picker {
+ border-color: #737b8c;
+ background-color: #21252e;
+}
+
+.x-date-middle,
+.x-date-left,
+.x-date-right {
+ background-image: url(../images/access/shared/hd-sprite.gif);
+ color: #fff;
+ font: bold 14px 'sans serif', tahoma, verdana, helvetica;
+}
+
+.x-date-middle .x-btn .x-btn-text {
+ color: #fff;
+}
+
+.x-date-middle .x-btn-mc em.x-btn-arrow {
+ background-image: url(../images/access/toolbar/btn-arrow-light.gif);
+}
+
+.x-date-right a {
+ background-image: url(../images/access/shared/right-btn.gif);
+}
+
+.x-date-left a {
+ background-image: url(../images/access/shared/left-btn.gif);
+}
+
+.x-date-inner th {
+ background-color: #363d4a;
+ background-image: url(../images/access/toolbar/bg.gif);
+ border-bottom-color: #535b5c;
+ font: normal 13px arial, helvetica, tahoma, sans-serif;
+ color: #fff;
+}
+
+.x-date-inner td {
+ border-color: #112;
+}
+
+.x-date-inner a {
+ font: normal 14px arial, helvetica, tahoma, sans-serif;
+ color: #fff;
+ padding: 2px 7px 1px 3px; /* Structure to account for larger, bolder fonts in Access theme. */
+}
+
+.x-date-inner .x-date-active {
+ color: #000;
+}
+
+.x-date-inner .x-date-selected a {
+ background-color: #e5872c;
+ background-image: none;
+ border-color: #864900;
+ padding: 1px 6px 1px 2px; /* Structure to account for larger, bolder fonts in Access theme. */
+}
+
+.x-date-inner .x-date-today a {
+ border-color: #99a;
+}
+
+.x-date-inner .x-date-selected span {
+ font-weight: bold;
+}
+
+.x-date-inner .x-date-prevday a,
+.x-date-inner .x-date-nextday a {
+ color: #aaa;
+}
+
+.x-date-bottom {
+ border-top-color: #737b8c;
+ background-color: #464d5a;
+ background-image: url(../images/access/shared/glass-bg.gif);
+}
+
+.x-date-inner a:hover,
+.x-date-inner .x-date-disabled a:hover {
+ color: #fff;
+ background-color: #7e5530;
+}
+
+.x-date-inner .x-date-disabled a {
+ background-color: #eee;
+ color: #bbb;
+}
+
+.x-date-mmenu {
+ background-color: #eee !important;
+}
+
+.x-date-mmenu .x-menu-item {
+ font-size: 13px;
+ color: #000;
+}
+
+.x-date-mp {
+ background-color: #21252e;
+}
+
+.x-date-mp td {
+ font: normal 14px arial, helvetica, tahoma, sans-serif;
+}
+
+.x-date-mp-btns button {
+ background-color: #083772;
+ color: #fff;
+ border-color: #3366cc #000055 #000055 #3366cc;
+ font: normal 14px arial, helvetica, tahoma, sans-serif;
+}
+
+.x-date-mp-btns {
+ background-color: #dfecfb;
+ background-image: url(../images/access/shared/glass-bg.gif);
+}
+
+.x-date-mp-btns td {
+ border-top-color: #c5d2df;
+}
+
+td.x-date-mp-month a,
+td.x-date-mp-year a {
+ color: #fff;
+}
+
+td.x-date-mp-month a:hover,
+td.x-date-mp-year a:hover {
+ color: #fff;
+ background-color: #7e5530;
+}
+
+td.x-date-mp-sel a {
+ background-color: #e5872c;
+ background-image: none;
+ border-color: #864900;
+}
+
+.x-date-mp-ybtn a {
+ background-image: url(../images/access/panel/tool-sprites.gif);
+}
+
+td.x-date-mp-sep {
+ border-right-color: #c5d2df;
+}
+.x-tip .x-tip-close {
+ background-image: url(../images/access/qtip/close.gif);
+}
+
+.x-tip .x-tip-tc,
+.x-tip .x-tip-tl,
+.x-tip .x-tip-tr,
+.x-tip .x-tip-bc,
+.x-tip .x-tip-bl,
+.x-tip .x-tip-br,
+.x-tip .x-tip-ml,
+.x-tip .x-tip-mr {
+ background-image: url(../images/access/qtip/tip-sprite.gif);
+}
+
+.x-tip .x-tip-mc {
+ font: normal 14px tahoma, arial, helvetica, sans-serif;
+}
+.x-tip .x-tip-ml {
+ background-color: #fff;
+}
+
+.x-tip .x-tip-header-text {
+ font: bold 14px tahoma, arial, helvetica, sans-serif;
+ color: #ffd;
+}
+
+.x-tip .x-tip-body {
+ font: normal 14px tahoma, arial, helvetica, sans-serif;
+ color: #000;
+}
+
+.x-form-invalid-tip .x-tip-tc,
+.x-form-invalid-tip .x-tip-tl,
+.x-form-invalid-tip .x-tip-tr,
+.x-form-invalid-tip .x-tip-bc,
+.x-form-invalid-tip .x-tip-bl,
+.x-form-invalid-tip .x-tip-br,
+.x-form-invalid-tip .x-tip-ml,
+.x-form-invalid-tip .x-tip-mr {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+
+.x-form-invalid-tip .x-tip-body {
+ background-image: url(../images/access/form/exclamation.gif);
+}
+
+.x-tip-anchor {
+ background-image: url(../images/access/qtip/tip-anchor-sprite.gif);
+}
+.x-menu {
+ border-color: #222;
+ background-color: #414551;
+ background-image: url(../images/access/menu/menu.gif);
+}
+
+.x-menu-nosep {
+ background-image: none;
+}
+
+.x-menu-list-item {
+ font: normal 14px tahoma, arial, sans-serif;
+}
+
+.x-menu-item-arrow {
+ background-image: url(../images/access/menu/menu-parent.gif);
+}
+
+.x-menu-sep {
+ background-color: #223;
+ border-bottom-color: #666;
+}
+
+a.x-menu-item {
+ color: #fffff6;
+}
+
+.x-menu-item-active {
+ background-color: #f09134;
+ background-image: none;
+ border-color: #b36427;
+}
+
+.x-menu-item-active a.x-menu-item {
+ border-color: #b36427;
+}
+
+.x-menu-check-item .x-menu-item-icon {
+ background-image: url(../images/default/menu/unchecked.gif);
+}
+
+.x-menu-item-checked .x-menu-item-icon {
+ background-image: url(../images/default/menu/checked.gif);
+}
+
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon {
+ background-image: url(../images/access/menu/group-checked.gif);
+}
+
+.x-menu-group-item .x-menu-item-icon {
+ background-image: none;
+}
+
+.x-menu-plain {
+ background-color: #fff !important;
+}
+
+.x-menu .x-date-picker {
+ border-color: #a3bad9;
+}
+
+.x-cycle-menu .x-menu-item-checked {
+ border-color: #a3bae9 !important;
+ background-color: #def8f6;
+}
+
+.x-menu-scroller-top {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+
+.x-menu-scroller-bottom {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+.x-box-tl {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-tc {
+ background-image: url(../images/default/box/tb.gif);
+}
+
+.x-box-tr {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-ml {
+ background-image: url(../images/default/box/l.gif);
+}
+
+.x-box-mc {
+ background-color: #eee;
+ background-image: url(../images/default/box/tb.gif);
+ font-family: 'Myriad Pro', 'Myriad Web', 'Tahoma', 'Helvetica', 'Arial',
+ sans-serif;
+ color: #393939;
+ font-size: 15px;
+}
+
+.x-box-mc h3 {
+ font-size: 18px;
+ font-weight: bold;
+}
+
+.x-box-mr {
+ background-image: url(../images/default/box/r.gif);
+}
+
+.x-box-bl {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-bc {
+ background-image: url(../images/default/box/tb.gif);
+}
+
+.x-box-br {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-blue .x-box-bl,
+.x-box-blue .x-box-br,
+.x-box-blue .x-box-tl,
+.x-box-blue .x-box-tr {
+ background-image: url(../images/default/box/corners-blue.gif);
+}
+
+.x-box-blue .x-box-bc,
+.x-box-blue .x-box-mc,
+.x-box-blue .x-box-tc {
+ background-image: url(../images/default/box/tb-blue.gif);
+}
+
+.x-box-blue .x-box-mc {
+ background-color: #c3daf9;
+}
+
+.x-box-blue .x-box-mc h3 {
+ color: #17385b;
+}
+
+.x-box-blue .x-box-ml {
+ background-image: url(../images/default/box/l-blue.gif);
+}
+
+.x-box-blue .x-box-mr {
+ background-image: url(../images/default/box/r-blue.gif);
+}
+.x-combo-list {
+ border: 2px solid #232732;
+ background-color: #555566;
+ font: normal 15px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-combo-list-inner {
+ background-color: #414551;
+}
+
+.x-combo-list-hd {
+ font: bold 14px tahoma, arial, helvetica, sans-serif;
+ color: #fff;
+ background-image: url(../images/default/layout/panel-title-light-bg.gif);
+ border-bottom-color: #98c0f4;
+}
+
+.x-resizable-pinned .x-combo-list-inner {
+ border-bottom-color: #98c0f4;
+}
+
+.x-combo-list-item {
+ border-color: #556;
+}
+
+.x-combo-list .x-combo-selected {
+ border-color: #e5872c !important;
+ background-color: #e5872c;
+}
+
+.x-combo-list .x-toolbar {
+ border-top-color: #98c0f4;
+}
+
+.x-combo-list-small {
+ font: normal 14px tahoma, arial, helvetica, sans-serif;
+}
+.x-panel {
+ border-color: #18181a;
+ font-size: 14px;
+}
+
+.x-panel-header {
+ color: #fff;
+ font-weight: bold;
+ font-size: 14px;
+ font-family: tahoma, arial, verdana, sans-serif;
+ border-color: #18181a;
+ background-image: url(../images/access/panel/white-top-bottom.gif);
+}
+
+.x-panel-body {
+ color: #fffff6;
+ border-color: #18181a;
+ background-color: #232d38;
+}
+
+.x-tab-panel .x-panel-body {
+ color: #fffff6;
+ border-color: #18181a;
+ background-color: #1f2730;
+}
+
+.x-panel-bbar .x-toolbar,
+.x-panel-tbar .x-toolbar {
+ border-color: #223;
+}
+
+.x-panel-tbar-noheader .x-toolbar,
+.x-panel-mc .x-panel-tbar .x-toolbar {
+ border-top-color: #223;
+}
+
+.x-panel-body-noheader,
+.x-panel-mc .x-panel-body {
+ border-top-color: #223;
+}
+
+.x-panel-tl .x-panel-header {
+ color: #fff;
+ font: bold 14px tahoma, arial, verdana, sans-serif;
+}
+
+.x-panel-tc {
+ background-image: url(../images/access/panel/top-bottom.gif);
+}
+
+.x-panel-tl,
+.x-panel-tr,
+.x-panel-bl,
+.x-panel-br {
+ background-image: url(../images/access/panel/corners-sprite.gif);
+ border-bottom-color: #222224;
+}
+
+.x-panel-bc {
+ background-image: url(../images/access/panel/top-bottom.gif);
+}
+
+.x-panel-mc {
+ font: normal 14px tahoma, arial, helvetica, sans-serif;
+ background-color: #3f4757;
+}
+
+.x-panel-ml {
+ background-image: url(../images/access/panel/left-right.gif);
+}
+
+.x-panel-mr {
+ background-image: url(../images/access/panel/left-right.gif);
+}
+
+.x-tool {
+ background-image: url(../images/access/panel/tool-sprites.gif);
+}
+
+.x-panel-ghost {
+ background-color: #3f4757;
+}
+
+.x-panel-ghost ul {
+ border-color: #18181a;
+}
+
+.x-panel-dd-spacer {
+ border-color: #18181a;
+}
+
+.x-panel-fbar td,
+.x-panel-fbar span,
+.x-panel-fbar input,
+.x-panel-fbar div,
+.x-panel-fbar select,
+.x-panel-fbar label {
+ font: normal 14px arial, tahoma, helvetica, sans-serif;
+}
+.x-window-proxy {
+ background-color: #1f2833;
+ border-color: #18181a;
+}
+
+.x-window-tl .x-window-header {
+ color: #fff;
+ font: bold 14px tahoma, arial, verdana, sans-serif;
+}
+
+.x-window-tc {
+ background-image: url(../images/access/window/top-bottom.png);
+}
+
+.x-window-tl {
+ background-image: url(../images/access/window/left-corners.png);
+}
+
+.x-window-tr {
+ background-image: url(../images/access/window/right-corners.png);
+}
+
+.x-window-bc {
+ background-image: url(../images/access/window/top-bottom.png);
+}
+
+.x-window-bl {
+ background-image: url(../images/access/window/left-corners.png);
+}
+
+.x-window-br {
+ background-image: url(../images/access/window/right-corners.png);
+}
+
+.x-window-mc {
+ border-color: #18181a;
+ font: normal 14px tahoma, arial, helvetica, sans-serif;
+ background-color: #1f2833;
+}
+
+.x-window-ml {
+ background-image: url(../images/access/window/left-right.png);
+}
+
+.x-window-mr {
+ background-image: url(../images/access/window/left-right.png);
+}
+
+.x-window-maximized .x-window-tc {
+ background-color: #fff;
+}
+
+.x-window-bbar .x-toolbar {
+ border-top-color: #323945;
+}
+
+.x-panel-ghost .x-window-tl {
+ border-bottom-color: #323945;
+}
+
+.x-panel-collapsed .x-window-tl {
+ border-bottom-color: #323945;
+}
+
+.x-dlg-mask {
+ background-color: #ccc;
+}
+
+.x-window-plain .x-window-mc {
+ background-color: #464f61;
+ border-color: #636778;
+}
+
+.x-window-plain .x-window-body {
+ color: #fffff6;
+ border-color: #464f61;
+}
+
+body.x-body-masked .x-window-plain .x-window-mc {
+ background-color: #464f61;
+}
+.x-html-editor-wrap {
+ border-color: #737b8c;
+ background-color: #fff;
+}
+.x-html-editor-wrap iframe {
+ background-color: #fff;
+}
+.x-html-editor-tb .x-btn-text {
+ background-image: url(../images/access/editor/tb-sprite.gif);
+}
+.x-panel-noborder .x-panel-header-noborder {
+ border-bottom-color: #343d4e;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+ border-bottom-color: #343d4e;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+ border-top-color: #343d4e;
+}
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+ border-top-color: #343d4e;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+ border-bottom-color: #343d4e;
+}
+.x-border-layout-ct {
+ background-color: #3f4757;
+}
+
+.x-accordion-hd {
+ color: #fff;
+ font-weight: normal;
+ background-image: url(../images/access/panel/light-hd.gif);
+}
+
+.x-layout-collapsed {
+ background-color: #323845;
+ border-color: #1a1a1c;
+}
+
+.x-layout-collapsed-over {
+ background-color: #2d3440;
+}
+
+.x-layout-split-west .x-layout-mini {
+ background-image: url(../images/default/layout/mini-left.gif);
+}
+
+.x-layout-split-east .x-layout-mini {
+ background-image: url(../images/default/layout/mini-right.gif);
+}
+
+.x-layout-split-north .x-layout-mini {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+
+.x-layout-split-south .x-layout-mini {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-west .x-layout-mini {
+ background-image: url(../images/default/layout/mini-right.gif);
+}
+
+.x-layout-cmini-east .x-layout-mini {
+ background-image: url(../images/default/layout/mini-left.gif);
+}
+
+.x-layout-cmini-north .x-layout-mini {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-south .x-layout-mini {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+.x-progress-wrap {
+ border-color: #18181a;
+}
+
+.x-progress-inner {
+ background-color: #232d38;
+ background-image: none;
+}
+
+.x-progress-bar {
+ background-color: #f39a00;
+ background-image: url(../images/access/progress/progress-bg.gif);
+ border-top-color: #a66900;
+ border-bottom-color: #a66900;
+ border-right-color: #ffb941;
+ height: 20px !important; /* structural override for Accessibility Theme */
+}
+
+.x-progress-text {
+ font-size: 14px;
+ font-weight: bold;
+ color: #fff;
+ padding: 0 5px !important; /* structural override for Accessibility Theme */
+}
+
+.x-progress-text-back {
+ color: #aaa;
+ line-height: 19px;
+}
+.x-list-header {
+ background-color: #393d4e;
+ background-image: url(../images/access/toolbar/bg.gif);
+ background-position: 0 top;
+}
+
+.x-list-header-inner div em {
+ border-left-color: #667;
+ font: normal 14px arial, tahoma, helvetica, sans-serif;
+ line-height: 14px;
+}
+
+.x-list-body-inner {
+ background-color: #1b232b;
+}
+
+.x-list-body dt em {
+ font: normal 14px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-list-over {
+ background-color: #7e5530;
+}
+
+.x-list-selected {
+ background-color: #e5872c;
+}
+
+.x-list-resizer {
+ border-left-color: #555;
+ border-right-color: #555;
+}
+
+.x-list-header-inner em.sort-asc,
+.x-list-header-inner em.sort-desc {
+ background-image: url(../images/access/grid/sort-hd.gif);
+ border-color: #3e4e6c;
+}
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+ background-image: url(../images/access/slider/slider-bg.png);
+}
+
+.x-slider-horz .x-slider-thumb {
+ background-image: url(../images/access/slider/slider-thumb.png);
+}
+
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+ background-image: url(../images/access/slider/slider-v-bg.png);
+}
+
+.x-slider-vert .x-slider-thumb {
+ background-image: url(../images/access/slider/slider-v-thumb.png);
+}
+.x-window-dlg .ext-mb-text,
+.x-window-dlg .x-window-header-text {
+ font-size: 15px;
+}
+
+.x-window-dlg .ext-mb-textarea {
+ font: normal 15px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-window-dlg .x-msg-box-wait {
+ background-image: url(../images/access/grid/loading.gif);
+}
+
+.x-window-dlg .ext-mb-info {
+ background-image: url(../images/access/window/icon-info.gif);
+}
+
+.x-window-dlg .ext-mb-warning {
+ background-image: url(../images/access/window/icon-warning.gif);
+}
+
+.x-window-dlg .ext-mb-question {
+ background-image: url(../images/access/window/icon-question.gif);
+}
+
+.x-window-dlg .ext-mb-error {
+ background-image: url(../images/access/window/icon-error.gif);
+}
diff --git a/deluge/ui/web/themes/css/xtheme-blue.css b/deluge/ui/web/themes/css/xtheme-blue.css
new file mode 100644
index 0000000..c2131cf
--- /dev/null
+++ b/deluge/ui/web/themes/css/xtheme-blue.css
@@ -0,0 +1,1793 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+.ext-el-mask {
+ background-color: #ccc;
+}
+
+.ext-el-mask-msg {
+ border-color: #6593cf;
+ background-color: #c3daf9;
+ background-image: url(../images/default/box/tb-blue.gif);
+}
+.ext-el-mask-msg div {
+ background-color: #eee;
+ border-color: #a3bad9;
+ color: #222;
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-mask-loading div {
+ background-color: #fbfbfb;
+ background-image: url(../images/default/grid/loading.gif);
+}
+
+.x-item-disabled {
+ color: gray;
+}
+
+.x-item-disabled * {
+ color: gray !important;
+}
+
+.x-splitbar-proxy {
+ background-color: #aaa;
+}
+
+.x-color-palette a {
+ border-color: #fff;
+}
+
+.x-color-palette a:hover,
+.x-color-palette a.x-color-palette-sel {
+ border-color: #8bb8f3;
+ background-color: #deecfd;
+}
+
+/*
+.x-color-palette em:hover, .x-color-palette span:hover{
+ background-color: #deecfd;
+}
+*/
+
+.x-color-palette em {
+ border-color: #aca899;
+}
+
+.x-ie-shadow {
+ background-color: #777;
+}
+
+.x-shadow .xsmc {
+ background-image: url(../images/default/shadow-c.png);
+}
+
+.x-shadow .xsml,
+.x-shadow .xsmr {
+ background-image: url(../images/default/shadow-lr.png);
+}
+
+.x-shadow .xstl,
+.x-shadow .xstc,
+.x-shadow .xstr,
+.x-shadow .xsbl,
+.x-shadow .xsbc,
+.x-shadow .xsbr {
+ background-image: url(../images/default/shadow.png);
+}
+
+.loading-indicator {
+ font-size: 11px;
+ background-image: url(../images/default/grid/loading.gif);
+}
+
+.x-spotlight {
+ background-color: #ccc;
+}
+.x-tab-panel-header,
+.x-tab-panel-footer {
+ background-color: #deecfd;
+ border-color: #8db2e3;
+ overflow: hidden;
+ zoom: 1;
+}
+
+.x-tab-panel-header,
+.x-tab-panel-footer {
+ border-color: #8db2e3;
+}
+
+ul.x-tab-strip-top {
+ background-color: #cedff5;
+ background-image: url(../images/default/tabs/tab-strip-bg.gif);
+ border-bottom-color: #8db2e3;
+}
+
+ul.x-tab-strip-bottom {
+ background-color: #cedff5;
+ background-image: url(../images/default/tabs/tab-strip-btm-bg.gif);
+ border-top-color: #8db2e3;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer,
+.x-tab-panel-footer-plain .x-tab-strip-spacer {
+ border-color: #8db2e3;
+ background-color: #deecfd;
+}
+
+.x-tab-strip span.x-tab-strip-text {
+ font: normal 11px tahoma, arial, helvetica;
+ color: #416aa3;
+}
+
+.x-tab-strip-over span.x-tab-strip-text {
+ color: #15428b;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+ color: #15428b;
+ font-weight: bold;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+ color: #aaaaaa;
+}
+
+.x-tab-strip-top .x-tab-right,
+.x-tab-strip-top .x-tab-left,
+.x-tab-strip-top .x-tab-strip-inner {
+ background-image: url(../images/default/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ background-image: url(../images/default/tabs/tab-btm-inactive-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background-image: url(../images/default/tabs/tab-btm-inactive-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-over .x-tab-right {
+ background-image: url(../images/default/tabs/tab-btm-over-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-over .x-tab-left {
+ background-image: url(../images/default/tabs/tab-btm-over-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background-image: url(../images/default/tabs/tab-btm-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background-image: url(../images/default/tabs/tab-btm-left-bg.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ background-image: url(../images/default/tabs/tab-close.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover {
+ background-image: url(../images/default/tabs/tab-close.gif);
+}
+
+.x-tab-panel-body {
+ border-color: #8db2e3;
+ background-color: #fff;
+}
+
+.x-tab-panel-body-top {
+ border-top: 0 none;
+}
+
+.x-tab-panel-body-bottom {
+ border-bottom: 0 none;
+}
+
+.x-tab-scroller-left {
+ background-image: url(../images/default/tabs/scroll-left.gif);
+ border-bottom-color: #8db2e3;
+}
+
+.x-tab-scroller-left-over {
+ background-position: 0 0;
+}
+
+.x-tab-scroller-left-disabled {
+ background-position: -18px 0;
+ opacity: 0.5;
+ -moz-opacity: 0.5;
+ filter: alpha(opacity=50);
+ cursor: default;
+}
+
+.x-tab-scroller-right {
+ background-image: url(../images/default/tabs/scroll-right.gif);
+ border-bottom-color: #8db2e3;
+}
+
+.x-tab-panel-bbar .x-toolbar,
+.x-tab-panel-tbar .x-toolbar {
+ border-color: #99bbe8;
+}
+.x-form-field {
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-text,
+textarea.x-form-field {
+ background-color: #fff;
+ background-image: url(../images/default/form/text-bg.gif);
+ border-color: #b5b8c8;
+}
+
+.x-form-select-one {
+ background-color: #fff;
+ border-color: #b5b8c8;
+}
+
+.x-form-check-group-label {
+ border-bottom: 1px solid #99bbe8;
+ color: #15428b;
+}
+
+.x-editor .x-form-check-wrap {
+ background-color: #fff;
+}
+
+.x-form-field-wrap .x-form-trigger {
+ background-image: url(../images/default/form/trigger.gif);
+ border-bottom-color: #b5b8c8;
+}
+
+.x-form-field-wrap .x-form-date-trigger {
+ background-image: url(../images/default/form/date-trigger.gif);
+}
+
+.x-form-field-wrap .x-form-clear-trigger {
+ background-image: url(../images/default/form/clear-trigger.gif);
+}
+
+.x-form-field-wrap .x-form-search-trigger {
+ background-image: url(../images/default/form/search-trigger.gif);
+}
+
+.x-trigger-wrap-focus .x-form-trigger {
+ border-bottom-color: #7eadd9;
+}
+
+.x-item-disabled .x-form-trigger-over {
+ border-bottom-color: #b5b8c8;
+}
+
+.x-item-disabled .x-form-trigger-click {
+ border-bottom-color: #b5b8c8;
+}
+
+.x-form-focus,
+textarea.x-form-focus {
+ border-color: #7eadd9;
+}
+
+.x-form-invalid,
+textarea.x-form-invalid {
+ background-color: #fff;
+ background-image: url(../images/default/grid/invalid_line.gif);
+ border-color: #c30;
+}
+
+.x-form-invalid.x-form-composite {
+ border: none;
+ background-image: none;
+}
+
+.x-form-invalid.x-form-composite .x-form-invalid {
+ background-color: #fff;
+ background-image: url(../images/default/grid/invalid_line.gif);
+ border-color: #c30;
+}
+
+.x-form-inner-invalid,
+textarea.x-form-inner-invalid {
+ background-color: #fff;
+ background-image: url(../images/default/grid/invalid_line.gif);
+}
+
+.x-form-grow-sizer {
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-item {
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-invalid-msg {
+ color: #c0272b;
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+ background-image: url(../images/default/shared/warning.gif);
+}
+
+.x-form-empty-field {
+ color: gray;
+}
+
+.x-small-editor .x-form-field {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.ext-webkit .x-small-editor .x-form-field {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-form-invalid-icon {
+ background-image: url(../images/default/form/exclamation.gif);
+}
+
+.x-fieldset {
+ border-color: #b5b8c8;
+}
+
+.x-fieldset legend {
+ font: bold 11px tahoma, arial, helvetica, sans-serif;
+ color: #15428b;
+}
+.x-btn {
+ font: normal 11px tahoma, verdana, helvetica;
+}
+
+.x-btn button {
+ font: normal 11px arial, tahoma, verdana, helvetica;
+ color: #333;
+}
+
+.x-btn em {
+ font-style: normal;
+ font-weight: normal;
+}
+
+.x-btn-tl,
+.x-btn-tr,
+.x-btn-tc,
+.x-btn-ml,
+.x-btn-mr,
+.x-btn-mc,
+.x-btn-bl,
+.x-btn-br,
+.x-btn-bc {
+ background-image: url(../images/default/button/btn.gif);
+}
+
+.x-btn-click .x-btn-text,
+.x-btn-menu-active .x-btn-text,
+.x-btn-pressed .x-btn-text {
+ color: #000;
+}
+
+.x-btn-disabled * {
+ color: gray !important;
+}
+
+.x-btn-mc em.x-btn-arrow {
+ background-image: url(../images/default/button/arrow.gif);
+}
+
+.x-btn-mc em.x-btn-split {
+ background-image: url(../images/default/button/s-arrow.gif);
+}
+
+.x-btn-over .x-btn-mc em.x-btn-split,
+.x-btn-click .x-btn-mc em.x-btn-split,
+.x-btn-menu-active .x-btn-mc em.x-btn-split,
+.x-btn-pressed .x-btn-mc em.x-btn-split {
+ background-image: url(../images/default/button/s-arrow-o.gif);
+}
+
+.x-btn-mc em.x-btn-arrow-bottom {
+ background-image: url(../images/default/button/s-arrow-b-noline.gif);
+}
+
+.x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/default/button/s-arrow-b.gif);
+}
+
+.x-btn-over .x-btn-mc em.x-btn-split-bottom,
+.x-btn-click .x-btn-mc em.x-btn-split-bottom,
+.x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,
+.x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/default/button/s-arrow-bo.gif);
+}
+
+.x-btn-group-header {
+ color: #3e6aaa;
+}
+
+.x-btn-group-tc {
+ background-image: url(../images/default/button/group-tb.gif);
+}
+
+.x-btn-group-tl {
+ background-image: url(../images/default/button/group-cs.gif);
+}
+
+.x-btn-group-tr {
+ background-image: url(../images/default/button/group-cs.gif);
+}
+
+.x-btn-group-bc {
+ background-image: url(../images/default/button/group-tb.gif);
+}
+
+.x-btn-group-bl {
+ background-image: url(../images/default/button/group-cs.gif);
+}
+
+.x-btn-group-br {
+ background-image: url(../images/default/button/group-cs.gif);
+}
+
+.x-btn-group-ml {
+ background-image: url(../images/default/button/group-lr.gif);
+}
+.x-btn-group-mr {
+ background-image: url(../images/default/button/group-lr.gif);
+}
+
+.x-btn-group-notitle .x-btn-group-tc {
+ background-image: url(../images/default/button/group-tb.gif);
+}
+.x-toolbar {
+ border-color: #a9bfd3;
+ background-color: #d0def0;
+ background-image: url(../images/default/toolbar/bg.gif);
+}
+
+.x-toolbar td,
+.x-toolbar span,
+.x-toolbar input,
+.x-toolbar div,
+.x-toolbar select,
+.x-toolbar label {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-toolbar .x-item-disabled {
+ color: gray;
+}
+
+.x-toolbar .x-item-disabled * {
+ color: gray;
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split {
+ background-image: url(../images/default/button/s-arrow-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split {
+ background-image: url(../images/default/button/s-arrow-o.gif);
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/default/button/s-arrow-b-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/default/button/s-arrow-bo.gif);
+}
+
+.x-toolbar .xtb-sep {
+ background-image: url(../images/default/grid/grid-blue-split.gif);
+}
+
+.x-tbar-page-first {
+ background-image: url(../images/default/grid/page-first.gif) !important;
+}
+
+.x-tbar-loading {
+ background-image: url(../images/default/grid/refresh.gif) !important;
+}
+
+.x-tbar-page-last {
+ background-image: url(../images/default/grid/page-last.gif) !important;
+}
+
+.x-tbar-page-next {
+ background-image: url(../images/default/grid/page-next.gif) !important;
+}
+
+.x-tbar-page-prev {
+ background-image: url(../images/default/grid/page-prev.gif) !important;
+}
+
+.x-item-disabled .x-tbar-loading {
+ background-image: url(../images/default/grid/refresh-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-first {
+ background-image: url(../images/default/grid/page-first-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-last {
+ background-image: url(../images/default/grid/page-last-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-next {
+ background-image: url(../images/default/grid/page-next-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-prev {
+ background-image: url(../images/default/grid/page-prev-disabled.gif) !important;
+}
+
+.x-paging-info {
+ color: #444;
+}
+
+.x-toolbar-more-icon {
+ background-image: url(../images/default/toolbar/more.gif) !important;
+}
+.x-resizable-handle {
+ background-color: #fff;
+}
+
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-west {
+ background-image: url(../images/default/sizer/e-handle.gif);
+}
+
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-north {
+ background-image: url(../images/default/sizer/s-handle.gif);
+}
+
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-north {
+ background-image: url(../images/default/sizer/s-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+ background-image: url(../images/default/sizer/se-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+ background-image: url(../images/default/sizer/nw-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+ background-image: url(../images/default/sizer/ne-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+ background-image: url(../images/default/sizer/sw-handle.gif);
+}
+.x-resizable-proxy {
+ border-color: #3b5a82;
+}
+.x-resizable-overlay {
+ background-color: #fff;
+}
+.x-grid3 {
+ background-color: #fff;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+ border-color: #99bbe8;
+}
+
+.x-grid3-row td,
+.x-grid3-summary-row td {
+ font: normal 11px/13px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-hd-row td {
+ font: normal 11px/15px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-hd-row td {
+ border-left-color: #eee;
+ border-right-color: #d0d0d0;
+}
+
+.x-grid-row-loading {
+ background-color: #fff;
+ background-image: url(../images/default/shared/loading-balls.gif);
+}
+
+.x-grid3-row {
+ border-color: #ededed;
+ border-top-color: #fff;
+}
+
+.x-grid3-row-alt {
+ background-color: #fafafa;
+}
+
+.x-grid3-row-over {
+ border-color: #ddd;
+ background-color: #efefef;
+ background-image: url(../images/default/grid/row-over.gif);
+}
+
+.x-grid3-resize-proxy {
+ background-color: #777;
+}
+
+.x-grid3-resize-marker {
+ background-color: #777;
+}
+
+.x-grid3-header {
+ background-color: #f9f9f9;
+ background-image: url(../images/default/grid/grid3-hrow.gif);
+}
+
+.x-grid3-header-pop {
+ border-left-color: #d0d0d0;
+}
+
+.x-grid3-header-pop-inner {
+ border-left-color: #eee;
+ background-image: url(../images/default/grid/hd-pop.gif);
+}
+
+td.x-grid3-hd-over,
+td.sort-desc,
+td.sort-asc,
+td.x-grid3-hd-menu-open {
+ border-left-color: #aaccf6;
+ border-right-color: #aaccf6;
+}
+
+td.x-grid3-hd-over .x-grid3-hd-inner,
+td.sort-desc .x-grid3-hd-inner,
+td.sort-asc .x-grid3-hd-inner,
+td.x-grid3-hd-menu-open .x-grid3-hd-inner {
+ background-color: #ebf3fd;
+ background-image: url(../images/default/grid/grid3-hrow-over.gif);
+}
+
+.sort-asc .x-grid3-sort-icon {
+ background-image: url(../images/default/grid/sort_asc.gif);
+}
+
+.sort-desc .x-grid3-sort-icon {
+ background-image: url(../images/default/grid/sort_desc.gif);
+}
+
+.x-grid3-cell-text,
+.x-grid3-hd-text {
+ color: #000;
+}
+
+.x-grid3-split {
+ background-image: url(../images/default/grid/grid-split.gif);
+}
+
+.x-grid3-hd-text {
+ color: #15428b;
+}
+
+.x-dd-drag-proxy .x-grid3-hd-inner {
+ background-color: #ebf3fd;
+ background-image: url(../images/default/grid/grid3-hrow-over.gif);
+ border-color: #aaccf6;
+}
+
+.col-move-top {
+ background-image: url(../images/default/grid/col-move-top.gif);
+}
+
+.col-move-bottom {
+ background-image: url(../images/default/grid/col-move-bottom.gif);
+}
+
+td.grid-hd-group-cell {
+ background: url(../images/default/grid/grid3-hrow.gif) repeat-x bottom;
+}
+
+.x-grid3-row-selected {
+ background-color: #dfe8f6 !important;
+ background-image: none;
+ border-color: #a3bae9;
+}
+
+.x-grid3-cell-selected {
+ background-color: #b8cfee !important;
+ color: #000;
+}
+
+.x-grid3-cell-selected span {
+ color: #000 !important;
+}
+
+.x-grid3-cell-selected .x-grid3-cell-text {
+ color: #000;
+}
+
+.x-grid3-locked td.x-grid3-row-marker,
+.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker {
+ background-color: #ebeadb !important;
+ background-image: url(../images/default/grid/grid-hrow.gif) !important;
+ color: #000;
+ border-top-color: #fff;
+ border-right-color: #6fa0df !important;
+}
+
+.x-grid3-locked td.x-grid3-row-marker div,
+.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div {
+ color: #15428b !important;
+}
+
+.x-grid3-dirty-cell {
+ background-image: url(../images/default/grid/dirty.gif);
+}
+
+.x-grid3-topbar,
+.x-grid3-bottombar {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-bottombar .x-toolbar {
+ border-top-color: #a9bfd3;
+}
+
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif) !important;
+ color: #000 !important;
+}
+
+.x-props-grid .x-grid3-body .x-grid3-td-name {
+ background-color: #fff !important;
+ border-right-color: #eee;
+}
+
+.xg-hmenu-sort-asc .x-menu-item-icon {
+ background-image: url(../images/default/grid/hmenu-asc.gif);
+}
+
+.xg-hmenu-sort-desc .x-menu-item-icon {
+ background-image: url(../images/default/grid/hmenu-desc.gif);
+}
+
+.xg-hmenu-lock .x-menu-item-icon {
+ background-image: url(../images/default/grid/hmenu-lock.gif);
+}
+
+.xg-hmenu-unlock .x-menu-item-icon {
+ background-image: url(../images/default/grid/hmenu-unlock.gif);
+}
+
+.x-grid3-hd-btn {
+ background-color: #c3daf9;
+ background-image: url(../images/default/grid/grid3-hd-btn.gif);
+}
+
+.x-grid3-body .x-grid3-td-expander {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-row-expander {
+ background-image: url(../images/default/grid/row-expand-sprite.gif);
+}
+
+.x-grid3-body .x-grid3-td-checker {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-row-checker,
+.x-grid3-hd-checker {
+ background-image: url(../images/default/grid/row-check-sprite.gif);
+}
+
+.x-grid3-body .x-grid3-td-numberer {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
+ color: #444;
+}
+
+.x-grid3-body .x-grid3-td-row-icon {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander {
+ background-image: url(../images/default/grid/grid3-special-col-sel-bg.gif);
+}
+
+.x-grid3-check-col {
+ background-image: url(../images/default/menu/unchecked.gif);
+}
+
+.x-grid3-check-col-on {
+ background-image: url(../images/default/menu/checked.gif);
+}
+
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+ zoom: 1;
+}
+
+.x-grid-group-hd {
+ border-bottom-color: #99bbe8;
+}
+
+.x-grid-group-hd div.x-grid-group-title {
+ background-image: url(../images/default/grid/group-collapse.gif);
+ color: #3764a0;
+ font: bold 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title {
+ background-image: url(../images/default/grid/group-expand.gif);
+}
+
+.x-group-by-icon {
+ background-image: url(../images/default/grid/group-by.gif);
+}
+
+.x-cols-icon {
+ background-image: url(../images/default/grid/columns.gif);
+}
+
+.x-show-groups-icon {
+ background-image: url(../images/default/grid/group-by.gif);
+}
+
+.x-grid-empty {
+ color: gray;
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell {
+ border-right-color: #ededed;
+}
+
+.x-grid-with-col-lines .x-grid3-row-selected {
+ border-top-color: #a3bae9;
+}
+.x-pivotgrid .x-grid3-header-offset table td {
+ background: url(../images/default/grid/grid3-hrow.gif) repeat-x 50% 100%;
+ border-left: 1px solid;
+ border-right: 1px solid;
+ border-left-color: #eee;
+ border-right-color: #d0d0d0;
+}
+
+.x-pivotgrid .x-grid3-row-headers {
+ background-color: #f9f9f9;
+}
+
+.x-pivotgrid .x-grid3-row-headers table td {
+ background: #eee url(../images/default/grid/grid3-rowheader.gif) repeat-x
+ left top;
+ border-left: 1px solid;
+ border-right: 1px solid;
+ border-left-color: #eee;
+ border-right-color: #d0d0d0;
+ border-bottom: 1px solid;
+ border-bottom-color: #d0d0d0;
+ height: 18px;
+}
+.x-dd-drag-ghost {
+ color: #000;
+ font: normal 11px arial, helvetica, sans-serif;
+ border-color: #ddd #bbb #bbb #ddd;
+ background-color: #fff;
+}
+
+.x-dd-drop-nodrop .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-no.gif);
+}
+
+.x-dd-drop-ok .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-yes.gif);
+}
+
+.x-dd-drop-ok-add .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-add.gif);
+}
+
+.x-view-selector {
+ background-color: #c3daf9;
+ border-color: #3399bb;
+}
+.x-tree-node-expanded .x-tree-node-icon {
+ background-image: url(../images/default/tree/folder-open.gif);
+}
+
+.x-tree-node-leaf .x-tree-node-icon {
+ background-image: url(../images/default/tree/leaf.gif);
+}
+
+.x-tree-node-collapsed .x-tree-node-icon {
+ background-image: url(../images/default/tree/folder.gif);
+}
+
+.x-tree-node-loading .x-tree-node-icon {
+ background-image: url(../images/default/tree/loading.gif) !important;
+}
+
+.x-tree-node .x-tree-node-inline-icon {
+ background-image: none;
+}
+
+.x-tree-node-loading a span {
+ font-style: italic;
+ color: #444444;
+}
+
+.x-tree-lines .x-tree-elbow {
+ background-image: url(../images/default/tree/elbow.gif);
+}
+
+.x-tree-lines .x-tree-elbow-plus {
+ background-image: url(../images/default/tree/elbow-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-minus {
+ background-image: url(../images/default/tree/elbow-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end {
+ background-image: url(../images/default/tree/elbow-end.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-plus {
+ background-image: url(../images/default/tree/elbow-end-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-minus {
+ background-image: url(../images/default/tree/elbow-end-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-line {
+ background-image: url(../images/default/tree/elbow-line.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-plus {
+ background-image: url(../images/default/tree/elbow-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-minus {
+ background-image: url(../images/default/tree/elbow-minus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-plus {
+ background-image: url(../images/default/tree/elbow-end-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-minus {
+ background-image: url(../images/default/tree/elbow-end-minus-nl.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-plus {
+ background-image: url(../images/default/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-minus {
+ background-image: url(../images/default/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-plus {
+ background-image: url(../images/default/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-minus {
+ background-image: url(../images/default/tree/arrows.gif);
+}
+
+.x-tree-node {
+ color: #000;
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-tree-node a,
+.x-dd-drag-ghost a {
+ color: #000;
+}
+
+.x-tree-node a span,
+.x-dd-drag-ghost a span {
+ color: #000;
+}
+
+.x-tree-node .x-tree-node-disabled a span {
+ color: gray !important;
+}
+
+.x-tree-node div.x-tree-drag-insert-below {
+ border-bottom-color: #36c;
+}
+
+.x-tree-node div.x-tree-drag-insert-above {
+ border-top-color: #36c;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a {
+ border-bottom-color: #36c;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a {
+ border-top-color: #36c;
+}
+
+.x-tree-node .x-tree-drag-append a span {
+ background-color: #ddd;
+ border-color: gray;
+}
+
+.x-tree-node .x-tree-node-over {
+ background-color: #eee;
+}
+
+.x-tree-node .x-tree-selected {
+ background-color: #d9e8fb;
+}
+
+.x-tree-drop-ok-append .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-add.gif);
+}
+
+.x-tree-drop-ok-above .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-over.gif);
+}
+
+.x-tree-drop-ok-below .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-under.gif);
+}
+
+.x-tree-drop-ok-between .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-between.gif);
+}
+.x-date-picker {
+ border-color: #1b376c;
+ background-color: #fff;
+}
+
+.x-date-middle,
+.x-date-left,
+.x-date-right {
+ background-image: url(../images/default/shared/hd-sprite.gif);
+ color: #fff;
+ font: bold 11px 'sans serif', tahoma, verdana, helvetica;
+}
+
+.x-date-middle .x-btn .x-btn-text {
+ color: #fff;
+}
+
+.x-date-middle .x-btn-mc em.x-btn-arrow {
+ background-image: url(../images/default/toolbar/btn-arrow-light.gif);
+}
+
+.x-date-right a {
+ background-image: url(../images/default/shared/right-btn.gif);
+}
+
+.x-date-left a {
+ background-image: url(../images/default/shared/left-btn.gif);
+}
+
+.x-date-inner th {
+ background-color: #dfecfb;
+ background-image: url(../images/default/shared/glass-bg.gif);
+ border-bottom-color: #a3bad9;
+ font: normal 10px arial, helvetica, tahoma, sans-serif;
+ color: #233d6d;
+}
+
+.x-date-inner td {
+ border-color: #fff;
+}
+
+.x-date-inner a {
+ font: normal 11px arial, helvetica, tahoma, sans-serif;
+ color: #000;
+}
+
+.x-date-inner .x-date-active {
+ color: #000;
+}
+
+.x-date-inner .x-date-selected a {
+ background-color: #dfecfb;
+ background-image: url(../images/default/shared/glass-bg.gif);
+ border-color: #8db2e3;
+}
+
+.x-date-inner .x-date-today a {
+ border-color: darkred;
+}
+
+.x-date-inner .x-date-selected span {
+ font-weight: bold;
+}
+
+.x-date-inner .x-date-prevday a,
+.x-date-inner .x-date-nextday a {
+ color: #aaa;
+}
+
+.x-date-bottom {
+ border-top-color: #a3bad9;
+ background-color: #dfecfb;
+ background-image: url(../images/default/shared/glass-bg.gif);
+}
+
+.x-date-inner a:hover,
+.x-date-inner .x-date-disabled a:hover {
+ color: #000;
+ background-color: #ddecfe;
+}
+
+.x-date-inner .x-date-disabled a {
+ background-color: #eee;
+ color: #bbb;
+}
+
+.x-date-mmenu {
+ background-color: #eee !important;
+}
+
+.x-date-mmenu .x-menu-item {
+ font-size: 10px;
+ color: #000;
+}
+
+.x-date-mp {
+ background-color: #fff;
+}
+
+.x-date-mp td {
+ font: normal 11px arial, helvetica, tahoma, sans-serif;
+}
+
+.x-date-mp-btns button {
+ background-color: #083772;
+ color: #fff;
+ border-color: #3366cc #000055 #000055 #3366cc;
+ font: normal 11px arial, helvetica, tahoma, sans-serif;
+}
+
+.x-date-mp-btns {
+ background-color: #dfecfb;
+ background-image: url(../images/default/shared/glass-bg.gif);
+}
+
+.x-date-mp-btns td {
+ border-top-color: #c5d2df;
+}
+
+td.x-date-mp-month a,
+td.x-date-mp-year a {
+ color: #15428b;
+}
+
+td.x-date-mp-month a:hover,
+td.x-date-mp-year a:hover {
+ color: #15428b;
+ background-color: #ddecfe;
+}
+
+td.x-date-mp-sel a {
+ background-color: #dfecfb;
+ background-image: url(../images/default/shared/glass-bg.gif);
+ border-color: #8db2e3;
+}
+
+.x-date-mp-ybtn a {
+ background-image: url(../images/default/panel/tool-sprites.gif);
+}
+
+td.x-date-mp-sep {
+ border-right-color: #c5d2df;
+}
+.x-tip .x-tip-close {
+ background-image: url(../images/default/qtip/close.gif);
+}
+
+.x-tip .x-tip-tc,
+.x-tip .x-tip-tl,
+.x-tip .x-tip-tr,
+.x-tip .x-tip-bc,
+.x-tip .x-tip-bl,
+.x-tip .x-tip-br,
+.x-tip .x-tip-ml,
+.x-tip .x-tip-mr {
+ background-image: url(../images/default/qtip/tip-sprite.gif);
+}
+
+.x-tip .x-tip-mc {
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+}
+.x-tip .x-tip-ml {
+ background-color: #fff;
+}
+
+.x-tip .x-tip-header-text {
+ font: bold 11px tahoma, arial, helvetica, sans-serif;
+ color: #444;
+}
+
+.x-tip .x-tip-body {
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+ color: #444;
+}
+
+.x-form-invalid-tip .x-tip-tc,
+.x-form-invalid-tip .x-tip-tl,
+.x-form-invalid-tip .x-tip-tr,
+.x-form-invalid-tip .x-tip-bc,
+.x-form-invalid-tip .x-tip-bl,
+.x-form-invalid-tip .x-tip-br,
+.x-form-invalid-tip .x-tip-ml,
+.x-form-invalid-tip .x-tip-mr {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+
+.x-form-invalid-tip .x-tip-body {
+ background-image: url(../images/default/form/exclamation.gif);
+}
+
+.x-tip-anchor {
+ background-image: url(../images/default/qtip/tip-anchor-sprite.gif);
+}
+.x-menu {
+ background-color: #f0f0f0;
+ background-image: url(../images/default/menu/menu.gif);
+}
+
+.x-menu-floating {
+ border-color: #718bb7;
+}
+
+.x-menu-nosep {
+ background-image: none;
+}
+
+.x-menu-list-item {
+ font: normal 11px arial, tahoma, sans-serif;
+}
+
+.x-menu-item-arrow {
+ background-image: url(../images/default/menu/menu-parent.gif);
+}
+
+.x-menu-sep {
+ background-color: #e0e0e0;
+ border-bottom-color: #fff;
+}
+
+a.x-menu-item {
+ color: #222;
+}
+
+.x-menu-item-active {
+ background-image: url(../images/default/menu/item-over.gif);
+ background-color: #dbecf4;
+ border-color: #aaccf6;
+}
+
+.x-menu-item-active a.x-menu-item {
+ border-color: #aaccf6;
+}
+
+.x-menu-check-item .x-menu-item-icon {
+ background-image: url(../images/default/menu/unchecked.gif);
+}
+
+.x-menu-item-checked .x-menu-item-icon {
+ background-image: url(../images/default/menu/checked.gif);
+}
+
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon {
+ background-image: url(../images/default/menu/group-checked.gif);
+}
+
+.x-menu-group-item .x-menu-item-icon {
+ background-image: none;
+}
+
+.x-menu-plain {
+ background-color: #f0f0f0 !important;
+ background-image: none;
+}
+
+.x-date-menu,
+.x-color-menu {
+ background-color: #fff !important;
+}
+
+.x-menu .x-date-picker {
+ border-color: #a3bad9;
+}
+
+.x-cycle-menu .x-menu-item-checked {
+ border-color: #a3bae9 !important;
+ background-color: #def8f6;
+}
+
+.x-menu-scroller-top {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+
+.x-menu-scroller-bottom {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+.x-box-tl {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-tc {
+ background-image: url(../images/default/box/tb.gif);
+}
+
+.x-box-tr {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-ml {
+ background-image: url(../images/default/box/l.gif);
+}
+
+.x-box-mc {
+ background-color: #eee;
+ background-image: url(../images/default/box/tb.gif);
+ font-family: 'Myriad Pro', 'Myriad Web', 'Tahoma', 'Helvetica', 'Arial',
+ sans-serif;
+ color: #393939;
+ font-size: 12px;
+}
+
+.x-box-mc h3 {
+ font-size: 14px;
+ font-weight: bold;
+}
+
+.x-box-mr {
+ background-image: url(../images/default/box/r.gif);
+}
+
+.x-box-bl {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-bc {
+ background-image: url(../images/default/box/tb.gif);
+}
+
+.x-box-br {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-blue .x-box-bl,
+.x-box-blue .x-box-br,
+.x-box-blue .x-box-tl,
+.x-box-blue .x-box-tr {
+ background-image: url(../images/default/box/corners-blue.gif);
+}
+
+.x-box-blue .x-box-bc,
+.x-box-blue .x-box-mc,
+.x-box-blue .x-box-tc {
+ background-image: url(../images/default/box/tb-blue.gif);
+}
+
+.x-box-blue .x-box-mc {
+ background-color: #c3daf9;
+}
+
+.x-box-blue .x-box-mc h3 {
+ color: #17385b;
+}
+
+.x-box-blue .x-box-ml {
+ background-image: url(../images/default/box/l-blue.gif);
+}
+
+.x-box-blue .x-box-mr {
+ background-image: url(../images/default/box/r-blue.gif);
+}
+.x-combo-list {
+ border-color: #98c0f4;
+ background-color: #ddecfe;
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-combo-list-inner {
+ background-color: #fff;
+}
+
+.x-combo-list-hd {
+ font: bold 11px tahoma, arial, helvetica, sans-serif;
+ color: #15428b;
+ background-image: url(../images/default/layout/panel-title-light-bg.gif);
+ border-bottom-color: #98c0f4;
+}
+
+.x-resizable-pinned .x-combo-list-inner {
+ border-bottom-color: #98c0f4;
+}
+
+.x-combo-list-item {
+ border-color: #fff;
+}
+
+.x-combo-list .x-combo-selected {
+ border-color: #a3bae9 !important;
+ background-color: #dfe8f6;
+}
+
+.x-combo-list .x-toolbar {
+ border-top-color: #98c0f4;
+}
+
+.x-combo-list-small {
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+}
+.x-panel {
+ border-color: #99bbe8;
+}
+
+.x-panel-header {
+ color: #15428b;
+ font-weight: bold;
+ font-size: 11px;
+ font-family: tahoma, arial, verdana, sans-serif;
+ border-color: #99bbe8;
+ background-image: url(../images/default/panel/white-top-bottom.gif);
+}
+
+.x-panel-body {
+ border-color: #99bbe8;
+ background-color: #fff;
+}
+
+.x-panel-bbar .x-toolbar,
+.x-panel-tbar .x-toolbar {
+ border-color: #99bbe8;
+}
+
+.x-panel-tbar-noheader .x-toolbar,
+.x-panel-mc .x-panel-tbar .x-toolbar {
+ border-top-color: #99bbe8;
+}
+
+.x-panel-body-noheader,
+.x-panel-mc .x-panel-body {
+ border-top-color: #99bbe8;
+}
+
+.x-panel-tl .x-panel-header {
+ color: #15428b;
+ font: bold 11px tahoma, arial, verdana, sans-serif;
+}
+
+.x-panel-tc {
+ background-image: url(../images/default/panel/top-bottom.gif);
+}
+
+.x-panel-tl,
+.x-panel-tr,
+.x-panel-bl,
+.x-panel-br {
+ background-image: url(../images/default/panel/corners-sprite.gif);
+ border-bottom-color: #99bbe8;
+}
+
+.x-panel-bc {
+ background-image: url(../images/default/panel/top-bottom.gif);
+}
+
+.x-panel-mc {
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+ background-color: #dfe8f6;
+}
+
+.x-panel-ml {
+ background-color: #fff;
+ background-image: url(../images/default/panel/left-right.gif);
+}
+
+.x-panel-mr {
+ background-image: url(../images/default/panel/left-right.gif);
+}
+
+.x-tool {
+ background-image: url(../images/default/panel/tool-sprites.gif);
+}
+
+.x-panel-ghost {
+ background-color: #cbddf3;
+}
+
+.x-panel-ghost ul {
+ border-color: #99bbe8;
+}
+
+.x-panel-dd-spacer {
+ border-color: #99bbe8;
+}
+
+.x-panel-fbar td,
+.x-panel-fbar span,
+.x-panel-fbar input,
+.x-panel-fbar div,
+.x-panel-fbar select,
+.x-panel-fbar label {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+.x-window-proxy {
+ background-color: #c7dffc;
+ border-color: #99bbe8;
+}
+
+.x-window-tl .x-window-header {
+ color: #15428b;
+ font: bold 11px tahoma, arial, verdana, sans-serif;
+}
+
+.x-window-tc {
+ background-image: url(../images/default/window/top-bottom.png);
+}
+
+.x-window-tl {
+ background-image: url(../images/default/window/left-corners.png);
+}
+
+.x-window-tr {
+ background-image: url(../images/default/window/right-corners.png);
+}
+
+.x-window-bc {
+ background-image: url(../images/default/window/top-bottom.png);
+}
+
+.x-window-bl {
+ background-image: url(../images/default/window/left-corners.png);
+}
+
+.x-window-br {
+ background-image: url(../images/default/window/right-corners.png);
+}
+
+.x-window-mc {
+ border-color: #99bbe8;
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+ background-color: #dfe8f6;
+}
+
+.x-window-ml {
+ background-image: url(../images/default/window/left-right.png);
+}
+
+.x-window-mr {
+ background-image: url(../images/default/window/left-right.png);
+}
+
+.x-window-maximized .x-window-tc {
+ background-color: #fff;
+}
+
+.x-window-bbar .x-toolbar {
+ border-top-color: #99bbe8;
+}
+
+.x-panel-ghost .x-window-tl {
+ border-bottom-color: #99bbe8;
+}
+
+.x-panel-collapsed .x-window-tl {
+ border-bottom-color: #84a0c4;
+}
+
+.x-dlg-mask {
+ background-color: #ccc;
+}
+
+.x-window-plain .x-window-mc {
+ background-color: #ccd9e8;
+ border-color: #a3bae9 #dfe8f6 #dfe8f6 #a3bae9;
+}
+
+.x-window-plain .x-window-body {
+ border-color: #dfe8f6 #a3bae9 #a3bae9 #dfe8f6;
+}
+
+body.x-body-masked .x-window-plain .x-window-mc {
+ background-color: #ccd9e8;
+}
+.x-html-editor-wrap {
+ border-color: #a9bfd3;
+ background-color: #fff;
+}
+.x-html-editor-tb .x-btn-text {
+ background-image: url(../images/default/editor/tb-sprite.gif);
+}
+.x-panel-noborder .x-panel-header-noborder {
+ border-bottom-color: #99bbe8;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+ border-bottom-color: #99bbe8;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+ border-top-color: #99bbe8;
+}
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+ border-top-color: #99bbe8;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+ border-bottom-color: #99bbe8;
+}
+.x-border-layout-ct {
+ background-color: #dfe8f6;
+}
+
+.x-accordion-hd {
+ color: #222;
+ font-weight: normal;
+ background-image: url(../images/default/panel/light-hd.gif);
+}
+
+.x-layout-collapsed {
+ background-color: #d2e0f2;
+ border-color: #98c0f4;
+}
+
+.x-layout-collapsed-over {
+ background-color: #d9e8fb;
+}
+
+.x-layout-split-west .x-layout-mini {
+ background-image: url(../images/default/layout/mini-left.gif);
+}
+.x-layout-split-east .x-layout-mini {
+ background-image: url(../images/default/layout/mini-right.gif);
+}
+.x-layout-split-north .x-layout-mini {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+.x-layout-split-south .x-layout-mini {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-west .x-layout-mini {
+ background-image: url(../images/default/layout/mini-right.gif);
+}
+
+.x-layout-cmini-east .x-layout-mini {
+ background-image: url(../images/default/layout/mini-left.gif);
+}
+
+.x-layout-cmini-north .x-layout-mini {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-south .x-layout-mini {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+.x-progress-wrap {
+ border-color: #6593cf;
+}
+
+.x-progress-inner {
+ background-color: #e0e8f3;
+ background-image: url(../images/default/qtip/bg.gif);
+}
+
+.x-progress-bar {
+ background-color: #9cbfee;
+ background-image: url(../images/default/progress/progress-bg.gif);
+ border-top-color: #d1e4fd;
+ border-bottom-color: #7fa9e4;
+ border-right-color: #7fa9e4;
+}
+
+.x-progress-text {
+ font-size: 11px;
+ font-weight: bold;
+ color: #fff;
+}
+
+.x-progress-text-back {
+ color: #396095;
+}
+.x-list-header {
+ background-color: #f9f9f9;
+ background-image: url(../images/default/grid/grid3-hrow.gif);
+}
+
+.x-list-header-inner div em {
+ border-left-color: #ddd;
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-list-body dt em {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-list-over {
+ background-color: #eee;
+}
+
+.x-list-selected {
+ background-color: #dfe8f6;
+}
+
+.x-list-resizer {
+ border-left-color: #555;
+ border-right-color: #555;
+}
+
+.x-list-header-inner em.sort-asc,
+.x-list-header-inner em.sort-desc {
+ background-image: url(../images/default/grid/sort-hd.gif);
+ border-color: #99bbe8;
+}
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+ background-image: url(../images/default/slider/slider-bg.png);
+}
+
+.x-slider-horz .x-slider-thumb {
+ background-image: url(../images/default/slider/slider-thumb.png);
+}
+
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+ background-image: url(../images/default/slider/slider-v-bg.png);
+}
+
+.x-slider-vert .x-slider-thumb {
+ background-image: url(../images/default/slider/slider-v-thumb.png);
+}
+.x-window-dlg .ext-mb-text,
+.x-window-dlg .x-window-header-text {
+ font-size: 12px;
+}
+
+.x-window-dlg .ext-mb-textarea {
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-window-dlg .x-msg-box-wait {
+ background-image: url(../images/default/grid/loading.gif);
+}
+
+.x-window-dlg .ext-mb-info {
+ background-image: url(../images/default/window/icon-info.gif);
+}
+
+.x-window-dlg .ext-mb-warning {
+ background-image: url(../images/default/window/icon-warning.gif);
+}
+
+.x-window-dlg .ext-mb-question {
+ background-image: url(../images/default/window/icon-question.gif);
+}
+
+.x-window-dlg .ext-mb-error {
+ background-image: url(../images/default/window/icon-error.gif);
+}
diff --git a/deluge/ui/web/themes/css/xtheme-gray.css b/deluge/ui/web/themes/css/xtheme-gray.css
new file mode 100644
index 0000000..25bae0a
--- /dev/null
+++ b/deluge/ui/web/themes/css/xtheme-gray.css
@@ -0,0 +1,1791 @@
+/**
+ * Ext JS Library 3.4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+.ext-el-mask {
+ background-color: #ccc;
+}
+
+.ext-el-mask-msg {
+ border-color: #999;
+ background-color: #ddd;
+ background-image: url(../images/gray/panel/white-top-bottom.gif);
+ background-position: 0 -1px;
+}
+.ext-el-mask-msg div {
+ background-color: #eee;
+ border-color: #d0d0d0;
+ color: #222;
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-mask-loading div {
+ background-color: #fbfbfb;
+ background-image: url(../images/default/grid/loading.gif);
+}
+
+.x-item-disabled {
+ color: gray;
+}
+
+.x-item-disabled * {
+ color: gray !important;
+}
+
+.x-splitbar-proxy {
+ background-color: #aaa;
+}
+
+.x-color-palette a {
+ border-color: #fff;
+}
+
+.x-color-palette a:hover,
+.x-color-palette a.x-color-palette-sel {
+ border-color: #cfcfcf;
+ background-color: #eaeaea;
+}
+
+/*
+.x-color-palette em:hover, .x-color-palette span:hover{
+ background-color: #eaeaea;
+}
+*/
+
+.x-color-palette em {
+ border-color: #aca899;
+}
+
+.x-ie-shadow {
+ background-color: #777;
+}
+
+.x-shadow .xsmc {
+ background-image: url(../images/default/shadow-c.png);
+}
+
+.x-shadow .xsml,
+.x-shadow .xsmr {
+ background-image: url(../images/default/shadow-lr.png);
+}
+
+.x-shadow .xstl,
+.x-shadow .xstc,
+.x-shadow .xstr,
+.x-shadow .xsbl,
+.x-shadow .xsbc,
+.x-shadow .xsbr {
+ background-image: url(../images/default/shadow.png);
+}
+
+.loading-indicator {
+ font-size: 11px;
+ background-image: url(../images/default/grid/loading.gif);
+}
+
+.x-spotlight {
+ background-color: #ccc;
+}
+.x-tab-panel-header,
+.x-tab-panel-footer {
+ background-color: #eaeaea;
+ border-color: #d0d0d0;
+ overflow: hidden;
+ zoom: 1;
+}
+
+.x-tab-panel-header,
+.x-tab-panel-footer {
+ border-color: #d0d0d0;
+}
+
+ul.x-tab-strip-top {
+ background-color: #dbdbdb;
+ background-image: url(../images/gray/tabs/tab-strip-bg.gif);
+ border-bottom-color: #d0d0d0;
+}
+
+ul.x-tab-strip-bottom {
+ background-color: #dbdbdb;
+ background-image: url(../images/gray/tabs/tab-strip-btm-bg.gif);
+ border-top-color: #d0d0d0;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer,
+.x-tab-panel-footer-plain .x-tab-strip-spacer {
+ border-color: #d0d0d0;
+ background-color: #eaeaea;
+}
+
+.x-tab-strip span.x-tab-strip-text {
+ font: normal 11px tahoma, arial, helvetica;
+ color: #333;
+}
+
+.x-tab-strip-over span.x-tab-strip-text {
+ color: #111;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+ color: #333;
+ font-weight: bold;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+ color: #aaaaaa;
+}
+
+.x-tab-strip-top .x-tab-right,
+.x-tab-strip-top .x-tab-left,
+.x-tab-strip-top .x-tab-strip-inner {
+ background-image: url(../images/gray/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ background-image: url(../images/gray/tabs/tab-btm-inactive-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background-image: url(../images/gray/tabs/tab-btm-inactive-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-over .x-tab-left {
+ background-image: url(../images/gray/tabs/tab-btm-over-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-over .x-tab-right {
+ background-image: url(../images/gray/tabs/tab-btm-over-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background-image: url(../images/gray/tabs/tab-btm-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background-image: url(../images/gray/tabs/tab-btm-left-bg.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ background-image: url(../images/gray/tabs/tab-close.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover {
+ background-image: url(../images/gray/tabs/tab-close.gif);
+}
+
+.x-tab-panel-body {
+ border-color: #d0d0d0;
+ background-color: #fff;
+}
+
+.x-tab-panel-body-top {
+ border-top: 0 none;
+}
+
+.x-tab-panel-body-bottom {
+ border-bottom: 0 none;
+}
+
+.x-tab-scroller-left {
+ background-image: url(../images/gray/tabs/scroll-left.gif);
+ border-bottom-color: #d0d0d0;
+}
+
+.x-tab-scroller-left-over {
+ background-position: 0 0;
+}
+
+.x-tab-scroller-left-disabled {
+ background-position: -18px 0;
+ opacity: 0.5;
+ -moz-opacity: 0.5;
+ filter: alpha(opacity=50);
+ cursor: default;
+}
+
+.x-tab-scroller-right {
+ background-image: url(../images/gray/tabs/scroll-right.gif);
+ border-bottom-color: #d0d0d0;
+}
+
+.x-tab-panel-bbar .x-toolbar,
+.x-tab-panel-tbar .x-toolbar {
+ border-color: #d0d0d0;
+}
+.x-form-field {
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-text,
+textarea.x-form-field {
+ background-color: #fff;
+ background-image: url(../images/default/form/text-bg.gif);
+ border-color: #c1c1c1;
+}
+
+.x-form-select-one {
+ background-color: #fff;
+ border-color: #c1c1c1;
+}
+
+.x-form-check-group-label {
+ border-bottom: 1px solid #d0d0d0;
+ color: #333;
+}
+
+.x-editor .x-form-check-wrap {
+ background-color: #fff;
+}
+
+.x-form-field-wrap .x-form-trigger {
+ background-image: url(../images/gray/form/trigger.gif);
+ border-bottom-color: #b5b8c8;
+}
+
+.x-form-field-wrap .x-form-date-trigger {
+ background-image: url(../images/gray/form/date-trigger.gif);
+}
+
+.x-form-field-wrap .x-form-clear-trigger {
+ background-image: url(../images/gray/form/clear-trigger.gif);
+}
+
+.x-form-field-wrap .x-form-search-trigger {
+ background-image: url(../images/gray/form/search-trigger.gif);
+}
+
+.x-trigger-wrap-focus .x-form-trigger {
+ border-bottom-color: #777777;
+}
+
+.x-item-disabled .x-form-trigger-over {
+ border-bottom-color: #b5b8c8;
+}
+
+.x-item-disabled .x-form-trigger-click {
+ border-bottom-color: #b5b8c8;
+}
+
+.x-form-focus,
+textarea.x-form-focus {
+ border-color: #777777;
+}
+
+.x-form-invalid,
+textarea.x-form-invalid {
+ background-color: #fff;
+ background-image: url(../images/default/grid/invalid_line.gif);
+ border-color: #c30;
+}
+
+.ext-webkit .x-form-invalid {
+ background-color: #fee;
+ border-color: #ff7870;
+}
+
+.x-form-inner-invalid,
+textarea.x-form-inner-invalid {
+ background-color: #fff;
+ background-image: url(../images/default/grid/invalid_line.gif);
+}
+
+.x-form-grow-sizer {
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-item {
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-invalid-msg {
+ color: #c0272b;
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+ background-image: url(../images/default/shared/warning.gif);
+}
+
+.x-form-empty-field {
+ color: gray;
+}
+
+.x-small-editor .x-form-field {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.ext-webkit .x-small-editor .x-form-field {
+ font: normal 12px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-form-invalid-icon {
+ background-image: url(../images/default/form/exclamation.gif);
+}
+
+.x-fieldset {
+ border-color: #cccccc;
+}
+
+.x-fieldset legend {
+ font: bold 11px tahoma, arial, helvetica, sans-serif;
+ color: #777777;
+}
+.x-btn {
+ font: normal 11px tahoma, verdana, helvetica;
+}
+
+.x-btn button {
+ font: normal 11px arial, tahoma, verdana, helvetica;
+ color: #333;
+}
+
+.x-btn em {
+ font-style: normal;
+ font-weight: normal;
+}
+
+.x-btn-tl,
+.x-btn-tr,
+.x-btn-tc,
+.x-btn-ml,
+.x-btn-mr,
+.x-btn-mc,
+.x-btn-bl,
+.x-btn-br,
+.x-btn-bc {
+ background-image: url(../images/gray/button/btn.gif);
+}
+
+.x-btn-click .x-btn-text,
+.x-btn-menu-active .x-btn-text,
+.x-btn-pressed .x-btn-text {
+ color: #000;
+}
+
+.x-btn-disabled * {
+ color: gray !important;
+}
+
+.x-btn-mc em.x-btn-arrow {
+ background-image: url(../images/default/button/arrow.gif);
+}
+
+.x-btn-mc em.x-btn-split {
+ background-image: url(../images/default/button/s-arrow.gif);
+}
+
+.x-btn-over .x-btn-mc em.x-btn-split,
+.x-btn-click .x-btn-mc em.x-btn-split,
+.x-btn-menu-active .x-btn-mc em.x-btn-split,
+.x-btn-pressed .x-btn-mc em.x-btn-split {
+ background-image: url(../images/gray/button/s-arrow-o.gif);
+}
+
+.x-btn-mc em.x-btn-arrow-bottom {
+ background-image: url(../images/default/button/s-arrow-b-noline.gif);
+}
+
+.x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/default/button/s-arrow-b.gif);
+}
+
+.x-btn-over .x-btn-mc em.x-btn-split-bottom,
+.x-btn-click .x-btn-mc em.x-btn-split-bottom,
+.x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,
+.x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/gray/button/s-arrow-bo.gif);
+}
+
+.x-btn-group-header {
+ color: #666;
+}
+
+.x-btn-group-tc {
+ background-image: url(../images/gray/button/group-tb.gif);
+}
+
+.x-btn-group-tl {
+ background-image: url(../images/gray/button/group-cs.gif);
+}
+
+.x-btn-group-tr {
+ background-image: url(../images/gray/button/group-cs.gif);
+}
+
+.x-btn-group-bc {
+ background-image: url(../images/gray/button/group-tb.gif);
+}
+
+.x-btn-group-bl {
+ background-image: url(../images/gray/button/group-cs.gif);
+}
+
+.x-btn-group-br {
+ background-image: url(../images/gray/button/group-cs.gif);
+}
+
+.x-btn-group-ml {
+ background-image: url(../images/gray/button/group-lr.gif);
+}
+.x-btn-group-mr {
+ background-image: url(../images/gray/button/group-lr.gif);
+}
+
+.x-btn-group-notitle .x-btn-group-tc {
+ background-image: url(../images/gray/button/group-tb.gif);
+}
+.x-toolbar {
+ border-color: #d0d0d0;
+ background-color: #f0f0f0;
+ background-image: url(../images/gray/toolbar/bg.gif);
+}
+
+.x-toolbar td,
+.x-toolbar span,
+.x-toolbar input,
+.x-toolbar div,
+.x-toolbar select,
+.x-toolbar label {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-toolbar .x-item-disabled {
+ color: gray;
+}
+
+.x-toolbar .x-item-disabled * {
+ color: gray;
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split {
+ background-image: url(../images/default/button/s-arrow-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split {
+ background-image: url(../images/gray/button/s-arrow-o.gif);
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/default/button/s-arrow-b-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
+ background-image: url(../images/gray/button/s-arrow-bo.gif);
+}
+
+.x-toolbar .xtb-sep {
+ background-image: url(../images/default/grid/grid-split.gif);
+}
+
+.x-tbar-page-first {
+ background-image: url(../images/gray/grid/page-first.gif) !important;
+}
+
+.x-tbar-loading {
+ background-image: url(../images/gray/grid/refresh.gif) !important;
+}
+
+.x-tbar-page-last {
+ background-image: url(../images/gray/grid/page-last.gif) !important;
+}
+
+.x-tbar-page-next {
+ background-image: url(../images/gray/grid/page-next.gif) !important;
+}
+
+.x-tbar-page-prev {
+ background-image: url(../images/gray/grid/page-prev.gif) !important;
+}
+
+.x-item-disabled .x-tbar-loading {
+ background-image: url(../images/default/grid/loading.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-first {
+ background-image: url(../images/default/grid/page-first-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-last {
+ background-image: url(../images/default/grid/page-last-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-next {
+ background-image: url(../images/default/grid/page-next-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-prev {
+ background-image: url(../images/default/grid/page-prev-disabled.gif) !important;
+}
+
+.x-paging-info {
+ color: #444;
+}
+
+.x-toolbar-more-icon {
+ background-image: url(../images/gray/toolbar/more.gif) !important;
+}
+.x-resizable-handle {
+ background-color: #fff;
+}
+
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-west {
+ background-image: url(../images/gray/sizer/e-handle.gif);
+}
+
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-north {
+ background-image: url(../images/gray/sizer/s-handle.gif);
+}
+
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-north {
+ background-image: url(../images/gray/sizer/s-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+ background-image: url(../images/gray/sizer/se-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+ background-image: url(../images/gray/sizer/nw-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+ background-image: url(../images/gray/sizer/ne-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+ background-image: url(../images/gray/sizer/sw-handle.gif);
+}
+.x-resizable-proxy {
+ border-color: #565656;
+}
+.x-resizable-overlay {
+ background-color: #fff;
+}
+.x-grid3 {
+ background-color: #fff;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+ border-color: #d0d0d0;
+}
+
+.x-grid3-row td,
+.x-grid3-summary-row td {
+ font: normal 11px/13px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-hd-row td {
+ font: normal 11px/15px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-hd-row td {
+ border-left-color: #eee;
+ border-right-color: #d0d0d0;
+}
+
+.x-grid-row-loading {
+ background-color: #fff;
+ background-image: url(../images/default/shared/loading-balls.gif);
+}
+
+.x-grid3-row {
+ border-color: #ededed;
+ border-top-color: #fff;
+}
+
+.x-grid3-row-alt {
+ background-color: #fafafa;
+}
+
+.x-grid3-row-over {
+ border-color: #ddd;
+ background-color: #efefef;
+ background-image: url(../images/default/grid/row-over.gif);
+}
+
+.x-grid3-resize-proxy {
+ background-color: #777;
+}
+
+.x-grid3-resize-marker {
+ background-color: #777;
+}
+
+.x-grid3-header {
+ background-color: #f9f9f9;
+ background-image: url(../images/gray/grid/grid3-hrow2.gif);
+}
+
+.x-grid3-header-pop {
+ border-left-color: #d0d0d0;
+}
+
+.x-grid3-header-pop-inner {
+ border-left-color: #eee;
+ background-image: url(../images/default/grid/hd-pop.gif);
+}
+
+td.x-grid3-hd-over,
+td.sort-desc,
+td.sort-asc,
+td.x-grid3-hd-menu-open {
+ border-left-color: #acacac;
+ border-right-color: #acacac;
+}
+
+td.x-grid3-hd-over .x-grid3-hd-inner,
+td.sort-desc .x-grid3-hd-inner,
+td.sort-asc .x-grid3-hd-inner,
+td.x-grid3-hd-menu-open .x-grid3-hd-inner {
+ background-color: #f9f9f9;
+ background-image: url(../images/gray/grid/grid3-hrow-over2.gif);
+}
+
+.sort-asc .x-grid3-sort-icon {
+ background-image: url(../images/gray/grid/sort_asc.gif);
+}
+
+.sort-desc .x-grid3-sort-icon {
+ background-image: url(../images/gray/grid/sort_desc.gif);
+}
+
+.x-grid3-cell-text,
+.x-grid3-hd-text {
+ color: #000;
+}
+
+.x-grid3-split {
+ background-image: url(../images/default/grid/grid-split.gif);
+}
+
+.x-grid3-hd-text {
+ color: #333;
+}
+
+.x-dd-drag-proxy .x-grid3-hd-inner {
+ background-color: #f9f9f9;
+ background-image: url(../images/gray/grid/grid3-hrow-over2.gif);
+ border-color: #acacac;
+}
+
+.col-move-top {
+ background-image: url(../images/gray/grid/col-move-top.gif);
+}
+
+.col-move-bottom {
+ background-image: url(../images/gray/grid/col-move-bottom.gif);
+}
+
+.x-grid3-row-selected {
+ background-color: #cccccc !important;
+ background-image: none;
+ border-color: #acacac;
+}
+
+.x-grid3-cell-selected {
+ background-color: #cbcbcb !important;
+ color: #000;
+}
+
+.x-grid3-cell-selected span {
+ color: #000 !important;
+}
+
+.x-grid3-cell-selected .x-grid3-cell-text {
+ color: #000;
+}
+
+.x-grid3-locked td.x-grid3-row-marker,
+.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker {
+ background-color: #ebeadb !important;
+ background-image: url(../images/default/grid/grid-hrow.gif) !important;
+ color: #000;
+ border-top-color: #fff;
+ border-right-color: #6fa0df !important;
+}
+
+.x-grid3-locked td.x-grid3-row-marker div,
+.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div {
+ color: #333 !important;
+}
+
+.x-grid3-dirty-cell {
+ background-image: url(../images/default/grid/dirty.gif);
+}
+
+.x-grid3-topbar,
+.x-grid3-bottombar {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-bottombar .x-toolbar {
+ border-top-color: #a9bfd3;
+}
+
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif) !important;
+ color: #000 !important;
+}
+
+.x-props-grid .x-grid3-body .x-grid3-td-name {
+ background-color: #fff !important;
+ border-right-color: #eee;
+}
+
+.xg-hmenu-sort-asc .x-menu-item-icon {
+ background-image: url(../images/default/grid/hmenu-asc.gif);
+}
+
+.xg-hmenu-sort-desc .x-menu-item-icon {
+ background-image: url(../images/default/grid/hmenu-desc.gif);
+}
+
+.xg-hmenu-lock .x-menu-item-icon {
+ background-image: url(../images/default/grid/hmenu-lock.gif);
+}
+
+.xg-hmenu-unlock .x-menu-item-icon {
+ background-image: url(../images/default/grid/hmenu-unlock.gif);
+}
+
+.x-grid3-hd-btn {
+ background-color: #f9f9f9;
+ background-image: url(../images/gray/grid/grid3-hd-btn.gif);
+}
+
+.x-grid3-body .x-grid3-td-expander {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-row-expander {
+ background-image: url(../images/gray/grid/row-expand-sprite.gif);
+}
+
+.x-grid3-body .x-grid3-td-checker {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-row-checker,
+.x-grid3-hd-checker {
+ background-image: url(../images/default/grid/row-check-sprite.gif);
+}
+
+.x-grid3-body .x-grid3-td-numberer {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
+ color: #444;
+}
+
+.x-grid3-body .x-grid3-td-row-icon {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander {
+ background-image: url(../images/gray/grid/grid3-special-col-sel-bg.gif);
+}
+
+.x-grid3-check-col {
+ background-image: url(../images/default/menu/unchecked.gif);
+}
+
+.x-grid3-check-col-on {
+ background-image: url(../images/default/menu/checked.gif);
+}
+
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+ zoom: 1;
+}
+
+.x-grid-group-hd {
+ border-bottom-color: #d0d0d0;
+}
+
+.x-grid-group-hd div.x-grid-group-title {
+ background-image: url(../images/gray/grid/group-collapse.gif);
+ color: #5f5f5f;
+ font: bold 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title {
+ background-image: url(../images/gray/grid/group-expand.gif);
+}
+
+.x-group-by-icon {
+ background-image: url(../images/default/grid/group-by.gif);
+}
+
+.x-cols-icon {
+ background-image: url(../images/default/grid/columns.gif);
+}
+
+.x-show-groups-icon {
+ background-image: url(../images/default/grid/group-by.gif);
+}
+
+.x-grid-empty {
+ color: gray;
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell {
+ border-right-color: #ededed;
+}
+
+.x-grid-with-col-lines .x-grid3-row {
+ border-top-color: #ededed;
+}
+
+.x-grid-with-col-lines .x-grid3-row-selected {
+ border-top-color: #b9b9b9;
+}
+.x-pivotgrid .x-grid3-header-offset table td {
+ background: url(../images/gray/grid/grid3-hrow2.gif) repeat-x 50% 100%;
+ border-left: 1px solid;
+ border-right: 1px solid;
+ border-left-color: #d0d0d0;
+ border-right-color: #d0d0d0;
+}
+
+.x-pivotgrid .x-grid3-row-headers {
+ background-color: #f9f9f9;
+}
+
+.x-pivotgrid .x-grid3-row-headers table td {
+ background: #eee url(../images/default/grid/grid3-rowheader.gif) repeat-x
+ left top;
+ border-left: 1px solid;
+ border-right: 1px solid;
+ border-left-color: #eee;
+ border-right-color: #d0d0d0;
+ border-bottom: 1px solid;
+ border-bottom-color: #d0d0d0;
+ height: 18px;
+}
+.x-dd-drag-ghost {
+ color: #000;
+ font: normal 11px arial, helvetica, sans-serif;
+ border-color: #ddd #bbb #bbb #ddd;
+ background-color: #fff;
+}
+
+.x-dd-drop-nodrop .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-no.gif);
+}
+
+.x-dd-drop-ok .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-yes.gif);
+}
+
+.x-dd-drop-ok-add .x-dd-drop-icon {
+ background-image: url(../images/default/dd/drop-add.gif);
+}
+
+.x-view-selector {
+ background-color: #d6d6d6;
+ border-color: #888888;
+}
+.x-tree-node-expanded .x-tree-node-icon {
+ background-image: url(../images/default/tree/folder-open.gif);
+}
+
+.x-tree-node-leaf .x-tree-node-icon {
+ background-image: url(../images/default/tree/leaf.gif);
+}
+
+.x-tree-node-collapsed .x-tree-node-icon {
+ background-image: url(../images/default/tree/folder.gif);
+}
+
+.x-tree-node-loading .x-tree-node-icon {
+ background-image: url(../images/default/tree/loading.gif) !important;
+}
+
+.x-tree-node .x-tree-node-inline-icon {
+ background-image: none;
+}
+
+.x-tree-node-loading a span {
+ font-style: italic;
+ color: #444444;
+}
+
+.ext-ie .x-tree-node-el input {
+ width: 15px;
+ height: 15px;
+}
+
+.x-tree-lines .x-tree-elbow {
+ background-image: url(../images/default/tree/elbow.gif);
+}
+
+.x-tree-lines .x-tree-elbow-plus {
+ background-image: url(../images/default/tree/elbow-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-minus {
+ background-image: url(../images/default/tree/elbow-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end {
+ background-image: url(../images/default/tree/elbow-end.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-plus {
+ background-image: url(../images/gray/tree/elbow-end-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-minus {
+ background-image: url(../images/gray/tree/elbow-end-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-line {
+ background-image: url(../images/default/tree/elbow-line.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-plus {
+ background-image: url(../images/default/tree/elbow-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-minus {
+ background-image: url(../images/default/tree/elbow-minus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-plus {
+ background-image: url(../images/gray/tree/elbow-end-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-minus {
+ background-image: url(../images/gray/tree/elbow-end-minus-nl.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-plus {
+ background-image: url(../images/gray/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-minus {
+ background-image: url(../images/gray/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-plus {
+ background-image: url(../images/gray/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-minus {
+ background-image: url(../images/gray/tree/arrows.gif);
+}
+
+.x-tree-node {
+ color: #000;
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-tree-node a,
+.x-dd-drag-ghost a {
+ color: #000;
+}
+
+.x-tree-node a span,
+.x-dd-drag-ghost a span {
+ color: #000;
+}
+
+.x-tree-node .x-tree-node-disabled a span {
+ color: gray !important;
+}
+
+.x-tree-node div.x-tree-drag-insert-below {
+ border-bottom-color: #36c;
+}
+
+.x-tree-node div.x-tree-drag-insert-above {
+ border-top-color: #36c;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a {
+ border-bottom-color: #36c;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a {
+ border-top-color: #36c;
+}
+
+.x-tree-node .x-tree-drag-append a span {
+ background-color: #ddd;
+ border-color: gray;
+}
+
+.x-tree-node .x-tree-node-over {
+ background-color: #eee;
+}
+
+.x-tree-node .x-tree-selected {
+ background-color: #ddd;
+}
+
+.x-tree-drop-ok-append .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-add.gif);
+}
+
+.x-tree-drop-ok-above .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-over.gif);
+}
+
+.x-tree-drop-ok-below .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-under.gif);
+}
+
+.x-tree-drop-ok-between .x-dd-drop-icon {
+ background-image: url(../images/default/tree/drop-between.gif);
+}
+.x-date-picker {
+ border-color: #585858;
+ background-color: #fff;
+}
+
+.x-date-middle,
+.x-date-left,
+.x-date-right {
+ background-image: url(../images/gray/shared/hd-sprite.gif);
+ color: #fff;
+ font: bold 11px 'sans serif', tahoma, verdana, helvetica;
+}
+
+.x-date-middle .x-btn .x-btn-text {
+ color: #fff;
+}
+
+.x-date-middle .x-btn-mc em.x-btn-arrow {
+ background-image: url(../images/gray/toolbar/btn-arrow-light.gif);
+}
+
+.x-date-right a {
+ background-image: url(../images/gray/shared/right-btn.gif);
+}
+
+.x-date-left a {
+ background-image: url(../images/gray/shared/left-btn.gif);
+}
+
+.x-date-inner th {
+ background-color: #d8d8d8;
+ background-image: url(../images/gray/panel/white-top-bottom.gif);
+ border-bottom-color: #afafaf;
+ font: normal 10px arial, helvetica, tahoma, sans-serif;
+ color: #595959;
+}
+
+.x-date-inner td {
+ border-color: #fff;
+}
+
+.x-date-inner a {
+ font: normal 11px arial, helvetica, tahoma, sans-serif;
+ color: #000;
+}
+
+.x-date-inner .x-date-active {
+ color: #000;
+}
+
+.x-date-inner .x-date-selected a {
+ background-image: none;
+ background-color: #d8d8d8;
+ border-color: #dcdcdc;
+}
+
+.x-date-inner .x-date-today a {
+ border-color: darkred;
+}
+
+.x-date-inner .x-date-selected span {
+ font-weight: bold;
+}
+
+.x-date-inner .x-date-prevday a,
+.x-date-inner .x-date-nextday a {
+ color: #aaa;
+}
+
+.x-date-bottom {
+ border-top-color: #afafaf;
+ background-color: #d8d8d8;
+ background: #d8d8d8 url(../images/gray/panel/white-top-bottom.gif) 0 -2px;
+}
+
+.x-date-inner a:hover,
+.x-date-inner .x-date-disabled a:hover {
+ color: #000;
+ background-color: #d8d8d8;
+}
+
+.x-date-inner .x-date-disabled a {
+ background-color: #eee;
+ color: #bbb;
+}
+
+.x-date-mmenu {
+ background-color: #eee !important;
+}
+
+.x-date-mmenu .x-menu-item {
+ font-size: 10px;
+ color: #000;
+}
+
+.x-date-mp {
+ background-color: #fff;
+}
+
+.x-date-mp td {
+ font: normal 11px arial, helvetica, tahoma, sans-serif;
+}
+
+.x-date-mp-btns button {
+ background-color: #4e565f;
+ color: #fff;
+ border-color: #c0c0c0 #434343 #434343 #c0c0c0;
+ font: normal 11px arial, helvetica, tahoma, sans-serif;
+}
+
+.x-date-mp-btns {
+ background-color: #d8d8d8;
+ background: #d8d8d8 url(../images/gray/panel/white-top-bottom.gif) 0 -2px;
+}
+
+.x-date-mp-btns td {
+ border-top-color: #afafaf;
+}
+
+td.x-date-mp-month a,
+td.x-date-mp-year a {
+ color: #333;
+}
+
+td.x-date-mp-month a:hover,
+td.x-date-mp-year a:hover {
+ color: #333;
+ background-color: #fdfdfd;
+}
+
+td.x-date-mp-sel a {
+ background-color: #d8d8d8;
+ background: #d8d8d8 url(../images/gray/panel/white-top-bottom.gif) 0 -2px;
+ border-color: #dcdcdc;
+}
+
+.x-date-mp-ybtn a {
+ background-image: url(../images/gray/panel/tool-sprites.gif);
+}
+
+td.x-date-mp-sep {
+ border-right-color: #d7d7d7;
+}
+.x-tip .x-tip-close {
+ background-image: url(../images/gray/qtip/close.gif);
+}
+
+.x-tip .x-tip-tc,
+.x-tip .x-tip-tl,
+.x-tip .x-tip-tr,
+.x-tip .x-tip-bc,
+.x-tip .x-tip-bl,
+.x-tip .x-tip-br,
+.x-tip .x-tip-ml,
+.x-tip .x-tip-mr {
+ background-image: url(../images/gray/qtip/tip-sprite.gif);
+}
+
+.x-tip .x-tip-mc {
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+}
+.x-tip .x-tip-ml {
+ background-color: #fff;
+}
+
+.x-tip .x-tip-header-text {
+ font: bold 11px tahoma, arial, helvetica, sans-serif;
+ color: #444;
+}
+
+.x-tip .x-tip-body {
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+ color: #444;
+}
+
+.x-form-invalid-tip .x-tip-tc,
+.x-form-invalid-tip .x-tip-tl,
+.x-form-invalid-tip .x-tip-tr,
+.x-form-invalid-tip .x-tip-bc,
+.x-form-invalid-tip .x-tip-bl,
+.x-form-invalid-tip .x-tip-br,
+.x-form-invalid-tip .x-tip-ml,
+.x-form-invalid-tip .x-tip-mr {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+
+.x-form-invalid-tip .x-tip-body {
+ background-image: url(../images/default/form/exclamation.gif);
+}
+
+.x-tip-anchor {
+ background-image: url(../images/gray/qtip/tip-anchor-sprite.gif);
+}
+.x-menu {
+ background-color: #f0f0f0;
+ background-image: url(../images/default/menu/menu.gif);
+}
+
+.x-menu-floating {
+ border-color: #7d7d7d;
+}
+
+.x-menu-nosep {
+ background-image: none;
+}
+
+.x-menu-list-item {
+ font: normal 11px arial, tahoma, sans-serif;
+}
+
+.x-menu-item-arrow {
+ background-image: url(../images/gray/menu/menu-parent.gif);
+}
+
+.x-menu-sep {
+ background-color: #e0e0e0;
+ border-bottom-color: #fff;
+}
+
+a.x-menu-item {
+ color: #222;
+}
+
+.x-menu-item-active {
+ background-image: url(../images/gray/menu/item-over.gif);
+ background-color: #f1f1f1;
+ border-color: #acacac;
+}
+
+.x-menu-item-active a.x-menu-item {
+ border-color: #acacac;
+}
+
+.x-menu-check-item .x-menu-item-icon {
+ background-image: url(../images/default/menu/unchecked.gif);
+}
+
+.x-menu-item-checked .x-menu-item-icon {
+ background-image: url(../images/default/menu/checked.gif);
+}
+
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon {
+ background-image: url(../images/gray/menu/group-checked.gif);
+}
+
+.x-menu-group-item .x-menu-item-icon {
+ background-image: none;
+}
+
+.x-menu-plain {
+ background-color: #fff !important;
+}
+
+.x-menu .x-date-picker {
+ border-color: #afafaf;
+}
+
+.x-cycle-menu .x-menu-item-checked {
+ border-color: #b9b9b9 !important;
+ background-color: #f1f1f1;
+}
+
+.x-menu-scroller-top {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+
+.x-menu-scroller-bottom {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+.x-box-tl {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-tc {
+ background-image: url(../images/default/box/tb.gif);
+}
+
+.x-box-tr {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-ml {
+ background-image: url(../images/default/box/l.gif);
+}
+
+.x-box-mc {
+ background-color: #eee;
+ background-image: url(../images/default/box/tb.gif);
+ font-family: 'Myriad Pro', 'Myriad Web', 'Tahoma', 'Helvetica', 'Arial',
+ sans-serif;
+ color: #393939;
+ font-size: 12px;
+}
+
+.x-box-mc h3 {
+ font-size: 14px;
+ font-weight: bold;
+}
+
+.x-box-mr {
+ background-image: url(../images/default/box/r.gif);
+}
+
+.x-box-bl {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-bc {
+ background-image: url(../images/default/box/tb.gif);
+}
+
+.x-box-br {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-blue .x-box-bl,
+.x-box-blue .x-box-br,
+.x-box-blue .x-box-tl,
+.x-box-blue .x-box-tr {
+ background-image: url(../images/default/box/corners-blue.gif);
+}
+
+.x-box-blue .x-box-bc,
+.x-box-blue .x-box-mc,
+.x-box-blue .x-box-tc {
+ background-image: url(../images/default/box/tb-blue.gif);
+}
+
+.x-box-blue .x-box-mc {
+ background-color: #c3daf9;
+}
+
+.x-box-blue .x-box-mc h3 {
+ color: #17385b;
+}
+
+.x-box-blue .x-box-ml {
+ background-image: url(../images/default/box/l-blue.gif);
+}
+
+.x-box-blue .x-box-mr {
+ background-image: url(../images/default/box/r-blue.gif);
+}
+.x-combo-list {
+ border-color: #ccc;
+ background-color: #ddd;
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-combo-list-inner {
+ background-color: #fff;
+}
+
+.x-combo-list-hd {
+ font: bold 11px tahoma, arial, helvetica, sans-serif;
+ color: #333;
+ background-image: url(../images/default/layout/panel-title-light-bg.gif);
+ border-bottom-color: #bcbcbc;
+}
+
+.x-resizable-pinned .x-combo-list-inner {
+ border-bottom-color: #bebebe;
+}
+
+.x-combo-list-item {
+ border-color: #fff;
+}
+
+.x-combo-list .x-combo-selected {
+ border-color: #777 !important;
+ background-color: #f0f0f0;
+}
+
+.x-combo-list .x-toolbar {
+ border-top-color: #bcbcbc;
+}
+
+.x-combo-list-small {
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+}
+.x-panel {
+ border-color: #d0d0d0;
+}
+
+.x-panel-header {
+ color: #333;
+ font-weight: bold;
+ font-size: 11px;
+ font-family: tahoma, arial, verdana, sans-serif;
+ border-color: #d0d0d0;
+ background-image: url(../images/gray/panel/white-top-bottom.gif);
+}
+
+.x-panel-body {
+ border-color: #d0d0d0;
+ background-color: #fff;
+}
+
+.x-panel-bbar .x-toolbar,
+.x-panel-tbar .x-toolbar {
+ border-color: #d0d0d0;
+}
+
+.x-panel-tbar-noheader .x-toolbar,
+.x-panel-mc .x-panel-tbar .x-toolbar {
+ border-top-color: #d0d0d0;
+}
+
+.x-panel-body-noheader,
+.x-panel-mc .x-panel-body {
+ border-top-color: #d0d0d0;
+}
+
+.x-panel-tl .x-panel-header {
+ color: #333;
+ font: bold 11px tahoma, arial, verdana, sans-serif;
+}
+
+.x-panel-tc {
+ background-image: url(../images/gray/panel/top-bottom.gif);
+}
+
+.x-panel-tl,
+.x-panel-tr,
+.x-panel-bl,
+.x-panel-br {
+ background-image: url(../images/gray/panel/corners-sprite.gif);
+ border-bottom-color: #d0d0d0;
+}
+
+.x-panel-bc {
+ background-image: url(../images/gray/panel/top-bottom.gif);
+}
+
+.x-panel-mc {
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+ background-color: #f1f1f1;
+}
+
+.x-panel-ml {
+ background-color: #fff;
+ background-image: url(../images/gray/panel/left-right.gif);
+}
+
+.x-panel-mr {
+ background-image: url(../images/gray/panel/left-right.gif);
+}
+
+.x-tool {
+ background-image: url(../images/gray/panel/tool-sprites.gif);
+}
+
+.x-panel-ghost {
+ background-color: #f2f2f2;
+}
+
+.x-panel-ghost ul {
+ border-color: #d0d0d0;
+}
+
+.x-panel-dd-spacer {
+ border-color: #d0d0d0;
+}
+
+.x-panel-fbar td,
+.x-panel-fbar span,
+.x-panel-fbar input,
+.x-panel-fbar div,
+.x-panel-fbar select,
+.x-panel-fbar label {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+.x-window-proxy {
+ background-color: #fcfcfc;
+ border-color: #d0d0d0;
+}
+
+.x-window-tl .x-window-header {
+ color: #555;
+ font: bold 11px tahoma, arial, verdana, sans-serif;
+}
+
+.x-window-tc {
+ background-image: url(../images/gray/window/top-bottom.png);
+}
+
+.x-window-tl {
+ background-image: url(../images/gray/window/left-corners.png);
+}
+
+.x-window-tr {
+ background-image: url(../images/gray/window/right-corners.png);
+}
+
+.x-window-bc {
+ background-image: url(../images/gray/window/top-bottom.png);
+}
+
+.x-window-bl {
+ background-image: url(../images/gray/window/left-corners.png);
+}
+
+.x-window-br {
+ background-image: url(../images/gray/window/right-corners.png);
+}
+
+.x-window-mc {
+ border-color: #d0d0d0;
+ font: normal 11px tahoma, arial, helvetica, sans-serif;
+ background-color: #e8e8e8;
+}
+
+.x-window-ml {
+ background-image: url(../images/gray/window/left-right.png);
+}
+
+.x-window-mr {
+ background-image: url(../images/gray/window/left-right.png);
+}
+
+.x-window-maximized .x-window-tc {
+ background-color: #fff;
+}
+
+.x-window-bbar .x-toolbar {
+ border-top-color: #d0d0d0;
+}
+
+.x-panel-ghost .x-window-tl {
+ border-bottom-color: #d0d0d0;
+}
+
+.x-panel-collapsed .x-window-tl {
+ border-bottom-color: #d0d0d0;
+}
+
+.x-dlg-mask {
+ background-color: #ccc;
+}
+
+.x-window-plain .x-window-mc {
+ background-color: #e8e8e8;
+ border-color: #d0d0d0 #eeeeee #eeeeee #d0d0d0;
+}
+
+.x-window-plain .x-window-body {
+ border-color: #eeeeee #d0d0d0 #d0d0d0 #eeeeee;
+}
+
+body.x-body-masked .x-window-plain .x-window-mc {
+ background-color: #e4e4e4;
+}
+.x-html-editor-wrap {
+ border-color: #bcbcbc;
+ background-color: #fff;
+}
+.x-html-editor-tb .x-btn-text {
+ background-image: url(../images/default/editor/tb-sprite.gif);
+}
+.x-panel-noborder .x-panel-header-noborder {
+ border-bottom-color: #d0d0d0;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+ border-bottom-color: #d0d0d0;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+ border-top-color: #d0d0d0;
+}
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+ border-top-color: #d0d0d0;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+ border-bottom-color: #d0d0d0;
+}
+
+.x-border-layout-ct {
+ background-color: #f0f0f0;
+}
+.x-border-layout-ct {
+ background-color: #f0f0f0;
+}
+
+.x-accordion-hd {
+ color: #222;
+ font-weight: normal;
+ background-image: url(../images/gray/panel/light-hd.gif);
+}
+
+.x-layout-collapsed {
+ background-color: #dfdfdf;
+ border-color: #d0d0d0;
+}
+
+.x-layout-collapsed-over {
+ background-color: #e7e7e7;
+}
+
+.x-layout-split-west .x-layout-mini {
+ background-image: url(../images/default/layout/mini-left.gif);
+}
+.x-layout-split-east .x-layout-mini {
+ background-image: url(../images/default/layout/mini-right.gif);
+}
+.x-layout-split-north .x-layout-mini {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+.x-layout-split-south .x-layout-mini {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-west .x-layout-mini {
+ background-image: url(../images/default/layout/mini-right.gif);
+}
+
+.x-layout-cmini-east .x-layout-mini {
+ background-image: url(../images/default/layout/mini-left.gif);
+}
+
+.x-layout-cmini-north .x-layout-mini {
+ background-image: url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-south .x-layout-mini {
+ background-image: url(../images/default/layout/mini-top.gif);
+}
+.x-progress-wrap {
+ border-color: #8e8e8e;
+}
+
+.x-progress-inner {
+ background-color: #e7e7e7;
+ background-image: url(../images/gray/qtip/bg.gif);
+}
+
+.x-progress-bar {
+ background-color: #bcbcbc;
+ background-image: url(../images/gray/progress/progress-bg.gif);
+ border-top-color: #e2e2e2;
+ border-bottom-color: #a4a4a4;
+ border-right-color: #a4a4a4;
+}
+
+.x-progress-text {
+ font-size: 11px;
+ font-weight: bold;
+ color: #fff;
+}
+
+.x-progress-text-back {
+ color: #5f5f5f;
+}
+.x-list-header {
+ background-color: #f9f9f9;
+ background-image: url(../images/gray/grid/grid3-hrow2.gif);
+}
+
+.x-list-header-inner div em {
+ border-left-color: #ddd;
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-list-body dt em {
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-list-over {
+ background-color: #eee;
+}
+
+.x-list-selected {
+ background-color: #f0f0f0;
+}
+
+.x-list-resizer {
+ border-left-color: #555;
+ border-right-color: #555;
+}
+
+.x-list-header-inner em.sort-asc,
+.x-list-header-inner em.sort-desc {
+ background-image: url(../images/gray/grid/sort-hd.gif);
+ border-color: #d0d0d0;
+}
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+ background-image: url(../images/default/slider/slider-bg.png);
+}
+
+.x-slider-horz .x-slider-thumb {
+ background-image: url(../images/gray/slider/slider-thumb.png);
+}
+
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+ background-image: url(../images/default/slider/slider-v-bg.png);
+}
+
+.x-slider-vert .x-slider-thumb {
+ background-image: url(../images/gray/slider/slider-v-thumb.png);
+}
+.x-window-dlg .ext-mb-text,
+.x-window-dlg .x-window-header-text {
+ font-size: 12px;
+}
+
+.x-window-dlg .ext-mb-textarea {
+ font: normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-window-dlg .x-msg-box-wait {
+ background-image: url(../images/default/grid/loading.gif);
+}
+
+.x-window-dlg .ext-mb-info {
+ background-image: url(../images/gray/window/icon-info.gif);
+}
+
+.x-window-dlg .ext-mb-warning {
+ background-image: url(../images/gray/window/icon-warning.gif);
+}
+
+.x-window-dlg .ext-mb-question {
+ background-image: url(../images/gray/window/icon-question.gif);
+}
+
+.x-window-dlg .ext-mb-error {
+ background-image: url(../images/gray/window/icon-error.gif);
+}
diff --git a/deluge/ui/web/themes/images/access/box/corners-blue.gif b/deluge/ui/web/themes/images/access/box/corners-blue.gif
new file mode 100644
index 0000000..fa419b5
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/box/corners-blue.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/box/corners.gif b/deluge/ui/web/themes/images/access/box/corners.gif
new file mode 100644
index 0000000..8aa8cae
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/box/corners.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/box/l-blue.gif b/deluge/ui/web/themes/images/access/box/l-blue.gif
new file mode 100644
index 0000000..5ed7f00
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/box/l-blue.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/box/l.gif b/deluge/ui/web/themes/images/access/box/l.gif
new file mode 100644
index 0000000..0160f97
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/box/l.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/box/r-blue.gif b/deluge/ui/web/themes/images/access/box/r-blue.gif
new file mode 100644
index 0000000..3ea5cae
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/box/r-blue.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/box/r.gif b/deluge/ui/web/themes/images/access/box/r.gif
new file mode 100644
index 0000000..34237f6
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/box/r.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/box/tb-blue.gif b/deluge/ui/web/themes/images/access/box/tb-blue.gif
new file mode 100644
index 0000000..4b1382c
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/box/tb-blue.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/box/tb.gif b/deluge/ui/web/themes/images/access/box/tb.gif
new file mode 100644
index 0000000..435889b
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/box/tb.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/arrow.gif b/deluge/ui/web/themes/images/access/button/arrow.gif
new file mode 100644
index 0000000..087b450
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/arrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/btn.gif b/deluge/ui/web/themes/images/access/button/btn.gif
new file mode 100644
index 0000000..3e705ba
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/group-cs.gif b/deluge/ui/web/themes/images/access/button/group-cs.gif
new file mode 100644
index 0000000..aaf0d46
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/group-cs.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/group-lr.gif b/deluge/ui/web/themes/images/access/button/group-lr.gif
new file mode 100644
index 0000000..374ea75
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/group-lr.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/group-tb.gif b/deluge/ui/web/themes/images/access/button/group-tb.gif
new file mode 100644
index 0000000..50a9972
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/group-tb.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/s-arrow-b-noline.gif b/deluge/ui/web/themes/images/access/button/s-arrow-b-noline.gif
new file mode 100644
index 0000000..644e9f3
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/s-arrow-b-noline.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/s-arrow-b.gif b/deluge/ui/web/themes/images/access/button/s-arrow-b.gif
new file mode 100644
index 0000000..ba55d0a
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/s-arrow-b.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/s-arrow-bo.gif b/deluge/ui/web/themes/images/access/button/s-arrow-bo.gif
new file mode 100644
index 0000000..c672b60
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/s-arrow-bo.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/s-arrow-noline.gif b/deluge/ui/web/themes/images/access/button/s-arrow-noline.gif
new file mode 100644
index 0000000..f3cd351
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/s-arrow-noline.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/s-arrow-o.gif b/deluge/ui/web/themes/images/access/button/s-arrow-o.gif
new file mode 100644
index 0000000..4bdafd0
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/s-arrow-o.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/button/s-arrow.gif b/deluge/ui/web/themes/images/access/button/s-arrow.gif
new file mode 100644
index 0000000..a77be7f
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/button/s-arrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/editor/tb-sprite.gif b/deluge/ui/web/themes/images/access/editor/tb-sprite.gif
new file mode 100644
index 0000000..bd4011d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/editor/tb-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/checkbox.gif b/deluge/ui/web/themes/images/access/form/checkbox.gif
new file mode 100644
index 0000000..835b346
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/checkbox.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/clear-trigger.gif b/deluge/ui/web/themes/images/access/form/clear-trigger.gif
new file mode 100644
index 0000000..9bfd184
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/clear-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/clear-trigger.psd b/deluge/ui/web/themes/images/access/form/clear-trigger.psd
new file mode 100644
index 0000000..fcd7944
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/clear-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/date-trigger.gif b/deluge/ui/web/themes/images/access/form/date-trigger.gif
new file mode 100644
index 0000000..048506d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/date-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/date-trigger.psd b/deluge/ui/web/themes/images/access/form/date-trigger.psd
new file mode 100644
index 0000000..d9f9be1
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/date-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/error-tip-corners.gif b/deluge/ui/web/themes/images/access/form/error-tip-corners.gif
new file mode 100644
index 0000000..6ea4c38
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/error-tip-corners.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/exclamation.gif b/deluge/ui/web/themes/images/access/form/exclamation.gif
new file mode 100644
index 0000000..daa88b8
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/exclamation.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/radio.gif b/deluge/ui/web/themes/images/access/form/radio.gif
new file mode 100644
index 0000000..36bb91d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/radio.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/search-trigger.gif b/deluge/ui/web/themes/images/access/form/search-trigger.gif
new file mode 100644
index 0000000..ab8b3b4
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/search-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/search-trigger.psd b/deluge/ui/web/themes/images/access/form/search-trigger.psd
new file mode 100644
index 0000000..4f92b72
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/search-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/text-bg.gif b/deluge/ui/web/themes/images/access/form/text-bg.gif
new file mode 100644
index 0000000..4ce90bb
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/text-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/trigger-tpl.gif b/deluge/ui/web/themes/images/access/form/trigger-tpl.gif
new file mode 100644
index 0000000..2574ead
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/trigger-tpl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/trigger.gif b/deluge/ui/web/themes/images/access/form/trigger.gif
new file mode 100644
index 0000000..bd25572
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/form/trigger.psd b/deluge/ui/web/themes/images/access/form/trigger.psd
new file mode 100644
index 0000000..c078133
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/form/trigger.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/arrow-left-white.gif b/deluge/ui/web/themes/images/access/grid/arrow-left-white.gif
new file mode 100644
index 0000000..63088f5
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/arrow-left-white.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/arrow-right-white.gif b/deluge/ui/web/themes/images/access/grid/arrow-right-white.gif
new file mode 100644
index 0000000..e9e0678
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/arrow-right-white.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/col-move-bottom.gif b/deluge/ui/web/themes/images/access/grid/col-move-bottom.gif
new file mode 100644
index 0000000..cc1e473
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/col-move-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/col-move-top.gif b/deluge/ui/web/themes/images/access/grid/col-move-top.gif
new file mode 100644
index 0000000..58ff32c
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/col-move-top.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/columns.gif b/deluge/ui/web/themes/images/access/grid/columns.gif
new file mode 100644
index 0000000..2d3a823
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/columns.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/dirty.gif b/deluge/ui/web/themes/images/access/grid/dirty.gif
new file mode 100644
index 0000000..d524ee5
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/dirty.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/done.gif b/deluge/ui/web/themes/images/access/grid/done.gif
new file mode 100644
index 0000000..a937cb2
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/done.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/drop-no.gif b/deluge/ui/web/themes/images/access/grid/drop-no.gif
new file mode 100644
index 0000000..31a332b
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/drop-no.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/drop-yes.gif b/deluge/ui/web/themes/images/access/grid/drop-yes.gif
new file mode 100644
index 0000000..926010e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/drop-yes.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/footer-bg.gif b/deluge/ui/web/themes/images/access/grid/footer-bg.gif
new file mode 100644
index 0000000..126120f
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/footer-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid-blue-hd.gif b/deluge/ui/web/themes/images/access/grid/grid-blue-hd.gif
new file mode 100644
index 0000000..862094e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid-blue-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid-blue-split.gif b/deluge/ui/web/themes/images/access/grid/grid-blue-split.gif
new file mode 100644
index 0000000..1b0bae3
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid-blue-split.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid-hrow.gif b/deluge/ui/web/themes/images/access/grid/grid-hrow.gif
new file mode 100644
index 0000000..6374104
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid-hrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid-loading.gif b/deluge/ui/web/themes/images/access/grid/grid-loading.gif
new file mode 100644
index 0000000..d112c54
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid-loading.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid-split.gif b/deluge/ui/web/themes/images/access/grid/grid-split.gif
new file mode 100644
index 0000000..c76a16e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid-split.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid-vista-hd.gif b/deluge/ui/web/themes/images/access/grid/grid-vista-hd.gif
new file mode 100644
index 0000000..d097263
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid-vista-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid3-hd-btn.gif b/deluge/ui/web/themes/images/access/grid/grid3-hd-btn.gif
new file mode 100644
index 0000000..9ecd650
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid3-hd-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid3-hrow-over.gif b/deluge/ui/web/themes/images/access/grid/grid3-hrow-over.gif
new file mode 100644
index 0000000..0405f6c
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid3-hrow-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid3-hrow.gif b/deluge/ui/web/themes/images/access/grid/grid3-hrow.gif
new file mode 100644
index 0000000..509737a
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid3-hrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid3-special-col-bg.gif b/deluge/ui/web/themes/images/access/grid/grid3-special-col-bg.gif
new file mode 100644
index 0000000..8ec57f5
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid3-special-col-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/grid3-special-col-sel-bg.gif b/deluge/ui/web/themes/images/access/grid/grid3-special-col-sel-bg.gif
new file mode 100644
index 0000000..93a9ca6
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/grid3-special-col-sel-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/group-by.gif b/deluge/ui/web/themes/images/access/grid/group-by.gif
new file mode 100644
index 0000000..d6075bb
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/group-by.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/group-collapse.gif b/deluge/ui/web/themes/images/access/grid/group-collapse.gif
new file mode 100644
index 0000000..9bd255e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/group-collapse.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/group-expand-sprite.gif b/deluge/ui/web/themes/images/access/grid/group-expand-sprite.gif
new file mode 100644
index 0000000..f230489
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/group-expand-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/group-expand.gif b/deluge/ui/web/themes/images/access/grid/group-expand.gif
new file mode 100644
index 0000000..fd22e6b
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/group-expand.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/hd-pop.gif b/deluge/ui/web/themes/images/access/grid/hd-pop.gif
new file mode 100644
index 0000000..eb8ba79
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/hd-pop.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-asc.gif b/deluge/ui/web/themes/images/access/grid/hmenu-asc.gif
new file mode 100644
index 0000000..8917e0e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/hmenu-asc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-desc.gif b/deluge/ui/web/themes/images/access/grid/hmenu-desc.gif
new file mode 100644
index 0000000..f26b7c2
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/hmenu-desc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-lock.gif b/deluge/ui/web/themes/images/access/grid/hmenu-lock.gif
new file mode 100644
index 0000000..1596126
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/hmenu-lock.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-lock.png b/deluge/ui/web/themes/images/access/grid/hmenu-lock.png
new file mode 100644
index 0000000..194756e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/hmenu-lock.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-unlock.gif b/deluge/ui/web/themes/images/access/grid/hmenu-unlock.gif
new file mode 100644
index 0000000..af59cf9
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/hmenu-unlock.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png b/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png
new file mode 100644
index 0000000..435bd74
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/invalid_line.gif b/deluge/ui/web/themes/images/access/grid/invalid_line.gif
new file mode 100644
index 0000000..025cffc
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/invalid_line.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/loading.gif b/deluge/ui/web/themes/images/access/grid/loading.gif
new file mode 100644
index 0000000..e846e1d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/loading.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/mso-hd.gif b/deluge/ui/web/themes/images/access/grid/mso-hd.gif
new file mode 100644
index 0000000..669f3cf
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/mso-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/nowait.gif b/deluge/ui/web/themes/images/access/grid/nowait.gif
new file mode 100644
index 0000000..4c5862c
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/nowait.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/page-first-disabled.gif b/deluge/ui/web/themes/images/access/grid/page-first-disabled.gif
new file mode 100644
index 0000000..e4df7a7
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/page-first-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/page-first.gif b/deluge/ui/web/themes/images/access/grid/page-first.gif
new file mode 100644
index 0000000..aa0a822
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/page-first.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/page-last-disabled.gif b/deluge/ui/web/themes/images/access/grid/page-last-disabled.gif
new file mode 100644
index 0000000..67fee75
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/page-last-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/page-last.gif b/deluge/ui/web/themes/images/access/grid/page-last.gif
new file mode 100644
index 0000000..e0cf111
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/page-last.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/page-next-disabled.gif b/deluge/ui/web/themes/images/access/grid/page-next-disabled.gif
new file mode 100644
index 0000000..e3e8e87
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/page-next-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/page-next.gif b/deluge/ui/web/themes/images/access/grid/page-next.gif
new file mode 100644
index 0000000..69899c0
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/page-next.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/page-prev-disabled.gif b/deluge/ui/web/themes/images/access/grid/page-prev-disabled.gif
new file mode 100644
index 0000000..0f94bf7
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/page-prev-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/page-prev.gif b/deluge/ui/web/themes/images/access/grid/page-prev.gif
new file mode 100644
index 0000000..289b126
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/page-prev.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/pick-button.gif b/deluge/ui/web/themes/images/access/grid/pick-button.gif
new file mode 100644
index 0000000..6957924
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/pick-button.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/refresh.gif b/deluge/ui/web/themes/images/access/grid/refresh.gif
new file mode 100644
index 0000000..8435d1e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/refresh.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/row-check-sprite.gif b/deluge/ui/web/themes/images/access/grid/row-check-sprite.gif
new file mode 100644
index 0000000..6101164
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/row-check-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/row-expand-sprite.gif b/deluge/ui/web/themes/images/access/grid/row-expand-sprite.gif
new file mode 100644
index 0000000..6f4d874
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/row-expand-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/row-over.gif b/deluge/ui/web/themes/images/access/grid/row-over.gif
new file mode 100644
index 0000000..b288e38
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/row-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/row-sel.gif b/deluge/ui/web/themes/images/access/grid/row-sel.gif
new file mode 100644
index 0000000..98209e6
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/row-sel.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/sort-hd.gif b/deluge/ui/web/themes/images/access/grid/sort-hd.gif
new file mode 100644
index 0000000..681628f
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/sort-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/sort_asc.gif b/deluge/ui/web/themes/images/access/grid/sort_asc.gif
new file mode 100644
index 0000000..371f5e4
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/sort_asc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/sort_desc.gif b/deluge/ui/web/themes/images/access/grid/sort_desc.gif
new file mode 100644
index 0000000..000e363
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/sort_desc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/wait.gif b/deluge/ui/web/themes/images/access/grid/wait.gif
new file mode 100644
index 0000000..471c1a4
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/grid/wait.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/menu/checked.gif b/deluge/ui/web/themes/images/access/menu/checked.gif
new file mode 100644
index 0000000..fad5893
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/menu/checked.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/menu/group-checked.gif b/deluge/ui/web/themes/images/access/menu/group-checked.gif
new file mode 100644
index 0000000..d8b08f5
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/menu/group-checked.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/menu/item-over.gif b/deluge/ui/web/themes/images/access/menu/item-over.gif
new file mode 100644
index 0000000..0167839
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/menu/item-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/menu/menu-parent.gif b/deluge/ui/web/themes/images/access/menu/menu-parent.gif
new file mode 100644
index 0000000..49286cd
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/menu/menu-parent.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/menu/menu.gif b/deluge/ui/web/themes/images/access/menu/menu.gif
new file mode 100644
index 0000000..9bb3960
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/menu/menu.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/menu/unchecked.gif b/deluge/ui/web/themes/images/access/menu/unchecked.gif
new file mode 100644
index 0000000..43823e5
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/menu/unchecked.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/corners-sprite.gif b/deluge/ui/web/themes/images/access/panel/corners-sprite.gif
new file mode 100644
index 0000000..43e2862
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/corners-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/left-right.gif b/deluge/ui/web/themes/images/access/panel/left-right.gif
new file mode 100644
index 0000000..51850b7
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/left-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/light-hd.gif b/deluge/ui/web/themes/images/access/panel/light-hd.gif
new file mode 100644
index 0000000..660bedb
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/light-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/tool-sprite-tpl.gif b/deluge/ui/web/themes/images/access/panel/tool-sprite-tpl.gif
new file mode 100644
index 0000000..e647867
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/tool-sprite-tpl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/tool-sprites.gif b/deluge/ui/web/themes/images/access/panel/tool-sprites.gif
new file mode 100644
index 0000000..a3ffe58
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/tool-sprites.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/tools-sprites-trans.gif b/deluge/ui/web/themes/images/access/panel/tools-sprites-trans.gif
new file mode 100644
index 0000000..ead931e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/tools-sprites-trans.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/top-bottom.gif b/deluge/ui/web/themes/images/access/panel/top-bottom.gif
new file mode 100644
index 0000000..6b2649d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/top-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/white-corners-sprite.gif b/deluge/ui/web/themes/images/access/panel/white-corners-sprite.gif
new file mode 100644
index 0000000..22d4bba
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/white-corners-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/white-left-right.gif b/deluge/ui/web/themes/images/access/panel/white-left-right.gif
new file mode 100644
index 0000000..51850b7
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/white-left-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/panel/white-top-bottom.gif b/deluge/ui/web/themes/images/access/panel/white-top-bottom.gif
new file mode 100644
index 0000000..08f8fae
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/panel/white-top-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/progress/progress-bg.gif b/deluge/ui/web/themes/images/access/progress/progress-bg.gif
new file mode 100644
index 0000000..55629b1
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/progress/progress-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/qtip/close.gif b/deluge/ui/web/themes/images/access/qtip/close.gif
new file mode 100644
index 0000000..69ab915
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/qtip/close.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/qtip/tip-anchor-sprite.gif b/deluge/ui/web/themes/images/access/qtip/tip-anchor-sprite.gif
new file mode 100644
index 0000000..f46d31d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/qtip/tip-anchor-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/qtip/tip-sprite.gif b/deluge/ui/web/themes/images/access/qtip/tip-sprite.gif
new file mode 100644
index 0000000..9f6a629
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/qtip/tip-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/shared/glass-bg.gif b/deluge/ui/web/themes/images/access/shared/glass-bg.gif
new file mode 100644
index 0000000..ed3c886
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/shared/glass-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/shared/hd-sprite.gif b/deluge/ui/web/themes/images/access/shared/hd-sprite.gif
new file mode 100644
index 0000000..446be92
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/shared/hd-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/shared/left-btn.gif b/deluge/ui/web/themes/images/access/shared/left-btn.gif
new file mode 100644
index 0000000..0622439
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/shared/left-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/shared/right-btn.gif b/deluge/ui/web/themes/images/access/shared/right-btn.gif
new file mode 100644
index 0000000..5e3215d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/shared/right-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/e-handle-dark.gif b/deluge/ui/web/themes/images/access/sizer/e-handle-dark.gif
new file mode 100644
index 0000000..70aad3f
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/e-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/e-handle.gif b/deluge/ui/web/themes/images/access/sizer/e-handle.gif
new file mode 100644
index 0000000..52c045e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/e-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/ne-handle-dark.gif b/deluge/ui/web/themes/images/access/sizer/ne-handle-dark.gif
new file mode 100644
index 0000000..3a30ca2
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/ne-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/ne-handle.gif b/deluge/ui/web/themes/images/access/sizer/ne-handle.gif
new file mode 100644
index 0000000..e48f9f9
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/ne-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/nw-handle-dark.gif b/deluge/ui/web/themes/images/access/sizer/nw-handle-dark.gif
new file mode 100644
index 0000000..5ea8b51
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/nw-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/nw-handle.gif b/deluge/ui/web/themes/images/access/sizer/nw-handle.gif
new file mode 100644
index 0000000..65d5cc2
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/nw-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/s-handle-dark.gif b/deluge/ui/web/themes/images/access/sizer/s-handle-dark.gif
new file mode 100644
index 0000000..421b534
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/s-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/s-handle.gif b/deluge/ui/web/themes/images/access/sizer/s-handle.gif
new file mode 100644
index 0000000..2b635de
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/s-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/se-handle-dark.gif b/deluge/ui/web/themes/images/access/sizer/se-handle-dark.gif
new file mode 100644
index 0000000..881a5c4
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/se-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/se-handle.gif b/deluge/ui/web/themes/images/access/sizer/se-handle.gif
new file mode 100644
index 0000000..5f1e3b8
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/se-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/square.gif b/deluge/ui/web/themes/images/access/sizer/square.gif
new file mode 100644
index 0000000..4dc5a2d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/square.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/sw-handle-dark.gif b/deluge/ui/web/themes/images/access/sizer/sw-handle-dark.gif
new file mode 100644
index 0000000..030d8f8
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/sw-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/sizer/sw-handle.gif b/deluge/ui/web/themes/images/access/sizer/sw-handle.gif
new file mode 100644
index 0000000..79bcb84
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/sizer/sw-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/slider/slider-bg.png b/deluge/ui/web/themes/images/access/slider/slider-bg.png
new file mode 100644
index 0000000..d645fa8
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/slider/slider-bg.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/slider/slider-thumb.png b/deluge/ui/web/themes/images/access/slider/slider-thumb.png
new file mode 100644
index 0000000..99e0e14
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/slider/slider-thumb.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/slider/slider-v-bg.png b/deluge/ui/web/themes/images/access/slider/slider-v-bg.png
new file mode 100644
index 0000000..6944f9e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/slider/slider-v-bg.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/slider/slider-v-thumb.png b/deluge/ui/web/themes/images/access/slider/slider-v-thumb.png
new file mode 100644
index 0000000..cfae8cd
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/slider/slider-v-thumb.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/scroll-left.gif b/deluge/ui/web/themes/images/access/tabs/scroll-left.gif
new file mode 100644
index 0000000..71a2e88
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/scroll-left.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/scroll-right.gif b/deluge/ui/web/themes/images/access/tabs/scroll-right.gif
new file mode 100644
index 0000000..8f3d659
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/scroll-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/tab-btm-inactive-left-bg.gif b/deluge/ui/web/themes/images/access/tabs/tab-btm-inactive-left-bg.gif
new file mode 100644
index 0000000..687af2b
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/tab-btm-inactive-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/tab-btm-inactive-right-bg.gif b/deluge/ui/web/themes/images/access/tabs/tab-btm-inactive-right-bg.gif
new file mode 100644
index 0000000..3c1b3eb
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/tab-btm-inactive-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/tab-btm-left-bg.gif b/deluge/ui/web/themes/images/access/tabs/tab-btm-left-bg.gif
new file mode 100644
index 0000000..e5f827a
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/tab-btm-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/tab-btm-right-bg.gif b/deluge/ui/web/themes/images/access/tabs/tab-btm-right-bg.gif
new file mode 100644
index 0000000..2551f4c
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/tab-btm-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/tab-close.gif b/deluge/ui/web/themes/images/access/tabs/tab-close.gif
new file mode 100644
index 0000000..ef9a7c2
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/tab-close.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/tab-strip-bg.gif b/deluge/ui/web/themes/images/access/tabs/tab-strip-bg.gif
new file mode 100644
index 0000000..fc1fdcd
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/tab-strip-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/tab-strip-btm-bg.gif b/deluge/ui/web/themes/images/access/tabs/tab-strip-btm-bg.gif
new file mode 100644
index 0000000..a151553
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/tab-strip-btm-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tabs/tabs-sprite.gif b/deluge/ui/web/themes/images/access/tabs/tabs-sprite.gif
new file mode 100644
index 0000000..8194001
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tabs/tabs-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/bg.gif b/deluge/ui/web/themes/images/access/toolbar/bg.gif
new file mode 100644
index 0000000..b67a54e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/btn-arrow-light.gif b/deluge/ui/web/themes/images/access/toolbar/btn-arrow-light.gif
new file mode 100644
index 0000000..b0e24b5
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/btn-arrow-light.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/btn-arrow.gif b/deluge/ui/web/themes/images/access/toolbar/btn-arrow.gif
new file mode 100644
index 0000000..8acb460
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/btn-arrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/btn-over-bg.gif b/deluge/ui/web/themes/images/access/toolbar/btn-over-bg.gif
new file mode 100644
index 0000000..ee2dd98
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/btn-over-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/gray-bg.gif b/deluge/ui/web/themes/images/access/toolbar/gray-bg.gif
new file mode 100644
index 0000000..bd49438
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/gray-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/more.gif b/deluge/ui/web/themes/images/access/toolbar/more.gif
new file mode 100644
index 0000000..4f01020
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/more.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/s-arrow-bo.gif b/deluge/ui/web/themes/images/access/toolbar/s-arrow-bo.gif
new file mode 100644
index 0000000..1505edd
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/s-arrow-bo.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/tb-btn-sprite.gif b/deluge/ui/web/themes/images/access/toolbar/tb-btn-sprite.gif
new file mode 100644
index 0000000..19bbef3
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/tb-btn-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/tb-xl-btn-sprite.gif b/deluge/ui/web/themes/images/access/toolbar/tb-xl-btn-sprite.gif
new file mode 100644
index 0000000..1bc0420
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/tb-xl-btn-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/toolbar/tb-xl-sep.gif b/deluge/ui/web/themes/images/access/toolbar/tb-xl-sep.gif
new file mode 100644
index 0000000..30555ee
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/toolbar/tb-xl-sep.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/arrows.gif b/deluge/ui/web/themes/images/access/tree/arrows.gif
new file mode 100644
index 0000000..2e635eb
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/arrows.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/drop-add.gif b/deluge/ui/web/themes/images/access/tree/drop-add.gif
new file mode 100644
index 0000000..b22cd14
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/drop-add.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/drop-between.gif b/deluge/ui/web/themes/images/access/tree/drop-between.gif
new file mode 100644
index 0000000..5c6c09d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/drop-between.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/drop-no.gif b/deluge/ui/web/themes/images/access/tree/drop-no.gif
new file mode 100644
index 0000000..9d9c6a9
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/drop-no.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/drop-over.gif b/deluge/ui/web/themes/images/access/tree/drop-over.gif
new file mode 100644
index 0000000..30d1ca7
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/drop-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/drop-under.gif b/deluge/ui/web/themes/images/access/tree/drop-under.gif
new file mode 100644
index 0000000..85f66b1
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/drop-under.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/drop-yes.gif b/deluge/ui/web/themes/images/access/tree/drop-yes.gif
new file mode 100644
index 0000000..8aacb30
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/drop-yes.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-end-minus-nl.gif b/deluge/ui/web/themes/images/access/tree/elbow-end-minus-nl.gif
new file mode 100644
index 0000000..b4ae595
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-end-minus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-end-minus.gif b/deluge/ui/web/themes/images/access/tree/elbow-end-minus.gif
new file mode 100644
index 0000000..514cf3e
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-end-minus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-end-plus-nl.gif b/deluge/ui/web/themes/images/access/tree/elbow-end-plus-nl.gif
new file mode 100644
index 0000000..6af2e29
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-end-plus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-end-plus.gif b/deluge/ui/web/themes/images/access/tree/elbow-end-plus.gif
new file mode 100644
index 0000000..96df679
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-end-plus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-end.gif b/deluge/ui/web/themes/images/access/tree/elbow-end.gif
new file mode 100644
index 0000000..f24ddee
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-end.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-line.gif b/deluge/ui/web/themes/images/access/tree/elbow-line.gif
new file mode 100644
index 0000000..75e6da4
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-line.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-minus-nl.gif b/deluge/ui/web/themes/images/access/tree/elbow-minus-nl.gif
new file mode 100644
index 0000000..b4ae595
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-minus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-minus.gif b/deluge/ui/web/themes/images/access/tree/elbow-minus.gif
new file mode 100644
index 0000000..68ba298
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-minus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-plus-nl.gif b/deluge/ui/web/themes/images/access/tree/elbow-plus-nl.gif
new file mode 100644
index 0000000..6af2e29
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-plus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow-plus.gif b/deluge/ui/web/themes/images/access/tree/elbow-plus.gif
new file mode 100644
index 0000000..58ba9e4
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow-plus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/elbow.gif b/deluge/ui/web/themes/images/access/tree/elbow.gif
new file mode 100644
index 0000000..b8f4208
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/elbow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/folder-open.gif b/deluge/ui/web/themes/images/access/tree/folder-open.gif
new file mode 100644
index 0000000..7c52965
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/folder-open.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/folder.gif b/deluge/ui/web/themes/images/access/tree/folder.gif
new file mode 100644
index 0000000..501e75c
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/folder.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/leaf.gif b/deluge/ui/web/themes/images/access/tree/leaf.gif
new file mode 100644
index 0000000..445769d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/leaf.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/loading.gif b/deluge/ui/web/themes/images/access/tree/loading.gif
new file mode 100644
index 0000000..e846e1d
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/loading.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/tree/s.gif b/deluge/ui/web/themes/images/access/tree/s.gif
new file mode 100644
index 0000000..1d11fa9
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/tree/s.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/icon-error.gif b/deluge/ui/web/themes/images/access/window/icon-error.gif
new file mode 100644
index 0000000..05c713c
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/window/icon-error.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/icon-info.gif b/deluge/ui/web/themes/images/access/window/icon-info.gif
new file mode 100644
index 0000000..adc0613
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/window/icon-info.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/icon-question.gif b/deluge/ui/web/themes/images/access/window/icon-question.gif
new file mode 100644
index 0000000..9b31a94
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/window/icon-question.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/icon-warning.gif b/deluge/ui/web/themes/images/access/window/icon-warning.gif
new file mode 100644
index 0000000..0d89077
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/window/icon-warning.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/left-corners.png b/deluge/ui/web/themes/images/access/window/left-corners.png
new file mode 100644
index 0000000..f9a6463
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/window/left-corners.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/left-right.png b/deluge/ui/web/themes/images/access/window/left-right.png
new file mode 100644
index 0000000..7721193
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/window/left-right.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/right-corners.png b/deluge/ui/web/themes/images/access/window/right-corners.png
new file mode 100644
index 0000000..e3faa01
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/window/right-corners.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/top-bottom.png b/deluge/ui/web/themes/images/access/window/top-bottom.png
new file mode 100644
index 0000000..26d7421
--- /dev/null
+++ b/deluge/ui/web/themes/images/access/window/top-bottom.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/box/corners-blue.gif b/deluge/ui/web/themes/images/default/box/corners-blue.gif
new file mode 100644
index 0000000..fa419b5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/box/corners-blue.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/box/corners.gif b/deluge/ui/web/themes/images/default/box/corners.gif
new file mode 100644
index 0000000..8aa8cae
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/box/corners.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/box/l-blue.gif b/deluge/ui/web/themes/images/default/box/l-blue.gif
new file mode 100644
index 0000000..5ed7f00
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/box/l-blue.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/box/l.gif b/deluge/ui/web/themes/images/default/box/l.gif
new file mode 100644
index 0000000..0160f97
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/box/l.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/box/r-blue.gif b/deluge/ui/web/themes/images/default/box/r-blue.gif
new file mode 100644
index 0000000..3ea5cae
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/box/r-blue.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/box/r.gif b/deluge/ui/web/themes/images/default/box/r.gif
new file mode 100644
index 0000000..34237f6
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/box/r.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/box/tb-blue.gif b/deluge/ui/web/themes/images/default/box/tb-blue.gif
new file mode 100644
index 0000000..562fecc
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/box/tb-blue.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/box/tb.gif b/deluge/ui/web/themes/images/default/box/tb.gif
new file mode 100644
index 0000000..435889b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/box/tb.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/arrow.gif b/deluge/ui/web/themes/images/default/button/arrow.gif
new file mode 100644
index 0000000..3ab4f71
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/arrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/btn.gif b/deluge/ui/web/themes/images/default/button/btn.gif
new file mode 100644
index 0000000..06b404d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/group-cs.gif b/deluge/ui/web/themes/images/default/button/group-cs.gif
new file mode 100644
index 0000000..3d1dca8
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/group-cs.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/group-lr.gif b/deluge/ui/web/themes/images/default/button/group-lr.gif
new file mode 100644
index 0000000..7c549f9
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/group-lr.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/group-tb.gif b/deluge/ui/web/themes/images/default/button/group-tb.gif
new file mode 100644
index 0000000..adeb0a4
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/group-tb.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/s-arrow-b-noline.gif b/deluge/ui/web/themes/images/default/button/s-arrow-b-noline.gif
new file mode 100644
index 0000000..a4220ee
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/s-arrow-b-noline.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/s-arrow-b.gif b/deluge/ui/web/themes/images/default/button/s-arrow-b.gif
new file mode 100644
index 0000000..84b6470
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/s-arrow-b.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/s-arrow-bo.gif b/deluge/ui/web/themes/images/default/button/s-arrow-bo.gif
new file mode 100644
index 0000000..548700b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/s-arrow-bo.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/s-arrow-noline.gif b/deluge/ui/web/themes/images/default/button/s-arrow-noline.gif
new file mode 100644
index 0000000..0953eab
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/s-arrow-noline.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/s-arrow-o.gif b/deluge/ui/web/themes/images/default/button/s-arrow-o.gif
new file mode 100644
index 0000000..89c70f3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/s-arrow-o.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/button/s-arrow.gif b/deluge/ui/web/themes/images/default/button/s-arrow.gif
new file mode 100644
index 0000000..8940774
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/button/s-arrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/dd/drop-add.gif b/deluge/ui/web/themes/images/default/dd/drop-add.gif
new file mode 100644
index 0000000..b22cd14
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/dd/drop-add.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/dd/drop-no.gif b/deluge/ui/web/themes/images/default/dd/drop-no.gif
new file mode 100644
index 0000000..08d0833
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/dd/drop-no.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/dd/drop-yes.gif b/deluge/ui/web/themes/images/default/dd/drop-yes.gif
new file mode 100644
index 0000000..8aacb30
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/dd/drop-yes.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/editor/tb-sprite.gif b/deluge/ui/web/themes/images/default/editor/tb-sprite.gif
new file mode 100644
index 0000000..fb70577
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/editor/tb-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/checkbox.gif b/deluge/ui/web/themes/images/default/form/checkbox.gif
new file mode 100644
index 0000000..835b346
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/checkbox.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/clear-trigger.gif b/deluge/ui/web/themes/images/default/form/clear-trigger.gif
new file mode 100644
index 0000000..da78d45
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/clear-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/clear-trigger.psd b/deluge/ui/web/themes/images/default/form/clear-trigger.psd
new file mode 100644
index 0000000..f637fa5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/clear-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/date-trigger.gif b/deluge/ui/web/themes/images/default/form/date-trigger.gif
new file mode 100644
index 0000000..25ef7b3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/date-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/date-trigger.psd b/deluge/ui/web/themes/images/default/form/date-trigger.psd
new file mode 100644
index 0000000..74883b2
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/date-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/error-tip-corners.gif b/deluge/ui/web/themes/images/default/form/error-tip-corners.gif
new file mode 100644
index 0000000..6ea4c38
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/error-tip-corners.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/exclamation.gif b/deluge/ui/web/themes/images/default/form/exclamation.gif
new file mode 100644
index 0000000..ea31a30
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/exclamation.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/radio.gif b/deluge/ui/web/themes/images/default/form/radio.gif
new file mode 100644
index 0000000..36bb91d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/radio.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/search-trigger.gif b/deluge/ui/web/themes/images/default/form/search-trigger.gif
new file mode 100644
index 0000000..db8802b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/search-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/search-trigger.psd b/deluge/ui/web/themes/images/default/form/search-trigger.psd
new file mode 100644
index 0000000..b11f273
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/search-trigger.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/text-bg.gif b/deluge/ui/web/themes/images/default/form/text-bg.gif
new file mode 100644
index 0000000..4179607
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/text-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/trigger-square.gif b/deluge/ui/web/themes/images/default/form/trigger-square.gif
new file mode 100644
index 0000000..3004ec5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/trigger-square.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/trigger-square.psd b/deluge/ui/web/themes/images/default/form/trigger-square.psd
new file mode 100644
index 0000000..e922ee6
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/trigger-square.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/trigger-tpl.gif b/deluge/ui/web/themes/images/default/form/trigger-tpl.gif
new file mode 100644
index 0000000..e3701a3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/trigger-tpl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/trigger.gif b/deluge/ui/web/themes/images/default/form/trigger.gif
new file mode 100644
index 0000000..f6cba37
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/form/trigger.psd b/deluge/ui/web/themes/images/default/form/trigger.psd
new file mode 100644
index 0000000..344c768
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/form/trigger.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/gradient-bg.gif b/deluge/ui/web/themes/images/default/gradient-bg.gif
new file mode 100644
index 0000000..8134e49
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/gradient-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/arrow-left-white.gif b/deluge/ui/web/themes/images/default/grid/arrow-left-white.gif
new file mode 100644
index 0000000..63088f5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/arrow-left-white.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/arrow-right-white.gif b/deluge/ui/web/themes/images/default/grid/arrow-right-white.gif
new file mode 100644
index 0000000..e9e0678
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/arrow-right-white.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/col-move-bottom.gif b/deluge/ui/web/themes/images/default/grid/col-move-bottom.gif
new file mode 100644
index 0000000..cc1e473
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/col-move-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/col-move-top.gif b/deluge/ui/web/themes/images/default/grid/col-move-top.gif
new file mode 100644
index 0000000..58ff32c
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/col-move-top.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/columns.gif b/deluge/ui/web/themes/images/default/grid/columns.gif
new file mode 100644
index 0000000..2d3a823
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/columns.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/dirty.gif b/deluge/ui/web/themes/images/default/grid/dirty.gif
new file mode 100644
index 0000000..4f217a4
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/dirty.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/done.gif b/deluge/ui/web/themes/images/default/grid/done.gif
new file mode 100644
index 0000000..a937cb2
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/done.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/drop-no.gif b/deluge/ui/web/themes/images/default/grid/drop-no.gif
new file mode 100644
index 0000000..31a332b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/drop-no.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/drop-yes.gif b/deluge/ui/web/themes/images/default/grid/drop-yes.gif
new file mode 100644
index 0000000..926010e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/drop-yes.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/footer-bg.gif b/deluge/ui/web/themes/images/default/grid/footer-bg.gif
new file mode 100644
index 0000000..126120f
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/footer-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid-blue-hd.gif b/deluge/ui/web/themes/images/default/grid/grid-blue-hd.gif
new file mode 100644
index 0000000..862094e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid-blue-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid-blue-split.gif b/deluge/ui/web/themes/images/default/grid/grid-blue-split.gif
new file mode 100644
index 0000000..5286f58
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid-blue-split.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid-hrow.gif b/deluge/ui/web/themes/images/default/grid/grid-hrow.gif
new file mode 100644
index 0000000..6374104
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid-hrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid-loading.gif b/deluge/ui/web/themes/images/default/grid/grid-loading.gif
new file mode 100644
index 0000000..d112c54
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid-loading.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid-split.gif b/deluge/ui/web/themes/images/default/grid/grid-split.gif
new file mode 100644
index 0000000..c76a16e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid-split.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid-vista-hd.gif b/deluge/ui/web/themes/images/default/grid/grid-vista-hd.gif
new file mode 100644
index 0000000..d097263
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid-vista-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid3-hd-btn.gif b/deluge/ui/web/themes/images/default/grid/grid3-hd-btn.gif
new file mode 100644
index 0000000..2112607
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid3-hd-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid3-hrow-over.gif b/deluge/ui/web/themes/images/default/grid/grid3-hrow-over.gif
new file mode 100644
index 0000000..f9c07af
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid3-hrow-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid3-hrow.gif b/deluge/ui/web/themes/images/default/grid/grid3-hrow.gif
new file mode 100644
index 0000000..8d459a3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid3-hrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid3-rowheader.gif b/deluge/ui/web/themes/images/default/grid/grid3-rowheader.gif
new file mode 100644
index 0000000..2799b45
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid3-rowheader.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid3-special-col-bg.gif b/deluge/ui/web/themes/images/default/grid/grid3-special-col-bg.gif
new file mode 100644
index 0000000..0b4d6ca
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid3-special-col-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/grid3-special-col-sel-bg.gif b/deluge/ui/web/themes/images/default/grid/grid3-special-col-sel-bg.gif
new file mode 100644
index 0000000..1dfe9a6
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/grid3-special-col-sel-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/group-by.gif b/deluge/ui/web/themes/images/default/grid/group-by.gif
new file mode 100644
index 0000000..d6075bb
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/group-by.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/group-collapse.gif b/deluge/ui/web/themes/images/default/grid/group-collapse.gif
new file mode 100644
index 0000000..495bb05
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/group-collapse.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/group-expand-sprite.gif b/deluge/ui/web/themes/images/default/grid/group-expand-sprite.gif
new file mode 100644
index 0000000..9c1653b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/group-expand-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/group-expand.gif b/deluge/ui/web/themes/images/default/grid/group-expand.gif
new file mode 100644
index 0000000..a33ac30
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/group-expand.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hd-pop.gif b/deluge/ui/web/themes/images/default/grid/hd-pop.gif
new file mode 100644
index 0000000..eb8ba79
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/hd-pop.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-asc.gif b/deluge/ui/web/themes/images/default/grid/hmenu-asc.gif
new file mode 100644
index 0000000..8917e0e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/hmenu-asc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-desc.gif b/deluge/ui/web/themes/images/default/grid/hmenu-desc.gif
new file mode 100644
index 0000000..f26b7c2
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/hmenu-desc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-lock.gif b/deluge/ui/web/themes/images/default/grid/hmenu-lock.gif
new file mode 100644
index 0000000..1596126
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/hmenu-lock.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-lock.png b/deluge/ui/web/themes/images/default/grid/hmenu-lock.png
new file mode 100644
index 0000000..194756e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/hmenu-lock.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-unlock.gif b/deluge/ui/web/themes/images/default/grid/hmenu-unlock.gif
new file mode 100644
index 0000000..af59cf9
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/hmenu-unlock.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png b/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png
new file mode 100644
index 0000000..435bd74
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/invalid_line.gif b/deluge/ui/web/themes/images/default/grid/invalid_line.gif
new file mode 100644
index 0000000..fb7e0f3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/invalid_line.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/loading.gif b/deluge/ui/web/themes/images/default/grid/loading.gif
new file mode 100644
index 0000000..e846e1d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/loading.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/mso-hd.gif b/deluge/ui/web/themes/images/default/grid/mso-hd.gif
new file mode 100644
index 0000000..669f3cf
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/mso-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/nowait.gif b/deluge/ui/web/themes/images/default/grid/nowait.gif
new file mode 100644
index 0000000..4c5862c
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/nowait.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/page-first-disabled.gif b/deluge/ui/web/themes/images/default/grid/page-first-disabled.gif
new file mode 100644
index 0000000..1e02c41
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/page-first-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/page-first.gif b/deluge/ui/web/themes/images/default/grid/page-first.gif
new file mode 100644
index 0000000..d84f41a
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/page-first.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/page-last-disabled.gif b/deluge/ui/web/themes/images/default/grid/page-last-disabled.gif
new file mode 100644
index 0000000..8697067
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/page-last-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/page-last.gif b/deluge/ui/web/themes/images/default/grid/page-last.gif
new file mode 100644
index 0000000..3df5c2b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/page-last.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/page-next-disabled.gif b/deluge/ui/web/themes/images/default/grid/page-next-disabled.gif
new file mode 100644
index 0000000..90a7756
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/page-next-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/page-next.gif b/deluge/ui/web/themes/images/default/grid/page-next.gif
new file mode 100644
index 0000000..9601635
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/page-next.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/page-prev-disabled.gif b/deluge/ui/web/themes/images/default/grid/page-prev-disabled.gif
new file mode 100644
index 0000000..37154d6
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/page-prev-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/page-prev.gif b/deluge/ui/web/themes/images/default/grid/page-prev.gif
new file mode 100644
index 0000000..eb70cf8
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/page-prev.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/pick-button.gif b/deluge/ui/web/themes/images/default/grid/pick-button.gif
new file mode 100644
index 0000000..6957924
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/pick-button.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/refresh-disabled.gif b/deluge/ui/web/themes/images/default/grid/refresh-disabled.gif
new file mode 100644
index 0000000..607800b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/refresh-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/refresh.gif b/deluge/ui/web/themes/images/default/grid/refresh.gif
new file mode 100644
index 0000000..110f684
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/refresh.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/row-check-sprite.gif b/deluge/ui/web/themes/images/default/grid/row-check-sprite.gif
new file mode 100644
index 0000000..6101164
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/row-check-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/row-expand-sprite.gif b/deluge/ui/web/themes/images/default/grid/row-expand-sprite.gif
new file mode 100644
index 0000000..6f4d874
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/row-expand-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/row-over.gif b/deluge/ui/web/themes/images/default/grid/row-over.gif
new file mode 100644
index 0000000..b288e38
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/row-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/row-sel.gif b/deluge/ui/web/themes/images/default/grid/row-sel.gif
new file mode 100644
index 0000000..98209e6
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/row-sel.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/sort-hd.gif b/deluge/ui/web/themes/images/default/grid/sort-hd.gif
new file mode 100644
index 0000000..45e545f
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/sort-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/sort_asc.gif b/deluge/ui/web/themes/images/default/grid/sort_asc.gif
new file mode 100644
index 0000000..67a2a4c
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/sort_asc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/sort_desc.gif b/deluge/ui/web/themes/images/default/grid/sort_desc.gif
new file mode 100644
index 0000000..34db47c
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/sort_desc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/wait.gif b/deluge/ui/web/themes/images/default/grid/wait.gif
new file mode 100644
index 0000000..471c1a4
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/grid/wait.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/collapse.gif b/deluge/ui/web/themes/images/default/layout/collapse.gif
new file mode 100644
index 0000000..d87b0a9
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/collapse.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/expand.gif b/deluge/ui/web/themes/images/default/layout/expand.gif
new file mode 100644
index 0000000..7b6e1c1
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/expand.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/gradient-bg.gif b/deluge/ui/web/themes/images/default/layout/gradient-bg.gif
new file mode 100644
index 0000000..8134e49
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/gradient-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/mini-bottom.gif b/deluge/ui/web/themes/images/default/layout/mini-bottom.gif
new file mode 100644
index 0000000..c18f9e3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/mini-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/mini-left.gif b/deluge/ui/web/themes/images/default/layout/mini-left.gif
new file mode 100644
index 0000000..99f7993
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/mini-left.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/mini-right.gif b/deluge/ui/web/themes/images/default/layout/mini-right.gif
new file mode 100644
index 0000000..5b13c5a
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/mini-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/mini-top.gif b/deluge/ui/web/themes/images/default/layout/mini-top.gif
new file mode 100644
index 0000000..a4ca2bb
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/mini-top.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/ns-collapse.gif b/deluge/ui/web/themes/images/default/layout/ns-collapse.gif
new file mode 100644
index 0000000..df2a77e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/ns-collapse.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/ns-expand.gif b/deluge/ui/web/themes/images/default/layout/ns-expand.gif
new file mode 100644
index 0000000..77ab9da
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/ns-expand.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/panel-close.gif b/deluge/ui/web/themes/images/default/layout/panel-close.gif
new file mode 100644
index 0000000..2bdd623
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/panel-close.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/panel-title-bg.gif b/deluge/ui/web/themes/images/default/layout/panel-title-bg.gif
new file mode 100644
index 0000000..d1daef5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/panel-title-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/panel-title-light-bg.gif b/deluge/ui/web/themes/images/default/layout/panel-title-light-bg.gif
new file mode 100644
index 0000000..8c2c83d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/panel-title-light-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/stick.gif b/deluge/ui/web/themes/images/default/layout/stick.gif
new file mode 100644
index 0000000..5a1e8ba
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/stick.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/stuck.gif b/deluge/ui/web/themes/images/default/layout/stuck.gif
new file mode 100644
index 0000000..0a8de4d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/stuck.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/tab-close-on.gif b/deluge/ui/web/themes/images/default/layout/tab-close-on.gif
new file mode 100644
index 0000000..eacea39
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/tab-close-on.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/layout/tab-close.gif b/deluge/ui/web/themes/images/default/layout/tab-close.gif
new file mode 100644
index 0000000..45db61e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/layout/tab-close.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/menu/checked.gif b/deluge/ui/web/themes/images/default/menu/checked.gif
new file mode 100644
index 0000000..fad5893
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/menu/checked.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/menu/group-checked.gif b/deluge/ui/web/themes/images/default/menu/group-checked.gif
new file mode 100644
index 0000000..d30b3e5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/menu/group-checked.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/menu/item-over.gif b/deluge/ui/web/themes/images/default/menu/item-over.gif
new file mode 100644
index 0000000..0167839
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/menu/item-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/menu/menu-parent.gif b/deluge/ui/web/themes/images/default/menu/menu-parent.gif
new file mode 100644
index 0000000..1e37562
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/menu/menu-parent.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/menu/menu.gif b/deluge/ui/web/themes/images/default/menu/menu.gif
new file mode 100644
index 0000000..30a2c4b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/menu/menu.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/menu/unchecked.gif b/deluge/ui/web/themes/images/default/menu/unchecked.gif
new file mode 100644
index 0000000..43823e5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/menu/unchecked.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/corners-sprite.gif b/deluge/ui/web/themes/images/default/panel/corners-sprite.gif
new file mode 100644
index 0000000..aa0d0ed
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/corners-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/left-right.gif b/deluge/ui/web/themes/images/default/panel/left-right.gif
new file mode 100644
index 0000000..9fae2d5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/left-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/light-hd.gif b/deluge/ui/web/themes/images/default/panel/light-hd.gif
new file mode 100644
index 0000000..58d6747
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/light-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/tool-sprite-tpl.gif b/deluge/ui/web/themes/images/default/panel/tool-sprite-tpl.gif
new file mode 100644
index 0000000..e647867
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/tool-sprite-tpl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/tool-sprites.gif b/deluge/ui/web/themes/images/default/panel/tool-sprites.gif
new file mode 100644
index 0000000..2b6b809
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/tool-sprites.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/tools-sprites-trans.gif b/deluge/ui/web/themes/images/default/panel/tools-sprites-trans.gif
new file mode 100644
index 0000000..ead931e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/tools-sprites-trans.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/top-bottom.gif b/deluge/ui/web/themes/images/default/panel/top-bottom.gif
new file mode 100644
index 0000000..be6c50e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/top-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/top-bottom.png b/deluge/ui/web/themes/images/default/panel/top-bottom.png
new file mode 100644
index 0000000..6df5f68
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/top-bottom.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/white-corners-sprite.gif b/deluge/ui/web/themes/images/default/panel/white-corners-sprite.gif
new file mode 100644
index 0000000..22d4bba
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/white-corners-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/white-left-right.gif b/deluge/ui/web/themes/images/default/panel/white-left-right.gif
new file mode 100644
index 0000000..d82c337
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/white-left-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/panel/white-top-bottom.gif b/deluge/ui/web/themes/images/default/panel/white-top-bottom.gif
new file mode 100644
index 0000000..fe7dd1c
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/panel/white-top-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/progress/progress-bg.gif b/deluge/ui/web/themes/images/default/progress/progress-bg.gif
new file mode 100644
index 0000000..1c1abeb
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/progress/progress-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/qtip/bg.gif b/deluge/ui/web/themes/images/default/qtip/bg.gif
new file mode 100644
index 0000000..43488af
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/qtip/bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/qtip/close.gif b/deluge/ui/web/themes/images/default/qtip/close.gif
new file mode 100644
index 0000000..69ab915
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/qtip/close.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/qtip/tip-anchor-sprite.gif b/deluge/ui/web/themes/images/default/qtip/tip-anchor-sprite.gif
new file mode 100644
index 0000000..9cf4850
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/qtip/tip-anchor-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/qtip/tip-sprite.gif b/deluge/ui/web/themes/images/default/qtip/tip-sprite.gif
new file mode 100644
index 0000000..9810aca
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/qtip/tip-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/s.gif b/deluge/ui/web/themes/images/default/s.gif
new file mode 100644
index 0000000..1d11fa9
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/s.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shadow-c.png b/deluge/ui/web/themes/images/default/shadow-c.png
new file mode 100644
index 0000000..35891d3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shadow-c.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shadow-lr.png b/deluge/ui/web/themes/images/default/shadow-lr.png
new file mode 100644
index 0000000..e59a9d7
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shadow-lr.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shadow.png b/deluge/ui/web/themes/images/default/shadow.png
new file mode 100644
index 0000000..87dcc6e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shadow.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/blue-loading.gif b/deluge/ui/web/themes/images/default/shared/blue-loading.gif
new file mode 100644
index 0000000..3bbf639
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/blue-loading.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/calendar.gif b/deluge/ui/web/themes/images/default/shared/calendar.gif
new file mode 100644
index 0000000..133cf23
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/calendar.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/glass-bg.gif b/deluge/ui/web/themes/images/default/shared/glass-bg.gif
new file mode 100644
index 0000000..26fbbae
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/glass-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/hd-sprite.gif b/deluge/ui/web/themes/images/default/shared/hd-sprite.gif
new file mode 100644
index 0000000..42da1ea
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/hd-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/large-loading.gif b/deluge/ui/web/themes/images/default/shared/large-loading.gif
new file mode 100644
index 0000000..b36b555
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/large-loading.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/left-btn.gif b/deluge/ui/web/themes/images/default/shared/left-btn.gif
new file mode 100644
index 0000000..a0ddd9e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/left-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/loading-balls.gif b/deluge/ui/web/themes/images/default/shared/loading-balls.gif
new file mode 100644
index 0000000..9ce214b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/loading-balls.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/right-btn.gif b/deluge/ui/web/themes/images/default/shared/right-btn.gif
new file mode 100644
index 0000000..dee63e2
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/right-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/shared/warning.gif b/deluge/ui/web/themes/images/default/shared/warning.gif
new file mode 100644
index 0000000..806d4bc
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/shared/warning.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/e-handle-dark.gif b/deluge/ui/web/themes/images/default/sizer/e-handle-dark.gif
new file mode 100644
index 0000000..b5486c1
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/e-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/e-handle.gif b/deluge/ui/web/themes/images/default/sizer/e-handle.gif
new file mode 100644
index 0000000..00ba835
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/e-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/ne-handle-dark.gif b/deluge/ui/web/themes/images/default/sizer/ne-handle-dark.gif
new file mode 100644
index 0000000..04e5ecf
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/ne-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/ne-handle.gif b/deluge/ui/web/themes/images/default/sizer/ne-handle.gif
new file mode 100644
index 0000000..09405c7
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/ne-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/nw-handle-dark.gif b/deluge/ui/web/themes/images/default/sizer/nw-handle-dark.gif
new file mode 100644
index 0000000..6e49d69
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/nw-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/nw-handle.gif b/deluge/ui/web/themes/images/default/sizer/nw-handle.gif
new file mode 100644
index 0000000..2fcea8a
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/nw-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/s-handle-dark.gif b/deluge/ui/web/themes/images/default/sizer/s-handle-dark.gif
new file mode 100644
index 0000000..4eb5f0f
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/s-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/s-handle.gif b/deluge/ui/web/themes/images/default/sizer/s-handle.gif
new file mode 100644
index 0000000..bf069c2
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/s-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/se-handle-dark.gif b/deluge/ui/web/themes/images/default/sizer/se-handle-dark.gif
new file mode 100644
index 0000000..c4c1087
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/se-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/se-handle.gif b/deluge/ui/web/themes/images/default/sizer/se-handle.gif
new file mode 100644
index 0000000..972055e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/se-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/square.gif b/deluge/ui/web/themes/images/default/sizer/square.gif
new file mode 100644
index 0000000..14ce6f7
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/square.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/sw-handle-dark.gif b/deluge/ui/web/themes/images/default/sizer/sw-handle-dark.gif
new file mode 100644
index 0000000..77224b0
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/sw-handle-dark.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/sizer/sw-handle.gif b/deluge/ui/web/themes/images/default/sizer/sw-handle.gif
new file mode 100644
index 0000000..3ca0ed9
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/sizer/sw-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/slider/slider-bg.png b/deluge/ui/web/themes/images/default/slider/slider-bg.png
new file mode 100644
index 0000000..ca50093
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/slider/slider-bg.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/slider/slider-thumb.png b/deluge/ui/web/themes/images/default/slider/slider-thumb.png
new file mode 100644
index 0000000..c1abf95
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/slider/slider-thumb.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/slider/slider-v-bg.png b/deluge/ui/web/themes/images/default/slider/slider-v-bg.png
new file mode 100644
index 0000000..1ebe8ef
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/slider/slider-v-bg.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/slider/slider-v-thumb.png b/deluge/ui/web/themes/images/default/slider/slider-v-thumb.png
new file mode 100644
index 0000000..c80e145
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/slider/slider-v-thumb.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/scroll-left.gif b/deluge/ui/web/themes/images/default/tabs/scroll-left.gif
new file mode 100644
index 0000000..9f2f6d1
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/scroll-left.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/scroll-right.gif b/deluge/ui/web/themes/images/default/tabs/scroll-right.gif
new file mode 100644
index 0000000..4c5e7e3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/scroll-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/scroller-bg.gif b/deluge/ui/web/themes/images/default/tabs/scroller-bg.gif
new file mode 100644
index 0000000..099b90d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/scroller-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-btm-inactive-left-bg.gif b/deluge/ui/web/themes/images/default/tabs/tab-btm-inactive-left-bg.gif
new file mode 100644
index 0000000..188bf94
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-btm-inactive-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-btm-inactive-right-bg.gif b/deluge/ui/web/themes/images/default/tabs/tab-btm-inactive-right-bg.gif
new file mode 100644
index 0000000..e1f5e3c
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-btm-inactive-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-btm-left-bg.gif b/deluge/ui/web/themes/images/default/tabs/tab-btm-left-bg.gif
new file mode 100644
index 0000000..dde7968
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-btm-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-btm-over-left-bg.gif b/deluge/ui/web/themes/images/default/tabs/tab-btm-over-left-bg.gif
new file mode 100644
index 0000000..da49c10
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-btm-over-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-btm-over-right-bg.gif b/deluge/ui/web/themes/images/default/tabs/tab-btm-over-right-bg.gif
new file mode 100644
index 0000000..45346ab
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-btm-over-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-btm-right-bg.gif b/deluge/ui/web/themes/images/default/tabs/tab-btm-right-bg.gif
new file mode 100644
index 0000000..e695186
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-btm-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-close.gif b/deluge/ui/web/themes/images/default/tabs/tab-close.gif
new file mode 100644
index 0000000..e699878
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-close.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-strip-bg.gif b/deluge/ui/web/themes/images/default/tabs/tab-strip-bg.gif
new file mode 100644
index 0000000..34f1333
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-strip-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-strip-bg.png b/deluge/ui/web/themes/images/default/tabs/tab-strip-bg.png
new file mode 100644
index 0000000..fed48eb
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-strip-bg.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tab-strip-btm-bg.gif b/deluge/ui/web/themes/images/default/tabs/tab-strip-btm-bg.gif
new file mode 100644
index 0000000..5eaba1e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tab-strip-btm-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tabs/tabs-sprite.gif b/deluge/ui/web/themes/images/default/tabs/tabs-sprite.gif
new file mode 100644
index 0000000..e969fb0
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tabs/tabs-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/bg.gif b/deluge/ui/web/themes/images/default/toolbar/bg.gif
new file mode 100644
index 0000000..0b085bf
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/btn-arrow-light.gif b/deluge/ui/web/themes/images/default/toolbar/btn-arrow-light.gif
new file mode 100644
index 0000000..b0e24b5
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/btn-arrow-light.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/btn-arrow.gif b/deluge/ui/web/themes/images/default/toolbar/btn-arrow.gif
new file mode 100644
index 0000000..8acb460
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/btn-arrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/btn-over-bg.gif b/deluge/ui/web/themes/images/default/toolbar/btn-over-bg.gif
new file mode 100644
index 0000000..ee2dd98
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/btn-over-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/gray-bg.gif b/deluge/ui/web/themes/images/default/toolbar/gray-bg.gif
new file mode 100644
index 0000000..bd49438
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/gray-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/more.gif b/deluge/ui/web/themes/images/default/toolbar/more.gif
new file mode 100644
index 0000000..02c2509
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/more.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/tb-bg.gif b/deluge/ui/web/themes/images/default/toolbar/tb-bg.gif
new file mode 100644
index 0000000..4969e4e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/tb-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/tb-btn-sprite.gif b/deluge/ui/web/themes/images/default/toolbar/tb-btn-sprite.gif
new file mode 100644
index 0000000..19bbef3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/tb-btn-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/tb-xl-btn-sprite.gif b/deluge/ui/web/themes/images/default/toolbar/tb-xl-btn-sprite.gif
new file mode 100644
index 0000000..1bc0420
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/tb-xl-btn-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/toolbar/tb-xl-sep.gif b/deluge/ui/web/themes/images/default/toolbar/tb-xl-sep.gif
new file mode 100644
index 0000000..30555ee
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/toolbar/tb-xl-sep.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/arrows.gif b/deluge/ui/web/themes/images/default/tree/arrows.gif
new file mode 100644
index 0000000..2683463
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/arrows.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/drop-add.gif b/deluge/ui/web/themes/images/default/tree/drop-add.gif
new file mode 100644
index 0000000..b22cd14
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/drop-add.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/drop-between.gif b/deluge/ui/web/themes/images/default/tree/drop-between.gif
new file mode 100644
index 0000000..5c6c09d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/drop-between.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/drop-no.gif b/deluge/ui/web/themes/images/default/tree/drop-no.gif
new file mode 100644
index 0000000..9d9c6a9
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/drop-no.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/drop-over.gif b/deluge/ui/web/themes/images/default/tree/drop-over.gif
new file mode 100644
index 0000000..30d1ca7
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/drop-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/drop-under.gif b/deluge/ui/web/themes/images/default/tree/drop-under.gif
new file mode 100644
index 0000000..85f66b1
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/drop-under.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/drop-yes.gif b/deluge/ui/web/themes/images/default/tree/drop-yes.gif
new file mode 100644
index 0000000..8aacb30
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/drop-yes.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-end-minus-nl.gif b/deluge/ui/web/themes/images/default/tree/elbow-end-minus-nl.gif
new file mode 100644
index 0000000..928779e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-end-minus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-end-minus.gif b/deluge/ui/web/themes/images/default/tree/elbow-end-minus.gif
new file mode 100644
index 0000000..9a8d727
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-end-minus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-end-plus-nl.gif b/deluge/ui/web/themes/images/default/tree/elbow-end-plus-nl.gif
new file mode 100644
index 0000000..9f7f698
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-end-plus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-end-plus.gif b/deluge/ui/web/themes/images/default/tree/elbow-end-plus.gif
new file mode 100644
index 0000000..5943a01
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-end-plus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-end.gif b/deluge/ui/web/themes/images/default/tree/elbow-end.gif
new file mode 100644
index 0000000..f24ddee
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-end.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-line.gif b/deluge/ui/web/themes/images/default/tree/elbow-line.gif
new file mode 100644
index 0000000..75e6da4
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-line.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-minus-nl.gif b/deluge/ui/web/themes/images/default/tree/elbow-minus-nl.gif
new file mode 100644
index 0000000..928779e
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-minus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-minus.gif b/deluge/ui/web/themes/images/default/tree/elbow-minus.gif
new file mode 100644
index 0000000..97dcc71
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-minus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-plus-nl.gif b/deluge/ui/web/themes/images/default/tree/elbow-plus-nl.gif
new file mode 100644
index 0000000..9f7f698
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-plus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow-plus.gif b/deluge/ui/web/themes/images/default/tree/elbow-plus.gif
new file mode 100644
index 0000000..698de47
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow-plus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/elbow.gif b/deluge/ui/web/themes/images/default/tree/elbow.gif
new file mode 100644
index 0000000..b8f4208
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/elbow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/folder-open.gif b/deluge/ui/web/themes/images/default/tree/folder-open.gif
new file mode 100644
index 0000000..56ba737
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/folder-open.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/folder.gif b/deluge/ui/web/themes/images/default/tree/folder.gif
new file mode 100644
index 0000000..20412f7
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/folder.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/leaf.gif b/deluge/ui/web/themes/images/default/tree/leaf.gif
new file mode 100644
index 0000000..445769d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/leaf.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/loading.gif b/deluge/ui/web/themes/images/default/tree/loading.gif
new file mode 100644
index 0000000..e846e1d
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/loading.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/tree/s.gif b/deluge/ui/web/themes/images/default/tree/s.gif
new file mode 100644
index 0000000..1d11fa9
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/tree/s.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/icon-error.gif b/deluge/ui/web/themes/images/default/window/icon-error.gif
new file mode 100644
index 0000000..397b655
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/icon-error.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/icon-info.gif b/deluge/ui/web/themes/images/default/window/icon-info.gif
new file mode 100644
index 0000000..58281c3
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/icon-info.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/icon-question.gif b/deluge/ui/web/themes/images/default/window/icon-question.gif
new file mode 100644
index 0000000..08abd82
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/icon-question.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/icon-warning.gif b/deluge/ui/web/themes/images/default/window/icon-warning.gif
new file mode 100644
index 0000000..27ff98b
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/icon-warning.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/left-corners.png b/deluge/ui/web/themes/images/default/window/left-corners.png
new file mode 100644
index 0000000..a2250fd
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/left-corners.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/left-corners.psd b/deluge/ui/web/themes/images/default/window/left-corners.psd
new file mode 100644
index 0000000..3d7f062
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/left-corners.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/left-right.png b/deluge/ui/web/themes/images/default/window/left-right.png
new file mode 100644
index 0000000..acd72c2
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/left-right.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/left-right.psd b/deluge/ui/web/themes/images/default/window/left-right.psd
new file mode 100644
index 0000000..59a3960
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/left-right.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/right-corners.png b/deluge/ui/web/themes/images/default/window/right-corners.png
new file mode 100644
index 0000000..2440d2f
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/right-corners.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/right-corners.psd b/deluge/ui/web/themes/images/default/window/right-corners.psd
new file mode 100644
index 0000000..86d5095
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/right-corners.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/top-bottom.png b/deluge/ui/web/themes/images/default/window/top-bottom.png
new file mode 100644
index 0000000..d642827
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/top-bottom.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/top-bottom.psd b/deluge/ui/web/themes/images/default/window/top-bottom.psd
new file mode 100644
index 0000000..48c5395
--- /dev/null
+++ b/deluge/ui/web/themes/images/default/window/top-bottom.psd
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/button/btn-arrow.gif b/deluge/ui/web/themes/images/gray/button/btn-arrow.gif
new file mode 100644
index 0000000..f90d5df
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/button/btn-arrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/button/btn-sprite.gif b/deluge/ui/web/themes/images/gray/button/btn-sprite.gif
new file mode 100644
index 0000000..834ff97
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/button/btn-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/button/btn.gif b/deluge/ui/web/themes/images/gray/button/btn.gif
new file mode 100644
index 0000000..96ea61a
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/button/btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/button/group-cs.gif b/deluge/ui/web/themes/images/gray/button/group-cs.gif
new file mode 100644
index 0000000..7059e2b
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/button/group-cs.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/button/group-lr.gif b/deluge/ui/web/themes/images/gray/button/group-lr.gif
new file mode 100644
index 0000000..3f41fbd
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/button/group-lr.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/button/group-tb.gif b/deluge/ui/web/themes/images/gray/button/group-tb.gif
new file mode 100644
index 0000000..c5ea8ca
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/button/group-tb.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/button/s-arrow-bo.gif b/deluge/ui/web/themes/images/gray/button/s-arrow-bo.gif
new file mode 100644
index 0000000..fa5b2f4
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/button/s-arrow-bo.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/button/s-arrow-o.gif b/deluge/ui/web/themes/images/gray/button/s-arrow-o.gif
new file mode 100644
index 0000000..52a5141
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/button/s-arrow-o.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/form/clear-trigger.gif b/deluge/ui/web/themes/images/gray/form/clear-trigger.gif
new file mode 100644
index 0000000..be3ff58
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/form/clear-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/form/date-trigger.gif b/deluge/ui/web/themes/images/gray/form/date-trigger.gif
new file mode 100644
index 0000000..e0537cb
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/form/date-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/form/search-trigger.gif b/deluge/ui/web/themes/images/gray/form/search-trigger.gif
new file mode 100644
index 0000000..0cc4f59
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/form/search-trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/form/trigger-square.gif b/deluge/ui/web/themes/images/gray/form/trigger-square.gif
new file mode 100644
index 0000000..7a0f585
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/form/trigger-square.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/form/trigger.gif b/deluge/ui/web/themes/images/gray/form/trigger.gif
new file mode 100644
index 0000000..b563474
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/form/trigger.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/gradient-bg.gif b/deluge/ui/web/themes/images/gray/gradient-bg.gif
new file mode 100644
index 0000000..8134e49
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/gradient-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/col-move-bottom.gif b/deluge/ui/web/themes/images/gray/grid/col-move-bottom.gif
new file mode 100644
index 0000000..c525f7e
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/col-move-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/col-move-top.gif b/deluge/ui/web/themes/images/gray/grid/col-move-top.gif
new file mode 100644
index 0000000..ccc92b6
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/col-move-top.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/grid3-hd-btn.gif b/deluge/ui/web/themes/images/gray/grid/grid3-hd-btn.gif
new file mode 100644
index 0000000..daf1ef2
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/grid3-hd-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/grid3-hrow-over.gif b/deluge/ui/web/themes/images/gray/grid/grid3-hrow-over.gif
new file mode 100644
index 0000000..d37252f
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/grid3-hrow-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/grid3-hrow-over2.gif b/deluge/ui/web/themes/images/gray/grid/grid3-hrow-over2.gif
new file mode 100644
index 0000000..353d906
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/grid3-hrow-over2.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/grid3-hrow.gif b/deluge/ui/web/themes/images/gray/grid/grid3-hrow.gif
new file mode 100644
index 0000000..8d459a3
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/grid3-hrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/grid3-hrow2.gif b/deluge/ui/web/themes/images/gray/grid/grid3-hrow2.gif
new file mode 100644
index 0000000..423b507
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/grid3-hrow2.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/grid3-special-col-bg.gif b/deluge/ui/web/themes/images/gray/grid/grid3-special-col-bg.gif
new file mode 100644
index 0000000..12d64d7
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/grid3-special-col-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/grid3-special-col-bg2.gif b/deluge/ui/web/themes/images/gray/grid/grid3-special-col-bg2.gif
new file mode 100644
index 0000000..f10e6ad
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/grid3-special-col-bg2.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/grid3-special-col-sel-bg.gif b/deluge/ui/web/themes/images/gray/grid/grid3-special-col-sel-bg.gif
new file mode 100644
index 0000000..4fa6e10
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/grid3-special-col-sel-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/group-collapse.gif b/deluge/ui/web/themes/images/gray/grid/group-collapse.gif
new file mode 100644
index 0000000..c9ad30d
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/group-collapse.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/group-expand-sprite.gif b/deluge/ui/web/themes/images/gray/grid/group-expand-sprite.gif
new file mode 100644
index 0000000..d24891d
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/group-expand-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/group-expand.gif b/deluge/ui/web/themes/images/gray/grid/group-expand.gif
new file mode 100644
index 0000000..663b5c8
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/group-expand.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/page-first.gif b/deluge/ui/web/themes/images/gray/grid/page-first.gif
new file mode 100644
index 0000000..60be4bc
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/page-first.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/page-last.gif b/deluge/ui/web/themes/images/gray/grid/page-last.gif
new file mode 100644
index 0000000..beb4a83
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/page-last.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/page-next.gif b/deluge/ui/web/themes/images/gray/grid/page-next.gif
new file mode 100644
index 0000000..97db1c2
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/page-next.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/page-prev.gif b/deluge/ui/web/themes/images/gray/grid/page-prev.gif
new file mode 100644
index 0000000..d07e61c
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/page-prev.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/refresh.gif b/deluge/ui/web/themes/images/gray/grid/refresh.gif
new file mode 100644
index 0000000..868b2dc
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/refresh.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/row-expand-sprite.gif b/deluge/ui/web/themes/images/gray/grid/row-expand-sprite.gif
new file mode 100644
index 0000000..09c00a6
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/row-expand-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/sort-hd.gif b/deluge/ui/web/themes/images/gray/grid/sort-hd.gif
new file mode 100644
index 0000000..4cf483d
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/sort-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/sort_asc.gif b/deluge/ui/web/themes/images/gray/grid/sort_asc.gif
new file mode 100644
index 0000000..7e562e2
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/sort_asc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/grid/sort_desc.gif b/deluge/ui/web/themes/images/gray/grid/sort_desc.gif
new file mode 100644
index 0000000..9b7a871
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/grid/sort_desc.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/menu/group-checked.gif b/deluge/ui/web/themes/images/gray/menu/group-checked.gif
new file mode 100644
index 0000000..c882488
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/menu/group-checked.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/menu/item-over-disabled.gif b/deluge/ui/web/themes/images/gray/menu/item-over-disabled.gif
new file mode 100644
index 0000000..97d5ffa
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/menu/item-over-disabled.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/menu/item-over.gif b/deluge/ui/web/themes/images/gray/menu/item-over.gif
new file mode 100644
index 0000000..e0dc5f7
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/menu/item-over.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/menu/menu-parent.gif b/deluge/ui/web/themes/images/gray/menu/menu-parent.gif
new file mode 100644
index 0000000..5461a8b
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/menu/menu-parent.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/corners-sprite.gif b/deluge/ui/web/themes/images/gray/panel/corners-sprite.gif
new file mode 100644
index 0000000..fad0e6d
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/corners-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/left-right.gif b/deluge/ui/web/themes/images/gray/panel/left-right.gif
new file mode 100644
index 0000000..c5f3dca
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/left-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/light-hd.gif b/deluge/ui/web/themes/images/gray/panel/light-hd.gif
new file mode 100644
index 0000000..6eb28ba
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/light-hd.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/tool-sprite-tpl.gif b/deluge/ui/web/themes/images/gray/panel/tool-sprite-tpl.gif
new file mode 100644
index 0000000..18277a3
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/tool-sprite-tpl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/tool-sprites.gif b/deluge/ui/web/themes/images/gray/panel/tool-sprites.gif
new file mode 100644
index 0000000..36b6b67
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/tool-sprites.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/tools-sprites-trans.gif b/deluge/ui/web/themes/images/gray/panel/tools-sprites-trans.gif
new file mode 100644
index 0000000..b6d7ba3
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/tools-sprites-trans.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/top-bottom.gif b/deluge/ui/web/themes/images/gray/panel/top-bottom.gif
new file mode 100644
index 0000000..24ceb30
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/top-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/top-bottom.png b/deluge/ui/web/themes/images/gray/panel/top-bottom.png
new file mode 100644
index 0000000..6df5f68
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/top-bottom.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/white-corners-sprite.gif b/deluge/ui/web/themes/images/gray/panel/white-corners-sprite.gif
new file mode 100644
index 0000000..d5b8adf
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/white-corners-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/white-left-right.gif b/deluge/ui/web/themes/images/gray/panel/white-left-right.gif
new file mode 100644
index 0000000..2c9e142
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/white-left-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/panel/white-top-bottom.gif b/deluge/ui/web/themes/images/gray/panel/white-top-bottom.gif
new file mode 100644
index 0000000..025fbd5
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/panel/white-top-bottom.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/progress/progress-bg.gif b/deluge/ui/web/themes/images/gray/progress/progress-bg.gif
new file mode 100644
index 0000000..5585d80
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/progress/progress-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/qtip/bg.gif b/deluge/ui/web/themes/images/gray/qtip/bg.gif
new file mode 100644
index 0000000..a9055a5
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/qtip/bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/qtip/close.gif b/deluge/ui/web/themes/images/gray/qtip/close.gif
new file mode 100644
index 0000000..69ab915
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/qtip/close.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/qtip/tip-anchor-sprite.gif b/deluge/ui/web/themes/images/gray/qtip/tip-anchor-sprite.gif
new file mode 100644
index 0000000..0671586
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/qtip/tip-anchor-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/qtip/tip-sprite.gif b/deluge/ui/web/themes/images/gray/qtip/tip-sprite.gif
new file mode 100644
index 0000000..4ade664
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/qtip/tip-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/s.gif b/deluge/ui/web/themes/images/gray/s.gif
new file mode 100644
index 0000000..1d11fa9
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/s.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/shared/hd-sprite.gif b/deluge/ui/web/themes/images/gray/shared/hd-sprite.gif
new file mode 100644
index 0000000..d943833
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/shared/hd-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/shared/left-btn.gif b/deluge/ui/web/themes/images/gray/shared/left-btn.gif
new file mode 100644
index 0000000..3301054
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/shared/left-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/shared/right-btn.gif b/deluge/ui/web/themes/images/gray/shared/right-btn.gif
new file mode 100644
index 0000000..c529110
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/shared/right-btn.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/sizer/e-handle.gif b/deluge/ui/web/themes/images/gray/sizer/e-handle.gif
new file mode 100644
index 0000000..a8ed0ed
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/sizer/e-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/sizer/ne-handle.gif b/deluge/ui/web/themes/images/gray/sizer/ne-handle.gif
new file mode 100644
index 0000000..6f7b0c2
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/sizer/ne-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/sizer/nw-handle.gif b/deluge/ui/web/themes/images/gray/sizer/nw-handle.gif
new file mode 100644
index 0000000..92ad82c
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/sizer/nw-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/sizer/s-handle.gif b/deluge/ui/web/themes/images/gray/sizer/s-handle.gif
new file mode 100644
index 0000000..d7eeae2
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/sizer/s-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/sizer/se-handle.gif b/deluge/ui/web/themes/images/gray/sizer/se-handle.gif
new file mode 100644
index 0000000..f011a3b
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/sizer/se-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/sizer/square.gif b/deluge/ui/web/themes/images/gray/sizer/square.gif
new file mode 100644
index 0000000..7751d5e
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/sizer/square.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/sizer/sw-handle.gif b/deluge/ui/web/themes/images/gray/sizer/sw-handle.gif
new file mode 100644
index 0000000..aa903dd
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/sizer/sw-handle.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/slider/slider-thumb.png b/deluge/ui/web/themes/images/gray/slider/slider-thumb.png
new file mode 100644
index 0000000..ebe1b2e
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/slider/slider-thumb.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/slider/slider-v-thumb.png b/deluge/ui/web/themes/images/gray/slider/slider-v-thumb.png
new file mode 100644
index 0000000..1945672
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/slider/slider-v-thumb.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/scroll-left.gif b/deluge/ui/web/themes/images/gray/tabs/scroll-left.gif
new file mode 100644
index 0000000..bbb3e3d
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/scroll-left.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/scroll-right.gif b/deluge/ui/web/themes/images/gray/tabs/scroll-right.gif
new file mode 100644
index 0000000..feb6a76
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/scroll-right.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/scroller-bg.gif b/deluge/ui/web/themes/images/gray/tabs/scroller-bg.gif
new file mode 100644
index 0000000..f089c0a
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/scroller-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-btm-inactive-left-bg.gif b/deluge/ui/web/themes/images/gray/tabs/tab-btm-inactive-left-bg.gif
new file mode 100644
index 0000000..d718173
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-btm-inactive-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-btm-inactive-right-bg.gif b/deluge/ui/web/themes/images/gray/tabs/tab-btm-inactive-right-bg.gif
new file mode 100644
index 0000000..bf35493
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-btm-inactive-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-btm-left-bg.gif b/deluge/ui/web/themes/images/gray/tabs/tab-btm-left-bg.gif
new file mode 100644
index 0000000..96d2e5e
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-btm-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-btm-over-left-bg.gif b/deluge/ui/web/themes/images/gray/tabs/tab-btm-over-left-bg.gif
new file mode 100644
index 0000000..164d101
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-btm-over-left-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-btm-over-right-bg.gif b/deluge/ui/web/themes/images/gray/tabs/tab-btm-over-right-bg.gif
new file mode 100644
index 0000000..f6f0495
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-btm-over-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-btm-right-bg.gif b/deluge/ui/web/themes/images/gray/tabs/tab-btm-right-bg.gif
new file mode 100644
index 0000000..c41cada
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-btm-right-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-close.gif b/deluge/ui/web/themes/images/gray/tabs/tab-close.gif
new file mode 100644
index 0000000..98d5da9
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-close.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.gif b/deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.gif
new file mode 100644
index 0000000..040b677
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.png b/deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.png
new file mode 100644
index 0000000..fed48eb
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tab-strip-btm-bg.gif b/deluge/ui/web/themes/images/gray/tabs/tab-strip-btm-bg.gif
new file mode 100644
index 0000000..f35087f
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tab-strip-btm-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tabs/tabs-sprite.gif b/deluge/ui/web/themes/images/gray/tabs/tabs-sprite.gif
new file mode 100644
index 0000000..1901b23
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tabs/tabs-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/toolbar/bg.gif b/deluge/ui/web/themes/images/gray/toolbar/bg.gif
new file mode 100644
index 0000000..9ab78a2
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/toolbar/bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/toolbar/btn-arrow-light.gif b/deluge/ui/web/themes/images/gray/toolbar/btn-arrow-light.gif
new file mode 100644
index 0000000..b0e24b5
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/toolbar/btn-arrow-light.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/toolbar/btn-arrow.gif b/deluge/ui/web/themes/images/gray/toolbar/btn-arrow.gif
new file mode 100644
index 0000000..8acb460
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/toolbar/btn-arrow.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/toolbar/btn-over-bg.gif b/deluge/ui/web/themes/images/gray/toolbar/btn-over-bg.gif
new file mode 100644
index 0000000..ee2dd98
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/toolbar/btn-over-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/toolbar/gray-bg.gif b/deluge/ui/web/themes/images/gray/toolbar/gray-bg.gif
new file mode 100644
index 0000000..5464e21
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/toolbar/gray-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/toolbar/more.gif b/deluge/ui/web/themes/images/gray/toolbar/more.gif
new file mode 100644
index 0000000..77f4f23
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/toolbar/more.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/toolbar/tb-bg.gif b/deluge/ui/web/themes/images/gray/toolbar/tb-bg.gif
new file mode 100644
index 0000000..4969e4e
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/toolbar/tb-bg.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/toolbar/tb-btn-sprite.gif b/deluge/ui/web/themes/images/gray/toolbar/tb-btn-sprite.gif
new file mode 100644
index 0000000..894fef2
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/toolbar/tb-btn-sprite.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tree/arrows.gif b/deluge/ui/web/themes/images/gray/tree/arrows.gif
new file mode 100644
index 0000000..a51a8e4
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tree/arrows.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tree/elbow-end-minus-nl.gif b/deluge/ui/web/themes/images/gray/tree/elbow-end-minus-nl.gif
new file mode 100644
index 0000000..8c5bc5d
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tree/elbow-end-minus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tree/elbow-end-minus.gif b/deluge/ui/web/themes/images/gray/tree/elbow-end-minus.gif
new file mode 100644
index 0000000..5850513
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tree/elbow-end-minus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tree/elbow-end-plus-nl.gif b/deluge/ui/web/themes/images/gray/tree/elbow-end-plus-nl.gif
new file mode 100644
index 0000000..752b42a
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tree/elbow-end-plus-nl.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/tree/elbow-end-plus.gif b/deluge/ui/web/themes/images/gray/tree/elbow-end-plus.gif
new file mode 100644
index 0000000..ff12635
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/tree/elbow-end-plus.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/icon-error.gif b/deluge/ui/web/themes/images/gray/window/icon-error.gif
new file mode 100644
index 0000000..397b655
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/window/icon-error.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/icon-info.gif b/deluge/ui/web/themes/images/gray/window/icon-info.gif
new file mode 100644
index 0000000..58281c3
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/window/icon-info.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/icon-question.gif b/deluge/ui/web/themes/images/gray/window/icon-question.gif
new file mode 100644
index 0000000..08abd82
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/window/icon-question.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/icon-warning.gif b/deluge/ui/web/themes/images/gray/window/icon-warning.gif
new file mode 100644
index 0000000..27ff98b
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/window/icon-warning.gif
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/left-corners.png b/deluge/ui/web/themes/images/gray/window/left-corners.png
new file mode 100644
index 0000000..a32c806
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/window/left-corners.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/left-right.png b/deluge/ui/web/themes/images/gray/window/left-right.png
new file mode 100644
index 0000000..0272b5d
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/window/left-right.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/right-corners.png b/deluge/ui/web/themes/images/gray/window/right-corners.png
new file mode 100644
index 0000000..fed4d38
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/window/right-corners.png
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/top-bottom.png b/deluge/ui/web/themes/images/gray/window/top-bottom.png
new file mode 100644
index 0000000..798cb9b
--- /dev/null
+++ b/deluge/ui/web/themes/images/gray/window/top-bottom.png
Binary files differ
diff --git a/deluge/ui/web/web.py b/deluge/ui/web/web.py
new file mode 100644
index 0000000..ae428c7
--- /dev/null
+++ b/deluge/ui/web/web.py
@@ -0,0 +1,87 @@
+#
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import logging
+
+from twisted.internet.error import CannotListenError
+
+from deluge.common import run_profiled
+from deluge.ui.ui import UI
+
+log = logging.getLogger(__name__)
+
+
+class Web(UI):
+ cmd_description = """Web-based user interface (http://localhost:8112)"""
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(
+ 'web', *args, description='Starts the Deluge Web interface', **kwargs
+ )
+ self.__server = None
+
+ group = self.parser.add_argument_group(_('Web Server Options'))
+ group.add_argument(
+ '-i',
+ '--interface',
+ metavar='<ip_address>',
+ action='store',
+ help=_('IP address for web server to listen on'),
+ )
+ group.add_argument(
+ '-p',
+ '--port',
+ metavar='<port>',
+ type=int,
+ action='store',
+ help=_('Port for web server to listen on'),
+ )
+ group.add_argument(
+ '-b',
+ '--base',
+ metavar='<path>',
+ action='store',
+ help=_('Set the base path that the ui is running on'),
+ )
+ group.add_argument(
+ '--ssl', action='store_true', help=_('Force the web server to use SSL')
+ )
+ group.add_argument(
+ '--no-ssl',
+ action='store_true',
+ help=_('Force the web server to disable SSL'),
+ )
+ self.parser.add_process_arg_group()
+
+ @property
+ def server(self):
+ return self.__server
+
+ def start(self):
+ super().start()
+
+ from deluge.ui.web import server
+
+ self.__server = server.DelugeWeb(options=self.options)
+
+ def run():
+ try:
+ self.server.install_signal_handlers()
+ self.server.start()
+ except CannotListenError as ex:
+ log.error(
+ '%s \nCheck that deluge-web or webui plugin is not already running.',
+ ex,
+ )
+ except Exception as ex:
+ log.exception(ex)
+ raise
+
+ run_profiled(
+ run, output_file=self.options.profile, do_profile=self.options.profile
+ )
diff --git a/docs/man/deluge-console.1 b/docs/man/deluge-console.1
new file mode 100644
index 0000000..edffba5
--- /dev/null
+++ b/docs/man/deluge-console.1
@@ -0,0 +1,100 @@
+.TH DELUGE-CONSOLE 1
+
+.SH NAME
+deluge-console - A BitTorrent client console interface
+
+.SH SYNOPSIS
+.B deluge-console [options]
+
+.SH DESCRIPTION
+Deluge utilizes a client/server model, with \fBdeluged\fR being the daemon process and \fBdeluge-console\fR being used to launch a curses console user-interface.
+.P
+.SS Console Commands:
+You can pass console commands directly from the command line and use semi-colon (\fB;\fR) separator to run multiple commands. Enclosing the commands with quotes may also be required
+for example:
+
+ \fBdeluge-console 'add <torrent>; info <torrent_id>'\fR
+
+The following console commands are available:
+.TS
+tab (@);
+lB lx.
+add@Add torrents
+cache@Show information about the disk cache
+config@Show and set configuration values
+connect@Connect to a new deluge server
+debug@Enable and disable debugging
+del@Alias for \fBrm\fR
+exit@Alias for \fBquit\fR
+gui@Enable interactive mode
+halt@Shutdown the deluge server
+help@Displays help on other commands
+info@Show information about the torrents
+manage@Show and manage per-torrent options
+move@Move torrents' storage location
+pause@Pause torrents
+plugin@Manage plugins
+quit@Exit the client
+reannounce@Alias for \fBupdate_tracker\fR
+recheck@Forces a recheck of the torrent data
+resume@Resume torrents
+rm@Remove a torrent
+status@Shows various status information from the daemon
+update_tracker@Update tracker for torrent(s)
+.TE
+
+.SH OPTIONS
+.SS Config Options
+.TP
+.BI \-c\ path \fR,\ \fB\-\-config= path
+Set the config directory location.
+
+.SS Console Options
+These daemon connect options will be used for commands, or if console ui autoconnect is enabled.
+.TP
+.BI \-d\ ip_addr \fR,\ \fB\-\-daemon= ip_addr
+Deluge daemon IP address to connect to (default 127.0.0.1)
+.TP
+.BI \-p\ port \fR,\ \fB\-\-port= port
+Deluge daemon port to connect to (default 58846)
+.TP
+.BI \-U\ user \fR,\ \fB\-\-username= user
+Deluge daemon username to use when connecting
+.TP
+.BI \-P\ pass \fR,\ \fB\-\-password= pass
+Deluge daemon password to use when connecting
+
+.SS Logging Options
+.TP
+.BI \-l\ file \fR,\ \fB\-\-logfile= file
+Output to specified logfile instead of stdout
+.TP
+.BI \-L\ loglevel \fR,\ \fB\-\-loglevel= loglevel
+Set the log level (default is error):
+.B none, info, warning, error, debug
+.TP
+.B \-q\fR,\ \fB\-\-quiet
+Sets the log level to \fBnone\fR, same as \fB\-L none
+.TP
+.BI \-\-logrotate\fR[\fB=\fImax-size\fR]
+Enable logfile rotation, with optional maximum logfile
+size, default: 2M (Logfile rotation count is 5)
+.TP
+.BI \-\-profile\fR[\fB=\fIfile\fR]
+Profile with cProfile. Outputs to stdout unless a filename is specified
+
+.SS Help Options
+.TP
+.B \-V\fR,\ \fB\-\-version
+Show program's version number and exit.
+.TP
+.B \-h\fR,\ \fB\-\-help
+Show help message and exit.
+
+.SH SEE ALSO
+.BR deluge (1),
+.BR deluged (1),
+.BR deluge-web (1)
+
+.SH AUTHORS
+.B Deluge Team: http://www.deluge-torrent.org
diff --git a/docs/man/deluge-gtk.1 b/docs/man/deluge-gtk.1
new file mode 100644
index 0000000..a27b0c9
--- /dev/null
+++ b/docs/man/deluge-gtk.1
@@ -0,0 +1,55 @@
+.TH DELUGE-GTK 1
+
+.SH NAME
+deluge-gtk - A BitTorrent client Gtk interface
+
+.SH SYNOPSIS
+.B deluge-gtk [options]
+.RI [ torrent-file\fR]
+
+.SH DESCRIPTION
+Deluge utilizes a client/server model, with \fBdeluged\fR being the daemon process and \fBdeluge-gtk\fR being used to launch a Gtk user-interface.
+.P
+By default, Deluge will run in \fIStandalone\fR mode where the daemon functionality will be hidden.
+You can switch to \fIThinclient\fR mode in the Preferences dialog.
+
+.SH OPTIONS
+.SS Config Options
+.TP
+.BI \-c\ path \fR,\ \fB\-\-config= path
+Set the config directory location.
+
+.SS Logging Options
+.TP
+.BI \-l\ file \fR,\ \fB\-\-logfile= file
+Output to specified logfile instead of stdout
+.TP
+.BI \-L\ loglevel \fR,\ \fB\-\-loglevel= loglevel
+Set the log level (default is error):
+.B none, info, warning, error, debug
+.TP
+.B \-q\fR,\ \fB\-\-quiet
+Sets the log level to \fBnone\fR, same as \fB\-L none
+.TP
+.BI \-\-logrotate\fR[\fB=\fImax-size\fR]
+Enable logfile rotation, with optional maximum logfile
+size, default: 2M (Logfile rotation count is 5)
+.TP
+.BI \-\-profile\fR[\fB=\fIfile\fR]
+Profile with cProfile. Outputs to stdout unless a filename is specified
+
+.SS Help Options
+.TP
+.B \-V\fR,\ \fB\-\-version
+Show program's version number and exit.
+.TP
+.B \-h\fR,\ \fB\-\-help
+Show help message and exit.
+
+.SH SEE ALSO
+.BR deluged (1),
+.BR deluge-web (1)
+.BR deluge-console (1),
+
+.SH AUTHORS
+.B Deluge Team: http://www.deluge-torrent.org
diff --git a/docs/man/deluge-web.1 b/docs/man/deluge-web.1
new file mode 100644
index 0000000..f9f83ae
--- /dev/null
+++ b/docs/man/deluge-web.1
@@ -0,0 +1,86 @@
+.TH DELUGE-WEB 1
+
+.SH NAME
+deluge-web - A BitTorrent client web interface
+
+.SH SYNOPSIS
+.B deluge-web [options]
+
+.SH DESCRIPTION
+Deluge utilizes a client/server model, with \fBdeluged\fR being the daemon process and \fBdeluge-web\fR being used to launch an ajax web based user-interface.
+.P
+By default \fBdeluge-web\fR will run as a background daemon, use the \fB\-d\fR option to run process in foreground.
+
+The default password is \fBdeluge\fR and serves \fBhttp://localhost:8112\fR web page.
+
+.SH OPTIONS
+.SS Config Options
+.TP
+.BI \-c\ path \fR,\ \fB\-\-config= path
+Set the config directory location.
+
+.SS Web Options
+.TP
+.BI \-i\ ip_address \fR,\ \fB\-\-interface= ip_address
+IP address for web server to listen on
+.TP
+.BI \-p\ port \fR,\ \fB\-\-port= port
+Port for web server to listen on
+.TP
+.BI \-b\ path \fR,\ \fB\-\-base= path
+Set the base path that the web ui is running on (proxying)
+.TP
+.B \-\-ssl
+Forces the webserver to use ssl
+.TP
+.B \-\-no-ssl
+Forces the webserver to disable ssl
+
+.SS Logging Options
+.TP
+.BI \-l\ file \fR,\ \fB\-\-logfile= file
+Output to specified logfile instead of stdout
+.TP
+.BI \-L\ loglevel \fR,\ \fB\-\-loglevel= loglevel
+Set the log level (default is error):
+.B none, info, warning, error, debug
+.TP
+.B \-q\fR,\ \fB\-\-quiet
+Sets the log level to \fBnone\fR, same as \fB\-L none
+.TP
+.BI \-\-logrotate\fR[\fB=\fImax-size\fR]
+Enable logfile rotation, with optional maximum logfile
+size, default: 2M (Logfile rotation count is 5)
+.TP
+.BI \-\-profile\fR[\fB=\fIfile\fR]
+Profile with cProfile. Outputs to stdout unless a filename is specified
+
+.SS Process Control Options:
+.TP
+.BI \-P\ file \fR,\ \fB\-\-pidfile= file
+Pidfile to store the process id
+.TP
+.B -d\fR,\ \fB\-\-do-not-daemonize
+Do not daemonize (fork) this process
+.TP
+.BI \-U\fR,\ \fB\-\-user= user
+Change to this user on startup (Requires root)
+.TP
+.BI \-g\fR,\ \fB\-\-group= group
+Change to this group on startup (Requires root)
+
+.SS Help Options
+.TP
+.B \-V\fR,\ \fB\-\-version
+Show program's version number and exit.
+.TP
+.B \-h\fR,\ \fB\-\-help
+Show help message and exit.
+
+.SH SEE ALSO
+.BR deluge (1),
+.BR deluged (1),
+.BR deluge-console (1)
+
+.SH AUTHORS
+.B Deluge Team: http://www.deluge-torrent.org
diff --git a/docs/man/deluge.1 b/docs/man/deluge.1
new file mode 100644
index 0000000..19aef4f
--- /dev/null
+++ b/docs/man/deluge.1
@@ -0,0 +1,63 @@
+.TH DELUGE 1
+
+.SH NAME
+deluge - A BitTorrent client
+
+.SH SYNOPSIS
+.B deluge [options]
+.RI [ torrent-file\fR]
+
+.SH DESCRIPTION
+Deluge utilizes a client/server model, with \fBdeluged\fR being the daemon process and \fBdeluge\fR being used to launch a user-interface.
+.P
+By default, Deluge will run in \fIStandalone\fR mode where the daemon functionality will be hidden.
+You can switch to \fIThinclient\fR mode in the Preferences dialog.
+
+.SH OPTIONS
+.SS Config Options
+.TP
+.BI \-c\ path \fR,\ \fB\-\-config= path
+Set the config directory location.
+
+.SS UI Options
+See \fBdeluge -h\fR for available user interfaces.
+.TP
+.I user_interface \fR[\fIui-args\fR] Alternative UI to launch, with optional ui args
+.TP
+.BI -s\ default_ui \fR,\ \fB--set-default-ui= default_ui
+Sets the default UI to be run when no UI is specified
+
+.SS Logging Options
+.TP
+.BI \-l\ file \fR,\ \fB\-\-logfile= file
+Output to specified logfile instead of stdout
+.TP
+.BI \-L\ loglevel \fR,\ \fB\-\-loglevel= loglevel
+Set the log level (default is error):
+.B none, info, warning, error, debug
+.TP
+.B \-q\fR,\ \fB\-\-quiet
+Sets the log level to \fBnone\fR, same as \fB\-L none
+.TP
+.BI \-\-logrotate\fR[\fB=\fImax-size\fR]
+Enable logfile rotation, with optional maximum logfile
+size, default: 2M (Logfile rotation count is 5)
+.TP
+.BI \-\-profile\fR[\fB=\fIfile\fR]
+Profile with cProfile. Outputs to stdout unless a filename is specified
+
+.SS Help Options
+.TP
+.B \-V\fR,\ \fB\-\-version
+Show program's version number and exit.
+.TP
+.B \-h\fR,\ \fB\-\-help
+Show help message and exit.
+
+.SH SEE ALSO
+.BR deluged (1),
+.BR deluge-web (1)
+.BR deluge-console (1),
+
+.SH AUTHORS
+.B Deluge Team: http://www.deluge-torrent.org
diff --git a/docs/man/deluged.1 b/docs/man/deluged.1
new file mode 100644
index 0000000..a1877a4
--- /dev/null
+++ b/docs/man/deluged.1
@@ -0,0 +1,78 @@
+.TH DELUGED 1
+
+.SH NAME
+deluged - A BitTorrent client daemon
+
+.SH SYNOPSIS
+.B deluged [options]
+
+.SH DESCRIPTION
+Deluge utilizes a client/server model, with \fBdeluged\fR being the daemon process and \fBdeluge\fR being used to launch a user-interface.
+.P
+By default \fBdeluged\fR will run as a background daemon, use the \fB\-d\fR option to run process in foreground.
+
+.SH OPTIONS
+.SS Config Options
+.TP
+.BI \-c\ path ,\ \fB\-\-config= path
+Set the config directory location.
+
+.SS Daemon Options
+.TP
+.BI -p\ port \fR,\ \fB--port= port
+Port daemon will listen on, default is 58846
+.TP
+.BI -i\ ip_address \fR,\ \fB--interface= ip_address
+Interface daemon will listen for bittorrent connections on, this should be an IP address
+.TP
+.BI -u\ ip_address \fR,\ \fB--ui-interface= ip_address
+Interface daemon will listen for UI connections on, this should be an IP address
+
+.SS Logging Options
+.TP
+.BI \-l\ file \fR,\ \fB\-\-logfile= file
+Output to specified logfile instead of stdout
+.TP
+.BI \-L\ loglevel \fR,\ \fB\-\-loglevel= loglevel
+Set the log level (default is error):
+.B none, info, warning, error, debug
+.TP
+.B \-q\fR,\ \fB\-\-quiet
+Sets the log level to \fBnone\fR, same as \fB\-L none
+.TP
+.BI \-\-logrotate\fR[\fB=\fImax-size\fR]
+Enable logfile rotation, with optional maximum logfile
+size, default: 2M (Logfile rotation count is 5)
+.TP
+.BI \-\-profile\fR[\fB=\fIfile\fR]
+Profile with cProfile. Outputs to stdout unless a filename is specified
+
+.SS Process Control Options:
+.TP
+.BI \-P\ file \fR,\ \fB\-\-pidfile= file
+Pidfile to store the process id
+.TP
+.B -d\fR,\ \fB\-\-do-not-daemonize
+Do not daemonize (fork) this process
+.TP
+.BI \-U\fR,\ \fB\-\-user= user
+Change to this user on startup (Requires root)
+.TP
+.BI \-g\fR,\ \fB\-\-group= group
+Change to this group on startup (Requires root)
+
+.SS Help Options
+.TP
+.B \-V\fR,\ \fB\-\-version
+Show program's version number and exit.
+.TP
+.B \-h\fR,\ \fB\-\-help
+Show help message and exit.
+
+.SH SEE ALSO
+.BR deluge (1),
+.BR deluge-web (1),
+.BR deluge-console (1)
+
+.SH AUTHORS
+.B Deluge Team: http://www.deluge-torrent.org
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 0000000..3da1967
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,5 @@
+sphinx==7.2.*
+myst-parser==2.0.*
+sphinx_rtd_theme==2.0.*
+sphinxcontrib-spelling==8.0.*
+sphinx-autodoc-typehints==1.25.*
diff --git a/docs/source/changelog.md b/docs/source/changelog.md
new file mode 120000
index 0000000..699cc9e
--- /dev/null
+++ b/docs/source/changelog.md
@@ -0,0 +1 @@
+../../CHANGELOG.md \ No newline at end of file
diff --git a/docs/source/conf.py b/docs/source/conf.py
new file mode 100644
index 0000000..0e4a419
--- /dev/null
+++ b/docs/source/conf.py
@@ -0,0 +1,284 @@
+#
+# Deluge documentation build configuration file
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default value; values that are commented out
+# serve to show the default value.
+
+import builtins
+import os
+import sys
+from datetime import date
+
+from sphinx.ext import apidoc
+from sphinx.ext.autodoc import ClassDocumenter, bool_option
+
+# If your extensions are in another directory, add it here. If the directory is relative
+# to the documentation root, use os.path.abspath to make it absolute, like shown here.
+sys.path.append(
+ os.path.abspath(
+ os.path.join(
+ os.path.join(os.path.dirname(__file__), os.path.pardir), os.path.pardir
+ )
+ )
+)
+# Importing version only possible after add project root to sys.path.
+try:
+ from version import get_version
+except ImportError:
+ from deluge.common import get_version
+
+
+# General configuration
+# ---------------------
+
+needs_sphinx = '2.0'
+suppress_warnings = ['app.add_source_parser']
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = [
+ 'sphinx.ext.autodoc',
+ 'sphinx.ext.doctest',
+ 'sphinx.ext.napoleon',
+ 'sphinx.ext.coverage',
+ 'sphinxcontrib.spelling',
+ 'myst_parser',
+ 'sphinx_autodoc_typehints',
+]
+
+napoleon_include_init_with_doc = True
+napoleon_use_rtype = False
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = ['.rst', '.md']
+
+# The master toctree document.
+master_doc = 'index'
+
+# General substitutions.
+project = 'Deluge'
+current_year = date.today().year
+copyright = '2008-%s, Deluge Team' % current_year # noqa: A001
+
+# The full version, including alpha/beta/rc tags.
+release = get_version()
+# The short X.Y version.
+version = '.'.join(release.split('.', 2)[:2])
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+# unused_docs = []
+
+# List of directories, relative to source directories, that shouldn't be searched
+# for source files.
+exclude_patterns = []
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+# add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+# show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for spelling
+# --------------------
+spelling_show_suggestions = True
+spelling_word_list_filename = '../spelling_wordlist.txt'
+# Skip Deluge module rst files
+if 'spelling' in sys.argv or 'spellcheck_docs' in sys.argv:
+ exclude_patterns += ['modules']
+
+# Options for HTML output
+# -----------------------
+html_theme = 'sphinx_rtd_theme'
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+# html_style = 'default.css'
+
+# Add font-mfizz for icons.
+html_css_files = [
+ 'https://cdnjs.cloudflare.com/ajax/libs/font-mfizz/2.4.1/font-mfizz.min.css'
+]
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+# html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+# html_short_title = None
+
+# The name of an image file (within the static path) to place at the top of
+# the sidebar.
+# html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+html_favicon = '../../deluge/ui/data/pixmaps/deluge.ico'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+# html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+# html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+# html_use_modindex = True
+
+# If false, no index is generated.
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+# html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'delugedoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+# latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+# latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+ ('index', 'deluge.tex', 'deluge Documentation', 'Deluge Team', 'manual')
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+# latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+# latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+# latex_use_modindex = True
+
+
+# Autodoc section
+# ---------------
+
+# Must add these for autodoc to import packages successfully
+builtins.__dict__['_'] = lambda x: x
+builtins.__dict__['_n'] = lambda s, p, n: s if n == 1 else p
+
+autodoc_mock_imports = [
+ 'deluge._libtorrent',
+ 'twisted',
+ 'rencode',
+ 'OpenSSL',
+ 'PIL',
+ 'libtorrent',
+ 'psyco',
+ 'gi',
+ 'cairo',
+ 'curses',
+ 'win32api',
+ 'win32file',
+ 'win32process',
+ 'win32pipe',
+ 'pywintypes',
+ 'win32con',
+ 'win32event',
+ 'pytest',
+ 'mock',
+ 'mako',
+ 'xdg',
+ 'zope',
+ 'zope.interface',
+]
+
+# Register an autodoc class directive to only include exported methods.
+ClassDocumenter.option_spec['exported'] = bool_option
+
+
+def maybe_skip_member(app, what, name, obj, skip, options):
+ if options.exported and not (
+ hasattr(obj, '_rpcserver_export') or hasattr(obj, '_json_export')
+ ):
+ return True
+
+
+# Run the sphinx-apidoc to create package/modules rst files for autodoc.
+def run_apidoc(__):
+ cur_dir = os.path.abspath(os.path.dirname(__file__))
+ module_dir = os.path.join(cur_dir, '..', '..', 'deluge')
+ ignore_paths = [
+ os.path.join(module_dir, 'plugins'),
+ os.path.join(module_dir, 'tests'),
+ ]
+ argv = [
+ '--force',
+ '--no-toc',
+ '--output-dir',
+ os.path.join(cur_dir, 'modules'),
+ module_dir,
+ ] + ignore_paths
+ apidoc.main(argv)
+
+
+def setup(app):
+ app.connect('builder-inited', run_apidoc)
+ app.connect('autodoc-skip-member', maybe_skip_member)
diff --git a/docs/source/contributing/code.md b/docs/source/contributing/code.md
new file mode 100644
index 0000000..20ccb82
--- /dev/null
+++ b/docs/source/contributing/code.md
@@ -0,0 +1,124 @@
+# Contributing code
+
+## Basic requirements and standards
+
+- A [new ticket](http://dev.deluge-torrent.org/newticket) is required for bugs
+ or features. Search the ticket system first, to avoid filing a duplicate.
+- Ensure code follows the [syntax and conventions](#syntax-and-conventions).
+- Code must pass tests. See [testing](testing.md) document for
+ information on how to run and write unit tests.
+- Commit messages are informative.
+
+## Pull request process:
+
+- Fork us on [GitHub](https://github.com/deluge-torrent/deluge).
+- Clone your repository.
+- Create a feature branch for your issue.
+- Apply your changes:
+ - Add them, and then commit them to your branch.
+ - Run the tests until they pass.
+ - When you feel you are finished, rebase your commits to ensure a simple
+ and informative commit log.
+- Create a pull request on GitHub from your forked repository.
+ - Verify that the tests run by [Travis-ci](https://travis-ci.org/deluge-torrent/deluge)
+ are passing.
+
+## Syntax and conventions
+
+### Code formatting
+
+We use two applications to automatically format the code to save development
+time. They are both run with [pre-commit].
+
+#### Black
+
+- Python
+
+#### Prettier
+
+- JavaScript
+- CSS
+- YAML
+- Markdown
+
+### Common
+
+- Line length: `79` chars.
+- Indent: `4 spaces`, no tabs.
+- All code should use `'single quotes'`.
+
+### Python
+
+We follow [PEP8](http://www.python.org/dev/peps/pep-0008/) and
+[Python Code Style](http://docs.python-guide.org/en/latest/writing/style/)
+which is adhered to with [Black].
+
+- Code '''must''' pass [Black], [flake8] and [isort] source code checkers.
+ (Optionally [Pylint])
+
+ flake8 deluge
+ isort -rc -df deluge
+ pylint deluge
+ pylint deluge/plugins/\*/deluge/
+
+- Using the [pre-commit] application can aid in identifying issues while
+ creating git commits.
+
+#### Strings and bytes
+
+To prevent bugs or errors in the code byte strings (`str`) must be decoded to
+strings (Unicode text strings, `unicode`) on input and then encoded on output.
+
+_Notes:_
+
+- PyGTK/GTK+ will accept `str` (UTF-8 encoded) or `unicode` but will only return
+ `str`. See [GTK3 Unicode] docs.
+- There is a `bytearray` type which enables in-place modification of a string.
+ See [Python Bytearrays](http://stackoverflow.com/a/9099337/175584)
+- Python 3 renames `unicode` to `str` type and byte strings become `bytes` type.
+
+### JavaScript
+
+- Classes should follow the Ext coding style.
+- Class names should be in !CamelCase
+- Instances of classes should use camelCase.
+
+### Path separators
+
+- All relative path separators used within code should be converted to posix
+ format `/`, so should not contain `\` or `\\`. This is to prevent confusion
+ when dealing with cross-platform clients and servers.
+
+### Docstrings
+
+All new docstrings must use Napoleon
+[Google Style](http://www.sphinx-doc.org/en/stable/ext/napoleon.html)
+with old docstrings eventually converted over.
+
+Google Style example:
+
+ def func(arg):
+ """Function purpose.
+
+ Args:
+ arg (type): Description.
+
+ Returns:
+ type: Description. If the line is too, long indent next
+ line with three spaces.
+ """
+ return
+
+See complete list of [supported headers][napoleon sections].
+
+Verify that the documentation parses correctly with:
+
+ python setup.py build_docs
+
+[pre-commit]: http://pre-commit.com/
+[flake8]: https://pypi.python.org/pypi/flake8
+[isort]: https://pypi.python.org/pypi/isort
+[pylint]: http://www.pylint.org/
+[black]: https://github.com/python/black/
+[gtk3 unicode]: http://python-gtk-3-tutorial.readthedocs.org/en/latest/unicode.html
+[napoleon sections]: http://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html#docstring-sections
diff --git a/docs/source/contributing/documentation.md b/docs/source/contributing/documentation.md
new file mode 100644
index 0000000..cd72b85
--- /dev/null
+++ b/docs/source/contributing/documentation.md
@@ -0,0 +1,14 @@
+# Documentation contributions
+
+## Build
+
+We use Sphinx to create the documentation from source files and docstrings in code.
+
+ pip install -r docs/requirements.txt
+ python setup.py build_docs
+
+The resulting html files are in `docs/build/html`.
+
+## man pages
+
+Located in `docs/man`
diff --git a/docs/source/contributing/index.md b/docs/source/contributing/index.md
new file mode 100644
index 0000000..8c07a76
--- /dev/null
+++ b/docs/source/contributing/index.md
@@ -0,0 +1,13 @@
+# Development & community
+
+Deluge is an open-source project, and relies on its community of users to keep
+getting better.
+
+```{toctree}
+:titlesonly:
+
+code
+testing
+documentation
+translations
+```
diff --git a/docs/source/contributing/testing.md b/docs/source/contributing/testing.md
new file mode 100644
index 0000000..beb30a4
--- /dev/null
+++ b/docs/source/contributing/testing.md
@@ -0,0 +1,50 @@
+# Running tests
+
+Testing uses [PyTest] framework and [PyTest-Twisted] to handle Twisted framework.
+
+## Testing
+
+The tests are located in the source folder under `deluge/tests`.
+The tests are run from the project root directory.
+View the unit test coverage at: [deluge-torrent.github.io](http://deluge-torrent.github.io)
+
+### Pytest
+
+ pytest deluge/tests
+ pytest deluge/tests/test_client.py
+ pytest deluge/tests/test_client.py -k test_connect_localclient
+
+### Plugin
+
+Running the tests for a specific plugin (requires [pytest](https://pypi.python.org/pypi/pytest)):
+
+ pytest deluge/plugins/<name-of-plugin>
+
+## Tox
+
+All the tests for Deluge can be run using [Tox](https://pypi.python.org/pypi/tox)
+
+### See available targets:
+
+ tox -l
+ py3
+ lint
+ docs
+
+### Run specific test:
+
+ tox -e py3
+
+### Verify code with pre-commit:
+
+ tox -e lint
+
+## CI
+
+Deluge develop branch is tested automatically by GitHub actions.
+
+When creating a pull request (PR) on [github], units tests will be automatically be run.
+
+[github]: https://github.com/deluge-torrent/deluge/pulls
+[pytest]: https://docs.pytest.org/en/
+[pytest-twisted]: https://github.com/pytest-dev/pytest-twisted
diff --git a/docs/source/contributing/translations.md b/docs/source/contributing/translations.md
new file mode 100644
index 0000000..fa32d82
--- /dev/null
+++ b/docs/source/contributing/translations.md
@@ -0,0 +1,66 @@
+# Translation contributions
+
+## Translators
+
+For translators we have a [Launchpad translations] account where you can
+translate the `.po` files.
+
+## Marking text for translation
+
+To mark text for translation in Python and ExtJS wrap the string with the
+function `_()` like this:
+
+ torrent.set_tracker_status(_("Announce OK"))
+
+For GTK the text can also be marked translatable in the `glade/*.ui` files:
+
+ <property name="label" translatable="yes">Max Upload Speed:</property>
+
+For more details see: [Python Gettext]
+
+## Translation process
+
+These are the overall stages in gettext translation:
+
+`Portable Object Template -> Portable Object -> Machine Object`
+
+- The `deluge.pot` is created using `generate_pot.py`.
+- Upload `deluge/i18n/deluge.pot` to [Launchpad translations].
+- Give the translators time to translate the text.
+- Download the updated `.po` files from translation site.
+- Extract to `deluge/i18n/` and strip the `deluge-` prefix:
+
+ rename -f 's/^deluge-//' deluge-*.po
+
+- The binary `MO` files for each language are generated by `setup.py`
+ using the `msgfmt.py` script.
+
+To enable Web UI to use translations update `gettext.js` by running `gen_gettext.py` script.
+
+## Useful applications
+
+- [podiff](http://puszcza.gnu.org.ua/projects/podiff/) - Compare textual information in two PO files
+- [gtranslator](http://projects.gnome.org/gtranslator/) - GUI PO file editor
+- [Poedit](http://www.poedit.net/) - GUI PO file editor
+
+## Testing translation
+
+Testing that translations are working correctly can be performed by running
+Deluge as follows.
+
+Create an `MO` for a single language in the correct sub-directory:
+
+ mkdir -p deluge/i18n/fr/LC_MESSAGES
+ python msgfmt.py -o deluge/i18n/fr/LC_MESSAGES/deluge.mo deluge/i18n/fr.po
+
+Run Deluge using an alternative language:
+
+ LANGUAGE=fr deluge
+ LANGUAGE=ru_RU.UTF-8 deluge
+
+Note: If you do not have a particular language installed on your system it
+will only translate based on the `MO` files for Deluge so some GTK
+text/button strings will remain in English.
+
+[launchpad translations]: https://translations.launchpad.net/deluge/
+[python gettext]: http://docs.python.org/library/gettext.html
diff --git a/docs/source/depends.md b/docs/source/depends.md
new file mode 120000
index 0000000..974bd08
--- /dev/null
+++ b/docs/source/depends.md
@@ -0,0 +1 @@
+../../DEPENDS.md \ No newline at end of file
diff --git a/docs/source/devguide/how-to/curl-jsonrpc.md b/docs/source/devguide/how-to/curl-jsonrpc.md
new file mode 100644
index 0000000..9bb559d
--- /dev/null
+++ b/docs/source/devguide/how-to/curl-jsonrpc.md
@@ -0,0 +1,162 @@
+# How to connect to JSON-RPC with curl
+
+Before continuing make sure `deluge-web` or Web UI plugin is running.
+
+## Create a curl configuration file
+
+To save a lot of typing and to keep the curl command short we shall create
+a `curl.cfg` files and put the following contents in it:
+
+ request = "POST"
+ compressed
+ cookie = "cookie_deluge.txt"
+ cookie-jar = "cookie_deluge.txt"
+ header = "Content-Type: application/json"
+ header = "Accept: application/json"
+ url = "http://localhost:8112/json"
+ write-out = "\n"
+
+To pretty-print the JSON result see: <https://stackoverflow.com/q/352098/175584>
+
+## Log in to Web UI
+
+Log in to the Web UI and get session cookie:
+
+ curl -d '{"method": "auth.login", "params": ["deluge"], "id": 1}' -K curl.cfg
+
+Result is `true` to signify that login was successful:
+
+ {
+ "error": null,
+ "id": 1,
+ "result": true
+ }
+
+Check the contents of the cookie file to verify session ID created.
+
+ cat cookie_deluge.txt
+ # Netscape HTTP Cookie File
+ # http://curl.haxx.se/docs/http-cookies.html
+ # This file was generated by libcurl! Edit at your own risk.
+
+ localhost FALSE /json FALSE 1540061203 _session_id <session_id>
+
+## Check connected to deluged
+
+Use the `web.connected` method to get a boolean response if the Web UI is
+connected to a deluged host:
+
+ curl -d '{"method": "web.connected", "params": [], "id": 1}' -K curl.cfg
+
+Result is `false` because Web UI is not yet connected to the daemon:
+
+ {
+ "error": null,
+ "id": 1,
+ "result": false
+ }
+
+## Get list of deluged hosts
+
+Use the `web.get_hosts` method:
+
+ curl -d '{"method": "web.get_hosts", "params": [], "id": 1}' -K curl.cfg
+
+The result contains the `<hostID>` for using in request `params` field.
+
+ {
+ "error": null,
+ "id": 1,
+ "result": [
+ [
+ "<hostID>",
+ "127.0.0.1",
+ 58846,
+ "localclient"
+ ]
+ ]
+ }
+
+## Get the deluged host status
+
+ curl -d '{"method": "web.get_host_status", \
+ "params": ["<hostID>"], "id": 1}' -K curl.cfg
+
+The result shows the version and status; _online_, _offline_ or _connected_.
+
+ {
+ "error": null,
+ "id": 1,
+ "result": [
+ "<hostID>",
+ "Online",
+ "2.0.0"
+ ]
+ }
+
+## Connect to deluged host
+
+To connect to deluged with `<hostID>`:
+
+ curl -d '{"method": "web.connect", \
+ "params": ["<hostID>"], "id": 1}' -K curl.cfg
+
+The result contains the full list of available host methods:
+
+ {
+ "error": null,
+ "id": 1,
+ "result": [
+ "core.add_torrent_url",
+ ...
+ "core.upload_plugin"
+ ]
+ }
+
+## Disconnect from host
+
+ curl -d '{"method": "web.disconnect", "params": [], "id": 1}' -K curl.cfg
+
+A successful result:
+
+ {
+ "error": null,
+ "id": 1,
+ "result": "Connection was closed cleanly."
+ }
+
+## Add a torrent
+
+ curl -d '{"method": "web.add_torrents", "params": \
+ [[{"path":"/tmp/ubuntu-12.04.1-desktop-amd64.iso.torrent", \
+ "options":null}]], "id": 1}' -K curl.cfg
+
+## Add a magnet URI
+
+ curl-d '{"method": "core.add_torrent_magnet", \
+ "params": ["<magnet_uri>", {}], "id": 1}' -K curl.cfg
+
+## Get list of files for a torrent
+
+ curl -d '{"method": "web.get_torrent_files", \
+ "params": ["<torrentid>"], "id": 1}' -K curl.cfg
+
+## Set a core config option
+
+ curl -d '{"method": "core.set_config", \
+ "params":[{"max_upload_slots_global":"200"}], "id": 1}' -K curl.cfg
+
+ {"error": null, "result": null, "id": 1}
+
+## Useful curl configuration options
+
+For full list of options see man page `man curl` or help `curl --help`:
+
+ --cookie (-b) # Load cookie file with session id
+ --cookie-jar (-c) # Save cookie file with session id
+ --compressed # responses are gzipped
+ --include (-i) # Include the HTTP header in output (optional)
+ --header (-H) # HTTP header
+ --request (-X) # custom request method
+ --data (-d) # data to send in POST request '{"method": "", "params": [], "id": ""}'
+ --insecure (-k) # use with self-signed certs https
diff --git a/docs/source/devguide/how-to/index.md b/docs/source/devguide/how-to/index.md
new file mode 100644
index 0000000..e63c771
--- /dev/null
+++ b/docs/source/devguide/how-to/index.md
@@ -0,0 +1,23 @@
+# How-to guides
+
+A collection of guides for specific issues or to cover more detail than the tutorials.
+
+## Web JSON-RPC
+
+```{toctree}
+:titlesonly:
+
+Connect to JSON-RPC using curl <curl-jsonrpc>
+```
+
+## Plugins
+
+<!--
+- [Create a plugin](create-plugin.md)
+-->
+
+```{toctree}
+:titlesonly:
+
+Update 1.3 plugin for 2.0 <update-1.3-plugin>
+```
diff --git a/docs/source/devguide/how-to/update-1.3-plugin.md b/docs/source/devguide/how-to/update-1.3-plugin.md
new file mode 100644
index 0000000..9ce6ae1
--- /dev/null
+++ b/docs/source/devguide/how-to/update-1.3-plugin.md
@@ -0,0 +1,160 @@
+# How to update a Deluge 1.3 plugin for 2.0
+
+With the new code in Deluge 2.0 there are changes that require authors of
+existing plugins to update their plugins to work on Deluge 2.0.
+
+The main changes are with Python 3 support and the new GTK3 user interface with
+the dropping of GTK2. However it is still possible for a 1.3 plugin to be made
+compatible with 2.0 and this guide aims to helps with that process.
+
+## Python
+
+### Python version matching
+
+Ensure your code is Python >=3.6 compatible.
+
+In `1.3-stable` the plugins that were built with a specific version of Python
+would only be loaded if the system Python also matched.
+
+This has change in Deluge 2.0 and it will load any Python version of plugin
+eggs so compatibility is essential for end-users not to encounter issues.
+
+## GTK 3 addition
+
+In order to support both Deluge 1.3 and 2.0 all existing plugin GTK UI files
+must be copied and then converted to contain only GTK3 code with the old files
+still using PyGTK e.g.:
+
+ cp gtkui.py gtk3ui.py
+
+### Convert from libglade to GtkBuilder
+
+With PyGTK there were two library options for creating the user interface from
+XML files by default Deluge plugins used libglade but that has been deprecated
+and removed in GTK3. So the libglade `.glade` files will need converted to
+GtkBuilder `.ui` files and the Python code updated.
+
+See the official [Migrating to GtkBuilder][migrate-gtkbuilder] document for more details.
+
+#### GtkBuilder conversion script
+
+Install the `gtk-builder-convert` converter on Ubuntu with:
+
+ sudo apt install libgtk2.0-dev
+
+To convert your GTK run it like so:
+
+ gtk-builder-convert data/config.glade data/config.ui
+
+#### Glade UI designer for GTK2
+
+The above conversion can also be done in Glade UI designer (version <=3.8).
+
+In the preferences select `GtkBuilder` as the project file format. Ensure
+that the minimum Gtk version is set to 2.24 and fix any deprecated widgets.
+
+The updated file should be saved with file extension `.ui`.
+
+#### Python code changes
+
+The code needs to replace `gtk.glade` references with `gtk.Builder` and the
+first step is updating how the files are loaded:
+
+```diff
+- glade = gtk.glade.XML(get_resource("config.glade"))
++ builder = Gtk.Builder.new_from_file(get_resource("config.ui"))
+```
+
+Replace signals method:
+
+```diff
+- glade.signal_autoconnect(self)
++ builder.connect_signals(self)
+```
+
+Replace `get_widget` with `get_object`:
+
+```diff
+- glade.get_widget
++ builder.get_object
+```
+
+Check for any remaining `glade` methods and replace with the `builder` equivalents.
+
+### Migrate XML files to GTK3
+
+If you open and save the file it will update with the new requirement header:
+
+ <!-- Generated with glade 3.18.3 -->
+ <interface>
+ <requires lib="gtk+" version="3.10"/>
+
+You can fix deprecated widgets but keep the minimum GTK version to <= 3.10 for
+desktop compatibility.
+
+An example of migrating a Deluge plugin to GtkBuilder: [AutoAdd GtkBuilder]
+
+### Gtk import rename
+
+Move from PyGTK to GTK3 using Python bindings.
+
+<https://pygobject.readthedocs.io/en/latest/guide/porting.html>
+
+ wget https://gitlab.gnome.org/GNOME/pygobject/raw/master/tools/pygi-convert.sh
+ cp gtkui.py gtk3ui.py
+ sh pygi-convert.sh gtk3ui.py
+
+```diff
+-import gtk
++from gi.repository import Gtk
+```
+
+```diff
+- self.builder = gtk.Builder()
++ self.builder = Gtk.Builder()
+```
+
+### Deluge GTK3
+
+#### Imports
+
+Imports will need renamed from `deluge.ui.gtkui` to `deluge.ui.gtk3`.
+
+There is also a new PluginBase for Gtk3 UI:
+
+```diff
+-from deluge.plugins.pluginbase import GtkPluginBase
++from deluge.plugins.pluginbase import Gtk3PluginBase
+-class GtkUI(GtkPluginBase):
++class Gtk3UI(Gtk3PluginBase):
+```
+
+#### Entry points
+
+To enable the GTK3 UI to find the plugin the entry points requires updating too.
+
+In the plugin `__init__.py` file add a new `Gtk3UIPlugin` class:
+
+```
+class Gtk3UIPlugin(PluginInitBase):
+ def __init__(self, plugin_name):
+ from .gtk3ui import Gtk3UI as _plugin_cls
+ self._plugin_cls = _plugin_cls
+ super(Gtk3UIPlugin, self).__init__(plugin_name)
+```
+
+A new entry for GTK3 UI can then be added to `setup.py`:
+
+```diff
+ [deluge.plugin.gtkui]
+ %s = %s:GtkUIPlugin
++ [deluge.plugin.gtk3ui]
++ %s = deluge_%s:Gtk3UIPlugin
+ [deluge.plugin.webui]
+ %s = %s:WebUIPlugin
+- """ % ((__plugin_name__, __plugin_name__.lower())*3)
++ """ % ((__plugin_name__, __plugin_name__.lower())*4)
+```
+
+[migrate-gtkbuilder]: https://developer.gnome.org/gtk2/stable/gtk-migrating-GtkBuilder.html
+[autoadd gtkbuilder]: https://git.deluge-torrent.org/deluge/commit/?h=develop&id=510a8b50b213cab804d693a5f122f9c0d9dd1fb3
diff --git a/docs/source/devguide/index.md b/docs/source/devguide/index.md
new file mode 100644
index 0000000..436a72a
--- /dev/null
+++ b/docs/source/devguide/index.md
@@ -0,0 +1,13 @@
+# Development guide
+
+This is a guide to help with developing Deluge.
+
+```{toctree}
+:titlesonly:
+
+Tutorials <tutorials/index>
+how-to/index
+Packaging <packaging/index>
+../changelog
+../depends
+```
diff --git a/docs/source/devguide/packaging/index.md b/docs/source/devguide/packaging/index.md
new file mode 100644
index 0000000..aa7293a
--- /dev/null
+++ b/docs/source/devguide/packaging/index.md
@@ -0,0 +1,9 @@
+# Packaging documentation
+
+```{toctree}
+:titlesonly:
+
+release
+launchpad-recipe
+windows
+```
diff --git a/docs/source/devguide/packaging/launchpad-recipe.md b/docs/source/devguide/packaging/launchpad-recipe.md
new file mode 100644
index 0000000..7d48727
--- /dev/null
+++ b/docs/source/devguide/packaging/launchpad-recipe.md
@@ -0,0 +1,43 @@
+# Launchpad recipe
+
+The launchpad build recipes are for build from source automatically to provide
+Ubuntu packages. They are used to create daily builds of a Deluge git branch.
+
+Note these don't have the same control as a creating a publishing to PPA.
+
+Main reference: <https://help.launchpad.net/Packaging/SourceBuilds/Recipes>
+
+## Deluge Launchpad build recipes
+
+Recipe configuration: <https://code.launchpad.net/~deluge-team/+recipes>
+
+An example for building the develop branch:
+
+ # git-build-recipe format 0.4 deb-version 2.0.0.dev{revno}+{git-commit}+{time}
+ lp:deluge develop
+ nest-part packaging lp:~calumlind/+git/lp_deluge_deb debian debian develop
+
+There are two parts, first to get the source code branch and then the `debian`
+files for building the package.
+
+## Testing and building locally
+
+Create a `deluge.recipe` file with the contents from launchpad and create the
+build files with `git-build-recipe`:
+
+ git-build-recipe --allow-fallback-to-native deluge.recipe lp_build
+
+Setup [pbuilder] and build the deluge package:
+
+ sudo pbuilder build lp_build/deluge*.dsc
+
+Alternatively to build using local files with [pdebuild]:
+
+ cd lp_build/deluge/deluge
+ pdebuild
+
+This will allow modifying the `debian` files to test changes to `rules` or
+`control`.
+
+[pbuilder]: https://wiki.ubuntu.com/PbuilderHowto
+[pdebuild]: https://wiki.ubuntu.com/PbuilderHowto#pdebuild
diff --git a/docs/source/devguide/packaging/release.md b/docs/source/devguide/packaging/release.md
new file mode 100644
index 0000000..e02a09a
--- /dev/null
+++ b/docs/source/devguide/packaging/release.md
@@ -0,0 +1,54 @@
+# Release Checklist
+
+## Pre-release
+
+- Update [translation] `po` files from [Launchpad] account.
+- Changelog is updated with relevant commits and release date is added.
+- Docs [release notes] are updated.
+- Tag release in git and push upstream e.g.
+
+ git tag -a deluge-2.0.0 -m "Deluge 2.0.0 Release"
+
+## Release
+
+- Create source and wheel distributions:
+
+ python setup.py sdist bdist_wheel
+
+- Upload to PyPi (only accepts `tar.gz`):
+
+ twine upload dist/deluge-2.0.0.tar.gz dist/deluge-2.0.0-py3-none-any.whl
+
+- Calculate `sha256sum` for each file e.g.
+
+ cd dist; sha256sum deluge-2.0.0.tar.xz > deluge-2.0.0.tar.xz.sha256
+
+- Upload source tarballs and packages to `ftp-osl.osuosl.org`.
+
+ - Ensure file permissions are global readable: `0644`
+ - Sub-directories correspond to _major.minor_ version e.g. all `2.0.x` patch
+ releases are stored in `source/2.0`.
+ - Change release version in `version*` files, create a new version file for
+ any major releases.
+ - SSH into OSUOSL FTP site and run `trigger-deluge` to sync files.
+
+- Create packages (Ubuntu, Windows, OSX).
+ - Ubuntu: <https://code.launchpad.net/~deluge-team/+recipe/stable-releases>
+ - Ensure launchpad git repo has sync'd to get latest version
+ - Update version in recipe (reset any dash number to 0)
+ - Check for new distribution series needing selected.
+ - Request build for selected series.
+
+## Post-release
+
+- Update with version, hashes and release notes:
+ - Publish new docs version on [ReadTheDocs].
+ - [Wikipedia]
+- Close Trac milestone and add new milestone version for future tickets.
+- Ensure all stable branch commits are also applied to development branch.
+
+[readthedocs]: https://deluge.readthedocs.io
+[wikipedia]: http://en.wikipedia.org/wiki/Deluge_%28software%29
+[launchpad]: https://translations.launchpad.net/deluge
+[translation]: ../../contributing/translations.md
+[release notes]: ../../releases/index.md
diff --git a/docs/source/devguide/packaging/windows.md b/docs/source/devguide/packaging/windows.md
new file mode 100644
index 0000000..253eac0
--- /dev/null
+++ b/docs/source/devguide/packaging/windows.md
@@ -0,0 +1,10 @@
+# Packaging for Windows
+
+Currently there is no working package for Deluge 2.0. The previous Python freezing
+application `bbfreeze` is not compatible with Python 3 and the project is no longer
+maintained.
+
+There are two alternatives `cxfreeze` and `pyinstaller` but neither is trivial with
+the GTKUI application.
+
+See [#3201](https://dev.deluge-torrent.org/ticket/3201)
diff --git a/docs/source/devguide/tutorials/01-setup.md b/docs/source/devguide/tutorials/01-setup.md
new file mode 100644
index 0000000..02195b1
--- /dev/null
+++ b/docs/source/devguide/tutorials/01-setup.md
@@ -0,0 +1,85 @@
+# Setup tutorial for Deluge development
+
+The aim of this tutorial is to download the source code and setup an
+environment to enable development work on Deluge.
+
+## Pre-requisites
+
+To build and run the Deluge applications they depends on tools and libraries as
+listed in DEPENDS.md.
+
+Almost all of the Python packages dependencies will be installed using pip but
+there are some packages or libraries that are required to be installed to the
+system.
+
+### Ubuntu
+
+#### Build tools
+
+ sudo apt install git intltool closure-compiler python3-pip
+ pip3 install --user tox
+
+You might need to add `~/.local/bin` to your PATH.
+
+#### Runtime libraries and tools
+
+ sudo apt install python3-libtorrent python3-geoip python3-dbus python3-gi \
+ python3-gi-cairo gir1.2-gtk-3.0 gir1.2-appindicator3 python3-pygame libnotify4 \
+ librsvg2-common xdg-utils
+
+## Setup development environment
+
+### Clone Deluge git repository
+
+Download the latest git code to local folder.
+
+ git clone git://deluge-torrent.org/deluge.git
+ cd deluge
+
+### Create Python virtual environment
+
+Creation of a [Python virtual environment] keeps the development isolated
+and easier to maintain and Tox has an option to make this process easier:
+
+ tox -e denv
+
+Activate virtual environment:
+
+ source .venv/bin/activate
+
+Deluge will be installed by Tox in _develop_ mode which creates links back
+to source code so that changes will be reflected immediately without repeated
+installation. Check it is installed with:
+
+ (.venv) $ deluge --version
+ deluge-gtk 2.0.0b2.dev149
+ libtorrent: 1.1.9.0
+ Python: 2.7.12
+ OS: Linux Ubuntu 16.04 xenial
+
+### Setup pre-commit hook
+
+Using [pre-commit] ensures submitted code is checked for quality when
+creating git commits.
+
+ (.venv) $ pre-commit install
+
+You are now ready to start playing with the source code.
+
+### Reference
+
+- [Contributing]
+- [Key requirements concepts]
+
+<!--
+## How-to guides
+
+- How to install plugins in develop mode?
+- How to setup and test translations?
+- How to run tests?
+- How to create a plugin?
+-->
+
+[pre-commit]: https://pre-commit.com
+[contributing]: https://dev.deluge-torrent.org/wiki/Contributing
+[requirements topic]: ../topics/requirements.md
diff --git a/docs/source/devguide/tutorials/index.md b/docs/source/devguide/tutorials/index.md
new file mode 100644
index 0000000..2a47252
--- /dev/null
+++ b/docs/source/devguide/tutorials/index.md
@@ -0,0 +1,10 @@
+# Developer tutorials
+
+A list of articles to help developers get started with Deluge.
+
+```{toctree}
+:numbered: 1
+:titlesonly:
+
+Development setup <01-setup>
+```
diff --git a/docs/source/how-to/index.md b/docs/source/how-to/index.md
new file mode 100644
index 0000000..7005a34
--- /dev/null
+++ b/docs/source/how-to/index.md
@@ -0,0 +1,27 @@
+# How-to guides
+
+A collection of guides covering common issues that might be encountered using Deluge.
+
+## GTK UI
+
+```{toctree}
+:titlesonly:
+
+Set default torrent application <set-mime-type>
+```
+
+## Deluge as a service
+
+Services are used to start applications on system boot and leave them running
+in the background. They will also stop the application nicely on system
+shutdown and automatically restart them if they crash.
+
+The Deluge daemon deluged and Web UI deluge-web can both be run as services.
+
+```{toctree}
+:titlesonly:
+
+Create systemd services for Linux <systemd-service>
+Create launchd services for macOS <launchd-service>
+Create NSSM services for Windows <nssm-service>
+```
diff --git a/docs/source/how-to/launchd-service.md b/docs/source/how-to/launchd-service.md
new file mode 100644
index 0000000..53c21be
--- /dev/null
+++ b/docs/source/how-to/launchd-service.md
@@ -0,0 +1,50 @@
+# How to create launchd services for macOS
+
+The following launchd script uses a separate user deluge, this is optional
+but recommended for security. To create a new deluge user follow the
+​[Apple help] steps.
+
+The paths to `deluged` and `deluge-web` assumes installation using [Homebrew]
+and will need modified if using other installation methods e.g. `Deluge.app`.
+
+## Daemon (deluged) service
+
+Create the file `/Library/LaunchDaemons/org.deluge-torrent.deluged.plist`
+containing the following:
+
+```{eval-rst}
+.. literalinclude:: ../../../packaging/osx/launchd/org.deluge-torrent.deluged.plist
+ :language: xml
+```
+
+Set the service to load on startup and then start it:
+
+```console
+sudo launchctl load -w /Library/LaunchDaemons/org.deluge-torrent.deluged.plist
+sudo launchctl start org.deluge-torrent.deluged
+```
+
+## Web UI (deluge-web) service
+
+Create the file `/Library/LaunchDaemons/org.deluge-torrent.deluge-web.plist`
+containing the following:
+
+```{eval-rst}
+.. literalinclude:: ../../../packaging/osx/launchd/org.deluge-torrent.deluge-web.plist
+ :language: xml
+```
+
+Set the service to load on startup and then start it:
+
+```console
+sudo launchctl load -w /Library/LaunchDaemons/org.deluge-torrent.deluge-web.plist
+sudo launchctl start org.deluge-torrent.deluge-web
+```
+
+## Logging
+
+Logging is enabled by default in the above script, error level, and can be
+modified as required.
+
+[apple help]: https://support.apple.com/en-gb/guide/mac-help/mtusr001/mac
+[homebrew]: https://brew.sh/
diff --git a/docs/source/how-to/nssm-service.md b/docs/source/how-to/nssm-service.md
new file mode 100644
index 0000000..1e39bf4
--- /dev/null
+++ b/docs/source/how-to/nssm-service.md
@@ -0,0 +1,38 @@
+# How to create NSSM services for Windows
+
+Download ​[NSSM] and read their usage page about installing.
+
+In order for the services to be stopped properly, use the debug application
+versions (ending in `-debug.exe`).
+
+## Daemon (deluged) service
+
+Create a `deluged` service:
+
+```console
+nssm install deluged
+```
+
+The following are minimum UI changes required for the service to work:
+
+```
+Path: C:\Program Files\Deluge\deluged-debug.exe
+Arguments: -c C:\config_location
+```
+
+## Web UI (deluge-web) service
+
+```console
+nssm install deluge-web
+```
+
+```
+Path: C:\Program Files\Deluge\deluge-web-debug.exe
+Arguments: -c C:\config_location
+```
+
+If Web UI is not accessible outside your machine (if you're running
+Deluge from a home server), you have to whitelist Deluge in your Windows
+Firewall for the `deluge-web` and `deluge-web-debug` executable.
+
+[nssm]: http://nssm.cc/
diff --git a/docs/source/how-to/set-mime-type.md b/docs/source/how-to/set-mime-type.md
new file mode 100644
index 0000000..29bad15
--- /dev/null
+++ b/docs/source/how-to/set-mime-type.md
@@ -0,0 +1,24 @@
+# How to set Deluge as default torrent application
+
+## Check registered MIME types
+
+ gio mime application/x-bittorrent
+ gio mime x-scheme-handler/magnet
+
+## Set Deluge as default for MIME types
+
+ gio mime x-scheme-handler/magnet deluge.desktop
+ gio mime application/x-bittorrent deluge.desktop
+
+## Troubleshooting
+
+ update-mime-database ~/.local/share/mime
+ update-desktop-database ~/.local/share/applications
+
+### XDG Check
+
+ xdg-mime query default x-scheme-handler/magnet
+
+## References
+
+<https://help.gnome.org/admin/system-admin-guide/stable/mime-types-custom-user.html.en>
diff --git a/docs/source/how-to/systemd-service.md b/docs/source/how-to/systemd-service.md
new file mode 100644
index 0000000..611ecc1
--- /dev/null
+++ b/docs/source/how-to/systemd-service.md
@@ -0,0 +1,205 @@
+# How to create systemd services for Linux
+
+This guide walks you through setting up Deluge systemd services on Linux.
+
+Ensure Deluge daemon `deluged` and Web UI `deluge-web` are installed. Use
+`which` to check installation paths and if necessary modify the service
+file `ExecStart` lines to point to alternative paths.
+
+## Create a service specific user
+
+For security it is best to run a service with a specific user and group.
+You can create one using the following command:
+
+```console
+sudo adduser --system --gecos "Deluge Service" --disabled-password --group --home /var/lib/deluge deluge
+```
+
+This creates a new system user and group named `deluge` with no login access
+and home directory `/var/lib/deluge` which will be the default location for the
+config files.
+
+In addition you can add to the `deluge` group any users you wish to be able to
+easily manage or access files downloaded by Deluge, for example:
+
+```console
+sudo adduser <username> deluge
+```
+
+## Daemon (deluged) service
+
+Create the file `/etc/systemd/system/deluged.service` containing the following:
+
+```{eval-rst}
+.. literalinclude:: ../../../packaging/systemd/deluged.service
+ :language: ini
+```
+
+### User configuration
+
+To run the service using the previously created user e.g. `deluge`, first
+create the service configuration directory:
+
+```console
+sudo mkdir /etc/systemd/system/deluged.service.d/
+```
+
+Then create a user file `/etc/systemd/system/deluged.service.d/user.conf` with
+the following contents:
+
+```{eval-rst}
+.. literalinclude:: ../../../packaging/systemd/user.conf
+ :language: ini
+```
+
+### Start deluged service
+
+Now enable it to start up on boot, start the service and verify it is running:
+
+```console
+sudo systemctl enable /etc/systemd/system/deluged.service
+sudo systemctl start deluged
+sudo systemctl status deluged
+```
+
+### Umask for deluged downloaded files
+
+The `umask` in the service file can be modified to determine access to files
+downloaded by deluged (also applies to logging files). Some useful access
+values are detailed as follows:
+
+- `000` - full access for all users and groups.
+- `007` - only user and group that `deluged` is running as (e.g. `deluge`)
+ with no access from any other accounts.
+- `002` - user and group `deluged` is running as with read-only for all other
+ accounts.
+- `022` - user `deluged` is running as with read-only for all other accounts.
+
+The service for `deluged` must be stopped and started instead of just restarted
+after changes.
+
+## Web UI (deluge-web) service
+
+Create the file `/etc/systemd/system/deluge-web.service` containing the following:
+
+```{eval-rst}
+.. literalinclude:: ../../../packaging/systemd/deluge-web.service
+ :language: ini
+```
+
+### User configuration
+
+To run the service using the previously created user e.g. `deluge`, first
+create the service configuration directory:
+
+```
+sudo mkdir /etc/systemd/system/deluge-web.service.d/
+```
+
+Then create a user file `/etc/systemd/system/deluge-web.service.d/user.conf` with
+the following contents:
+
+```{eval-rst}
+.. literalinclude:: ../../../packaging/systemd/user.conf
+ :language: ini
+```
+
+### Start deluge-web service
+
+Now enable it to start up on boot, start the service and verify it is running:
+
+```console
+sudo systemctl enable /etc/systemd/system/deluge-web.service
+sudo systemctl start deluge-web
+sudo systemctl status deluge-web
+```
+
+## Service logging
+
+Create a log directory for Deluge and give the service user (e.g. `deluge`), full access:
+
+```console
+sudo mkdir -p /var/log/deluge
+sudo chown -R deluge:deluge /var/log/deluge
+sudo chmod -R 750 /var/log/deluge
+```
+
+The deluge log directory is now configured so that user `deluge` has full
+access, group `deluge` read only and everyone else denied access. The `umask`
+specified in the services sets the permission of new log files.
+
+Enable logging in the service files by editing the `ExecStart` line, appending
+`-l` and `-L` options:
+
+```
+ExecStart=/usr/bin/deluged -d -l /var/log/deluge/daemon.log -L warning
+```
+
+```
+ExecStart=/usr/bin/deluge-web -d -l /var/log/deluge/web.log -L warning
+```
+
+See `deluged -h` for all available log-levels.
+
+Restart the services:
+
+```console
+sudo systemctl daemon-reload
+sudo systemctl restart deluged
+sudo systemctl restart deluge-web
+```
+
+### Log rotation
+
+To enable log rotation append `--logrotate` to the above `ExecStart` lines.
+
+## Conditionally start deluged for mount points
+
+If you have a USB disk drive or network drive that may not be immediately
+available on boot or disconnected at random then you may want the `deluged`
+service to wait for mount point to be ready before starting. If they are
+unmounted or disconnected then `deluged` is stopped. When they become available
+again `deluged` is started.
+
+Ensure you have added the correct drive details to `fstab` or equivalent so
+they are mounted at boot.
+
+List the available drive mounts:
+
+```console
+sudo systemctl -t mount
+```
+
+Look for your mount point in the `Description` column. Mounts are formatted
+similar to the mount point with `-`s replacing `/`s in the path.
+e.g.: `media-xyz.mount`
+
+Modify the `[Unit]` section of the `deluged.service` script by adding the
+details below, substituting `xyz.mount` for the mount you want the service
+to depend on:
+
+```ini
+[Unit]
+Description=Deluge Bittorrent Client Daemon
+# Start after network and specified mounts are available.
+After=network-online.target xyz.mount
+Requires=xyz.mount
+# Stops deluged if mount points disconnect
+BindsTo=xyz.mount
+```
+
+For multiple mount points add a space between additional entries. e.g.:
+
+```ini
+After=network-online.target xyz.mount abc.mount def.mount
+```
+
+Modify the `[Install]` section to ensure the deluged service is started when
+the mount point comes back online:
+
+```ini
+[Install]
+WantedBy=multi-user.target xyz.mount
+```
+
+Reference: [systemd.unit](https://www.freedesktop.org/software/systemd/man/systemd.unit.html#RequiresMountsFor=)
diff --git a/docs/source/index.rst b/docs/source/index.rst
new file mode 100644
index 0000000..b46b8f4
--- /dev/null
+++ b/docs/source/index.rst
@@ -0,0 +1,18 @@
+Deluge documentation
+====================
+
+Contents
+--------
+
+.. toctree::
+ :maxdepth: 2
+
+ Getting started <intro/index.md>
+ How-to guides <how-to/index.md>
+ Release notes <releases/index.md>
+ Contributing <contributing/index.md>
+ Developer guide <devguide/index.md>
+ Reference <reference/index.rst>
+
+* :ref:`genindex`
+* :ref:`modindex`
diff --git a/docs/source/intro/01-install.md b/docs/source/intro/01-install.md
new file mode 100644
index 0000000..15e9945
--- /dev/null
+++ b/docs/source/intro/01-install.md
@@ -0,0 +1,133 @@
+# Installing Deluge
+
+Instructions for installing Deluge.
+
+## <i class="fa fa-linux"></i> Linux
+
+### <i class="icon-ubuntu"></i> Ubuntu
+
+One-click [**Install**](https://tinyurl.com/installdeluge)
+
+```
+sudo apt install deluge
+```
+
+[Package Details](https://packages.ubuntu.com/deluge)
+
+### <i class="icon-fedora"></i> Fedora
+
+```
+sudo dnf install deluge
+```
+
+[Package Details](https://src.fedoraproject.org/rpms/deluge)
+
+### <i class="icon-archlinux"></i> Arch
+
+```
+pacman -S deluge-gtk
+```
+
+[Arch Wiki](https://wiki.archlinux.org/title/Deluge)
+
+### <i class="icon-suse"></i> OpenSUSE
+
+[**1 Click Install**](http://packman.links2linux.org/install/deluge)
+
+[Package Details](https://software.opensuse.org/package/deluge)
+
+### <i class="icon-gentoo"></i> Gentoo
+
+[Package Details](https://packages.gentoo.org/packages/net-p2p/deluge)
+
+### Flatpak
+
+One-click [**Install**](https://dl.flathub.org/repo/appstream/org.deluge_torrent.deluge.flatpakref)
+
+[Package Details](https://flathub.org/apps/details/org.deluge_torrent.deluge)
+
+## <i class="fa fa-windows"></i> Windows
+
+Download [installer](https://ftp.osuosl.org/pub/deluge/windows/?C=M;O=D)
+
+Availble for Windows 7, 8 & 10 for both 32-bit and 64-bit OSes.
+
+## <i class="fa fa-apple"></i> macOS
+
+Unfortunately no official installer package currently available.
+
+See [Alternative Installs](#alternative-installs)
+
+## <i class="icon-freebsd"></i> FreeBSD
+
+```
+pkg add deluge
+```
+
+[Package details](https://www.freshports.org/net-p2p/deluge/)
+
+## <i class="icon-python"></i> PyPi
+
+Install with pip:
+
+ pip install deluge
+
+Install with all [optional dependencies][depends]:
+
+ pip install deluge[all]
+
+Will require system installed packages such as libtorent and GTK3. See [DEPENDS]
+
+e.g. on Ubuntu/Debian install these packages:
+
+ sudo apt install python3-pip python3-libtorrent python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-appindicator3
+
+## Alternative Installs
+
+### Ubuntu PPA
+
+The [stable PPA] contains the latest releases.
+
+ sudo add-apt-repository -u ppa:deluge-team/stable
+ sudo apt install deluge
+
+The [development PPA] contains daily builds from the `develop` branch.
+
+ sudo add-apt-repository -u ppa:deluge-team/develop
+ sudo apt install deluge
+
+### macOS Community
+
+#### Unofficial `.app` packages
+
+Check sticky topics in [MacOS Forum]
+
+#### Macports
+
+```
+sudo port install deluge
+```
+
+[Package Details](https://ports.macports.org/port/deluge/)
+
+#### Homebrew
+
+1. Install [Homebrew]
+1. Open a terminal to install required packages:
+
+ brew install pygobject3 gtk+3 adwaita-icon-theme
+ brew install libtorrent-rasterbar
+
+1. To fix translations:
+
+ brew link gettext --force
+
+1. Install Deluge:
+
+ pip install deluge
+
+[development ppa]: https://launchpad.net/~deluge-team/+archive/ubuntu/develop/
+[stable ppa]: https://launchpad.net/~deluge-team/+archive/ubuntu/stable/
+[homebrew]: https://brew.sh/
+[macos forum]: https://forum.deluge-torrent.org/viewforum.php?f=13
+[depends]: ../depends.md
diff --git a/docs/source/intro/index.md b/docs/source/intro/index.md
new file mode 100644
index 0000000..ff0f841
--- /dev/null
+++ b/docs/source/intro/index.md
@@ -0,0 +1,16 @@
+# Getting started with Deluge
+
+This is a starting point if you are new to Deluge where we will walk
+you through getting up and running with our BitTorrent client.
+
+```{toctree}
+:numbered: 1
+:titlesonly:
+
+01-install
+```
+
+<!--
+2. Using Deluge
+3. Install a plugin
+-->
diff --git a/docs/source/modules/modules.rst b/docs/source/modules/modules.rst
new file mode 100644
index 0000000..ea1b6e8
--- /dev/null
+++ b/docs/source/modules/modules.rst
@@ -0,0 +1,10 @@
+:orphan:
+
+deluge
+======
+
+
+.. toctree::
+ :maxdepth: 4
+
+ deluge
diff --git a/docs/source/reference/api.rst b/docs/source/reference/api.rst
new file mode 100644
index 0000000..75673af
--- /dev/null
+++ b/docs/source/reference/api.rst
@@ -0,0 +1,14 @@
+Deluge RPC API
+==============
+
+* :doc:`rpc`
+
+.. autoclass:: deluge.core.core.Core
+ :members:
+ :exported:
+ :noindex:
+
+.. autoclass:: deluge.core.daemon.Daemon
+ :members:
+ :exported:
+ :noindex:
diff --git a/docs/source/reference/index.rst b/docs/source/reference/index.rst
new file mode 100644
index 0000000..a6dea3a
--- /dev/null
+++ b/docs/source/reference/index.rst
@@ -0,0 +1,11 @@
+Reference
+=========
+
+Technical reference material.
+
+.. toctree::
+
+ Web UI <web>
+ Deluge RPC <rpc>
+ RPC API <api>
+ Web API <webapi>
diff --git a/docs/source/reference/rpc.rst b/docs/source/reference/rpc.rst
new file mode 100644
index 0000000..7454bd2
--- /dev/null
+++ b/docs/source/reference/rpc.rst
@@ -0,0 +1,98 @@
+Deluge RPC
+==========
+---------------
+Message Formats
+---------------
+DelugeRPC is a protocol used for daemon/client communication. There are four
+types of messages involved in the protocol: RPC Request, RPC Response,
+RPC Error and Event. All messages are zlib compressed with rencode encoded strings
+and their data formats are detailed below.
+
+"""""""""""
+RPC Request
+"""""""""""
+This message is created and sent by the client to the server requesting that a
+remote method be called. Multiple requests can be bundled in a list.
+
+**[[request_id, method, [args], {kwargs}], ...]**
+
+**request_id** (int)
+ An integer determined by the client that is used in replies from the server.
+ This is used to ensure the client knows which request the data is in
+ response to. Another alternative would be to respond in the same order the
+ requests come in, but this could cause lag if an earlier request takes
+ longer to process.
+
+**method** (str)
+ The name of the remote method to call. This name can be in dotted format to
+ call other objects or plugins methods.
+
+**args** (list)
+ The arguments to call the method with.
+
+**kwargs** (dict)
+ The keyword arguments to call the method with.
+
+""""""""""""
+RPC Response
+""""""""""""
+This message is created and sent in response to a RPC Request from a client. It
+will hold the return value of the requested method call. In the case of an
+error, a RPC Error message will be sent instead.
+
+**[message_type, request_id, [return_value]]**
+
+**message_type** (int)
+ This will be a RPC_RESPONSE type id. This is used on the client side to
+ determine what kind of message is being received from the daemon.
+
+**request_id** (int)
+ The request_id is the same as the one sent by the client in the initial
+ request. It used on the client side to determine what message this is in
+ response to.
+
+**return_value** (list)
+ The return value of the method call.
+
+"""""""""
+RPC Error
+"""""""""
+This message is created in response to an error generated while processing a
+RPC Request and will serve as a replacement for a RPC Response message.
+
+**[message_type, request_id, exception_type, exception_msg, traceback]**
+
+**message_type** (int)
+ This will be a RPC_ERROR type id.
+
+**request_id** (int)
+ The request_id is the same as the one sent by the client in the initial
+ request.
+
+**exception_type** (str)
+ The type of exception raised.
+
+**exception_msg** (str)
+ The message as to why the exception was raised.
+
+**traceback** (str)
+ The traceback of the generated exception.
+
+"""""
+Event
+"""""
+This message is created by the daemon and sent to the clients without being in
+response to a RPC Request. Events are generally sent for changes in the
+daemon's state that the clients need to be made aware of.
+
+**[message_type, event_name, data]**
+
+**message_type** (int)
+ This will be a RPC_EVENT type id.
+
+**event_name** (str)
+ This is the name of the event being emitted by the daemon.
+
+**data** (list)
+ Additional data to be sent with the event. This is dependent upon the event
+ being emitted.
diff --git a/docs/source/reference/web.md b/docs/source/reference/web.md
new file mode 100644
index 0000000..f0471ce
--- /dev/null
+++ b/docs/source/reference/web.md
@@ -0,0 +1,38 @@
+# Deluge Web UI
+
+The Deluge web interface is a full featured interface built using the ExtJS framework,
+running on top of a Twisted web server.
+
+## SSL Configuration
+
+By default the web interface will use the same private key and certificate as
+the Deluge daemon. You can use a different certificate/key and specify it in the Web UI
+config, see below for details.
+
+### Create SSL Certificate Examples
+
+Sample guide: [How to Create a SSL Certificate][ssl cert]
+
+#### Linux
+
+ openssl req -new -x509 -nodes -out deluge.cert.pem -keyout deluge.key.pem
+
+#### Windows
+
+ C:\OpenSSL\bin\openssl.exe req -config C:\OpenSSL\bin\openssl.cnf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
+
+### Enable Web UI SSL
+
+There are two ways to enable SSL encryption in the web server:
+
+- Specify in your config (accessible via the Preferences window).
+- Use `--ssl` when running the web server, overriding the configuration value to enable SSL.
+
+## Enable Development mode
+
+Append `?dev=true` to the Web UI URL to enable development mode, uses the source
+JavaScript files (if available) rather than compressed versions:
+
+ http://127.0.0.1:8112/?dev=true
+
+[ssl cert]: http://www.yatblog.com/2007/02/27/how-to-create-a-ssl-certificate/
diff --git a/docs/source/reference/webapi.rst b/docs/source/reference/webapi.rst
new file mode 100644
index 0000000..56aadfc
--- /dev/null
+++ b/docs/source/reference/webapi.rst
@@ -0,0 +1,17 @@
+Deluge Web JSON-RPC API
+=======================
+
+* Spec: `JSON-RPC v1 <https://www.jsonrpc.org/specification_v1>`_
+* URL: ``/json``
+* :doc:`api`
+
+
+.. autoclass:: deluge.ui.web.json_api.WebApi
+ :members:
+ :exported:
+ :noindex:
+
+.. autoclass:: deluge.ui.web.json_api.WebUtils
+ :members:
+ :exported:
+ :noindex:
diff --git a/docs/source/releases/2.0.md b/docs/source/releases/2.0.md
new file mode 100644
index 0000000..145171c
--- /dev/null
+++ b/docs/source/releases/2.0.md
@@ -0,0 +1,56 @@
+# Deluge 2.0 release notes
+
+Welcome to the latest release of Deluge, a long time in the making!
+
+## What's new
+
+Some of the highlights since the last major release.
+
+- Migrated to Python 3 with minimal support retained for Python 2.7.
+- Shiny new logo.
+- Multi-user support.
+- Performance updates to handle thousands of torrents with faster loading times.
+- A New Console UI which emulates GTK/Web UIs.
+- GTK UI migrated to GTK3 with UI improvements and additions.
+- Magnet pre-fetching to allow file selection when adding torrent.
+- Fully support libtorrent 1.2 release.
+- Language switching support.
+- Improved documentation hosted on ReadTheDocs.
+- AutoAdd plugin replaces built-in functionality.
+- Web UI now daemonizes by default so service scripts will require `-d` option.
+
+## Packaging
+
+### PyPi
+
+As well as the usual source tarball available for [download] we now have published
+Deluge on the PyPi software repository.
+
+- <https://pypi.org/project/deluge/>
+
+### Windows and MacOS
+
+Unfortunately there are no packages yet for [Windows] or MacOS but they are being worked
+on. For now alternative [install] methods are available for testing.
+
+## Upgrade considerations
+
+Deluge 2.0 is not compatible with Deluge 1.x clients or daemons so these will require
+upgrading too. Also third-party Python scripts may not be compatible if they directly
+connect to the Deluge client and will need migrating.
+
+Always make a backup of your [config] before a major version upgrade to guard against
+data loss.
+
+Translations may not be as up-to date so please help out, see [translations] page.
+
+Plugins written for Deluge 1.3 will need upgrading for Deluge 2.0, due to the
+requirement of Python 3 and GTK3 UI. There is a [update plugin] document to help
+Plugin authors update their plugins.
+
+[update plugin]: ../devguide/how-to/update-1.3-plugin.md
+[windows]: https://dev.deluge-torrent.org/ticket/3201
+[install]: https://deluge.readthedocs.io/en/latest/intro/01-install.html
+[config]: https://dev.deluge-torrent.org/wiki/Faq#WheredoesDelugestoreitssettingsconfig
+[translations]: ../contributing/translations.md
+[download]: http://download.deluge-torrent.org/source/2.0/
diff --git a/docs/source/releases/index.md b/docs/source/releases/index.md
new file mode 100644
index 0000000..69778a0
--- /dev/null
+++ b/docs/source/releases/index.md
@@ -0,0 +1,13 @@
+# Release notes
+
+A summary of the important changes in major releases of Deluge. For more details see
+the [changelog] or the [git commit log].
+
+```{toctree}
+:titlesonly:
+
+../changelog
+2.0
+```
+
+[git commit log]: http://git.deluge-torrent.org/deluge/log/?h=master
diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt
new file mode 100644
index 0000000..9a841f7
--- /dev/null
+++ b/docs/spelling_wordlist.txt
@@ -0,0 +1,42 @@
+Changelog
+tooltip
+Gtk
+libglade
+Wayland
+macOS
+codebase
+unmanaged
+rebase
+formatter
+camelCase
+docstring
+docstrings
+Pytest
+Tox
+pre
+Blocklist
+boolean
+daemonizes
+daemonize
+config
+Trac
+runtime
+codec
+auth
+hostlist
+hostname
+filesystem
+libtorrent
+Multi
+multi
+username
+whitelist
+systemd
+launchd
+plugin
+plugins
+app
+tarball
+tarballs
+Umask
+online
diff --git a/gen_web_gettext.py b/gen_web_gettext.py
new file mode 100755
index 0000000..80186e9
--- /dev/null
+++ b/gen_web_gettext.py
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2009-2012 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""Script to parse javascript files for translation strings and generate gettext.js"""
+
+import os
+import re
+
+WEBUI_JS_DIR = 'deluge/ui/web/js/deluge-all'
+# Enabling Debug adds file and line number as comments to the gettext file.
+DEBUG = False
+
+
+def check_missing_markup(js_dir):
+ """Search js to check for missed translation markup."""
+
+ # A list of common extjs attributes that are usually marked for translation.
+ attr_list = [
+ "text: '",
+ "msg: '",
+ "title: '",
+ "fieldLabel: '",
+ "boxLabel: '",
+ "tooltip: '",
+ "header: '",
+ "defaultText: '",
+ "unit: '",
+ r"setText\('",
+ r"addButton\('",
+ ]
+
+ # Don't match against any of these chars at start of string value.
+ except_chars = "' &#"
+
+ # A list of strings that should be skipped shuold the match contain them.
+ skip = ['HTTP:']
+
+ # Create a list of the matching strings to search for with the except_chars appended to each one.
+ string_re = re.compile(
+ '('
+ + ')|('.join(['%s[^' + except_chars + "].*'"] * len(attr_list))
+ % tuple(attr_list)
+ + ')'
+ )
+
+ strings = {}
+ for root, dnames, files in os.walk(js_dir):
+ for filename in files:
+ if os.path.splitext(filename)[1] != '.js':
+ continue
+ for lineno, line in enumerate(open(os.path.join(root, filename))):
+ for match in string_re.finditer(line):
+ for string in match.groups():
+ # Ignore string that contains only digits or specificied strings in skip.
+ if (
+ not string
+ or string.split('\'')[1].isdigit()
+ or any(x in string for x in skip)
+ ):
+ continue
+ locations = strings.get(string, [])
+ locations.append(
+ (os.path.join(root, filename), str(lineno + 1))
+ )
+ strings[string] = locations
+ return strings
+
+
+GETTEXT_TPL = (
+ 'GetText={maps:{},'
+ 'add:function(string,translation){this.maps[string]=translation},'
+ 'get:function(string){if (this.maps[string]){string=this.maps[string]} return string}};'
+ 'function _(string){return GetText.get(string)}'
+)
+GETTEXT_SUBST_TPL = "GetText.add('{key}','${{escape(_(\"{key}\"))}}')\n"
+
+
+def create_gettext_js(js_dir):
+ string_re = re.compile('_\\(\'(.*?)\'\\)')
+ strings = {}
+ for root, dnames, files in os.walk(js_dir):
+ for filename in files:
+ if filename.endswith('.js'):
+ filepath = os.path.join(root, filename)
+ with open(os.path.join(root, filename)) as _file:
+ for lineno, line in enumerate(_file, 1):
+ for match in string_re.finditer(line):
+ string = match.group(1)
+ locations = strings.get(string, [])
+ locations.append((filepath, lineno))
+ strings[string] = locations
+
+ gettext_file = os.path.join(os.path.dirname(js_dir), 'gettext.js')
+ with open(gettext_file, 'w') as fp:
+ fp.write(GETTEXT_TPL)
+ for key in sorted(strings):
+ if DEBUG:
+ fp.write(
+ '\n//: %s' % '//: '.join(['%s:%s\n' % x for x in strings[key]])
+ )
+ fp.write(GETTEXT_SUBST_TPL.format(key=key))
+ return gettext_file
+
+
+if __name__ == '__main__':
+ gettext_fname = create_gettext_js(WEBUI_JS_DIR)
+ print('Created: %s' % gettext_fname)
+ missed_markup = check_missing_markup(WEBUI_JS_DIR)
+ if missed_markup:
+ print('Possible missed text for translation markup:')
+ for text, filenames in missed_markup.iteritems():
+ for filename_lineno in filenames:
+ print('{:<58} {}'.format(':'.join(filename_lineno), text))
diff --git a/generate_pot.py b/generate_pot.py
new file mode 100755
index 0000000..fdc7bae
--- /dev/null
+++ b/generate_pot.py
@@ -0,0 +1,107 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2011-2013 Calum Lind <calumlind@gmail.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""Parses Python and Javascript code for translation strings to create the 'deluge.pot' template for translators"""
+
+import os
+import re
+from datetime import datetime
+from subprocess import call
+
+from version import get_version
+
+# Paths to exclude
+EXCLUSIONS = ['deluge/scripts', 'deluge/i18n', 'deluge/tests']
+WEBUI_JS_DIR = 'deluge/ui/web/js/deluge-all'
+WEBUI_RENDER_DIR = 'deluge/ui/web/render'
+INFILES_LIST = 'infiles.list'
+POT_FILEPATH = os.path.join('deluge', 'i18n', 'deluge.pot')
+
+RE_EXC_PLUGIN_BUILD = re.compile('deluge\\/plugins\\/.*\\/build')
+
+xgettext_cmd = [
+ 'xgettext',
+ '--from-code=UTF-8',
+ '-kN_:1',
+ '-f%s' % INFILES_LIST,
+ '-o%s' % POT_FILEPATH,
+ '--package-name=%s' % 'Deluge',
+ '--copyright-holder=%s' % 'Deluge Team',
+ '--package-version=%s' % get_version(prefix='deluge-', suffix='.dev0'),
+ '--msgid-bugs-address=%s' % 'http://deluge-torrent.org',
+]
+
+to_translate = []
+for dirpath, dirnames, filenames in os.walk('deluge'):
+ for filename in filenames:
+ if dirpath not in EXCLUSIONS and not RE_EXC_PLUGIN_BUILD.match(dirpath):
+ filepath = os.path.join(dirpath, filename)
+ if os.path.splitext(filepath)[1] in ('.py', '.glade'):
+ to_translate.append(filepath)
+ else:
+ if filename.endswith('.xml.in'):
+ gtxt_type = 'gettext/xml'
+ elif filename.endswith('.in'):
+ gtxt_type = 'gettext/ini'
+ elif filename.endswith('.ui'):
+ gtxt_type = 'gettext/glade'
+ else:
+ continue
+ call(['intltool-extract', '--quiet', '--type=%s' % gtxt_type, filepath])
+ filepath += '.h'
+ to_translate.append(filepath)
+
+with open(INFILES_LIST, 'w') as f:
+ for line in to_translate:
+ f.write(line + '\n')
+
+# Create pot file from file list
+call(xgettext_cmd)
+
+# find javascript files
+js_to_translate = []
+for dirpath, dirnames, filenames in os.walk(WEBUI_JS_DIR):
+ for filename in filenames:
+ if os.path.splitext(filename)[1] == '.js':
+ js_to_translate.append(os.path.join(dirpath, filename))
+
+# find render html files
+for dirpath, dirnames, filenames in os.walk(WEBUI_RENDER_DIR):
+ for filename in filenames:
+ if os.path.splitext(filename)[1] == '.html':
+ js_to_translate.append(os.path.join(dirpath, filename))
+
+with open(INFILES_LIST, 'w') as f:
+ for line in js_to_translate:
+ f.write(line + '\n')
+
+# Force xgettext language to parse javascript and update pot file
+# Note: For javascript files xgettext will parse comments, so single apostrophes or quotes are
+# flagged as a 'warning: untermined string'. Either ignore warning or edit javascript comment.
+call(xgettext_cmd + ['--language=Python', '-j'])
+
+# Replace YEAR and PACKAGE in the copyright message
+with open(POT_FILEPATH) as f:
+ lines = f.readlines()
+with open(POT_FILEPATH, 'w') as f:
+ for line in lines:
+ if 'YEAR' in line:
+ line = line.replace('YEAR', str(datetime.now().year))
+ elif 'PACKAGE' in line:
+ line = line.replace('PACKAGE', 'Deluge')
+ f.write(line)
+
+# Clean up temp files
+os.remove(INFILES_LIST)
+for filepath in to_translate:
+ if filepath.endswith('.h'):
+ os.remove(filepath)
+
+print('Created %s' % POT_FILEPATH)
diff --git a/minify_web_js.py b/minify_web_js.py
new file mode 100755
index 0000000..614794a
--- /dev/null
+++ b/minify_web_js.py
@@ -0,0 +1,133 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2014 Calum Lind <calumlind@gmail.com>
+# Copyright (C) 2010 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+"""Minifies the WebUI JS files.
+
+Usage: python minify_web_js.py deluge/ui/web/js/deluge-all
+
+"""
+
+import fileinput
+import fnmatch
+import os
+import subprocess
+import sys
+from shutil import which
+
+closure_cmd = None
+for cmd in ['closure-compiler', 'closure']:
+ if which(cmd):
+ closure_cmd = cmd
+ break
+
+
+def minify_closure(file_in, file_out):
+ try:
+ subprocess.check_call(
+ [
+ closure_cmd,
+ '--warning_level',
+ 'QUIET',
+ '--language_in=ECMASCRIPT5',
+ '--js',
+ file_in,
+ '--js_output_file',
+ file_out,
+ ]
+ )
+ return True
+ except subprocess.CalledProcessError:
+ return False
+
+
+# Closure outputs smallest files but java-based command, can use rJSmin
+# as a python-only fallback.
+#
+# deluge-all.js: Closure 131K, rJSmin: 148K
+#
+if not closure_cmd:
+ try:
+ from rjsmin import jsmin as minify
+ except ImportError:
+ print('Warning: No minifying command found.')
+ minify = None
+
+
+def source_files_list(source_dir):
+ scripts = []
+ for root, dirnames, filenames in os.walk(source_dir):
+ dirnames.sort(reverse=True)
+ files = fnmatch.filter(filenames, '*.js')
+ files.sort()
+
+ order_file = os.path.join(root, '.order')
+ if os.path.isfile(order_file):
+ with open(order_file) as _file:
+ for line in _file:
+ if line.startswith('+ '):
+ order_filename = line.split()[1]
+ files.pop(files.index(order_filename))
+ files.insert(0, order_filename)
+
+ # Ensure root directory files are bottom of list.
+ if dirnames:
+ scripts.extend([os.path.join(root, f) for f in files])
+ else:
+ for filename in reversed(files):
+ scripts.insert(0, os.path.join(root, filename))
+ return scripts
+
+
+def concat_src_files(file_list, fileout_path):
+ with open(fileout_path, 'w') as file_out:
+ file_in = fileinput.input(file_list)
+ file_out.writelines(file_in)
+
+
+def minify_file(file_debug, file_minified):
+ if closure_cmd:
+ return minify_closure(file_debug, file_minified)
+ elif minify:
+ with open(file_minified, 'w') as file_out:
+ with open(file_debug) as file_in:
+ file_out.write(minify(file_in.read()))
+ return True
+
+
+def minify_js_dir(source_dir):
+ build_name = os.path.basename(source_dir)
+ build_dir = os.path.dirname(source_dir)
+ file_debug_js = os.path.join(build_dir, build_name + '-debug.js')
+ file_minified_js = os.path.join(build_dir, build_name + '.js')
+ source_files = source_files_list(source_dir)
+
+ if not source_files:
+ print('No js files found, skipping %s' % source_dir)
+ return
+
+ concat_src_files(source_files, file_debug_js)
+ print('Minifying %s' % source_dir)
+ if not minify_file(file_debug_js, file_minified_js):
+ print('Warning: Failed minifying files %s, debug only' % source_dir)
+ if os.path.isfile(file_minified_js):
+ os.remove(file_minified_js)
+
+
+if __name__ == '__main__':
+ if len(sys.argv) != 2:
+ JS_SOURCE_DIRS = [
+ 'deluge/ui/web/js/deluge-all',
+ 'deluge/ui/web/js/extjs/ext-extensions',
+ ]
+ else:
+ JS_SOURCE_DIRS = [os.path.abspath(sys.argv[1])]
+
+ for js_source_dir in JS_SOURCE_DIRS:
+ minify_js_dir(js_source_dir)
diff --git a/msgfmt.py b/msgfmt.py
new file mode 100755
index 0000000..0d5367c
--- /dev/null
+++ b/msgfmt.py
@@ -0,0 +1,227 @@
+#!/usr/bin/env python
+# Written by Martin v. Lwis <loewis@informatik.hu-berlin.de>
+# Plural forms support added by alexander smishlajev <alex@tycobka.lv>
+"""
+Generate binary message catalog from textual translation description.
+
+This program converts a textual Uniforum-style message catalog (.po file) into
+a binary GNU catalog (.mo file). This is essentially the same function as the
+GNU msgfmt program, however, it is a simpler implementation.
+
+Usage: msgfmt.py [OPTIONS] filename.po
+
+Options:
+ -o file
+ --output-file=file
+ Specify the output file to write to. If omitted, output will go to a
+ file named filename.mo (based off the input file name).
+
+ -h
+ --help
+ Print this message and exit.
+
+ -V
+ --version
+ Display version information and exit.
+"""
+import array
+import ast
+import getopt
+import os
+import struct
+import sys
+
+__version__ = '1.2'
+
+MESSAGES = {}
+
+
+def usage(ecode, msg=''):
+ """
+ Print usage and msg and exit with given code.
+ """
+ print(__doc__, file=sys.stderr)
+ if msg:
+ print(msg, file=sys.stderr)
+ sys.exit(ecode)
+
+
+def add(msgid, transtr, fuzzy):
+ """
+ Add a non-fuzzy translation to the dictionary.
+ """
+ if not fuzzy and transtr and not transtr.startswith('\x00'):
+ MESSAGES[msgid] = transtr
+
+
+def generate():
+ """
+ Return the generated output.
+ """
+ # the keys are sorted in the .mo file
+ keys = sorted(MESSAGES)
+ offsets = []
+ ids = strs = ''
+ for _id in keys:
+ # For each string, we need size and file offset when encoded. Each string is NUL
+ # terminated; the NUL does not count into the size.
+ offsets.append(
+ (
+ len(ids.encode('utf8')),
+ len(_id.encode('utf8')),
+ len(strs.encode('utf8')),
+ len(MESSAGES[_id].encode('utf8')),
+ )
+ )
+ ids += _id + '\x00'
+ strs += MESSAGES[_id] + '\x00'
+
+ # The header is 7 32-bit unsigned integers. We don't use hash tables, so
+ # the keys start right after the index tables.
+ # translated string.
+ keystart = 7 * 4 + 16 * len(keys)
+ # and the values start after the keys
+ valuestart = keystart + len(ids)
+ koffsets = []
+ voffsets = []
+ # The string table first has the list of keys, then the list of values.
+ # Each entry has first the size of the string, then the file offset.
+ for o1, l1, o2, l2 in offsets:
+ koffsets += [l1, o1 + keystart]
+ voffsets += [l2, o2 + valuestart]
+ offsets = koffsets + voffsets
+ output = struct.pack(
+ 'Iiiiiii',
+ 0x950412DE, # Magic
+ 0, # Version
+ len(keys), # # of entries
+ 7 * 4, # start of key index
+ 7 * 4 + len(keys) * 8, # start of value index
+ 0,
+ 0,
+ ) # size and offset of hash table
+ output += array.array('i', offsets).tobytes()
+ output += ids.encode('utf8')
+ output += strs.encode('utf8')
+ return output
+
+
+def make(filename, outfile):
+ section_id = 1
+ section_str = 2
+ global MESSAGES
+ MESSAGES = {}
+
+ # Compute .mo name from .po name and arguments
+ if filename.endswith('.po'):
+ infile = filename
+ else:
+ infile = filename + '.po'
+ if outfile is None:
+ outfile = os.path.splitext(infile)[0] + '.mo'
+
+ try:
+ with open(infile, encoding='utf8') as _file:
+ lines = _file.readlines()
+ except OSError as msg:
+ print(msg, file=sys.stderr)
+ sys.exit(1)
+
+ section = None
+ fuzzy = 0
+
+ # Parse the catalog
+ msgid = msgstr = ''
+ lno = 0
+ for line in lines:
+ lno += 1
+ # If we get a comment line after a msgstr, this is a new entry
+ if line[0] == '#' and section == section_str:
+ add(msgid, msgstr, fuzzy)
+ section = None
+ fuzzy = 0
+ # Record a fuzzy mark
+ if line[:2] == '#,' and (line.find('fuzzy') >= 0):
+ fuzzy = 1
+ # Skip comments
+ if line[0] == '#':
+ continue
+ # Start of msgid_plural section, separate from singular form with \0
+ if line.startswith('msgid_plural'):
+ msgid += '\x00'
+ line = line[12:]
+ # Now we are in a msgid section, output previous section
+ elif line.startswith('msgid'):
+ if section == section_str:
+ add(msgid, msgstr, fuzzy)
+ section = section_id
+ line = line[5:]
+ msgid = msgstr = ''
+ # Now we are in a msgstr section
+ elif line.startswith('msgstr'):
+ section = section_str
+ line = line[6:]
+ # Check for plural forms
+ if line.startswith('['):
+ # Separate plural forms with \0
+ if not line.startswith('[0]'):
+ msgstr += '\x00'
+ # Ignore the index - must come in sequence
+ line = line[line.index(']') + 1 :]
+ # Skip empty lines
+ line = line.strip()
+ if not line:
+ continue
+ line = ast.literal_eval(line)
+ if section == section_id:
+ msgid += line
+ elif section == section_str:
+ msgstr += line
+ else:
+ print('Syntax error on %s:%d' % (infile, lno), 'before:', file=sys.stderr)
+ print(line, file=sys.stderr)
+ sys.exit(1)
+ # Add last entry
+ if section == section_str:
+ add(msgid, msgstr, fuzzy)
+
+ # Compute output
+ output = generate()
+
+ try:
+ with open(outfile, 'wb') as _file:
+ _file.write(output)
+ except OSError as msg:
+ print(msg, file=sys.stderr)
+
+
+def main():
+ try:
+ opts, args = getopt.getopt(
+ sys.argv[1:], 'hVo:', ['help', 'version', 'output-file=']
+ )
+ except getopt.error as msg:
+ usage(1, msg)
+
+ outfile = None
+ # parse options
+ for opt, arg in opts:
+ if opt in ('-h', '--help'):
+ usage(0)
+ elif opt in ('-V', '--version'):
+ print('msgfmt.py', __version__, file=sys.stderr)
+ sys.exit(0)
+ elif opt in ('-o', '--output-file'):
+ outfile = arg
+ # do it
+ if not args:
+ print('No input file given', file=sys.stderr)
+ print('Try `msgfmt --help` for more information.', file=sys.stderr)
+ return
+
+ for filename in args:
+ make(filename, outfile)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/packaging/osx/Info.plist.in b/packaging/osx/Info.plist.in
new file mode 100644
index 0000000..7021497
--- /dev/null
+++ b/packaging/osx/Info.plist.in
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleIdentifier</key>
+ <string>org.deluge</string>
+ <key>CFBundleName</key>
+ <string>Deluge</string>
+ <key>CFBundleIconFile</key>
+ <string>deluge.icns</string>
+ <key>CFBundleExecutable</key>
+ <string>Deluge</string>
+ <key>CFBundleShortVersionString</key>
+ <string>%VERSION%</string>
+ <key>CFBundleVersion</key>
+ <string>%VERSION%</string>
+ <key>CFBundleGetInfoString</key>
+ <string>%VERSION% (c) 2008-%YEAR% Deluge Team http://deluge-torrent.org/</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright 2008-%YEAR% Deluge Team</string>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>DL##</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>10.6</string>
+ <key>LSUIElement</key>
+ <string>0</string>
+ <key>NSHighResolutionCapable</key>
+ <true/>
+ <key>CFBundleDisplayName</key>
+ <string>Deluge</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>torrent</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>torrent</string>
+ <key>CFBundleTypeName</key>
+ <string>BitTorrent Document</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ <key>LSHandlerRank</key>
+ <string>Owner</string>
+ <key>LSItemContentTypes</key>
+ <array>
+ <string>org.bittorrent.torrent</string>
+ </array>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/packaging/osx/Instructions.md b/packaging/osx/Instructions.md
new file mode 100644
index 0000000..985052c
--- /dev/null
+++ b/packaging/osx/Instructions.md
@@ -0,0 +1,48 @@
+# Packaging setup with jhbuild
+
+These are the manual step based upon https://wiki.gnome.org/Projects/Jhbuild/Mac_OS
+
+If you encounter curl stalling on FTP URLs try disabling `epsv` for curl:
+`echo no-epsv >> ~/.curlrc`
+
+1. Install XCode command line developer tools:
+
+ xcode-select --install
+
+1. Install jhbuild:
+
+ curl -LO https://gitlab.gnome.org/GNOME/gtk-osx/raw/master/gtk-osx-build-setup.sh
+ sh gtk-osx-build-setup.sh
+ jhbuild bootstrap
+
+1. GTK-OSX Build
+
+ 1. Bootstrap GTK and install PyGTK
+
+ jhbuild build python meta-gtk-osx-bootstrap meta-gtk-osx-python
+
+ 1. GTK OSX Themes:
+
+ jhbuild build meta-gtk-osx-themes gtk-quartz-engine
+
+ Note: ​[Quartz patch] if build error; `'height' is uninitialized`.
+
+1. Install [MacOS bundler] script
+
+ This script is to help package GTK for Deluge.
+
+ curl -OL http://ftp.gnome.org/pub/gnome/sources/gtk-mac-bundler/0.7/gtk-mac-bundler-0.7.4.tar.xz
+ tar xf gtk-mac-bundler-0.7.4.tar.xz
+ cd gtk-mac-bundler-0.7.4
+ make install
+
+1. Build libtorrent and deps using ​libtorrent.modules:
+
+ curl -O http://git.deluge-torrent.org/deluge/plain/osx/libtorrent.modules?h=develop
+ jhbuild -m libtorrent.modules build meta_libtorrent
+
+ - OpenSSL requires "Skip Module (2)" when install stage fails as unable to use DESTDIR path. See ​patch.
+ - Note on a potential OpenSSL Error: 'libcrypto is a fat file' is due to mixing arch types (i386, x64) in build process.
+
+[quartz patch]: https://www.xpra.org/trac/attachment/ticket/533/quartz-style-fix.patch
+[macos bundler]: https://wiki.gnome.org/Projects/GTK%2B/OSX/Bundling
diff --git a/packaging/osx/README.rst b/packaging/osx/README.rst
new file mode 100644
index 0000000..781b14b
--- /dev/null
+++ b/packaging/osx/README.rst
@@ -0,0 +1,127 @@
+====================================
+Instructions for building Deluge.app
+====================================
+
+1. Compiler
+-----------
+
+- To build deluge and the gtk osx modules, you must use `gcc`
+- This has been successfully working with :
+ - gcc 4.2.1 - Xcode 4.1 - Mac OSX Lion (10.7.2)
+ - llvm-gcc 4.2.1 - Xcode 4.3.1 (With Command line utilities) - Mac OSX Lion (10.7.3)
+- Check your version of gcc using `gcc -v`
+
+2. GTK-OSX jhbuild environment
+------------------------------
+
+Quick how-to *(from the full GTK-OSX building instructions)* [1]_, [2]_
+
+a. Create a dedicated user account and use it for all the next steps::
+
+ sudo su - gtk
+ cat << EOF > ~/.profile
+ export PATH=~/.local/bin:~/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/git/bin
+ EOF
+ . ~/.profile
+
+ *Note*: I'm using `gtk` login with `/opt/gtk` as home an jhbuild prefix.
+
+b. Download and run the gtk-osx-build-setup [3]_ script to install jhbuild::
+
+ curl -O https://raw.github.com/jralls/gtk-osx-build/master/gtk-osx-build-setup.sh
+ sh gtk-osx-build-setup.sh
+
+c. Link or copy deluge osx jhbuildrc-custom::
+
+ ln -sf deluge/osx/jhbuildrc-custom ~/.jhbuildrc-custom
+
+ *Note*: This setup builds only for `x86_64` arch to `/opt/gtk` prefix, feel free to edit.
+
+d. Build jhbuild and its modulesets: *(takes a while...)*::
+
+ jhbuild bootstrap && jhbuild
+
+ *Note*: If you encounter an error while building `glib` like::
+
+ gconvert.c:65:2: error: #error GNU libiconv not in use but included iconv.h is from libiconv
+
+ Start a shell from jhbuild, edit the file `vim glib/gconvert.c +65` to delete the
+ section raising error, which is irrelevant. *(Lion iconv.h looks like gnu one, but it is not)*
+ Then exit the shell and resume build.
+
+5. Build the deluge moduleset: *(takes a while...)*::
+
+ jhbuild -m deluge/osx/deluge.modules build deluge
+
+ *Note*: This jhbuild moduleset *should* build and install all deluge dependencies not available in gtk-osx.
+
+3. Build Deluge.app
+-------------------
+
+a. Always do your custom build operations under a jhbuild shell::
+
+ jhbuild shell
+
+b. Cleanup::
+
+ python setup.py clean -a
+
+c. Build and install::
+
+ python setup.py py2app
+ python setup.py install
+
+d. Build app to `deluge/osx/app/Deluge.app`::
+
+ cd osx
+ ./make-app
+
+You *should* now have a working Deluge.app
+
+i386 Notes
+----------
+
+- Uncomment the relevant sections of :
+ - jhbuildrc-custom
+ - deluge.modules
+ - setup.cfg
+- deluge egg has to be named without the -macosx-10.6-intel suffix
+- To build for i386 under a x64 arch libtorrent python bindings have to be
+ patched manually to set correct arch see macports package patch
+
+Issues
+------
+
+If Deluge.app doesn't work or crash the first thing to do is to check OSX
+Console for logs and/or crash reports.
+
+You can enable logging by passing the usual log command switches via console::
+
+ /Applications/Deluge.app/Contents/MacOS/Deluge -L debug -l debug.log
+
+Recent jhbuild issues:
+
+- Some jhbuild modules fails to build, freetype and gtk-mac-integration,
+ strangely configure is not called before build/install.
+- If that happens, just force rebuild with something like:
+
+ jhbuild build -cf gtk-mac-integration-python
+
+- Interrupt while building with Ctrl+C and wipe to start over if configure missing
+
+Known issues
+------------
+
+- **i386**: libtorrent crash
+- **i18n**: English only for now
+- **Magnet URLs**: Not currently supported by GTK-OSX
+
+Reference
+---------
+
+.. [1] http://live.gnome.org/Jhbuild
+.. [2] http://live.gnome.org/GTK%2B/OSX/Building
+.. [3] http://github.com/jralls/gtk-osx-build
+.. [4] http://winswitch.org/dev/macosx.html
+.. [5] http://mail.python.org/pipermail/pythonmac-sig/
+.. [6] https://github.com/jralls/gtk-mac-integration
diff --git a/packaging/osx/deluge b/packaging/osx/deluge
new file mode 100755
index 0000000..023977f
--- /dev/null
+++ b/packaging/osx/deluge
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+EXEC="exec"
+
+name="`basename $0`"
+if [[ "$0" == `pwd`* ]] || [[ "$0" == "/"* ]]; then
+ full_path="$0"
+else
+ full_path="`pwd`/$0"
+fi
+tmp=`dirname "$full_path"`
+tmp=`dirname "$tmp"`
+bundle=`dirname "$tmp"`
+bundle_contents=${bundle%"/Contents"}"/Contents"
+bundle_macos="$bundle_contents"/MacOS
+bundle_res="$bundle_contents"/Resources
+bundle_lib="$bundle_res"/lib
+bundle_data="$bundle_res"/share
+bundle_etc="$bundle_res"/etc
+
+export DYLD_FALLBACK_LIBRARY_PATH="$bundle_lib"
+export XDG_CONFIG_DIRS="$bundle_etc"/xdg
+export XDG_DATA_DIRS="$bundle_data"
+export GTK_DATA_PREFIX="$bundle_res"
+export GTK_EXE_PREFIX="$bundle_res"
+export GTK_PATH="$bundle_res"
+export GTK2_RC_FILES="$bundle_etc/gtk-2.0/gtkrc"
+export GTK_IM_MODULE_FILE="$bundle_etc/gtk-2.0/gtk.immodules"
+export GDK_PIXBUF_MODULE_FILE="$bundle_lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"
+export PANGO_RC_FILE="$bundle_etc/pango/pangorc"
+export PANGO_LIBDIR="$bundle_lib"
+export PANGO_SYSCONFDIR="$bundle_etc"
+
+#Set $PYTHON to point inside the bundle
+export PYTHON="$bundle_macos/python"
+export PYTHONHOME="$bundle_res"
+#Add the bundle's python modules
+PYTHONPATH="$bundle_lib:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/python/:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/pygtk/2.0:$PYTHONPATH"
+export PYTHONPATH
+
+# Ensure deluged is available by adding macos dir to path.
+PATH=$bundle_macos:$PATH
+
+# We need a UTF-8 locale.
+lang=`defaults read .GlobalPreferences AppleLocale 2>/dev/null`
+if test "$?" != "0"; then
+ lang=`defaults read .GlobalPreferences AppleCollationOrder 2>/dev/null | sed 's/_.*//'`
+fi
+LANG=""
+if test "$lang" != ""; then
+ LANG="`grep \"\`echo $lang\`_\" /usr/share/locale/locale.alias | \
+ tail -n1 | sed 's/\./ /' | awk '{print $2}'`"
+fi
+if test "$LANG" == ""; then
+ export LANG="C"
+else
+ export LANG="$LANG.utf8"
+fi
+
+if test -f "$bundle_lib/charset.alias"; then
+ export CHARSETALIASDIR="$bundle_lib"
+fi
+
+# Extra arguments can be added in environment.sh.
+EXTRA_ARGS=
+if test -f "$bundle_res/environment.sh"; then
+ source "$bundle_res/environment.sh"
+fi
+
+# Strip out the argument added by the OS.
+if [ "x`echo "x$1" | sed -e "s/^x-psn_.*//"`" == "x" ]; then
+ shift 1
+fi
+
+# Note that we're calling $PYTHON here to override the version used.
+$EXEC "$PYTHON" "$bundle_macos/Deluge-bin" "$@"
diff --git a/packaging/osx/deluge-console b/packaging/osx/deluge-console
new file mode 100755
index 0000000..e1e20e8
--- /dev/null
+++ b/packaging/osx/deluge-console
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+EXEC="exec"
+
+name="`basename $0`"
+if [[ "$0" == `pwd`* ]] || [[ "$0" == "/"* ]]; then
+ full_path="$0"
+else
+ full_path="`pwd`/$0"
+fi
+tmp=`dirname "$full_path"`
+tmp=`dirname "$tmp"`
+bundle=`dirname "$tmp"`
+bundle_contents=${bundle%"/Contents"}"/Contents"
+bundle_macos="$bundle_contents"/MacOS
+bundle_res="$bundle_contents"/Resources
+bundle_lib="$bundle_res"/lib
+bundle_data="$bundle_res"/share
+bundle_etc="$bundle_res"/etc
+
+export DYLD_FALLBACK_LIBRARY_PATH="$bundle_lib"
+export XDG_CONFIG_DIRS="$bundle_etc"/xdg
+export XDG_DATA_DIRS="$bundle_data"
+
+#Set $PYTHON to point inside the bundle
+export PYTHON="$bundle_macos/python"
+export PYTHONHOME="$bundle_res"
+#Add the bundle's python modules
+PYTHONPATH="$bundle_lib:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/python/:$PYTHONPATH"
+export PYTHONPATH
+
+# Ensure deluged is available by adding macos dir to path.
+PATH=$bundle_macos:$PATH
+
+# We need a UTF-8 locale.
+lang=`defaults read .GlobalPreferences AppleLocale 2>/dev/null`
+if test "$?" != "0"; then
+ lang=`defaults read .GlobalPreferences AppleCollationOrder 2>/dev/null | sed 's/_.*//'`
+fi
+LANG=""
+if test "$lang" != ""; then
+ LANG="`grep \"\`echo $lang\`_\" /usr/share/locale/locale.alias | \
+ tail -n1 | sed 's/\./ /' | awk '{print $2}'`"
+fi
+if test "$LANG" == ""; then
+ export LANG="C"
+else
+ export LANG="$LANG.utf8"
+fi
+
+if test -f "$bundle_lib/charset.alias"; then
+ export CHARSETALIASDIR="$bundle_lib"
+fi
+
+# Extra arguments can be added in environment.sh.
+EXTRA_ARGS=
+if test -f "$bundle_res/environment.sh"; then
+ source "$bundle_res/environment.sh"
+fi
+
+# Strip out the argument added by the OS.
+if [ "x`echo "x$1" | sed -e "s/^x-psn_.*//"`" == "x" ]; then
+ shift 1
+fi
+
+# Note that we're calling $PYTHON here to override the version used.
+$EXEC "$PYTHON" "$bundle_macos/deluge-console-bin" "$@"
diff --git a/packaging/osx/deluge-web b/packaging/osx/deluge-web
new file mode 100755
index 0000000..e66f550
--- /dev/null
+++ b/packaging/osx/deluge-web
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+EXEC="exec"
+
+name="`basename $0`"
+if [[ "$0" == `pwd`* ]] || [[ "$0" == "/"* ]]; then
+ full_path="$0"
+else
+ full_path="`pwd`/$0"
+fi
+tmp=`dirname "$full_path"`
+tmp=`dirname "$tmp"`
+bundle=`dirname "$tmp"`
+bundle_contents=${bundle%"/Contents"}"/Contents"
+bundle_macos="$bundle_contents"/MacOS
+bundle_res="$bundle_contents"/Resources
+bundle_lib="$bundle_res"/lib
+bundle_data="$bundle_res"/share
+bundle_etc="$bundle_res"/etc
+
+export DYLD_FALLBACK_LIBRARY_PATH="$bundle_lib"
+export XDG_CONFIG_DIRS="$bundle_etc"/xdg
+export XDG_DATA_DIRS="$bundle_data"
+
+#Set $PYTHON to point inside the bundle
+export PYTHON="$bundle_macos/python"
+export PYTHONHOME="$bundle_res"
+#Add the bundle's python modules
+PYTHONPATH="$bundle_lib:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/python/:$PYTHONPATH"
+export PYTHONPATH
+
+# Ensure deluged is available by adding macos dir to path.
+PATH=$bundle_macos:$PATH
+
+# We need a UTF-8 locale.
+lang=`defaults read .GlobalPreferences AppleLocale 2>/dev/null`
+if test "$?" != "0"; then
+ lang=`defaults read .GlobalPreferences AppleCollationOrder 2>/dev/null | sed 's/_.*//'`
+fi
+LANG=""
+if test "$lang" != ""; then
+ LANG="`grep \"\`echo $lang\`_\" /usr/share/locale/locale.alias | \
+ tail -n1 | sed 's/\./ /' | awk '{print $2}'`"
+fi
+if test "$LANG" == ""; then
+ export LANG="C"
+else
+ export LANG="$LANG.utf8"
+fi
+
+if test -f "$bundle_lib/charset.alias"; then
+ export CHARSETALIASDIR="$bundle_lib"
+fi
+
+# Extra arguments can be added in environment.sh.
+EXTRA_ARGS=
+if test -f "$bundle_res/environment.sh"; then
+ source "$bundle_res/environment.sh"
+fi
+
+# Strip out the argument added by the OS.
+if [ "x`echo "x$1" | sed -e "s/^x-psn_.*//"`" == "x" ]; then
+ shift 1
+fi
+
+# Note that we're calling $PYTHON here to override the version used.
+$EXEC "$PYTHON" "$bundle_macos/deluge-web-bin" "$@"
diff --git a/packaging/osx/deluge.bundle b/packaging/osx/deluge.bundle
new file mode 100644
index 0000000..c4abdfc
--- /dev/null
+++ b/packaging/osx/deluge.bundle
@@ -0,0 +1,43 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<app-bundle>
+ <meta>
+ <prefix name="default">${env:JHBUILD_PREFIX}</prefix>
+ <destination overwrite="yes">app</destination>
+ <run-install-name-tool/>
+ <launcher-script>${project}/deluge</launcher-script>
+ </meta>
+ <plist>${project}/Info.plist</plist>
+ <main-binary>${prefix}/bin/deluge-gtk</main-binary>
+ <binary dest="${bundle}/Contents/MacOS/deluged-bin">${prefix}/bin/deluged</binary>
+ <binary dest="${bundle}/Contents/MacOS/deluge-web-bin">${prefix}/bin/deluge-web</binary>
+ <binary dest="${bundle}/Contents/MacOS/deluge-console-bin">${prefix}/bin/deluge-console</binary>
+ <binary dest="${bundle}/Contents/MacOS">${prefix}/bin/python</binary>
+
+ <!-- not used: binary>${prefix}/lib/${gtkdir}/modules/*.so</binary-->
+ <binary>${prefix}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.so</binary>
+ <binary>${prefix}/lib/libpyglib-2.0-python.0.dylib</binary>
+ <binary>${prefix}/lib/libgtk-quartz-2.0.0.dylib</binary>
+ <binary>${prefix}/lib/libglade-2.0.0.dylib</binary>
+ <binary>${prefix}/lib/libgtkmacintegration-gtk2.2.dylib</binary>
+ <binary>${prefix}/lib/librsvg-2.2.dylib</binary>
+ <binary>${prefix}/lib/pango/1.8.0/modules/pango*.so</binary>
+ <binary>${prefix}/lib/libboost_system.dylib</binary>
+ <binary>${prefix}/lib/libboost_python.dylib</binary>
+ <binary>${prefix}/lib/libtorrent-rasterbar.9.dylib</binary>
+ <binary>${prefix}/lib/libssl.1.0.0.dylib</binary>
+ <binary>${prefix}/lib/libz.1.2.8.dylib</binary>
+
+ <data dest="${bundle}/Contents/Resources/">${project}/../../dist/deluge.app/Contents/Resources/</data>
+ <data>${prefix}/lib/pygtk/2.0/</data>
+ <!-- gtk theme -->
+ <binary>${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/engines/libclearlooks.so</binary>
+ <data>${prefix}/share/themes/Clearlooks</data>
+ <data>${prefix}/share/themes/Mac</data><!-- required for stock accelerators cmd-X etc... -->
+ <data dest="${bundle}/Contents/Resources/etc/gtk-2.0/gtkrc">${project}/gtkrc</data>
+ <data dest="${bundle}/Contents/Resources">${project}/deluge.icns</data>
+ <data dest="${bundle}/Contents/Resources">${project}/torrent.icns</data>
+
+ <data dest="${bundle}/Contents/MacOS/deluged">${project}/deluged</data>
+ <data dest="${bundle}/Contents/MacOS/deluge-web">${project}/deluge-web</data>
+ <data dest="${bundle}/Contents/MacOS/deluge-console">${project}/deluge-console</data>
+</app-bundle>
diff --git a/packaging/osx/deluge.icns b/packaging/osx/deluge.icns
new file mode 100644
index 0000000..125a23d
--- /dev/null
+++ b/packaging/osx/deluge.icns
Binary files differ
diff --git a/packaging/osx/deluge.modules b/packaging/osx/deluge.modules
new file mode 100644
index 0000000..c08180a
--- /dev/null
+++ b/packaging/osx/deluge.modules
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="git" name="git.gnome"
+ href="git://git.gnome.org"/>
+ <repository type="tarball" name="pypi"
+ href="http://pypi.python.org/packages/source/"/>
+
+ <metamodule id="deluge">
+ <dependencies>
+ <dep package="libtorrent"/>
+ <dep package="gtk-mac-bundler"/>
+ <dep package="deluge-python-deps"/>
+ </dependencies>
+ </metamodule>
+
+ <autotools id="gtk-mac-bundler" autogen-template="echo no configure">
+ <branch repo="git.gnome" module="gtk-mac-bundler"/>
+ </autotools>
+
+ <metamodule id="deluge-python-deps">
+ <dependencies>
+ <dep package="setuptools"/>
+ <dep package="chardet"/>
+ <dep package="pyopenssl"/>
+ <dep package="pyxdg"/>
+ <dep package="py2app"/>
+ <dep package="mako"/>
+ <dep package="twisted"/>
+ </dependencies>
+ </metamodule>
+
+ <distutils id="setuptools">
+ <branch repo="pypi" version="0.6c11"
+ module="s/setuptools/setuptools-0.6c11.tar.gz"/>
+ </distutils>
+ <distutils id="chardet">
+ <branch repo="pypi" version="2.1.1"
+ module="c/chardet/chardet-2.1.1.tar.gz"/>
+ </distutils>
+ <distutils id="pyopenssl">
+ <branch repo="pypi" version="0.13"
+ module="p/pyOpenSSL/pyOpenSSL-0.13.tar.gz"/>
+ </distutils>
+ <distutils id="pyxdg">
+ <branch repo="pypi" version="0.25"
+ module="p/pyxdg/pyxdg-0.25.tar.gz"/>
+ </distutils>
+ <distutils id="py2app">
+ <branch repo="pypi" version="0.7.3"
+ module="p/py2app/py2app-0.7.3.tar.gz"/>
+ </distutils>
+ <distutils id="mako">
+ <branch repo="pypi" version="0.7.3"
+ module="M/Mako/Mako-0.7.3.tar.gz"/>
+ </distutils>
+ <distutils id="twisted">
+ <branch repo="pypi" version="12.3.0"
+ module="T/Twisted/Twisted-12.3.0.tar.bz2"/>
+ </distutils>
+</moduleset>
diff --git a/packaging/osx/deluged b/packaging/osx/deluged
new file mode 100755
index 0000000..28cebc0
--- /dev/null
+++ b/packaging/osx/deluged
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+EXEC="exec"
+
+name="`basename $0`"
+if [[ "$0" == `pwd`* ]] || [[ "$0" == "/"* ]]; then
+ full_path="$0"
+else
+ full_path="`pwd`/$0"
+fi
+tmp=`dirname "$full_path"`
+tmp=`dirname "$tmp"`
+bundle=`dirname "$tmp"`
+bundle_contents=${bundle%"/Contents"}"/Contents"
+bundle_macos="$bundle_contents"/MacOS
+bundle_res="$bundle_contents"/Resources
+bundle_lib="$bundle_res"/lib
+bundle_data="$bundle_res"/share
+bundle_etc="$bundle_res"/etc
+
+export DYLD_FALLBACK_LIBRARY_PATH="$bundle_lib"
+export XDG_CONFIG_DIRS="$bundle_etc"/xdg
+export XDG_DATA_DIRS="$bundle_data"
+
+#Set $PYTHON to point inside the bundle
+export PYTHON="$bundle_macos/python"
+export PYTHONHOME="$bundle_res"
+#Add the bundle's python modules
+PYTHONPATH="$bundle_lib:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH"
+PYTHONPATH="$bundle_lib/python/:$PYTHONPATH"
+export PYTHONPATH
+
+# Ensure deluged is available by adding macos dir to path.
+PATH=$bundle_macos:$PATH
+
+# We need a UTF-8 locale.
+lang=`defaults read .GlobalPreferences AppleLocale 2>/dev/null`
+if test "$?" != "0"; then
+ lang=`defaults read .GlobalPreferences AppleCollationOrder 2>/dev/null | sed 's/_.*//'`
+fi
+LANG=""
+if test "$lang" != ""; then
+ LANG="`grep \"\`echo $lang\`_\" /usr/share/locale/locale.alias | \
+ tail -n1 | sed 's/\./ /' | awk '{print $2}'`"
+fi
+if test "$LANG" == ""; then
+ export LANG="C"
+else
+ export LANG="$LANG.utf8"
+fi
+
+if test -f "$bundle_lib/charset.alias"; then
+ export CHARSETALIASDIR="$bundle_lib"
+fi
+
+# Extra arguments can be added in environment.sh.
+EXTRA_ARGS=
+if test -f "$bundle_res/environment.sh"; then
+ source "$bundle_res/environment.sh"
+fi
+
+# Strip out the argument added by the OS.
+if [ "x`echo "x$1" | sed -e "s/^x-psn_.*//"`" == "x" ]; then
+ shift 1
+fi
+
+# Note that we're calling $PYTHON here to override the version used.
+$EXEC "$PYTHON" "$bundle_macos/deluged-bin" "$@"
diff --git a/packaging/osx/gtkrc b/packaging/osx/gtkrc
new file mode 100644
index 0000000..a77430b
--- /dev/null
+++ b/packaging/osx/gtkrc
@@ -0,0 +1,10 @@
+gtk-theme-name = "Clearlooks"
+gtk-enable-mnemonics = 0
+
+# Workaround for non-ascii display issue details
+# here: http://bugs.gramps-project.org/view.php?id=5474
+style "user-font"
+{
+ font_name="Arial Unicode MS"
+}
+widget_class "*" style "user-font"
diff --git a/packaging/osx/jhbuildrc-custom b/packaging/osx/jhbuildrc-custom
new file mode 100644
index 0000000..6899bc5
--- /dev/null
+++ b/packaging/osx/jhbuildrc-custom
@@ -0,0 +1,32 @@
+# -*- mode: python -*-
+
+_gtk_osx_use_jhbuild_python = True
+
+#skip.append("libiconv") # Lion issues
+branches["python"] = "http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz"
+
+modules = [
+ "python",
+ "meta-gtk-osx-bootstrap",
+ "libglade",
+ "meta-gtk-osx-python",
+ "meta-gtk-osx-themes",
+ "gtk-quartz-engine",
+]
+
+build_policy = "updated-deps"
+
+# For default operation, set architecture and SDK for the native machine:
+_target = None;
+if _osx_version >= 7.0:
+ _target = "10.7"
+elif _osx_version >= 6.0:
+ _target = "10.6"
+elif _osx_version >= 5.0:
+ _target = "10.5"
+elif _osx_version >= 4.0:
+ _target = "10.4"
+
+setup_sdk(target=_target, sdk_version="native", architectures=[_default_arch])
+#setup_sdk(target="10.6", sdk_version="10.6", architectures=["x86_64"])
+#setup_sdk(target="10.6", sdk_version="10.6", architectures=["i386"])
diff --git a/packaging/osx/launchd/org.deluge-torrent.deluge-web.plist b/packaging/osx/launchd/org.deluge-torrent.deluge-web.plist
new file mode 100644
index 0000000..b91fb61
--- /dev/null
+++ b/packaging/osx/launchd/org.deluge-torrent.deluge-web.plist
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>org.deluge-torrent.deluge-web</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/usr/local/bin/deluge-web</string>
+ <string>-d</string>
+ <string>-L</string>
+ <string>error</string>
+ <string>-l</string>
+ <string>/var/log/deluge-web.log</string>
+ </array>
+ <key>StandardOutPath</key>
+ <string>/tmp/deluge-web.stdout</string>
+ <key>StandardErrorPath</key>
+ <string>/tmp/deluge-web.stderr</string>
+ <!-- To enable running as 'deluge' user remove comments.
+ <key>UserName</key>
+ <string>deluge</string>
+ -->
+ <key>RunAtLoad</key>
+ <true/>
+ <key>KeepAlive</key>
+ <true/>
+</dict>
+</plist>
diff --git a/packaging/osx/launchd/org.deluge-torrent.deluged.plist b/packaging/osx/launchd/org.deluge-torrent.deluged.plist
new file mode 100644
index 0000000..424399b
--- /dev/null
+++ b/packaging/osx/launchd/org.deluge-torrent.deluged.plist
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>org.deluge-torrent.deluged</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/usr/local/bin/deluged</string>
+ <string>-d</string>
+ <string>-L</string>
+ <string>error</string>
+ <string>-l</string>
+ <string>/var/log/deluged.log</string>
+ </array>
+ <key>StandardOutPath</key>
+ <string>/tmp/deluged.stdout</string>
+ <key>StandardErrorPath</key>
+ <string>/tmp/deluged.stderr</string>
+ <!-- To enable running as 'deluge' user remove comments.
+ <key>UserName</key>
+ <string>deluge</string>
+ -->
+ <key>RunAtLoad</key>
+ <true/>
+ <key>KeepAlive</key>
+ <true/>
+</dict>
+</plist>
diff --git a/packaging/osx/libtorrent.modules b/packaging/osx/libtorrent.modules
new file mode 100644
index 0000000..66d63f0
--- /dev/null
+++ b/packaging/osx/libtorrent.modules
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="tarball" name="sourceforge"
+ href="http://downloads.sourceforge.net/sourceforge/"/>
+ <repository type="tarball" name="libtorrent"
+ href="https://github.com/arvidn/libtorrent/archive/"/>
+ <repository type="tarball" name="openssl"
+ href="http://www.openssl.org/source/"/>
+
+ <metamodule id="libtorrent">
+ <dependencies>
+ <dep package="openssl"/>
+ <dep package="boost"/>
+ <dep package="libtorrent"/>
+ </dependencies>
+ </metamodule>
+
+ <autotools id="libtorrent" autogen-sh="autotools.sh"
+ autogen-template="%(srcdir)s/%(autogen-sh)s --prefix=%(prefix)s --with-boost-libdir=%(libdir)s --with-openssl=%(prefix)s --with-libiconv-prefix=%(libdir)s %(autogenargs)s "
+ autogenargs="--enable-python-binding ">
+ <branch repo="libtorrent" version="1.0.6" module="RC_1_0.zip"/>
+ </autotools>
+
+ <!-- openssl libdir is a relative path to prefix! -->
+ <autotools id="openssl" autogen-sh="Configure"
+ autogen-template="%(srcdir)s/%(autogen-sh)s --prefix=%(prefix)s --libdir=lib darwin64-x86_64-cc shared"
+ makeinstallargs="install_sw">
+ <!--%(autogenargs)s"
+ autogenargs="darwin-i386-cc shared">
+ <!--autogenargs="darwin64-x86_64-cc shared">
+ Look into problem with autogenargs introducing extra darwin64-x86_64-cc -->
+
+ <branch repo="openssl" version="1.0.2d" module="openssl-1.0.2d.tar.gz"/>
+ </autotools>
+
+ <autotools id="boost" autogen-sh="bootstrap.sh"
+ autogen-template="%(srcdir)s/%(autogen-sh)s --prefix=%(prefix)s --libdir=%(libdir)s --with-python=%(prefix)s/bin/python --with-icu=%(prefix)s --with-libraries=system,python"
+ supports-non-srcdir-builds="false"
+ makeargs="|| ./b2"
+ makeinstallargs="|| ./b2 install">
+ <branch repo="sourceforge" version="1.59.0" module="boost/boost_1_59_0.tar.bz2"/>
+ </autotools>
+</moduleset>
diff --git a/packaging/osx/make-app b/packaging/osx/make-app
new file mode 100644
index 0000000..9489f6c
--- /dev/null
+++ b/packaging/osx/make-app
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+APPDIR="./app/Deluge.app"
+RSCDIR="${APPDIR}/Contents/Resources"
+LIBDIR="${RSCDIR}/lib"
+VERSION=$(cat ../../RELEASE-VERSION)
+YEAR=$(date +'%Y')
+
+function msg() { echo "==> $1"; }
+
+echo "*** Packaging Deluge.app to $APPDIR..."
+
+msg "Clearing app dir"
+rm -fr $APPDIR
+
+msg "Fixing permissions on file we will need to relocate"
+if [ ! -z "${JHBUILD_PREFIX}" ]; then
+ chmod 755 "${JHBUILD_PREFIX}/lib/"libpython*.dylib
+ chmod 755 "${JHBUILD_PREFIX}/lib/"libssl*.dylib
+ chmod 755 "${JHBUILD_PREFIX}/lib/"libcrypto*.dylib
+fi
+
+chmod 755 deluge deluge-web deluge-console deluged
+
+msg "Create Info.plist for Deluge $version"
+sed -e s/%VERSION%/$VERSION/ -e s/%YEAR%/$YEAR/ Info.plist.in > Info.plist
+
+msg "Calling gtk-mac-bundler"
+gtk-mac-bundler deluge.bundle
+
+msg "Unzip site-packages and make python softlink without version number"
+pushd ${LIBDIR} || exit 1
+ln -sf python* python
+cd python
+unzip -nq site-packages.zip
+rm site-packages.zip
+popd
+
+msg "Replacing deluge by its egg..."
+rm -fr ${LIBDIR}/python/deluge
+rsync -rpl $JHBUILD_PREFIX/lib/python2.7/site-packages/deluge-*.egg "${LIBDIR}/python/"
+
+msg "Clean unnecessary files"
+find $APPDIR -name "*.la" -exec rm -f {} \; # Should not be packaged
+find $APPDIR -name "*.pyo" -exec rm -f {} \; # Just duplicates
+find $LIBDIR/python/deluge-*.egg -name "*.py" -exec rm -f {} \; # Remove source files, leaving compiled only.
+rm -fr $LIBDIR/pygtk/2.0/*demo*
+
+echo "*** Packaging done:`du -hs $APPDIR | cut -f 1`"
diff --git a/packaging/osx/torrent.icns b/packaging/osx/torrent.icns
new file mode 100644
index 0000000..a6f9040
--- /dev/null
+++ b/packaging/osx/torrent.icns
Binary files differ
diff --git a/packaging/source/make_release.py b/packaging/source/make_release.py
new file mode 100755
index 0000000..277d1ce
--- /dev/null
+++ b/packaging/source/make_release.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+#
+# Copyright 2014 Calum Lind <calumlind@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+import os.path
+from hashlib import sha256
+from subprocess import call, check_output
+
+sdist_formats = 'xztar'
+
+version = check_output(['python', 'version.py']).strip().decode()
+
+# Create release archive
+release_dir = 'dist/release-%s' % version
+print('Creating release archive for ' + version)
+
+call(
+ 'python setup.py --quiet egg_info --egg-base /tmp sdist --formats=%s --dist-dir=%s'
+ % (sdist_formats, release_dir),
+ shell=True,
+)
+
+
+if sdist_formats == 'xztar':
+ tarxz_path = os.path.join(release_dir, 'deluge-%s.tar.xz' % version)
+else:
+ # Compress release archive with xz
+ tar_path = os.path.join(release_dir, 'deluge-%s.tar' % version)
+ tarxz_path = tar_path + '.xz'
+ print('Compressing tar (%s) with xz' % tar_path)
+ try:
+ from backports import lzma
+ except ImportError:
+ print('backports.lzma not installed, falling back to xz shell command')
+ call(['xz', '-e9zkf', tar_path])
+ else:
+ with open(tar_path, 'rb') as tar_file, open(tarxz_path, 'wb') as xz_file:
+ xz_file.write(
+ lzma.compress(bytes(tar_file.read()), preset=9 | lzma.PRESET_EXTREME)
+ )
+
+# Calculate shasum and add to sha256sums.txt
+with open(tarxz_path, 'rb') as _file:
+ sha256sum = '{} {}'.format(
+ sha256(_file.read()).hexdigest(),
+ os.path.basename(tarxz_path),
+ )
+with open(os.path.join(release_dir, 'sha256sums.txt'), 'w') as _file:
+ _file.write(sha256sum + '\n')
+
+print('Complete: %s' % release_dir)
diff --git a/packaging/systemd/deluge-web.service b/packaging/systemd/deluge-web.service
new file mode 100644
index 0000000..7904db3
--- /dev/null
+++ b/packaging/systemd/deluge-web.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Deluge Bittorrent Client Web Interface
+Documentation=man:deluge-web
+After=deluged.service
+Wants=deluged.service
+
+[Service]
+Type=simple
+UMask=027
+
+ExecStart=/usr/bin/deluge-web -d
+
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/packaging/systemd/deluged.service b/packaging/systemd/deluged.service
new file mode 100644
index 0000000..fa00de0
--- /dev/null
+++ b/packaging/systemd/deluged.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=Deluge Bittorrent Client Daemon
+Documentation=man:deluged
+After=network-online.target
+
+[Service]
+Type=simple
+UMask=007
+
+ExecStart=/usr/bin/deluged -d
+
+Restart=on-failure
+
+# Time to wait before forcefully stopped.
+TimeoutStopSec=300
+
+[Install]
+WantedBy=multi-user.target
diff --git a/packaging/systemd/user.conf b/packaging/systemd/user.conf
new file mode 100644
index 0000000..ae59820
--- /dev/null
+++ b/packaging/systemd/user.conf
@@ -0,0 +1,4 @@
+# Override service user
+[Service]
+User=deluge
+Group=deluge
diff --git a/packaging/systemd/user/deluge-web.service b/packaging/systemd/user/deluge-web.service
new file mode 100644
index 0000000..2c3557e
--- /dev/null
+++ b/packaging/systemd/user/deluge-web.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Deluge Bittorrent Client Web Interface
+Documentation=man:deluge-web
+After=deluged.service
+Wants=deluged.service
+
+[Service]
+UMask=027
+
+ExecStart=/usr/bin/deluge-web -d
+
+Restart=on-failure
+Slice=background.slice
+
+[Install]
+WantedBy=default.target
diff --git a/packaging/systemd/user/deluged.service b/packaging/systemd/user/deluged.service
new file mode 100644
index 0000000..b026dee
--- /dev/null
+++ b/packaging/systemd/user/deluged.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Deluge Bittorrent Client Daemon
+Documentation=man:deluged
+
+[Service]
+UMask=007
+ExecStart=/usr/bin/deluged -d
+Restart=on-failure
+TimeoutStopSec=300
+Slice=background.slice
+
+[Install]
+WantedBy=default.target
diff --git a/packaging/win/README.md b/packaging/win/README.md
new file mode 100644
index 0000000..272792c
--- /dev/null
+++ b/packaging/win/README.md
@@ -0,0 +1,34 @@
+= Deluge Installer for Windows =
+
+Instructions for building the Deluge NSIS Installer for Windows Vista/7/8/8.1/10/11.
+
+== Dependencies ==
+
+- Deluge build: https://deluge.readthedocs.io/en/latest/depends.html
+- PyInstaller: https://pypi.org/project/pyinstaller/
+- NSIS: http://nsis.sourceforge.net/Download
+
+== Build Steps ==
+
+1. Build and Install Deluge on Windows.
+2. Run pyinstaller from the deluge\packaging\win directory:
+
+ `pyinstaller --clean delugewin.spec --distpath freeze`
+
+ The result is a PyInstaller version of Deluge in `packaging\win\freeze`.
+
+3. Run the NSIS scripts:
+
+ `python setup_nsis.py`
+
+ 64-bit python:
+
+ `makensis /Darch=x64 deluge-win-installer.nsi`
+
+ 32-bit python:
+
+ `makensis /Darch=x86 deluge-win-installer.nsi`
+
+ Note: If you don't specify arch defaults to trying x64
+
+The result is a standalone installer in the `packaging\win` directory.
diff --git a/packaging/win/deluge-win-installer.nsi b/packaging/win/deluge-win-installer.nsi
new file mode 100644
index 0000000..1f9c2e2
--- /dev/null
+++ b/packaging/win/deluge-win-installer.nsi
@@ -0,0 +1,234 @@
+# Deluge Windows installer script
+#
+# Copyright (C) 2009 Jesper Lund <mail@jesperlund.com>
+# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 John Garland <johnnybg@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later.
+# See LICENSE for more details.
+#
+
+# Script version; displayed when running the installer
+!define DELUGE_INSTALLER_VERSION "2.0"
+
+# Deluge program information
+!define PROGRAM_NAME "Deluge"
+# Detect version from file
+!searchparse /file VERSION.tmp `build_version = "` PROGRAM_VERSION `"`
+!ifndef PROGRAM_VERSION
+ !error "Program Version Undefined"
+!endif
+!define PROGRAM_WEB_SITE "http://deluge-torrent.org"
+!define LICENSE_FILEPATH "..\..\LICENSE"
+
+!include FileFunc.nsh
+
+!ifndef arch
+!define INSTALLER_FILENAME "deluge-${PROGRAM_VERSION}-win64-setup.exe"
+!endif
+!If "${arch}" == "x64"
+!define INSTALLER_FILENAME "deluge-${PROGRAM_VERSION}-win64-setup.exe"
+!EndIf
+!If "${arch}" == "x86"
+!define INSTALLER_FILENAME "deluge-${PROGRAM_VERSION}-win32-setup.exe"
+!EndIf
+
+# Set default compressor
+SetCompressor /FINAL /SOLID lzma
+SetCompressorDictSize 64
+
+# --- Interface settings ---
+# Modern User Interface 2
+!include MUI2.nsh
+# Installer
+!define MUI_ICON "..\..\deluge\ui\data\pixmaps\deluge.ico"
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_RIGHT
+!define MUI_HEADERIMAGE_BITMAP "installer-top.bmp"
+!define MUI_WELCOMEFINISHPAGE_BITMAP "installer-side.bmp"
+!define MUI_COMPONENTSPAGE_SMALLDESC
+!define MUI_FINISHPAGE_NOAUTOCLOSE
+!define MUI_ABORTWARNING
+# Start Menu Folder Page Configuration
+!define MUI_STARTMENUPAGE_DEFAULTFOLDER ${PROGRAM_NAME}
+!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCR"
+!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Deluge"
+!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+# Uninstaller
+!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
+!define MUI_HEADERIMAGE_UNBITMAP "installer-top.bmp"
+!define MUI_WELCOMEFINISHPAGE_UNBITMAP "installer-side.bmp"
+!define MUI_UNFINISHPAGE_NOAUTOCLOSE
+
+!define MUI_FINISHPAGE_SHOWREADME ""
+!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "Create Desktop Shortcut"
+!define MUI_FINISHPAGE_SHOWREADME_FUNCTION finishpageaction
+
+# --- Start of Modern User Interface ---
+Var StartMenuFolder
+# Welcome, License & Components pages
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE ${LICENSE_FILEPATH}
+!insertmacro MUI_PAGE_COMPONENTS
+# Let the user select the installation directory
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
+# Run installation
+!insertmacro MUI_PAGE_INSTFILES
+# Display 'finished' page
+!insertmacro MUI_PAGE_FINISH
+# Uninstaller pages
+!insertmacro MUI_UNPAGE_INSTFILES
+# Language files
+!insertmacro MUI_LANGUAGE "English"
+
+
+# --- Functions ---
+
+# Check for running Deluge instance.
+Function .onInit
+ System::Call 'kernel32::OpenMutex(i 0x100000, b 0, t "deluge") i .R0'
+ IntCmp $R0 0 notRunning
+ System::Call 'kernel32::CloseHandle(i $R0)'
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Deluge is running. Please close it first" /SD IDOK
+ Abort
+ notRunning:
+FunctionEnd
+
+Function un.onUninstSuccess
+ HideWindow
+ MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK
+FunctionEnd
+
+Function un.onInit
+ MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you want to completely remove $(^Name)?" /SD IDYES IDYES +2
+ Abort
+FunctionEnd
+
+Function finishpageaction
+ CreateShortCut "$DESKTOP\Deluge.lnk" "$INSTDIR\deluge.exe"
+FunctionEnd
+
+# --- Installation sections ---
+!define PROGRAM_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}"
+!define PROGRAM_UNINST_ROOT_KEY "HKLM"
+!define PROGRAM_UNINST_FILENAME "$INSTDIR\deluge-uninst.exe"
+
+BrandingText "${PROGRAM_NAME} Windows Installer v${DELUGE_INSTALLER_VERSION}"
+Name "${PROGRAM_NAME} ${PROGRAM_VERSION}"
+OutFile "${INSTALLER_FILENAME}"
+
+!ifndef arch
+InstallDir "$PROGRAMFILES64\Deluge"
+!endif
+!If "${arch}" == "x64"
+InstallDir "$PROGRAMFILES64\Deluge"
+!endIf
+!If "${arch}" == "x86"
+InstallDir "$PROGRAMFILES32\Deluge"
+!endIf
+
+ShowInstDetails show
+ShowUnInstDetails show
+
+# Install main application
+Section "Deluge Bittorrent Client" Section1
+ SectionIn RO
+ !include "install_files.nsh"
+
+ SetOverwrite ifnewer
+ SetOutPath "$INSTDIR"
+ File ${LICENSE_FILEPATH}
+ WriteIniStr "$INSTDIR\homepage.url" "InternetShortcut" "URL" "${PROGRAM_WEB_SITE}"
+
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+ SetShellVarContext all
+ CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Deluge.lnk" "$INSTDIR\deluge.exe"
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Website.lnk" "$INSTDIR\homepage.url"
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Deluge.lnk" ${PROGRAM_UNINST_FILENAME}
+ !insertmacro MUI_STARTMENU_WRITE_END
+SectionEnd
+
+# Create .torrent file association.
+Section "Associate .torrent files with Deluge" Section2
+ DeleteRegKey HKCR ".torrent"
+ WriteRegStr HKCR ".torrent" "" "Deluge"
+ WriteRegStr HKCR ".torrent" "Content Type" "application/x-bittorrent"
+
+ DeleteRegKey HKCR "Deluge"
+ WriteRegStr HKCR "Deluge" "" "Deluge"
+ WriteRegStr HKCR "Deluge\Content Type" "" "application/x-bittorrent"
+ WriteRegStr HKCR "Deluge\DefaultIcon" "" "$INSTDIR\deluge.exe,0"
+ WriteRegStr HKCR "Deluge\shell" "" "open"
+ WriteRegStr HKCR "Deluge\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"'
+SectionEnd
+
+# Create magnet uri association.
+Section "Associate Magnet URI links with Deluge" Section3
+ DeleteRegKey HKCR "Magnet"
+ WriteRegStr HKCR "Magnet" "" "URL:Magnet Protocol"
+ WriteRegStr HKCR "Magnet" "URL Protocol" ""
+ WriteRegStr HKCR "Magnet\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"'
+SectionEnd
+
+LangString DESC_Section1 ${LANG_ENGLISH} "Install Deluge Bittorrent client."
+LangString DESC_Section2 ${LANG_ENGLISH} "Select this option to let Deluge handle the opening of .torrent files."
+LangString DESC_Section3 ${LANG_ENGLISH} "Select this option to let Deluge handle Magnet URI links from the web-browser."
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
+ !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
+ !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+# Create uninstaller.
+Section -Uninstaller
+ WriteUninstaller ${PROGRAM_UNINST_FILENAME}
+ WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "DisplayName" "$(^Name)"
+ WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "DisplayVersion" ${PROGRAM_VERSION}
+ WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "UninstallString" ${PROGRAM_UNINST_FILENAME}
+SectionEnd
+
+# --- Uninstallation section ---
+Section Uninstall
+ # Delete Deluge files.
+ Delete "$INSTDIR\LICENSE"
+ Delete "$INSTDIR\homepage.url"
+ Delete ${PROGRAM_UNINST_FILENAME}
+ !include "uninstall_files.nsh"
+
+ # Delete Start Menu items.
+ !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
+ SetShellVarContext all
+ Delete "$SMPROGRAMS\$StartMenuFolder\Deluge.lnk"
+ Delete "$SMPROGRAMS\$StartMenuFolder\Website.lnk"
+ Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Deluge.lnk"
+ RmDir "$SMPROGRAMS\$StartMenuFolder"
+ DeleteRegKey /ifempty HKCR "Software\Deluge"
+
+ Delete "$DESKTOP\Deluge.lnk"
+
+ # Delete registry keys.
+ DeleteRegKey ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}"
+ # Only delete the .torrent association if Deluge owns it
+ ReadRegStr $1 HKCR ".torrent" ""
+ StrCmp $1 "Deluge" 0 DELUGE_skip_delete
+ # Delete the key since it is owned by Deluge; afterwards there is no .torrent association
+ DeleteRegKey HKCR ".torrent"
+ DELUGE_skip_delete:
+ # This key is only used by Deluge, so we should always delete it
+ DeleteRegKey HKCR "Deluge"
+SectionEnd
+
+# Add version info to installer properties.
+VIProductVersion "${DELUGE_INSTALLER_VERSION}.0.0"
+VIAddVersionKey ProductName ${PROGRAM_NAME}
+VIAddVersionKey Comments "Deluge Bittorrent Client"
+VIAddVersionKey CompanyName "Deluge Team"
+VIAddVersionKey LegalCopyright "Deluge Team"
+VIAddVersionKey FileDescription "${PROGRAM_NAME} Application Installer"
+VIAddVersionKey FileVersion "${DELUGE_INSTALLER_VERSION}.0.0"
+VIAddVersionKey ProductVersion "${PROGRAM_VERSION}.0"
+VIAddVersionKey OriginalFilename ${INSTALLER_FILENAME}
diff --git a/packaging/win/delugewin.spec b/packaging/win/delugewin.spec
new file mode 100644
index 0000000..b6b5573
--- /dev/null
+++ b/packaging/win/delugewin.spec
@@ -0,0 +1,183 @@
+# -*- mode: python -*-
+import os
+
+from PyInstaller.utils.hooks import (
+ collect_data_files,
+ collect_submodules,
+ copy_metadata,
+)
+
+datas = []
+binaries = []
+hiddenimports = ['pygame', 'ifaddr']
+
+# Collect Meta Data
+datas += copy_metadata('deluge', recursive=True)
+datas += copy_metadata('service-identity', recursive=True)
+
+# Add Deluge Hidden Imports
+hiddenimports += collect_submodules('deluge')
+
+# Add stdlib as Hidden Imports.
+# This is filtered list that excludes some common examples or stuff not useful in
+# plugins (such as tty, mailbox, turtledemo etc.).
+# It is safe to assume that 90% of that list would already be included anyway.
+stdlib = [
+ 'string',
+ 're',
+ 'unicodedata',
+ 'struct',
+ 'codecs',
+ 'datetime',
+ 'zoneinfo',
+ 'calendar',
+ 'collections',
+ 'array',
+ 'weakref',
+ 'types',
+ 'copy',
+ 'enum',
+ 'numbers',
+ 'math',
+ 'cmath',
+ 'decimal',
+ 'fractions',
+ 'random',
+ 'statistics',
+ 'itertools',
+ 'functools',
+ 'operator',
+ 'pathlib',
+ 'fileinput',
+ 'stat',
+ 'tempfile',
+ 'glob',
+ 'fnmatch',
+ 'shutil',
+ 'pickle',
+ 'copyreg',
+ 'shelve',
+ 'marshal',
+ 'dom',
+ 'sqlite3',
+ 'zlib',
+ 'gzip',
+ 'bz2',
+ 'lzma',
+ 'csv',
+ 'hashlib',
+ 'hmac',
+ 'secrets',
+ 'os',
+ 'io',
+ 'time',
+ 'logging',
+ 'platform',
+ 'errno',
+ 'queue',
+ 'socket',
+ 'ssl',
+ 'email',
+ 'json',
+ 'mimetypes',
+ 'base64',
+ 'binhex',
+ 'binascii',
+ 'quopri',
+ 'uu',
+ 'html',
+ 'xml',
+ 'urllib',
+ 'http',
+ 'ftplib',
+ 'smtplib',
+ 'uuid',
+ 'xmlrpc.client',
+ 'ipaddress',
+ 'locale',
+ 'sys',
+]
+for module in stdlib:
+ hiddenimports += collect_submodules(module, filter=lambda name: 'test' not in name)
+
+# Add Hidden Imports for Plugins
+hiddenimports += collect_submodules('twisted', filter=lambda name: 'test' not in name)
+datas += copy_metadata('twisted', recursive=True)
+
+# Copy UI/Plugin and translation files to where pyinstaller expects
+package_data = collect_data_files('deluge')
+datas += package_data
+
+icon = [src for src, dest in package_data if src.endswith('deluge.ico')][0]
+
+# List of executables to produce
+executables = {
+ 'deluge-script.pyw': {'name': 'deluge', 'console': False, 'gtk': True},
+ 'deluge-gtk-script.pyw': {'name': 'deluge-gtk', 'console': False, 'gtk': True},
+ 'deluge-debug-script.py': {'name': 'deluge-debug', 'console': True, 'gtk': True},
+ 'deluge-console-script.py': {
+ 'name': 'deluge-console',
+ 'console': True,
+ 'gtk': False,
+ },
+ 'deluged-script.pyw': {'name': 'deluged', 'console': False, 'gtk': False},
+ 'deluged-debug-script.py': {'name': 'deluged-debug', 'console': True, 'gtk': False},
+ 'deluge-web-debug-script.py': {
+ 'name': 'deluge-web-debug',
+ 'console': True,
+ 'gtk': False,
+ },
+ 'deluge-web-script.pyw': {'name': 'deluge-web', 'console': False, 'gtk': False},
+}
+
+analysis = {}
+exe = {}
+coll = []
+
+# Perform analysis
+for e, d in executables.items():
+ runtime_hooks = []
+ if d['gtk']:
+ runtime_hooks += [os.path.join(SPECPATH, 'pyi_rth_gtk_csd.py')]
+
+ analysis[e] = Analysis(
+ [os.path.abspath(os.path.join(HOMEPATH, os.pardir, os.pardir, 'Scripts', e))],
+ pathex=[],
+ binaries=binaries,
+ datas=datas,
+ hiddenimports=hiddenimports,
+ hookspath=[],
+ hooksconfig={},
+ runtime_hooks=runtime_hooks,
+ excludes=[],
+ win_no_prefer_redirects=False,
+ win_private_assemblies=False,
+ cipher=None,
+ noarchive=False,
+ )
+
+# Executable
+for e, d in executables.items():
+ exe[e] = EXE(
+ PYZ(analysis[e].pure, analysis[e].zipped_data, cipher=None),
+ analysis[e].scripts,
+ [],
+ exclude_binaries=True,
+ name=d['name'],
+ debug=False,
+ bootloader_ignore_signals=False,
+ strip=False,
+ upx=True,
+ icon=icon,
+ console=d['console'],
+ disable_windowed_traceback=False,
+ target_arch=None,
+ codesign_identity=None,
+ entitlements_file=None,
+ )
+
+# Collect
+for e, d in executables.items():
+ coll += exe[e], analysis[e].binaries, analysis[e].zipfiles, analysis[e].datas
+
+COLLECT(*coll, strip=False, upx=True, upx_exclude=[], name='Deluge')
diff --git a/packaging/win/installer-side.bmp b/packaging/win/installer-side.bmp
new file mode 100644
index 0000000..58c2bed
--- /dev/null
+++ b/packaging/win/installer-side.bmp
Binary files differ
diff --git a/packaging/win/installer-top.bmp b/packaging/win/installer-top.bmp
new file mode 100644
index 0000000..1e1a94c
--- /dev/null
+++ b/packaging/win/installer-top.bmp
Binary files differ
diff --git a/packaging/win/pyi_rth_gtk_csd.py b/packaging/win/pyi_rth_gtk_csd.py
new file mode 100644
index 0000000..345122d
--- /dev/null
+++ b/packaging/win/pyi_rth_gtk_csd.py
@@ -0,0 +1,3 @@
+import os
+
+os.environ['GTK_CSD'] = os.getenv('GTK_CSD', '0')
diff --git a/packaging/win/setup_nsis.py b/packaging/win/setup_nsis.py
new file mode 100644
index 0000000..f34a941
--- /dev/null
+++ b/packaging/win/setup_nsis.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2012-2015 Calum Lind <calumlind@gmail.com>
+# Copyright (C) 2010 Damien Churchill <damoxc@gmail.com>
+# Copyright (C) 2009-2010 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Jesper Lund <mail@jesperlund.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import os
+
+import deluge.common
+
+# Get build_version from installed deluge.
+build_version = deluge.common.get_version()
+build_dir = os.path.join('freeze', 'Deluge')
+
+# Copy version info to file for nsis script.
+with open('VERSION.tmp', 'w') as ver_file:
+ ver_file.write('build_version = "%s"' % build_version)
+
+# Create the install and uninstall file list for NSIS.
+filedir_list = []
+for root, dirnames, filenames in os.walk(build_dir):
+ dirnames.sort()
+ filenames.sort()
+ filedir_list.append((root[len(build_dir) :], filenames))
+
+with open('install_files.nsh', 'w') as f:
+ f.write('; Files to install\n')
+ for dirname, files in filedir_list:
+ if not dirname:
+ dirname = os.sep
+ f.write('\nSetOutPath "$INSTDIR%s"\n' % dirname)
+ for filename in files:
+ f.write('File ' + build_dir + os.path.join(dirname, filename) + '\n')
+
+with open('uninstall_files.nsh', 'w') as f:
+ f.write('; Files to uninstall\n')
+ for dirname, files in reversed(filedir_list):
+ f.write('\n')
+ if not dirname:
+ dirname = os.sep
+ for filename in files:
+ f.write('Delete "$INSTDIR%s"\n' % os.path.join(dirname, filename))
+ f.write('RMDir "$INSTDIR%s"\n' % dirname)
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..169561f
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,29 @@
+[build-system]
+requires = ["setuptools", "wheel"]
+
+[tool.black]
+skip-string-normalization = true
+
+[tool.isort]
+profile = "black"
+
+[tool.pytest.ini_options]
+# Dump tracebacks if a test takes longer than X seconds
+faulthandler_timeout = 60
+# Hide logged warnings and errors in test output.
+log_cli_level = "CRITICAL"
+addopts = "--basetemp=_pytest_temp"
+markers = [
+ "todo: Tests that are yet to be written",
+ "gtkui: Tests for GTK code",
+ "security: Security related tests",
+ "slow: Tests that are particularly slow",
+ "internet: Tests that require internet connectivity",
+]
+filterwarnings = [
+ "ignore::DeprecationWarning:gi",
+ "ignore::DeprecationWarning:twisted.internet.gireactor",
+ "ignore:twisted.web.resource.*:DeprecationWarning",
+ "ignore:Using readBody.*:DeprecationWarning",
+ "ignore:resume_data is deprecated.*:DeprecationWarning:deluge.core.alertmanager",
+]
diff --git a/requirements-ci.txt b/requirements-ci.txt
new file mode 100644
index 0000000..0ebcd60
--- /dev/null
+++ b/requirements-ci.txt
@@ -0,0 +1,4 @@
+-r requirements.txt
+-r requirements-tests.txt
+libtorrent==2.0.7
+pytest==7.4.2
diff --git a/requirements-dev.txt b/requirements-dev.txt
new file mode 100644
index 0000000..7e11944
--- /dev/null
+++ b/requirements-dev.txt
@@ -0,0 +1,14 @@
+-r requirements.txt
+-r docs/requirements.txt
+-r requirements-tests.txt
+sphinx-autobuild
+tox
+pre-commit
+flake8-blind-except
+flake8-builtins
+flake8-commas
+flake8-comprehensions
+flake8-debugger
+flake8-mock
+flake8-mutable
+rjsmin
diff --git a/requirements-tests.txt b/requirements-tests.txt
new file mode 100644
index 0000000..a570108
--- /dev/null
+++ b/requirements-tests.txt
@@ -0,0 +1,13 @@
+libtorrent
+pytest
+pytest-twisted
+pytest-cov
+mock
+pre-commit
+flake8<=3.7.9
+flake8-quotes
+flake8-isort
+pep8-naming
+mccabe
+pylint
+asyncmock; python_version <= '3.7'
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..a26ec75
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,18 @@
+libtorrent
+twisted[tls]>=17.1
+rencode
+pyopenssl
+pyxdg
+pillow
+pillow<=9; python_version=="3.7"
+mako
+setuptools
+chardet
+setproctitle
+pywin32; sys_platform == 'win32'
+certifi; sys_platform == 'win32'
+windows-curses; sys_platform == 'win32'
+zope.interface>=4.4.2
+distro; 'linux' in sys_platform or 'bsd' in sys_platform
+pygeoip
+ifaddr>=0.2.0
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..9403fb0
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,45 @@
+[sdist]
+formats=gztar, xztar
+
+[build_docs]
+source-dir = docs/source
+build-dir = docs/build
+all_files = true
+fresh-env = true
+
+[spellcheck_docs]
+source-dir = docs/source
+build-dir = docs/build
+builder = spelling
+
+[py2app]
+app = ['deluge/ui/ui_entry.py']
+arch = x86_64
+# arch = i386
+iconfile = packaging/osx/deluge.icns
+site-packages = false
+includes = glib, gio, cairo, pango, pangocairo, atk, gobject, gtk.keysyms,
+ twisted.internet, twisted.internet.utils, twisted.protocols,
+ zope.interface, mako.cache, email.mime, libtorrent, gtkosx_application,
+ HTMLParser
+frameworks = CoreFoundation, Foundation, AppKit
+
+[flake8]
+max-line-length = 120
+builtins = _,_n,__request__
+extend-exclude = dist,build
+extend-ignore =
+# flake8-builtins: A003 class attribute is shadowing a python builtin
+ A003,
+# E203 whitespace before ':'
+ E203,
+# N818 pep8-naming: error suffix in exception names
+ N818
+per-file-ignores =
+# import not top of file (gi checks required before import)
+ deluge/ui/gtk3/*.py : E402
+ deluge/**/gtkui.py: E402
+ deluge/**/gtkui/*.py: E402
+ deluge/plugins/Stats/deluge_stats/graph.py: E402
+[pycodestyle]
+max-line-length = 88
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..ef70f20
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,611 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+import glob
+import os
+import platform
+import sys
+from distutils.command.build import build as _build
+from distutils.command.clean import clean as _clean
+from distutils.command.install_data import install_data as _install_data
+from shutil import rmtree, which
+
+from setuptools import Command, find_packages, setup
+from setuptools.command.test import test as _test
+
+import msgfmt
+from version import get_version
+
+try:
+ from sphinx.setup_command import BuildDoc
+except ImportError:
+
+ class BuildDoc:
+ pass
+
+
+def windows_check():
+ return platform.system() in ('Windows', 'Microsoft')
+
+
+def osx_check():
+ return platform.system() == 'Darwin'
+
+
+desktop_data = 'deluge/ui/data/share/applications/deluge.desktop'
+metainfo_data = 'deluge/ui/data/share/metainfo/deluge.metainfo.xml'
+
+# Variables for setuptools.setup
+_package_data = {}
+_exclude_package_data = {}
+_entry_points = {'console_scripts': [], 'gui_scripts': [], 'deluge.ui': []}
+_data_files = []
+_version = get_version(prefix='deluge-', suffix='.dev0')
+
+
+class PyTest(_test):
+ def initialize_options(self):
+ _test.initialize_options(self)
+ self.pytest_args = []
+
+ def finalize_options(self):
+ _test.finalize_options(self)
+ self.test_args = []
+ self.test_suite = True
+
+ def run_tests(self):
+ import pytest
+
+ errcode = pytest.main(self.test_args)
+ sys.exit(errcode)
+
+
+class CleanDocs(Command):
+ description = 'Clean the documentation build and module rst files'
+ user_options = []
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ docs_build = 'docs/build'
+ print(f'Deleting {docs_build}')
+ try:
+ rmtree(docs_build)
+ except OSError:
+ pass
+
+ for module in glob.glob('docs/source/modules/deluge*.rst'):
+ os.remove(module)
+
+
+class BuildWebUI(Command):
+ description = 'Minify WebUI files'
+ user_options = []
+
+ JS_DIR = os.path.join('deluge', 'ui', 'web', 'js')
+ JS_SRC_DIRS = ('deluge-all', os.path.join('extjs', 'ext-extensions'))
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ js_basedir = os.path.join(os.path.dirname(__file__), self.JS_DIR)
+
+ try:
+ from minify_web_js import minify_js_dir
+
+ import_error = ''
+ except ImportError as err:
+ import_error = err
+
+ for js_src_dir in self.JS_SRC_DIRS:
+ source_dir = os.path.join(js_basedir, js_src_dir)
+ try:
+ minify_js_dir(source_dir)
+ except NameError:
+ js_file = source_dir + '.js'
+ if os.path.isfile(js_file):
+ print(
+ 'Unable to minify but found existing minified: {}'.format(
+ js_file
+ )
+ )
+ else:
+ # Unable to minify and no existing minified file found so exiting.
+ print('Import error: %s' % import_error)
+ sys.exit(1)
+
+ # Create the gettext.js file for translations.
+ try:
+ from gen_web_gettext import create_gettext_js
+ except ImportError:
+ pass
+ else:
+ deluge_all_path = os.path.join(js_basedir, self.JS_SRC_DIRS[0])
+ print('Creating WebUI translation file: %s/gettext.js' % deluge_all_path)
+ create_gettext_js(deluge_all_path)
+
+
+class CleanWebUI(Command):
+ description = 'Clean the documentation build and rst files'
+ user_options = []
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ js_basedir = os.path.join(os.path.dirname(__file__), BuildWebUI.JS_DIR)
+
+ # Remove files generated by minify script.
+ for js_src_dir in BuildWebUI.JS_SRC_DIRS:
+ for file_type in ('.js', '-debug.js'):
+ js_file = os.path.join(js_basedir, js_src_dir + file_type)
+ print(f'Deleting {js_file}')
+ try:
+ os.remove(js_file)
+ except OSError:
+ pass
+
+ # Remove generated gettext.js
+ js_file = os.path.join(js_basedir, 'gettext.js')
+ print(f'Deleting {js_file}')
+ try:
+ os.remove(js_file)
+ except OSError:
+ pass
+
+
+class BuildTranslations(Command):
+ description = 'Compile .po files into .mo files & create .desktop file'
+
+ user_options = [
+ ('build-lib', None, 'lib build folder'),
+ ('develop', 'D', 'Compile translations in develop mode (deluge/i18n)'),
+ ]
+ boolean_options = ['develop']
+
+ def initialize_options(self):
+ self.build_lib = None
+ self.develop = False
+
+ def finalize_options(self):
+ self.set_undefined_options('build', ('build_lib', 'build_lib'))
+
+ def run(self):
+ po_dir = os.path.join(os.path.dirname(__file__), 'deluge', 'i18n')
+
+ if self.develop:
+ basedir = po_dir
+ else:
+ basedir = os.path.join(self.build_lib, 'deluge', 'i18n')
+
+ intltool_merge = 'intltool-merge'
+ if not windows_check() and which(intltool_merge):
+ intltool_merge_opts = '--utf8 --quiet'
+ for data_file in (desktop_data, metainfo_data):
+ # creates the translated file from .in file.
+ in_file = data_file + '.in'
+ if 'xml' in data_file:
+ intltool_merge_opts += ' --xml-style'
+ elif 'desktop' in data_file:
+ intltool_merge_opts += ' --desktop-style'
+
+ print('Creating file: %s' % data_file)
+ os.system(
+ 'C_ALL=C '
+ + '%s '
+ * 5
+ % (intltool_merge, intltool_merge_opts, po_dir, in_file, data_file)
+ )
+
+ print('Compiling po files from %s...' % po_dir)
+ for path, names, filenames in os.walk(po_dir):
+ for f in filenames:
+ upto_date = False
+ if f.endswith('.po'):
+ lang = f[: len(f) - 3]
+ src = os.path.join(path, f)
+ dest_path = os.path.join(basedir, lang, 'LC_MESSAGES')
+ dest = os.path.join(dest_path, 'deluge.mo')
+ if not os.path.exists(dest_path):
+ os.makedirs(dest_path)
+ if not os.path.exists(dest):
+ sys.stdout.write('%s, ' % lang)
+ sys.stdout.flush()
+ msgfmt.make(src, dest)
+ else:
+ src_mtime = os.stat(src)[8]
+ dest_mtime = os.stat(dest)[8]
+ if src_mtime > dest_mtime:
+ sys.stdout.write('%s, ' % lang)
+ sys.stdout.flush()
+ msgfmt.make(src, dest)
+ else:
+ upto_date = True
+
+ if upto_date:
+ sys.stdout.write(' po files already up to date. ')
+ sys.stdout.write('\b\b \nFinished compiling translation files. \n')
+
+
+class CleanTranslations(Command):
+ description = 'Cleans translations files.'
+ user_options = [
+ ('all', 'a', 'Remove all build output, not just temporary by-products')
+ ]
+ boolean_options = ['all']
+
+ def initialize_options(self):
+ self.all = None
+
+ def finalize_options(self):
+ self.set_undefined_options('clean', ('all', 'all'))
+
+ def run(self):
+ for path in (desktop_data, metainfo_data):
+ if os.path.isfile(path):
+ print('Deleting %s' % path)
+ os.remove(path)
+
+
+class BuildPlugins(Command):
+ description = 'Build plugins into .eggs'
+
+ user_options = [
+ ('install-dir=', None, 'develop install folder'),
+ ('develop', 'D', 'Compile plugins in develop mode'),
+ ]
+ boolean_options = ['develop']
+
+ def initialize_options(self):
+ self.install_dir = None
+ self.develop = False
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ # Build the plugin eggs
+ plugin_path = 'deluge/plugins/*'
+
+ for path in glob.glob(plugin_path):
+ if os.path.exists(os.path.join(path, 'setup.py')):
+ if self.develop and self.install_dir:
+ os.system(
+ 'cd '
+ + path
+ + '&& '
+ + sys.executable
+ + ' setup.py develop --install-dir=%s' % self.install_dir
+ )
+ elif self.develop:
+ os.system(
+ 'cd ' + path + '&& ' + sys.executable + ' setup.py develop'
+ )
+ else:
+ os.system(
+ 'cd '
+ + path
+ + '&& '
+ + sys.executable
+ + ' setup.py bdist_egg -d ..'
+ )
+
+
+class CleanPlugins(Command):
+ description = 'Cleans the plugin folders'
+ user_options = [
+ ('all', 'a', 'Remove all build output, not just temporary by-products')
+ ]
+ boolean_options = ['all']
+
+ def initialize_options(self):
+ self.all = None
+
+ def finalize_options(self):
+ self.set_undefined_options('clean', ('all', 'all'))
+
+ def run(self):
+ print('Cleaning the plugin\'s folders...')
+
+ plugin_path = 'deluge/plugins/*'
+
+ for path in glob.glob(plugin_path):
+ if os.path.exists(os.path.join(path, 'setup.py')):
+ c = 'cd ' + path + ' && ' + sys.executable + ' setup.py clean'
+ if self.all:
+ c += ' -a'
+ print('Calling \'%s\'' % c)
+ os.system(c)
+
+ # Delete the .eggs
+ if path[-4:] == '.egg':
+ print('Deleting egg file "%s"' % path)
+ os.remove(path)
+
+ # Delete the .egg-link
+ if path[-9:] == '.egg-link':
+ print('Deleting egg link "%s"' % path)
+ os.remove(path)
+
+ egg_info_dir_path = 'deluge/plugins/*/*.egg-info'
+
+ for path in glob.glob(egg_info_dir_path):
+ # Delete the .egg-info's directories
+ if path[-9:] == '.egg-info':
+ print('Deleting %s' % path)
+ for fpath in os.listdir(path):
+ os.remove(os.path.join(path, fpath))
+ os.removedirs(path)
+
+
+class EggInfoPlugins(Command):
+ description = 'Create .egg-info directories for plugins'
+
+ user_options = []
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ # Build the plugin eggs
+ plugin_path = 'deluge/plugins/*'
+
+ for path in glob.glob(plugin_path):
+ if os.path.exists(os.path.join(path, 'setup.py')):
+ os.system('cd ' + path + '&& ' + sys.executable + ' setup.py egg_info')
+
+
+class Build(_build):
+ sub_commands = [
+ ('build_webui', None),
+ ('build_trans', None),
+ ('build_plugins', None),
+ ] + _build.sub_commands
+
+ def run(self):
+ # Run all sub-commands (at least those that need to be run).
+ _build.run(self)
+ try:
+ from deluge._libtorrent import LT_VERSION
+
+ print(f'Info: Found libtorrent ({LT_VERSION}) installed.')
+ except ImportError as ex:
+ print('Warning: libtorrent (libtorrent-rasterbar) not found: %s' % ex)
+
+
+class InstallData(_install_data):
+ """Custom class to fix `setup install` copying data files to incorrect location. (Bug #1389)"""
+
+ def finalize_options(self):
+ self.install_dir = None
+ self.set_undefined_options(
+ 'install',
+ ('install_data', 'install_dir'),
+ ('root', 'root'),
+ ('force', 'force'),
+ )
+
+ def run(self):
+ _install_data.run(self)
+
+
+class Clean(_clean):
+ sub_commands = _clean.sub_commands + [
+ ('clean_plugins', None),
+ ('clean_trans', None),
+ ('clean_webui', None),
+ ]
+
+ def run(self):
+ # Remove deluge egg-info.
+ root_egg_info_dir_path = 'deluge*.egg-info'
+ for path in glob.glob(root_egg_info_dir_path):
+ print('Deleting %s' % path)
+ for fpath in os.listdir(path):
+ os.remove(os.path.join(path, fpath))
+ os.removedirs(path)
+
+ # Run all sub-commands (at least those that need to be run)
+ for cmd_name in self.get_sub_commands():
+ self.run_command(cmd_name)
+ _clean.run(self)
+
+
+cmdclass = {
+ 'build': Build,
+ 'build_webui': BuildWebUI,
+ 'build_trans': BuildTranslations,
+ 'build_plugins': BuildPlugins,
+ 'build_docs': BuildDoc,
+ 'spellcheck_docs': BuildDoc,
+ 'install_data': InstallData,
+ 'clean_plugins': CleanPlugins,
+ 'clean_trans': CleanTranslations,
+ 'clean_docs': CleanDocs,
+ 'clean_webui': CleanWebUI,
+ 'clean': Clean,
+ 'egg_info_plugins': EggInfoPlugins,
+ 'test': PyTest,
+}
+
+
+if not windows_check() and not osx_check():
+ for icon_path in glob.glob('deluge/ui/data/icons/hicolor/*x*'):
+ size = os.path.basename(icon_path)
+ icons = glob.glob(os.path.join(icon_path, 'apps', 'deluge*.png'))
+ _data_files.append((f'share/icons/hicolor/{size}/apps', icons))
+ _data_files.extend(
+ [
+ (
+ 'share/icons/hicolor/scalable/apps',
+ ['deluge/ui/data/icons/hicolor/scalable/apps/deluge.svg'],
+ ),
+ ('share/pixmaps', ['deluge/ui/data/pixmaps/deluge.png']),
+ (
+ 'share/man/man1',
+ [
+ 'docs/man/deluge.1',
+ 'docs/man/deluged.1',
+ 'docs/man/deluge-gtk.1',
+ 'docs/man/deluge-web.1',
+ 'docs/man/deluge-console.1',
+ ],
+ ),
+ ]
+ )
+ if os.path.isfile(desktop_data):
+ _data_files.append(('share/applications', [desktop_data]))
+ if os.path.isfile(metainfo_data):
+ _data_files.append(('share/metainfo', [metainfo_data]))
+
+
+# Entry Points
+_entry_points['console_scripts'] = [
+ 'deluge-console = deluge.ui.console:start',
+]
+
+# On Windows use gui_scripts to hide cmd popup (no effect on Linux/MacOS)
+_entry_points['gui_scripts'] = [
+ 'deluge = deluge.ui.ui_entry:start_ui',
+ 'deluge-gtk = deluge.ui.gtk3:start',
+ 'deluge-web = deluge.ui.web:start',
+ 'deluged = deluge.core.daemon_entry:start_daemon',
+]
+
+# Provide Windows 'debug' exes for stdin/stdout e.g. logging/errors
+if windows_check():
+ _entry_points['console_scripts'].extend(
+ [
+ 'deluge-debug = deluge.ui.ui_entry:start_ui',
+ 'deluge-web-debug = deluge.ui.web:start',
+ 'deluged-debug = deluge.core.daemon_entry:start_daemon',
+ ]
+ )
+
+_entry_points['deluge.ui'] = [
+ 'console = deluge.ui.console:Console',
+ 'web = deluge.ui.web:Web',
+ 'gtk = deluge.ui.gtk3:Gtk',
+]
+
+
+_package_data['deluge'] = [
+ 'ui/data/pixmaps/*.png',
+ 'ui/data/pixmaps/*.svg',
+ 'ui/data/pixmaps/*.ico',
+ 'ui/data/pixmaps/*.gif',
+ 'ui/data/pixmaps/flags/*.png',
+ 'plugins/*.egg',
+ 'i18n/*/LC_MESSAGES/*.mo',
+]
+_package_data['deluge.ui.web'] = [
+ 'index.html',
+ 'css/*.css',
+ 'icons/*.png',
+ 'images/*.gif',
+ 'images/*.png',
+ 'js/*.js',
+ 'js/extjs/*.js',
+ 'render/*.html',
+ 'themes/css/*.css',
+ 'themes/images/*/*.gif',
+ 'themes/images/*/*.png',
+ 'themes/images/*/*/*.gif',
+ 'themes/images/*/*/*.png',
+]
+_package_data['deluge.ui.gtk3'] = ['glade/*.ui']
+
+setup_requires = ['setuptools', 'wheel']
+install_requires = [
+ 'twisted[tls]>=17.1',
+ # Add pyasn1 for setuptools workaround:
+ # https://github.com/pypa/setuptools/issues/1510
+ 'pyasn1',
+ 'rencode',
+ 'pyopenssl',
+ 'pyxdg',
+ 'mako',
+ 'setuptools',
+ "pywin32; sys_platform == 'win32'",
+ "certifi; sys_platform == 'win32'",
+ 'zope.interface',
+]
+extras_require = {
+ 'all': [
+ 'setproctitle',
+ 'pillow',
+ 'chardet',
+ 'ifaddr',
+ ]
+}
+
+# Main setup
+setup(
+ name='deluge',
+ version=_version,
+ fullname='Deluge BitTorrent Client',
+ description='BitTorrent Client',
+ author='Deluge Team',
+ maintainer='Calum Lind',
+ maintainer_email='calumlind+deluge@gmail.com',
+ keywords='torrent bittorrent p2p fileshare filesharing',
+ long_description=open('README.md').read(),
+ long_description_content_type='text/markdown',
+ url='https://deluge-torrent.org',
+ project_urls={
+ 'GitHub (mirror)': 'https://github.com/deluge-torrent/deluge',
+ 'Sourcecode': 'http://git.deluge-torrent.org/deluge',
+ 'Issues': 'https://dev.deluge-torrent.org/report/1',
+ 'Discussion': 'https://forum.deluge-torrent.org',
+ 'Documentation': 'https://deluge.readthedocs.io',
+ },
+ classifiers=[
+ 'Development Status :: 4 - Beta',
+ 'Environment :: Console',
+ 'Environment :: Web Environment',
+ 'Environment :: X11 Applications :: GTK',
+ 'Framework :: Twisted',
+ 'Intended Audience :: End Users/Desktop',
+ (
+ 'License :: OSI Approved :: '
+ 'GNU General Public License v3 or later (GPLv3+)'
+ ),
+ 'Programming Language :: Python',
+ 'Operating System :: MacOS :: MacOS X',
+ 'Operating System :: Microsoft :: Windows',
+ 'Operating System :: POSIX',
+ 'Topic :: Internet',
+ ],
+ python_requires='>=3.6',
+ license='GPLv3+',
+ cmdclass=cmdclass,
+ setup_requires=setup_requires,
+ install_requires=install_requires,
+ extras_require=extras_require,
+ data_files=_data_files,
+ package_data=_package_data,
+ exclude_package_data=_exclude_package_data,
+ packages=find_packages(exclude=['deluge.plugins.*', 'deluge.tests']),
+ entry_points=_entry_points,
+)
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..3756a54
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,165 @@
+# Tox (http://tox.testrun.org/) is a tool for running tests in multiple virtualenvs.
+# This configuration file will run the test suite on all supported python versions.
+#
+# Usage: `pip install tox` and then run `tox` from this directory.
+
+[tox]
+envlist = py3, lint, docs
+minversion=3.0
+
+# =================
+# Base dependencies
+# =================
+[basesetup]
+# Minimum pip and setuptools versions to fix system and travis issues.
+deps =
+ pip >= 10
+ setuptools >= 40
+
+[basetests]
+deps =
+ {[basesetup]deps}
+ -rrequirements.txt
+ -rrequirements-tests.txt
+
+[baselint]
+deps =
+ {[basesetup]deps}
+ -rrequirements-tests.txt
+
+[basedev]
+deps =
+ {[basesetup]deps}
+ -rrequirements.txt
+ -rrequirements-dev.txt
+ -rrequirements-tests.txt
+
+[basedocs]
+deps =
+ {[basesetup]deps}
+ -rdocs/requirements.txt
+
+# ======================
+# Test environment setup
+# ======================
+
+[testenv]
+install_command = python -m pip install --ignore-installed {opts} {packages}
+passenv = DISPLAY,PYTHONPATH,APPDATA
+setenv =
+ PYTHONPATH = {toxinidir}
+ PYTEST_ADDOPTS = --verbose --capture=no
+sitepackages = True
+deps = {[basetests]deps}
+commands =
+ python -VV
+ python -c "import libtorrent as lt; print(lt.__version__)"
+ pytest -m "not (todo or gtkui or security)" deluge/tests
+
+# ==========
+# Unit tests
+# ==========
+
+[testenv:security]
+setenv = SECURITY_TESTS = True
+commands = pytest -m "security" deluge/tests
+
+[testenv:gtkui]
+commands = pytest -m "gtkui" deluge/tests
+
+[testenv:todo]
+commands = pytest -m "todo" deluge/tests
+
+[testenv:plugins]
+setenv = PYTHONPATH = {toxinidir}{:}{toxinidir}/deluge/plugins
+commands =
+ python setup.py build_plugins --develop --install-dir={toxinidir}/deluge/plugins/
+ pytest -m "not gtkui" deluge/plugins
+
+[testenv:pluginsgtkui]
+setenv = PYTHONPATH = {toxinidir}{:}{toxinidir}/deluge/plugins
+commands =
+ python setup.py build_plugins --develop --install-dir={toxinidir}/deluge/plugins/
+ pytest deluge/plugins
+
+# ============
+# Code linting
+# ============
+
+# Disable site-packages to avoid using system installed commands.
+
+[testenv:lint]
+sitepackages = False
+passenv = HOMEPATH,SSH_AUTH_SOCK
+deps = {[baselint]deps}
+commands = pre-commit run --all-files
+
+[testenv:flake8]
+sitepackages = False
+deps = {[baselint]deps}
+commands =
+ flake8 --version
+ python -c 'import isort; print(isort.__version__)'
+ flake8 *.py deluge
+
+[testenv:flake8-complexity]
+sitepackages = False
+deps = {[baselint]deps}
+commands = flake8 --exit-zero --max-complexity 15 deluge
+
+[testenv:pylint]
+sitepackages = False
+ignore_errors = True
+deps = {[baselint]deps}
+commands =
+ pylint --version
+ pylint deluge
+# Use python to enable use of wildcard paths with pylint.
+ python -m pylint *.py deluge/scripts/*.py
+ python -m pylint deluge/plugins/*/deluge/
+
+# ========
+# Coverage
+# ========
+
+[coveragebase]
+commands = coverage run --branch --source=deluge -m pytest -m "not todo" deluge/tests
+
+[testenv:coverage]
+commands =
+ {[coveragebase]commands}
+ coverage html -d docs/build/htmlcoverage
+ coverage report
+
+# ===================
+# Documentation build
+# ===================
+
+[testenv:docs]
+# Exclude site-packages so local builds have a similar environment to ReadTheDocs.
+sitepackages = False
+deps = {[basedocs]deps}
+commands =
+ python setup.py clean_docs
+ sphinx-build -v -j auto -E -b html -d docs/build/doctrees docs/source docs/build/html
+ sphinx-build -v -j auto -b spelling -d docs/build/doctrees docs/source docs/build/spelling
+
+[testenv:docscoverage]
+sitepackages = False
+deps =
+ {[basedocs]deps}
+ pytest-cov
+commands =
+ sphinx-build -b coverage -d docs/build/doctrees docs/source docs/build/doccoverage
+ pytest --doctest-glob='*.rst'
+
+# ========================
+# Development Environment
+# ========================
+
+[testenv:denv]
+basepython = python3
+envdir = .venv
+usedevelop = True
+deps = {[basedev]deps}
+commands =
diff --git a/version.py b/version.py
new file mode 100755
index 0000000..2609860
--- /dev/null
+++ b/version.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+# Authors: Douglas Creager <dcreager@dcreager.net>
+# Calum Lind <calumlind@gmail.com>
+#
+# This file is placed into the public domain.
+#
+# Calculates the current version number by first checking output of “git describe”,
+# modified to conform to PEP 386 versioning scheme. If “git describe” fails
+# (likely due to using release tarball rather than git working copy), then fall
+# back on reading the contents of the RELEASE-VERSION file.
+#
+# Usage: Import in setup.py, and use result of get_version() as package version:
+#
+# from version import *
+#
+# setup(
+# ...
+# version=get_version(),
+# ...
+# )
+#
+# Script will automatically update the RELEASE-VERSION file, if needed.
+# Note that RELEASE-VERSION file should *not* be checked into git; please add
+# it to your top-level .gitignore file.
+#
+# You'll probably want to distribute the RELEASE-VERSION file in your
+# sdist tarballs; to do this, just create a MANIFEST.in file that
+# contains the following line:
+#
+# include RELEASE-VERSION
+#
+
+import os
+import subprocess
+
+__all__ = ('get_version',)
+
+VERSION_FILE = os.path.join(os.path.dirname(__file__), 'RELEASE-VERSION')
+
+
+def call_git_describe(prefix='', suffix=''):
+ cmd = 'git describe --tags --match %s[0-9]*' % prefix
+ try:
+ output = subprocess.check_output(cmd.split(), stderr=subprocess.PIPE)
+ except (OSError, subprocess.CalledProcessError):
+ return None
+ else:
+ version = output.decode('utf-8').strip().replace(prefix, '')
+ # A dash signifies git commit increments since parent tag.
+ if '-' in version:
+ segment = '.dev' if 'dev' in version else '.post'
+ version = segment.join(version.replace(suffix, '').split('-')[:2])
+ return version
+
+
+def get_version(prefix='deluge-', suffix='.dev0'):
+ try:
+ with open(VERSION_FILE) as f:
+ release_version = f.readline().strip()
+ except OSError:
+ release_version = None
+
+ version = call_git_describe(prefix, suffix)
+
+ if not version:
+ version = release_version
+ if not version:
+ raise ValueError('Cannot find the version number!')
+
+ if version != release_version:
+ with open(VERSION_FILE, 'w') as f:
+ f.write('%s\n' % version)
+
+ return version
+
+
+if __name__ == '__main__':
+ print(get_version())